mirror of
https://github.com/YosysHQ/yosys
synced 2026-03-14 01:00:34 +00:00
Update opt_lut_ins and stat for analogdevices and remove ecp5
This commit is contained in:
parent
da83c93673
commit
52533b0d1c
5 changed files with 16 additions and 15 deletions
|
|
@ -561,7 +561,7 @@ struct statdata_t {
|
|||
}
|
||||
}
|
||||
|
||||
if (tech == "xilinx") {
|
||||
if (tech == "xilinx" || tech == "analogdevices") {
|
||||
log("\n");
|
||||
log(" Estimated number of LCs: %10u\n", estimate_xilinx_lc());
|
||||
}
|
||||
|
|
@ -628,7 +628,7 @@ struct statdata_t {
|
|||
first_line = false;
|
||||
}
|
||||
log("\n }\n");
|
||||
if (tech == "xilinx") {
|
||||
if (tech == "xilinx" || tech == "analogdevices") {
|
||||
log(" \"estimated_num_lc\": %u,\n", estimate_xilinx_lc());
|
||||
}
|
||||
if (tech == "cmos") {
|
||||
|
|
@ -710,7 +710,7 @@ struct statdata_t {
|
|||
log("\n");
|
||||
log(" }");
|
||||
}
|
||||
if (tech == "xilinx") {
|
||||
if (tech == "xilinx" || tech == "analogdevices") {
|
||||
log(",\n");
|
||||
log(" \"estimated_num_lc\": %u", estimate_xilinx_lc());
|
||||
}
|
||||
|
|
@ -908,7 +908,7 @@ struct StatPass : public Pass {
|
|||
log("\n");
|
||||
log(" -tech <technology>\n");
|
||||
log(" print area estimate for the specified technology. Currently supported\n");
|
||||
log(" values for <technology>: xilinx, cmos\n");
|
||||
log(" values for <technology>: xilinx, analogdevices, cmos\n");
|
||||
log("\n");
|
||||
log(" -width\n");
|
||||
log(" annotate internal cell types with their word width.\n");
|
||||
|
|
@ -968,7 +968,7 @@ struct StatPass : public Pass {
|
|||
if (!json_mode)
|
||||
log_header(design, "Printing statistics.\n");
|
||||
|
||||
if (techname != "" && techname != "xilinx" && techname != "cmos" && !json_mode)
|
||||
if (techname != "" && techname != "xilinx" && techname != "analogdevices" && techname != "cmos" && !json_mode)
|
||||
log_cmd_error("Unsupported technology: '%s'\n", techname);
|
||||
|
||||
if (json_mode) {
|
||||
|
|
|
|||
|
|
@ -39,7 +39,8 @@ struct OptLutInsPass : public Pass {
|
|||
log("\n");
|
||||
log(" -tech <technology>\n");
|
||||
log(" Instead of generic $lut cells, operate on LUT cells specific\n");
|
||||
log(" to the given technology. Valid values are: xilinx, lattice, gowin.\n");
|
||||
log(" to the given technology. Valid values are: xilinx, lattice,\n");
|
||||
log(" gowin, analogdevices.\n");
|
||||
log("\n");
|
||||
}
|
||||
void execute(std::vector<std::string> args, RTLIL::Design *design) override
|
||||
|
|
@ -58,7 +59,7 @@ struct OptLutInsPass : public Pass {
|
|||
}
|
||||
extra_args(args, argidx, design);
|
||||
|
||||
if (techname != "" && techname != "xilinx" && techname != "lattice" && techname != "ecp5" && techname != "gowin")
|
||||
if (techname != "" && techname != "xilinx" && techname != "lattice" && techname != "analogdevices" && techname != "gowin")
|
||||
log_cmd_error("Unsupported technology: '%s'\n", techname);
|
||||
|
||||
for (auto module : design->selected_modules())
|
||||
|
|
@ -81,7 +82,7 @@ struct OptLutInsPass : public Pass {
|
|||
inputs = cell->getPort(ID::A);
|
||||
output = cell->getPort(ID::Y);
|
||||
lut = cell->getParam(ID::LUT);
|
||||
} else if (techname == "xilinx" || techname == "gowin") {
|
||||
} else if (techname == "xilinx" || techname == "gowin" || techname == "analogdevices") {
|
||||
if (cell->type == ID(LUT1)) {
|
||||
inputs = {
|
||||
cell->getPort(ID(I0)),
|
||||
|
|
@ -126,11 +127,11 @@ struct OptLutInsPass : public Pass {
|
|||
continue;
|
||||
}
|
||||
lut = cell->getParam(ID::INIT);
|
||||
if (techname == "xilinx")
|
||||
if (techname == "xilinx" || techname == "analogdevices")
|
||||
output = cell->getPort(ID::O);
|
||||
else
|
||||
output = cell->getPort(ID::F);
|
||||
} else if (techname == "lattice" || techname == "ecp5") {
|
||||
} else if (techname == "lattice") {
|
||||
if (cell->type == ID(LUT4)) {
|
||||
inputs = {
|
||||
cell->getPort(ID::A),
|
||||
|
|
@ -236,7 +237,7 @@ struct OptLutInsPass : public Pass {
|
|||
} else {
|
||||
// xilinx, gowin
|
||||
cell->setParam(ID::INIT, new_lut);
|
||||
if (techname == "xilinx")
|
||||
if (techname == "xilinx" || techname == "analogdevices")
|
||||
log_assert(GetSize(new_inputs) <= 6);
|
||||
else
|
||||
log_assert(GetSize(new_inputs) <= 4);
|
||||
|
|
|
|||
|
|
@ -490,7 +490,7 @@ struct SynthAnalogDevicesPass : public ScriptPass
|
|||
techmap_args += " -D LUT_WIDTH=6";
|
||||
run("techmap " + techmap_args);
|
||||
run("xilinx_dffopt");
|
||||
run("opt_lut_ins -tech xilinx");
|
||||
run("opt_lut_ins -tech analogdevices");
|
||||
}
|
||||
|
||||
if (check_label("finalize")) {
|
||||
|
|
@ -499,7 +499,7 @@ struct SynthAnalogDevicesPass : public ScriptPass
|
|||
|
||||
if (check_label("check")) {
|
||||
run("hierarchy -check");
|
||||
run("stat -tech xilinx");
|
||||
run("stat -tech analogdevices");
|
||||
run("check -noinit");
|
||||
run("blackbox =A:whitebox");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ end
|
|||
EOF
|
||||
|
||||
read_verilog -lib +/analogdevices/cells_sim.v
|
||||
equiv_opt -assert -map +/analogdevices/cells_sim.v opt_lut_ins -tech xilinx
|
||||
equiv_opt -assert -map +/analogdevices/cells_sim.v opt_lut_ins -tech analogdevices
|
||||
|
||||
design -load postopt
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ EOF
|
|||
|
||||
read_verilog -lib +/ecp5/cells_sim.v
|
||||
|
||||
equiv_opt -assert -map +/ecp5/cells_sim.v opt_lut_ins -tech ecp5
|
||||
equiv_opt -assert -map +/ecp5/cells_sim.v opt_lut_ins -tech lattice
|
||||
|
||||
design -load postopt
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue