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

相关参数或约束

sync_cell约束

        使用SGDC约束中的sync_cell命令可以指定某个模块为同步单元,还可以限制源/目标时钟(域)及其频率。需要注意的是,该规则只适用于控制信号跨时钟域而对数据信号跨时钟域无效,下面给出了一个例子。

// test.sgdc
sync_cell -name "sync" -from_clk "cdc_example.clk_a" -to_clk "cdc_example.clk_b"

synchronize_cells参数

        使用synchronize_cells参数可以设置某个模块为同步单元。需要注意的是,该规则只适用于标量控制信号跨时钟域而对数据信号跨时钟域无效,下面给出了一个例子。

// test.prj
set_parameter synchronize_cells sync

synchronize_data_cells参数

        使用synchronize_data_cells参数可以设置某个模块为同步单元。需要注意的是,该规则只适用于矢量控制信号跨时钟域而对数据信号跨时钟域无效,下面给出了一个例子。

// test.prj
set_parameter synchronize_data_cells sync

allow_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 组合逻辑跨时钟域错误

        最后顺带一提,该跨时钟域方案支持源对象为触发器或黑盒,目标对象为模块或黑盒,如果是前者,则要求该模块中跨时钟域信号的每一位都到达触发器(或者该模块就是来自单元库的触发器)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日晨难再

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值