|  |  | 
|  | module top(input clk, stb, di, output do); | 
|  | localparam integer DIN_N = 256; | 
|  | localparam integer DOUT_N = 256; | 
|  |  | 
|  | reg [DIN_N-1:0] din; | 
|  | wire [DOUT_N-1:0] dout; | 
|  |  | 
|  | reg [DIN_N-1:0] din_shr; | 
|  | reg [DOUT_N-1:0] dout_shr; | 
|  |  | 
|  | always @(posedge clk) begin | 
|  | din_shr <= {din_shr, di}; | 
|  | dout_shr <= {dout_shr, din_shr[DIN_N-1]}; | 
|  | if (stb) begin | 
|  | din <= din_shr; | 
|  | dout_shr <= dout; | 
|  | end | 
|  | end | 
|  |  | 
|  | assign do = dout_shr[DOUT_N-1]; | 
|  |  | 
|  | roi roi ( | 
|  | .clk(clk), | 
|  | .din(din), | 
|  | .dout(dout) | 
|  | ); | 
|  | endmodule | 
|  |  | 
|  | (* KEEP_HIERARCHY *) | 
|  | module roi(input clk, input [255:0] din, output [255:0] dout); | 
|  | clb_a clb_a (.clk(clk), .din(din[  0 +: 16]), .dout(dout[  0 +: 16])); | 
|  | clb_b clb_b (.clk(clk), .din(din[ 16 +: 16]), .dout(dout[ 16 +: 16])); | 
|  | clb_c clb_c (.clk(clk), .din(din[ 32 +: 16]), .dout(dout[ 32 +: 16])); | 
|  | clb_d clb_d (.clk(clk), .din(din[ 48 +: 16]), .dout(dout[ 48 +: 16])); | 
|  | clb_e clb_e (.clk(clk), .din(din[ 64 +: 16]), .dout(dout[ 64 +: 16])); | 
|  | clb_f clb_f (.clk(clk), .din(din[ 80 +: 16]), .dout(dout[ 80 +: 16])); | 
|  | clb_g clb_g (.clk(clk), .din(din[ 96 +: 16]), .dout(dout[ 96 +: 16])); | 
|  | clb_h clb_h (.clk(clk), .din(din[112 +: 16]), .dout(dout[112 +: 16])); | 
|  | clb_i clb_i (.clk(clk), .din(din[128 +: 16]), .dout(dout[128 +: 16])); | 
|  | clb_j clb_j (.clk(clk), .din(din[144 +: 16]), .dout(dout[144 +: 16])); | 
|  | clb_k clb_k (.clk(clk), .din(din[160 +: 16]), .dout(dout[160 +: 16])); | 
|  | clb_l clb_l (.clk(clk), .din(din[176 +: 16]), .dout(dout[176 +: 16])); | 
|  | clb_m clb_m (.clk(clk), .din(din[192 +: 16]), .dout(dout[192 +: 16])); | 
|  | clb_n clb_n (.clk(clk), .din(din[208 +: 16]), .dout(dout[208 +: 16])); | 
|  | clb_o clb_o (.clk(clk), .din(din[224 +: 16]), .dout(dout[224 +: 16])); | 
|  | clb_p clb_p (.clk(clk), .din(din[240 +: 16]), .dout(dout[240 +: 16])); | 
|  | endmodule | 
|  |  | 
|  | // --------------------------------------------------------------------- | 
|  |  | 
|  | module clb_a (input clk, input [15:0] din, output [15:0] dout); | 
|  | (* LOC="SLICE_X16Y100", BEL="AFF", DONT_TOUCH *) | 
|  | FDRE ff ( | 
|  | .C(clk), | 
|  | .Q(dout[0]), | 
|  | .CE(din[0]), | 
|  | .R(din[1]), | 
|  | .D(din[2]) | 
|  | ); | 
|  | assign dout[15:1] = 0; | 
|  | endmodule | 
|  |  | 
|  | module clb_b (input clk, input [15:0] din, output [15:0] dout); | 
|  | (* LOC="SLICE_X16Y101", BEL="AFF", DONT_TOUCH *) | 
|  | FDSE ff ( | 
|  | .C(clk), | 
|  | .Q(dout[0]), | 
|  | .CE(din[0]), | 
|  | .S(din[1]), | 
|  | .D(din[2]) | 
|  | ); | 
|  | assign dout[15:1] = 0; | 
|  | endmodule | 
|  |  | 
|  | module clb_c (input clk, input [15:0] din, output [15:0] dout); | 
|  | (* LOC="SLICE_X16Y102", BEL="AFF", DONT_TOUCH *) | 
|  | FDCE ff ( | 
|  | .C(clk), | 
|  | .Q(dout[0]), | 
|  | .CE(din[0]), | 
|  | .CLR(din[1]), | 
|  | .D(din[2]) | 
|  | ); | 
|  | assign dout[15:1] = 0; | 
|  | endmodule | 
|  |  | 
|  | module clb_d (input clk, input [15:0] din, output [15:0] dout); | 
|  | (* LOC="SLICE_X16Y103", BEL="AFF", DONT_TOUCH *) | 
|  | FDPE ff ( | 
|  | .C(clk), | 
|  | .Q(dout[0]), | 
|  | .CE(din[0]), | 
|  | .PRE(din[1]), | 
|  | .D(din[2]) | 
|  | ); | 
|  | assign dout[15:1] = 0; | 
|  | endmodule | 
|  |  | 
|  | // --------------------------------------------------------------------- | 
|  |  | 
|  | module clb_e (input clk, input [15:0] din, output [15:0] dout); | 
|  | wire tmp; | 
|  |  | 
|  | (* LOC="SLICE_X16Y104", BEL="D6LUT", LOCK_PINS="I0:A1", DONT_TOUCH *) | 
|  | LUT1 #( | 
|  | .INIT(2'b01) | 
|  | ) lut ( | 
|  | .I0(din[2]), | 
|  | .O(tmp) | 
|  | ); | 
|  |  | 
|  | (* LOC="SLICE_X16Y104", BEL="BFF", DONT_TOUCH *) | 
|  | FDRE ff ( | 
|  | .C(clk), | 
|  | .Q(dout[0]), | 
|  | .CE(din[0]), | 
|  | .R(din[1]), | 
|  | .D(tmp) | 
|  | ); | 
|  |  | 
|  | assign dout[15:1] = 0; | 
|  | endmodule | 
|  |  | 
|  | module clb_f (input clk, input [15:0] din, output [15:0] dout); | 
|  | wire tmp; | 
|  |  | 
|  | (* LOC="SLICE_X16Y105", BEL="D5LUT", LOCK_PINS="I0:A1", DONT_TOUCH *) | 
|  | LUT1 #( | 
|  | .INIT(2'b01) | 
|  | ) lut ( | 
|  | .I0(din[2]), | 
|  | .O(tmp) | 
|  | ); | 
|  |  | 
|  | (* LOC="SLICE_X16Y105", BEL="BFF", DONT_TOUCH *) | 
|  | FDRE ff ( | 
|  | .C(clk), | 
|  | .Q(dout[0]), | 
|  | .CE(din[0]), | 
|  | .R(din[1]), | 
|  | .D(tmp) | 
|  | ); | 
|  |  | 
|  | assign dout[15:1] = 0; | 
|  | endmodule | 
|  |  | 
|  | module clb_g (input clk, input [15:0] din, output [15:0] dout); | 
|  | wire a, b, c; | 
|  |  | 
|  | (* LOC="SLICE_X16Y106", BEL="D6LUT", LOCK_PINS="I0:A1", DONT_TOUCH *) | 
|  | LUT1 #( | 
|  | .INIT(2'b01) | 
|  | ) lut ( | 
|  | .I0(din[2]), | 
|  | .O(a) | 
|  | ); | 
|  |  | 
|  | (* LOC="SLICE_X16Y106", BEL="F7BMUX", DONT_TOUCH *) | 
|  | MUXF7 mux1 ( | 
|  | .I0(a), | 
|  | .I1(din[3]), | 
|  | .S(din[4]), | 
|  | .O(b) | 
|  | ); | 
|  |  | 
|  | (* LOC="SLICE_X16Y106", BEL="F8MUX", DONT_TOUCH *) | 
|  | MUXF8 mux2 ( | 
|  | .I0(b), | 
|  | .I1(din[5]), | 
|  | .S(din[6]), | 
|  | .O(c) | 
|  | ); | 
|  |  | 
|  | (* LOC="SLICE_X16Y106", BEL="BFF", DONT_TOUCH *) | 
|  | FDRE ff ( | 
|  | .C(clk), | 
|  | .Q(dout[0]), | 
|  | .CE(din[0]), | 
|  | .R(din[1]), | 
|  | .D(c) | 
|  | ); | 
|  |  | 
|  | assign dout[15:1] = 0; | 
|  | endmodule | 
|  |  | 
|  | module clb_h (input clk, input [15:0] din, output [15:0] dout); | 
|  | wire a, b, c; | 
|  |  | 
|  | (* LOC="SLICE_X16Y107", BEL="D5LUT", LOCK_PINS="I0:A1", DONT_TOUCH *) | 
|  | LUT1 #( | 
|  | .INIT(2'b01) | 
|  | ) lut ( | 
|  | .I0(din[2]), | 
|  | .O(a) | 
|  | ); | 
|  |  | 
|  | (* LOC="SLICE_X16Y107", BEL="F7BMUX", DONT_TOUCH *) | 
|  | MUXF7 mux1 ( | 
|  | .I0(a), | 
|  | .I1(din[3]), | 
|  | .S(din[4]), | 
|  | .O(b) | 
|  | ); | 
|  |  | 
|  | (* LOC="SLICE_X16Y107", BEL="F8MUX", DONT_TOUCH *) | 
|  | MUXF8 mux2 ( | 
|  | .I0(b), | 
|  | .I1(din[5]), | 
|  | .S(din[6]), | 
|  | .O(c) | 
|  | ); | 
|  |  | 
|  | (* LOC="SLICE_X16Y107", BEL="BFF", DONT_TOUCH *) | 
|  | FDRE ff ( | 
|  | .C(clk), | 
|  | .Q(dout[0]), | 
|  | .CE(din[0]), | 
|  | .R(din[1]), | 
|  | .D(c) | 
|  | ); | 
|  |  | 
|  | assign dout[15:1] = 0; | 
|  | endmodule | 
|  |  | 
|  | // --------------------------------------------------------------------- | 
|  |  | 
|  | module clb_i (input clk, input [15:0] din, output [15:0] dout); | 
|  | assign dout = 0; | 
|  | endmodule | 
|  |  | 
|  | module clb_j (input clk, input [15:0] din, output [15:0] dout); | 
|  | assign dout = 0; | 
|  | endmodule | 
|  |  | 
|  | module clb_k (input clk, input [15:0] din, output [15:0] dout); | 
|  | assign dout = 0; | 
|  | endmodule | 
|  |  | 
|  | module clb_l (input clk, input [15:0] din, output [15:0] dout); | 
|  | assign dout = 0; | 
|  | endmodule | 
|  |  | 
|  | module clb_m (input clk, input [15:0] din, output [15:0] dout); | 
|  | assign dout = 0; | 
|  | endmodule | 
|  |  | 
|  | module clb_n (input clk, input [15:0] din, output [15:0] dout); | 
|  | assign dout = 0; | 
|  | endmodule | 
|  |  | 
|  | module clb_o (input clk, input [15:0] din, output [15:0] dout); | 
|  | assign dout = 0; | 
|  | endmodule | 
|  |  | 
|  | module clb_p (input clk, input [15:0] din, output [15:0] dout); | 
|  | assign dout = 0; | 
|  | endmodule | 
|  |  |