插入clock gate之后FV失败的问题
相关变量:verification_clock_gate_hold_mode
在默认情况下,fm认为增添了门控插入(综合时)和之前没有门控的RTL的寄存器是不相等的 也就是说,如果综合时,使用了命令进行了门控插入,那么在形式验证时,就需要设置相应的verification_clock_gate_hold_mode.
user guide上面说这个可以设置成几个值,
* “none” - does not consider clock-gated flip-flop states equivalent to non-clock-gated flip-flop states (the default).
* “low” - considers latch-based clock gating, and combinational clock gating that holds the clock low when inactive (or high for falling-edge-triggered flip-flops).
* “high” - considers combinational clock gating that holds the clock high when inactive (or low for falling-edge-triggered flip-flops).
* “any” - considers both “high” and “low” styles of clock gating within the same design.
clock gating 应该就是只有两种形式的gating:
AND gate
OR gate
当插入的逻辑是and gate 的时候,这个值设置成low
当插入的逻辑是or gate 的时候,这个值设置成high
当然,如果Reference电路中的clock gate是RTL设计者插入的,在综合的时候用power compiler插入的,这个值就应该被设置成none。
如果Implement电路中的Clock Gate是implement在后端实现的过程中,为了修改电路的某些行为而插入的。那么它的EN端与电路的连接关系,在Reference电路中是不存在的。如果此变量设置成“none”,FV时,此clock gate后面的所有FF都会fail。此时,应该根据插入的clock gate的类型是AND Gate还是OR Gate,将变量设计成相应的值(Low/High)。
以上,参考自:
http://xilinx.eetop.cn/viewthread-466441
http://edabbs.com/archiver/?tid-129506.html
http://edabbs.com/redirect.php?tid=130494&goto=lastpost