aboutsummaryrefslogtreecommitdiffstats
path: root/passes/proc/proc_prune.cc
Commit message (Collapse)AuthorAgeFilesLines
* Use C++11 final/override keywords.whitequark2020-06-181-2/+2
|
* kernel: use more ID::*Eddie Hung2020-04-021-1/+1
|
* kernel: SigSpec use more const& + overloads to prevent implicit SigSpecEddie Hung2020-03-131-1/+1
|
* proc_prune: fix handling of exactly identical assigns.whitequark2019-08-081-9/+7
| | | | | | | | | | | | | | | | | Before this commit, in a process like: process $proc$bug.v:8$3 assign $foo \bar switch \sel case 1'1 assign $foo 1'1 assign $foo 1'1 case assign $foo 1'0 end end both of the "assign $foo 1'1" would incorrectly be removed. Fixes #1243.
* proc_prune: Promote partially redundant assignments.Jean-François Nguyen2019-08-011-2/+11
|
* proc_prune: promote assigns to module connections when legal.whitequark2019-07-091-12/+35
| | | | | | | | | | This can pave the way for further transformations by exposing identities that were previously hidden in a process to any pass that uses SigMap. Indeed, this commit removes some ad-hoc logic from proc_init that appears to have been tailored to the output of genrtlil in favor of using `SigMap.apply()`. (This removal is not optional, as the ad-hoc logic cannot cope with the result of running proc_prune; a similar issue was fixed in proc_arst.)
* proc_prune: new pass.whitequark2019-07-091-0/+135
The proc_prune pass is similar in nature to proc_rmdead pass: while proc_rmdead removes branches that never become active because another branch preempts it, proc_prune removes assignments that never become active because another assignment preempts them. Genrtlil contains logic similar to the proc_prune pass, but their purpose is different: genrtlil has to prune assignments to adapt the semantics of blocking assignments in HDLs (latest assignment wins) to semantics of assignments in RTLIL processes (assignment in the most specific case wins). On the other hand proc_prune is a general purpose RTLIL simplification that benefits all frontends, even those not using the Yosys AST library. The proc_prune pass is added to the proc script after proc_rmdead, since it gives better results with fewer branches.