0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SDC是如何炼成的?怎么去验收SDC呢?

冬至子 来源:RTL2GDS 作者:老本 Benjamin 2023-06-28 17:17 次阅读

STA是由SDC驱动的,所以SDC的完整性、正确性和一致性直接决定着综合、布局布线以及STA的有效性。

特别是对于接口时序约束,牵涉到标准协议和异步关系等,后仿真如果PASS可以让SDC作者睡得更香甜些。

后仿真一般是验证团队的职能领域,需要后端提供网表和SDF,不过后仿真需要后端所提供数据的时序是有要求的,其中hold timing必须干净,setup timing最好能干净,实在不行可以通过降频让setup满足。由此可见,后仿真往往是在项目后期才能够被执行。那我们在项目前期怎么去验收SDC呢?有了标准就不至于整天提心吊胆。下面以PT为例来进行讲解,其它工具会有些许区别。

check_timing

check_timing这个命令是在对时序约束做一个深度的体检,能检查时序约束相关的各种问题,其默认检查项是有下面的这个变量控制的:

pt_shell > printvar timing_check_defaults

这个变量的工具默认值:

  • generated_clocks

    检查generated_clocks的定义是否合理,有没有源时钟,是否存在相互循环定义的情况。

  • generic

    检查是否存在unmapped的cells,这类generic cell一般是零延时,影响时序检查准确性。

  • latch_fanout

    检查电平触发latch的扇出是不是自身,有没有latch级联的情况

  • loops

    检查组合逻辑有没有反馈回路,STA对这种反馈回路是不会分析的,需要通过set_disable_timing来打断这种反馈回路

  • no_clock

    检查是否有时序单元的clock pin不在任何时钟网络上,特别留意中途是不是通过“set_sense -stop_propagation”之类的命令强制切断了时钟的传播。

  • no_input_delay

    检查Input Port是否有关联的时钟,否则相关IN2REG路径是unconstrained的。

  • partial_input_delay

    检查在set_input_delay时,是否存在只指定-min或者-max其中之一的情况

  • unconstrained_endpoints

    检查时序单元数据Pins或者Output Ports是否没有max delay约束

  • unexpandable_clocks

    检查相关的clocks之间是否可扩展,在跨两个不同频率的时钟路径上计算时序时,往往需要扩展时钟以计算相应的setup timing

  • no_driving_cell

    检查Input Port是否定义了驱动单元,工具只会在相连的net有寄生参数存在时才会产生Warning信息

  • pulse_clock_non_pulse_clock_merge

    检查pulse clock和normal clock是否共用相同时钟网络

  • pll_configuration

    检查PLL的配置是否存在问题。

对于check_timing报告中的Warning和Error,要仔细地检查,最好是一个Warning/Error都没有,下面的结果也挺令人赏心悦目的(仅有2个Warning需要排查):

图片

需要注意的是,在综合阶段需要先check_design保证设计本身没有问题的情况下,再通过check_timing进行时序约束的检查。

report_analysis_coverage

report_analysis_coverage命令可以统计出有design中需要STA进行的检查有多少项,其中有多少满足(Met),有多少违反(Violated),有多少缺失检查(Untested),如下图所示:

图片

需要特别注意的是Untested一栏,造成的原因可以有以下几类:

  • false_paths

    set_false_path 或者asynchronous/exclusive clock groups

  • user_disabled

    timing check被用户禁用了,例如set_disable_timing

  • constant_disabled

    set_case_analysis或者实际Signal已经接电源或地(Tie High/Low)

  • no_paths

    路径不存在或被切断,造成原因也可能是set_disable_timing

  • mode_disabled

    特定mode相关时序约束,在其他mode下不会检查

  • no_endpoint_clock

    endpoint没有时钟

  • no_startpoint_clock

    startpoint没有时钟

  • no_constrained_clock

    针对skew和clock separation检查,没有约束时钟

  • no_ref_clok

    针对skew和clock separation检查,没有参考时钟

  • no_clock

    针对min_pulse_width和min_period检查,没有时钟定义

  • unknown

    其它未知原因

具体可以通过以下命令来debug:

pt_shell > report_analysis_coverage -status_detail untested -check setup

需要特别强调 :对于异步路径,比如false_path,case_analysis,set_disable_timing等等,每一条SDC语句都需要designer仔细review确认,签字画押。

一致性和CDC检查

对于Top,往往还需要检查Top和Block的约束的一致性,以及跨时钟域检查。这里常用两个工具:一个是PT的GCA,适合门级网表的分析。另一个是SpyGlass,常用在RTL级别。

下图是GCA一般流程:

图片

如果要进行Top和Block约束的一致性检查,可以参考以下命令:

ptc_shell > read_verilog ./top.v
ptc_shell > link_design top
ptc_shell > source top_constraints.tcl
ptc_shell > link_design -add block1
ptc_shell > source block1_constraints.tcl
ptc_shell > set out_dir /user/abc/compare_top
ptc_shell > compare_block_to_top -block_design block1

GCA中也可以打印出跨时钟域信息,通过以下命令:

