Professional Documents
Culture Documents
// Resources required:
// 120 multipliers (8 x 8 bit)
// 324 adders (8 x 8 bit)
// 96 RAMs (32 words, 16 bits per word)
// 32 RAMs (8 words, 16 bits per word)
// 24 ROMs (16 words, 8 bits per word)
// The simple testbench below will demonstrate the timing for loading
// and unloading data vectors.
// The system reset signal is asserted high.
// Please note: when simulating floating point code, you must include
// Xilinx's DSP slice simulation module.
module dft_testbench();
reg clk, reset, next;
wire next_out;
integer i, j, k, l, m;
reg [15:0] counter;
reg [7:0] in [31:0];
wire [7:0] X0;
wire [7:0] Y0;
wire [7:0] X1;
wire [7:0] Y1;
wire [7:0] X2;
wire [7:0] Y2;
wire [7:0] X3;
wire [7:0] Y3;
wire [7:0] X4;
wire [7:0] Y4;
wire [7:0] X5;
wire [7:0] Y5;
wire [7:0] X6;
wire [7:0] Y6;
wire [7:0] X7;
wire [7:0] Y7;
wire [7:0] X8;
wire [7:0] Y8;
wire [7:0] X9;
wire [7:0] Y9;
wire [7:0] X10;
wire [7:0] Y10;
wire [7:0] X11;
wire [7:0] Y11;
wire [7:0] X12;
wire [7:0] Y12;
wire [7:0] X13;
wire [7:0] Y13;
wire [7:0] X14;
wire [7:0] Y14;
wire [7:0] X15;
wire [7:0] Y15;
wire [7:0] X16;
wire [7:0] Y16;
wire [7:0] X17;
wire [7:0] Y17;
wire [7:0] X18;
wire [7:0] Y18;
wire [7:0] X19;
wire [7:0] Y19;
wire [7:0] X20;
wire [7:0] Y20;
wire [7:0] X21;
wire [7:0] Y21;
wire [7:0] X22;
wire [7:0] Y22;
wire [7:0] X23;
wire [7:0] Y23;
wire [7:0] X24;
wire [7:0] Y24;
wire [7:0] X25;
wire [7:0] Y25;
wire [7:0] X26;
wire [7:0] Y26;
wire [7:0] X27;
wire [7:0] Y27;
wire [7:0] X28;
wire [7:0] Y28;
wire [7:0] X29;
wire [7:0] Y29;
wire [7:0] X30;
wire [7:0] Y30;
wire [7:0] X31;
wire [7:0] Y31;
reg clrCnt;
assign X0 = in[0];
assign X1 = in[1];
assign X2 = in[2];
assign X3 = in[3];
assign X4 = in[4];
assign X5 = in[5];
assign X6 = in[6];
assign X7 = in[7];
assign X8 = in[8];
assign X9 = in[9];
assign X10 = in[10];
assign X11 = in[11];
assign X12 = in[12];
assign X13 = in[13];
assign X14 = in[14];
assign X15 = in[15];
assign X16 = in[16];
assign X17 = in[17];
assign X18 = in[18];
assign X19 = in[19];
assign X20 = in[20];
assign X21 = in[21];
assign X22 = in[22];
assign X23 = in[23];
assign X24 = in[24];
assign X25 = in[25];
assign X26 = in[26];
assign X27 = in[27];
assign X28 = in[28];
assign X29 = in[29];
assign X30 = in[30];
assign X31 = in[31];
initial clk = 0;
// You can use this counter to verify that the gap and latency are as expected.
always @(posedge clk) begin
if (clrCnt) counter <= 0;
else counter <= counter+1;
end
initial begin
@(posedge clk);
@(posedge clk);
// The 256 complex data points enter the system over 16 cycles
for (j=0; j < 15; j = j+1) begin
// Input: 16 complex words per cycle
for (k=0; k < 32; k = k+1) begin
in[k] <= j*32 + k;
end
@(posedge clk);
end
j = 15;
for (k=0; k < 32; k = k+1) begin
in[k] <= j*32 + k;
end
@(posedge clk);
// Wait until the next data vector can be entered
while (counter < 14)
@(posedge clk);
initial begin
// set initial values
in[0] <= 0;
in[1] <= 0;
in[2] <= 0;
in[3] <= 0;
in[4] <= 0;
in[5] <= 0;
in[6] <= 0;
in[7] <= 0;
in[8] <= 0;
in[9] <= 0;
in[10] <= 0;
in[11] <= 0;
in[12] <= 0;
in[13] <= 0;
in[14] <= 0;
in[15] <= 0;
in[16] <= 0;
in[17] <= 0;
in[18] <= 0;
in[19] <= 0;
in[20] <= 0;
in[21] <= 0;
in[22] <= 0;
in[23] <= 0;
in[24] <= 0;
in[25] <= 0;
in[26] <= 0;
in[27] <= 0;
in[28] <= 0;
in[29] <= 0;
in[30] <= 0;
in[31] <= 0;
next <= 0;
reset <= 0;
@(posedge clk);
reset <= 1;
@(posedge clk);
reset <= 0;
@(posedge clk);
@(posedge clk);
// Wait until next_out goes high, then wait one clock cycle and begin
receiving data
@(posedge next_out);
@(posedge clk); #1;
$display("--- begin output 1---");
// Latency: 165
// Gap: 16
// module_name_is:dft_top
module dft_top(clk, reset, next, next_out,
X0, Y0,
X1, Y1,
X2, Y2,
X3, Y3,
X4, Y4,
X5, Y5,
X6, Y6,
X7, Y7,
X8, Y8,
X9, Y9,
X10, Y10,
X11, Y11,
X12, Y12,
X13, Y13,
X14, Y14,
X15, Y15,
X16, Y16,
X17, Y17,
X18, Y18,
X19, Y19,
X20, Y20,
X21, Y21,
X22, Y22,
X23, Y23,
X24, Y24,
X25, Y25,
X26, Y26,
X27, Y27,
X28, Y28,
X29, Y29,
X30, Y30,
X31, Y31);
output next_out;
input clk, reset, next;
// latency=39, gap=16
rc17612 stage0(.clk(clk), .reset(reset), .next(next_0), .next_out(next_1),
.X0(t0_0), .Y0(t1_0),
.X1(t0_1), .Y1(t1_1),
.X2(t0_2), .Y2(t1_2),
.X3(t0_3), .Y3(t1_3),
.X4(t0_4), .Y4(t1_4),
.X5(t0_5), .Y5(t1_5),
.X6(t0_6), .Y6(t1_6),
.X7(t0_7), .Y7(t1_7),
.X8(t0_8), .Y8(t1_8),
.X9(t0_9), .Y9(t1_9),
.X10(t0_10), .Y10(t1_10),
.X11(t0_11), .Y11(t1_11),
.X12(t0_12), .Y12(t1_12),
.X13(t0_13), .Y13(t1_13),
.X14(t0_14), .Y14(t1_14),
.X15(t0_15), .Y15(t1_15),
.X16(t0_16), .Y16(t1_16),
.X17(t0_17), .Y17(t1_17),
.X18(t0_18), .Y18(t1_18),
.X19(t0_19), .Y19(t1_19),
.X20(t0_20), .Y20(t1_20),
.X21(t0_21), .Y21(t1_21),
.X22(t0_22), .Y22(t1_22),
.X23(t0_23), .Y23(t1_23),
.X24(t0_24), .Y24(t1_24),
.X25(t0_25), .Y25(t1_25),
.X26(t0_26), .Y26(t1_26),
.X27(t0_27), .Y27(t1_27),
.X28(t0_28), .Y28(t1_28),
.X29(t0_29), .Y29(t1_29),
.X30(t0_30), .Y30(t1_30),
.X31(t0_31), .Y31(t1_31));
// latency=7, gap=16
codeBlock17614 stage1(.clk(clk), .reset(reset), .next_in(next_1),
.next_out(next_2),
.X0_in(t1_0), .Y0(t2_0),
.X1_in(t1_1), .Y1(t2_1),
.X2_in(t1_2), .Y2(t2_2),
.X3_in(t1_3), .Y3(t2_3),
.X4_in(t1_4), .Y4(t2_4),
.X5_in(t1_5), .Y5(t2_5),
.X6_in(t1_6), .Y6(t2_6),
.X7_in(t1_7), .Y7(t2_7),
.X8_in(t1_8), .Y8(t2_8),
.X9_in(t1_9), .Y9(t2_9),
.X10_in(t1_10), .Y10(t2_10),
.X11_in(t1_11), .Y11(t2_11),
.X12_in(t1_12), .Y12(t2_12),
.X13_in(t1_13), .Y13(t2_13),
.X14_in(t1_14), .Y14(t2_14),
.X15_in(t1_15), .Y15(t2_15),
.X16_in(t1_16), .Y16(t2_16),
.X17_in(t1_17), .Y17(t2_17),
.X18_in(t1_18), .Y18(t2_18),
.X19_in(t1_19), .Y19(t2_19),
.X20_in(t1_20), .Y20(t2_20),
.X21_in(t1_21), .Y21(t2_21),
.X22_in(t1_22), .Y22(t2_22),
.X23_in(t1_23), .Y23(t2_23),
.X24_in(t1_24), .Y24(t2_24),
.X25_in(t1_25), .Y25(t2_25),
.X26_in(t1_26), .Y26(t2_26),
.X27_in(t1_27), .Y27(t2_27),
.X28_in(t1_28), .Y28(t2_28),
.X29_in(t1_29), .Y29(t2_29),
.X30_in(t1_30), .Y30(t2_30),
.X31_in(t1_31), .Y31(t2_31));
// latency=15, gap=16
rc18788 stage2(.clk(clk), .reset(reset), .next(next_2), .next_out(next_3),
.X0(t2_0), .Y0(t3_0),
.X1(t2_1), .Y1(t3_1),
.X2(t2_2), .Y2(t3_2),
.X3(t2_3), .Y3(t3_3),
.X4(t2_4), .Y4(t3_4),
.X5(t2_5), .Y5(t3_5),
.X6(t2_6), .Y6(t3_6),
.X7(t2_7), .Y7(t3_7),
.X8(t2_8), .Y8(t3_8),
.X9(t2_9), .Y9(t3_9),
.X10(t2_10), .Y10(t3_10),
.X11(t2_11), .Y11(t3_11),
.X12(t2_12), .Y12(t3_12),
.X13(t2_13), .Y13(t3_13),
.X14(t2_14), .Y14(t3_14),
.X15(t2_15), .Y15(t3_15),
.X16(t2_16), .Y16(t3_16),
.X17(t2_17), .Y17(t3_17),
.X18(t2_18), .Y18(t3_18),
.X19(t2_19), .Y19(t3_19),
.X20(t2_20), .Y20(t3_20),
.X21(t2_21), .Y21(t3_21),
.X22(t2_22), .Y22(t3_22),
.X23(t2_23), .Y23(t3_23),
.X24(t2_24), .Y24(t3_24),
.X25(t2_25), .Y25(t3_25),
.X26(t2_26), .Y26(t3_26),
.X27(t2_27), .Y27(t3_27),
.X28(t2_28), .Y28(t3_28),
.X29(t2_29), .Y29(t3_29),
.X30(t2_30), .Y30(t3_30),
.X31(t2_31), .Y31(t3_31));
// latency=8, gap=16
DirSum_20265 stage3(.next(next_3), .clk(clk), .reset(reset), .next_out(next_4),
.X0(t3_0), .Y0(t4_0),
.X1(t3_1), .Y1(t4_1),
.X2(t3_2), .Y2(t4_2),
.X3(t3_3), .Y3(t4_3),
.X4(t3_4), .Y4(t4_4),
.X5(t3_5), .Y5(t4_5),
.X6(t3_6), .Y6(t4_6),
.X7(t3_7), .Y7(t4_7),
.X8(t3_8), .Y8(t4_8),
.X9(t3_9), .Y9(t4_9),
.X10(t3_10), .Y10(t4_10),
.X11(t3_11), .Y11(t4_11),
.X12(t3_12), .Y12(t4_12),
.X13(t3_13), .Y13(t4_13),
.X14(t3_14), .Y14(t4_14),
.X15(t3_15), .Y15(t4_15),
.X16(t3_16), .Y16(t4_16),
.X17(t3_17), .Y17(t4_17),
.X18(t3_18), .Y18(t4_18),
.X19(t3_19), .Y19(t4_19),
.X20(t3_20), .Y20(t4_20),
.X21(t3_21), .Y21(t4_21),
.X22(t3_22), .Y22(t4_22),
.X23(t3_23), .Y23(t4_23),
.X24(t3_24), .Y24(t4_24),
.X25(t3_25), .Y25(t4_25),
.X26(t3_26), .Y26(t4_26),
.X27(t3_27), .Y27(t4_27),
.X28(t3_28), .Y28(t4_28),
.X29(t3_29), .Y29(t4_29),
.X30(t3_30), .Y30(t4_30),
.X31(t3_31), .Y31(t4_31));
// latency=7, gap=16
codeBlock20268 stage4(.clk(clk), .reset(reset), .next_in(next_4),
.next_out(next_5),
.X0_in(t4_0), .Y0(t5_0),
.X1_in(t4_1), .Y1(t5_1),
.X2_in(t4_2), .Y2(t5_2),
.X3_in(t4_3), .Y3(t5_3),
.X4_in(t4_4), .Y4(t5_4),
.X5_in(t4_5), .Y5(t5_5),
.X6_in(t4_6), .Y6(t5_6),
.X7_in(t4_7), .Y7(t5_7),
.X8_in(t4_8), .Y8(t5_8),
.X9_in(t4_9), .Y9(t5_9),
.X10_in(t4_10), .Y10(t5_10),
.X11_in(t4_11), .Y11(t5_11),
.X12_in(t4_12), .Y12(t5_12),
.X13_in(t4_13), .Y13(t5_13),
.X14_in(t4_14), .Y14(t5_14),
.X15_in(t4_15), .Y15(t5_15),
.X16_in(t4_16), .Y16(t5_16),
.X17_in(t4_17), .Y17(t5_17),
.X18_in(t4_18), .Y18(t5_18),
.X19_in(t4_19), .Y19(t5_19),
.X20_in(t4_20), .Y20(t5_20),
.X21_in(t4_21), .Y21(t5_21),
.X22_in(t4_22), .Y22(t5_22),
.X23_in(t4_23), .Y23(t5_23),
.X24_in(t4_24), .Y24(t5_24),
.X25_in(t4_25), .Y25(t5_25),
.X26_in(t4_26), .Y26(t5_26),
.X27_in(t4_27), .Y27(t5_27),
.X28_in(t4_28), .Y28(t5_28),
.X29_in(t4_29), .Y29(t5_29),
.X30_in(t4_30), .Y30(t5_30),
.X31_in(t4_31), .Y31(t5_31));
// latency=39, gap=16
rc21442 stage5(.clk(clk), .reset(reset), .next(next_5), .next_out(next_6),
.X0(t5_0), .Y0(t6_0),
.X1(t5_1), .Y1(t6_1),
.X2(t5_2), .Y2(t6_2),
.X3(t5_3), .Y3(t6_3),
.X4(t5_4), .Y4(t6_4),
.X5(t5_5), .Y5(t6_5),
.X6(t5_6), .Y6(t6_6),
.X7(t5_7), .Y7(t6_7),
.X8(t5_8), .Y8(t6_8),
.X9(t5_9), .Y9(t6_9),
.X10(t5_10), .Y10(t6_10),
.X11(t5_11), .Y11(t6_11),
.X12(t5_12), .Y12(t6_12),
.X13(t5_13), .Y13(t6_13),
.X14(t5_14), .Y14(t6_14),
.X15(t5_15), .Y15(t6_15),
.X16(t5_16), .Y16(t6_16),
.X17(t5_17), .Y17(t6_17),
.X18(t5_18), .Y18(t6_18),
.X19(t5_19), .Y19(t6_19),
.X20(t5_20), .Y20(t6_20),
.X21(t5_21), .Y21(t6_21),
.X22(t5_22), .Y22(t6_22),
.X23(t5_23), .Y23(t6_23),
.X24(t5_24), .Y24(t6_24),
.X25(t5_25), .Y25(t6_25),
.X26(t5_26), .Y26(t6_26),
.X27(t5_27), .Y27(t6_27),
.X28(t5_28), .Y28(t6_28),
.X29(t5_29), .Y29(t6_29),
.X30(t5_30), .Y30(t6_30),
.X31(t5_31), .Y31(t6_31));
// latency=8, gap=16
DirSum_23302 stage6(.next(next_6), .clk(clk), .reset(reset), .next_out(next_7),
.X0(t6_0), .Y0(t7_0),
.X1(t6_1), .Y1(t7_1),
.X2(t6_2), .Y2(t7_2),
.X3(t6_3), .Y3(t7_3),
.X4(t6_4), .Y4(t7_4),
.X5(t6_5), .Y5(t7_5),
.X6(t6_6), .Y6(t7_6),
.X7(t6_7), .Y7(t7_7),
.X8(t6_8), .Y8(t7_8),
.X9(t6_9), .Y9(t7_9),
.X10(t6_10), .Y10(t7_10),
.X11(t6_11), .Y11(t7_11),
.X12(t6_12), .Y12(t7_12),
.X13(t6_13), .Y13(t7_13),
.X14(t6_14), .Y14(t7_14),
.X15(t6_15), .Y15(t7_15),
.X16(t6_16), .Y16(t7_16),
.X17(t6_17), .Y17(t7_17),
.X18(t6_18), .Y18(t7_18),
.X19(t6_19), .Y19(t7_19),
.X20(t6_20), .Y20(t7_20),
.X21(t6_21), .Y21(t7_21),
.X22(t6_22), .Y22(t7_22),
.X23(t6_23), .Y23(t7_23),
.X24(t6_24), .Y24(t7_24),
.X25(t6_25), .Y25(t7_25),
.X26(t6_26), .Y26(t7_26),
.X27(t6_27), .Y27(t7_27),
.X28(t6_28), .Y28(t7_28),
.X29(t6_29), .Y29(t7_29),
.X30(t6_30), .Y30(t7_30),
.X31(t6_31), .Y31(t7_31));
// latency=3, gap=16
codeBlock23304 stage7(.clk(clk), .reset(reset), .next_in(next_7),
.next_out(next_8),
.X0_in(t7_0), .Y0(t8_0),
.X1_in(t7_1), .Y1(t8_1),
.X2_in(t7_2), .Y2(t8_2),
.X3_in(t7_3), .Y3(t8_3),
.X4_in(t7_4), .Y4(t8_4),
.X5_in(t7_5), .Y5(t8_5),
.X6_in(t7_6), .Y6(t8_6),
.X7_in(t7_7), .Y7(t8_7),
.X8_in(t7_8), .Y8(t8_8),
.X9_in(t7_9), .Y9(t8_9),
.X10_in(t7_10), .Y10(t8_10),
.X11_in(t7_11), .Y11(t8_11),
.X12_in(t7_12), .Y12(t8_12),
.X13_in(t7_13), .Y13(t8_13),
.X14_in(t7_14), .Y14(t8_14),
.X15_in(t7_15), .Y15(t8_15),
.X16_in(t7_16), .Y16(t8_16),
.X17_in(t7_17), .Y17(t8_17),
.X18_in(t7_18), .Y18(t8_18),
.X19_in(t7_19), .Y19(t8_19),
.X20_in(t7_20), .Y20(t8_20),
.X21_in(t7_21), .Y21(t8_21),
.X22_in(t7_22), .Y22(t8_22),
.X23_in(t7_23), .Y23(t8_23),
.X24_in(t7_24), .Y24(t8_24),
.X25_in(t7_25), .Y25(t8_25),
.X26_in(t7_26), .Y26(t8_26),
.X27_in(t7_27), .Y27(t8_27),
.X28_in(t7_28), .Y28(t8_28),
.X29_in(t7_29), .Y29(t8_29),
.X30_in(t7_30), .Y30(t8_30),
.X31_in(t7_31), .Y31(t8_31));
// latency=39, gap=16
rc24142 stage8(.clk(clk), .reset(reset), .next(next_8), .next_out(next_9),
.X0(t8_0), .Y0(t9_0),
.X1(t8_1), .Y1(t9_1),
.X2(t8_2), .Y2(t9_2),
.X3(t8_3), .Y3(t9_3),
.X4(t8_4), .Y4(t9_4),
.X5(t8_5), .Y5(t9_5),
.X6(t8_6), .Y6(t9_6),
.X7(t8_7), .Y7(t9_7),
.X8(t8_8), .Y8(t9_8),
.X9(t8_9), .Y9(t9_9),
.X10(t8_10), .Y10(t9_10),
.X11(t8_11), .Y11(t9_11),
.X12(t8_12), .Y12(t9_12),
.X13(t8_13), .Y13(t9_13),
.X14(t8_14), .Y14(t9_14),
.X15(t8_15), .Y15(t9_15),
.X16(t8_16), .Y16(t9_16),
.X17(t8_17), .Y17(t9_17),
.X18(t8_18), .Y18(t9_18),
.X19(t8_19), .Y19(t9_19),
.X20(t8_20), .Y20(t9_20),
.X21(t8_21), .Y21(t9_21),
.X22(t8_22), .Y22(t9_22),
.X23(t8_23), .Y23(t9_23),
.X24(t8_24), .Y24(t9_24),
.X25(t8_25), .Y25(t9_25),
.X26(t8_26), .Y26(t9_26),
.X27(t8_27), .Y27(t9_27),
.X28(t8_28), .Y28(t9_28),
.X29(t8_29), .Y29(t9_29),
.X30(t8_30), .Y30(t9_30),
.X31(t8_31), .Y31(t9_31));
endmodule
// Latency: 39
// Gap: 16
module rc17612(clk, reset, next, next_out,
X0, Y0,
X1, Y1,
X2, Y2,
X3, Y3,
X4, Y4,
X5, Y5,
X6, Y6,
X7, Y7,
X8, Y8,
X9, Y9,
X10, Y10,
X11, Y11,
X12, Y12,
X13, Y13,
X14, Y14,
X15, Y15,
X16, Y16,
X17, Y17,
X18, Y18,
X19, Y19,
X20, Y20,
X21, Y21,
X22, Y22,
X23, Y23,
X24, Y24,
X25, Y25,
X26, Y26,
X27, Y27,
X28, Y28,
X29, Y29,
X30, Y30,
X31, Y31);
output next_out;
input clk, reset, next;
endmodule
// Latency: 39
// Gap: 16
module perm17610(clk, next, reset, next_out,
x0, y0,
x1, y1,
x2, y2,
x3, y3,
x4, y4,
x5, y5,
x6, y6,
x7, y7,
x8, y8,
x9, y9,
x10, y10,
x11, y11,
x12, y12,
x13, y13,
x14, y14,
x15, y15);
parameter width = 16;
parameter addrbits = 4;
parameter muxbits = 4;
if (writeSel)
mem[inAddr] <= in;
end
endmodule
if (writeSel)
mem[inAddr] <= in;
end
endmodule
output [width-1:0] Y;
input [width-1:0] X;
input clk;
assign Y = mem[depth-1];
output Y;
input X;
input clk, reset;
reg [logDepth:0] count;
reg active;
// Latency: 7
// Gap: 1
module codeBlock17614(clk, reset, next_in, next_out,
X0_in, Y0,
X1_in, Y1,
X2_in, Y2,
X3_in, Y3,
X4_in, Y4,
X5_in, Y5,
X6_in, Y6,
X7_in, Y7,
X8_in, Y8,
X9_in, Y9,
X10_in, Y10,
X11_in, Y11,
X12_in, Y12,
X13_in, Y13,
X14_in, Y14,
X15_in, Y15,
X16_in, Y16,
X17_in, Y17,
X18_in, Y18,
X19_in, Y19,
X20_in, Y20,
X21_in, Y21,
X22_in, Y22,
X23_in, Y23,
X24_in, Y24,
X25_in, Y25,
X26_in, Y26,
X27_in, Y27,
X28_in, Y28,
X29_in, Y29,
X30_in, Y30,
X31_in, Y31);
output next_out;
input clk, reset, next_in;
reg next;
// Latency: 15
// Gap: 4
module rc18788(clk, reset, next, next_out,
X0, Y0,
X1, Y1,
X2, Y2,
X3, Y3,
X4, Y4,
X5, Y5,
X6, Y6,
X7, Y7,
X8, Y8,
X9, Y9,
X10, Y10,
X11, Y11,
X12, Y12,
X13, Y13,
X14, Y14,
X15, Y15,
X16, Y16,
X17, Y17,
X18, Y18,
X19, Y19,
X20, Y20,
X21, Y21,
X22, Y22,
X23, Y23,
X24, Y24,
X25, Y25,
X26, Y26,
X27, Y27,
X28, Y28,
X29, Y29,
X30, Y30,
X31, Y31);
output next_out;
input clk, reset, next;
endmodule
// Latency: 15
// Gap: 4
module perm18786(clk, next, reset, next_out,
x0, y0,
x1, y1,
x2, y2,
x3, y3,
x4, y4,
x5, y5,
x6, y6,
x7, y7,
x8, y8,
x9, y9,
x10, y10,
x11, y11,
x12, y12,
x13, y13,
x14, y14,
x15, y15);
parameter width = 16;
parameter depth = 4;
parameter addrbits = 2;
parameter muxbits = 4;
// Latency: 8
// Gap: 4
module DirSum_20265(clk, reset, next, next_out,
X0, Y0,
X1, Y1,
X2, Y2,
X3, Y3,
X4, Y4,
X5, Y5,
X6, Y6,
X7, Y7,
X8, Y8,
X9, Y9,
X10, Y10,
X11, Y11,
X12, Y12,
X13, Y13,
X14, Y14,
X15, Y15,
X16, Y16,
X17, Y17,
X18, Y18,
X19, Y19,
X20, Y20,
X21, Y21,
X22, Y22,
X23, Y23,
X24, Y24,
X25, Y25,
X26, Y26,
X27, Y27,
X28, Y28,
X29, Y29,
X30, Y30,
X31, Y31);
output next_out;
input clk, reset, next;
reg [1:0] i2;
// Latency: 8
// Gap: 1
module codeBlock18791(clk, reset, next_in, next_out,
i2_in,
X0_in, Y0,
X1_in, Y1,
X2_in, Y2,
X3_in, Y3,
X4_in, Y4,
X5_in, Y5,
X6_in, Y6,
X7_in, Y7,
X8_in, Y8,
X9_in, Y9,
X10_in, Y10,
X11_in, Y11,
X12_in, Y12,
X13_in, Y13,
X14_in, Y14,
X15_in, Y15,
X16_in, Y16,
X17_in, Y17,
X18_in, Y18,
X19_in, Y19,
X20_in, Y20,
X21_in, Y21,
X22_in, Y22,
X23_in, Y23,
X24_in, Y24,
X25_in, Y25,
X26_in, Y26,
X27_in, Y27,
X28_in, Y28,
X29_in, Y29,
X30_in, Y30,
X31_in, Y31);
output next_out;
input clk, reset, next_in;
reg next;
input [1:0] i2_in;
reg [1:0] i2;
// Latency: 7
// Gap: 1
module codeBlock20268(clk, reset, next_in, next_out,
X0_in, Y0,
X1_in, Y1,
X2_in, Y2,
X3_in, Y3,
X4_in, Y4,
X5_in, Y5,
X6_in, Y6,
X7_in, Y7,
X8_in, Y8,
X9_in, Y9,
X10_in, Y10,
X11_in, Y11,
X12_in, Y12,
X13_in, Y13,
X14_in, Y14,
X15_in, Y15,
X16_in, Y16,
X17_in, Y17,
X18_in, Y18,
X19_in, Y19,
X20_in, Y20,
X21_in, Y21,
X22_in, Y22,
X23_in, Y23,
X24_in, Y24,
X25_in, Y25,
X26_in, Y26,
X27_in, Y27,
X28_in, Y28,
X29_in, Y29,
X30_in, Y30,
X31_in, Y31);
output next_out;
input clk, reset, next_in;
reg next;
// Latency: 39
// Gap: 16
module rc21442(clk, reset, next, next_out,
X0, Y0,
X1, Y1,
X2, Y2,
X3, Y3,
X4, Y4,
X5, Y5,
X6, Y6,
X7, Y7,
X8, Y8,
X9, Y9,
X10, Y10,
X11, Y11,
X12, Y12,
X13, Y13,
X14, Y14,
X15, Y15,
X16, Y16,
X17, Y17,
X18, Y18,
X19, Y19,
X20, Y20,
X21, Y21,
X22, Y22,
X23, Y23,
X24, Y24,
X25, Y25,
X26, Y26,
X27, Y27,
X28, Y28,
X29, Y29,
X30, Y30,
X31, Y31);
output next_out;
input clk, reset, next;
endmodule
// Latency: 39
// Gap: 16
module perm21440(clk, next, reset, next_out,
x0, y0,
x1, y1,
x2, y2,
x3, y3,
x4, y4,
x5, y5,
x6, y6,
x7, y7,
x8, y8,
x9, y9,
x10, y10,
x11, y11,
x12, y12,
x13, y13,
x14, y14,
x15, y15);
parameter width = 16;
parameter addrbits = 4;
parameter muxbits = 4;
// Latency: 8
// Gap: 16
module DirSum_23302(clk, reset, next, next_out,
X0, Y0,
X1, Y1,
X2, Y2,
X3, Y3,
X4, Y4,
X5, Y5,
X6, Y6,
X7, Y7,
X8, Y8,
X9, Y9,
X10, Y10,
X11, Y11,
X12, Y12,
X13, Y13,
X14, Y14,
X15, Y15,
X16, Y16,
X17, Y17,
X18, Y18,
X19, Y19,
X20, Y20,
X21, Y21,
X22, Y22,
X23, Y23,
X24, Y24,
X25, Y25,
X26, Y26,
X27, Y27,
X28, Y28,
X29, Y29,
X30, Y30,
X31, Y31);
output next_out;
input clk, reset, next;
endmodule
// Latency: 8
// Gap: 1
module codeBlock21444(clk, reset, next_in, next_out,
i1_in,
X0_in, Y0,
X1_in, Y1,
X2_in, Y2,
X3_in, Y3,
X4_in, Y4,
X5_in, Y5,
X6_in, Y6,
X7_in, Y7,
X8_in, Y8,
X9_in, Y9,
X10_in, Y10,
X11_in, Y11,
X12_in, Y12,
X13_in, Y13,
X14_in, Y14,
X15_in, Y15,
X16_in, Y16,
X17_in, Y17,
X18_in, Y18,
X19_in, Y19,
X20_in, Y20,
X21_in, Y21,
X22_in, Y22,
X23_in, Y23,
X24_in, Y24,
X25_in, Y25,
X26_in, Y26,
X27_in, Y27,
X28_in, Y28,
X29_in, Y29,
X30_in, Y30,
X31_in, Y31);
output next_out;
input clk, reset, next_in;
reg next;
input [3:0] i1_in;
reg [3:0] i1;
// Latency: 3
// Gap: 1
module codeBlock23304(clk, reset, next_in, next_out,
X0_in, Y0,
X1_in, Y1,
X2_in, Y2,
X3_in, Y3,
X4_in, Y4,
X5_in, Y5,
X6_in, Y6,
X7_in, Y7,
X8_in, Y8,
X9_in, Y9,
X10_in, Y10,
X11_in, Y11,
X12_in, Y12,
X13_in, Y13,
X14_in, Y14,
X15_in, Y15,
X16_in, Y16,
X17_in, Y17,
X18_in, Y18,
X19_in, Y19,
X20_in, Y20,
X21_in, Y21,
X22_in, Y22,
X23_in, Y23,
X24_in, Y24,
X25_in, Y25,
X26_in, Y26,
X27_in, Y27,
X28_in, Y28,
X29_in, Y29,
X30_in, Y30,
X31_in, Y31);
output next_out;
input clk, reset, next_in;
reg next;
// Latency: 39
// Gap: 16
module rc24142(clk, reset, next, next_out,
X0, Y0,
X1, Y1,
X2, Y2,
X3, Y3,
X4, Y4,
X5, Y5,
X6, Y6,
X7, Y7,
X8, Y8,
X9, Y9,
X10, Y10,
X11, Y11,
X12, Y12,
X13, Y13,
X14, Y14,
X15, Y15,
X16, Y16,
X17, Y17,
X18, Y18,
X19, Y19,
X20, Y20,
X21, Y21,
X22, Y22,
X23, Y23,
X24, Y24,
X25, Y25,
X26, Y26,
X27, Y27,
X28, Y28,
X29, Y29,
X30, Y30,
X31, Y31);
output next_out;
input clk, reset, next;
endmodule
// Latency: 39
// Gap: 16
module perm24140(clk, next, reset, next_out,
x0, y0,
x1, y1,
x2, y2,
x3, y3,
x4, y4,
x5, y5,
x6, y6,
x7, y7,
x8, y8,
x9, y9,
x10, y10,
x11, y11,
x12, y12,
x13, y13,
x14, y14,
x15, y15);
parameter width = 16;
parameter addrbits = 4;
parameter muxbits = 4;
assign q_unsc =
res[WIDTH-1:0];
assign q_sc =
{res[2*WIDTH-1], res[2*WIDTH-4:WIDTH-2]};
endmodule
module addfxp(a, b, q, clk);
assign q = res[cycles-1];
integer i;
end
endmodule
assign q = res[cycles-1];
integer i;
end
endmodule