This commit is contained in:
Miodrag Milanovic 2024-03-11 14:15:30 +01:00
parent 815622f685
commit 60611b936b
3 changed files with 525 additions and 179 deletions

View File

@ -70,185 +70,6 @@ module NX_BFR(I, O);
parameter ring = 0; parameter ring = 0;
endmodule endmodule
(* blackbox *)
module NX_CDC_U(CK1, CK2, ASRSTI, ADRSTI, ASRSTO, ADRSTO, AI1, AI2, AI3, AI4, AI5, AI6, AO1, AO2, AO3, AO4, AO5, AO6, BSRSTI, BDRSTI, BSRSTO
, BDRSTO, BI1, BI2, BI3, BI4, BI5, BI6, BO1, BO2, BO3, BO4, BO5, BO6, CSRSTI, CDRSTI, CSRSTO, CDRSTO, CI1, CI2, CI3, CI4
, CI5, CI6, CO1, CO2, CO3, CO4, CO5, CO6, DSRSTI, DDRSTI, DSRSTO, DDRSTO, DI1, DI2, DI3, DI4, DI5, DI6, DO1, DO2, DO3
, DO4, DO5, DO6);
input ADRSTI;
output ADRSTO;
input AI1;
input AI2;
input AI3;
input AI4;
input AI5;
input AI6;
output AO1;
output AO2;
output AO3;
output AO4;
output AO5;
output AO6;
input ASRSTI;
output ASRSTO;
input BDRSTI;
output BDRSTO;
input BI1;
input BI2;
input BI3;
input BI4;
input BI5;
input BI6;
output BO1;
output BO2;
output BO3;
output BO4;
output BO5;
output BO6;
input BSRSTI;
output BSRSTO;
input CDRSTI;
output CDRSTO;
input CI1;
input CI2;
input CI3;
input CI4;
input CI5;
input CI6;
input CK1;
input CK2;
output CO1;
output CO2;
output CO3;
output CO4;
output CO5;
output CO6;
input CSRSTI;
output CSRSTO;
input DDRSTI;
output DDRSTO;
input DI1;
input DI2;
input DI3;
input DI4;
input DI5;
input DI6;
output DO1;
output DO2;
output DO3;
output DO4;
output DO5;
output DO6;
input DSRSTI;
output DSRSTO;
parameter ack_sel = 1'b0;
parameter bck_sel = 1'b0;
parameter cck_sel = 1'b0;
parameter ck0_edge = 1'b0;
parameter ck1_edge = 1'b0;
parameter dck_sel = 1'b0;
parameter link_BA = 1'b0;
parameter link_CB = 1'b0;
parameter link_DC = 1'b0;
parameter mode = 0;
parameter use_adest_arst = 1'b0;
parameter use_asrc_arst = 1'b0;
parameter use_bdest_arst = 1'b0;
parameter use_bsrc_arst = 1'b0;
parameter use_cdest_arst = 1'b0;
parameter use_csrc_arst = 1'b0;
parameter use_ddest_arst = 1'b0;
parameter use_dsrc_arst = 1'b0;
endmodule
(* blackbox *)
module NX_CDC_U_2DFF(CK1, CK2, ADRSTI, ADRSTO, BDRSTI, BDRSTO, BI, AO, BO, AI);
input ADRSTI;
output ADRSTO;
input [5:0] AI;
output [5:0] AO;
input BDRSTI;
output BDRSTO;
input [5:0] BI;
output [5:0] BO;
input CK1;
input CK2;
parameter ack_sel = 1'b0;
parameter bck_sel = 1'b0;
parameter ck0_edge = 1'b0;
parameter ck1_edge = 1'b0;
parameter use_adest_arst = 1'b0;
parameter use_bdest_arst = 1'b0;
endmodule
(* blackbox *)
module NX_CDC_U_3DFF(CK1, CK2, ASRSTI, ADRSTI, ASRSTO, ADRSTO, BSRSTI, BDRSTI, BSRSTO, BDRSTO, BI, AO, BO, AI);
input ADRSTI;
output ADRSTO;
input [5:0] AI;
output [5:0] AO;
input ASRSTI;
output ASRSTO;
input BDRSTI;
output BDRSTO;
input [5:0] BI;
output [5:0] BO;
input BSRSTI;
output BSRSTO;
input CK1;
input CK2;
parameter ack_sel = 1'b0;
parameter bck_sel = 1'b0;
parameter ck0_edge = 1'b0;
parameter ck1_edge = 1'b0;
parameter use_adest_arst = 1'b0;
parameter use_asrc_arst = 1'b0;
parameter use_bdest_arst = 1'b0;
parameter use_bsrc_arst = 1'b0;
endmodule
(* blackbox *)
module NX_CDC_U_BIN2GRAY(BI, AO, BO, AI);
input [5:0] AI;
output [5:0] AO;
input [5:0] BI;
output [5:0] BO;
endmodule
(* blackbox *)
module NX_CDC_U_FULL(CK1, CK2, ASRSTI, ADRSTI, ASRSTO, ADRSTO, BSRSTI, BDRSTI, BSRSTO, BDRSTO, BI, AO, BO, AI);
input ADRSTI;
output ADRSTO;
input [5:0] AI;
output [5:0] AO;
input ASRSTI;
output ASRSTO;
input BDRSTI;
output BDRSTO;
input [5:0] BI;
output [5:0] BO;
input BSRSTI;
output BSRSTO;
input CK1;
input CK2;
parameter ack_sel = 1'b0;
parameter bck_sel = 1'b0;
parameter ck0_edge = 1'b0;
parameter ck1_edge = 1'b0;
parameter use_adest_arst = 1'b0;
parameter use_asrc_arst = 1'b0;
parameter use_bdest_arst = 1'b0;
parameter use_bsrc_arst = 1'b0;
endmodule
(* blackbox *)
module NX_CDC_U_GRAY2BIN(BI, AO, BO, AI);
input [5:0] AI;
output [5:0] AO;
input [5:0] BI;
output [5:0] BO;
endmodule
(* blackbox *) (* blackbox *)
module NX_CRX_L(DSCR_E_I, DEC_E_I, ALIGN_E_I, ALIGN_S_I, REP_E_I, BUF_R_I, OVS_BS_I1, OVS_BS_I2, BUF_FE_I, RST_N_I, CDR_R_I, CKG_RN_I, PLL_RN_I, TST_I1, TST_I2, TST_I3, TST_I4, LOS_O, DATA_O1, DATA_O2, DATA_O3 module NX_CRX_L(DSCR_E_I, DEC_E_I, ALIGN_E_I, ALIGN_S_I, REP_E_I, BUF_R_I, OVS_BS_I1, OVS_BS_I2, BUF_FE_I, RST_N_I, CDR_R_I, CKG_RN_I, PLL_RN_I, TST_I1, TST_I2, TST_I3, TST_I4, LOS_O, DATA_O1, DATA_O2, DATA_O3
, DATA_O4, DATA_O5, DATA_O6, DATA_O7, DATA_O8, DATA_O9, DATA_O10, DATA_O11, DATA_O12, DATA_O13, DATA_O14, DATA_O15, DATA_O16, DATA_O17, DATA_O18, DATA_O19, DATA_O20, DATA_O21, DATA_O22, DATA_O23, DATA_O24 , DATA_O4, DATA_O5, DATA_O6, DATA_O7, DATA_O8, DATA_O9, DATA_O10, DATA_O11, DATA_O12, DATA_O13, DATA_O14, DATA_O15, DATA_O16, DATA_O17, DATA_O18, DATA_O19, DATA_O20, DATA_O21, DATA_O22, DATA_O23, DATA_O24

View File

@ -8,3 +8,94 @@ module NX_GCK_U(SI1, SI2, CMD, SO);
parameter inv_out = 1'b0; parameter inv_out = 1'b0;
parameter std_mode = "BYPASS"; parameter std_mode = "BYPASS";
endmodule endmodule
(* blackbox *)
module NX_CDC_U(CK1, CK2, ASRSTI, ADRSTI, ASRSTO, ADRSTO, AI1, AI2, AI3, AI4, AI5, AI6, AO1, AO2, AO3, AO4, AO5, AO6, BSRSTI, BDRSTI, BSRSTO
, BDRSTO, BI1, BI2, BI3, BI4, BI5, BI6, BO1, BO2, BO3, BO4, BO5, BO6, CSRSTI, CDRSTI, CSRSTO, CDRSTO, CI1, CI2, CI3, CI4
, CI5, CI6, CO1, CO2, CO3, CO4, CO5, CO6, DSRSTI, DDRSTI, DSRSTO, DDRSTO, DI1, DI2, DI3, DI4, DI5, DI6, DO1, DO2, DO3
, DO4, DO5, DO6);
input ADRSTI;
output ADRSTO;
input AI1;
input AI2;
input AI3;
input AI4;
input AI5;
input AI6;
output AO1;
output AO2;
output AO3;
output AO4;
output AO5;
output AO6;
input ASRSTI;
output ASRSTO;
input BDRSTI;
output BDRSTO;
input BI1;
input BI2;
input BI3;
input BI4;
input BI5;
input BI6;
output BO1;
output BO2;
output BO3;
output BO4;
output BO5;
output BO6;
input BSRSTI;
output BSRSTO;
input CDRSTI;
output CDRSTO;
input CI1;
input CI2;
input CI3;
input CI4;
input CI5;
input CI6;
input CK1;
input CK2;
output CO1;
output CO2;
output CO3;
output CO4;
output CO5;
output CO6;
input CSRSTI;
output CSRSTO;
input DDRSTI;
output DDRSTO;
input DI1;
input DI2;
input DI3;
input DI4;
input DI5;
input DI6;
output DO1;
output DO2;
output DO3;
output DO4;
output DO5;
output DO6;
input DSRSTI;
output DSRSTO;
parameter ack_sel = 1'b0;
parameter bck_sel = 1'b0;
parameter cck_sel = 1'b0;
parameter ck0_edge = 1'b0;
parameter ck1_edge = 1'b0;
parameter dck_sel = 1'b0;
parameter link_BA = 1'b0;
parameter link_CB = 1'b0;
parameter link_DC = 1'b0;
parameter mode = 0;
parameter use_adest_arst = 1'b0;
parameter use_asrc_arst = 1'b0;
parameter use_bdest_arst = 1'b0;
parameter use_bsrc_arst = 1'b0;
parameter use_cdest_arst = 1'b0;
parameter use_csrc_arst = 1'b0;
parameter use_ddest_arst = 1'b0;
parameter use_dsrc_arst = 1'b0;
endmodule

View File

@ -32,3 +32,437 @@ NX_GCK_U #(
.SO(CKO) .SO(CKO)
); );
endmodule endmodule
module NX_CDC_U_2DFF(CK1, CK2, ADRSTI, ADRSTO, BDRSTI, BDRSTO, BI, AO, BO, AI);
input ADRSTI;
output ADRSTO;
input [5:0] AI;
output [5:0] AO;
input BDRSTI;
output BDRSTO;
input [5:0] BI;
output [5:0] BO;
input CK1;
input CK2;
parameter ack_sel = 1'b0;
parameter bck_sel = 1'b0;
parameter ck0_edge = 1'b0;
parameter ck1_edge = 1'b0;
parameter use_adest_arst = 1'b0;
parameter use_bdest_arst = 1'b0;
NX_CDC_U #(
.mode(0), // -- 0: 2DFF
.ck0_edge(ck0_edge),
.ck1_edge(ck1_edge),
.ack_sel(ack_sel),
.bck_sel(bck_sel),
.cck_sel(1'b0),
.dck_sel(1'b0),
.use_asrc_arst(1'b0),
.use_adest_arst(use_adest_arst),
.use_bsrc_arst(1'b0),
.use_bdest_arst(use_bdest_arst),
.use_csrc_arst(1'b0),
.use_cdest_arst(1'b0),
.use_dsrc_arst(1'b0),
.use_ddest_arst(1'b0),
.link_BA(1'b0),
.link_CB(1'b0),
.link_DC(1'b0),
) _TECHMAP_REPLACE_ (
.CK1(CK1),
.CK2(CK2),
.ASRSTI(1'b0),
.ADRSTI(ADRSTI),
.ADRSTO(ADRSTO),
.AI1(AI[0]),
.AI2(AI[1]),
.AI3(AI[2]),
.AI4(AI[3]),
.AI5(AI[4]),
.AI6(AI[5]),
.AO1(AO[0]),
.AO2(AO[1]),
.AO3(AO[2]),
.AO4(AO[3]),
.AO5(AO[4]),
.AO6(AO[5]),
.BSRSTI(1'b0),
.BDRSTI(BDRSTI),
.BDRSTO(BDRSTO),
.BI1(BI[0]),
.BI2(BI[1]),
.BI3(BI[2]),
.BI4(BI[3]),
.BI5(BI[4]),
.BI6(BI[5]),
.BO1(BO[0]),
.BO2(BO[1]),
.BO3(BO[2]),
.BO4(BO[3]),
.BO5(BO[4]),
.BO6(BO[5]),
.CSRSTI(1'b0),
.CDRSTI(1'b0),
.CI1(1'b0),
.CI2(1'b0),
.CI3(1'b0),
.CI4(1'b0),
.CI5(1'b0),
.CI6(1'b0),
.DSRSTI(1'b0),
.DDRSTI(1'b0),
.DI1(1'b0),
.DI2(1'b0),
.DI3(1'b0),
.DI4(1'b0),
.DI5(1'b0),
.DI6(1'b0),
);
endmodule
module NX_CDC_U_3DFF(CK1, CK2, ASRSTI, ADRSTI, ASRSTO, ADRSTO, BSRSTI, BDRSTI, BSRSTO, BDRSTO, BI, AO, BO, AI);
input ADRSTI;
output ADRSTO;
input [5:0] AI;
output [5:0] AO;
input ASRSTI;
output ASRSTO;
input BDRSTI;
output BDRSTO;
input [5:0] BI;
output [5:0] BO;
input BSRSTI;
output BSRSTO;
input CK1;
input CK2;
parameter ack_sel = 1'b0;
parameter bck_sel = 1'b0;
parameter ck0_edge = 1'b0;
parameter ck1_edge = 1'b0;
parameter use_adest_arst = 1'b0;
parameter use_asrc_arst = 1'b0;
parameter use_bdest_arst = 1'b0;
parameter use_bsrc_arst = 1'b0;
NX_CDC_U #(
.mode(1), // -- 1: 3DFF
.ck0_edge(ck0_edge),
.ck1_edge(ck1_edge),
.ack_sel(ack_sel),
.bck_sel(bck_sel),
.cck_sel(1'b0),
.dck_sel(1'b0),
.use_asrc_arst(use_asrc_arst),
.use_adest_arst(use_adest_arst),
.use_bsrc_arst(use_bsrc_arst),
.use_bdest_arst(use_bdest_arst),
.use_csrc_arst(1'b0),
.use_cdest_arst(1'b0),
.use_dsrc_arst(1'b0),
.use_ddest_arst(1'b0),
.link_BA(1'b0),
.link_CB(1'b0),
.link_DC(1'b0),
) _TECHMAP_REPLACE_ (
.CK1(CK1),
.CK2(CK2),
.ASRSTI(ASRSTI),
.ADRSTI(ADRSTI),
.ASRSTO(ASRSTO),
.ADRSTO(ADRSTO),
.AI1(AI[0]),
.AI2(AI[1]),
.AI3(AI[2]),
.AI4(AI[3]),
.AI5(AI[4]),
.AI6(AI[5]),
.AO1(AO[0]),
.AO2(AO[1]),
.AO3(AO[2]),
.AO4(AO[3]),
.AO5(AO[4]),
.AO6(AO[5]),
.BSRSTI(BSRSTI),
.BDRSTI(BDRSTI),
.BSRSTO(BSRSTO),
.BDRSTO(BDRSTO),
.BI1(BI[0]),
.BI2(BI[1]),
.BI3(BI[2]),
.BI4(BI[3]),
.BI5(BI[4]),
.BI6(BI[5]),
.BO1(BO[0]),
.BO2(BO[1]),
.BO3(BO[2]),
.BO4(BO[3]),
.BO5(BO[4]),
.BO6(BO[5]),
.CSRSTI(1'b0),
.CDRSTI(1'b0),
.CI1(1'b0),
.CI2(1'b0),
.CI3(1'b0),
.CI4(1'b0),
.CI5(1'b0),
.CI6(1'b0),
.DSRSTI(1'b0),
.DDRSTI(1'b0),
.DI1(1'b0),
.DI2(1'b0),
.DI3(1'b0),
.DI4(1'b0),
.DI5(1'b0),
.DI6(1'b0),
);
endmodule
module NX_CDC_U_FULL(CK1, CK2, ASRSTI, ADRSTI, ASRSTO, ADRSTO, BSRSTI, BDRSTI, BSRSTO, BDRSTO, BI, AO, BO, AI);
input ADRSTI;
output ADRSTO;
input [5:0] AI;
output [5:0] AO;
input ASRSTI;
output ASRSTO;
input BDRSTI;
output BDRSTO;
input [5:0] BI;
output [5:0] BO;
input BSRSTI;
output BSRSTO;
input CK1;
input CK2;
parameter ack_sel = 1'b0;
parameter bck_sel = 1'b0;
parameter ck0_edge = 1'b0;
parameter ck1_edge = 1'b0;
parameter use_adest_arst = 1'b0;
parameter use_asrc_arst = 1'b0;
parameter use_bdest_arst = 1'b0;
parameter use_bsrc_arst = 1'b0;
NX_CDC_U #(
.mode(2), // -- 2: bin2gray + 3DFF + gray2bin
.ck0_edge(ck0_edge),
.ck1_edge(ck1_edge),
.ack_sel(ack_sel),
.bck_sel(bck_sel),
.cck_sel(1'b0),
.dck_sel(1'b0),
.use_asrc_arst(use_asrc_arst),
.use_adest_arst(use_adest_arst),
.use_bsrc_arst(use_bsrc_arst),
.use_bdest_arst(use_bdest_arst),
.use_csrc_arst(1'b0),
.use_cdest_arst(1'b0),
.use_dsrc_arst(1'b0),
.use_ddest_arst(1'b0),
.link_BA(1'b0),
.link_CB(1'b0),
.link_DC(1'b0),
) _TECHMAP_REPLACE_ (
.CK1(CK1),
.CK2(CK2),
.ASRSTI(ASRSTI),
.ADRSTI(ADRSTI),
.ASRSTO(ASRSTO),
.ADRSTO(ADRSTO),
.AI1(AI[0]),
.AI2(AI[1]),
.AI3(AI[2]),
.AI4(AI[3]),
.AI5(AI[4]),
.AI6(AI[5]),
.AO1(AO[0]),
.AO2(AO[1]),
.AO3(AO[2]),
.AO4(AO[3]),
.AO5(AO[4]),
.AO6(AO[5]),
.BSRSTI(BSRSTI),
.BDRSTI(BDRSTI),
.BSRSTO(BSRSTO),
.BDRSTO(BDRSTO),
.BI1(BI[0]),
.BI2(BI[1]),
.BI3(BI[2]),
.BI4(BI[3]),
.BI5(BI[4]),
.BI6(BI[5]),
.BO1(BO[0]),
.BO2(BO[1]),
.BO3(BO[2]),
.BO4(BO[3]),
.BO5(BO[4]),
.BO6(BO[5]),
.CSRSTI(1'b0),
.CDRSTI(1'b0),
.CI1(1'b0),
.CI2(1'b0),
.CI3(1'b0),
.CI4(1'b0),
.CI5(1'b0),
.CI6(1'b0),
.DSRSTI(1'b0),
.DDRSTI(1'b0),
.DI1(1'b0),
.DI2(1'b0),
.DI3(1'b0),
.DI4(1'b0),
.DI5(1'b0),
.DI6(1'b0),
);
endmodule
module NX_CDC_U_BIN2GRAY(BI, AO, BO, AI);
input [5:0] AI;
output [5:0] AO;
input [5:0] BI;
output [5:0] BO;
NX_CDC_U #(
.mode(3), // -- 3: bin2gray
.ck0_edge(1'b0),
.ck1_edge(1'b0),
.ack_sel(1'b0),
.bck_sel(1'b0),
.cck_sel(1'b0),
.dck_sel(1'b0),
.use_asrc_arst(1'b0),
.use_adest_arst(1'b0),
.use_bsrc_arst(1'b0),
.use_bdest_arst(1'b0),
.use_csrc_arst(1'b0),
.use_cdest_arst(1'b0),
.use_dsrc_arst(1'b0),
.use_ddest_arst(1'b0),
.link_BA(1'b0),
.link_CB(1'b0),
.link_DC(1'b0),
) _TECHMAP_REPLACE_ (
.CK1(1'b0),
.CK2(1'b0),
.ASRSTI(1'b0),
.ADRSTI(1'b0),
.AI1(AI[0]),
.AI2(AI[1]),
.AI3(AI[2]),
.AI4(AI[3]),
.AI5(AI[4]),
.AI6(AI[5]),
.AO1(AO[0]),
.AO2(AO[1]),
.AO3(AO[2]),
.AO4(AO[3]),
.AO5(AO[4]),
.AO6(AO[5]),
.BSRSTI(1'b0),
.BDRSTI(1'b0),
.BI1(BI[0]),
.BI2(BI[1]),
.BI3(BI[2]),
.BI4(BI[3]),
.BI5(BI[4]),
.BI6(BI[5]),
.BO1(BO[0]),
.BO2(BO[1]),
.BO3(BO[2]),
.BO4(BO[3]),
.BO5(BO[4]),
.BO6(BO[5]),
.CSRSTI(1'b0),
.CDRSTI(1'b0),
.CI1(1'b0),
.CI2(1'b0),
.CI3(1'b0),
.CI4(1'b0),
.CI5(1'b0),
.CI6(1'b0),
.DSRSTI(1'b0),
.DDRSTI(1'b0),
.DI1(1'b0),
.DI2(1'b0),
.DI3(1'b0),
.DI4(1'b0),
.DI5(1'b0),
.DI6(1'b0),
);
endmodule
module NX_CDC_U_GRAY2BIN(BI, AO, BO, AI);
input [5:0] AI;
output [5:0] AO;
input [5:0] BI;
output [5:0] BO;
NX_CDC_U #(
.mode(4), // -- 4: gray2bin
.ck0_edge(1'b0),
.ck1_edge(1'b0),
.ack_sel(1'b0),
.bck_sel(1'b0),
.cck_sel(1'b0),
.dck_sel(1'b0),
.use_asrc_arst(1'b0),
.use_adest_arst(1'b0),
.use_bsrc_arst(1'b0),
.use_bdest_arst(1'b0),
.use_csrc_arst(1'b0),
.use_cdest_arst(1'b0),
.use_dsrc_arst(1'b0),
.use_ddest_arst(1'b0),
.link_BA(1'b0),
.link_CB(1'b0),
.link_DC(1'b0),
) _TECHMAP_REPLACE_ (
.CK1(1'b0),
.CK2(1'b0),
.ASRSTI(1'b0),
.ADRSTI(1'b0),
.AI1(AI[0]),
.AI2(AI[1]),
.AI3(AI[2]),
.AI4(AI[3]),
.AI5(AI[4]),
.AI6(AI[5]),
.AO1(AO[0]),
.AO2(AO[1]),
.AO3(AO[2]),
.AO4(AO[3]),
.AO5(AO[4]),
.AO6(AO[5]),
.BSRSTI(1'b0),
.BDRSTI(1'b0),
.BI1(BI[0]),
.BI2(BI[1]),
.BI3(BI[2]),
.BI4(BI[3]),
.BI5(BI[4]),
.BI6(BI[5]),
.BO1(BO[0]),
.BO2(BO[1]),
.BO3(BO[2]),
.BO4(BO[3]),
.BO5(BO[4]),
.BO6(BO[5]),
.CSRSTI(1'b0),
.CDRSTI(1'b0),
.CI1(1'b0),
.CI2(1'b0),
.CI3(1'b0),
.CI4(1'b0),
.CI5(1'b0),
.CI6(1'b0),
.DSRSTI(1'b0),
.DDRSTI(1'b0),
.DI1(1'b0),
.DI2(1'b0),
.DI3(1'b0),
.DI4(1'b0),
.DI5(1'b0),
.DI6(1'b0),
);
endmodule