When using spyglass to do netlist audit, there is a rule called HiDeFCombLogicSnakePath. For backend design, it’s better avoid snake paths in the design. And what’s a snake path?
When using spyglass to do netlist audit, there is a rule called HiDeFCombLogicSnakePath. For backend design, it’s better avoid snake paths in the design. And what’s a snake path?
Snake Path:
Snake path is a combinational path going through many blocks of the design.
Disadvantage of Snake Path:
Timing budgeting of snake paths is very difficult. It’s hard to arrange timing between different blocks. In simple words, combinational snake path is diffcult to meet timing.
Snake Path Analysis:
Above pic is an example of poor partitioning. In the example, the critical path is divided between two modules. Synthesis cannot by default move logic across hierarchical boundaries. Therefore, Design Compiler cannot share gates between the two modules.
This problem is further exacerbated when the critical path "snakes" its way through many modules. Especially in high speed designs, where reducing the number of logic levels is vitally important, long snake paths make it very difficult to reduce or optimize the logic effectively.