为了节省每层导入网表的时间,在设置中我们通常不会勾选Aoto Load place and route Data 前面的勾选框。这样每次编译完成之后Show/Hide Tcl Command Console菜单项是灰色的。
![图片[1]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143510478-31729319710.png?v=1729319710)
第一步要先加载见表数据。Floorplan–>View Floorplan。
![图片[2]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143511789-11729319711.png?v=1729319711)
这时再次打开Tools–> Show/Hide Tcl Command Console,在Console最下面就会出现命令输入框。
![图片[3]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143512405-41729319712.png?v=1729319713)
TCL操作命名
report_clocks会报告所有的时钟关系
![图片[4]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143514195-61729319714.png?v=1729319715)
all_clocks 把系统使用的时钟报告出来
![图片[5]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143516688-101729319716.png?v=1729319716)
all_registers可以查看所有的寄存器的完整路径
![图片[6]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143517688-81729319717.png?v=1729319717)
all_inputs/all_outputs 可以查看输入输出端口
get_ports *
![图片[7]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143518140-21729319718.png?v=1729319718)
get_nets *
![图片[8]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143519336-41729319719.png?v=1729319719)
get_pins *|*
![图片[9]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143520405-31729319720.png?v=1729319720)
get cells *
![图片[10]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143521528-101729319721.png?v=1729319721)
===========================================
set_max_delay(set_min_delay)
首先看到文件的层次结构是下面的
![图片[11]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143522757-01729319722.png?v=1729319722)
路径在key2_detect_isnt中。代码如下,如果我们想看state到cnt的路径
![图片[12]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143523455-61729319723.png?v=1729319724)
打印10条路径,以第一条为例
report_timing -from key2_detect_inst/state* -file timing_test.txt -npaths 10
![图片[13]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143525506-101729319725.png?v=1729319725)
通过get_cells打印所有的cells,并通过空格转回车清晰显示。
![图片[14]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143526566-101729319726.png?v=1729319727)
% get_cells key2_detect_inst/state~FF
key2_detect_inst/state~FF
为了防止约束失败,我们在Tcl输入框中验证,没有告警或者错误说明约束的写法是正确的
set_max_delay 5.00 -from [get_cells key2_detect_inst/state~FF] -through [get_cells key2_detect_inst/state~FF]
![图片[15]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143528196-01729319728.png?v=1729319728)
Set Clock Uncertainty
器件本身对Uncertainty是有默认的约束值的。打开timing.rpt文件就可以看到相应的约束值。
![图片[16]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143530769-91729319730.png?v=1729319730)
我们可以通过set_clock_uncertainty加大约束值,以上面为例,默认是120ps的uncertainty,通过下面的约束之后变成了180ps。
set_clock_uncertainty -to clk -setup 0.06
![图片[17]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143531485-91729319731.png?v=1729319731)





没有回复内容