| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
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.
|
| | |
| | |
| | |
| | | |
Flattening always does "non-recursive" mapping.
|
| | |
| | |
| | |
| | | |
The `celltypeMap` always maps `x` to `{x}`.
|
| | |
| | |
| | |
| | | |
The `design` and `map` designs are always the same when flattening.
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
After splitting the passes, some options can never be activated,
and most conditions involving them become dead. Remove them, and also
all of the newly dead code.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Although the two passes started out very similar, they diverged over
time and now have little in common. Moreover, `techmap` is extremely
complex while `flatten` does not have to be, and this complexity
interferes with improving `flatten`.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
log_signal can result in a string with spaces (when bit selection is
involved), which breaks the rule of IdString not containing whitespace.
Instead, remove the sigspec from the name entirely — given that the
resulting wire will have no users, it will be removed later anyway,
so its name doesn't really matter.
Fixes #2118
|
|\ \ \
| | | |
| | | | |
abc9: -dff improvements
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | |/
| |/| |
|
|\ \ \
| |_|/
|/| | |
abc9: fixes around handling combinatorial loops
|
| |/ |
|
| | |
|
| | |
|
| |
| |
| |
| | |
`rewrite_filename` is already called in `Frontend::extra_args`.
|
| | |
|
|\ \
| | |
| | | |
Clean up `passes/techmap/techmap.cc`
|
| | |
| | |
| | |
| | | |
Co-Authored-By: Eddie Hung <eddie@fpgeh.com>
|