| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Parallel connections do not allow matching different bit widths.
A full connection has to be used instead.
Allows iverilog to parse the simulation library with hardware path delays enabled.
|
|\ |
|
| | |
|
|\ \
| | |
| | | |
gowin: Add new types of oscillator
|
| | | |
|
|\ \ \
| | | |
| | | | |
gowin: Add support for emulated differential output
|
| |/ / |
|
| | |
| | |
| | |
| | | |
Signed-off-by: gatecat <gatecat@ds0.me>
|
| | |
| | |
| | | |
The DSP48E1 implementation checked the wrong attribute (i.e. CREG) to initialize the D input register. This PR fixes 3680
|
| |/
|/|
| |
| | |
Signed-off-by: gatecat <gatecat@ds0.me>
|
| | |
|
| | |
|
|/ |
|
|\
| |
| | |
gowin: add a new type of PLL - PLLVR
|
| |
| |
| |
| |
| |
| |
| | |
This primitive is used in the GW1NS-4, GW1NS-4C, GW1NSR-4, GW1NSR-4C and
GW1NSER-4C chips.
Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
|
|\ \
| |/
|/| |
New xprop pass
|
| |
| |
| |
| |
| |
| | |
The new bitwise case equality (`$bweqx`) and bitwise mux (`$bwmux`)
cells enable compact encoding and decoding of 3-valued logic signals
using multiple 2-valued signals.
|
| | |
|
| |
| |
| |
| |
| |
| | |
iverilog complains about implicitly truncating LUT when connecting it to
the `$bmux` A input. This explicitly truncates it to avoid that warning
without changing the behaviour otherwise.
|
| | |
|
| |
| |
| |
| |
| | |
This updates satgen and simlib to use a `$pmux` model where the output
is fully X when the S input is not all zero or one-hot with no x bits.
|
|/
|
|
| |
Signed-off-by: gatecat <gatecat@ds0.me>
|
|
|
|
| |
Signed-off-by: gatecat <gatecat@ds0.me>
|
|
|
|
| |
Signed-off-by: gatecat <gatecat@ds0.me>
|
|
|
|
| |
Signed-off-by: gatecat <gatecat@ds0.me>
|
| |
|
|
|
|
| |
implementation
|
| |
|
| |
|
| |
|
|
|
|
| |
through to synth)
|
| |
|
|
|
|
|
|
| |
The use of a procedural continuous assignment introduced in #3526 was
unintended and is completely unnecessary for the actual change of that
PR.
|
|\
| |
| | |
Consistent $mux undef handling
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* Change simlib's $mux cell to use the ternary operator as $_MUX_
already does
* Stop opt_expr -keepdc from changing S=x to S=0
* Change const eval of $mux and $pmux to match the updated simlib
(fixes sim)
* The sat behavior of $mux already matches the updated simlib
The verilog frontend uses $mux for the ternary operators and this
changes all interpreations of the $mux cell (that I found) to match the
verilog simulation behavior for the ternary operator. For 'if' and
'case' expressions the frontend may also use $mux but uses $eqx if the
verilog simulation behavior is requested with the '-ifx' option.
For $pmux there is a remaining mismatch between the sat behavior and the
simlib behavior. Resolving this requires more discussion, as the $pmux
cell does not directly correspond to a specific verilog construct.
|
|/
|
|
|
|
|
|
|
| |
Some builtin cells have an undefined (x) output even when all inputs are
defined. This is not natively supported by the formal backends which
will produce a fully defined value instead. This can lead to issues when
combining different backends in a formal flow. To work around these,
this adds a file containing verilog implementation of cells matching the
fully defined behavior implemented by the smt2 backend.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
LiberoSoc don't like unused nets.
|
| |
|
|
|
|
|
| |
This parameter is set by LiberoSoc IPs, so it is needed to avoid
errors when using those IPs.
|
|
|
|
|
|
| |
sf2 ff have no initial values, but some IP cores use initial values.
In order to use those cores on sf2, it is required to discard the
initial value (to be carefully used).
|
|
|
|
|
|
|
|
|
| |
Uses the regex below to search (using vscode):
^\t\tlog\("(.{10,}(?<!\\n)|.{81,}\\n)"\);
Finds any log messages double indented (which help messages are)
and checks if *either* there are is no newline character at the end,
*or* the number of characters before the newline is more than 80.
|
|
|
|
|
|
|
| |
These can be used to protect undefined flip-flop initialization values
from optimizations that are not sound for formal verification and can
help mapping all solver-provided values in witness traces for flows that
use different backends simultaneously.
|