mirror of https://github.com/YosysHQ/yosys.git
synth_nanoxplore: remove classic ABC mapping
This commit is contained in:
parent
c053706540
commit
6824ee065a
|
|
@ -1,4 +1,3 @@
|
||||||
(* abc9_lut=1 *)
|
|
||||||
module NX_LUT(input I1, I2, I3, I4, output O);
|
module NX_LUT(input I1, I2, I3, I4, output O);
|
||||||
|
|
||||||
parameter lut_table = 16'h0000;
|
parameter lut_table = 16'h0000;
|
||||||
|
|
@ -10,7 +9,6 @@ assign O = I1 ? s3[1] : s3[0];
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
(* abc9_box, lib_whitebox *)
|
|
||||||
module NX_DFF(input I, CK, L, R, output reg O);
|
module NX_DFF(input I, CK, L, R, output reg O);
|
||||||
|
|
||||||
parameter dff_ctxt = 1'bx;
|
parameter dff_ctxt = 1'bx;
|
||||||
|
|
@ -36,7 +34,6 @@ always @(posedge clock, posedge async_reset)
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
(* abc9_box, lib_whitebox *)
|
|
||||||
module NX_DFR(input I, CK, L, R, output O);
|
module NX_DFR(input I, CK, L, R, output O);
|
||||||
|
|
||||||
parameter data_inv = 1'b0;
|
parameter data_inv = 1'b0;
|
||||||
|
|
@ -67,8 +64,7 @@ assign O = data_inv ? O_reg : ~O_reg;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
|
|
||||||
(* abc9_box, lib_whitebox *)
|
module NX_CY(input A1, A2, A3, A4, B1, B2, B3, B4, input CI, output S1, S2, S3, S4, output CO);
|
||||||
module NX_CY(input A1, A2, A3, A4, B1, B2, B3, B4, (* abc9_carry *) input CI, output S1, S2, S3, S4, (* abc9_carry *) output CO);
|
|
||||||
parameter add_carry = 0;
|
parameter add_carry = 0;
|
||||||
|
|
||||||
wire CI_1;
|
wire CI_1;
|
||||||
|
|
@ -175,14 +171,11 @@ module NX_IOB_O(I, C, T, IO);
|
||||||
assign IO = C ? I : 1'bz;
|
assign IO = C ? I : 1'bz;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
(* abc9_box, lib_whitebox *)
|
|
||||||
module NX_CY_1BIT(CI, A, B, S, CO);
|
module NX_CY_1BIT(CI, A, B, S, CO);
|
||||||
(* abc9_carry *)
|
|
||||||
input CI;
|
input CI;
|
||||||
input A;
|
input A;
|
||||||
input B;
|
input B;
|
||||||
output S;
|
output S;
|
||||||
(* abc9_carry *)
|
|
||||||
output CO;
|
output CO;
|
||||||
parameter first = 1'b0;
|
parameter first = 1'b0;
|
||||||
|
|
||||||
|
|
@ -217,7 +210,6 @@ module NX_BFR(I, O);
|
||||||
assign O = data_inv ? ~I : I;
|
assign O = data_inv ? ~I : I;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
(* abc9_box, lib_whitebox *)
|
|
||||||
module NX_RAM(ACK, ACKC, ACKD, ACKR, BCK, BCKC, BCKD, BCKR, AI1, AI2, AI3, AI4, AI5, AI6, AI7, AI8, AI9, AI10, AI11, AI12, AI13
|
module NX_RAM(ACK, ACKC, ACKD, ACKR, BCK, BCKC, BCKD, BCKR, AI1, AI2, AI3, AI4, AI5, AI6, AI7, AI8, AI9, AI10, AI11, AI12, AI13
|
||||||
, AI14, AI15, AI16, AI17, AI18, AI19, AI20, AI21, AI22, AI23, AI24, BI1, BI2, BI3, BI4, BI5, BI6, BI7, BI8, BI9, BI10
|
, AI14, AI15, AI16, AI17, AI18, AI19, AI20, AI21, AI22, AI23, AI24, BI1, BI2, BI3, BI4, BI5, BI6, BI7, BI8, BI9, BI10
|
||||||
, BI11, BI12, BI13, BI14, BI15, BI16, BI17, BI18, BI19, BI20, BI21, BI22, BI23, BI24, ACOR, AERR, BCOR, BERR, AO1, AO2, AO3
|
, BI11, BI12, BI13, BI14, BI15, BI16, BI17, BI18, BI19, BI20, BI21, BI22, BI23, BI24, ACOR, AERR, BCOR, BERR, AO1, AO2, AO3
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
(* abc9_box, lib_whitebox *)
|
|
||||||
module NX_GCK_U(SI1, SI2, CMD, SO);
|
module NX_GCK_U(SI1, SI2, CMD, SO);
|
||||||
input CMD;
|
input CMD;
|
||||||
input SI1;
|
input SI1;
|
||||||
|
|
@ -31,7 +30,6 @@ module NX_GCK_U(SI1, SI2, CMD, SO);
|
||||||
assign SO = inv_out ? ~SO_int : SO_int;
|
assign SO = inv_out ? ~SO_int : SO_int;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
(* abc9_box, lib_whitebox *)
|
|
||||||
module NX_RFB_U(WCK, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20
|
module NX_RFB_U(WCK, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20
|
||||||
, I21, I22, I23, I24, I25, I26, I27, I28, I29, I30, I31, I32, I33, I34, I35, I36, O1, O2, O3, O4, O5
|
, I21, I22, I23, I24, I25, I26, I27, I28, I29, I30, I31, I32, I33, I34, I35, I36, O1, O2, O3, O4, O5
|
||||||
, O6, O7, O8, O9, O10, O11, O12, O13, O14, O15, O16, O17, O18, O19, O20, O21, O22, O23, O24, O25, O26
|
, O6, O7, O8, O9, O10, O11, O12, O13, O14, O15, O16, O17, O18, O19, O20, O21, O22, O23, O24, O25, O26
|
||||||
|
|
@ -205,7 +203,6 @@ module NX_RFB_U(WCK, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14
|
||||||
mem[WA] <= I[MEM_WIDTH-1:0];
|
mem[WA] <= I[MEM_WIDTH-1:0];
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
(* abc9_box, lib_whitebox *)
|
|
||||||
module NX_WFG_U(R, SI, ZI, SO, ZO);
|
module NX_WFG_U(R, SI, ZI, SO, ZO);
|
||||||
input R;
|
input R;
|
||||||
input SI;
|
input SI;
|
||||||
|
|
|
||||||
|
|
@ -66,9 +66,6 @@ struct SynthNanoXplorePass : public ScriptPass
|
||||||
log(" -noflatten\n");
|
log(" -noflatten\n");
|
||||||
log(" do not flatten design before synthesis\n");
|
log(" do not flatten design before synthesis\n");
|
||||||
log("\n");
|
log("\n");
|
||||||
log(" -abc9\n");
|
|
||||||
log(" use new ABC9 flow (EXPERIMENTAL)\n");
|
|
||||||
log("\n");
|
|
||||||
log(" -nocy\n");
|
log(" -nocy\n");
|
||||||
log(" do not map adders to CY cells\n");
|
log(" do not map adders to CY cells\n");
|
||||||
log("\n");
|
log("\n");
|
||||||
|
|
@ -110,7 +107,7 @@ struct SynthNanoXplorePass : public ScriptPass
|
||||||
}
|
}
|
||||||
|
|
||||||
string top_opt, json_file, family, latches;
|
string top_opt, json_file, family, latches;
|
||||||
bool flatten, abc9, nocy, nodffe, norfram, nobram, noiopad, no_rw_check;
|
bool flatten, nocy, nodffe, norfram, nobram, noiopad, no_rw_check;
|
||||||
std::string postfix;
|
std::string postfix;
|
||||||
int min_ce_use, min_srst_use;
|
int min_ce_use, min_srst_use;
|
||||||
|
|
||||||
|
|
@ -120,7 +117,6 @@ struct SynthNanoXplorePass : public ScriptPass
|
||||||
json_file = "";
|
json_file = "";
|
||||||
family = "";
|
family = "";
|
||||||
flatten = true;
|
flatten = true;
|
||||||
abc9 = false;
|
|
||||||
nocy = false;
|
nocy = false;
|
||||||
nodffe = false;
|
nodffe = false;
|
||||||
norfram = false;
|
norfram = false;
|
||||||
|
|
@ -170,7 +166,7 @@ struct SynthNanoXplorePass : public ScriptPass
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (args[argidx] == "-abc9") {
|
if (args[argidx] == "-abc9") {
|
||||||
abc9 = true;
|
// Removed: ABC9 is the default
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (args[argidx] == "-nocy") {
|
if (args[argidx] == "-nocy") {
|
||||||
|
|
@ -349,19 +345,13 @@ struct SynthNanoXplorePass : public ScriptPass
|
||||||
|
|
||||||
if (check_label("map_luts"))
|
if (check_label("map_luts"))
|
||||||
{
|
{
|
||||||
if (abc9) {
|
std::string abc9_opts = " -lut 4";
|
||||||
std::string abc9_opts = " -maxlut 4";
|
std::string k = "synth_nanoxplore.abc9.W";
|
||||||
std::string k = "synth_nanoxplore.abc9.W";
|
if (active_design && active_design->scratchpad.count(k))
|
||||||
if (active_design && active_design->scratchpad.count(k))
|
abc9_opts += stringf(" -W %s", active_design->scratchpad_get_string(k));
|
||||||
abc9_opts += stringf(" -W %s", active_design->scratchpad_get_string(k));
|
else
|
||||||
else
|
abc9_opts += stringf(" -W %s", RTLIL::constpad.at(k));
|
||||||
abc9_opts += stringf(" -W %s", RTLIL::constpad.at(k));
|
run("abc9" + abc9_opts);
|
||||||
run("abc9" + abc9_opts);
|
|
||||||
} else {
|
|
||||||
std::string abc_args = " -dress";
|
|
||||||
abc_args += " -lut 4";
|
|
||||||
run("abc" + abc_args);
|
|
||||||
}
|
|
||||||
run("techmap -map +/nanoxplore/cells_map.v t:$lut");
|
run("techmap -map +/nanoxplore/cells_map.v t:$lut");
|
||||||
run("opt -fast");
|
run("opt -fast");
|
||||||
run("clean");
|
run("clean");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue