用TCL定制Vivado设计实现流程

FPGA技术江湖 2023-05-02 07:10
关注我们
更多精彩等你发现!


今天推出Xilinx已发布的《Vivado使用误区与进阶》系列:用TCL定制Vivado设计实现流程。

上一篇《Tcl  Vivado 中的应用》介绍了 Tcl 的基本语法以及如何利  Tcl  Vivado 中定位目标。其实 Tcl  Vivado 中还有很多延展应用, 接下来我们就来讨论如何利用 Tcl 语言的灵活性和可扩展性,在 Vivado  实现定制化的 FPGA 设计流程。

基本的 FPGA 设计实现流程

FPGA 的设计流程简单来讲,就是从源代码到比特流文件的实现过程。大体上跟 IC 设计流程类似,可以分为前端设计和后端设计。其中前端设计是把源代码综合为对应的门级网表的过程,而后端设计则是把门级网表布局布线到芯片上最终实现的过程。

以下两图分别表示 ISE  Vivado 的基本设计流程:

ISE 中设计实现的每一步都是相对独立的过程,数据模型各不相同, 用户需要维护不同的输入文件,例如约束等,输出文件也不是标准网表格式,并且形式各异,导致整体运行时间过长,冗余文件较多。

Vivado 中则统一了约束格式和数据模型,在设计实现的任何一个阶段 都支持 XDC 约束,可以生成时序报告,在每一步都能输出包含有网表、约束以及布局布线信息(如果有)的设计检查点(DCP)文件,大大缩短了运行时间。

