| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
| |
| |
| | |
Signed-off-by: Clifford Wolf <clifford@clifford.at>
|
|/
|
|
| |
Signed-off-by: Clifford Wolf <clifford@clifford.at>
|
|
|
|
|
|
|
|
|
|
| |
* "map": group gates into LUTs;
* "pack": replace gates with LUTs.
This is important because we have FlowMap and DF-Map, and currently
our messages are ambiguous.
Also clean up some other log messages while we're at it.
|
| |
|
|
|
|
| |
Signed-off-by: Clifford Wolf <clifford@clifford.at>
|
|\
| |
| | |
flowmap: construct a max-volume max-flow min-cut, not just any one
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
Signed-off-by: Clifford Wolf <clifford@clifford.at>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
A typical use of `bugpoint` would involve a script with a pass under
test, e.g.:
flowmap -relax -optarea 100
and would be invoked as:
bugpoint -yosys ./yosys -script flowmap.ys -clean -cells
This replaces the current design with the minimal design that still
crashes the `flowmap.ys` script.
`bugpoint` can also be used to perform generic design minimization
using `select`, e.g. the following script:
select i:* %x t:$_MUX_ %i -assert-max 0
would remove all parts of the design except for an unbroken path from
an input to an output port that goes through exactly one $_MUX_ cell.
(The condition is inverted.)
|
|/ |
|
|\
| |
| | |
flowmap: new techmap pass
|
| | |
|
|\ \
| |/
|/| |
opt_expr: refactor and improve simplification of comparisons
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The idea behind this simplification is that a N-bit signal X being
compared with an M-bit constant where M>N and the constant has Nth
or higher bit set, it either always succeeds or always fails.
However, the existing implementation only worked with one-hot signals
for some reason. It also printed incorrect messages.
This commit adjusts the simplification to have as much power as
possible, and fixes other bugs.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
Before this commit, only unsigned comparisons with all-0 would be
simplified. This commit also makes the code handling such comparisons
to be more rigorous and not abort on unexpected input.
|
|\ \
| | |
| | | |
Initialization of Anlogic DFFs
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Sometimes the FF cell might be initialized during the map process, e.g.
some FPGA platforms (Anlogic Eagle and Lattice ECP5 for example) has
only a "SR" pin for a FF for async reset, that resets the FF to the
initial value, which means the async reset value should be set as the
initial value. In this case the DFFINIT pass shouldn't reinitialize it
to a different value, which will lead to error.
Add a "-noreinit" parameter for the safeguard. If a FF is not
technically initialized before DFFINIT pass, the default value should be
set to x.
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
On some platforms the string to initialize DFF might not be "high" and
"low", e.g. with Anlogic TD it's "SET" and "RESET".
Add a "-strinit" parameter for dffinit to allow specify the strings used
for high and low.
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
|
|\ \ \
| | | |
| | | | |
opt_lut: elimination fixes
|
| | | |
| | | |
| | | |
| | | | |
Otherwise, some LUTs will be missed during elimination.
|
| | | | |
|
| | |/
| |/| |
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The initial list of hits was generated with the codespell command
below, and each hit was evaluated and fixed manually while taking
context into consideration.
DIRS="kernel/ frontends/ backends/ passes/ techlibs/"
DIRS="${DIRS} libs/ezsat/ libs/subcircuit"
codespell $DIRS -S *.o -L upto,iff,thru,synopsys,uint
More hits were found by looking through comments and strings manually.
|
| | |
|
| |
| |
| |
| | |
Signed-off-by: Clifford Wolf <clifford@clifford.at>
|
| | |
|
| |
| |
| |
| | |
Previously, only completely empty switches were removed.
|
| |
| |
| |
| |
| |
| |
| | |
The semantics of an RTLIL constant that has less bits than its
declared bit width is zero padding. Therefore, if the output of
memory_collect will be used for simulation, truncating 'x from
the end of \INIT will produce incorrect simulation results.
|
|/
|
|
| |
Signed-off-by: David Shah <davey1576@gmail.com>
|
| |
|
|\
| |
| | |
select: print selection if a -assert-* flag causes an error
|
| | |
|
|\ \
| | |
| | | |
deminout fixes
|
| | |
| | |
| | |
| | | |
Signed-off-by: David Shah <dave@ds0.me>
|
| |/
| |
| |
| | |
Signed-off-by: David Shah <dave@ds0.me>
|
| |
| |
| |
| | |
Signed-off-by: Clifford Wolf <clifford@clifford.at>
|
|\ \
| | |
| | | |
equiv_opt: new command, for verifying optimization passes
|
| | |
| | |
| | |
| | |
| | | |
This allows avoiding techmap crashes e.g. because of large memories
in white-box cell models.
|
| | | |
|
|\ \ \
| | | |
| | | | |
memory_bram: Fix initdata bit order after shuffling
|
| | |/
| |/|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
In some cases the memory_bram pass shuffles the order of the bits in a
memory's RD_DATA port. Although the order of the bits in the WR_DATA and
WR_EN ports is changed to match the RD_DATA port, the order of the bits
in the initialization data is not.
This causes reads of initialized memories to return invalid data (until
the initialization data is overwritten).
This commit fixes the bug by shuffling the initdata bits in exactly the
same order as the RD_DATA/WR_DATA/WR_EN bits.
|
|\ \ \
| | | |
| | | | |
Proof-of-concept: preserve naming through ABC using dress
|
| | | |
| | | |
| | | |
| | | | |
Signed-off-by: David Shah <dave@ds0.me>
|
|\ \ \ \
| | | | |
| | | | | |
rename: add -src, for inferring names from source locations
|