Spyglass:跨时钟域同步(同步单元) 相关阅读Spyglasshttps://blog.csdn.net/weixin_45791458/category_12828934.html?spm1001.2014.3001.5482简介同步单元方案主要用于控制信号跨时钟域同步该方案使用约束或参数将目标时钟域中的单元指定为同步单元如图1所示。图1 同步单元方案图2是Ac_sync01规则提供的Spreadsheet其中展示了跨时钟域相关细节。图2 Ac_sync01规则提供的Spreadsheet相关参数或约束sync_cell约束使用SGDC约束中的sync_cell命令可以指定某个模块为同步单元还可以限制源/目标时钟域及其频率。需要注意的是该规则只适用于控制信号跨时钟域而对数据信号跨时钟域无效下面给出了一个例子。// test.sgdc sync_cell -name sync -from_clk cdc_example.clk_a -to_clk cdc_example.clk_bsynchronize_cells参数使用synchronize_cells参数可以设置某个模块为同步单元。需要注意的是该规则只适用于标量控制信号跨时钟域而对数据信号跨时钟域无效下面给出了一个例子。// test.prj set_parameter synchronize_cells syncsynchronize_data_cells参数使用synchronize_data_cells参数可以设置某个模块为同步单元。需要注意的是该规则只适用于矢量控制信号跨时钟域而对数据信号跨时钟域无效下面给出了一个例子。// test.prj set_parameter synchronize_data_cells syncallow_combo_logic参数默认情况下Spyglass允许通过组合逻辑跨时钟域将allow_combo_logic参数设置为no可以禁止这种情况下面给出了一个例子。// test.prj set_parameter allow_combo_logic no图3展示了这种情况下通过组合逻辑跨时钟域时出现Ac_unsync01错误实际上即使allow_combo_logic参数设置yes也只是不出现Ac_unsync01错误但Ac_glitch03错误可能会出现即Spyglass识别到毛刺。图3 组合逻辑跨时钟域错误最后顺带一提该跨时钟域方案支持源对象为触发器或黑盒目标对象为模块或黑盒如果是模块则要求该模块中跨时钟域信号的每一位都到达触发器或者该模块就是来自单元库的触发器。