| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
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)
|
| | | | | |
|
|/ / / /
| | | |
| | | |
| | | | |
Signed-off-by: David Shah <dave@ds0.me>
|
| | | |
| | | |
| | | |
| | | | |
Fixes #1781.
|
|\ \ \ \
| | | | |
| | | | | |
Add `exec` command to allow running shell commands from inside Yosys scripts
|
| |/ / / |
|
|/ / / |
|
|\ \ \
| | | |
| | | | |
refixed parsing of constant with comment between size and value
|
| |/ / |
|
|\ \ \
| | | |
| | | | |
Set AST node source location in more parser rules.
|
| | | | |
|
| |/ /
|/| | |
|
|\ \ \
| |/ /
|/| | |
deminout: Don't demote inouts with unused bits
|