当前位置: 首页 > news >正文

SDC命令详解:使用set_min_library命令进行约束

相关阅读

SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm=1001.2014.3001.5482


目录

        最大条件分析的库文件名

        最小条件分析的库文件名

        取消设置

        最大条件和最小条件

        与set_operating_conditions命令同时使用

        写在最后


        set_min_library命令用于设置一组最大与最小条件的库映射关系(其实它并不是一个SDC命令,归为此类只是为了方便管理),可以让Design Compiler在优化时分别使用两组逻辑库来进行最小与最大条件分析。

        本文针对Design Compiler,但该命令同样存在于PrimeTime、IC Compiler等工具中,它们大致相同,略有差别。read_sdc命令的BNF范式(有关BNF范式,可以参考以往文章)为:

set_min_library max_library-min_version min_library | -none//注:该命令的选项和参数顺序任意

最大条件分析的库文件名

        max_library参数指定用于最大条件分析的库文件名,通常也是target_library及link_library中设置的库文件。

最小条件分析的库文件名

        -min_version选项指定用于最小条件分析的库文件名,这些库文件不应该出现在target_library或link_library中。

取消设置

        -none选项取消了最小条件分析库的设置。

最大条件和最小条件

        如果使用Design Compiler的默认分析模式bc_wc,那么其在时序分析时使用单一的最大条件设置和最小条件设置:对于建立时间检查、恢复时间检查、门控时钟建立时间检查、最大延迟检查等分析,Design Compiler将使用最大条件下的工作环境以及所有用-max选项设置的约束;对于保持时间检查、移除时间检查、门控时钟保持时间检查、最小延迟检查等分析,Design Compiler将使用最小条件下的工作环境以及所有用-min选项设置的约束。

        如果使用on_chip_variation模式,则Design Compiler在时序分析时会根据检查类型,对发射路径和捕获路径使用不同的条件设置:对于建立时间检查、恢复时间检查、门控时钟建立时间检查、最大延迟检查等分析,Design Compiler会对发射路径使用最大条件设置,对捕获路径使用最小条件设置,以分析最差情况下的时序;对于保持时间检查、移除时间检查、门控时钟保持时间检查、最小延迟检查等分析,Design Compiler会对发射路径使用最小条件设置,对捕获路径使用最大条件设置,以分析最差情况下的时序。

        当使用set_min_library命令指定了最大与最小条件的库映射关系后,在计算最大条件延迟时,使用max_library中的时序信息;在计算最小条件延迟时,如果min_library中存在匹配的单元,则会使用min_library中的时序信息,否则依旧使用max_library中的时序信息。

        需要注意的是,综合时单元依旧是被映射到max_library(即target_library及link_library中设置的库文件),只是在分析最小条件延迟时会考虑min_library,这可以通过report_cell命令验证。

与set_operating_conditions命令同时使用

       set_operating_conditions命令用于设置当前设计的工作环境,如果单元的工作环境与其库中时序信息的特征化环境不符时,会使用k系数进行调整,这通常会造成较大的误差,因此现在通常不使用这个性质,每个逻辑库中只有一个工作环境(也就是它的特征化环境)。

        有关于特征化环境和工作环境及k系数的更详细解释,可以参考下面的博客。

静态时序分析:工艺库的特征化环境和工作环境https://blog.csdn.net/weixin_45791458/article/details/136088521?ops_request_misc=%257B%2522request%255Fid%2522%253A%252296dfdacf66770ad65d2308ce53816443%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=96dfdacf66770ad65d2308ce53816443&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-136088521-null-null.nonecase&utm_term=%E7%89%B9%E5%BE%81%E5%8C%96&spm=1018.2226.3001.4450        下面展示了一个使用k系数进行调整的例子,该例中会使用两个逻辑库fast.db和slow.db,其中slow.db库中拥有一个k系数。

// fast.libnom_process     : 1;nom_temperature : -40;nom_voltage     : 1.1;operating_conditions(fast) {process	: 1;temperature	: -40;voltage	: 1.1;tree_type	: balanced_tree}// slow.libnom_process     : 1;nom_temperature : 125;nom_voltage     : 0.9;operating_conditions(slow) {process	: 1;temperature	: 125;voltage	: 0.9;tree_type	: balanced_tree}k_temp_cell_fall	: 0.001;

        下面展示了一个脚本,其中将工作环境设置为fast.db库中的fast,但使用slow.db库综合,综合时会出现警告。

// 综合脚本set_app_var target_library slow.dbset_app_var link_library "* $target_library"set_operating_conditions fast -library fastcompile_ultraWarning: Operating condition fast set on design simple_register has different process,
voltage and temperatures parameters than the parameters at which target library 
slow is characterized. Delays may be inaccurate as a result. (OPT-998)

        综合完毕后可以使用report_delay_calculation命令查看某个单元的延迟计算情况,如下所示。