从使用方式上来讲,Vivado 支持工程模式(Project Based Mode)和非工程模式(None Project Mode 两种,且都能通过 Tcl 脚本批处理运行,或是在 Vivado 图形化界面 IDE 中交互运行和调试。

工程模式

工程模式的关键优势在于可以通过在 Vivado 中创建工程的方式管理整个设计流程,包括工程文件的位 置、阶段性关键报告的生成、重要数据的输出和存储等。

如下左图所示,用户建立了一个 Vivado 工程后,工具会自动创建相应的.xpr 工程文件,并在工程文件所 在的位置同层创建相应的几个目录,包括.cache.data.runs  .srcs 等等(不同版本可能有稍许差异),分别用于存储运行工程过程中产生的数据、输出的文件和 报告以及工程的输入源文件(包含约束文件)等。

如下右图所示,在 Vivado IDE 中还可以一键式运行整个设计流程。这些预置的命令按钮就放置在工具最左边的侧栏:Flow Navigator 。不同按钮对应不同的实现过程,其中在后端实现阶段,还可以用右键调出详细分步命令,指引工具具体执行实现的哪一步。

特别需要指出的是 Flow Navigator 只有在 Vivado IDE 中打开.xpr 工程文件才会显示,如果打开的是设计检查点.dcp 文件(不论是工程模式或是非工程模式产生的 dcp)都不会显示这个侧栏。

非工程模式

非工程模式下,由于不会创建工程,用户就需要自己管理设计源文件和设计过程。源文件只能从当前位置访问,在设计实现过程中的每一步,数据和运行结果都存在于 Vivado 分配到的机器内存中,在用户不主动输 出的情况下,不会存储到硬盘中。

简单来讲,非工程模式提供了一种类似 ASIC 设计的流程,用户拥有绝对的自由,可以完全掌控设计实现流程,但也需要用户对设计实现的过程和数据,尤其对文件输出和管理全权负责,包括何时、何地、输出怎样的文件等等。

使用非工程模式管理输入输出文件、进行设计实现都需要使用 Tcl 脚本,但这并不代表非工程模式不支持图形化界面。非工程模式下产生的.dcp 文件一样可以在 Vivdao IDE 中打开,继而产生各种报告,进行交互式调试等各种在图形化下更便捷直观的操作。这是一个常见误区,就像很多人误 认为工程模式下不支持 Tcl 脚本运行是一个道理。但两种模式支持的 Tcl 命令确实是完全不同的,使用起来也不能混淆。

下图所示是同一个设计(Vivado 自带的 Example Design)采用两种模式实现所需使用的不同脚本,更详细的内容可以在 UG975  UG835 中找到。需要注意的是,工程模式下的 Tcl 脚本更简洁,但并不是最底层的 Tcl 命令,实际执行一条相当于执行非工程模式下的数条 Tcl 命令。

Tcl对图形化的补充

相信对大部分 FPGA 工程设计人员来说,图形化界面仍旧是最熟悉的操作环境,也是设计实现的首选。在 Xilinx 推出全面支持 Tcl  Vivado 后,这一点依然没有改变,但我们要指出的是,即使是在图形化界面上跑设 计,仍然可以充分利用 Tcl 的优势。在 Vivado IDE 上运行 Tcl 脚本主要有以下几个渠道。

Tcl Console

Vivado IDE 的最下方有一个 Tcl Console,在运行过程中允许用户输入 Tcl/XDC 命令或是 source 预先写 好的 Tcl 脚本,返回值会即时显示在这个对话框。

举例来说,设计调试过程中,需要将一些约束应用在某些网表目标上(具体可参照《Tcl  Vivado 中的应 用》所示),推荐的做法就是在 IDE 中打开.dcp 然后在 Tcl Console 中输入相应的 Tcl/XDC 命令,验证返回值,碰到问题可以直接修改,直到找到正确合适的命令。然后可以记录这些命令,并存入 XDC 文件中以备下次实现时使用。

还有一种情况是,预先读入的 XDC 中有些约束需要修改,或是缺失了某些重要约束。不同于 ISE 中必须修改 UCF 重跑设计的做法,在 Vivado 中,我们可以充分利用 Tcl/XDC 的优势,  Tcl Console 中输入新的 Tcl/XDC,无需重跑设计,只要运行时序报告来验证。当然,如果能重跑设计,效果会更好,但是这种方法在早期设计阶段提供了一种快速进行交互式验证的可能,保证了更快地设计迭代,大大提升了效率。

另外,通过某些 Tcl 命令(例如 show_objectsselect_objects 等等)的帮助,我们还可以利用 Tcl Console 与时序报告、RTL 和门级网表以及布局布线后的网表之间进行交互调试,极大发挥 Vivado IDE 的优势。

Hook Scripts

Vivado IDE 中内置了 tcl.pre  tcl.post,用户可 以在 Synthesis  Implementation 的设置窗 口中找到。设计实现的每 一步都有这样两个位置可供用户加入自己的 Tcl 脚本。

tcl.pre 表示当前这步 之前 Vivado 会主动 source  Tcl 脚本,tcl.post 表示这步之后会 source 的脚本。

Tcl 脚本必须事先写好,然后在上图所示的设置界面由用户使用弹出窗口指定到脚本所在位置。

这些就是所谓的钩子脚本,正是有了这样的脚本,我们才得以在图形化界面上既享有一键式执行的便利,又充分利用 Tcl 带来的扩展性。比较常见的使用场景是,在某个步骤后多产生几个特别的报告,或是在布线前再跑几次物理优化等。

Customer Commands

Vivado IDE 中还有一个扩展功能,允许用户把事先创建好的 Tcl 脚本以定制化命令的方式加入图形化界面,成为一个按钮,方便快速执行。这个功能常常用来报告特定的时序信息、修改网表内容、实现 ECO 等等。

 Tcl定制实现流程

综上所述,标准的 FPGA 设计实现流程完全可以通过 Vivado IDE 一键式执行,如果仅需要少量扩展,通 过前述钩子脚本等几种方法也完全可以做到。若是这些方法都不能满足需求,还可以使用 Tcl 脚本来跑设计,从而实现设计流程的全定制。

:以下讨论的几种实现方案中仅包含后端实现具体步骤的区别,而且只列出非工程模式下对应的Tcl 命令。

右图所示是 Vivado 中设计实现的基本流程,蓝色部分表示实现的基本 步骤(尽管opt_design 这一步理论上不是必选项,但仍强烈建议用户执行),对应 Implementation  Default 策略。黄色部分表示可选择执行的部分,不同的实现策略中配置不同。

这里不会讨论那些图形化界面中可选的策略,不同策略有何侧重,具体如何配置我们将在另外一篇关于 Vivado 策略选择的文章中详细描述。

我们要展示的是如何对设计流程进行改动来更好的满足设计需求,这些动作往往只能通过 Tcl 脚本来实现。

充分利用物理优化

物理优化即 phys_opt_design 是在后端通过复制、移动寄存器来降扇出和 retiming,从而进行时序优化的 重要手段,一般在布局和布线之间运行,从 Vivado 2014.1 开始,还支持布局后的物理优化。

很多用户会在 Vivado 中选中 phys_opt_design,但往往不知道这一步其实可以运行多次,并且可以选择不同的 directive 来有侧重的优化时序。

比如,我们可以写这样一个 Tcl 脚本,在布局后,使用不同的 directive 或选项来跑多次物理优化,甚至可 以再多运行一次物理优化,专门针对那些事先通过 get_nets 命令找到并定义为 highfanout_nets 的高扇出网络具体 directive 的含义可以通过 UG835UG904  phys_opt_design -help 命令查询。

布局布线之间的多次物理优化不会恶化时序,但会增加额外的运行时间,也有可能出现时序完全没有得到优化的结果。布线后的物理优化有时候会恶化 THS,所以请一定记得每一步后都运行 report_timing_summary,并且通过 write_checkpoint 写出一个.dcp 文件来保留阶段性结果。这一步的结果不理想就可以及时退回到上一步的.dcp 继续进行。

闭环设计流程

通常的 FPGA 设计流程是一个开环系统,从前到后依次执行。但 Vivado 中提供了一种可能,用户可以通  place_design -post_place_opt 在已经完成布局布线的设计上再做一次布局布线,从而形成一个有了反馈信息的闭环系统。这次因为有了前一次布线后的真实连线延迟信息,布局的针对性更好,并且只会基于时序不满足的路径进行重布局而不会改变大部分已经存在的布局信息,之后的布线过程也是增量流程。

这一过程所需的运行时间较短,是一种很有针对性的时序优化方案。可以通过 Tcl 写一个循环多次迭代运行,但需留意每次的时序报告,若出现时序恶化就应及时停止。

增量设计流程

Vivado 中的增量设计也是一个不得不提的功能。当设计进行到后期,每次运行改动很小,在开始后端实现前读入的设计网表具有较高相似度的情况下,推荐使用 Vivado 的增量布局布线功能。

如上图所示,运行增量流程的前提是有一个已经完成布局布线的.dcp 文件,并以此用来作为新的布局布线的参考。

运行过程中,Vivado 会重新利用已有的布局布线数据来缩短运行 时间,并生成可预测的结果。当设计有 95% 以上的相似度时,增量布局布线的运行时间会比一般布局布线平均缩短 2 倍。若相似度低于 80%,则使用增量布局布线只有很小的优势或者基本没有优势。

除了缩短运行时间外,增量布局布线对没有发生变化的设计部分造成的破坏也很小,因此能减少时序变化,最大限度保留时序结果,所以一般要求用做参考的.dcp 文件必须是一个完全时序收敛的设计。

参考点.dcp 文件可以在 Vivado IDE  Implementation 设置中指定,也可以在 Tcl 脚本中用 read_checkpoint -incremental 读入。特别需要指出的是,在工程模式中,如要在不新建一个 impl 实现的情况下使用上一次运行的结果作为参考点,必须将其另存到这次运行目录之外的位置,否则会因冲突而报错。

以上用 Tcl 定制 Vivado 设计实现流程的讨论就到这里,后面我将就 Tcl 使用场景,包括 ECO 流程等的更多细节进行展开。

—— Ally Zhou 2014-11-11  Xilinx 上海 Office

本文来源:FPGA算法工程师


END


往期精选 

 
 

【免费】FPGA工程师招聘平台

今日说“法”:FPGA芯片如何选型?

SANXIN-B01开发板verilog教程V3电子版

学员笔记连载 | FPGA Zynq 千兆以太网回环

就业班学员学习笔记分享:FPGA之HDMI、以太网篇

求职面试 | FPGA或IC面试题最新汇总篇

FPGA项目开发:204B实战应用-LMK04821代码详解(二)

项目合作 | 承接FPGA项目公告

资料汇总|FPGA软件安装包、书籍、源码、技术文档…(2023.01.02更新)

FPGA就业班,2023.04.15开班,系统性学习FPGA,高薪就业,线上线下同步!


FPGA技术江湖广发江湖帖

无广告纯净模式,给技术交流一片净土,从初学小白到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有,QQ微信双选,FPGA技术江湖打造最纯净最专业的技术交流学习平台。


FPGA技术江湖微信交流群

加群主微信,备注姓名+公司/学校+岗位/专业进群


FPGA技术江湖QQ交流群

备注姓名+公司/学校+岗位/专业进群


FPGA技术江湖 任何技术的学习就好比一个江湖,对于每一位侠客都需要不断的历练,从初入江湖的小白到归隐山林的隐世高人,需要不断的自我感悟自己修炼,让我们一起仗剑闯FPGA乃至更大的江湖。
评论
  • 戴上XR眼镜去“追龙”是种什么体验?2024年11月30日,由上海自然博物馆(上海科技馆分馆)与三湘印象联合出品、三湘印象旗下观印象艺术发展有限公司(下简称“观印象”)承制的《又见恐龙》XR嘉年华在上海自然博物馆重磅开幕。该体验项目将于12月1日正式对公众开放,持续至2025年3月30日。双向奔赴,恐龙IP撞上元宇宙不久前,上海市经济和信息化委员会等部门联合印发了《上海市超高清视听产业发展行动方案》,特别提到“支持博物馆、主题乐园等场所推动超高清视听技术应用,丰富线下文旅消费体验”。作为上海自然
    电子与消费 2024-11-30 22:03 86浏览
  • 最近几年,新能源汽车愈发受到消费者的青睐,其销量也是一路走高。据中汽协公布的数据显示,2024年10月,新能源汽车产销分别完成146.3万辆和143万辆,同比分别增长48%和49.6%。而结合各家新能源车企所公布的销量数据来看,比亚迪再度夺得了销冠宝座,其10月新能源汽车销量达到了502657辆,同比增长66.53%。众所周知,比亚迪是新能源汽车领域的重要参与者,其一举一动向来为外界所关注。日前,比亚迪汽车旗下品牌方程豹汽车推出了新车方程豹豹8,该款车型一上市就迅速吸引了消费者的目光,成为SUV
    刘旷 2024-12-02 09:32 98浏览
  • 遇到部分串口工具不支持1500000波特率,这时候就需要进行修改,本文以触觉智能RK3562开发板修改系统波特率为115200为例,介绍瑞芯微方案主板Linux修改系统串口波特率教程。温馨提示:瑞芯微方案主板/开发板串口波特率只支持115200或1500000。修改Loader打印波特率查看对应芯片的MINIALL.ini确定要修改的bin文件#查看对应芯片的MINIALL.ini cat rkbin/RKBOOT/RK3562MINIALL.ini修改uart baudrate参数修改以下目
    Industio_触觉智能 2024-12-03 11:28 41浏览
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2024-12-02 10:40 105浏览
  • RDDI-DAP错误通常与调试接口相关,特别是在使用CMSIS-DAP协议进行嵌入式系统开发时。以下是一些可能的原因和解决方法: 1. 硬件连接问题:     检查调试器(如ST-Link)与目标板之间的连接是否牢固。     确保所有必要的引脚都已正确连接,没有松动或短路。 2. 电源问题:     确保目标板和调试器都有足够的电源供应。     检查电源电压是否符合目标板的规格要求。 3. 固件问题: &n
    丙丁先生 2024-12-01 17:37 83浏览
  • 11-29学习笔记11-29学习笔记习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-02 23:58 51浏览
  •         温度传感器的精度受哪些因素影响,要先看所用的温度传感器输出哪种信号,不同信号输出的温度传感器影响精度的因素也不同。        现在常用的温度传感器输出信号有以下几种:电阻信号、电流信号、电压信号、数字信号等。以输出电阻信号的温度传感器为例,还细分为正温度系数温度传感器和负温度系数温度传感器,常用的铂电阻PT100/1000温度传感器就是正温度系数,就是说随着温度的升高,输出的电阻值会增大。对于输出
    锦正茂科技 2024-12-03 11:50 66浏览
  • 当前,智能汽车产业迎来重大变局,随着人工智能、5G、大数据等新一代信息技术的迅猛发展,智能网联汽车正呈现强劲发展势头。11月26日,在2024紫光展锐全球合作伙伴大会汽车电子生态论坛上,紫光展锐与上汽海外出行联合发布搭载紫光展锐A7870的上汽海外MG量产车型,并发布A7710系列UWB数字钥匙解决方案平台,可应用于数字钥匙、活体检测、脚踢雷达、自动泊车等多种智能汽车场景。 联合发布量产车型,推动汽车智能化出海紫光展锐与上汽海外出行达成战略合作,联合发布搭载紫光展锐A7870的量产车型
    紫光展锐 2024-12-03 11:38 65浏览
  • 《高速PCB设计经验规则应用实践》+PCB绘制学习与验证读书首先看目录,我感兴趣的是这一节;作者在书中列举了一条经典规则,然后进行详细分析,通过公式推导图表列举说明了传统的这一规则是受到电容加工特点影响的,在使用了MLCC陶瓷电容后这一条规则已经不再实用了。图书还列举了高速PCB设计需要的专业工具和仿真软件,当然由于篇幅所限,只是介绍了一点点设计步骤;我最感兴趣的部分还是元件布局的经验规则,在这里列举如下:在这里,演示一下,我根据书本知识进行电机驱动的布局:这也算知行合一吧。对于布局书中有一句:
    wuyu2009 2024-11-30 20:30 106浏览
  • 概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解决的问题。本文在说明(三)的基础上,继续探讨为SiPM读出测试系统寻求合适的模拟脉冲检出方案。前四代SiPM使用的高速比较器指标缺陷 由于前端模拟信号属于典型的指数脉冲,所以下降沿转换速率(Slew Rate)过慢,导致比较器检出出现不必要的问题。尽管比较器可以使能滞回(Hysteresis)模块功
    coyoo 2024-12-03 12:20 70浏览
  • 作为优秀工程师的你,已身经百战、阅板无数!请先醒醒,新的项目来了,这是一个既要、又要、还要的产品需求,ARM核心板中一个处理器怎么能实现这么丰富的外围接口?踌躇之际,你偶阅此文。于是,“潘多拉”的魔盒打开了!没错,USB资源就是你打开新世界得钥匙,它能做哪些扩展呢?1.1  USB扩网口通用ARM处理器大多带两路网口,如果项目中有多路网路接口的需求,一般会选择在主板外部加交换机/路由器。当然,出于成本考虑,也可以将Switch芯片集成到ARM核心板或底板上,如KSZ9897、
    万象奥科 2024-12-03 10:24 37浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