| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|\
| |
| | |
Allow constant function calls in constant function arguments
|
| | |
|
|/
|
|
|
|
|
|
|
|
|
| |
- Signed cell outputs are sign extended when bound to larger wires
- Signed connections are sign extended when bound to larger cell inputs
- Sign extension is performed in hierarchy and flatten phases
- genrtlil indirects signed constants through signed wires
- Other phases producing RTLIL may need to be updated to preserve
signedness information
- Resolves #1418
- Resolves #2265
|
|\
| |
| | |
Adding latch tests for shift&mask AST dynamic part-select enhancements
|
| | |
|
| | |
|
| |
| |
| |
| | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Previously, `$memwr` and `$meminit` cells were always preserved (along
with the memory itself). With this change, they are instead part of the
main cell mark-and-sweep pass: a memory (and its `$meminit` and `$memwr`
cells) is only preserved iff any associated `$memrd` cell needs to be
preserved.
|
|\ \ \
| | | |
| | | | |
Added $high(), $low(), $left(), $right()
|
| | | | |
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
Clean up and parallelize testsuite
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| |_|/ /
|/| | |
| | | |
| | | | |
Signed-off-by: David Shah <dave@ds0.me>
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
* 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
|
|/ / / |
|
|\ \ \
| | | |
| | | | |
Rewrite multirange arrays sizes [n] as [n-1:0]
|
| | | |
| | | |
| | | |
| | | | |
Signed-off-by: Lukasz Dalek <ldalek@antmicro.com>
|
|\ \ \ \
| |_|/ /
|/| | | |
Fix unsupported subarray access detection
|
| |/ /
| | |
| | |
| | | |
Signed-off-by: Lukasz Dalek <ldalek@antmicro.com>
|
|\ \ \
| | | |
| | | | |
Add missing gitignores for test artifacts
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
Allow localparams in constant functions
|
| | | | | |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Module name scope support
|
| |/ / / / |
|
|\ \ \ \ \
| |_|/ / /
|/| | | | |
Fix constant args used with function ports split across declarations
|
| |/ / / |
|
|\ \ \ \
| | | | |
| | | | | |
flatten, techmap: don't canonicalize tpl driven bits via sigmap
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
For connection `assign a = b;`, `sigmap(a)` returns `b`. This is
exactly the opposite of the desired canonicalization for driven bits.
Consider the following code:
module foo(inout a, b);
assign a = b;
endmodule
module bar(output c);
foo f(c, 1'b0);
endmodule
Before this commit, the inout ports would be swapped after flattening
(and cause a crash while attempting to drive a constant value).
This issue was introduced in 9f772eb9.
Fixes #2183.
|
|/ / /
| | |
| | |
| | |
| | |
| | | |
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.
|
|\ \ \
| | | |
| | | | |
techmap/shift_shiftx: Remove the "shiftx2mux" special path.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
|\ \ \ \
| | | | |
| | | | | |
opt_share: Refactor, fix some bugs.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Fixes #2334.
Fixes #2335.
Fixes #2336.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
peeopt.shiftmul: Add a signedness check.
|
| | |_|/ /
| |/| | |
| | | | |
| | | | | |
Fixes #2332.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Remove passes redundant with opt_dff
|
| | | | | | |
|
| | |/ / /
| |/| | | |
|