| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
Also properly skip read ports with init value or reset when not making
use of make_outreg. Proper support for matching those will land later.
|
|
|
|
| |
Signed-off-by: gatecat <gatecat@ds0.me>
|
|
|
|
| |
Signed-off-by: gatecat <gatecat@ds0.me>
|
|
|
|
| |
Signed-off-by: gatecat <gatecat@ds0.me>
|
|
|
|
| |
Signed-off-by: Claire Xenia Wolf <claire@clairexen.net>
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Co-authored-by: Grzegorz Latosiński <glatosinski@antmicro.com>
Co-authored-by: Maciej Kurc <mkurc@antmicro.com>
Co-authored-by: Tarachand Pagarani <tpagarani@quicklogic.com>
Co-authored-by: Lalit Sharma <lsharma@quicklogic.com>
Co-authored-by: kkumar23 <kkumar@quicklogic.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Calling log_signal is problematic for several reasons:
- with recent changes, empty string is serialized as { }, which violates
the "no spaces in IdString" rule
- the type (plain / real / signed / string) is dropped, wrongly conflating
functionally different values and potentially introducing a subtle
elaboration bug
Instead, use a custom simple serialization scheme.
|
|
|
|
|
|
|
| |
This prevents issues like processes in whiteboxes triggering an error in
the JSON backend.
Signed-off-by: gatecat <gatecat@ds0.me>
|
|
|
|
| |
values.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
The presence of IS_*_INVERTED on FD* cells follows Vivado, which
apparently has been decided by a dice roll. Just assume false if the
parameter doesn't exist.
Fixes #2559.
|
|
|
|
| |
Signed-off-by: David Shah <dave@ds0.me>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This test pretty much passes by accident — the `prep` command runs
memory_collect without memory_dff first, which prevents merging read
register into the memory, and thus blocks block RAM inference for a
reason completely unrelated to the attribute.
The attribute setting didn't actually work because it was set on the
containing module instead of the actual memory.
|
|
|
|
|
|
|
|
|
| |
When the register being merged into the EN signal happens to be a $sdff,
the current code creates a new $mux for every bit, even if they happen
to be identical (as is usually the case), preventing proper grouping
further down the flow. Fix this by adding a simple cache.
Fixes #2409.
|
|\
| |
| | |
synth_nexus: Initial implementation
|
| |
| |
| |
| | |
Signed-off-by: David Shah <dave@ds0.me>
|
|\ \
| |/
|/| |
Clean up and parallelize testsuite
|
| | |
|
|/
|
|
|
|
|
|
|
|
|
| |
* xilinx: eliminate SCCs from DSP48E1 model
* xilinx: add SCC test for DSP48E1
* Update techlibs/xilinx/cells_sim.v
* xilinx: Gate DSP48E1 being a whitebox behind ALLOW_WHITEBOX_DSP48E1
Have a test that checks it works through ABC9 when enabled
|
|
|
|
|
|
| |
Quartus assumes unsigned multiplication by default, breaking signed
multiplies, so add an input signedness parameter to the MISTRAL_MUL*
cells to propagate to Quartus' <family>_mac cells.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Our techmap rules for $shift and $shiftx cells contained a special path
that aimed to decompose the shift LSB-first instead of MSB-first in
select cases that come up in pmux lowering. This path was needlessly
overcomplicated and contained bugs.
Instead of doing that, just switch over the main path to iterate
LSB-first (except for the specially-handled MSB for signed shifts
and overflow handling). This also makes the code consistent with
shl/shr/sshl/sshr cells, which are already decomposed LSB-first.
Fixes #2346.
|
| |
|
|
|
|
|
| |
Adds -noclkinv option just in case the old behavior was actually useful
to someone.
|
|
|
|
|
|
|
|
|
| |
The main part is converting ice40_dsp to recognize the new FF types
created in opt_dff instead of trying to recognize the mux patterns on
its own.
The fsm call has been moved upwards because the passes cannot deal with
$dffe/$sdff*, and other optimizations don't help it much anyway.
|
|
|
|
|
|
|
|
|
| |
The main part is converting xilinx_dsp to recognize the new FF types
created in opt_dff instead of trying to recognize the patterns on its
own.
The fsm call has been moved upwards because the passes cannot deal with
$dffe/$sdff*, and other optimizations don't help it much anyway.
|
|
|
|
| |
This reverts commit a3a90f6377f251d3b6c5898eb1543f8832493bb8.
|
| |
|
| |
|
| |
|
|\
| |
| | |
anlogic: Use dfflegalize.
|
| | |
|
| |
| |
| |
| | |
This reverts commit 09ecb9b2cf3ab76841d30712bf70dafc6d47ef67.
|
| |
| |
| |
| |
| |
| |
| | |
Of standard yosys cells, xilinx_srl only works on $_DFF_?_ and
$_DFFE_?P_, which get upgraded to $_SDFFE_?P?P_ by dfflegalize at the
point where xilinx_srl is called for non-abc9. Fix this by running
ff_map.v first, resulting in FDRE cells, which are handled correctly.
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
This adds ABC9 support for synth_gowin; drastically improving
synthesis quality.
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
Co-authored-by: Eddie Hung <eddie@fpgeh.com>
|