| // https://www.xilinx.com/support/documentation/sw_manuals/xilinx2018_3/ug901-vivado-synthesis.pdf |
| |
| // 32-bit Shift Register |
| // Rising edge clock |
| // Active high clock enable |
| // For-loop based template |
| // File: shift_registers_1.v |
| (* top *) |
| module shift_registers_1 (clk, clken, SI, SO); |
| parameter WIDTH = 32; |
| input clk, clken, SI; |
| output SO; |
| reg [WIDTH-1:0] shreg; |
| integer i; |
| always @(posedge clk) |
| begin |
| if (clken) |
| begin |
| for (i = 0; i < WIDTH-1; i = i+1) |
| shreg[i+1] <= shreg[i]; |
| shreg[0] <= SI; |
| end |
| end |
| assign SO = shreg[WIDTH-1]; |
| endmodule |
| |
| `ifndef _AUTOTB |
| module __test ; |
| wire [4095:0] assert_area = "cd shift_registers_1; select t:SRLC32E -assert-count 1; select t:BUFG t:SRLC32E %% %n t:* %i -assert-none"; |
| endmodule |
| `endif |