在Vivado中实现ECO功能

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



本篇是Xilinx已发布的《Vivado使用误区与进阶》系列:Vivado中实现ECO功能。


关于 Tcl  Vivado®中的应用文章从 Tcl 的基本语法和在 Vivado 中的 应用展开,继上篇《用 Tcl 定制 Vivado 设计实现流程》介绍了如何扩展甚 至是定制 FPGA 设计实现流程后,引出了一个更细节的应用场景:如何利用 Tcl 在已完成布局布线的设计上对网表或是布局布线进行局部编辑,从而在最短时间内,以最小的代价完成个别的设计改动需求。

什么是 ECO

ECO 指的是Engineering Change Order,即工程变更指令。目的是为 了在设计的后期,快速灵活地做小范围修改,从而尽可能的保持已经验证 的功能和时序。ECO 的叫法算是从 IC 设计领域继承而来,其应用在 FPGA 设计上尚属首次,但这种做法其实在以往的 FPGA 设计上已被广泛采用。简单来说,ECO 便相当于 ISE 上的 FPGA Editor

但与 FPGA Editor 不同,Vivado 中的 ECO 并不是一个独立的界面或是一些特定的命令,要实现不同的 ECO 功能需要使用不同的方式。

ECO 的应用场景和实现流程

ECO 的应用场景主要包含:修改cell 属性、增减或移动 cell、手动局部布线。还有一些需要多种操作配合的复杂场景,例如把 RAM(或 DSP)的输出寄存器放入/拉出 RAMB(或 DSP48)内部,或是把设计内部信号接到 I/O 上作调试 probe 用等等。

针对不同的应用场景,Vivado 中支持的 ECO 实现方式也略有区别。 有些可以用图形界面实现,有些则只能使用 Tcl 命令。但通常可以在图形化界面上实现的操作,都可以改用一条或数条 Tcl 命令来实现。

ECO 的实现流程如下图所示:

第一步所指的 Design 通常是完全布局布线后的设计,如果是在工程模式下,可以直接在 IDE 中打开实现 后的设计,若是仅有 DCP 文件,不论是工程模式或是非工程模式产生的 DCP,都可以用 open_checkpoint  令打开。

第二步就是 ECO 的意义所在,我们在布局布线后的设计上进行各种操作,然后仅对改动的部分进行局部布局/布线而无需整体重跑设计,节约大量时间的同时也不会破坏已经收敛的时序。

第三步就是产生可供下载的 bit 文件了,此时必须在 Tcl Console 中或是 Tcl 模式下直接输入命令产生 bit 文件,而不能使用 IDE 上的“Generate Bitstream”按钮。原因是后者读到的还是 ECO 前已经完成布局布线的原 始设计,生成的 bit 文件自然也无法使用。

修改属性

绝大部分的属性修改都能通过 IDE 界面完成,如下图所示。

比如要修改寄存器的初值 INIT 或是 LUT 的真值表,用户只需在 Vivado IDE 中打开布局布线后的设计 Implemented Design),在 Device View 中找到并选中这个 FF/LUT,接着在其左侧的 Cell Properties 视图中 选择需要修改的属性,直接修改即可。

除了对 FF/LUT 的操作外,很多时候我们需要对 MMCM/PLL 输出时钟的相移进行修改。对于这种应用,用户也无需重新产生 MMCM/PLL,与上述方法类似,可以在布局布线后的 Device View 上直接修改。

移动/交换 cells

移动/交换 cells 是对 FF/LUT 进行的 ECO 操作中最基本的一个场景,目前也只有这种情况可以通过图形化实现。如要删减 cells 等则只能通过 Tcl 命令来进行。

具体操作方法也相当简便,要互换 cells 位置的情况下,只要在 Device View 上选中需要的那两个 cells,如上图所示的两个 FFs,然后右键调出菜单,选择 Swap Locations 即可。若要移动 cells 则更简单,直接在图 中选中 FF 拖移到新的位置即可。

