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

相关参数或约束

num_flops约束

        默认情况下,Spyglass要求触发器链中至少存在两级触发器,使用SGDC约束中的num_flops命令可以指定最少的触发器数量,下面给出了一个例子。

// test.sgdc
num_flops -from_clk cdc_example.clk_a -to_clk cdc_example.clk_b -value 3

        图3展示了这种情况下使用两级触发器进行跨时钟域同步时出现Ac_unsync01错误。

图3 两级触发器方案错误

allow_combo_logic参数

        默认情况下,Spyglass允许通过组合逻辑跨时钟域,将allow_combo_logic参数设置为no可以禁止这种情况,下面给出了一个例子。

// test.prj
set_parameter allow_combo_logic no

        图4展示了这种情况下通过组合逻辑跨时钟域时出现Ac_unsync01错误(实际上,即使allow_combo_logic参数设置yes,也只是不出现Ac_unsync01错误,但Ac_glitch03错误可能会出现,即Spyglass识别到毛刺)。 

图4 组合逻辑跨时钟域错误

allow_combo_logic约束

        作用与allow_combo_logic参数相同,区别在于可以指定一个模块,下面给出了一个例子。

// test.sgdc
allow_combo_logic -name "MD1"

output_not_used约束

        默认情况下,Spyglass不允许触发器链中的触发器(除最后一级触发器)有多个扇出,output_not_used约束可以设置一个输出端口为不使用的,允许触发器链中的触发器有额外扇出到该输出端口,下面给出了一个例子。

// test.sgdc
output_not_used -name "cdc_example.action_b"

        图5展示了这种情况下触发器链中的触发器有额外扇出到输出端口。

图5 允许额外扇出

allow_half_sync参数

        默认情况下,Spyglass允许半同步器,即触发器链中的某些触发器由目标时钟的不同边沿触发,将allow_half_sync参数设置为no可以禁止这种情况,下面给出了一个例子。

// test.prj
set_parameter allow_half_sync no

        图6展示了这种情况下使用半同步器时出现Ac_unsync01错误。

图6 半同步器错误

strict_double_flop参数

        当strict_double_flop参数设置为yes时,仅当源触发器与目标触发器之间存在另一个触发器(其实这种情况下,该触发器才被视为源触发器),并且该触发器的时钟信号与源触发器相反,才会视为已同步,下面给出了一个例子。

// test.prj
set_parameter strict_double_flop yes

        图7展示了满足严格双触发器的情况。 

图7 严格双触发器

enable_and_sync参数

        默认情况下,常规多级触发器方案开启,将enable_and_sync参数设置为no时,可以禁止该方案。

        最后顺带一提,该跨时钟域方案支持源对象为触发器或黑盒,但如果strict_double_flop参数设置为yes,则不允许源对象为黑盒。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

日晨难再

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

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

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

打赏作者

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

抵扣说明:

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

余额充值