| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
at compile time. This is helpful in build systems like bazel which do not have stable locations for binaries or directories during the compilation phase.
This change should be backwards compatible with the existing behavior.
|
|\
| |
| | |
sim -vcd: add date, version, and option for timescale
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
|/ |
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|\
| |
| | |
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.
|
|\ \
| | |
| | | |
Replace "ILANG" with "RTLIL" everywhere
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The only difference between "RTLIL" and "ILANG" is that the latter is
the text representation of the former, as opposed to the in-memory
graph representation. This distinction serves no purpose but confuses
people: it is not obvious that the ILANG backend writes RTLIL graphs.
Passes `write_ilang` and `read_ilang` are provided as aliases to
`write_rtlil` and `read_rtlil` for compatibility.
|
|/
|
|
|
|
|
|
| |
When an adffe is being legalized, and is not natively supported,
prioritize unmapping to adff over converting to dffsre if dffsre is not
natively supported itself.
Fixes #2361.
|
|
|
|
| |
running proc -nomux will ommit the proc_mux pass
|
|\
| |
| | |
opt_share: Refactor, fix some bugs.
|
| |
| |
| |
| |
| |
| | |
Fixes #2334.
Fixes #2335.
Fixes #2336.
|
|\ \
| | |
| | | |
opt_clean: Fix module keep rules.
|
| |/
| |
| |
| |
| |
| | |
- wires with keep attribute now force a module to be kept
- presence of $memwr and $meminit cells no longer forces a module to be
kept
|
|\ \
| | |
| | | |
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.
|
|\ \ \
| | | |
| | | | |
techmap: Add support for [] wildcards in techmap_celltype.
|
| |/ /
| | |
| | |
| | | |
Fixes #1826.
|
| |/
|/|
| |
| |
| | |
It has no effect on the output ($shiftx doesn't perform any sign
extension whatsoever), so an attempt to use it should be caught early.
|
|/ |
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|