add script for blackbox extraction

This commit is contained in:
Miodrag Milanovic 2023-08-23 11:51:00 +02:00
parent ea50d96135
commit 541c1ab567
5 changed files with 4395 additions and 1704 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,81 +1,430 @@
(* blackbox *)
module DP8KC(
input DIA8, DIA7, DIA6, DIA5, DIA4, DIA3, DIA2, DIA1, DIA0,
input ADA12, ADA11, ADA10, ADA9, ADA8, ADA7, ADA6, ADA5, ADA4, ADA3, ADA2, ADA1, ADA0,
input CEA, OCEA, CLKA, WEA, RSTA,
input CSA2, CSA1, CSA0,
output DOA8, DOA7, DOA6, DOA5, DOA4, DOA3, DOA2, DOA1, DOA0,
// Created by cells_xtra.py from Lattice models
input DIB8, DIB7, DIB6, DIB5, DIB4, DIB3, DIB2, DIB1, DIB0,
input ADB12, ADB11, ADB10, ADB9, ADB8, ADB7, ADB6, ADB5, ADB4, ADB3, ADB2, ADB1, ADB0,
input CEB, OCEB, CLKB, WEB, RSTB,
input CSB2, CSB1, CSB0,
output DOB8, DOB7, DOB6, DOB5, DOB4, DOB3, DOB2, DOB1, DOB0
);
parameter DATA_WIDTH_A = 9;
parameter DATA_WIDTH_B = 9;
(* blackbox *) (* keep *)
module GSR (...);
input GSR;
endmodule
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 GSR = "ENABLED";
parameter INIT_DATA = "STATIC";
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;
(* blackbox *) (* keep *)
module SGSR (...);
input GSR;
input CLK;
endmodule
(* blackbox *)
module EHXPLLJ (
input CLKI, CLKFB,
input PHASESEL1, PHASESEL0, PHASEDIR, PHASESTEP,
input LOADREG, STDBY, PLLWAKESYNC, RST, RESETM, RESETC, RESETD,
input ENCLKOP, ENCLKOS, ENCLKOS2, ENCLKOS3, PLLCLK, PLLRST, PLLSTB, PLLWE,
input PLLDATI7, PLLDATI6, PLLDATI5, PLLDATI4, PLLDATI3, PLLDATI2, PLLDATI1, PLLDATI0,
input PLLADDR4, PLLADDR3, PLLADDR2, PLLADDR1, PLLADDR0,
output CLKOP, CLKOS, CLKOS2, CLKOS3, LOCK, INTLOCK, REFCLK,
output PLLDATO7, PLLDATO6, PLLDATO5, PLLDATO4, PLLDATO3, PLLDATO2, PLLDATO1, PLLDATO0, PLLACK,
output DPHSRC, CLKINTFB
);
module DP8KC (...);
parameter DATA_WIDTH_A = 9;
parameter DATA_WIDTH_B = 9;
parameter REGMODE_A = "NOREG";
parameter REGMODE_B = "NOREG";
parameter CSDECODE_A = "0b000";
parameter CSDECODE_B = "0b000";
parameter WRITEMODE_A = "NORMAL";
parameter WRITEMODE_B = "NORMAL";
parameter GSR = "ENABLED";
parameter RESETMODE = "SYNC";
parameter ASYNC_RESET_RELEASE = "SYNC";
parameter INIT_DATA = "STATIC";
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;
input DIA8;
input DIA7;
input DIA6;
input DIA5;
input DIA4;
input DIA3;
input DIA2;
input DIA1;
input DIA0;
input ADA12;
input ADA11;
input ADA10;
input ADA9;
input ADA8;
input ADA7;
input ADA6;
input ADA5;
input ADA4;
input ADA3;
input ADA2;
input ADA1;
input ADA0;
input CEA;
input OCEA;
input CLKA;
input WEA;
input CSA2;
input CSA1;
input CSA0;
input RSTA;
input DIB8;
input DIB7;
input DIB6;
input DIB5;
input DIB4;
input DIB3;
input DIB2;
input DIB1;
input DIB0;
input ADB12;
input ADB11;
input ADB10;
input ADB9;
input ADB8;
input ADB7;
input ADB6;
input ADB5;
input ADB4;
input ADB3;
input ADB2;
input ADB1;
input ADB0;
input CEB;
input OCEB;
input CLKB;
input WEB;
input CSB2;
input CSB1;
input CSB0;
input RSTB;
output DOA8;
output DOA7;
output DOA6;
output DOA5;
output DOA4;
output DOA3;
output DOA2;
output DOA1;
output DOA0;
output DOB8;
output DOB7;
output DOB6;
output DOB5;
output DOB4;
output DOB3;
output DOB2;
output DOB1;
output DOB0;
endmodule
(* blackbox *)
module PDPW8KC (...);
parameter DATA_WIDTH_W = 18;
parameter DATA_WIDTH_R = 9;
parameter REGMODE = "NOREG";
parameter CSDECODE_W = "0b000";
parameter CSDECODE_R = "0b000";
parameter GSR = "ENABLED";
parameter RESETMODE = "SYNC";
parameter ASYNC_RESET_RELEASE = "SYNC";
parameter INIT_DATA = "STATIC";
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;
input DI17;
input DI16;
input DI15;
input DI14;
input DI13;
input DI12;
input DI11;
input DI10;
input DI9;
input DI8;
input DI7;
input DI6;
input DI5;
input DI4;
input DI3;
input DI2;
input DI1;
input DI0;
input ADW8;
input ADW7;
input ADW6;
input ADW5;
input ADW4;
input ADW3;
input ADW2;
input ADW1;
input ADW0;
input BE1;
input BE0;
input CEW;
input CLKW;
input CSW2;
input CSW1;
input CSW0;
input ADR12;
input ADR11;
input ADR10;
input ADR9;
input ADR8;
input ADR7;
input ADR6;
input ADR5;
input ADR4;
input ADR3;
input ADR2;
input ADR1;
input ADR0;
input CER;
input OCER;
input CLKR;
input CSR2;
input CSR1;
input CSR0;
input RST;
output DO17;
output DO16;
output DO15;
output DO14;
output DO13;
output DO12;
output DO11;
output DO10;
output DO9;
output DO8;
output DO7;
output DO6;
output DO5;
output DO4;
output DO3;
output DO2;
output DO1;
output DO0;
endmodule
(* blackbox *)
module SP8KC (...);
parameter DATA_WIDTH = 9;
parameter REGMODE = "NOREG";
parameter CSDECODE = "0b000";
parameter WRITEMODE = "NORMAL";
parameter GSR = "ENABLED";
parameter RESETMODE = "SYNC";
parameter ASYNC_RESET_RELEASE = "SYNC";
parameter INIT_DATA = "STATIC";
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;
input DI8;
input DI7;
input DI6;
input DI5;
input DI4;
input DI3;
input DI2;
input DI1;
input DI0;
input AD12;
input AD11;
input AD10;
input AD9;
input AD8;
input AD7;
input AD6;
input AD5;
input AD4;
input AD3;
input AD2;
input AD1;
input AD0;
input CE;
input OCE;
input CLK;
input WE;
input CS2;
input CS1;
input CS0;
input RST;
output DO8;
output DO7;
output DO6;
output DO5;
output DO4;
output DO3;
output DO2;
output DO1;
output DO0;
endmodule
(* blackbox *)
module FIFO8KB (...);
parameter DATA_WIDTH_W = 18;
parameter DATA_WIDTH_R = 18;
parameter REGMODE = "NOREG";
parameter RESETMODE = "ASYNC";
parameter ASYNC_RESET_RELEASE = "SYNC";
parameter CSDECODE_W = "0b00";
parameter CSDECODE_R = "0b00";
parameter AEPOINTER = "0b00000000000000";
parameter AEPOINTER1 = "0b00000000000000";
parameter AFPOINTER = "0b00000000000000";
parameter AFPOINTER1 = "0b00000000000000";
parameter FULLPOINTER = "0b00000000000000";
parameter FULLPOINTER1 = "0b00000000000000";
parameter GSR = "DISABLED";
input DI0;
input DI1;
input DI2;
input DI3;
input DI4;
input DI5;
input DI6;
input DI7;
input DI8;
input DI9;
input DI10;
input DI11;
input DI12;
input DI13;
input DI14;
input DI15;
input DI16;
input DI17;
input CSW0;
input CSW1;
input CSR0;
input CSR1;
input WE;
input RE;
input ORE;
input CLKW;
input CLKR;
input RST;
input RPRST;
input FULLI;
input EMPTYI;
output DO0;
output DO1;
output DO2;
output DO3;
output DO4;
output DO5;
output DO6;
output DO7;
output DO8;
output DO9;
output DO10;
output DO11;
output DO12;
output DO13;
output DO14;
output DO15;
output DO16;
output DO17;
output EF;
output AEF;
output AFF;
output FF;
endmodule
(* blackbox *)
module DCMA (...);
input CLK0;
input CLK1;
input SEL;
output DCMOUT;
endmodule
(* blackbox *)
module DCCA (...);
input CLKI;
input CE;
output CLKO;
endmodule
(* blackbox *)
module EHXPLLJ (...);
parameter CLKI_DIV = 1;
parameter CLKFB_DIV = 1;
parameter CLKOP_DIV = 8;
@ -122,172 +471,65 @@ module EHXPLLJ (
parameter DCRST_ENA = "DISABLED";
parameter DDRST_ENA = "DISABLED";
parameter INTFB_WAKE = "DISABLED";
input CLKI;
input CLKFB;
input PHASESEL1;
input PHASESEL0;
input PHASEDIR;
input PHASESTEP;
input LOADREG;
input STDBY;
input PLLWAKESYNC;
input RST;
input RESETM;
input RESETC;
input RESETD;
input ENCLKOP;
input ENCLKOS;
input ENCLKOS2;
input ENCLKOS3;
input PLLCLK;
input PLLRST;
input PLLSTB;
input PLLWE;
input PLLDATI7;
input PLLDATI6;
input PLLDATI5;
input PLLDATI4;
input PLLDATI3;
input PLLDATI2;
input PLLDATI1;
input PLLDATI0;
input PLLADDR4;
input PLLADDR3;
input PLLADDR2;
input PLLADDR1;
input PLLADDR0;
output CLKOP;
output CLKOS;
output CLKOS2;
output CLKOS3;
output LOCK;
output INTLOCK;
output REFCLK;
output PLLDATO7;
output PLLDATO6;
output PLLDATO5;
output PLLDATO4;
output PLLDATO3;
output PLLDATO2;
output PLLDATO1;
output PLLDATO0;
output PLLACK;
output DPHSRC;
output CLKINTFB;
endmodule
(* blackbox *)
module OSCH #(
parameter NOM_FREQ = "2.08"
) (
input STDBY,
output OSC,
output SEDSTDBY
);
module OSCH (...);
parameter NOM_FREQ = "2.08";
input STDBY;
output OSC;
output SEDSTDBY;
endmodule
(* blackbox *)
module DCCA (
input CLKI,
input CE,
output CLKO
);
endmodule
(* blackbox *)
module DCMA (
input CLK0,
input CLK1,
input SEL,
output DCMOUT
);
endmodule
(* blackbox *)
module PDPW8KC (
input DI17, DI16, DI15, DI14, DI13, DI12, DI11, DI10, DI9, DI8, DI7, DI6, DI5, DI4, DI3, DI2, DI1, DI0,
input ADW8, ADW7, ADW6, ADW5, ADW4, ADW3, ADW2, ADW1, ADW0,
input BE1, BE0,
input CEW, CLKW, CSW2, CSW1, CSW0,
input ADR12, ADR11, ADR10, ADR9, ADR8, ADR7, ADR6, ADR5, ADR4, ADR3, ADR2, ADR1, ADR0,
input CER, OCER, CLKR, CSR2, CSR1, CSR0, RST,
output DO17, DO16, DO15, DO14, DO13, DO12, DO11, DO10, DO9, DO8, DO7, DO6, DO5, DO4, DO3, DO2, DO1, DO0
);
parameter DATA_WIDTH_W = 18;
parameter DATA_WIDTH_R = 9;
parameter GSR = "ENABLED";
parameter REGMODE = "NOREG";
parameter RESETMODE = "SYNC";
parameter ASYNC_RESET_RELEASE = "SYNC";
parameter CSDECODE_W = "0b000";
parameter CSDECODE_R = "0b000";
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 INIT_DATA = "STATIC";
endmodule
(* blackbox *)
module SP8KC (
input DI8, DI7, DI6, DI5, DI4, DI3, DI2, DI1, DI0,
input AD12, AD11, AD10, AD9, AD8, AD7, AD6, AD5, AD4, AD3, AD2, AD1, AD0,
input CE, OCE, CLK, WE, CS2, CS1, CS0, RST,
output DO8, DO7, DO6, DO5, DO4, DO3, DO2, DO1, DO0
);
parameter DATA_WIDTH = 9;
parameter GSR = "ENABLED";
parameter REGMODE = "NOREG";
parameter RESETMODE = "SYNC";
parameter ASYNC_RESET_RELEASE = "SYNC";
parameter CSDECODE = "0b000";
parameter WRITEMODE = "NORMAL";
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 INIT_DATA = "STATIC";
endmodule
(* blackbox *)
module FIFO8KB (
input DI0, DI1, DI2, DI3, DI4, DI5, DI6, DI7, DI8, DI9, DI10, DI11, DI12, DI13, DI14, DI15, DI16, DI17,
input CSW0, CSW1, CSR0, CSR1, WE, RE, ORE, CLKW, CLKR, RST, RPRST, FULLI, EMPTYI,
output DO0, DO1, DO2, DO3, DO4, DO5, DO6, DO7, DO8, DO9, DO10, DO11, DO12, DO13, DO14, DO15, DO16, DO17,
input EF, AEF, AFF, FF
);
parameter DATA_WIDTH_W = 18;
parameter DATA_WIDTH_R = 18;
parameter GSR = "DISABLED";
parameter REGMODE = "NOREG";
parameter RESETMODE = "ASYNC";
parameter ASYNC_RESET_RELEASE = "SYNC";
parameter CSDECODE_W = "0b00";
parameter CSDECODE_R = "0b00";
parameter AEPOINTER = "0b00000000000000";
parameter AEPOINTER1 = "0b00000000000000";
parameter AFPOINTER = "0b00000000000000";
parameter AFPOINTER1 = "0b00000000000000";
parameter FULLPOINTER = "0b00000000000000";
parameter FULLPOINTER1 = "0b00000000000000";
endmodule

