| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
By operating at a layer of abstraction over the rather clumsy Intel primitives,
we can avoid special hacks like `dffinit -highlow` in favour of simple techmapping.
This also makes the primitives much easier to manipulate, and more descriptive
(no more cyclonev_lcell_comb to mean anything from a LUT2 to a LUT6).
|
|\
| |
| | |
ice40/ecp5: add support for both 1364.1 and Synplify/LSE RAM/ROM attributes
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This commit tries to carefully follow the documented behavior of LSE
and Synplify. It will use `syn_ramstyle` attribute if there are any
write ports, and `syn_romstyle` attribute otherwise.
* LSE supports both `syn_ramstyle` and `syn_romstyle`.
* Synplify only supports `syn_ramstyle`, with same values as LSE.
* Synplify also supports `syn_rw_conflict_logic`, which is not
documented as supported for LSE.
Limitations of the Yosys implementation:
* LSE/Synplify support `syn_ramstyle="block_ram,no_rw_check"`
syntax to turn off insertion of transparency logic. There is
currently no way to support multiple valued attributes in
memory_bram. It is also not clear if that is a good idea, since
it can cause sim/synth mismatches.
* LSE/Synplify/1364.1 support block ROM inference from full case
statements. Yosys does not currently perform this transformation.
* LSE/Synplify propagate `syn_ramstyle`/`syn_romstyle` attributes
from the module to the inner memories. There is currently no way
to do this in Yosys (attrmvcp only works on cells and wires).
|
| |
| |
| |
| | |
LSE/Synplify use case insensitive matching.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This commit tries to carefully follow the documented behavior of LSE
and Synplify. It will use `syn_ramstyle` attribute if there are any
write ports, and `syn_romstyle` attribute otherwise.
* LSE supports both `syn_ramstyle` and `syn_romstyle`.
* Synplify only supports `syn_ramstyle`, with same values as LSE.
* Synplify also supports `syn_rw_conflict_logic`, which is not
documented as supported for LSE.
Limitations of the Yosys implementation:
* LSE/Synplify appear to interpret attribute values insensitive
to case. There is currently no way to do this in Yosys (attrmap
can only change case of attribute names).
* LSE/Synplify support `syn_ramstyle="block_ram,no_rw_check"`
syntax to turn off insertion of transparency logic. There is
currently no way to support multiple valued attributes in
memory_bram. It is also not clear if that is a good idea, since
it can cause sim/synth mismatches.
* LSE/Synplify/1364.1 support block ROM inference from full case
statements. Yosys does not currently perform this transformation.
* LSE/Synplify propagate `syn_ramstyle`/`syn_romstyle` attributes
from the module to the inner memories. There is currently no way
to do this in Yosys (attrmvcp only works on cells and wires).
|
| |
| |
| |
| |
| |
| | |
iCE40 does not have LUTRAM. This was erroneously added in commit
caab66111e2b5052bd26c8fd64b1324e7e4a4106, and tested for BRAM,
essentially a duplicate of the "dpram.ys" test.
|
|\ \
| | |
| | | |
opt_expr: optimise $xor/$xnor/$_XOR_/$_XNOR_ -s with constant inputs
|
| | | |
|
|/ / |
|
| | |
|
|\ \
| | |
| | | |
Closes #1717. Add more precise Verilog source location information to AST and RTLIL nodes.
|
| | |
| | |
| | |
| | | |
line number.
|
| | |
| | |
| | |
| | | |
This reverts commit 68f903c6dd7403a4cf280cf71ee02d20345938b5.
|
| | | |
|
| | | |
|
|/ / |
|
| |
| |
| |
| |
| |
| |
| | |
There are multiple other kinds of RAMs supported on these devices, but
RAM16X1D is the only dual-port one.
Fixes #1549
|
|/
|
|
|
|
|
| |
Adds support for mapping logic, including LUTs, wide LUTs, and carry
chains.
Fixes #1547
|
|\
| |
| | |
techmap LSB-first for compatible $shift/$shiftx cells
|
| |\ |
|
| | | |
|
| |/
|/| |
|
| | |
|
|\ \
| | |
| | | |
Fix for non-deterministic test
|
| | | |
|
| | | |
|
|\ \ \
| | | |
| | | | |
Unpermute LUT ordering for ice40/ecp5/xilinx
|
| | | | |
|
|\ \ \ \
| |/ / /
|/| | | |
synth_xilinx: error out if tristate without '-iopad'
|
| | | | |
|
| |_|/
|/| | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
|\ \ \
| | | |
| | | | |
read_aiger: uniquify wires with $aiger<autoidx> prefix
|
| | | | |
|
|\ \ \ \
| |/ / /
|/| | | |
Export wire properties in EDIF
|
| | | | |
|
| | | | |
|
| | | | |
|
|\| | | |
|
| | | | |
|
| |\ \ \ |
|
| | | | | |
|
| | | | | |
|
| |\ \ \ \ |
|
| |\ \ \ \ \ |
|