ptc_shell > report_clock_crossing

需要强调 ,在RTL交付前,跨时钟域的检查是非常关键的,利用SpyGlass等工具检查其是否存在时钟同步单元(synchronizer),并在需要时添加必要的约束控制跨时钟路径,避免功能错误。另外,SpyGlass也能够进行约束一致性检查,有兴趣的可以查看其用户手册。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RTL
    RTL
    +关注

    关注

    1

    文章

    377

    浏览量

    59077
  • STA
    STA
    +关注

    关注

    0

    文章

    51

    浏览量

    18852
  • SDC
    SDC
    +关注

    关注

    0

    文章

    47

    浏览量

    15303
  • PLL电路
    +关注

    关注

    0

    文章

    91

    浏览量

    6283
收藏 人收藏

    评论

    相关推荐

    时序分析的设计约束(SDC

    使用SDC命令create_clock创建时钟,时钟周期20,占空比50%的时钟信号;
    的头像 发表于 11-08 09:12 5776次阅读

    Sunlord SDC***C系列和SDC***Q系列有何差别?

    Sunlord SDC***C系列和SDC***Q系列有何差别?
    发表于 10-16 20:24

    SDC821相机原来图解剖

    SDC821相机原来图解剖
    发表于 03-31 10:49

    霍尔开关SDC1211,SDC1215,SDC1177,SDC1181,SDC1182,SDC1183应用于TWS,筋模枪,流量传感器,开关门检测等

    SDC1211特点  全极性 极低的功耗设计  工作电压范围:2.4V~5V  输出方式:CMOS输出 斩波放大器设计,对因工艺、工作温度和机械应力产生的噪声和失调敏感度低  不区分磁场
    发表于 04-26 13:57

    FPGA的reset信号需要加什么SDC约束

    FPGA的reset信号需要加什么SDC约束
    发表于 04-23 11:38

    请问时序约束文件SDC支持哪些约束?

    时序约束文件SDC支持哪些约束?
    发表于 08-11 09:27

    基于SDC-PC0281恒流输出LED驱动电源

    基于SDC-PC0281恒流输出LED驱动电源
    发表于 09-15 16:58 4次下载

    介绍系统接口sdc

    今天要介绍的基本sdc是系统接口sdc。主要包括set_drive, set_driving_cell, set_input_transition, set_load这四条命令,都是和端口上的驱动负载有关.
    的头像 发表于 02-03 14:34 9569次阅读
    介绍系统接口<b class='flag-5'>sdc</b>

    SDC1742 12位自整角机数字转换器

    电子发烧友网为你提供ADI(ti)SDC1742相关产品参数、数据手册,更有SDC1742的引脚图、接线图、封装手册、中文资料、英文资料,SDC1742真值表,SDC1742管脚等资料
    发表于 02-22 13:08
    <b class='flag-5'>SDC</b>1742 12位自整角机数字转换器

    SDC1740 14位自整角机数字转换器

    电子发烧友网为你提供ADI(ti)SDC1740相关产品参数、数据手册,更有SDC1740的引脚图、接线图、封装手册、中文资料、英文资料,SDC1740真值表,SDC1740管脚等资料
    发表于 02-22 13:08
    <b class='flag-5'>SDC</b>1740 14位自整角机数字转换器

    SDC1741 12位自整角机数字转换器

    电子发烧友网为你提供ADI(ti)SDC1741相关产品参数、数据手册,更有SDC1741的引脚图、接线图、封装手册、中文资料、英文资料,SDC1741真值表,SDC1741管脚等资料
    发表于 02-22 13:08
    <b class='flag-5'>SDC</b>1741 12位自整角机数字转换器

    SDC1700/SDC1702:低调自整角机/旋转变压器-数字转换器过时数据表

    SDC1700/SDC1702:低调自整角机/旋转变压器-数字转换器过时数据表
    发表于 05-26 18:02 2次下载
    <b class='flag-5'>SDC</b>1700/<b class='flag-5'>SDC</b>1702:低调自整角机/旋转变压器-数字转换器过时数据表

    时序分析的设计约束SDC怎么写呢?

    使用SDC命令create_clock创建时钟,时钟周期20,占空比50%的时钟信号
    的头像 发表于 06-18 09:42 2679次阅读
    时序分析的设计约束<b class='flag-5'>SDC</b>怎么写呢?

    时序分析基本概念—SDC概述

    今天我们要介绍的时序概念是设计约束文件 **SDC** . 全称 ***Synopsys design constraints*** . SDC是一个设计中至关重要的一个文件。
    的头像 发表于 07-03 14:51 4163次阅读
    时序分析基本概念—<b class='flag-5'>SDC</b>概述

    探讨一下SDC的各种语法构成和整体结构

    SDC是一个设计从RTL到netlist的桥梁,是FE/ME/BE都需要掌握的一项基本技能。通常情况来说,由前端工程师(designer)提供SDC文件是最合理的
    的头像 发表于 07-06 15:28 1369次阅读
    探讨一下<b class='flag-5'>SDC</b>的各种语法构成和整体结构