Merge pull request #1233 from YosysHQ/clifford/defer

Call "read_verilog" with -defer from "read"
This commit is contained in:
Clifford Wolf 2019-07-31 13:30:52 +02:00 committed by GitHub
commit acd8bc0a74
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 49 deletions

View File

@ -130,18 +130,15 @@ commands and ``help <command>`` to print details on the specified command:
yosys> help help yosys> help help
reading the design using the Verilog frontend: reading and elaborating the design using the Verilog frontend:
yosys> read_verilog tests/simple/fiedler-cooley.v yosys> read -sv tests/simple/fiedler-cooley.v
yosys> hierarchy -top up3down5
writing the design to the console in Yosys's internal format: writing the design to the console in Yosys's internal format:
yosys> write_ilang yosys> write_ilang
elaborate design hierarchy:
yosys> hierarchy
convert processes (``always`` blocks) to netlist elements and perform convert processes (``always`` blocks) to netlist elements and perform
some simple optimizations: some simple optimizations:
@ -163,51 +160,26 @@ write design netlist to a new Verilog file:
yosys> write_verilog synth.v yosys> write_verilog synth.v
a similar synthesis can be performed using yosys command line options only:
$ ./yosys -o synth.v -p hierarchy -p proc -p opt \
-p techmap -p opt tests/simple/fiedler-cooley.v
or using a simple synthesis script: or using a simple synthesis script:
$ cat synth.ys $ cat synth.ys
read_verilog tests/simple/fiedler-cooley.v read -sv tests/simple/fiedler-cooley.v
hierarchy; proc; opt; techmap; opt hierarchy -top up3down5
proc; opt; techmap; opt
write_verilog synth.v write_verilog synth.v
$ ./yosys synth.ys $ ./yosys synth.ys
It is also possible to only have the synthesis commands but not the read/write
commands in the synthesis script:
$ cat synth.ys
hierarchy; proc; opt; techmap; opt
$ ./yosys -o synth.v tests/simple/fiedler-cooley.v synth.ys
The following very basic synthesis script should work well with all designs:
# check design hierarchy
hierarchy
# translate processes (always blocks)
proc; opt
# detect and optimize FSM encodings
fsm; opt
# implement memories (arrays)
memory; opt
# convert to gate logic
techmap; opt
If ABC is enabled in the Yosys build configuration and a cell library is given If ABC is enabled in the Yosys build configuration and a cell library is given
in the liberty file ``mycells.lib``, the following synthesis script will in the liberty file ``mycells.lib``, the following synthesis script will
synthesize for the given cell library: synthesize for the given cell library:
# read design
read -sv tests/simple/fiedler-cooley.v
hierarchy -top up3down5
# the high-level stuff # the high-level stuff
hierarchy; proc; fsm; opt; memory; opt proc; fsm; opt; memory; opt
# mapping to internal cell library # mapping to internal cell library
techmap; opt techmap; opt
@ -222,7 +194,8 @@ synthesize for the given cell library:
clean clean
If you do not have a liberty file but want to test this synthesis script, If you do not have a liberty file but want to test this synthesis script,
you can use the file ``examples/cmos/cmos_cells.lib`` from the yosys sources. you can use the file ``examples/cmos/cmos_cells.lib`` from the yosys sources
as simple example.
Liberty file downloads for and information about free and open ASIC standard Liberty file downloads for and information about free and open ASIC standard
cell libraries can be found here: cell libraries can be found here:
@ -231,20 +204,18 @@ cell libraries can be found here:
- http://www.vlsitechnology.org/synopsys/vsclib013.lib - http://www.vlsitechnology.org/synopsys/vsclib013.lib
The command ``synth`` provides a good default synthesis script (see The command ``synth`` provides a good default synthesis script (see
``help synth``). If possible a synthesis script should borrow from ``synth``. ``help synth``):
For example:
# the high-level stuff read -sv tests/simple/fiedler-cooley.v
hierarchy synth -top up3down5
synth -run coarse
# mapping to internal cells # mapping to target cells
techmap; opt -fast
dfflibmap -liberty mycells.lib dfflibmap -liberty mycells.lib
abc -liberty mycells.lib abc -liberty mycells.lib
clean clean
Yosys is under construction. A more detailed documentation will follow. The command ``prep`` provides a good default word-level synthesis script, as
used in SMT-based formal verification.
Unsupported Verilog-2005 Features Unsupported Verilog-2005 Features

View File

@ -2484,7 +2484,7 @@ struct ReadPass : public Pass {
args[0] = "verific"; args[0] = "verific";
} else { } else {
args[0] = "read_verilog"; args[0] = "read_verilog";
args.erase(args.begin()+1, args.begin()+2); args[1] = "-defer";
} }
Pass::call(design, args); Pass::call(design, args);
return; return;
@ -2498,6 +2498,7 @@ struct ReadPass : public Pass {
if (args[1] == "-formal") if (args[1] == "-formal")
args.insert(args.begin()+1, std::string()); args.insert(args.begin()+1, std::string());
args[1] = "-sv"; args[1] = "-sv";
args.insert(args.begin()+1, "-defer");
} }
Pass::call(design, args); Pass::call(design, args);
return; return;