mirror of https://github.com/YosysHQ/yosys.git
synth_gowin: remove classic ABC mapping
This commit is contained in:
parent
737560c471
commit
3a148d7633
|
|
@ -84,9 +84,6 @@ struct SynthGowinPass : 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(" -retime\n");
|
|
||||||
log(" run 'abc' with '-dff -D 1' options\n");
|
|
||||||
log("\n");
|
|
||||||
log(" -nowidelut\n");
|
log(" -nowidelut\n");
|
||||||
log(" do not use muxes to implement LUTs larger than LUT4s\n");
|
log(" do not use muxes to implement LUTs larger than LUT4s\n");
|
||||||
log("\n");
|
log("\n");
|
||||||
|
|
@ -96,9 +93,6 @@ struct SynthGowinPass : public ScriptPass
|
||||||
log(" -noalu\n");
|
log(" -noalu\n");
|
||||||
log(" do not use ALU cells\n");
|
log(" do not use ALU cells\n");
|
||||||
log("\n");
|
log("\n");
|
||||||
log(" -noabc9\n");
|
|
||||||
log(" disable use of new ABC9 flow\n");
|
|
||||||
log("\n");
|
|
||||||
log(" -no-rw-check\n");
|
log(" -no-rw-check\n");
|
||||||
log(" marks all recognized read ports as \"return don't-care value on\n");
|
log(" marks all recognized read ports as \"return don't-care value on\n");
|
||||||
log(" read/write collision\" (same result as setting the no_rw_check\n");
|
log(" read/write collision\" (same result as setting the no_rw_check\n");
|
||||||
|
|
@ -121,7 +115,7 @@ struct SynthGowinPass : public ScriptPass
|
||||||
}
|
}
|
||||||
|
|
||||||
string top_opt, vout_file, json_file, family;
|
string top_opt, vout_file, json_file, family;
|
||||||
bool retime, nobram, nolutram, flatten, nodffe, strict_gw5a_dffs, nowidelut, abc9, noiopads, noalu, no_rw_check, setundef, nodsp;
|
bool nobram, nolutram, flatten, nodffe, strict_gw5a_dffs, nowidelut, noiopads, noalu, no_rw_check, setundef, nodsp;
|
||||||
|
|
||||||
void clear_flags() override
|
void clear_flags() override
|
||||||
{
|
{
|
||||||
|
|
@ -129,14 +123,12 @@ struct SynthGowinPass : public ScriptPass
|
||||||
top_opt = "-auto-top";
|
top_opt = "-auto-top";
|
||||||
vout_file = "";
|
vout_file = "";
|
||||||
json_file = "";
|
json_file = "";
|
||||||
retime = false;
|
|
||||||
flatten = true;
|
flatten = true;
|
||||||
nobram = false;
|
nobram = false;
|
||||||
nodffe = false;
|
nodffe = false;
|
||||||
strict_gw5a_dffs = false;
|
strict_gw5a_dffs = false;
|
||||||
nolutram = false;
|
nolutram = false;
|
||||||
nowidelut = false;
|
nowidelut = false;
|
||||||
abc9 = true;
|
|
||||||
noiopads = false;
|
noiopads = false;
|
||||||
noalu = false;
|
noalu = false;
|
||||||
no_rw_check = false;
|
no_rw_check = false;
|
||||||
|
|
@ -177,7 +169,7 @@ struct SynthGowinPass : public ScriptPass
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (args[argidx] == "-retime") {
|
if (args[argidx] == "-retime") {
|
||||||
retime = true;
|
// Removed: ABC9 does not support retiming.
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (args[argidx] == "-nobram") {
|
if (args[argidx] == "-nobram") {
|
||||||
|
|
@ -209,11 +201,11 @@ struct SynthGowinPass : public ScriptPass
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (args[argidx] == "-abc9") {
|
if (args[argidx] == "-abc9") {
|
||||||
// removed, ABC9 is on by default.
|
// Removed: ABC9 is on by default.
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (args[argidx] == "-noabc9") {
|
if (args[argidx] == "-noabc9") {
|
||||||
abc9 = false;
|
// Removed: ABC9 can't be disabled.
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (args[argidx] == "-noiopads") {
|
if (args[argidx] == "-noiopads") {
|
||||||
|
|
@ -330,8 +322,6 @@ struct SynthGowinPass : public ScriptPass
|
||||||
run("techmap -map +/techmap.v -map +/gowin/arith_map.v");
|
run("techmap -map +/techmap.v -map +/gowin/arith_map.v");
|
||||||
}
|
}
|
||||||
run("opt -fast");
|
run("opt -fast");
|
||||||
if (retime || help_mode)
|
|
||||||
run("abc -dff -D 1", "(only if -retime)");
|
|
||||||
if (!noiopads || help_mode)
|
if (!noiopads || help_mode)
|
||||||
run("iopadmap -bits -inpad IBUF O:I -outpad OBUF I:O "
|
run("iopadmap -bits -inpad IBUF O:I -outpad OBUF I:O "
|
||||||
"-toutpad TBUF ~OEN:I:O -tinoutpad IOBUF ~OEN:O:I:IO", "(unless -noiopads)");
|
"-toutpad TBUF ~OEN:I:O -tinoutpad IOBUF ~OEN:O:I:IO", "(unless -noiopads)");
|
||||||
|
|
@ -361,16 +351,11 @@ struct SynthGowinPass : public ScriptPass
|
||||||
if (check_label("map_luts"))
|
if (check_label("map_luts"))
|
||||||
{
|
{
|
||||||
run("sort");
|
run("sort");
|
||||||
if (nowidelut && abc9) {
|
run("read_verilog -icells -lib -specify +/abc9_model.v");
|
||||||
run("read_verilog -icells -lib -specify +/abc9_model.v");
|
if (nowidelut) {
|
||||||
run("abc9 -maxlut 4 -W 500");
|
run("abc9 -maxlut 4 -W 500");
|
||||||
} else if (nowidelut && !abc9) {
|
} else if (!nowidelut) {
|
||||||
run("abc -lut 4");
|
|
||||||
} else if (!nowidelut && abc9) {
|
|
||||||
run("read_verilog -icells -lib -specify +/abc9_model.v");
|
|
||||||
run("abc9 -maxlut 8 -W 500");
|
run("abc9 -maxlut 8 -W 500");
|
||||||
} else if (!nowidelut && !abc9) {
|
|
||||||
run("abc -lut 4:8");
|
|
||||||
}
|
}
|
||||||
run("clean");
|
run("clean");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue