Transforms
High-level transformations for rewriting and simplifying Verilog
modules.
Subtopics
- Expression-sizing
- Calculate the widths and types of expressions.
- Occform
- Transform assignments into occurrences.
- Oprewrite
- Rewrite expressions to eliminate various operators.
- Expand-functions
- Expand away function declarations and calls.
- Delayredux
- Convert delays into explicit module instances.
- Unparameterization
- Expand away modules with parameters; similar to the idea of
elaboration of the design.
- Caseelim
- Replace vl-casestmts with equivalent vl-ifstmts.
- Split
- Split up expressions by generating new wires.
- Selresolve
- Simplification of select expressions, e.g., mywire[3-1].
- Weirdint-elim
- Replace integer literals with X and Z values with concatenations of
generated wires.
- Vl-delta
- A set of changes to be made to a module.
- Replicate-insts
- Eliminate arrays of gate and module instances.
- Rangeresolve
- Simplification of ranges, e.g., reg [6-1:0]
- Propagate
- Eliminate assignments to simple "intermediate" wires. (UNSOUND)
- Clean-selects
- Simplify concatenations and selects throughout a module.
- Clean-params
- Eliminate unused parameters from modules.
- Blankargs
- A transformation which "fills in" blank arguments.
- Inline-mods
- A transform for inlining basic modules.
- Expr-simp
- Carry out basic expression simplification. (UNSOUND)
- Trunc
- Eliminate implicit truncations in assignments
- Always-top
- Transforms for synthesizing always blocks.
- Gatesplit
- Split up gates with "extra" terminals.
- Gate-elim
- Convert gate instances into instances of VL primitives.
- Expression-optimization
- Simplify expressions in a few trivial ways, mainly to clean up ugly
generated expressions.
- Elim-supplies
- Elimination of supply0 and supply1 wires
- Wildelim
- Elimination of wildcard equality operators, ==? and !=?.
- Drop-blankports
- Eliminate "blank ports" from modules and delete all corresponding
arguments from module instances.
- Clean-warnings
- A transform to clean up all the warnings in a design.
- Addinstnames
- Name any unnamed gate or module instances
- Custom-transform-hooks
- Ways of extending vl-simplify with custom transformations.
- Annotate
- A first step in most transformation sequences. Applies several
basic, preliminary transforms to normalize the original design.
- Latchcode
- Simple pattern matching for recognizing latches.
- Elim-unused-vars
- Remove any variable declarations that are never used.
- Problem-modules
- Eliminate modules (that the user) says cause problems.