| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
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
|
| | | | | |
|
| | |/ /
| |/| | |
|
|\ \ \ \
| | | | |
| | | | | |
techmap.CONSTMAP: Handle outputs before inputs.
|
| | |/ /
| |/| |
| | | |
| | | | |
Fixes #2321.
|
|\ \ \ \
| | | | |
| | | | | |
peepopt.muldiv: Add a signedness check.
|
| |/ / /
| | | |
| | | |
| | | | |
Fixes #2318.
|
|\ \ \ \
| |_|_|/
|/| | | |
Support 2D bit arrays in structures. Optimise array indexing.
|
| | | | |
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
Allow %0s $display format specifier
|
| | |_|/
| |/| | |
|
|\ \ \ \
| | | | |
| | | | | |
Propagate const_fold through generate blocks and branches
|
| |/ / / |
|
|\ \ \ \
| | | | |
| | | | | |
Fix generate scoping issues
|
| | |_|/
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
- expand_genblock defers prefixing of items within named sub-blocks
- Allow partially-qualified references to local scopes
- Handle shadowing within generate blocks
- Resolve generate scope references within tasks and functions
- Apply generate scoping to genvars
- Resolves #2214, resolves #1456
|
|\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
zachjs-const-func-block-var
Signed-off-by: Claire Wolf <claire@symbioticeda.com>
|
| | | | | |
|
|\ \ \ \ \
| |_|_|/ /
|/| | | | |
Allow reals as constant function parameters
|
| | | | | |
|
| |_|/ /
|/| | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
To be used with backends that cannot deal with fancy FF types (like blif
or smt).
|
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
Fixes #2311.
|
|\ \ \ \
| | | | |
| | | | | |
equiv_induct: Fix up assumption for $equiv cells in -undef mode.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Before this fix, equiv_induct only assumed that one of the following is
true:
- defined value of A is equal to defined value of B
- A is undefined
This lets through valuations where A is defined, B is undefined, and
the defined (meaningless) value of B happens to match the defined value
of A. Instead, tighten this up to OR of the following:
- defined value of A is equal to defined value of B, and B is not
undefined
- A is undefined
|
| | | | |
| | | | |
| | | | |
| | | | | |
This reverts commit a3a90f6377f251d3b6c5898eb1543f8832493bb8.
|
| | | | | |
|
|\ \ \ \ \
| |/ / / /
|/| | | | |
Avoid generating wires for function args which are constant
|
| | |/ /
| |/| | |
|
| | | | |
|
| | | | |
|
|/ / / |
|
|\ \ \
| | | |
| | | | |
techmap: Add _TECHMAP_CELLNAME_ special parameter.
|