| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Signed-off-by: Clifford Wolf <clifford@clifford.at>
|
|
|
|
| |
Signed-off-by: Clifford Wolf <clifford@clifford.at>
|
|
|
|
| |
Signed-off-by: Clifford Wolf <clifford@clifford.at>
|
|
|
|
| |
Signed-off-by: Clifford Wolf <clifford@clifford.at>
|
|
|
|
| |
Signed-off-by: Clifford Wolf <clifford@clifford.at>
|
|\
| |
| | |
Document $tribuf and some gates
|
| | |
|
| | |
|
|\ \
| |/
|/| |
flowmap: implement depth relaxation
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* "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>
|
|
|
|
| |
Signed-off-by: Clifford Wolf <clifford@clifford.at>
|
|
|
|
| |
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>
|
|\ \
| | |
| | | |
bugpoint: new pass
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.)
|
|\ \
| | |
| | | |
Rename cells based on the wires they drive.
|
| | | |
|
| | |
| | |
| | |
| | | |
Signed-off-by: Clifford Wolf <clifford@clifford.at>
|
|/ /
| |
| |
| | |
Signed-off-by: Clifford Wolf <clifford@clifford.at>
|
|\ \
| | |
| | | |
Fix cells_sim.v for Achronix FPGA
|
| |/ |
|
| |
| |
| |
| | |
Signed-off-by: Clifford Wolf <clifford@clifford.at>
|
|\ \
| | |
| | | |
Unify usage of noflatten among architectures
|
| |/ |
|
|/
|
|
| |
Signed-off-by: Clifford Wolf <clifford@clifford.at>
|
|\
| |
| | |
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.
|
|\ \
| | |
| | | |
anlogic: implement DRAM initialization
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
As the TD tool doesn't accept the DRAM cell to contain unknown values in
the initial value, the initialzation support of DRAM is previously
skipped.
Now add the support by add a new pass to determine unknown values in the
initial value.
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
|
|\ \ \ |
|
| |\ \ \
| | | | |
| | | | | |
Initialization of Anlogic DFFs
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
As dffinit has already supported for different initialization strings
for DFFs and check for re-initialization, initialization of Anlogic
DFFs are now ready to go.
Support for set the init values of Anlogic DFFs.
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
| | | | | | |
|