| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Signed-off-by: Claire Xenia Wolf <claire@clairexen.net>
|
| |/ / / /
|/| | | | |
|
|\ \ \ \ \
| |/ / / /
|/| | | | |
simlib: Simplify recently changed $mux model
|
|/ / / /
| | | |
| | | |
| | | |
| | | |
| | | | |
The use of a procedural continuous assignment introduced in #3526 was
unintended and is completely unnecessary for the actual change of that
PR.
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
Add miter -cross option
|
|/ / / / |
|
|\ \ \ \
| | | | |
| | | | | |
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.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Add smtmap.v describing the smt2 backend's behavior for undef bits
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
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.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
smtbmc: Do not assume skipped assertions when loading a witness trace
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
This is not valid when the prefix of a trace already violates
assertions. This can happen when the trace generating solver doesn't
look for a minimal length counterexample.
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
Replace GNU specific invocation of basename(1) with the equivalent POSIX one
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
POSIX one. The tests now complete on BSD as well as GNU/Linux.
|
|\ \ \ \ \ \ \ \
| | | | | | | | |
| | | | | | | | | |
Failure to read FST files on *BSD systems
|
| | | | | | | | | |
|
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | | |
via dup(fileno());gzdopen() because stdio might have buffered data from
the underlying file meaning that the underlying seek position isn't what
we think it is.
|
| | | | | | | | | |
|
| |/ / / / / / /
|/| | | | | | | |
|
|\ \ \ \ \ \ \ \
| |_|_|_|/ / / /
|/| | | | | | | |
Update versions of CI actions used
|
|/ / / / / / / |
|
| |_|/ / / /
|/| | | | | |
|
| |/ / / /
|/| | | |
| | | | |
| | | | | |
Signed-off-by: Claire Xenia Wolf <claire@clairexen.net>
|
| | | | | |
|
| | | | |
| | | | |
| | | | | |
I have added an optional flag to smtbmc that causes failed temporal induction counterexample traces to be checked for duplicate states and reported to the user, since loops in the counterexample mean that increasing the induction depth won't help prove a design's safety properties.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
smtbmc: Fix witness handling for k-induction failures
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
The "uninitialized" value is a _list_ of chunks that are part of the
initial state for the witness trace.
|
| | | | | | |
|
|\ \ \ \ \ \
| |/ / / / /
|/| | | | | |
verific: enable import all cells
|
| | | | | | |
|
|/ / / / / |
|
| | | | | |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
smt2/smtbmc: Fix FF witness data for fine grained or multi chunk FFs
|
|/ / / / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The witness metadata was missing fine grained FFs completely and for
coarse grained FFs where the output connection has multiple chunks it
lacked the offset of the chunk within the SMT expression. This fixes
both, the later by adding an "smtoffset" field to the metadata.
|
|/ / / / |
|
|\ \ \ \
| | | | |
| | | | | |
equiv_opt and clk2fflogic fixes
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | | |
Signed-off-by: Claire Xenia Wolf <claire@clairexen.net>
|
| | | | |
| | | | |
| | | | |
| | | | | |
Signed-off-by: Claire Xenia Wolf <claire@clairexen.net>
|
| | | | |
| | | | |
| | | | |
| | | | | |
Signed-off-by: Claire Xenia Wolf <claire@clairexen.net>
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This reverts commit 08be796cb8b1890923e459cda92211fda763f0c1, reversing
changes made to 38dbb44fa0815b1fe80e68e17798aaa341d998cd.
This fixes #2728. PR #641 did not actually "fix" #639.
The actual issue in #639 is not equiv_make, but assumptions in equiv_simple
that are not true for the test case provided in #639.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This is a complete rewrite of the FF replacing code.
The previous implementation tried to implement the negative hold time by
wrapping async control signals individually with pulse stretching. This
did not correctly model the interaction between different simultaneously
changing inputs (e.g. a falling ALOAD together with a changing AD would
load the changed AD instead of the value AD had when ALOAD was high; a
falling CLR could mask a raising SET for one cycle; etc.).
The new approach first has the logic for all updates using only sampled
values followed by the logic for all updates using only current values.
That way, e.g., a falling ALOAD will load the sampled AD value but a
still active ALOAD will load the current AD value.
The new code also has deterministic behavior for the initial state: no
operation is active when that operation would depend on a specific
previous signal value. This also means clk2fflogic will no longer
generate any additional uninitialized FFs.
I also documented the negative hold time behavior in the help message,
copying the relevant part from async2sync's help messages.
|
| | | | | |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
backends: protobuf: removed protobuf backend
|
|/ / / / / |
|
| | | | | |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Add BLIF names command input plane size check
|