Spyglass:跨时钟域同步(时钟门控单元)
相关阅读
Spyglasshttps://blog.csdn.net/weixin_45791458/category_12828934.html?spm=1001.2014.3001.5482
简介
时钟门控单元方案主要用于数据信号跨时钟域同步,该方案将一个控制信号同步至目标时钟域并用其作为目标触发器时钟路径上的门控时钟单元的使能信号,如图1所示。
图1 毛刺保护单元方案
图2是Ac_sync01规则提供的Spreadsheet,其中展示了控制信号跨时钟域相关细节,如果该信号同步失败,数据信号的同步也会失败。
图2 Ac_sync01规则提供的Spreadsheet
图3是Ac_sync02规则提供的Spreadsheet,其中展示了数据信号跨时钟域相关细节,注意到控制信号ee_ff2被识别为了Qualifier。
图3 Ac_sync01规则提供的Spreadsheet
除了图1所示的情况,Spyglass允许门控时钟单元的使能信号的扇入中存在目标时钟域的触发器或输入端口(但一定需要一个由源时钟域同步来的控制信号),如图4所示。
图4 毛刺保护单元方案
相关参数或约束
clock_gate_cell参数
使用clock_gate_cell参数可以设置某个模块为门控时钟单元,下面给出了一个例子。
// test.prj
set_parameter clock_gate_cell ICG
除此之外,拥有clock_gating_integrated_cell库属性的库单元也会被识别为门控时钟单元;Spyglass也可从RTL中自动识别以下两种门控时钟单元。
图5 正边沿触发的时钟门控
图6 正边沿触发的时钟门控
allow_combo_logic参数
默认情况下,Spyglass允许通过组合逻辑跨时钟域,将allow_combo_logic参数设置为no可以禁止这种情况,下面给出了一个例子。
// test.prj
set_parameter allow_combo_logic no
图7展示了这种情况下通过组合逻辑跨时钟域时出现Ac_unsync02错误(实际上,即使allow_combo_logic参数设置yes,也只是不出现Ac_unsync02错误,但Ac_glitch03错误会出现,即Spyglass识别到毛刺)。
图7 组合逻辑跨时钟域错误
enable_clock_gate_sync参数
默认情况下,毛刺保护单元方案开启,将enable_clock_gate_sync参数设置为no时,可以禁止该方案。