View File

@ -1,81 +1,430 @@
(* blackbox *)
module DP8KC(
input DIA8, DIA7, DIA6, DIA5, DIA4, DIA3, DIA2, DIA1, DIA0,
input ADA12, ADA11, ADA10, ADA9, ADA8, ADA7, ADA6, ADA5, ADA4, ADA3, ADA2, ADA1, ADA0,
input CEA, OCEA, CLKA, WEA, RSTA,
input CSA2, CSA1, CSA0,
output DOA8, DOA7, DOA6, DOA5, DOA4, DOA3, DOA2, DOA1, DOA0,
// Created by cells_xtra.py from Lattice models
input DIB8, DIB7, DIB6, DIB5, DIB4, DIB3, DIB2, DIB1, DIB0,
input ADB12, ADB11, ADB10, ADB9, ADB8, ADB7, ADB6, ADB5, ADB4, ADB3, ADB2, ADB1, ADB0,
input CEB, OCEB, CLKB, WEB, RSTB,
input CSB2, CSB1, CSB0,
output DOB8, DOB7, DOB6, DOB5, DOB4, DOB3, DOB2, DOB1, DOB0
);
parameter DATA_WIDTH_A = 9;
parameter DATA_WIDTH_B = 9;
(* blackbox *) (* keep *)
module GSR (...);
input GSR;
endmodule
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 GSR = "ENABLED";
parameter INIT_DATA = "STATIC";
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;
(* blackbox *) (* keep *)
module SGSR (...);
input GSR;
input CLK;
endmodule
(* blackbox *)
module EHXPLLJ (
input CLKI, CLKFB,
input PHASESEL1, PHASESEL0, PHASEDIR, PHASESTEP,
input LOADREG, STDBY, PLLWAKESYNC, RST, RESETM, RESETC, RESETD,
input ENCLKOP, ENCLKOS, ENCLKOS2, ENCLKOS3, PLLCLK, PLLRST, PLLSTB, PLLWE,
input PLLDATI7, PLLDATI6, PLLDATI5, PLLDATI4, PLLDATI3, PLLDATI2, PLLDATI1, PLLDATI0,
input PLLADDR4, PLLADDR3, PLLADDR2, PLLADDR1, PLLADDR0,
output CLKOP, CLKOS, CLKOS2, CLKOS3, LOCK, INTLOCK, REFCLK,
output PLLDATO7, PLLDATO6, PLLDATO5, PLLDATO4, PLLDATO3, PLLDATO2, PLLDATO1, PLLDATO0, PLLACK,
output DPHSRC, CLKINTFB
);
module DP8KC (...);
parameter DATA_WIDTH_A = 9;
parameter DATA_WIDTH_B = 9;
parameter REGMODE_A = "NOREG";
parameter REGMODE_B = "NOREG";
parameter CSDECODE_A = "0b000";
parameter CSDECODE_B = "0b000";
parameter WRITEMODE_A = "NORMAL";
parameter WRITEMODE_B = "NORMAL";
parameter GSR = "ENABLED";
parameter RESETMODE = "SYNC";
parameter ASYNC_RESET_RELEASE = "SYNC";
parameter INIT_DATA = "STATIC";
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;
input DIA8;
input DIA7;
input DIA6;
input DIA5;
input DIA4;
input DIA3;
input DIA2;
input DIA1;
input DIA0;
input ADA12;
input ADA11;
input ADA10;
input ADA9;
input ADA8;
input ADA7;
input ADA6;
input ADA5;
input ADA4;
input ADA3;
input ADA2;
input ADA1;
input ADA0;
input CEA;
input OCEA;
input CLKA;
input WEA;
input CSA2;
input CSA1;
input CSA0;
input RSTA;
input DIB8;
input DIB7;
input DIB6;
input DIB5;
input DIB4;
input DIB3;
input DIB2;
input DIB1;
input DIB0;
input ADB12;
input ADB11;
input ADB10;
input ADB9;
input ADB8;
input ADB7;
input ADB6;
input ADB5;
input ADB4;
input ADB3;
input ADB2;
input ADB1;
input ADB0;
input CEB;
input OCEB;
input CLKB;
input WEB;
input CSB2;
input CSB1;
input CSB0;
input RSTB;
output DOA8;
output DOA7;
output DOA6;
output DOA5;
output DOA4;
output DOA3;
output DOA2;
output DOA1;
output DOA0;
output DOB8;
output DOB7;
output DOB6;
output DOB5;
output DOB4;
output DOB3;
output DOB2;
output DOB1;
output DOB0;
endmodule
(* blackbox *)
module PDPW8KC (...);
parameter DATA_WIDTH_W = 18;
parameter DATA_WIDTH_R = 9;
parameter REGMODE = "NOREG";
parameter CSDECODE_W = "0b000";
parameter CSDECODE_R = "0b000";
parameter GSR = "ENABLED";
parameter RESETMODE = "SYNC";
parameter ASYNC_RESET_RELEASE = "SYNC";
parameter INIT_DATA = "STATIC";
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;
input DI17;
input DI16;
input DI15;
input DI14;
input DI13;
input DI12;
input DI11;
input DI10;
input DI9;
input DI8;
input DI7;
input DI6;
input DI5;
input DI4;
input DI3;
input DI2;
input DI1;
input DI0;
input ADW8;
input ADW7;
input ADW6;
input ADW5;
input ADW4;
input ADW3;
input ADW2;
input ADW1;
input ADW0;
input BE1;
input BE0;
input CEW;
input CLKW;
input CSW2;
input CSW1;
input CSW0;
input ADR12;
input ADR11;
input ADR10;
input ADR9;
input ADR8;
input ADR7;
input ADR6;
input ADR5;
input ADR4;
input ADR3;
input ADR2;
input ADR1;
input ADR0;
input CER;
input OCER;
input CLKR;
input CSR2;
input CSR1;
input CSR0;
input RST;
output DO17;
output DO16;
output DO15;
output DO14;
output DO13;
output DO12;
output DO11;
output DO10;
output DO9;
output DO8;
output DO7;
output DO6;
output DO5;
output DO4;
output DO3;
output DO2;
output DO1;
output DO0;
endmodule
(* blackbox *)
module SP8KC (...);
parameter DATA_WIDTH = 9;
parameter REGMODE = "NOREG";
parameter CSDECODE = "0b000";
parameter WRITEMODE = "NORMAL";
parameter GSR = "ENABLED";
parameter RESETMODE = "SYNC";
parameter ASYNC_RESET_RELEASE = "SYNC";
parameter INIT_DATA = "STATIC";
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;
input DI8;
input DI7;
input DI6;
input DI5;
input DI4;
input DI3;
input DI2;
input DI1;
input DI0;
input AD12;
input AD11;
input AD10;
input AD9;
input AD8;
input AD7;
input AD6;
input AD5;
input AD4;
input AD3;
input AD2;
input AD1;
input AD0;
input CE;
input OCE;
input CLK;
input WE;
input CS2;
input CS1;
input CS0;
input RST;
output DO8;
output DO7;
output DO6;
output DO5;
output DO4;
output DO3;
output DO2;
output DO1;
output DO0;
endmodule
(* blackbox *)
module FIFO8KB (...);
parameter DATA_WIDTH_W = 18;
parameter DATA_WIDTH_R = 18;
parameter REGMODE = "NOREG";
parameter RESETMODE = "ASYNC";
parameter ASYNC_RESET_RELEASE = "SYNC";
parameter CSDECODE_W = "0b00";
parameter CSDECODE_R = "0b00";
parameter AEPOINTER = "0b00000000000000";
parameter AEPOINTER1 = "0b00000000000000";
parameter AFPOINTER = "0b00000000000000";
parameter AFPOINTER1 = "0b00000000000000";
parameter FULLPOINTER = "0b00000000000000";
parameter FULLPOINTER1 = "0b00000000000000";
parameter GSR = "DISABLED";
input DI0;
input DI1;
input DI2;
input DI3;
input DI4;
input DI5;
input DI6;
input DI7;
input DI8;
input DI9;
input DI10;
input DI11;
input DI12;
input DI13;
input DI14;
input DI15;
input DI16;
input DI17;
input CSW0;
input CSW1;
input CSR0;
input CSR1;
input WE;
input RE;
input ORE;
input CLKW;
input CLKR;
input RST;
input RPRST;
input FULLI;
input EMPTYI;
output DO0;
output DO1;
output DO2;
output DO3;
output DO4;
output DO5;
output DO6;
output DO7;
output DO8;
output DO9;
output DO10;
output DO11;
output DO12;
output DO13;
output DO14;
output DO15;
output DO16;
output DO17;
output EF;
output AEF;
output AFF;
output FF;
endmodule
(* blackbox *)
module DCMA (...);
input CLK0;
input CLK1;
input SEL;
output DCMOUT;
endmodule
(* blackbox *)
module DCCA (...);
input CLKI;
input CE;
output CLKO;
endmodule
(* blackbox *)
module EHXPLLJ (...);
parameter CLKI_DIV = 1;
parameter CLKFB_DIV = 1;
parameter CLKOP_DIV = 8;
@ -122,172 +471,65 @@ module EHXPLLJ (
parameter DCRST_ENA = "DISABLED";
parameter DDRST_ENA = "DISABLED";
parameter INTFB_WAKE = "DISABLED";
input CLKI;
input CLKFB;
input PHASESEL1;
input PHASESEL0;
input PHASEDIR;
input PHASESTEP;
input LOADREG;
input STDBY;
input PLLWAKESYNC;
input RST;
input RESETM;
input RESETC;
input RESETD;
input ENCLKOP;
input ENCLKOS;
input ENCLKOS2;
input ENCLKOS3;
input PLLCLK;
input PLLRST;
input PLLSTB;
input PLLWE;
input PLLDATI7;
input PLLDATI6;
input PLLDATI5;
input PLLDATI4;
input PLLDATI3;
input PLLDATI2;
input PLLDATI1;
input PLLDATI0;
input PLLADDR4;
input PLLADDR3;
input PLLADDR2;
input PLLADDR1;
input PLLADDR0;
output CLKOP;
output CLKOS;
output CLKOS2;
output CLKOS3;
output LOCK;
output INTLOCK;
output REFCLK;
output PLLDATO7;
output PLLDATO6;
output PLLDATO5;
output PLLDATO4;
output PLLDATO3;
output PLLDATO2;
output PLLDATO1;
output PLLDATO0;
output PLLACK;
output DPHSRC;
output CLKINTFB;
endmodule
(* blackbox *)
module OSCH #(
parameter NOM_FREQ = "2.08"
) (
input STDBY,
output OSC,
output SEDSTDBY
);
module OSCH (...);
parameter NOM_FREQ = "2.08";
input STDBY;
output OSC;
output SEDSTDBY;
endmodule
(* blackbox *)
module DCCA (
input CLKI,
input CE,
output CLKO
);
endmodule
(* blackbox *)
module DCMA (
input CLK0,
input CLK1,
input SEL,
output DCMOUT
);
endmodule
(* blackbox *)
module PDPW8KC (
input DI17, DI16, DI15, DI14, DI13, DI12, DI11, DI10, DI9, DI8, DI7, DI6, DI5, DI4, DI3, DI2, DI1, DI0,
input ADW8, ADW7, ADW6, ADW5, ADW4, ADW3, ADW2, ADW1, ADW0,
input BE1, BE0,
input CEW, CLKW, CSW2, CSW1, CSW0,
input ADR12, ADR11, ADR10, ADR9, ADR8, ADR7, ADR6, ADR5, ADR4, ADR3, ADR2, ADR1, ADR0,
input CER, OCER, CLKR, CSR2, CSR1, CSR0, RST,
output DO17, DO16, DO15, DO14, DO13, DO12, DO11, DO10, DO9, DO8, DO7, DO6, DO5, DO4, DO3, DO2, DO1, DO0
);
parameter DATA_WIDTH_W = 18;
parameter DATA_WIDTH_R = 9;
parameter GSR = "ENABLED";
parameter REGMODE = "NOREG";
parameter RESETMODE = "SYNC";
parameter ASYNC_RESET_RELEASE = "SYNC";
parameter CSDECODE_W = "0b000";
parameter CSDECODE_R = "0b000";
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 INIT_DATA = "STATIC";
endmodule
(* blackbox *)
module SP8KC (
input DI8, DI7, DI6, DI5, DI4, DI3, DI2, DI1, DI0,
input AD12, AD11, AD10, AD9, AD8, AD7, AD6, AD5, AD4, AD3, AD2, AD1, AD0,
input CE, OCE, CLK, WE, CS2, CS1, CS0, RST,
output DO8, DO7, DO6, DO5, DO4, DO3, DO2, DO1, DO0
);
parameter DATA_WIDTH = 9;
parameter GSR = "ENABLED";
parameter REGMODE = "NOREG";
parameter RESETMODE = "SYNC";
parameter ASYNC_RESET_RELEASE = "SYNC";
parameter CSDECODE = "0b000";
parameter WRITEMODE = "NORMAL";
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 INIT_DATA = "STATIC";
endmodule
(* blackbox *)
module FIFO8KB (
input DI0, DI1, DI2, DI3, DI4, DI5, DI6, DI7, DI8, DI9, DI10, DI11, DI12, DI13, DI14, DI15, DI16, DI17,
input CSW0, CSW1, CSR0, CSR1, WE, RE, ORE, CLKW, CLKR, RST, RPRST, FULLI, EMPTYI,
output DO0, DO1, DO2, DO3, DO4, DO5, DO6, DO7, DO8, DO9, DO10, DO11, DO12, DO13, DO14, DO15, DO16, DO17,
input EF, AEF, AFF, FF
);
parameter DATA_WIDTH_W = 18;
parameter DATA_WIDTH_R = 18;
parameter GSR = "DISABLED";
parameter REGMODE = "NOREG";
parameter RESETMODE = "ASYNC";
parameter ASYNC_RESET_RELEASE = "SYNC";
parameter CSDECODE_W = "0b00";
parameter CSDECODE_R = "0b00";
parameter AEPOINTER = "0b00000000000000";
parameter AEPOINTER1 = "0b00000000000000";
parameter AFPOINTER = "0b00000000000000";
parameter AFPOINTER1 = "0b00000000000000";
parameter FULLPOINTER = "0b00000000000000";
parameter FULLPOINTER1 = "0b00000000000000";
endmodule

