用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乃至更大的江湖。
评论
  • 1月7日-10日,2025年国际消费电子产品展览会(CES 2025)盛大举行,广和通发布Fibocom AI Stack,赋智千行百业端侧应用。Fibocom AI Stack提供集高性能模组、AI工具链、高性能推理引擎、海量模型、支持与服务一体化的端侧AI解决方案,帮助智能设备快速实现AI能力商用。为适应不同端侧场景的应用,AI Stack具备海量端侧AI模型及行业端侧模型,基于不同等级算力的芯片平台或模组,Fibocom AI Stack可将TensorFlow、PyTorch、ONNX、
    物吾悟小通 2025-01-08 18:17 33浏览
  • 「他明明跟我同梯进来,为什么就是升得比我快?」许多人都有这样的疑问:明明就战绩也不比隔壁同事差,升迁之路却比别人苦。其实,之间的差异就在于「领导力」。並非必须当管理者才需要「领导力」,而是散发领导力特质的人,才更容易被晓明。许多领导力和特质,都可以通过努力和学习获得,因此就算不是天生的领导者,也能成为一个具备领导魅力的人,进而被老板看见,向你伸出升迁的橘子枝。领导力是什么?领导力是一种能力或特质,甚至可以说是一种「影响力」。好的领导者通常具备影响和鼓励他人的能力,并导引他们朝着共同的目标和愿景前
    优思学院 2025-01-08 14:54 82浏览
  • 在过去十年中,自动驾驶和高级驾驶辅助系统(AD/ADAS)软件与硬件的快速发展对多传感器数据采集的设计需求提出了更高的要求。然而,目前仍缺乏能够高质量集成多传感器数据采集的解决方案。康谋ADTF正是应运而生,它提供了一个广受认可和广泛引用的软件框架,包含模块化的标准化应用程序和工具,旨在为ADAS功能的开发提供一站式体验。一、ADTF的关键之处!无论是奥迪、大众、宝马还是梅赛德斯-奔驰:他们都依赖我们不断发展的ADTF来开发智能驾驶辅助解决方案,直至实现自动驾驶的目标。从新功能的最初构思到批量生
    康谋 2025-01-09 10:04 26浏览
  • 在智能网联汽车中,各种通信技术如2G/3G/4G/5G、GNSS(全球导航卫星系统)、V2X(车联网通信)等在行业内被广泛使用。这些技术让汽车能够实现紧急呼叫、在线娱乐、导航等多种功能。EMC测试就是为了确保在复杂电磁环境下,汽车的通信系统仍然可以正常工作,保护驾乘者的安全。参考《QCT-基于LTE-V2X直连通信的车载信息交互系统技术要求及试验方法-1》标准10.5电磁兼容试验方法,下面将会从整车功能层面为大家解读V2X整车电磁兼容试验的过程。测试过程揭秘1. 设备准备为了进行电磁兼容试验,技
    北汇信息 2025-01-09 11:24 35浏览
  •  在全球能源结构加速向清洁、可再生方向转型的今天,风力发电作为一种绿色能源,已成为各国新能源发展的重要组成部分。然而,风力发电系统在复杂的环境中长时间运行,对系统的安全性、稳定性和抗干扰能力提出了极高要求。光耦(光电耦合器)作为一种电气隔离与信号传输器件,凭借其优秀的隔离保护性能和信号传输能力,已成为风力发电系统中不可或缺的关键组件。 风力发电系统对隔离与控制的需求风力发电系统中,包括发电机、变流器、变压器和控制系统等多个部分,通常工作在高压、大功率的环境中。光耦在这里扮演了
    晶台光耦 2025-01-08 16:03 80浏览
  • 故障现象一辆2017款东风风神AX7车,搭载DFMA14T发动机,累计行驶里程约为13.7万km。该车冷起动后怠速运转正常,热机后怠速运转不稳,组合仪表上的发动机转速表指针上下轻微抖动。 故障诊断 用故障检测仪检测,发动机控制单元中无故障代码存储;读取发动机数据流,发现进气歧管绝对压力波动明显,有时能达到69 kPa,明显偏高,推断可能的原因有:进气系统漏气;进气歧管绝对压力传感器信号失真;发动机机械故障。首先从节气门处打烟雾,没有发现进气管周围有漏气的地方;接着拔下进气管上的两个真空
    虹科Pico汽车示波器 2025-01-08 16:51 92浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球中空长航时无人机产值达到9009百万美元,2024-2030年期间年复合增长率CAGR为8.0%。 环洋市场咨询机构出版了的【全球中空长航时无人机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球中空长航时无人机总体规模,包括产量、产值、消费量、主要生产地区、主要生产商及市场份额,同时分析中空长航时无人机市场主要驱动因素、阻碍因素、市场机遇、挑战、新产品发布等。报告从中空长航时
    GIRtina 2025-01-09 10:35 30浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 115浏览
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2025-01-09 09:58 29浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 150浏览
  • 本文介绍编译Android13 ROOT权限固件的方法,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。关闭selinux修改此文件("+"号为修改内容)device/rockchip/common/BoardConfig.mkBOARD_BOOT_HEADER_VERSION ?= 2BOARD_MKBOOTIMG_ARGS :=BOARD_PREBUILT_DTB
    Industio_触觉智能 2025-01-08 00:06 100浏览
  • 一个真正的质量工程师(QE)必须将一件产品设计的“意图”与系统的可制造性、可服务性以及资源在现实中实现设计和产品的能力结合起来。所以,可以说,这确实是一种工程学科。我们常开玩笑说,质量工程师是工程领域里的「侦探」、「警察」或「律师」,守护神是"墨菲”,信奉的哲学就是「墨菲定律」。(注:墨菲定律是一种启发性原则,常被表述为:任何可能出错的事情最终都会出错。)做质量工程师的,有时会不受欢迎,也会被忽视,甚至可能遭遇主动或被动的阻碍,而一旦出了问题,责任往往就落在质量工程师的头上。虽然质量工程师并不负
    优思学院 2025-01-09 11:48 36浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