为了节省每层导入网表的时间,在设置中我们通常不会勾选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/20241019144159176-01729320119.png?v=1729320119)
第一步要先加载见表数据。Floorplan–>View Floorplan。
![图片[2]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019144200618-101729320120.png?v=1729320120)
这时再次打开Tools–> Show/Hide Tcl Command Console,在Console最下面就会出现命令输入框。
![图片[3]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019144201851-91729320121.png?v=1729320122)
TCL操作命名
report_clocks会报告所有的时钟关系
![图片[4]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019144203568-21729320123.png?v=1729320124)
all_clocks 把系统使用的时钟报告出来
![图片[5]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019144205873-81729320125.png?v=1729320125)
all_registers可以查看所有的寄存器的完整路径
![图片[6]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019144206869-61729320126.png?v=1729320126)
all_inputs/all_outputs 可以查看输入输出端口
get_ports *
![图片[7]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019144207293-81729320127.png?v=1729320127)
get_nets *
![图片[8]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019144207665-21729320127.png?v=1729320128)
get_pins *|*
![图片[9]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019144208365-61729320128.png?v=1729320128)
get cells *
![图片[10]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019144209277-51729320129.png?v=1729320130)
===========================================
set_max_delay(set_min_delay)
首先看到文件的层次结构是下面的
![图片[11]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019144210568-01729320130.png?v=1729320131)
路径在key2_detect_isnt中。代码如下,如果我们想看state到cnt的路径
![图片[12]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019144212214-51729320132.png?v=1729320132)
打印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/20241019144213609-41729320133.png?v=1729320134)
通过get_cells打印所有的cells,并通过空格转回车清晰显示。
![图片[14]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019144214841-71729320134.png?v=1729320135)
% 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/20241019144216471-41729320136.png?v=1729320136)
Set Clock Uncertainty
器件本身对Uncertainty是有默认的约束值的。打开timing.rpt文件就可以看到相应的约束值。
![图片[16]-常用时序约束使用说明-v1-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019144217294-51729320137.png?v=1729320137)
我们可以通过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/20241019144218959-31729320138.png?v=1729320138)





没有回复内容