大家好,欢迎来到IT知识分享网。
文章目录
1. SDC概述
sdc(synopsys design constraints)是后端芯片设计的命脉,对电路的时序、面积和功耗进行约束。该约束与芯片规格相匹配才能发挥自己的作用。约束不能松也不能紧,太松了达不到芯片的功能要求。太紧了对成本,布局布线都不太友好。所以需要寻找个适中的点,也是很多工作的难点都是找到一个平衡点。
1. 时钟相关
1.1 create_clock
- 简单语法实例
create_clock -period 10 -name clk_100 [get_ports clk]
- 语法说明
创建一个时钟周期为10ns,名字为clk_100的时钟放在了模块端口clk上。需要保证clk在顶层端口中能找到;
- 其他参数说明
- -waveform:指明创建时钟的变化沿时间点
create_clock-period 10 -waveform {4 6} -name clk [get_ports clk]
创建一个周期为10的时钟,上升沿在4这个点上,下降沿在6这个点上。由于这个选项第一个时间点为上升沿的时间点,若希望在第一个10单位时间内下降沿在前面,参考 -waveform疑难杂症说明 - -add:一个端口声明多个时钟;
1. create_clock-period 10 -waveform {4 6} -name clk [get_ports clk] 2.create_clock-period 8 -waveform {4 6} -name clk2 -add [get_ports clk]
若第二句约束没有添加-add说明,则会覆盖掉1约束。此约束语句约束了两个时钟在一个端口; - 其它说明
1. create_clock-period 10 -waveform {4 6} -name clk
语句也可不加get_ports选项,说明这个为虚拟时钟,内部未使用到。仅用于后续约束方便所以创建的时钟。
1.2 create_generated_clock
- 语法实例
create_generated_clock -name CLKdiv2 -divide_by 2 -source CLK [get_pins U_xxx/Q]
创建一个CLK进行2分频的时钟CLKdiv2,并将该时钟放到pin U_xxx/Q上; - 参数说明
- -master:当定义的时钟点有很多源时的说明;(如三个时钟mux后再分频)
- -edge:说明生成时钟与源时钟(-source 指定的)之间的关系;
- -source:距离生成时钟点最近的上级;
- 关于master要是还不清楚可参阅:-master说明
1.3 set_clock_group
- 语法实例
set_clock_groups -asynchronous -group {ClkA ClkB} -group {ClkC}
声明clkA,clkB时钟为同步时钟,并与clkC异步; - 重要说明点:
- 当set_clock_groups指明时若只有一个group时,则说明这个group里头的时钟与其它未说明的时钟均为异步关系;
- 当set_clock_groups指明时若有两个或两个以上group时,则这些group之间为异步关系,各group与其它未说明的时钟则为同步关系;
- 参数说明可参考:logic_exclusive & physically_exclusive
- -asynchronous :指明异步关系;
- -logically_exclusive
- -physically_exclusive
1.4 set_clock_uncertainty
1.4 set_input_delay
1.5 set_output_delay
2.时序特例相关
2.1 set_false_path
2.2 set_multicycle_path
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/140991.html