View File

@ -1,81 +1,430 @@
(* blackbox *)
module DP8KC(
input DIA8, DIA7, DIA6, DIA5, DIA4, DIA3, DIA2, DIA1, DIA0,
input ADA12, ADA11, ADA10, ADA9, ADA8, ADA7, ADA6, ADA5, ADA4, ADA3, ADA2, ADA1, ADA0,
input CEA, OCEA, CLKA, WEA, RSTA,
input CSA2, CSA1, CSA0,
output DOA8, DOA7, DOA6, DOA5, DOA4, DOA3, DOA2, DOA1, DOA0,
// Created by cells_xtra.py from Lattice models
input DIB8, DIB7, DIB6, DIB5, DIB4, DIB3, DIB2, DIB1, DIB0,
input ADB12, ADB11, ADB10, ADB9, ADB8, ADB7, ADB6, ADB5, ADB4, ADB3, ADB2, ADB1, ADB0,
input CEB, OCEB, CLKB, WEB, RSTB,
input CSB2, CSB1, CSB0,
output DOB8, DOB7, DOB6, DOB5, DOB4, DOB3, DOB2, DOB1, DOB0
);
parameter DATA_WIDTH_A = 9;
parameter DATA_WIDTH_B = 9;
(* blackbox *) (* keep *)
module GSR (...);
input GSR;
endmodule
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 GSR = "ENABLED";
parameter INIT_DATA = "STATIC";
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;
(* blackbox *) (* keep *)
module SGSR (...);
input GSR;
input CLK;
endmodule
(* blackbox *)
module EHXPLLJ (
input CLKI, CLKFB,
input PHASESEL1, PHASESEL0, PHASEDIR, PHASESTEP,
input LOADREG, STDBY, PLLWAKESYNC, RST, RESETM, RESETC, RESETD,
input ENCLKOP, ENCLKOS, ENCLKOS2, ENCLKOS3, PLLCLK, PLLRST, PLLSTB, PLLWE,
input PLLDATI7, PLLDATI6, PLLDATI5, PLLDATI4, PLLDATI3, PLLDATI2, PLLDATI1, PLLDATI0,
input PLLADDR4, PLLADDR3, PLLADDR2, PLLADDR1, PLLADDR0,
output CLKOP, CLKOS, CLKOS2, CLKOS3, LOCK, INTLOCK, REFCLK,
output PLLDATO7, PLLDATO6, PLLDATO5, PLLDATO4, PLLDATO3, PLLDATO2, PLLDATO1, PLLDATO0, PLLACK,
output DPHSRC, CLKINTFB
);
module DP8KC (...);
parameter DATA_WIDTH_A = 9;
parameter DATA_WIDTH_B = 9;
parameter REGMODE_A = "NOREG";
parameter REGMODE_B = "NOREG";
parameter CSDECODE_A = "0b000";
parameter CSDECODE_B = "0b000";
parameter WRITEMODE_A = "NORMAL";
parameter WRITEMODE_B = "NORMAL";
parameter GSR = "ENABLED";
parameter RESETMODE = "SYNC";
parameter ASYNC_RESET_RELEASE = "SYNC";
parameter INIT_DATA = "STATIC";
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;
input DIA8;
input DIA7;
input DIA6;
input DIA5;
input DIA4;
input DIA3;
input DIA2;
input DIA1;
input DIA0;
input ADA12;
input ADA11;
input ADA10;
input ADA9;
input ADA8;
input ADA7;
input ADA6;
input ADA5;
input ADA4;
input ADA3;
input ADA2;
input ADA1;
input ADA0;
input CEA;
input OCEA;
input CLKA;
input WEA;
input CSA2;
input CSA1;
input CSA0;
input RSTA;
input DIB8;
input DIB7;
input DIB6;
input DIB5;
input DIB4;
input DIB3;
input DIB2;
input DIB1;
input DIB0;
input ADB12;
input ADB11;
input ADB10;
input ADB9;
input ADB8;
input ADB7;
input ADB6;
input ADB5;
input ADB4;
input ADB3;
input ADB2;
input ADB1;
input ADB0;
input CEB;
input OCEB;
input CLKB;
input WEB;
input CSB2;
input CSB1;
input CSB0;
input RSTB;
output DOA8;
output DOA7;
output DOA6;
output DOA5;
output DOA4;
output DOA3;
output DOA2;
output DOA1;
output DOA0;
output DOB8;
output DOB7;
output DOB6;
output DOB5;
output DOB4;
output DOB3;
output DOB2;
output DOB1;
output DOB0;
endmodule
(* blackbox *)
module PDPW8KC (...);
parameter DATA_WIDTH_W = 18;
parameter DATA_WIDTH_R = 9;
parameter REGMODE = "NOREG";
parameter CSDECODE_W = "0b000";
parameter CSDECODE_R = "0b000";
parameter GSR = "ENABLED";
parameter RESETMODE = "SYNC";
parameter ASYNC_RESET_RELEASE = "SYNC";
parameter INIT_DATA = "STATIC";
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;
input DI17;
input DI16;
input DI15;
input DI14;
input DI13;
input DI12;
input DI11;
input DI10;
input DI9;
input DI8;
input DI7;
input DI6;
input DI5;
input DI4;
input DI3;
input DI2;
input DI1;
input DI0;
input ADW8;
input ADW7;
input ADW6;
input ADW5;
input ADW4;
input ADW3;
input ADW2;
input ADW1;
input ADW0;
input BE1;
input BE0;
input CEW;
input CLKW;
input CSW2;
input CSW1;
input CSW0;
input ADR12;
input ADR11;
input ADR10;
input ADR9;
input ADR8;
input ADR7;
input ADR6;
input ADR5;
input ADR4;
input ADR3;
input ADR2;
input ADR1;
input ADR0;
input CER;
input OCER;
input CLKR;
input CSR2;
input CSR1;
input CSR0;
input RST;
output DO17;
output DO16;
output DO15;
output DO14;
output DO13;
output DO12;
output DO11;
output DO10;
output DO9;
output DO8;
output DO7;
output DO6;
output DO5;
output DO4;
output DO3;
output DO2;
output DO1;
output DO0;
endmodule
(* blackbox *)
module SP8KC (...);
parameter DATA_WIDTH = 9;
parameter REGMODE = "NOREG";
parameter CSDECODE = "0b000";
parameter WRITEMODE = "NORMAL";
parameter GSR = "ENABLED";
parameter RESETMODE = "SYNC";
parameter ASYNC_RESET_RELEASE = "SYNC";
parameter INIT_DATA = "STATIC";
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;
input DI8;
input DI7;
input DI6;
input DI5;
input DI4;
input DI3;
input DI2;
input DI1;
input DI0;
input AD12;
input AD11;
input AD10;
input AD9;
input AD8;
input AD7;
input AD6;
input AD5;
input AD4;
input AD3;
input AD2;
input AD1;
input AD0;
input CE;
input OCE;
input CLK;
input WE;
input CS2;
input CS1;
input CS0;
input RST;
output DO8;
output DO7;
output DO6;
output DO5;
output DO4;
output DO3;
output DO2;
output DO1;
output DO0;
endmodule
(* blackbox *)
module FIFO8KB (...);
parameter DATA_WIDTH_W = 18;
parameter DATA_WIDTH_R = 18;
parameter REGMODE = "NOREG";
parameter RESETMODE = "ASYNC";
parameter ASYNC_RESET_RELEASE = "SYNC";
parameter CSDECODE_W = "0b00";
parameter CSDECODE_R = "0b00";
parameter AEPOINTER = "0b00000000000000";
parameter AEPOINTER1 = "0b00000000000000";
parameter AFPOINTER = "0b00000000000000";
parameter AFPOINTER1 = "0b00000000000000";
parameter FULLPOINTER = "0b00000000000000";
parameter FULLPOINTER1 = "0b00000000000000";
parameter GSR = "DISABLED";
input DI0;
input DI1;
input DI2;
input DI3;
input DI4;
input DI5;
input DI6;
input DI7;
input DI8;
input DI9;
input DI10;
input DI11;
input DI12;
input DI13;
input DI14;
input DI15;
input DI16;
input DI17;
input CSW0;
input CSW1;
input CSR0;
input CSR1;
input WE;
input RE;
input ORE;
input CLKW;
input CLKR;
input RST;
input RPRST;
input FULLI;
input EMPTYI;
output DO0;
output DO1;
output DO2;
output DO3;
output DO4;
output DO5;
output DO6;
output DO7;
output DO8;
output DO9;
output DO10;
output DO11;
output DO12;
output DO13;
output DO14;
output DO15;
output DO16;
output DO17;
output EF;
output AEF;
output AFF;
output FF;
endmodule
(* blackbox *)
module DCMA (...);
input CLK0;
input CLK1;
input SEL;
output DCMOUT;
endmodule
(* blackbox *)
module DCCA (...);
input CLKI;
input CE;
output CLKO;
endmodule
(* blackbox *)
module EHXPLLJ (...);
parameter CLKI_DIV = 1;
parameter CLKFB_DIV = 1;
parameter CLKOP_DIV = 8;
@ -122,172 +471,66 @@ module EHXPLLJ (
parameter DCRST_ENA = "DISABLED";
parameter DDRST_ENA = "DISABLED";
parameter INTFB_WAKE = "DISABLED";
input CLKI;
input CLKFB;
input PHASESEL1;
input PHASESEL0;
input PHASEDIR;
input PHASESTEP;
input LOADREG;
input STDBY;
input PLLWAKESYNC;
input RST;
input RESETM;
input RESETC;
input RESETD;
input ENCLKOP;
input ENCLKOS;
input ENCLKOS2;
input ENCLKOS3;
input PLLCLK;
input PLLRST;
input PLLSTB;
input PLLWE;
input PLLDATI7;
input PLLDATI6;
input PLLDATI5;
input PLLDATI4;
input PLLDATI3;
input PLLDATI2;
input PLLDATI1;
input PLLDATI0;
input PLLADDR4;
input PLLADDR3;
input PLLADDR2;
input PLLADDR1;
input PLLADDR0;
output CLKOP;
output CLKOS;
output CLKOS2;
output CLKOS3;
output LOCK;
output INTLOCK;
output REFCLK;
output PLLDATO7;
output PLLDATO6;
output PLLDATO5;
output PLLDATO4;
output PLLDATO3;
output PLLDATO2;
output PLLDATO1;
output PLLDATO0;
output PLLACK;
output DPHSRC;
output CLKINTFB;
endmodule
(* blackbox *)
module OSCH #(
parameter NOM_FREQ = "2.08"
) (
input STDBY,
output OSC,
output SEDSTDBY
);
module OSCJ (...);
parameter NOM_FREQ = "2.08";
input STDBY;
output OSC;
output SEDSTDBY;
output OSCESB;
endmodule
(* blackbox *)
module DCCA (
input CLKI,
input CE,
output CLKO
);
endmodule
(* blackbox *)
module DCMA (
input CLK0,
input CLK1,
input SEL,
output DCMOUT
);
endmodule
(* blackbox *)
module PDPW8KC (
input DI17, DI16, DI15, DI14, DI13, DI12, DI11, DI10, DI9, DI8, DI7, DI6, DI5, DI4, DI3, DI2, DI1, DI0,
input ADW8, ADW7, ADW6, ADW5, ADW4, ADW3, ADW2, ADW1, ADW0,
input BE1, BE0,
input CEW, CLKW, CSW2, CSW1, CSW0,
input ADR12, ADR11, ADR10, ADR9, ADR8, ADR7, ADR6, ADR5, ADR4, ADR3, ADR2, ADR1, ADR0,
input CER, OCER, CLKR, CSR2, CSR1, CSR0, RST,
output DO17, DO16, DO15, DO14, DO13, DO12, DO11, DO10, DO9, DO8, DO7, DO6, DO5, DO4, DO3, DO2, DO1, DO0
);
parameter DATA_WIDTH_W = 18;
parameter DATA_WIDTH_R = 9;
parameter GSR = "ENABLED";
parameter REGMODE = "NOREG";
parameter RESETMODE = "SYNC";
parameter ASYNC_RESET_RELEASE = "SYNC";
parameter CSDECODE_W = "0b000";
parameter CSDECODE_R = "0b000";
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 INIT_DATA = "STATIC";
endmodule
(* blackbox *)
module SP8KC (
input DI8, DI7, DI6, DI5, DI4, DI3, DI2, DI1, DI0,
input AD12, AD11, AD10, AD9, AD8, AD7, AD6, AD5, AD4, AD3, AD2, AD1, AD0,
input CE, OCE, CLK, WE, CS2, CS1, CS0, RST,
output DO8, DO7, DO6, DO5, DO4, DO3, DO2, DO1, DO0
);
parameter DATA_WIDTH = 9;
parameter GSR = "ENABLED";
parameter REGMODE = "NOREG";
parameter RESETMODE = "SYNC";
parameter ASYNC_RESET_RELEASE = "SYNC";
parameter CSDECODE = "0b000";
parameter WRITEMODE = "NORMAL";
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 INIT_DATA = "STATIC";
endmodule
(* blackbox *)
module FIFO8KB (
input DI0, DI1, DI2, DI3, DI4, DI5, DI6, DI7, DI8, DI9, DI10, DI11, DI12, DI13, DI14, DI15, DI16, DI17,
input CSW0, CSW1, CSR0, CSR1, WE, RE, ORE, CLKW, CLKR, RST, RPRST, FULLI, EMPTYI,
output DO0, DO1, DO2, DO3, DO4, DO5, DO6, DO7, DO8, DO9, DO10, DO11, DO12, DO13, DO14, DO15, DO16, DO17,
input EF, AEF, AFF, FF
);
parameter DATA_WIDTH_W = 18;
parameter DATA_WIDTH_R = 18;
parameter GSR = "DISABLED";
parameter REGMODE = "NOREG";
parameter RESETMODE = "ASYNC";
parameter ASYNC_RESET_RELEASE = "SYNC";
parameter CSDECODE_W = "0b00";
parameter CSDECODE_R = "0b00";
parameter AEPOINTER = "0b00000000000000";
parameter AEPOINTER1 = "0b00000000000000";
parameter AFPOINTER = "0b00000000000000";
parameter AFPOINTER1 = "0b00000000000000";
parameter FULLPOINTER = "0b00000000000000";
parameter FULLPOINTER1 = "0b00000000000000";
endmodule

