赞
踩
cell 可以是 verilog 中实例化后的模块,也可以是一些 LUT、DSP48E 等资源,它们有相应的pin,pin 与 pin 之间的连线为 net,port 与 pin 不同,port 是 FPGA 和外部打交道的管脚。 每个 port 都会占用一个 FPGA 的外部管脚,称为 package pin,每个 package pin 都在 IO BANK 中。
下面是五个常用的 TCL 命令,它们都有一些常用的共同参数,下面分别介绍:
上图也可以看出,-hierarchical 课可以简写为 -hier, -of_objects 可以简写为 -of,-filter 的意思是过滤出符合条件的 objects。
Example_1:
get_cells -of [get_nets -of [get_pins -of [get_cells wbDataForInput_IBUF_inst] -filter {DIRECTION == OUT}]]
结果:wbDataForInputReg_reg validForEgressFifo_reg[o]_i_1 wbDataForInput_IBUF_inst
先是通过 get_cells wbDataForInput_IBUF_inst 找到图中 IBUF 这个 cell,然后获得其 pin:get_pins -of [get_cells wbDataForInput_IBUF_inst] -filter {DIRECTION==OUT},注意这里有一个过滤条件,是通过 cell 找到 pin,这个 pin 是输出的 pin;
通过 pin 去找到 net:[get_nets -of [get_pins -of [get_cells wbDataForInput_IBUF_inst] -filter {DIRECTION == OUT}],找到上面蓝色的 net,最后通过 net 找到与之相连的 cell:
get_cells -of [get_nets -of [get_pins -of [get_cells wbDataForInput_IBUF_inst] -filter {DIRECTION == OUT}]]
得到三个与之相连的 cells:
wbDataForInputReg_reg validForEgressFifo_reg[o]_i_1 wbDataForInput_IBUF_inst
下面继续举例,如何使用参数 -of_objects
Example_2:
先指定蓝色 cell,get_cells demuxState_reg,使用 Tcl 命令 get_pins -of 获得它的 pins:
get_pins -of [get_cells demuxState_reg],得到下面绿色框内的 pins;
再获得指定 pin 的 cell,通过下面的 Tcl 命令找到响应 pin 的 cell:
get_cells -of [get_pins demuxState_reg]
通过特定的 net 找到相应的 cell:
下面的例子方法相同:
-hier 表示按层次寻找
例如:
Tcl 命令: get_cells {A* B*}
注意 A 后面的 * 是通配符,使用上面的 Tcl 命令后就得到
A B 这两个模块。结果可以看出,它只从顶层寻找,并没有再往下找:
如果使用参数 -hier,例如下Tcl命令: get_cells -hier [A* B*]
得到: A A/A1 A/A2 B B/B1 B/B2
如果使用分隔符“/”呢?
例如 Tcl 命令: get_cells B/*
很容易想到得到如下结果: B/B1 B/B2
注意,分隔符和参数 -hier 不能同时使用,如果同时使用,就会找不到与之匹配的模块,上图中有示意。
最后讲下带有参数 -filter 的 Tcl 命令,用于过滤出一些符合条件的模块显示出来:
例如 Tcl 命令:get_cells -hier -filter {NAME =~ B}
就会得到: B B/B1 B/B2
最后需要注意的是 B2 的实例化名字为:
上图中 clk_out1_clk_wiz_jesd 为 wrclk,I_LVDS_RXCLK_P[1] 为 rdclk。
pRRU5614 使用 TCL 获取信息(ports):
pRRU5614 使用 TCL 获取信息(iobanks):
pRRU5614使用TCL获取信息(package_pins):
介绍了 Xilinx 中 sch 的基本结构的实际名称,例如 LUT、BRAM、FIFO 等都可以是 cell,而 cell 的 input/output 管脚称为 pin,工程中顶层的 IO 为 port,其中相互连接的是 net,驱动这些 cell 的是 clock,而实际上这些资源都是分布在 bank 和 package_pin 中。
我们可以利用 get_XXX 命令来获取 nets/cells/clocks/ports/pins/iobanks/package_pins,结合 -filter -of -hier 等参数可以获取关键信息,例如可以获取整体设计的所有 IO(ports),然后通过这些 IO 查找到其连接到的 cell 和相关 pin,也可以获取到管脚的 planning信息,例如所属 bank(iobanks)、其电平标准(package_pins)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。