基于存在路径交互的寄存器之间,如果两个寄存器的时钟来源于两个不同源时钟,capture寄存器能捕获到lauch寄存器的数据,则需要对其做时钟兼容性检查。
-on
只生成含有单个触发时钟的pattern
-off
在生成pattern时,仅根据pattern的时钟需要启动时钟,不考虑时钟兼容性,会出现多个触发时钟,也就是在launch过程中、capture过程中以及两者之间都会出现不兼容时钟同时触发的情况。
例1:
上图中clka与clkb互相不兼容,当选项为off时,工具生成pateern时不考虑时钟兼容性,在lacuh clock中会同时出现clka和clkb,在capture clock中也会同时出现clka和clkb,且会出现clkb捕获由clka lauch的数据。
使用report_patterns可以报告每个pattern中的lauch clk与capture clk,得到的报告也可以验证上述结果。
例2:
domain_clock 在没有指定set_clock_restriction off的情况下,这个选项都会保持打开,但是包含两个选项-edge_interaction,-any_interaction,表示工具基于哪种标准做时钟的兼容性检查,基于时钟边沿交互还是任何交互。基于any_interaction更为严格。
-compatible_clocks_between_loads off
在生成patttern时,分别在lauch过程和capture过程的时钟都为兼容性时钟,但在lauch与capture之间存在非兼容性时钟。
-compatible_clocks_between_loads on
在lauch过程、capture过程与在lauch与capture之间都为兼容性时钟,且这个选项还会影响时钟兼容性分析的标准。选项打开时,domain_clock基于any_interaction,关闭时,基于edge_interaction。
例3:
如上图,clk11与clk12兼容,clk12 和clk11可以互相capture。也可以同时出现在pattern 的lauch和capture clock中。
-same_clocks_between_loads on
测试时lauch时钟与capture时钟为相同时钟,都发生在一个时钟域内,即不存在跨时钟域capture的情况
例4:每个capture clk只能捕获由同一时钟lauch的数据
-same_clocks_between_loads off -compatible_clocks_between_loads off
在生成patttern时,分别在lauch过程和capture过程的时钟都为兼容性时钟,但在lauch与capture之间可能存在非兼容性时钟。
例5:
如上图clk11与clk12互相兼容,clk21与clk22互相兼容,但clk11、clk12与clk21、 clk22互相不兼容。如图,可以看到在lauch clock中只有两种组合(clk11,clk12)和(clk21,clk22),capture clock也是如此,也就是不兼容的时钟不能同时出现在lauch clock中,也不能同时出现在capture clock中。但是lauch clock与capture clock可以不兼容。
例6: