diff --git a/techlibs/nanoxplore/cells_bb.v b/techlibs/nanoxplore/cells_bb.v index 0ff721121..2a3d8b62f 100644 --- a/techlibs/nanoxplore/cells_bb.v +++ b/techlibs/nanoxplore/cells_bb.v @@ -70,168 +70,6 @@ module NX_BFR(I, O); parameter ring = 0; endmodule -(* blackbox *) -module NX_CDC_L(CK1, CK2, AI1, AI2, AI3, AI4, AI5, AI6, AO1, AO2, AO3, AO4, AO5, AO6, BI1, BI2, BI3, BI4, BI5, BI6, BO1 -, BO2, BO3, BO4, BO5, BO6, CI1, CI2, CI3, CI4, CI5, CI6, CO1, CO2, CO3, CO4, CO5, CO6, DI1, DI2, DI3, DI4 -, DI5, DI6, DO1, DO2, DO3, DO4, DO5, DO6); - 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 BI1; - input BI2; - input BI3; - input BI4; - input BI5; - input BI6; - output BO1; - output BO2; - output BO3; - output BO4; - output BO5; - output BO6; - 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 DI1; - input DI2; - input DI3; - input DI4; - input DI5; - input DI6; - output DO1; - output DO2; - output DO3; - output DO4; - output DO5; - output DO6; - 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 gt0_bypass_reg1 = 1'b0; - parameter gt0_bypass_reg2 = 1'b0; - parameter gt1_bypass_reg1 = 1'b0; - parameter gt1_bypass_reg2 = 1'b0; - parameter link_BA = 1'b0; - parameter link_CB = 1'b0; - parameter link_DC = 1'b0; - parameter mode = 0; - parameter use_adest_arst = 2'b00; - parameter use_asrc_arst = 2'b00; - parameter use_bdest_arst = 2'b00; - parameter use_bsrc_arst = 2'b00; - parameter use_cdest_arst = 2'b00; - parameter use_csrc_arst = 2'b00; - parameter use_ddest_arst = 2'b00; - parameter use_dsrc_arst = 2'b00; -endmodule - -(* blackbox *) -module NX_CDC_L_2DFF(CK1, CK2, ADRSTI, BDRSTI, BI, AO, BO, AI); - input ADRSTI; - input [5:0] AI; - output [5:0] AO; - input BDRSTI; - 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 gt0_bypass_reg1 = 1'b0; - parameter gt0_bypass_reg2 = 1'b0; - parameter gt1_bypass_reg1 = 1'b0; - parameter gt1_bypass_reg2 = 1'b0; - parameter use_adest_arst = 2'b00; - parameter use_bdest_arst = 2'b00; -endmodule - -(* blackbox *) -module NX_CDC_L_3DFF(CK1, CK2, ASRSTI, ADRSTI, BDRSTI, BSRSTI, BI, AO, BO, AI); - input ADRSTI; - input [5:0] AI; - output [5:0] AO; - input ASRSTI; - input BDRSTI; - input [5:0] BI; - output [5:0] BO; - input BSRSTI; - 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 gt0_bypass_reg1 = 1'b0; - parameter gt0_bypass_reg2 = 1'b0; - parameter gt1_bypass_reg1 = 1'b0; - parameter gt1_bypass_reg2 = 1'b0; - parameter use_adest_arst = 2'b00; - parameter use_asrc_arst = 2'b00; - parameter use_bdest_arst = 2'b00; - parameter use_bsrc_arst = 2'b00; -endmodule - -(* blackbox *) -module NX_CDC_L_BIN2GRAY(CK1, CK2, BI, AO, BO, AI); - input [5:0] AI; - output [5:0] AO; - input [5:0] BI; - output [5:0] BO; - input CK1; - input CK2; -endmodule - -(* blackbox *) -module NX_CDC_L_FULL(CK1, CK2, ASRSTI, ADRSTI, BDRSTI, BSRSTI, BI, AO, BO, AI); - input ADRSTI; - input [5:0] AI; - output [5:0] AO; - input ASRSTI; - input BDRSTI; - input [5:0] BI; - output [5:0] BO; - input BSRSTI; - 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 gt0_bypass_reg1 = 1'b0; - parameter gt0_bypass_reg2 = 1'b0; - parameter gt1_bypass_reg1 = 1'b0; - parameter gt1_bypass_reg2 = 1'b0; - parameter use_adest_arst = 2'b00; - parameter use_asrc_arst = 2'b00; - parameter use_bdest_arst = 2'b00; - parameter use_bsrc_arst = 2'b00; -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 @@ -411,14 +249,6 @@ module NX_CDC_U_GRAY2BIN(BI, AO, BO, AI); output [5:0] BO; endmodule -(* blackbox *) -module NX_CKS(CKI, CMD, CKO); - input CKI; - output CKO; - input CMD; - parameter ck_edge = 1'b0; -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_l.v b/techlibs/nanoxplore/cells_bb_l.v index e69de29bb..e5a88023f 100644 --- a/techlibs/nanoxplore/cells_bb_l.v +++ b/techlibs/nanoxplore/cells_bb_l.v @@ -0,0 +1,86 @@ +(* blackbox *) +module NX_CKS(CKI, CMD, CKO); + input CKI; + output CKO; + input CMD; + parameter ck_edge = 1'b0; +endmodule + +(* blackbox *) +module NX_CDC_L(CK1, CK2, AI1, AI2, AI3, AI4, AI5, AI6, AO1, AO2, AO3, AO4, AO5, AO6, BI1, BI2, BI3, BI4, BI5, BI6, BO1 +, BO2, BO3, BO4, BO5, BO6, CI1, CI2, CI3, CI4, CI5, CI6, CO1, CO2, CO3, CO4, CO5, CO6, DI1, DI2, DI3, DI4 +, DI5, DI6, DO1, DO2, DO3, DO4, DO5, DO6); + 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 BI1; + input BI2; + input BI3; + input BI4; + input BI5; + input BI6; + output BO1; + output BO2; + output BO3; + output BO4; + output BO5; + output BO6; + 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 DI1; + input DI2; + input DI3; + input DI4; + input DI5; + input DI6; + output DO1; + output DO2; + output DO3; + output DO4; + output DO5; + output DO6; + 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 gt0_bypass_reg1 = 1'b0; + parameter gt0_bypass_reg2 = 1'b0; + parameter gt1_bypass_reg1 = 1'b0; + parameter gt1_bypass_reg2 = 1'b0; + parameter link_BA = 1'b0; + parameter link_CB = 1'b0; + parameter link_DC = 1'b0; + parameter mode = 0; + parameter use_adest_arst = 2'b00; + parameter use_asrc_arst = 2'b00; + parameter use_bdest_arst = 2'b00; + parameter use_bsrc_arst = 2'b00; + parameter use_cdest_arst = 2'b00; + parameter use_csrc_arst = 2'b00; + parameter use_ddest_arst = 2'b00; + parameter use_dsrc_arst = 2'b00; +endmodule + diff --git a/techlibs/nanoxplore/cells_bb_m.v b/techlibs/nanoxplore/cells_bb_m.v index e69de29bb..85b288ea0 100644 --- a/techlibs/nanoxplore/cells_bb_m.v +++ b/techlibs/nanoxplore/cells_bb_m.v @@ -0,0 +1,8 @@ +(* blackbox *) +module NX_CKS(CKI, CMD, CKO); + input CKI; + output CKO; + input CMD; + parameter ck_edge = 1'b0; +endmodule + diff --git a/techlibs/nanoxplore/cells_wrap_l.v b/techlibs/nanoxplore/cells_wrap_l.v index e69de29bb..d0f5502f8 100644 --- a/techlibs/nanoxplore/cells_wrap_l.v +++ b/techlibs/nanoxplore/cells_wrap_l.v @@ -0,0 +1,335 @@ +module NX_CDC_L_2DFF(CK1, CK2, ADRSTI, BDRSTI, BI, AO, BO, AI); + input ADRSTI; + input [5:0] AI; + output [5:0] AO; + input BDRSTI; + 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 gt0_bypass_reg1 = 1'b0; + parameter gt0_bypass_reg2 = 1'b0; + parameter gt1_bypass_reg1 = 1'b0; + parameter gt1_bypass_reg2 = 1'b0; + parameter use_adest_arst = 2'b00; + parameter use_bdest_arst = 2'b00; + + NX_CDC_L #( + .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(2'b00), + .use_adest_arst(use_adest_arst), + .use_bsrc_arst(2'b00), + .use_bdest_arst(use_bdest_arst), + .use_csrc_arst(2'b00), + .use_cdest_arst(2'b00), + .use_dsrc_arst(2'b00), + .use_ddest_arst(2'b00), + .gt0_bypass_reg1(gt0_bypass_reg1), + .gt0_bypass_reg2(gt0_bypass_reg2), + .gt1_bypass_reg1(gt1_bypass_reg2), + .gt1_bypass_reg2(gt1_bypass_reg2), + .link_BA(1'b0), + .link_CB(1'b0), + .link_DC(1'b0), + ) _TECHMAP_REPLACE_ ( + .CK1(CK1), + .CK2(CK2), + .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]), + .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]), + .CI1(1'b0), + .CI2(1'b0), + .CI3(1'b0), + .CI4(1'b0), + .CI5(1'b0), + .CI6(1'b0), + .DI1(1'b0), + .DI2(1'b0), + .DI3(1'b0), + .DI4(1'b0), + .DI5(1'b0), + .DI6(1'b0) + ); +endmodule + +module NX_CDC_L_3DFF(CK1, CK2, ASRSTI, ADRSTI, BDRSTI, BSRSTI, BI, AO, BO, AI); + input ADRSTI; + input [5:0] AI; + output [5:0] AO; + input ASRSTI; + input BDRSTI; + input [5:0] BI; + output [5:0] BO; + input BSRSTI; + 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 gt0_bypass_reg1 = 1'b0; + parameter gt0_bypass_reg2 = 1'b0; + parameter gt1_bypass_reg1 = 1'b0; + parameter gt1_bypass_reg2 = 1'b0; + parameter use_adest_arst = 2'b00; + parameter use_asrc_arst = 2'b00; + parameter use_bdest_arst = 2'b00; + parameter use_bsrc_arst = 2'b00; + + NX_CDC_L #( + .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(2'b00), + .use_cdest_arst(2'b00), + .use_dsrc_arst(2'b00), + .use_ddest_arst(2'b00), + .gt0_bypass_reg1(gt0_bypass_reg1), + .gt0_bypass_reg2(gt0_bypass_reg2), + .gt1_bypass_reg1(gt1_bypass_reg2), + .gt1_bypass_reg2(gt1_bypass_reg2), + .link_BA(1'b0), + .link_CB(1'b0), + .link_DC(1'b0), + ) _TECHMAP_REPLACE_ ( + .CK1(CK1), + .CK2(CK2), + .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]), + .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]), + .CI1(1'b0), + .CI2(1'b0), + .CI3(1'b0), + .CI4(1'b0), + .CI5(1'b0), + .CI6(1'b0), + .DI1(1'b0), + .DI2(1'b0), + .DI3(1'b0), + .DI4(1'b0), + .DI5(1'b0), + .DI6(1'b0) + ); +endmodule + +module NX_CDC_L_FULL(CK1, CK2, ASRSTI, ADRSTI, BDRSTI, BSRSTI, BI, AO, BO, AI); + input ADRSTI; + input [5:0] AI; + output [5:0] AO; + input ASRSTI; + input BDRSTI; + input [5:0] BI; + output [5:0] BO; + input BSRSTI; + 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 gt0_bypass_reg1 = 1'b0; + parameter gt0_bypass_reg2 = 1'b0; + parameter gt1_bypass_reg1 = 1'b0; + parameter gt1_bypass_reg2 = 1'b0; + parameter use_adest_arst = 2'b00; + parameter use_asrc_arst = 2'b00; + parameter use_bdest_arst = 2'b00; + parameter use_bsrc_arst = 2'b00; + + NX_CDC_L #( + .mode(2), // -- 2: B2G_3DFF_G2B + .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(2'b00), + .use_cdest_arst(2'b00), + .use_dsrc_arst(2'b00), + .use_ddest_arst(2'b00), + .gt0_bypass_reg1(gt0_bypass_reg1), + .gt0_bypass_reg2(gt0_bypass_reg2), + .gt1_bypass_reg1(gt1_bypass_reg2), + .gt1_bypass_reg2(gt1_bypass_reg2), + .link_BA(1'b0), + .link_CB(1'b0), + .link_DC(1'b0), + ) _TECHMAP_REPLACE_ ( + .CK1(CK1), + .CK2(CK2), + .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]), + .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]), + .CI1(1'b0), + .CI2(1'b0), + .CI3(1'b0), + .CI4(1'b0), + .CI5(1'b0), + .CI6(1'b0), + .DI1(1'b0), + .DI2(1'b0), + .DI3(1'b0), + .DI4(1'b0), + .DI5(1'b0), + .DI6(1'b0) + ); +endmodule + +module NX_CDC_L_BIN2GRAY(CK1, CK2, BI, AO, BO, AI); + input [5:0] AI; + output [5:0] AO; + input [5:0] BI; + output [5:0] BO; + input CK1; + input CK2; + + NX_CDC_L #( + .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(2'b00), + .use_adest_arst(2'b00), + .use_bsrc_arst(2'b00), + .use_bdest_arst(2'b00), + .use_csrc_arst(2'b00), + .use_cdest_arst(2'b00), + .use_dsrc_arst(2'b00), + .use_ddest_arst(2'b00), + .gt0_bypass_reg1(1'b0), + .gt0_bypass_reg2(1'b0), + .gt1_bypass_reg1(1'b0), + .gt1_bypass_reg2(1'b0), + .link_BA(1'b0), + .link_CB(1'b0), + .link_DC(1'b0), + ) _TECHMAP_REPLACE_ ( + .CK1(CK1), + .CK2(CK2), + .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]), + .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]), + .CI1(1'b0), + .CI2(1'b0), + .CI3(1'b0), + .CI4(1'b0), + .CI5(1'b0), + .CI6(1'b0), + .DI1(1'b0), + .DI2(1'b0), + .DI3(1'b0), + .DI4(1'b0), + .DI5(1'b0), + .DI6(1'b0) + ); +endmodule