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 严格双触发器

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

内容概要:《机器人综合基础实践教程》(入门篇、提高篇)涵盖了机器人基础构建、编程控制、传感器应用等多个方面。教程从机械零件简介入手,逐步介绍主控板和编程环境的配置,随后通过一系列实验引导读者动手实践,包括驱动轮模块、双轮万向车、红外启动小车、带传动模块、履带机器人、红绿灯等实验。这些实验不仅帮助读者理解基本原理,还涉及高级应用如蓝牙电子温度计、语音识别、双轮小车平衡、蓝牙排爆机器人和WiFi视频排爆等。教程旨在培养读者的空间构型能力、编程技巧和综合调试能力,为机器人技术的实际应用打下坚实基础。 适用人群:具备一定编程基础和技术兴趣的学生、教师及爱好者,特别是对机器人技术感兴趣的初学者和中级学习者。 使用场景及目标:①帮助学生理解机器人基本原理,掌握机械零件组装和编程控制;②通过实际操作,提升编程和调试技能;③为机器人竞赛、项目开发和创新实践提供理论和实践指导;④培养创新思维和解决实际问题的能力。 其他说明:教程不仅提供详细的实验步骤和代码示例,还配有丰富的参考资料和光盘课件,确保学习者能够全面理解和掌握知识点。此外,教程强调实践操作的重要性,鼓励学习者通过动手实验加深理解,培养独立思考和解决问题的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

日晨难再

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

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

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

打赏作者

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

抵扣说明:

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

余额充值