前言
基于网上资料对相关概念做整理汇总,部分内容引用自文后文章。
在写.sdc约束文件时,要做的第一件事情就是使用create_clock对进入FPGA的时钟进行约束。其语法格式如下:
create_clock[-add] [-name <clock_name>] -period <value> [-waveform<edge_list>] <targets>
参数解释:
-name表示生成的时钟名称
-period表示时钟周期,单位为ns
-waveform可以详细描述时钟占空比及其上下移位置
<targets>端口列表
-add用于为一个端口添加多个时钟约束
例子:
create_clock-period 10 -name clk_100 [get_ports clk]
生成了一个周期为10ns占空比为50%的时钟,其名字为clk_100,其端口名为clk
create_clock-period 10 -waveform {8 12} -name clk [get_ports clk]
生成一个周期为10ns上升沿8ns,下降沿2ns的时钟
create_clock-period 10 -name clk_100 [get_ports clk]
create_clock-perioid 6.6 -name clk_150 -add [get_ports clk]
在clk一个端口上生成两个时钟,其周期分别为10ns和6.6ns。如果一个系统中同一个端口在不同时刻会有多种时钟输入,可以使用-add参数。否则,如果不添加-add参数,后面定义的时钟无效。
注1:
在Tcl语法中[]表示命令替换,因此[get_portsfpga_clk]将执行一个命令找到设计中与fpga_clk名字相符的端口。
注2:
Tcl与SDC是大小写敏感的,因此需确认fpga_clk与设计中的端口名称完全一致的
参考
1、作者 | 博文 |
SDC时序约束(1)- create_clock | |
SDC文件常用时序约束语句 | |
SDC and TimeQuest API Reference Manual | |
Tcl/Tk入门经典 | |
TimeQuest User Guide |