Dependencies Between Yosys Passes (hierarchy, proc, memory, fsm, opt, setundef,Alumacc....etc...) #4945
Replies: 1 comment 2 replies
-
I've converted this to a discussion because this is a question not an issue. The Synthesis starter guide goes through the usual ordering of common passes, including a note
It might be not be completely up to date, but there is documentation for the AST and the RTLIL formats. Note that most passes only operate on the RTLIL, not the AST itself (or even the RTL itself). As discussed in the Synthesis starter guide (linked above) and the Synthesis in detail section of the documentation, the main split for passes is whether they operate on the coarse-grain representation (word-level, parametrizable width) or fine-grain representation (bit-level) as in the cell library. In general, cell names like |
Beta Was this translation helpful? Give feedback.
-
I am working on optimizing the logic synthesis flow in Yosys and I want to better understand the dependencies between different passes. Specifically, I would like to know whether there are strong dependencies or recommended execution orders between the following passes:
1.Does proc always need to run after hierarchy? Since hierarchy resolves module instances and eliminates unused modules, should it always precede proc?
2.When should setundef be run relative to opt? Should setundef always be followed by an opt pass to remove unnecessary logic introduced by constant assignments?
3.Future, flatten, dff2dffe, dffsr2dff, clk2fflogic, coolrunner2_sop, alumacc, rmports
are all part of the transformation and optimization process from AST (Abstract Syntax Tree) to RTL Cell types. Should these passes be executed before the RTL-to-generic netlist conversion (e.g., before $Not cell transformations)?
I’d appreciate insights into the best order for these passes in relation to AST → RTL → generic netlist conversion, as well as any dependencies that should be considered.
Beta Was this translation helpful? Give feedback.
All reactions