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

SDC命令详解:使用集合(Collection)而不是字符串(String)/列表(List)作为命令参数

相关阅读

SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html


        在使用SDC命令时,有时直接使用字符串或列表(Tcl中的列表本质上也是用空格分隔的字符串)而不是集合作为命令参数也可以得到正确的结果。例如对于图1所示的电路,下面这些创建时钟的命令是等价的,它们都是以端口clk为源对象创建周期为5的时钟。

# 使用字符串或列表作为参数
create_clock -period 5 clk
create_clock -period 5 "clk"
create_clock -period 5 {clk}# 使用集合作为参数
create_clock -period 5 [get_ports clk]

图1 一个简单的例子

        上例并不能体现出两者的差别,但对于参数较多的命令,使用字符串或列表作为命令参数能大大减少命令的长度,如下面这个创建生成时钟的命令。

# 使用字符串作为参数
create_generated_clock -source U1/Y -divide_by 1 -master_clock clk c# 使用集合作为参数
create_generated_clock -source [get_ports U1/Y] -divide_by 1 -master_clock [get_clocks clk] [get_ports c]

        这是否意味着,选择使用字符串或列表作为命令参数永远是一个正确的选择呢?还是以图1为例,下面这些设置负载电容的命令是等价的吗?

# 使用字符串或列表作为参数
set_load 0.5 data_out
set_load 0.5 "data_out"
set_load 0.5 {data_out}# 使用集合作为参数
set_load 0.5 [get_ports data_out]
set_load 0.5 [get_nets data_out]

        由于负载电容既可以设置在端口上也可以设置在线网上,图1中又存在名字同为data_out的端口和线网,此时仅使用字符串或列表作为命令参数不足以表明设计意图,工具将以默认顺序进行搜索,对于set_load命令而言,首先搜索的是端口然后是线网。

        出于对以上两方面的考虑,对于那些参数类别唯一的选项(这可能需要查询命令的手册),可以选择使用字符串或列表以减少命令的长度;对于那些参数类别不唯一的选项,强烈建议使用集合以消除模糊(即使可能设计中不存在重名问题),如下面设置输入延迟的命令所示。

set_input_delay 0.25 -clock clk [get_ports data_in]

        为了保险,统一使用集合作为命令参数也是可以接受的,毕竟确保设计意图正确远比减少命令的长度重要。


http://www.mrgr.cn/news/98045.html

相关文章:

  • 责任链设计模式(单例+多例)
  • C++算法之代码随想录(链表)——基础知识
  • mujoco graspnet 仿真项目的复现记录
  • Python学习笔记(二)(字符串)
  • 【后端开发】初识Spring IoC与SpringDI、图书管理系统
  • 力扣热题100刷题day63|49.字母异位词分组
  • C++指针(四)万字图文详解!
  • 嵌入式MCU常用模块
  • C语言:位段
  • MCP基础学习四:MCP在AI应用中的集成(MCP在AI应用中的完整架构图)
  • 面试题之网络相关
  • 算法驱动的场景识别:规则引擎与机器学习的强大结合
  • C++中作用域public,private,protected说明
  • SSRF打靶总结
  • 浅析Centos7安装Oracle12数据库
  • 《计算机名人堂》专栏介绍:先驱之路
  • leetcode 322. Coin Change
  • VMware虚拟机Ubuntu磁盘扩容
  • 【教学类-102-08】剪纸图案全套代码08——Python点状虚线优化版本02(有空隙)+制作1图2图6图24图
  • MySQL 进阶 - 2 ( 15000 字详解)