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

相关阅读

SDC命令详解https://blog.youkuaiyun.com/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]

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

日晨难再

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

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

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

打赏作者

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

抵扣说明:

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

余额充值