当用户移动或改变了 cells 的位置后会发现与其连接的 nets 变成了黄色高亮显示,表示这些 nets 需要重新布线。这时候需要做的就是在图中选中这些 nets 然后右键调出菜单,选择 Route 进行局部布线。

局部布线后一定要记得在 Tcl Console 中使用 report_route_status 命令检查布线情况,确保没有未完成布线(unrouted)或是部分未完成布线(partial routed)的 nets 存在。给这个命令加上选项则可以报告出更细致的结果,如下图所示。

如果换个稍复杂些的 Tcl 命令配合图形化显示,更加直观的同时,也可以方便右键调出命令进行针对性的局部布线。

手动布线

手动布线是一种非常规的布线方式,一次只能针对一根 net 在图形化界面下进行。所谓手动布线,除了完全手动一个节点一个节点的选择外,也支持工具自动选择资源来布线。通常我们并不建议全手动的方式, Vivado 是时序驱动的工具,所以其自动选择的布线结果已经是遵循了时序约束下的最佳选择。

 Device View 中选择一根没有布线或是预先 Unroute 过的 net(显示为红色高亮),右键调出菜单并选择 Enter Assign Routing Mode… 便可进入手动布线模式。

复杂的 ECO场景

篇幅过半,一直在铺垫,其实最有实践意义的 ECO 还没提到。相信大部分用户最怀念 FPGA Editor 中的 一个功能就是 probe 了,如何快速地把一根内部信号连接到 FPGA 管脚上,无需重新布局布线,直接更新 bit 文件后下载调试。曾经数次被客户问及,很多人还为 Vivado 中不支持这样的做法而深表遗憾。

其实这样类似的功能在 Vivado 中一直支持,唯一的问题是暂时还没有图形化界面可以一键操作(相关开 发工作已经在进行中)。但受益于 Tcl 的灵活多变,我们可以更有针对性地实现 probe 功能,效率也更高。

Tcl 操作命令

 UG835 中把 Vivado 支持的 Tcl 命令按照 Category 分类,这些列于 Netlist 目录下的命令就是实现 ECO 需要用到的那些。

通常涉及到增减 cells  ECO 基本分为三步实现:首先用create_cell / create_net 等创建相关 cell / net,然后用 disconnect_net / connect_net 等命令修正因为 cell  net 的改动而影响到的连接关系,最后用 route_design 加选项完成局部布线。

不同的 Vivado 版本对此类 ECO 修改有稍许不同的限制,例如在 2014.1 之后的版本上,需要在改变 cell 的连接关系前先用 unplace_cell  cell 从当前的布局位置上释放,在完成新的连接关系后,再用 place_cell 放到新的布局位 置上。

具体操作上可以根据 Vivado 的提示或报错信息来改动具体的 Tcl 命令,但 操作思路和可用的命令相差无几。

Add Probe

这是一个在 Vivaod 上实现 probe 功能的 Tcl 脚本,已经写成了 proc 子程序,简单易懂。可以直接调用,也可以做成 Vivado 的嵌入式扩展命令。调用其生成 probe 只需先 source 这个脚本,然后按照如下所示在 Tcl Console 中输入命令即可。

该脚本已经在 Vivado2014.3  2014.4 上测试过,一次只能完成一个 probe 的添加,而且必须按照上述顺 序输入信号名,管脚位置,电平标准和 probe 名。因为不具备预检功能,可能会碰到一些报错信息而导致无法继续。例如选择的信号是只存在于 SLICE 内部的 INTRASITE 时,则无法拉出到管脚。再比如输入命令时拼错了电平标准等,也会造成 Tcl 已经部分修改 Vivado 数据库而无法继续的问题。此时只能关闭已经打开的 DCP 并选择不保存而重新来过。

ECO  Vivado 上的发展

