这5个命令分别是get_cells、get_clocks、 get_pins、get_nets和get_ports。 1、根据名称查找 为便于说明,我们假定设计中有如图1所示的层次结构,其中,单元a1有三个输入引脚和一个输出引脚,b1和b2之间由一根网线连接。 模拟代码获取单元结果如下 没有跟随任何参数,就将设计顶层模块视为顶层 current_instance get_ce...
get_clocks后面的对象是我们之前通过create_clocks或者create_generated_clocks创建的时钟,不在硬件上直接映射。 我们再来看下各个命令的属性。 1. port 我们可以通过Tcl脚本查看port的所有属性,比如上面的wave_gen工程中,有一个port是clk_pin_p,采用如下脚本: set inst [get_ports clk_pin_p] report_property $in...
在描述时序约束时,一个重要的原则是确保约束简洁高效。简洁高效意味着约束只针对指定的对象,即约束对应的对象的个数(通常这些对象由命令get_pins、get_cells、get_nets、get_ports或get_clocks获取)尽可能少,少的同时还要足够的精确,能够安全地覆盖到期望的时序路径。 既不会出现遗漏某些对象也不会出现包含了不期望...
write_bitstream-force"$outputDir/${projectName}.bit"#8. 生成资源利用率报告report_utilization -hierarchical -file"$outputDir/utilization.rpt"#9. 生成时序报告report_timing_summary -delay_type max -max_paths10-input_pins -file"$outputDir/timing_summary.rpt"report_timing-from [get_clocks] -to [...
1.report_clocks 在tcl console中输入“report_clocks”,可以列出所有的时钟,在约束中get_clocks时可以方便的引用。 2.reset_project 可以重置整个工程。 3.rgmii接口约束 set_input_delay -clock [get_clocks inst_udp_net_interface/inst_tri_mode_ethernet_mac_0/inst_rgmii_rx_clk] -max -1.2 [get_ports...
set_output_delay -clock [get_clocks clk]2[get_ports output_signal] 当信号在不同的时钟域之间传递时,跨时钟域路径往往不会有严格的时序要求,因为信号会通过同步器或者其他跨时钟域处理机制。这些路径可以设置为set_false_path。 # 设置跨时钟域路径为false path ...
我们看一个案例,如下图所示。在这个案例中,第16行所示多周期路径约束的目的端为时钟clk1所驱动的时序单元,这里all_registers使用了-clock选项。一个更优的方式是将其替换为get_clocks,如第18行所示。这样,该约束只需要引用一个时钟对象,而非成百上千的寄存器。
create_clock -period 12 [get_ports clk]如果存在相移为90,则主时钟约束变为 create_clock -period ...
set_clock_groups -asynchronous -group [get_clocks -include_generated_clocks clock_name] 1. 该语法下,约束clock_name的时钟以及由clock_name生成的时钟之间互为异步关系,且与设计中的其他时钟也均为异步时钟关系。 clock_name的获取,可以在TCL窗口中输入get_clocs获得; ...
不可扩展时钟:官方称作Unexpandable Clocks,是指时序引擎在1000个周期内无法判断两个时钟是否有公共周期。这种情况通常发生在两个时钟周期比是一个特殊的分数,比如一个主时钟通过MMCM生成一个周期为5.125ns的时钟clk1和一个周期为6.666ns的时钟clk2,尽管它们在时钟树的根上有一个确定的相位关系,但是在1000个周期内时...