****************************************
Report : delay_calculation
Design : simple_register
Version: W-2024.09-SP2
Date   : Tue Jul 22 22:30:53 2025
****************************************From pin:                         out1_reg/CK
To pin:                           out1_reg/Q
Main Library Units:  1ns  1pF  1kOhmOperating Conditions: fast   Library: fast
Wire Load Model Mode: topLibrary: 'slow'
Library Units:  1ns  1pF  1kOhm
Library Cell: 'DFFRQX2'arc sense:                        rising_edge
arc type:                         cellRise Delaycell delay = 0.2056Table is indexed by(X) input_pin_transition = 0.0000(Y) output_net_total_cap = 0.0010Relevant portion of lookup table:(X) 0.0320      (X) 0.0480(Y) 0.0012      (Z) 0.2154      (Z) 0.2196(Y) 0.0028      (Z) 0.2251      (Z) 0.2293Z = A + B*X + C*Y + D*X*YA = 0.1999           B = 0.2665C = 5.9589           D = -0.0377Z = 0.2056scaling result for operating conditionsmultiplying by 1 gives 0.2056Fall Delaycell delay = 0.2492Table is indexed by(X) input_pin_transition = 0.0000(Y) output_net_total_cap = 0.0010Relevant portion of lookup table:(X) 0.0320      (X) 0.0480(Y) 0.0012      (Z) 0.2589      (Z) 0.2632(Y) 0.0028      (Z) 0.2680      (Z) 0.2723Z = A + B*X + C*Y + D*X*YA = 0.2439           B = 0.2663C = 5.5518           D = 0.2284Z = 0.2492scaling result for operating conditionsmultiplying by 0.835 gives 0.2081Cell Delayrise:  0.2056fall:  0.2081

        可以看出,单元的下降延迟在最后乘以0.835进行调整,而上升延迟则没有(因为逻辑库内的  k_temp_cell_fall为0)。

        如果使用了set_min_library命令,则需要使用相应的set_operating_conditions命令,这也是为了防止出现k系数调整,下面展示了一个例子。

// 综合脚本set_app_var target_library slow.dbset_app_var link_library "* $target_library"set_min_library slow.db -min_version fast.dbset_operating_conditions -max slow -max_library slow -min fast -min_library fast  compile_ultra

写在最后

        该命令现在已经较少使用了,转而使用Design Compiler Graphical提供的Multicorner-Multimode(MCMM)Flow进行综合,能够创建不同的场景(Scenario)并在综合时同时考虑。

http://www.lryc.cn/news/596402.html

相关文章:

  • Unity笔记——事件中心
  • HTB赛季8靶场 - Mirage
  • 风险识别清单:构建动态化的风险管理体系
  • Java函数式编程深度解析:从基础到高阶应用
  • 技能系统详解(4)——运动表现
  • 哔哩哔哩视觉算法面试30问全景精解
  • 钢铁逆行者:Deepoc具身智能如何重塑消防机器人的“火场直觉”
  • 【中文翻译】SmolVLA:面向低成本高效机器人的视觉-语言-动作模型
  • Vue 3 响应式系统中的 effectScope、watchEffect、effect 和 watch 详解
  • 如何将iPad中的视频传输到电脑(6种简单方法)
  • 单片机学习笔记.单总线one-wire协议(这里以普中开发板DS18B20为例)
  • rabbitmq 03
  • uniapp 报错 Not found ... at view.umd.min.js:1的问题
  • LWIP学习记录2——MAC内核
  • Linux系统安装Bash自动补全(bash-completion)
  • 基于SpringBoot+Uniapp的非遗文化宣传小程序(AI问答、协同过滤算法、Echarts图形化分析)
  • uniapp请求封装上传
  • 最新植物大战僵尸杂交版最新版本2.5.1版,内置触屏+加速+全屏,附PC+安卓+iOS最全安装教程!
  • C#文件操作(创建、读取、修改)
  • Java学习-------事务失效
  • 从“点状用例”到“质量生态”:现代软件测试的演进、困局与破局
  • Vue3 学习教程,从入门到精通,Vue3 循环语句(`v-for`)语法知识点与案例详解(13)
  • C# 属性
  • XSS(跨站脚本)
  • CPU 密集型 和 I/O 密集型 任务
  • 达梦数据库表字段增加时报错[-2106]:无效的表或视图名,[-2116]:列[IS_REPEAT]已存在
  • 【C++】第十八节—一文万字详解 | map和set的使用
  • 如何搭建appium工具环境?
  • Go的异常处理+文件处理
  • JAVA API (三):从基础爬虫构建到带条件数据提取 —— 详解 URL、正则与爬取策略