linux vivado 脚本综合,在Vivado下利用Tcl脚本对综合后的网表进行编辑过程

描述

在ISE下,对综合后的网表进行编辑几乎是不可能的事情,但在Vivado下成为可能。Vivado对Tcl的支持,使得Tcl脚本在FPGA设计中有了用武之地。本文通过一个实例演示如何在Vivado下利用Tcl脚本对综合后的网表进行编辑。

Vivado支持传统的Tcl命令,在此基础上添加了很多自身独有的命令,这些命令可看做是对Tcl命令的进一步扩展。

因此,在Vivado下,图形界面(GUI)方式进行的操作都有相应的Tcl命令,通常会在Tcl Console中显示出来。而相反,很多Tcl脚本能做的事情,GUI方式却无法处理,这也说明了Tcl的强大之处,对综合后的网表编辑就是如此。

什么情况下需要对综合后的网表进行编辑?通常是需要对网表进行微小的改动,比如对高扇出net做寄存器复制或插入BUFG,对logic level较大的路径插入流水寄存器以改善路径延迟,更改待测net等。需要注意的是,利用Tcl直接编辑网表的意义在于可以无需重新综合以节省综合的时间而直接观察编辑后的效果来判定是否需要如此修改。例如,对组合逻辑延迟较大的路径插入流水寄存器,采用Tcl编辑之后,可以重新生成时序报告,观察该路径上的时序有多大的改善,是否达到预期的效果。如果认为插入流水寄存器是有必要的,那么还是要返回到HDL代码中进行代码的修改。再例如,更改待测net,如果设计中的某个信号需要引到PCB的测试口上,可以直接在网表中修改而无需回到HDL代码中修改。

DCP网表中的基本对象

这里先介绍一下Vivado生成的DCP网表中的基本对象:cell,port,net,pin,如图1所示,除此之外还有一个重要的对象clock。在Vivado中可以分别通过get_cells,get_ports,get_nets,get_pins和get_clocks这五个Tcl命令获取到它们。这五个命令是Vivado中最基本、最常用的Tcl命令,在后续的网表编辑中会用到它们。

2c1c086d61ae5ce289cd6f02fa250db8.png

这五个对象之间的附属关系图2所示。以cell和pin为例说明图中箭头的含义,如图3所示的网表。采用Tcl脚本1第1行命令,可通过get_pins获取到该cell上的所有pin,返回值如第2行所示。采用第3行命令,可通过get_cells获取到该pin所在的cell,这是因为pin和cell是一一对应的。

dcc08fa46fa75657d0f25d3b57fcd25f.png

db6b5431740704102242cac928a78b24.png

1f12d3126bc673ec9d8361057a490c33.png

编辑网表

这里以对高扇出信号插入BUFG为例说明如何编辑网表。采用的工程是Vivado自带的例子工程cpu。打开综合后的网表文件,通过report_high_fanout_nets找到高扇出信号rectify_reset,并通过Tcl脚本2以原理图的方式显示相关电路,这里以图4表示。

f210c0bad3e1f814abf56008d644c456.png

第一步:将rectify_reset从源端断开,如图5所示,相应的Tcl脚本如Tcl脚本3所示。

bea59d8b2264271b887cd8d16ebe2ec4.png

第二步:创建新的net,如图6所示,相应的Tcl脚本如Tcl脚本4所示。

a113d9cf0545a888d78ac67d2e316584.png

第三步:创建新的cell BUFG,如图7所示,相应的Tcl脚本如Tcl脚本5所示。

543d1fbae2d115f6f75962559644899a.png

第四步:将新的net一端连接到源端输出pin,一端连接到BUFG的输入pin;将rectify_reset的一端连接到BUFG的输出pin,如图8所示,相应的Tcl脚本如Tcl脚本6所示。

b2197b27149c2a471ecfd5fc78d02028.png

完整的Tcl脚本如Tcl脚本7所示。该命令insert_BUFG可以嵌入到Vivado中作为常规命令来使用。

1542970b14b1ee9482a5092f52997cba.png

4086a61098523432abac5afb11649192.png

打开APP阅读更多精彩内容

点击阅读全文

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值