aboutsummaryrefslogtreecommitdiffstats
path: root/passes
Commit message (Collapse)AuthorAgeFilesLines
* Add dfflegalize pass.Marcelina Kościelnicka2020-07-012-0/+1357
|
* techmap: don't drop attributes on replaced cells.whitequark2020-06-291-2/+3
| | | | | | This was introduced in 76c4ee4ea5cb6a3dc214f66237af22a1bedda010. Fixes #2204.
* Merge pull request #2200 from YosysHQ/mmicko/fix_exposeMiodrag Milanović2020-06-291-7/+23
|\ | | | | expose pass fix
| * Give error that options are exclusiveMiodrag Milanovic2020-06-291-2/+6
| |
| * cleanupMiodrag Milanovic2020-06-291-12/+13
| |
| * expose pass fixMiodrag Milanovic2020-06-291-5/+16
| |
* | test_cell: don't generate directional shifts with \B_SIGNED=1Xiretza2020-06-281-0/+4
|/ | | | | This was made an explicit error in e97e33d, "kernel: require \B_SIGNED=0 on $shl, $sshl, $shr, $sshr.".
* Merge pull request #2168 from whitequark/assert-unused-exprsclairexen2020-06-255-20/+20
|\ | | | | Use (and ignore) the expression provided to log_assert in NDEBUG builds
| * Use [[maybe_unused]] instead of YS_ATTRIBUTE(unused).whitequark2020-06-191-10/+10
| | | | | | | | | | [[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.
| * Remove YS_ATTRIBUTE(unused) where present just for log_assert()/log_debug().whitequark2020-06-194-10/+10
| |
* | Merge pull request #2135 from boqwxp/qbfsat-timeinfoclairexen2020-06-251-1/+6
|\ \ | | | | | | log and qbfsat: Also include child process usage in `PerformanceTimer::query()` and report the time for each call to the QBF-SAT solver
| * | log, qbfsat: Include child process time in `PerformanceTimer::query()` and ↵Alberto Gonzalez2020-06-211-1/+6
| | | | | | | | | | | | report the time for each call to the QBF-SAT solver.
* | | Merge pull request #2093 from boqwxp/qbfsat-bugfixesclairexen2020-06-251-86/+136
|\| | | | | | | | qbfsat: Multiple bugfixes
| * | qbfsat: Simplify solution recovery parsing and tweak the solution regexes.Alberto Gonzalez2020-06-211-22/+12
| | |
| * | qbfsat: Avoid instantiating `AttrObject`s directly.Alberto Gonzalez2020-06-211-9/+6
| | | | | | | | | | | | Co-Authored-By: Claire Wolf <claire@symbioticeda.com>
| * | qbfsat: Simplify solution format and replace `SigBit::str()` with ↵Alberto Gonzalez2020-06-211-19/+37
| | | | | | | | | | | | | | | | | | `log_signal()`. Co-Authored-By: Claire Wolf <claire@symbioticeda.com>
| * | qbfsat: Fixes three bugs.Alberto Gonzalez2020-06-211-5/+17
| | | | | | | | | | | | | | | | | | 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.
| * | qbfsat: Use bit precise mapping for hole value wires and a more robust hole ↵Alberto Gonzalez2020-06-211-80/+113
| |/ | | | | | | spec for writing to and specializing from a solution file.
* | simplemap: Fix $dffsre mapping.Marcelina Kościelnicka2020-06-231-1/+1
| |
* | Update dff2dffe, dff2dffs, zinit to new FF types.Marcelina Kościelnicka2020-06-233-43/+73
| |
* | Add new FF types to simplemap.Marcelina Kościelnicka2020-06-231-8/+133
| |
* | Add support for new FF types in some opt passes.Marcelina Kościelnicka2020-06-233-14/+53
| |
* | Add new builtin FF typesMarcelina Kościelnicka2020-06-231-1/+4
|/ | | | | | | | | | | | | | 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).
* Merge pull request #2173 from whitequark/use-cxx11-final-overridewhitequark2020-06-19153-340/+340
|\ | | | | Use C++11 final/override/[[noreturn]]
| * Use C++11 final/override keywords.whitequark2020-06-18153-340/+340
| |
* | cutpoint: Improve efficiency by iterating over module ports instead of ↵Alberto Gonzalez2020-06-181-9/+10
|/ | | | module wires.
* 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.