SpyGlass CDC检查所需的SGDC文件编写规则
SGDC(SpyGlass Design Constraints)是SpyGlass CDC检查的核心约束文件用于明确时钟、复位、数据域、特殊路径的检查说明确保跨时钟域分析准确、无漏检、无大量误报。本篇文章讲解实战中常用的约束语句及含义个人总结仅供参考。注意假设我检查的.v文件叫做top.v1、指定顶层设计必须有current_design top##该命令必须有top是顶层.v的名字2、时钟域定义SGDC的核心clock -name clk_sys -tag clk_sys -domain clk_sys -period 1.5##clock是核心关键字代表这是一条定义时钟的命令告诉EDA工具要创建一个时钟对象##-name clk_sys代表时钟名称是clk_sys我个人习惯该名字与顶层.v中时钟名相同后续的时序约束、分析、调试时可以通过这个名字引用该时钟##-tag clk_sys是“时钟标签”参数用于给时钟添加自定义标签/别名主要用于时钟分组或快速筛选后续可批量操作tag为clk_sys的时钟tag和name的时钟名字可以相同也可以不同。##-domain clk_sys是“时钟域”参数将该时钟归属到clk_sys的时钟域中。CDC检查过程中如果-domain是同时钟域那么电路按照同步时序分析如果-domain是不同时钟域那么电路按照异步分析##-period 1.5是“时钟周期”参数EDA工具默认单位是ns。3、复位信号约束reset -name rst_ncfg_n -async -value 0##基本格式“reset -name 复位名 -async/-sync -value 0/1”其中复位名我习惯与.v代码中的复位名一致-async代表异步复位-sync代表同步复位-value 0复位低有效-value 1复位高有效。注意如果不写-async/-sync工具默认按照异步复位处理4、TOP.v的输入信号input信号时钟域绑定abstract_port -module top -ports tx_din -clock clk_sys##将top.v中的输入信号tx_din绑定到clk_sys时钟域上##注意abstract_port并不是标准的SDC语法仅适用于SpyGlass、CDC等检查工具综合、STA工具不能识别此语法。标准语法可尝试abstract -port tx_din -domain clk_sys上述四点描述了sgdc文件通用设置当我们接手大型项目时不仅需要上述四点作为基础支撑更需要了解芯片的不同应用场景不同寄存器配置检查对应的CDC下面我们介绍不同case的sgdc文件如何约束。5、假设有两种应用场景分别为case0正常工作模式case1调试模式setvar OPHY_CHECK_MODE case0##将CDC检查设置为case0模式if{${OPHY_CHECK_MODE} case0}##条件判断不同模式加载不同约束{setvar PLL_PDF_PATH U_PLL_PDF##setvar 变量名 变量值将变量值赋值给变量名include top.case0.sgdc##把top.case0.sgdc所有内容复制到include语句所在位置clock -name clk_a2d -tag clk_a2d -domain clk_a2d -period 1.22##case0模式下单独的约束abstract_port -module top -ports tx_prbs_in -clock clk_a2d##case0模式下单独的约束abstract_port -module top -ports tx_prbs_vld -clock clk_a2d##case0模式下单独的约束}if{${OPHY_CHECK_MODE} case1}##条件判断不同模式加载不同约束{##case1的写法同case0include top.case1.sgdc##top.case1.sgdc的写法同top.case0.sgdc}6、top.case0.sgdc文件约束说明在该文件中我仅对寄存器信号做约束包含两种类型类型1是根据芯片使用场景配置寄存器信号是0/1类型2是根据芯片使用场景设置静态变量约束如下1set_case_analysis -name ${PLL_PDF_PATH}.mode_sel -value 0##该指令的作用是分析顶层U_PLL_PDF模块里面的mode_sel信号时只考虑它取值为0的情况不分析它取1/2/...其他值的场景##PLL_PDF_PATH名字是第5点讲到的“setvarPLL_PDF_PATHU_PLL_PDF”其中U_PLL_PDF是top.v中模块例化名2quasi_static -name ${PLL_PDF_PATH}.qpsk_mode##该指令的作用是U_PLL_PDF模块里面的qpsk_mode信号是“准静态信号”按照上述约束这个信号就不会像时钟、数据信号那么高频变动只会在系统启动/配置阶段变化一次之后就固定不变了。行文至此按照上述的约束方法即可检查top.v的cdc确保跨时钟域信号传输是否符合规则。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2423437.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!