Spyglass:跨时钟域同步(非循环复用器)

相关阅读

Spyglasshttps://blog.csdn.net/weixin_45791458/category_12828934.html?spm=1001.2014.3001.5482


简介

        非循环复用器方案主要用于数据信号跨时钟域同步,与循环复用器方案类似,该方案将一个控制信号同步至目标时钟域并用其作为驱动目标触发器的多路复用器的选择信号,如图1所示,但拥有以下区别。

1、多路复用器不使用循环的方式连接。

2、多路复用器的数据输入端除了可以来自源时钟域,还可以来自目标时钟域或连接到常量。

图1 非循环复用器方案

        图2是Ac_sync01规则提供的Spreadsheet,其中展示了控制信号跨时钟域相关细节,如果该信号同步失败,数据信号的同步也会失败。

图2 Ac_sync01规则提供的Spreadsheet

        图3是Ac_sync02规则提供的Spreadsheet,其中展示了数据信号跨时钟域相关细节,主要到控制信号ee_ff2被识别为了Qualifier。 

图3 Ac_sync02规则提供的Spreadsheet

        除了图1所示的情况,Spyglass允许多路复用器的选择信号的扇入中存在目标时钟域的触发器或输入端口(但一定需要一个由源时钟域同步来的控制信号),如图4所示。

图4 非循环复用器方案

相关参数或约束

enable_sync_cell参数

allow_combo_logic参数

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

// test.prj
set_parameter allow_combo_logic no

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

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

enable_mux_sync参数

        默认情况下,Spyglass允许任意多路复用器的数据输入端连接到常量,将enable_mux_sync参数设置为strict限制其不能全部连接到常量(除了来自源时钟域外),至少一个输入端连接目标时钟域,下面给出了一个例子。

// test.prj
set_parameter enable_mux_sync strict

        图6展示了这种情况下多路复用器的数据输入端全部连接到常量时出现Ac_unsync02错误(图中展示了二选一复用器的情况,对于更多输入的复用器结果一样)。

图6 Ac_unsync02错误

        需要注意的是,在例6中,我们选择让数据输入端连接到常量1而不是常量0,因为如果将其连接至常量0,Spyglass会将其视为与门跨时钟域方案而不出现错误。

        最后顺带一提,该跨时钟域方案支持源对象为触发器或黑盒,目标对象必须为触发器。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

日晨难再

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

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

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

打赏作者

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

抵扣说明:

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

余额充值