| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Thanks to @mwk for the gate mapping part of the ABC scripts.
Co-Authored-By: Marcelina Kościelnicka <mwk@0x04.net>
|
|\
| |
| | |
expose pass fix
|
| | |
|
| | |
|
| | |
|
|/
|
|
|
| |
This was made an explicit error in e97e33d, "kernel: require \B_SIGNED=0
on $shl, $sshl, $shr, $sshr.".
|
|\
| |
| | |
Use (and ignore) the expression provided to log_assert in NDEBUG builds
|
| |
| |
| |
| |
| | |
[[maybe_unused]] is available since C++17, so this commit adds
a polyfill YS_MAYBE_UNUSED. Once we require C++17 we can drop it.
|
| | |
|
|\ \
| | |
| | | |
log and qbfsat: Also include child process usage in `PerformanceTimer::query()` and report the time for each call to the QBF-SAT solver
|
| | |
| | |
| | |
| | | |
report the time for each call to the QBF-SAT solver.
|
|\| |
| | |
| | | |
qbfsat: Multiple bugfixes
|
| | | |
|
| | |
| | |
| | |
| | | |
Co-Authored-By: Claire Wolf <claire@symbioticeda.com>
|
| | |
| | |
| | |
| | |
| | |
| | | |
`log_signal()`.
Co-Authored-By: Claire Wolf <claire@symbioticeda.com>
|
| | |
| | |
| | |
| | |
| | |
| | | |
1. Infinite loop in the optimization procedure when the first solution found while maximizing is at zero.
2. A signed-ness issue when maximizing.
3. Erroneously entering bisection mode with no wire to optimize.
|
| |/
| |
| |
| | |
spec for writing to and specializing from a solution file.
|
| | |
|
| | |
|
| | |
|
| | |
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new types include:
- FFs with async reset and enable (`$adffe`, `$_DFFE_[NP][NP][01][NP]_`)
- FFs with sync reset (`$sdff`, `$_SDFF_[NP][NP][01]_`)
- FFs with sync reset and enable, reset priority (`$sdffs`, `$_SDFFE_[NP][NP][01][NP]_`)
- FFs with sync reset and enable, enable priority (`$sdffce`, `$_SDFFCE_[NP][NP][01][NP]_`)
- FFs with async reset, set, and enable (`$dffsre`, `$_DFFSRE_[NP][NP][NP][NP]_`)
- latches with reset or set (`$adlatch`, `$_DLATCH_[NP][NP][01]_`)
The new FF types are not actually used anywhere yet (this is left
for future commits).
|
|\
| |
| | |
Use C++11 final/override/[[noreturn]]
|
| | |
|
|/
|
|
| |
module wires.
|
|\
| |
| | |
splitnets: Cleanup and efficiency improvements
|
| | |
|
| | |
|
|\|
| |
| | |
splitnets: propagate (*hdlname*) and disambiguate via start_offset
|
| |
| |
| |
| | |
This allows reliably coalescing the split wires later.
|
|/ |
|
|
|
|
| |
Signed-off-by: Claire Wolf <claire@symbioticeda.com>
|
|
|
|
| |
Signed-off-by: Claire Wolf <claire@symbioticeda.com>
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before this commit, `flatten` matched the template objects with
the newly created objects solely by their name. Because of this,
it could be confused by code such as:
module bar();
$dff a();
endmodule
module foo();
bar b();
$dff \b.a ();
endmodule
After this commit, `flatten` avoids every possible case of name
collision.
Fixes #2106.
|
|\
| |
| | |
Silence warning in select.cc and pass some more args by ref
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Before this patch, the code passed around std::string objects by
value. It's probably not a hot-spot, but it can't hurt to avoid the
copying.
Removing the copy and clean-up code means the resulting code is ~6.1kb
smaller when compiled with GCC 9.3 and standard settings.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Pass a string argument by reference
- Avoid multiple calls to IdString::str and IdString::c_str
- Avoid combining checks for size > 0 and first char (C strings are
null terminated, so foo[0] != '\0' implies that foo has positive
length)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
With GCC 9.3, at least, compiling select.cc spits out a warning about
an implausible bound being passed to strncmp. This comes from inlining
IdString::compare(): it turns out that passing std::string::npos as a
bound to strncmp triggers it.
This patch replaces the compare call with a memcmp with the same
effect. The repeated calls to IdString::c_str are slightly
inefficient, but I'll address that in a follow-up commit.
|
|\ \
| | |
| | | |
Simplify a modport check in hierarchy.cc
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This code originally comes from commit 458a940. When an interface is
used via a modport, code in genrtlil.cc sets '\\interface_type' and
'\\interface_modport' properties on the wire.
In hierarchy.cc, we pick up the modport name and add it to a dict
called modports_used_in_submodule (that maps connection source to
modport name).
Before this patch, the modport name is retrieved as a strpool and then
iterated over in an arbitrary order, discarding all entries but the
last. In practice, the pool will always have 0 or 1 entries because
the string used to construct it is a valid identifier, so doesn't
contain any pipe symbols.
This patch changes the code to retrieve the modport name as just a
string. This will have the same effect in practice, but may be a bit
less confusing!
The code also gets moved down closer to where the result is used,
which might be a bit more efficient since we won't always get as far
as the check.
The patch also removes some commented-out code, which I think was
intended to add some typechecking at some point, but was never
implemented. Since this dates back to October 2018, I think it makes
more sense to just take it out.
|
|\ \
| | |
| | | |
Split `flatten` from `techmap` and simplify it
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
`flatten` cannot derive modules in most cases because that would just
yield processes, and it does not support `-autoproc`; in practice
`flatten` has to be preceded by a call to `hierarchy`, which makes
deriving unnecessary.
|
| | |
| | |
| | |
| | | |
Remove redundant sigmaps.
|
| | |
| | |
| | |
| | |
| | | |
Flattening does not benefit from topologically sorting cells within
a module when processing them.
|
| | |
| | |
| | |
| | |
| | | |
Flatten is non-recursive and doesn't need to keep track of handled
cells.
|