经过了两年多的发展,在 Vivado 上实现 ECO 已经有了多种方式,除了前面提到的图形化上那些可用的技巧,还有用户自定义的 Tcl 命令和脚本等。随着 Xilinx Tcl Store 的推出,用户可以像在 App Store 中下载使用 app 一样下载使用 Tcl 脚本,简化了 Tcl  Vivado 上应用的同时,进一步扩展了 Tcl 的深入、精细化使用,其 中就包括 Tcl  ECO 上的应用。

目前 Vivado 2014.4 版本上新增了很多有用的脚本。安装好 Vivado 后,只需打开 Tcl Store,找到 Debug Utilities,点击 Install 稍等片刻,即可看到一个 add_probe  Tcl proc 被安装到了你的 Vivado 中。

这个 add_probe 是在上述 addProbe 例子的基础上扩展而来,不仅可以新增 probe,而且可以改变现有 probe 连接的信号。此外,这个脚本采用了 argument 写法,点击程序可以看 help,所以不一定要按照顺序输入信号、电平标准等选项,输错也没有问题。另外增加了预检和纠错功能,碰到问题会报错退出而不会改变 Vivado 数据库,效率更高。

此外,Tcl Store 上还有很多其它好用的脚本,欢迎大家试用并反馈给我们宝贵意见。虽然里面关于ECO 的脚本还很少,但我们一直在补充。此外 Tcl Store 是一个基于 GitHub 的完全开源的环境,当然也欢迎大家上传自己手中有用的 Tcl 脚本,对其进行补充。

总体来说,ECO 是一个比较大的命题,因为牵扯到的改动需求太多,其实也很难限制在一个 GUI 界面中实现。这篇文章的目的就是为了让大家对在 FPGA 上实现 ECO 有个基本的认识,梳理看似复杂无序的流程,所谓观一叶而知秋,窥一斑而见全豹,希望能带给更多用户信心,用好 Vivado 其实一点都不难。

—— Ally Zhou 2015-2-9  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乃至更大的江湖。
评论
  • 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 45浏览
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 87浏览
  •     为控制片内设备并且查询其工作状态,MCU内部总是有一组特殊功能寄存器(SFR,Special Function Register)。    使用Eclipse环境调试MCU程序时,可以利用 Peripheral Registers Viewer来查看SFR。这个小工具是怎样知道某个型号的MCU有怎样的寄存器定义呢?它使用一种描述性的文本文件——SVD文件。这个文件存储在下面红色字体的路径下。    例:南京沁恒  &n
    电子知识打边炉 2025-01-04 20:04 100浏览
  • 随着市场需求不断的变化,各行各业对CPU的要求越来越高,特别是近几年流行的 AIOT,为了有更好的用户体验,CPU的算力就要求更高了。今天为大家推荐由米尔基于瑞芯微RK3576处理器推出的MYC-LR3576核心板及开发板。关于RK3576处理器国产CPU,是这些年的骄傲,华为手机全国产化,国人一片呼声,再也不用卡脖子了。RK3576处理器,就是一款由国产是厂商瑞芯微,今年第二季推出的全新通用型的高性能SOC芯片,这款CPU到底有多么的高性能,下面看看它的几个特性:8核心6 TOPS超强算力双千
    米尔电子嵌入式 2025-01-03 17:04 55浏览
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 104浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 75浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 145浏览
  • PLC组态方式主要有三种,每种都有其独特的特点和适用场景。下面来简单说说: 1. 硬件组态   定义:硬件组态指的是选择适合的PLC型号、I/O模块、通信模块等硬件组件,并按照实际需求进行连接和配置。    灵活性:这种方式允许用户根据项目需求自由搭配硬件组件,具有较高的灵活性。    成本:可能需要额外的硬件购买成本,适用于对系统性能和扩展性有较高要求的场合。 2. 软件组态   定义:软件组态主要是通过PLC
    丙丁先生 2025-01-06 09:23 85浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 68浏览
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 119浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 127浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 173浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 80浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