formality 中对clock gating 的处理需要设置以下两个params:
1.set verification_clock_gate_hold_mode low
该variable 允许formality 使用algorithms 去identifying and treating latch-free and latch-based clock gates that drive register clock pins。
默认情况,tool 不使用algorithms,结果可能有差异。value 有以下几种,选择下面的一个:
1.1 none(the default):不使用clock-gate algorithms
1.2 low : 考虑 latch-based clock gating (latch-and driving rising edge and latch-or driving falling edge) and latch-free clock gating, the gated clock与edge 之前的value 保持一致(edge 为en&clk driving rising edge and !en|clk driving falling edge)
1.3 high:考虑 latch-free clock gating,the gated clock与edge 之前的value 保持一致(edge 为en&clk driving rising edge and !en|clk driving falling edge)
1.4 any:在design 同时考虑high and low styles of clock gating
1.5 collapse_all_cg_cells:与low 相似,但也考虑primary output and black-box input pins 作为register clock pins。
2.set verification_clock_gate_edge_analysis true
当这个variable 设置true, the tool 使用clock edges 分析clock gated designs.允许tool 验证design 不同类型的clock gating。
当variable 设置true 时,忽略verification_clock_gate_hold_mode 的任何用法。
向时钟信号添加注释,指示其当前状态和下一状态值,在pattern viewer and logic cone schematics中可以看到。
需要注意的是, 当clock-gating verification还存在问题的时候,才可以使用verification_clock_gate_edge_analysis