| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
verilog: improved support for recursive functions
|
| | |
|
|/ |
|
| |
|
|
|
|
|
|
|
|
| |
The changes in #2476 ensured that function inputs like `input x;`
retained their single-bit size when instantiated with a constant
argument and turned into a localparam. That change did not handle the
possibility for an input to be redeclared later on with an explicit
width, such as `integer x;`.
|
|\
| |
| | |
genrtlil: fix mux2rtlil generated wire signedness
|
| | |
|
|\ \
| |/
|/| |
Fix constants bound to single bit arguments (fixes #2383)
|
| | |
|
|\ \
| | |
| | | |
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.
|