这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_ports的区别,而且我们也用过get_cells、get_clocks和get_nets这几个指令,下面就通过一张图直观展现它们的区别。 get_clocks后面的对象是我们之前通过create_clocks或者create_generated_clocks创建的时钟,不在硬件上直接映射。 我们再来看下各个命令的属性。 1. port 我们可以通过...
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...
非时序命令包括当前使用的所有 Vivado 命令,例如,get_pins、get_clocks 等。 3. 报告详细的约束信息和各项约束的详情 4. 报告时序计算图 (graph) 此脚本可以估算各命令对于时序计算图的影响,它还能通过报告估算的时序更新数量(部分更新或完整更新)来帮助您了解这些约束是否采用了最优排序,其报告结果为 “Estimated ...
profiler生成报告还能显示前50条最耗时的命令,如下图所示。可用看到除open_checkpoint之外,get_clocks最耗时。 报告的第三部分可以看到设计中Tcl命令的使用情况,如下图所示。图中commands列(最后一列)为Tcl命令,size列为该命令返回的对象的个数,count列为返回同样个数的命令的个数,total列等于size与count的乘积。以...
get_pins: 这个命令找到代表引脚( cells的连接点)的对象。 get_nets: 这个命令找到代表网络(网表中的“电线”)的对象。 get_ports: 这个命令找到了代表 FPGA 设计的外部 I/O 端口的对象。这些是 toplevel 模块的端口。 get_clocks: 此命令找到时钟对象(clock objects)。请注意,在此处提到的对象中,时钟对象是...
get_clocks指令关注的是由create_clocks或create_generated_clocks创建的时钟,这些时钟在硬件层面上并不直接映射。现在,让我们聚焦于各个命令的属性。1. **port**: 通过Tcl脚本,我们能查看port的所有属性。以wave_gen工程为例,clk_pin_p端口属性可借助如下脚本获得。2. **cell**: 类似地,获取cell...
get_ports 、get_pins 、get_designs 、get_cells 、get_nets 、get_clocks 、get_nets -of_objects [get_pins FF1_reg/Q] 、get_libs <lib_name> 、get_lib_cells <lib_name/cell_names> 、get_lib_pins <lib_name/cell_name/pin_names> ...
这里先介绍一下Vivado生成的DCP网表中的基本对象:cell,port,net,pin,如图1所示,除此之外还有一个重要的对象clock。在Vivado中可以分别通过get_cells,get_ports,get_nets,get_pins和get_clocks这五个Tcl命令获取到它们。这五个命令是Vivado中最基本、最常用的Tcl命令,在后续的网表编辑中会用到它们。