| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |/
| |
| |
| | |
Signed-off-by: David Shah <dave@ds0.me>
|
|/ |
|
|\
| |
| | |
zinit: handle $__DFFS?E?_[NP][NP][01] too
|
| | |
|
|\ \
| | |
| | | |
Fix handling of ternary with constant condition
|
| |/ |
|
| |
| |
| |
| |
| |
| |
| |
| | |
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).
|
|/
|
|
|
|
|
|
|
|
|
| |
Detect the places in the $alu where the carry bit is constant (due to
const A[i] == B[i] ^ BI) and split it into smaller $alu at these points.
Also, make the existing const-carry detection for low bits more generic
(now handles cases where both BI and CI are constant, but not equal to
one another).
Fixes #1912.
|
|
|
|
| |
Fixes #1704.
|
|\
| |
| | |
support using previously declared types/localparams/parameters in package
|
| |
| |
| |
| |
| |
| |
| | |
(parameters in systemverilog packages can't actually be overridden, so
allowing parameters in addition to localparams doesn't actually add any
new functionality, but it's useful to be able to use the parameter
keyword also)
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
Fixes #1500.
|
| | |
|
|\ \
| | |
| | | |
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.
|
| |/
|/| |
|
|\ \
| | |
| | | |
"techmap -map +/cmp2lcu.v" for decomposing arithmetic compares to $lcu
|
| | | |
|
| | | |
|
| | | |
|
|/ /
| |
| |
| | |
Fixes #1841.
|
|\ \
| | |
| | | |
opt_expr: optimise $xor/$xnor/$_XOR_/$_XNOR_ -s with constant inputs
|
| | | |
|
| | | |
|
| | | |
|
|\ \ \
| | | |
| | | | |
opt_expr: improve performance on $alu and $sub
|
| |/ / |
|
|\ \ \
| | | |
| | | | |
ast: simplify to fully populate dynamic slicing case transformation
|
| |/ / |
|
|\ \ \
| | | |
| | | | |
opt_merge: speedup
|
| |/ / |
|
|\ \ \
| | | |
| | | | |
Support module/package/interface/block scope for typedef names.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This patch should support things like
`define foo(a, b = 3, c) a+b+c
`foo(1, ,2)
which will evaluate to 1+3+2. It also spots mistakes like
`foo(1)
(the 3rd argument doesn't have a default value, so a call site is
required to set it).
Most of the patch is a simple parser for the format in preproc.cc, but
I've also taken the opportunity to wrap up the "name -> definition"
map in a type, rather than use multiple std::map's.
Since this type needs to be visible to code that touches defines, I've
pulled it (and the frontend_verilog_preproc declaration) out into a
new file at frontends/verilog/preproc.h and included that where
necessary.
Finally, the patch adds a few tests in tests/various to check that we
are parsing everything correctly.
|
|\ \ \ \
| | | | |
| | | | | |
techmap: Fix cell names with _TECHMAP_REPLACE_.*
|
| | | | |
| | | | |
| | | | |
| | | | | |
Fixes #1804.
|
|\ \ \ \ \
| |_|/ / /
|/| | | | |
Closes #1762. Adds warnings for `select` arguments not matching any object and for `add` command when no modules selected
|
| | | | |
| | | | |
| | | | |
| | | | | |
Co-Authored-By: N. Engelhardt <nak@symbioticeda.com>
|
| | | | |
| | | | |
| | | | |
| | | | | |
options are set.
|
| | | | | |
|
|\ \ \ \ \
| |_|/ / /
|/| | | | |
Support standard typedef grammar (Fixed)
|