| // --------------------------------------- | |
| module LUT4(input A, B, C, D, output Z); | |
| parameter [15:0] INIT = 16'h0000; | |
| wire [7:0] s3 = D ? INIT[15:8] : INIT[7:0]; | |
| wire [3:0] s2 = C ? s3[ 7:4] : s3[3:0]; | |
| wire [1:0] s1 = B ? s2[ 3:2] : s2[1:0]; | |
| assign Z = A ? s1[1] : s1[0]; | |
| endmodule | |
| // --------------------------------------- | |
| (* abc9_box_id=4, lib_whitebox *) | |
| module L6MUX21 (input D0, D1, SD, output Z); | |
| assign Z = SD ? D1 : D0; | |
| endmodule | |
| // --------------------------------------- | |
| (* abc9_box_id=1, lib_whitebox *) | |
| module CCU2C( | |
| (* abc9_carry *) | |
| input CIN, | |
| input A0, B0, C0, D0, A1, B1, C1, D1, | |
| output S0, S1, | |
| (* abc9_carry *) | |
| output COUT | |
| ); | |
| parameter [15:0] INIT0 = 16'h0000; | |
| parameter [15:0] INIT1 = 16'h0000; | |
| parameter INJECT1_0 = "YES"; | |
| parameter INJECT1_1 = "YES"; | |
| // First half | |
| wire LUT4_0, LUT2_0; | |
| `ifdef _ABC | |
| assign LUT4_0 = INIT0[{D0, C0, B0, A0}]; | |
| assign LUT2_0 = INIT0[{2'b00, B0, A0}]; | |
| `else | |
| LUT4 #(.INIT(INIT0)) lut4_0(.A(A0), .B(B0), .C(C0), .D(D0), .Z(LUT4_0)); | |
| LUT2 #(.INIT(INIT0[3:0])) lut2_0(.A(A0), .B(B0), .Z(LUT2_0)); | |
| `endif | |
| wire gated_cin_0 = (INJECT1_0 == "YES") ? 1'b0 : CIN; | |
| assign S0 = LUT4_0 ^ gated_cin_0; | |
| wire gated_lut2_0 = (INJECT1_0 == "YES") ? 1'b0 : LUT2_0; | |
| wire cout_0 = (~LUT4_0 & gated_lut2_0) | (LUT4_0 & CIN); | |
| // Second half | |
| wire LUT4_1, LUT2_1; | |
| `ifdef _ABC | |
| assign LUT4_1 = INIT1[{D1, C1, B1, A1}]; | |
| assign LUT2_1 = INIT1[{2'b00, B1, A1}]; | |
| `else | |
| LUT4 #(.INIT(INIT1)) lut4_1(.A(A1), .B(B1), .C(C1), .D(D1), .Z(LUT4_1)); | |
| LUT2 #(.INIT(INIT1[3:0])) lut2_1(.A(A1), .B(B1), .Z(LUT2_1)); | |
| `endif | |
| wire gated_cin_1 = (INJECT1_1 == "YES") ? 1'b0 : cout_0; | |
| assign S1 = LUT4_1 ^ gated_cin_1; | |
| wire gated_lut2_1 = (INJECT1_1 == "YES") ? 1'b0 : LUT2_1; | |
| assign COUT = (~LUT4_1 & gated_lut2_1) | (LUT4_1 & cout_0); | |
| endmodule | |
| // --------------------------------------- | |
| module TRELLIS_RAM16X2 ( | |
| input DI0, DI1, | |
| input WAD0, WAD1, WAD2, WAD3, | |
| input WRE, WCK, | |
| input RAD0, RAD1, RAD2, RAD3, | |
| output DO0, DO1 | |
| ); | |
| parameter WCKMUX = "WCK"; | |
| parameter WREMUX = "WRE"; | |
| parameter INITVAL_0 = 16'h0000; | |
| parameter INITVAL_1 = 16'h0000; | |
| reg [1:0] mem[15:0]; | |
| integer i; | |
| initial begin | |
| for (i = 0; i < 16; i = i + 1) | |
| mem[i] <= {INITVAL_1[i], INITVAL_0[i]}; | |
| end | |
| wire muxwck = (WCKMUX == "INV") ? ~WCK : WCK; | |
| reg muxwre; | |
| always @(*) | |
| case (WREMUX) | |
| "1": muxwre = 1'b1; | |
| "0": muxwre = 1'b0; | |
| "INV": muxwre = ~WRE; | |
| default: muxwre = WRE; | |
| endcase | |
| always @(posedge muxwck) | |
| if (muxwre) | |
| mem[{WAD3, WAD2, WAD1, WAD0}] <= {DI1, DI0}; | |
| assign {DO1, DO0} = mem[{RAD3, RAD2, RAD1, RAD0}]; | |
| endmodule | |
| // --------------------------------------- | |
| (* abc9_box_id=3, lib_whitebox *) | |
| module PFUMX (input ALUT, BLUT, C0, output Z); | |
| assign Z = C0 ? ALUT : BLUT; | |
| endmodule | |
| // --------------------------------------- | |
| module TRELLIS_DPR16X4 ( | |
| input [3:0] DI, | |
| input [3:0] WAD, | |
| input WRE, | |
| input WCK, | |
| input [3:0] RAD, | |
| /* (* abc9_arrival=<TODO> *) */ | |
| output [3:0] DO | |
| ); | |
| parameter WCKMUX = "WCK"; | |
| parameter WREMUX = "WRE"; | |
| parameter [63:0] INITVAL = 64'h0000000000000000; | |
| reg [3:0] mem[15:0]; | |
| integer i; | |
| initial begin | |
| for (i = 0; i < 16; i = i + 1) | |
| mem[i] <= {INITVAL[i+3], INITVAL[i+2], INITVAL[i+1], INITVAL[i]}; | |
| end | |
| wire muxwck = (WCKMUX == "INV") ? ~WCK : WCK; | |
| reg muxwre; | |
| always @(*) | |
| case (WREMUX) | |
| "1": muxwre = 1'b1; | |
| "0": muxwre = 1'b0; | |
| "INV": muxwre = ~WRE; | |
| default: muxwre = WRE; | |
| endcase | |
| always @(posedge muxwck) | |
| if (muxwre) | |
| mem[WAD] <= DI; | |
| assign DO = mem[RAD]; | |
| endmodule | |
| // --------------------------------------- | |
| module DPR16X4C ( | |
| input [3:0] DI, | |
| input WCK, WRE, | |
| input [3:0] RAD, | |
| input [3:0] WAD, | |
| output [3:0] DO | |
| ); | |
| // For legacy Lattice compatibility, INITIVAL is a hex | |
| // string rather than a numeric parameter | |
| parameter INITVAL = "0x0000000000000000"; | |
| function [63:0] convert_initval; | |
| input [143:0] hex_initval; | |
| reg done; | |
| reg [63:0] temp; | |
| reg [7:0] char; | |
| integer i; | |
| begin | |
| done = 1'b0; | |
| temp = 0; | |
| for (i = 0; i < 16; i = i + 1) begin | |
| if (!done) begin | |
| char = hex_initval[8*i +: 8]; | |
| if (char == "x") begin | |
| done = 1'b1; | |
| end else begin | |
| if (char >= "0" && char <= "9") | |
| temp[4*i +: 4] = char - "0"; | |
| else if (char >= "A" && char <= "F") | |
| temp[4*i +: 4] = 10 + char - "A"; | |
| else if (char >= "a" && char <= "f") | |
| temp[4*i +: 4] = 10 + char - "a"; | |
| end | |
| end | |
| end | |
| convert_initval = temp; | |
| end | |
| endfunction | |
| localparam conv_initval = convert_initval(INITVAL); | |
| reg [3:0] ram[0:15]; | |
| integer i; | |
| initial begin | |
| for (i = 0; i < 15; i = i + 1) begin | |
| ram[i] <= conv_initval[4*i +: 4]; | |
| end | |
| end | |
| always @(posedge WCK) | |
| if (WRE) | |
| ram[WAD] <= DI; | |
| assign DO = ram[RAD]; | |
| endmodule | |
| // --------------------------------------- | |
| module LUT2(input A, B, output Z); | |
| parameter [3:0] INIT = 4'h0; | |
| wire [1:0] s1 = B ? INIT[ 3:2] : INIT[1:0]; | |
| assign Z = A ? s1[1] : s1[0]; | |
| endmodule | |
| // --------------------------------------- | |
| module TRELLIS_FF(input CLK, LSR, CE, DI, M, output reg Q); | |
| parameter GSR = "ENABLED"; | |
| parameter [127:0] CEMUX = "1"; | |
| parameter CLKMUX = "CLK"; | |
| parameter LSRMUX = "LSR"; | |
| parameter SRMODE = "LSR_OVER_CE"; | |
| parameter REGSET = "RESET"; | |
| parameter [127:0] LSRMODE = "LSR"; | |
| wire muxce; | |
| generate | |
| case (CEMUX) | |
| "1": assign muxce = 1'b1; | |
| "0": assign muxce = 1'b0; | |
| "INV": assign muxce = ~CE; | |
| default: assign muxce = CE; | |
| endcase | |
| endgenerate | |
| wire muxlsr = (LSRMUX == "INV") ? ~LSR : LSR; | |
| wire muxclk = (CLKMUX == "INV") ? ~CLK : CLK; | |
| wire srval; | |
| generate | |
| if (LSRMODE == "PRLD") | |
| assign srval = M; | |
| else | |
| assign srval = (REGSET == "SET") ? 1'b1 : 1'b0; | |
| endgenerate | |
| initial Q = srval; | |
| generate | |
| if (SRMODE == "ASYNC") begin | |
| always @(posedge muxclk, posedge muxlsr) | |
| if (muxlsr) | |
| Q <= srval; | |
| else if (muxce) | |
| Q <= DI; | |
| end else begin | |
| always @(posedge muxclk) | |
| if (muxlsr) | |
| Q <= srval; | |
| else if (muxce) | |
| Q <= DI; | |
| end | |
| endgenerate | |
| endmodule | |
| // --------------------------------------- | |
| (* keep *) | |
| module TRELLIS_IO( | |
| inout B, | |
| input I, | |
| input T, | |
| output O | |
| ); | |
| parameter DIR = "INPUT"; | |
| reg T_pd; | |
| always @(*) if (T === 1'bz) T_pd <= 1'b0; else T_pd <= T; | |
| generate | |
| if (DIR == "INPUT") begin | |
| assign B = 1'bz; | |
| assign O = B; | |
| end else if (DIR == "OUTPUT") begin | |
| assign B = T_pd ? 1'bz : I; | |
| assign O = 1'bx; | |
| end else if (DIR == "BIDIR") begin | |
| assign B = T_pd ? 1'bz : I; | |
| assign O = B; | |
| end else begin | |
| ERROR_UNKNOWN_IO_MODE error(); | |
| end | |
| endgenerate | |
| endmodule | |
| // --------------------------------------- | |
| module INV(input A, output Z); | |
| assign Z = !A; | |
| endmodule | |
| // --------------------------------------- | |
| module TRELLIS_SLICE( | |
| input A0, B0, C0, D0, | |
| input A1, B1, C1, D1, | |
| input M0, M1, | |
| input FCI, FXA, FXB, | |
| input CLK, LSR, CE, | |
| input DI0, DI1, | |
| input WD0, WD1, | |
| input WAD0, WAD1, WAD2, WAD3, | |
| input WRE, WCK, | |
| output F0, Q0, | |
| output F1, Q1, | |
| output FCO, OFX0, OFX1, | |
| output WDO0, WDO1, WDO2, WDO3, | |
| output WADO0, WADO1, WADO2, WADO3 | |
| ); | |
| parameter MODE = "LOGIC"; | |
| parameter GSR = "ENABLED"; | |
| parameter SRMODE = "LSR_OVER_CE"; | |
| parameter [127:0] CEMUX = "1"; | |
| parameter CLKMUX = "CLK"; | |
| parameter LSRMUX = "LSR"; | |
| parameter LUT0_INITVAL = 16'h0000; | |
| parameter LUT1_INITVAL = 16'h0000; | |
| parameter REG0_SD = "0"; | |
| parameter REG1_SD = "0"; | |
| parameter REG0_REGSET = "RESET"; | |
| parameter REG1_REGSET = "RESET"; | |
| parameter REG0_LSRMODE = "LSR"; | |
| parameter REG1_LSRMODE = "LSR"; | |
| parameter [127:0] CCU2_INJECT1_0 = "NO"; | |
| parameter [127:0] CCU2_INJECT1_1 = "NO"; | |
| parameter WREMUX = "WRE"; | |
| parameter WCKMUX = "WCK"; | |
| parameter A0MUX = "A0"; | |
| parameter A1MUX = "A1"; | |
| parameter B0MUX = "B0"; | |
| parameter B1MUX = "B1"; | |
| parameter C0MUX = "C0"; | |
| parameter C1MUX = "C1"; | |
| parameter D0MUX = "D0"; | |
| parameter D1MUX = "D1"; | |
| wire A0m, B0m, C0m, D0m; | |
| wire A1m, B1m, C1m, D1m; | |
| generate | |
| if (A0MUX == "1") assign A0m = 1'b1; else assign A0m = A0; | |
| if (B0MUX == "1") assign B0m = 1'b1; else assign B0m = B0; | |
| if (C0MUX == "1") assign C0m = 1'b1; else assign C0m = C0; | |
| if (D0MUX == "1") assign D0m = 1'b1; else assign D0m = D0; | |
| if (A1MUX == "1") assign A1m = 1'b1; else assign A1m = A1; | |
| if (B1MUX == "1") assign B1m = 1'b1; else assign B1m = B1; | |
| if (C1MUX == "1") assign C1m = 1'b1; else assign C1m = C1; | |
| if (D1MUX == "1") assign D1m = 1'b1; else assign D1m = D1; | |
| endgenerate | |
| function [15:0] permute_initval; | |
| input [15:0] initval; | |
| integer i; | |
| begin | |
| for (i = 0; i < 16; i = i + 1) begin | |
| permute_initval[{i[0], i[2], i[1], i[3]}] = initval[i]; | |
| end | |
| end | |
| endfunction | |
| generate | |
| if (MODE == "LOGIC") begin | |
| // LUTs | |
| LUT4 #( | |
| .INIT(LUT0_INITVAL) | |
| ) lut4_0 ( | |
| .A(A0m), .B(B0m), .C(C0m), .D(D0m), | |
| .Z(F0) | |
| ); | |
| LUT4 #( | |
| .INIT(LUT1_INITVAL) | |
| ) lut4_1 ( | |
| .A(A1m), .B(B1m), .C(C1m), .D(D1m), | |
| .Z(F1) | |
| ); | |
| // LUT expansion muxes | |
| PFUMX lut5_mux (.ALUT(F1), .BLUT(F0), .C0(M0), .Z(OFX0)); | |
| L6MUX21 lutx_mux (.D0(FXA), .D1(FXB), .SD(M1), .Z(OFX1)); | |
| end else if (MODE == "CCU2") begin | |
| CCU2C #( | |
| .INIT0(LUT0_INITVAL), | |
| .INIT1(LUT1_INITVAL), | |
| .INJECT1_0(CCU2_INJECT1_0), | |
| .INJECT1_1(CCU2_INJECT1_1) | |
| ) ccu2c_i ( | |
| .CIN(FCI), | |
| .A0(A0m), .B0(B0m), .C0(C0m), .D0(D0m), | |
| .A1(A1m), .B1(B1m), .C1(C1m), .D1(D1m), | |
| .S0(F0), .S1(F1), | |
| .COUT(FCO) | |
| ); | |
| end else if (MODE == "RAMW") begin | |
| assign WDO0 = C1m; | |
| assign WDO1 = A1m; | |
| assign WDO2 = D1m; | |
| assign WDO3 = B1m; | |
| assign WADO0 = D0m; | |
| assign WADO1 = B0m; | |
| assign WADO2 = C0m; | |
| assign WADO3 = A0m; | |
| end else if (MODE == "DPRAM") begin | |
| TRELLIS_RAM16X2 #( | |
| .INITVAL_0(permute_initval(LUT0_INITVAL)), | |
| .INITVAL_1(permute_initval(LUT1_INITVAL)), | |
| .WREMUX(WREMUX) | |
| ) ram_i ( | |
| .DI0(WD0), .DI1(WD1), | |
| .WAD0(WAD0), .WAD1(WAD1), .WAD2(WAD2), .WAD3(WAD3), | |
| .WRE(WRE), .WCK(WCK), | |
| .RAD0(D0m), .RAD1(B0m), .RAD2(C0m), .RAD3(A0m), | |
| .DO0(F0), .DO1(F1) | |
| ); | |
| // TODO: confirm RAD and INITVAL ordering | |
| // DPRAM mode contract? | |
| `ifdef FORMAL | |
| always @(*) begin | |
| assert(A0m==A1m); | |
| assert(B0m==B1m); | |
| assert(C0m==C1m); | |
| assert(D0m==D1m); | |
| end | |
| `endif | |
| end else begin | |
| ERROR_UNKNOWN_SLICE_MODE error(); | |
| end | |
| endgenerate | |
| // FF input selection muxes | |
| wire muxdi0 = (REG0_SD == "1") ? DI0 : M0; | |
| wire muxdi1 = (REG1_SD == "1") ? DI1 : M1; | |
| // Flipflops | |
| TRELLIS_FF #( | |
| .GSR(GSR), | |
| .CEMUX(CEMUX), | |
| .CLKMUX(CLKMUX), | |
| .LSRMUX(LSRMUX), | |
| .SRMODE(SRMODE), | |
| .REGSET(REG0_REGSET), | |
| .LSRMODE(REG0_LSRMODE) | |
| ) ff_0 ( | |
| .CLK(CLK), .LSR(LSR), .CE(CE), | |
| .DI(muxdi0), .M(M0), | |
| .Q(Q0) | |
| ); | |
| TRELLIS_FF #( | |
| .GSR(GSR), | |
| .CEMUX(CEMUX), | |
| .CLKMUX(CLKMUX), | |
| .LSRMUX(LSRMUX), | |
| .SRMODE(SRMODE), | |
| .REGSET(REG1_REGSET), | |
| .LSRMODE(REG1_LSRMODE) | |
| ) ff_1 ( | |
| .CLK(CLK), .LSR(LSR), .CE(CE), | |
| .DI(muxdi1), .M(M1), | |
| .Q(Q1) | |
| ); | |
| endmodule | |
| (* blackbox *) | |
| module DP16KD( | |
| input DIA17, DIA16, DIA15, DIA14, DIA13, DIA12, DIA11, DIA10, DIA9, DIA8, DIA7, DIA6, DIA5, DIA4, DIA3, DIA2, DIA1, DIA0, | |
| input ADA13, ADA12, ADA11, ADA10, ADA9, ADA8, ADA7, ADA6, ADA5, ADA4, ADA3, ADA2, ADA1, ADA0, | |
| input CEA, OCEA, CLKA, WEA, RSTA, | |
| input CSA2, CSA1, CSA0, | |
| output DOA17, DOA16, DOA15, DOA14, DOA13, DOA12, DOA11, DOA10, DOA9, DOA8, DOA7, DOA6, DOA5, DOA4, DOA3, DOA2, DOA1, DOA0, | |
| input DIB17, DIB16, DIB15, DIB14, DIB13, DIB12, DIB11, DIB10, DIB9, DIB8, DIB7, DIB6, DIB5, DIB4, DIB3, DIB2, DIB1, DIB0, | |
| input ADB13, ADB12, ADB11, ADB10, ADB9, ADB8, ADB7, ADB6, ADB5, ADB4, ADB3, ADB2, ADB1, ADB0, | |
| input CEB, OCEB, CLKB, WEB, RSTB, | |
| input CSB2, CSB1, CSB0, | |
| output DOB17, DOB16, DOB15, DOB14, DOB13, DOB12, DOB11, DOB10, DOB9, DOB8, DOB7, DOB6, DOB5, DOB4, DOB3, DOB2, DOB1, DOB0 | |
| ); | |
| parameter DATA_WIDTH_A = 18; | |
| parameter DATA_WIDTH_B = 18; | |
| parameter REGMODE_A = "NOREG"; | |
| parameter REGMODE_B = "NOREG"; | |
| parameter RESETMODE = "SYNC"; | |
| parameter ASYNC_RESET_RELEASE = "SYNC"; | |
| parameter CSDECODE_A = "0b000"; | |
| parameter CSDECODE_B = "0b000"; | |
| parameter WRITEMODE_A = "NORMAL"; | |
| parameter WRITEMODE_B = "NORMAL"; | |
| parameter DIA17MUX = "DIA17"; | |
| parameter DIA16MUX = "DIA16"; | |
| parameter DIA15MUX = "DIA15"; | |
| parameter DIA14MUX = "DIA14"; | |
| parameter DIA13MUX = "DIA13"; | |
| parameter DIA12MUX = "DIA12"; | |
| parameter DIA11MUX = "DIA11"; | |
| parameter DIA10MUX = "DIA10"; | |
| parameter DIA9MUX = "DIA9"; | |
| parameter DIA8MUX = "DIA8"; | |
| parameter DIA7MUX = "DIA7"; | |
| parameter DIA6MUX = "DIA6"; | |
| parameter DIA5MUX = "DIA5"; | |
| parameter DIA4MUX = "DIA4"; | |
| parameter DIA3MUX = "DIA3"; | |
| parameter DIA2MUX = "DIA2"; | |
| parameter DIA1MUX = "DIA1"; | |
| parameter DIA0MUX = "DIA0"; | |
| parameter ADA13MUX = "ADA13"; | |
| parameter ADA12MUX = "ADA12"; | |
| parameter ADA11MUX = "ADA11"; | |
| parameter ADA10MUX = "ADA10"; | |
| parameter ADA9MUX = "ADA9"; | |
| parameter ADA8MUX = "ADA8"; | |
| parameter ADA7MUX = "ADA7"; | |
| parameter ADA6MUX = "ADA6"; | |
| parameter ADA5MUX = "ADA5"; | |
| parameter ADA4MUX = "ADA4"; | |
| parameter ADA3MUX = "ADA3"; | |
| parameter ADA2MUX = "ADA2"; | |
| parameter ADA1MUX = "ADA1"; | |
| parameter ADA0MUX = "ADA0"; | |
| parameter CEAMUX = "CEA"; | |
| parameter OCEAMUX = "OCEA"; | |
| parameter CLKAMUX = "CLKA"; | |
| parameter WEAMUX = "WEA"; | |
| parameter RSTAMUX = "RSTA"; | |
| parameter CSA2MUX = "CSA2"; | |
| parameter CSA1MUX = "CSA1"; | |
| parameter CSA0MUX = "CSA0"; | |
| parameter DOA17MUX = "DOA17"; | |
| parameter DOA16MUX = "DOA16"; | |
| parameter DOA15MUX = "DOA15"; | |
| parameter DOA14MUX = "DOA14"; | |
| parameter DOA13MUX = "DOA13"; | |
| parameter DOA12MUX = "DOA12"; | |
| parameter DOA11MUX = "DOA11"; | |
| parameter DOA10MUX = "DOA10"; | |
| parameter DOA9MUX = "DOA9"; | |
| parameter DOA8MUX = "DOA8"; | |
| parameter DOA7MUX = "DOA7"; | |
| parameter DOA6MUX = "DOA6"; | |
| parameter DOA5MUX = "DOA5"; | |
| parameter DOA4MUX = "DOA4"; | |
| parameter DOA3MUX = "DOA3"; | |
| parameter DOA2MUX = "DOA2"; | |
| parameter DOA1MUX = "DOA1"; | |
| parameter DOA0MUX = "DOA0"; | |
| parameter DIB17MUX = "DIB17"; | |
| parameter DIB16MUX = "DIB16"; | |
| parameter DIB15MUX = "DIB15"; | |
| parameter DIB14MUX = "DIB14"; | |
| parameter DIB13MUX = "DIB13"; | |
| parameter DIB12MUX = "DIB12"; | |
| parameter DIB11MUX = "DIB11"; | |
| parameter DIB10MUX = "DIB10"; | |
| parameter DIB9MUX = "DIB9"; | |
| parameter DIB8MUX = "DIB8"; | |
| parameter DIB7MUX = "DIB7"; | |
| parameter DIB6MUX = "DIB6"; | |
| parameter DIB5MUX = "DIB5"; | |
| parameter DIB4MUX = "DIB4"; | |
| parameter DIB3MUX = "DIB3"; | |
| parameter DIB2MUX = "DIB2"; | |
| parameter DIB1MUX = "DIB1"; | |
| parameter DIB0MUX = "DIB0"; | |
| parameter ADB13MUX = "ADB13"; | |
| parameter ADB12MUX = "ADB12"; | |
| parameter ADB11MUX = "ADB11"; | |
| parameter ADB10MUX = "ADB10"; | |
| parameter ADB9MUX = "ADB9"; | |
| parameter ADB8MUX = "ADB8"; | |
| parameter ADB7MUX = "ADB7"; | |
| parameter ADB6MUX = "ADB6"; | |
| parameter ADB5MUX = "ADB5"; | |
| parameter ADB4MUX = "ADB4"; | |
| parameter ADB3MUX = "ADB3"; | |
| parameter ADB2MUX = "ADB2"; | |
| parameter ADB1MUX = "ADB1"; | |
| parameter ADB0MUX = "ADB0"; | |
| parameter CEBMUX = "CEB"; | |
| parameter OCEBMUX = "OCEB"; | |
| parameter CLKBMUX = "CLKB"; | |
| parameter WEBMUX = "WEB"; | |
| parameter RSTBMUX = "RSTB"; | |
| parameter CSB2MUX = "CSB2"; | |
| parameter CSB1MUX = "CSB1"; | |
| parameter CSB0MUX = "CSB0"; | |
| parameter DOB17MUX = "DOB17"; | |
| parameter DOB16MUX = "DOB16"; | |
| parameter DOB15MUX = "DOB15"; | |
| parameter DOB14MUX = "DOB14"; | |
| parameter DOB13MUX = "DOB13"; | |
| parameter DOB12MUX = "DOB12"; | |
| parameter DOB11MUX = "DOB11"; | |
| parameter DOB10MUX = "DOB10"; | |
| parameter DOB9MUX = "DOB9"; | |
| parameter DOB8MUX = "DOB8"; | |
| parameter DOB7MUX = "DOB7"; | |
| parameter DOB6MUX = "DOB6"; | |
| parameter DOB5MUX = "DOB5"; | |
| parameter DOB4MUX = "DOB4"; | |
| parameter DOB3MUX = "DOB3"; | |
| parameter DOB2MUX = "DOB2"; | |
| parameter DOB1MUX = "DOB1"; | |
| parameter DOB0MUX = "DOB0"; | |
| parameter WID = 0; | |
| parameter GSR = "ENABLED"; | |
| parameter INITVAL_00 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_01 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_02 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_03 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_04 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_05 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_06 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_07 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_08 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_09 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_0A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_0B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_0C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_0D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_0E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_0F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_10 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_11 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_12 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_13 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_14 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_15 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_16 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_17 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_18 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_19 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_1A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_1B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_1C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_1D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_1E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_1F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_20 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_21 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_22 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_23 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_24 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_25 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_26 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_27 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_28 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_29 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_2A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_2B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_2C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_2D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_2E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_2F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_30 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_31 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_32 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_33 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_34 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_35 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_36 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_37 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_38 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_39 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_3A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_3B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_3C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_3D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_3E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| parameter INITVAL_3F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; | |
| endmodule | |
| `ifndef NO_INCLUDES | |
| `include "cells_ff.vh" | |
| `include "cells_io.vh" | |
| `endif |