View File

@ -0,0 +1,854 @@
#!/usr/bin/env python3
# Based on Xilinx cells_xtra.py; modified for Lattice's structure
from argparse import ArgumentParser
from io import StringIO
from enum import Enum, auto
import os.path
import sys
import re
class Cell:
def __init__(self, name, keep=False, port_attrs={}):
self.name = name
self.keep = keep
self.port_attrs = port_attrs
self.found = False
class State(Enum):
OUTSIDE = auto()
IN_MODULE = auto()
IN_OTHER_MODULE = auto()
IN_FUNCTION = auto()
IN_TASK = auto()
devices = [
("cells_bb_ecp5.v", "ecp5u", [
#Cell("AND2"),
#Cell("AND3"),
#Cell("AND4"),
#Cell("AND5"),
#Cell("BB"),
#Cell("BBPD"),
#Cell("BBPU"),
#Cell("CCU2C"),
#Cell("FD1P3AX"),
#Cell("FD1P3AY"),
#Cell("FD1P3BX"),
#Cell("FD1P3DX"),
#Cell("FD1P3IX"),
#Cell("FD1P3JX"),
#Cell("FD1S3AX"),
#Cell("FD1S3AY"),
#Cell("FD1S3BX"),
#Cell("FD1S3DX"),
#Cell("FD1S3IX"),
#Cell("FD1S3JX"),
#Cell("FL1P3AY"),
#Cell("FL1P3AZ"),
#Cell("FL1P3BX"),
#Cell("FL1P3DX"),
#Cell("FL1P3IY"),
#Cell("FL1P3JY"),
#Cell("FL1S3AX"),
#Cell("FL1S3AY"),
Cell("GSR", True),
#Cell("IB"),
#Cell("IBPD"),
#Cell("IBPU"),
#Cell("IFS1P3BX"),
#Cell("IFS1P3DX"),
#Cell("IFS1P3IX"),
#Cell("IFS1P3JX"),
#Cell("IFS1S1B"),
#Cell("IFS1S1D"),
#Cell("IFS1S1I"),
#Cell("IFS1S1J"),
#Cell("ILVDS"),
#Cell("INV"),
#Cell("L6MUX21"),
#Cell("LUT4"),
#Cell("LUT5"),
#Cell("LUT6"),
#Cell("LUT7"),
#Cell("LUT8"),
#Cell("MUX161"),
#Cell("MUX21"),
#Cell("MUX321"),
#Cell("MUX41"),
#Cell("MUX81"),
#Cell("ND2"),
#Cell("ND3"),
#Cell("ND4"),
#Cell("ND5"),
#Cell("NR2"),
#Cell("NR3"),
#Cell("NR4"),
#Cell("NR5"),
#Cell("OB"),
#Cell("OBCO"),
#Cell("OBZ"),
#Cell("OBZPU"),
#Cell("OFS1P3BX"),
#Cell("OFS1P3DX"),
#Cell("OFS1P3IX"),
#Cell("OFS1P3JX"),
#Cell("OLVDS"),
#Cell("OR2"),
#Cell("OR3"),
#Cell("OR4"),
#Cell("OR5"),
#Cell("PFUMX"),
Cell("PUR"),
#Cell("ROM128X1A"),
#Cell("ROM16X1A"),
#Cell("ROM256X1A"),
#Cell("ROM32X1A"),
#Cell("ROM64X1A"),
Cell("SGSR", True),
#Cell("VHI"),
#Cell("VLO"),
#Cell("XNOR2"),
#Cell("XNOR3"),
#Cell("XNOR4"),
#Cell("XNOR5"),
#Cell("XOR11"),
#Cell("XOR2"),
#Cell("XOR21"),
#Cell("XOR3"),
#Cell("XOR4"),
#Cell("XOR5"),
Cell("DP16KD"),
Cell("PDPW16KD"),
#Cell("DPR16X4C"),
#Cell("SPR16X4C"),
#Cell("LVDSOB"),
#Cell("IMIPI"),
#Cell("MULT9X9C"),
#Cell("MULT9X9D"),
#Cell("MULT18X18C"),
Cell("MULT18X18D"),
#Cell("ALU24A"),
#Cell("ALU54A"),
#Cell("ALU24B"),
Cell("ALU54B"),
#Cell("PRADD9A"),
#Cell("PRADD18A"),
#Cell("BCINRD"),
#Cell("BCLVDSOB"),
#Cell("INRDB"),
Cell("CLKDIVF"),
Cell("PCSCLKDIV"),
Cell("DCSC"),
Cell("DCCA"),
Cell("ECLKSYNCB"),
Cell("ECLKBRIDGECS"),
#Cell("PLLREFCS"),
Cell("DELAYF"),
Cell("DELAYG"),
#Cell("START"),
Cell("USRMCLK", True),
Cell("DQSBUFM"),
Cell("DDRDLLA"),
Cell("DLLDELD"),
Cell("IDDRX1F"),
Cell("IDDRX2F"),
Cell("IDDR71B"),
Cell("IDDRX2DQA"),
Cell("ODDRX1F"),
Cell("ODDRX2F"),
Cell("ODDR71B"),
Cell("OSHX2A"),
Cell("TSHX2DQA"),
Cell("TSHX2DQSA"),
Cell("ODDRX2DQA"),
Cell("ODDRX2DQSB"),
Cell("EHXPLLL"),
Cell("DTR"),
Cell("OSCG"),
Cell("EXTREFB"),
Cell("JTAGG", True, port_attrs={'TCK': ['iopad_external_pin'], 'TMS': ['iopad_external_pin'], 'TDO': ['iopad_external_pin'], 'TDI': ['iopad_external_pin']}),
#Cell("SEDGA"),
Cell("DCUA", True, port_attrs={'CH0_HDINP': ['iopad_external_pin'], 'CH1_HDINP': ['iopad_external_pin'], 'CH0_HDINN': ['iopad_external_pin'], 'CH1_HDINN': ['iopad_external_pin']}),
]),
("cells_bb_xo2.v", "machxo2", [
#Cell("AGEB2"),
#Cell("ALEB2"),
#Cell("AND2"),
#Cell("AND3"),
#Cell("AND4"),
#Cell("AND5"),
#Cell("ANEB2"),
#Cell("BB"),
#Cell("BBPD"),
#Cell("BBPU"),
#Cell("BBW"),
#Cell("CB2"),
#Cell("CD2"),
#Cell("CU2"),
#Cell("FADD2B"),
#Cell("FADSU2"),
#Cell("FD1P3AX"),
#Cell("FD1P3AY"),
#Cell("FD1P3BX"),
#Cell("FD1P3DX"),
#Cell("FD1P3IX"),
#Cell("FD1P3JX"),
#Cell("FD1S1A"),
#Cell("FD1S1AY"),
#Cell("FD1S1B"),
#Cell("FD1S1D"),
#Cell("FD1S1I"),
#Cell("FD1S1J"),
#Cell("FD1S3AX"),
#Cell("FD1S3AY"),
#Cell("FD1S3BX"),
#Cell("FD1S3DX"),
#Cell("FD1S3IX"),
#Cell("FD1S3JX"),
#Cell("FL1P3AY"),
#Cell("FL1P3AZ"),
#Cell("FL1P3BX"),
#Cell("FL1P3DX"),
#Cell("FL1P3IY"),
#Cell("FL1P3JY"),
#Cell("FL1S1A"),
#Cell("FL1S1AY"),
#Cell("FL1S1B"),
#Cell("FL1S1D"),
#Cell("FL1S1I"),
#Cell("FL1S1J"),
#Cell("FL1S3AX"),
#Cell("FL1S3AY"),
#Cell("FSUB2B"),
Cell("GSR", True),
#Cell("IB"),
#Cell("IBPD"),
#Cell("IBPU"),
#Cell("IFS1P3BX"),
#Cell("IFS1P3DX"),
#Cell("IFS1P3IX"),
#Cell("IFS1P3JX"),
#Cell("ILVDS"),
#Cell("INV"),
#Cell("L6MUX21"),
#Cell("LB2P3AX"),
#Cell("LB2P3AY"),
#Cell("LB2P3BX"),
#Cell("LB2P3DX"),
#Cell("LB2P3IX"),
#Cell("LB2P3JX"),
#Cell("LD2P3AX"),
#Cell("LD2P3AY"),
#Cell("LD2P3BX"),
#Cell("LD2P3DX"),
#Cell("LD2P3IX"),
#Cell("LD2P3JX"),
#Cell("LU2P3AX"),
#Cell("LU2P3AY"),
#Cell("LU2P3BX"),
#Cell("LU2P3DX"),
#Cell("LU2P3IX"),
#Cell("LU2P3JX"),
#Cell("MULT2"),
#Cell("MUX161"),
#Cell("MUX21"),
#Cell("MUX321"),
#Cell("MUX41"),
#Cell("MUX81"),
#Cell("ND2"),
#Cell("ND3"),
#Cell("ND4"),
#Cell("ND5"),
#Cell("NR2"),
#Cell("NR3"),
#Cell("NR4"),
#Cell("NR5"),
#Cell("OB"),
#Cell("OBCO"),
#Cell("OBZ"),
#Cell("OBZPU"),
#Cell("OFS1P3BX"),
#Cell("OFS1P3DX"),
#Cell("OFS1P3IX"),
#Cell("OFS1P3JX"),
#Cell("OLVDS"),
#Cell("OR2"),
#Cell("OR3"),
#Cell("OR4"),
#Cell("OR5"),
#Cell("LUT4"),
#Cell("LUT5"),
#Cell("LUT6"),
#Cell("LUT7"),
#Cell("LUT8"),
#Cell("PFUMX"),
#Cell("PUR"),
#Cell("ROM128X1A"),
#Cell("ROM16X1A"),
#Cell("ROM256X1A"),
#Cell("ROM32X1A"),
#Cell("ROM64X1A"),
#Cell("CCU2D"),
#Cell("VHI"),
#Cell("VLO"),
#Cell("XNOR2"),
#Cell("XNOR3"),
#Cell("XNOR4"),
#Cell("XNOR5"),
#Cell("XOR11"),
#Cell("XOR2"),
#Cell("XOR21"),
#Cell("XOR3"),
#Cell("XOR4"),
#Cell("XOR5"),
#Cell("IFS1S1B"),
#Cell("IFS1S1D"),
#Cell("IFS1S1I"),
#Cell("IFS1S1J"),
#Cell("DPR16X4C"),
#Cell("SPR16X4C"),
Cell("SGSR", True),
Cell("DP8KC"),
Cell("PDPW8KC"),
Cell("SP8KC"),
Cell("FIFO8KB"),
#Cell("CLKDIVC"),
Cell("DCMA"),
#Cell("ECLKSYNCA"),
#Cell("ECLKBRIDGECS"),
Cell("DCCA"),
#Cell("JTAGF"),
#Cell("START"),
#Cell("SEDFA"),
#Cell("SEDFB"),
#Cell("IDDRXE"),
#Cell("IDDRX2E"),
#Cell("IDDRX4B"),
#Cell("IDDRDQSX1A"),
#Cell("IDDRX71A"),
#Cell("ODDRXE"),
#Cell("ODDRX2E"),
#Cell("ODDRX4B"),
#Cell("ODDRDQSX1A"),
#Cell("ODDRX71A"),
#Cell("TDDRA"),
#Cell("DQSBUFH"),
#Cell("DQSDLLC"),
#Cell("DELAYE"),
#Cell("DELAYD"),
#Cell("DLLDELC"),
#Cell("CLKFBBUFA"),
#Cell("PCNTR"),
#Cell("BCINRD"),
#Cell("BCLVDSO"),
#Cell("INRDB"),
#Cell("LVDSOB"),
#Cell("PG"),
Cell("EHXPLLJ"),
#Cell("PLLREFCS"),
Cell("OSCH"),
#Cell("EFB"),
#Cell("TSALL"),
]),
("cells_bb_xo3.v", "machxo3lf", [
#Cell("AGEB2"),
#Cell("ALEB2"),
#Cell("AND2"),
#Cell("AND3"),
#Cell("AND4"),
#Cell("AND5"),
#Cell("ANEB2"),
#Cell("BB"),
#Cell("BBPD"),
#Cell("BBPU"),
#Cell("BBW"),
#Cell("CB2"),
#Cell("CD2"),
#Cell("CU2"),
#Cell("FADD2B"),
#Cell("FADSU2"),
#Cell("FD1P3AX"),
#Cell("FD1P3AY"),
#Cell("FD1P3BX"),
#Cell("FD1P3DX"),
#Cell("FD1P3IX"),
#Cell("FD1P3JX"),
#Cell("FD1S1A"),
#Cell("FD1S1AY"),
#Cell("FD1S1B"),
#Cell("FD1S1D"),
#Cell("FD1S1I"),
#Cell("FD1S1J"),
#Cell("FD1S3AX"),
#Cell("FD1S3AY"),
#Cell("FD1S3BX"),
#Cell("FD1S3DX"),
#Cell("FD1S3IX"),
#Cell("FD1S3JX"),
#Cell("FL1P3AY"),
#Cell("FL1P3AZ"),
#Cell("FL1P3BX"),
#Cell("FL1P3DX"),
#Cell("FL1P3IY"),
#Cell("FL1P3JY"),
#Cell("FL1S1A"),
#Cell("FL1S1AY"),
#Cell("FL1S1B"),
#Cell("FL1S1D"),
#Cell("FL1S1I"),
#Cell("FL1S1J"),
#Cell("FL1S3AX"),
#Cell("FL1S3AY"),
#Cell("FSUB2B"),
Cell("GSR", True),
#Cell("IB"),
#Cell("IBPD"),
#Cell("IBPU"),
#Cell("IFS1P3BX"),
#Cell("IFS1P3DX"),
#Cell("IFS1P3IX"),
#Cell("IFS1P3JX"),
#Cell("ILVDS"),
#Cell("INV"),
#Cell("L6MUX21"),
#Cell("LB2P3AX"),
#Cell("LB2P3AY"),
#Cell("LB2P3BX"),
#Cell("LB2P3DX"),
#Cell("LB2P3IX"),
#Cell("LB2P3JX"),
#Cell("LD2P3AX"),
#Cell("LD2P3AY"),
#Cell("LD2P3BX"),
#Cell("LD2P3DX"),
#Cell("LD2P3IX"),
#Cell("LD2P3JX"),
#Cell("LU2P3AX"),
#Cell("LU2P3AY"),
#Cell("LU2P3BX"),
#Cell("LU2P3DX"),
#Cell("LU2P3IX"),
#Cell("LU2P3JX"),
#Cell("MULT2"),
#Cell("MUX161"),
#Cell("MUX21"),
#Cell("MUX321"),
#Cell("MUX41"),
#Cell("MUX81"),
#Cell("ND2"),
#Cell("ND3"),
#Cell("ND4"),
#Cell("ND5"),
#Cell("NR2"),
#Cell("NR3"),
#Cell("NR4"),
#Cell("NR5"),
#Cell("OB"),
#Cell("OBCO"),
#Cell("OBZ"),
#Cell("OBZPU"),
#Cell("OFS1P3BX"),
#Cell("OFS1P3DX"),
#Cell("OFS1P3IX"),
#Cell("OFS1P3JX"),
#Cell("OLVDS"),
#Cell("OR2"),
#Cell("OR3"),
#Cell("OR4"),
#Cell("OR5"),
#Cell("LUT4"),
#Cell("LUT5"),
#Cell("LUT6"),
#Cell("LUT7"),
#Cell("LUT8"),
#Cell("PFUMX"),
#Cell("PUR"),
#Cell("ROM128X1A"),
#Cell("ROM16X1A"),
#Cell("ROM256X1A"),
#Cell("ROM32X1A"),
#Cell("ROM64X1A"),
#Cell("CCU2D"),
#Cell("VHI"),
#Cell("VLO"),
#Cell("XNOR2"),
#Cell("XNOR3"),
#Cell("XNOR4"),
#Cell("XNOR5"),
#Cell("XOR11"),
#Cell("XOR2"),
#Cell("XOR21"),
#Cell("XOR3"),
#Cell("XOR4"),
#Cell("XOR5"),
#Cell("IFS1S1B"),
#Cell("IFS1S1D"),
#Cell("IFS1S1I"),
#Cell("IFS1S1J"),
#Cell("DPR16X4C"),
#Cell("SPR16X4C"),
Cell("SGSR", True),
Cell("DP8KC"),
Cell("PDPW8KC"),
Cell("SP8KC"),
Cell("FIFO8KB"),
#Cell("CLKDIVC"),
Cell("DCMA"),
#Cell("ECLKSYNCA"),
#Cell("ECLKBRIDGECS"),
Cell("DCCA"),
#Cell("JTAGF"),
#Cell("START"),
#Cell("SEDFA"),
#Cell("SEDFB"),
#Cell("IDDRXE"),
#Cell("IDDRX2E"),
#Cell("IDDRX4B"),
#Cell("IDDRX71A"),
#Cell("ODDRXE"),
#Cell("ODDRX2E"),
#Cell("ODDRX4B"),
#Cell("ODDRX71A"),
#Cell("DQSDLLC"),
#Cell("DELAYE"),
#Cell("DELAYD"),
#Cell("DLLDELC"),
#Cell("CLKFBBUFA"),
#Cell("PCNTR"),
#Cell("BCINRD"),
#Cell("BCLVDSO"),
#Cell("INRDB"),
#Cell("LVDSOB"),
#Cell("PG"),
Cell("EHXPLLJ"),
#Cell("PLLREFCS"),
Cell("OSCH"),
#Cell("EFB"),
#Cell("TSALL"),
]),
("cells_bb_xo3d.v", "machxo3d", [
#Cell("AGEB2"),
#Cell("ALEB2"),
#Cell("AND2"),
#Cell("AND3"),
#Cell("AND4"),
#Cell("AND5"),
#Cell("ANEB2"),
#Cell("BB"),
#Cell("BBPD"),
#Cell("BBPU"),
#Cell("BBI3C"),
#Cell("BBW"),
#Cell("CB2"),
#Cell("CD2"),
#Cell("CU2"),
#Cell("FADD2B"),
#Cell("FADSU2"),
#Cell("FD1P3AX"),
#Cell("FD1P3AY"),
#Cell("FD1P3BX"),
#Cell("FD1P3DX"),
#Cell("FD1P3IX"),
#Cell("FD1P3JX"),
#Cell("FD1S1A"),
#Cell("FD1S1AY"),
#Cell("FD1S1B"),
#Cell("FD1S1D"),
#Cell("FD1S1I"),
#Cell("FD1S1J"),
#Cell("FD1S3AX"),
#Cell("FD1S3AY"),
#Cell("FD1S3BX"),
#Cell("FD1S3DX"),
#Cell("FD1S3IX"),
#Cell("FD1S3JX"),
#Cell("FL1P3AY"),
#Cell("FL1P3AZ"),
#Cell("FL1P3BX"),
#Cell("FL1P3DX"),
#Cell("FL1P3IY"),
#Cell("FL1P3JY"),
#Cell("FL1S1A"),
#Cell("FL1S1AY"),
#Cell("FL1S1B"),
#Cell("FL1S1D"),
#Cell("FL1S1I"),
#Cell("FL1S1J"),
#Cell("FL1S3AX"),
#Cell("FL1S3AY"),
#Cell("FSUB2B"),
Cell("GSR", True),
#Cell("IB"),
#Cell("IBPD"),
#Cell("IBPU"),
#Cell("IFS1P3BX"),
#Cell("IFS1P3DX"),
#Cell("IFS1P3IX"),
#Cell("IFS1P3JX"),
#Cell("ILVDS"),
#Cell("INV"),
#Cell("L6MUX21"),
#Cell("LB2P3AX"),
#Cell("LB2P3AY"),
#Cell("LB2P3BX"),
#Cell("LB2P3DX"),
#Cell("LB2P3IX"),
#Cell("LB2P3JX"),
#Cell("LD2P3AX"),
#Cell("LD2P3AY"),
#Cell("LD2P3BX"),
#Cell("LD2P3DX"),
#Cell("LD2P3IX"),
#Cell("LD2P3JX"),
#Cell("LU2P3AX"),
#Cell("LU2P3AY"),
#Cell("LU2P3BX"),
#Cell("LU2P3DX"),
#Cell("LU2P3IX"),
#Cell("LU2P3JX"),
#Cell("MULT2"),
#Cell("MUX161"),
#Cell("MUX21"),
#Cell("MUX321"),
#Cell("MUX41"),
#Cell("MUX81"),
#Cell("ND2"),
#Cell("ND3"),
#Cell("ND4"),
#Cell("ND5"),
#Cell("NR2"),
#Cell("NR3"),
#Cell("NR4"),
#Cell("NR5"),
#Cell("OB"),
#Cell("OBCO"),
#Cell("OBZ"),
#Cell("OBZPU"),
#Cell("OFS1P3BX"),
#Cell("OFS1P3DX"),
#Cell("OFS1P3IX"),
#Cell("OFS1P3JX"),
#Cell("OLVDS"),
#Cell("OR2"),
#Cell("OR3"),
#Cell("OR4"),
#Cell("OR5"),
#Cell("LUT4"),
#Cell("LUT5"),
#Cell("LUT6"),
#Cell("LUT7"),
#Cell("LUT8"),
#Cell("PFUMX"),
#Cell("PUR"),
#Cell("ROM128X1A"),
#Cell("ROM16X1A"),
#Cell("ROM256X1A"),
#Cell("ROM32X1A"),
#Cell("ROM64X1A"),
#Cell("CCU2D"),
#Cell("VHI"),
#Cell("VLO"),
#Cell("XNOR2"),
#Cell("XNOR3"),
#Cell("XNOR4"),
#Cell("XNOR5"),
#Cell("XOR11"),
#Cell("XOR2"),
#Cell("XOR21"),
#Cell("XOR3"),
#Cell("XOR4"),
#Cell("XOR5"),
#Cell("IFS1S1B"),
#Cell("IFS1S1D"),
#Cell("IFS1S1I"),
#Cell("IFS1S1J"),
#Cell("DPR16X4C"),
#Cell("SPR16X4C"),
Cell("SGSR", True),
Cell("DP8KC"),
Cell("PDPW8KC"),
Cell("SP8KC"),
Cell("FIFO8KB"),
#Cell("CLKDIVC"),
Cell("DCMA"),
#Cell("ECLKSYNCA"),
#Cell("ECLKBRIDGECS"),
Cell("DCCA"),
#Cell("JTAGF"),
#Cell("START"),
#Cell("SEDFA"),
#Cell("SEDFB"),
#Cell("IDDRXE"),
#Cell("IDDRX2E"),
#Cell("IDDRX4B"),
#Cell("IDDRX71A"),
#Cell("ODDRXE"),
#Cell("ODDRX2E"),
#Cell("ODDRX4B"),
#Cell("ODDRX71A"),
#Cell("DQSDLLC"),
#Cell("DELAYE"),
#Cell("DELAYD"),
#Cell("DLLDELC"),
#Cell("CLKFBBUFA"),
#Cell("PCNTR"),
#Cell("BCINRD"),
#Cell("BCLVDSO"),
#Cell("INRDB"),
#Cell("LVDSOB"),
#Cell("PG"),
Cell("EHXPLLJ"),
#Cell("PLLREFCS"),
Cell("OSCJ"),
#Cell("EFBB"),
#Cell("TSALL"),
#Cell("ESBA"),
#Cell("BCSLEWRATEA"),
])
]
def xtract_cells_decl(device, cells, dirs, outf):
fname = os.path.join(dir, device + '.v')
with open(fname) as f:
state = State.OUTSIDE
# Probably the most horrible Verilog "parser" ever written.
cell = None
kind = None
for l in f:
l, _, comment = l.partition('//')
l = l.strip()
m = re.search(r'synthesis .*black_box_pad_pin="([^"]*)"', comment)
if m:
iopad_pin = set(m.group(1).split(","))
if l.startswith("module "):
cell_name = l[7:l.find('(')].strip()
cell = None
kind = None
module_ports = []
iopad_pin = set()
if state != State.OUTSIDE:
print('Nested modules in {}.'.format(fname))
sys.exit(1)
for c in cells:
if c.name != cell_name:
continue
cell = c
state = State.IN_MODULE
outf.write('(* blackbox *)')
if cell.keep:
outf.write(' (* keep *)\n')
else:
outf.write('\n')
outf.write('module {} (...);\n'.format(cell.name))
cell.found = True
if cell is None:
state = State.IN_OTHER_MODULE
elif l.startswith('task '):
if state == State.IN_MODULE:
state = State.IN_TASK
elif l.startswith('function '):
if state == State.IN_MODULE:
state = State.IN_FUNCTION
elif l == 'endtask':
if state == State.IN_TASK:
state = State.IN_MODULE
elif l == 'endfunction':
if state == State.IN_FUNCTION:
state = State.IN_MODULE
elif l == 'endmodule':
if state == State.IN_MODULE:
for kind, rng, port in module_ports:
for attr in cell.port_attrs.get(port, []):
outf.write(' (* {} *)\n'.format(attr))
if port in iopad_pin:
outf.write(' (* iopad_external_pin *)\n')
if rng is None:
outf.write(' {} {};\n'.format(kind, port))
else:
outf.write(' {} {} {};\n'.format(kind, rng, port))
outf.write(l + '\n')
outf.write('\n')
elif state != State.IN_OTHER_MODULE:
print('endmodule in weird place in {}.'.format(cell.name, fname))
sys.exit(1)
state = State.OUTSIDE
elif l.startswith(('input ', 'output ', 'inout ')) and state == State.IN_MODULE:
l = l.strip()
if l == "":
continue
if l.endswith((';', ',', ")")):
l = l[:-1]
l = l.replace(")","")
if ';' in l:
print('Weird port line in {} [{}].'.format(fname, l))
sys.exit(1)
kind, _, ports = l.partition(' ')
for port in ports.split(','):
port = port.strip()
if port.startswith('['):
rng, port = port.split()
else:
rng = None
module_ports.append((kind, rng, port))
elif l.startswith('parameter ') and state == State.IN_MODULE:
l = l.strip()
if l.endswith((';', ',')):
l = l[:-1]
while ' ' in l:
l = l.replace(' ', ' ')
if "INITVAL" in l:
l = l.replace('"0x', "320'h")
l = l.replace('"', '')
if ';' in l:
print('Weird parameter line in {} [{}].'.format(fname, l))
sys.exit(1)
outf.write(' {};\n'.format(l))
elif kind is not None and state == State.IN_MODULE:
l = l.strip()
if l == "":
continue
if l.endswith((';', ',', ")")):
l = l[:-1]
l = l.replace(")","")
if ';' in l:
print('Weird port line in {} [{}].'.format(fname, l))
sys.exit(1)
ports = l
for port in ports.split(','):
port = port.strip()
if port.startswith('['):
rng, port = port.split()
else:
rng = None
module_ports.append((kind, rng, port))
if state != State.OUTSIDE:
print('endmodule not found in {}.'.format(fname))
sys.exit(1)
for cell in cells:
if not cell.found:
print('cell {} not found in {}.'.format(cell.name, fname))
if __name__ == '__main__':
parser = ArgumentParser(description='Extract Lattice blackbox cell definitions from Lattice Diamond.')
parser.add_argument('diamond_dir', nargs='?', default='/usr/local/diamond/3.12/')
args = parser.parse_args()
dirs = [
os.path.join(args.diamond_dir, 'cae_library/synthesis/verilog/'),
]
for dir in dirs:
if not os.path.isdir(dir):
print('{} is not a directory'.format(dir))
for fn, device, cells in devices:
out = StringIO()
xtract_cells_decl(device, cells, dirs, out)
with open(fn, 'w') as f:
f.write('// Created by cells_xtra.py from Lattice models\n')
f.write('\n')
f.write(out.getvalue())