aboutsummaryrefslogtreecommitdiffstats
path: root/passes/techmap/flatten.cc
Commit message (Collapse)AuthorAgeFilesLines
* flatten: Keep sigmap around between flatten_cell invocations.Marcelina Koƛcielnicka2021-11-021-3/+4
| | | | Fixes #3064.
* Fixing old e-mail addresses and deadnamesClaire Xenia Wolf2021-06-081-1/+1
| | | | | | | | s/((Claire|Xen|Xenia|Clifford)\s+)+(Wolf|Xen)\s+<(claire|clifford)@(symbioticeda.com|clifford.at|yosyshq.com)>/Claire Xenia Wolf <claire@yosyshq.com>/gi; s/((Nina|Nak|N\.)\s+)+Engelhardt\s+<nak@(symbioticeda.com|yosyshq.com)>/N. Engelhardt <nak@yosyshq.com>/gi; s/((David)\s+)+Shah\s+<(dave|david)@(symbioticeda.com|yosyshq.com|ds0.me)>/David Shah <dave@ds0.me>/gi; s/((Miodrag)\s+)+Milanovic\s+<(miodrag|micko)@(symbioticeda.com|yosyshq.com)>/Miodrag Milanovic <micko@yosyshq.com>/gi; s,https?://www.clifford.at/yosys/,http://yosyshq.net/yosys/,g;
* kernel/rtlil: Extract some helpers for checking memory cell types.Marcelina Koƛcielnicka2021-05-221-2/+2
| | | | | | There will soon be more (versioned) memory cells, so handle passes that only care if a cell is memory-related by a simple helper call instead of a hardcoded list.
* flatten: rewrite memid in memwr actions.whitequark2021-04-091-0/+3
|
* flatten: clarify confusing error message.whitequark2021-01-261-1/+1
|
* Sign extend port connections where necessaryZachary Snow2020-12-181-1/+4
| | | | | | | | | | | - Signed cell outputs are sign extended when bound to larger wires - Signed connections are sign extended when bound to larger cell inputs - Sign extension is performed in hierarchy and flatten phases - genrtlil indirects signed constants through signed wires - Other phases producing RTLIL may need to be updated to preserve signedness information - Resolves #1418 - Resolves #2265
* flatten, techmap: don't canonicalize tpl driven bits via sigmap.whitequark2020-08-261-4/+3
| | | | | | | | | | | | | | | | | | | | 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.
* Use C++11 final/override keywords.whitequark2020-06-181-2/+2
|
* 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.
* 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-041-7/+1
|
* flatten: rename techmap-related stuff. NFC.whitequark2020-06-041-16/+16
|
* techmap, flatten: remove dead options.whitequark2020-06-041-703/+44
| | | | | | 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-031-0/+1148
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`.