在写 .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_ports fpga_clk] 将执行一个命令找到设计中与 fpga_clk 名字相符的端口。
注2:
Tcl与SDC是大小写敏感的,因此需确认 fpga_clk 与设计中的端口名称完全一致的
参考资料:
[1] SDC and TimeQuest API Reference Manual
[2] TimeQuest User Guide
[3] Tcl/Tk 入门经典
|