From 60611b936b5e67ad68ee07fb822f71112f85b3a0 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Mon, 11 Mar 2024 14:15:30 +0100 Subject: [PATCH] CDC_U --- techlibs/nanoxplore/cells_bb.v | 179 ------------ techlibs/nanoxplore/cells_bb_u.v | 91 ++++++ techlibs/nanoxplore/cells_wrap_u.v | 434 +++++++++++++++++++++++++++++ 3 files changed, 525 insertions(+), 179 deletions(-) diff --git a/techlibs/nanoxplore/cells_bb.v b/techlibs/nanoxplore/cells_bb.v index 2a3d8b62f..5a2ec90f4 100644 --- a/techlibs/nanoxplore/cells_bb.v +++ b/techlibs/nanoxplore/cells_bb.v @@ -70,185 +70,6 @@ module NX_BFR(I, O); parameter ring = 0; 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 *) 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 diff --git a/techlibs/nanoxplore/cells_bb_u.v b/techlibs/nanoxplore/cells_bb_u.v index 41f8736fc..fca409a5b 100644 --- a/techlibs/nanoxplore/cells_bb_u.v +++ b/techlibs/nanoxplore/cells_bb_u.v @@ -8,3 +8,94 @@ module NX_GCK_U(SI1, SI2, CMD, SO); parameter inv_out = 1'b0; parameter std_mode = "BYPASS"; 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 diff --git a/techlibs/nanoxplore/cells_wrap_u.v b/techlibs/nanoxplore/cells_wrap_u.v index e8f793612..ec5369906 100644 --- a/techlibs/nanoxplore/cells_wrap_u.v +++ b/techlibs/nanoxplore/cells_wrap_u.v @@ -32,3 +32,437 @@ NX_GCK_U #( .SO(CKO) ); 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 +