aboutsummaryrefslogtreecommitdiffstats
path: root/passes
Commit message (Collapse)AuthorAgeFilesLines
* Use C++11 final/override keywords.whitequark2020-06-18153-340/+340
|
* Merge pull request #2153 from boqwxp/splitnets-cleanupN. Engelhardt2020-06-181-16/+19
|\ | | | | splitnets: Cleanup and efficiency improvements
| * splitnets: Clean up pseudo-private member usageAlberto Gonzalez2020-06-131-7/+6
| |
| * splitnets: Slightly improve efficiency by avoiding some unnecessary lookupsAlberto Gonzalez2020-06-131-9/+13
| |
* | Merge pull request #2142 from whitequark/splitnets-hdlnamewhitequark2020-06-181-0/+4
|\| | | | | splitnets: propagate (*hdlname*) and disambiguate via start_offset
| * splitnets: propagate (*hdlname*) and disambiguate via start_offset.whitequark2020-06-101-0/+4
| | | | | | | | This allows reliably coalescing the split wires later.
* | msvc does not support designated initializers in structsAnonymous Maarten2020-06-171-5/+5
|/
* Drive-by modernization in sat.ccClaire Wolf2020-06-091-4/+4
| | | | Signed-off-by: Claire Wolf <claire@symbioticeda.com>
* Do not optimize away FFs in "prep" and Verific fron-endClaire Wolf2020-06-091-5/+12
| | | | Signed-off-by: Claire Wolf <claire@symbioticeda.com>
* flatten: accept processes.whitequark2020-06-091-8/+8
|
* flatten: preserve original object names via hdlname attribute.whitequark2020-06-081-5/+16
|
* flatten: only prepend $flatten once per wire.whitequark2020-06-081-2/+6
|
* flatten: make hygienic.whitequark2020-06-081-155/+116
| | | | | | | | | | | | | | | | | | | | 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.
* Merge pull request #2085 from rswarbrick/selectclairexen2020-06-081-14/+19
|\ | | | | Silence warning in select.cc and pass some more args by ref
| * Pass some more args by reference in select.ccRupert Swarbrick2020-05-271-7/+7
| | | | | | | | | | | | | | | | | | 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.
| * Minor optimisations in select.cc's match_ids functionRupert Swarbrick2020-05-271-9/+11
| | | | | | | | | | | | | | | | | | | | - 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)
| * Silence warning in select.ccRupert Swarbrick2020-05-271-1/+4
| | | | | | | | | | | | | | | | | | | | | | 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.
* | Merge pull request #2089 from rswarbrick/modportsclairexen2020-06-081-13/+6
|\ \ | | | | | | Simplify a modport check in hierarchy.cc
| * | Simplify a modport check in hierarchy.ccRupert Swarbrick2020-05-261-13/+6
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Merge pull request #2105 from whitequark/split-flatten-off-techmapclairexen2020-06-083-325/+527
|\ \ | | | | | | Split `flatten` from `techmap` and simplify it
| * | flatten: clean up log messages.whitequark2020-06-041-1/+1
| | |
| * | flatten: topologically sort modules.whitequark2020-06-041-55/+47
| | |
| * | flatten: simplify.whitequark2020-06-041-43/+7
| | | | | | | | | | | | | | | | | | | | | `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.
| * | flatten: simplify. NFC.whitequark2020-06-041-7/+3
| | | | | | | | | | | | Remove redundant sigmaps.
| * | flatten: simplify.whitequark2020-06-041-35/+0
| | | | | | | | | | | | | | | Flattening does not benefit from topologically sorting cells within a module when processing them.
| * | flatten: simplify. NFC.whitequark2020-06-041-11/+4
| | | | | | | | | | | | | | | Flatten is non-recursive and doesn't need to keep track of handled cells.
| * | flatten: simplify. NFC.whitequark2020-06-041-6/+4
| | | | | | | | | | | | Flattening always does "non-recursive" mapping.
| * | flatten: simplify. NFC.whitequark2020-06-041-73/+39
| | | | | | | | | | | | The `celltypeMap` always maps `x` to `{x}`.
| * | flatten: simplify. NFC.whitequark2020-06-041-8/+8
| | | | | | | | | | | | The `design` and `map` designs are always the same when flattening.
| * | RTLIL: factor out RTLIL::Module::addMemory. NFC.whitequark2020-06-042-14/+2
| | |
| * | flatten: rename techmap-related stuff. NFC.whitequark2020-06-041-16/+16
| | |
| * | techmap, flatten: remove dead options.whitequark2020-06-042-928/+212
| | | | | | | | | | | | | | | | | | 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.
| * | flatten: split from techmap.whitequark2020-06-033-93/+1149
| | | | | | | | | | | | | | | | | | | | | 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`.
* | | fsm_extract: avoid calling log_signal to determine wire nameMarcelina Kościelnicka2020-06-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | Merge pull request #2077 from YosysHQ/eddie/abc9_dff_improveEddie Hung2020-06-041-19/+60
|\ \ \ | | | | | | | | abc9: -dff improvements
| * | | abc9_ops: fix commentEddie Hung2020-05-301-1/+1
| | | |
| * | | abc9_ops: update messaging (credit to @Xiretza for spotting)Eddie Hung2020-05-301-4/+4
| | | |
| * | | abc9_ops: optimise to not derive unless attribute existsEddie Hung2020-05-291-4/+8
| | | |
| * | | abc9_ops: -reintegrate use SigMap to remove (* init *) from $_DFF_[NP]_Eddie Hung2020-05-291-5/+22
| | | |
| * | | abc9_ops: -reintegrate to preserve flop namesEddie Hung2020-05-251-5/+25
| | |/ | |/|
* | | Merge pull request #2082 from YosysHQ/eddie/abc9_scc_fixesEddie Hung2020-06-031-2/+4
|\ \ \ | |_|/ |/| | abc9: fixes around handling combinatorial loops
| * | abc9_ops: -prep_xaiger exclude (* abc9_keep *) wires from toposortEddie Hung2020-05-251-2/+4
| |/
* | techmap: remove dead variable. NFC.whitequark2020-06-031-1/+0
| |
* | techmap: use C++11 default member initializers. NFC.whitequark2020-06-021-16/+6
| |
* | techmap: simplify.whitequark2020-06-021-7/+1
| | | | | | | | `rewrite_filename` is already called in `Frontend::extra_args`.
* | techmap: use +/techmap.v instead of an ad-hoc code generator.whitequark2020-06-023-16/+1
| |
* | Merge pull request #1862 from boqwxp/cleanup_techmapclairexen2020-05-313-153/+158
|\ \ | | | | | | Clean up `passes/techmap/techmap.cc`
| * | techmap: Replace naughty `const_cast<>()`s.Alberto Gonzalez2020-05-141-2/+4
| | | | | | | | | | | | Co-Authored-By: Eddie Hung <eddie@fpgeh.com>
| * | techmap: Replace pseudo-private member usage with the range accessor ↵Alberto Gonzalez2020-05-141-3/+3
| | | | | | | | | | | | function and some naughty `const_cast<>()`s.
| * | techmap: sort celltypeMap as it determines techmap orderEddie Hung2020-05-141-1/+5
| | |