aboutsummaryrefslogtreecommitdiffstats
path: root/techlibs/xilinx/synth_xilinx.cc
diff options
context:
space:
mode:
authorMarcin Kościelnicki <koriakin@0x04.net>2019-11-01 14:00:15 +0000
committerMarcin Kościelnicki <mwk@0x04.net>2019-11-06 15:11:27 +0100
commitc4bd318e76240d3e6a95109c19641cdfd86517b8 (patch)
tree652f7209fd5b65045084914b04f98fbbaecede3e /techlibs/xilinx/synth_xilinx.cc
parent5110a34dd74bc96c47d4aef47bc155110de2d87e (diff)
downloadyosys-c4bd318e76240d3e6a95109c19641cdfd86517b8.tar.gz
yosys-c4bd318e76240d3e6a95109c19641cdfd86517b8.tar.bz2
yosys-c4bd318e76240d3e6a95109c19641cdfd86517b8.zip
synth_xilinx: Merge blackbox primitive libraries.
First, there are no longer separate cell libraries for xc6s/xc7/xcu. Manually instantiating a primitive for a "wrong" family will result in yosys passing it straight through to the output, and it will be either upgraded or rejected by the P&R tool. Second, the blackbox library is expanded to cover many more families: everything from Spartan 3 up is included. Primitives for Virtex and Virtex 2 are listed in the Python file as well if we ever want to include them, but that would require having two different ISE versions (10.1 and 14.7) available when running cells_xtra.py, and so is probably more trouble than it's worth. Third, the blockram blackboxes are no longer in separate files — there is no practical reason to do so (from synthesis PoV, they are no different from any other cells_xtra blackbox), and they needlessly complicated the flow (among other things, merging them allows the user to use eg. Series 7 primitives and have them auto-upgraded to Ultrascale). Last, since xc5v logic synthesis appears to work reasonably well (the only major problem is lack of blockram inference support), xc5v is now an accepted setting for the -family option.
Diffstat (limited to 'techlibs/xilinx/synth_xilinx.cc')
-rw-r--r--techlibs/xilinx/synth_xilinx.cc25
1 files changed, 3 insertions, 22 deletions
diff --git a/techlibs/xilinx/synth_xilinx.cc b/techlibs/xilinx/synth_xilinx.cc
index 69b071d34..3d4a65c5d 100644
--- a/techlibs/xilinx/synth_xilinx.cc
+++ b/techlibs/xilinx/synth_xilinx.cc
@@ -46,7 +46,7 @@ struct SynthXilinxPass : public ScriptPass
log(" -top <module>\n");
log(" use the specified module as top module\n");
log("\n");
- log(" -family {xcup|xcu|xc7|xc6v|xc6s}\n");
+ log(" -family {xcup|xcu|xc7|xc6v|xc5v|xc6s}\n");
log(" run synthesis for the specified Xilinx architecture\n");
log(" generate the synthesis netlist for the specified family.\n");
log(" default: xc7\n");
@@ -260,7 +260,7 @@ struct SynthXilinxPass : public ScriptPass
}
extra_args(args, argidx, design);
- if (family != "xcup" && family != "xcu" && family != "xc7" && family != "xc6v" && family != "xc6s")
+ if (family != "xcup" && family != "xcu" && family != "xc7" && family != "xc6v" && family != "xc5v" && family != "xc6s")
log_cmd_error("Invalid Xilinx -family setting: '%s'.\n", family.c_str());
if (widemux != 0 && widemux < 2)
@@ -296,26 +296,7 @@ struct SynthXilinxPass : public ScriptPass
else
run("read_verilog -lib +/xilinx/cells_sim.v");
- if (help_mode)
- run("read_verilog -lib +/xilinx/{family}_cells_xtra.v");
- else if (family == "xc6s")
- run("read_verilog -lib +/xilinx/xc6s_cells_xtra.v");
- else if (family == "xc6v")
- run("read_verilog -lib +/xilinx/xc6v_cells_xtra.v");
- else if (family == "xc7")
- run("read_verilog -lib +/xilinx/xc7_cells_xtra.v");
- else if (family == "xcu" || family == "xcup")
- run("read_verilog -lib +/xilinx/xcu_cells_xtra.v");
-
- if (help_mode) {
- run("read_verilog -lib +/xilinx/{family}_brams_bb.v");
- } else if (family == "xc6s") {
- run("read_verilog -lib +/xilinx/xc6s_brams_bb.v");
- } else if (family == "xc6v" || family == "xc7") {
- run("read_verilog -lib +/xilinx/xc7_brams_bb.v");
- } else if (family == "xcu" || family == "xcup") {
- run("read_verilog -lib +/xilinx/xcu_brams_bb.v");
- }
+ run("read_verilog -lib +/xilinx/cells_xtra.v");
run(stringf("hierarchy -check %s", top_opt.c_str()));
}