精华内容
下载资源
问答
  • TclVivado更完美

    2018-12-19 17:12:26
    Vivado中的Tcl基本知识 Vivado下利用Tcl编辑综合后的网表文件 Vivado下利用Tcl定制丰富的报告 TclVivado图形界面的交互使用
  • 上一篇《 TclVivado 中的应用》 介绍了 Tcl 的基本语法以及如何利用 TclVivado 中定位目标。其实 TclVivado 中还有很多延展应用,接下来我们就来讨论如何利用 Tcl 语言的灵活性和可扩展性,在 Vivado 中...

    本文摘自《Vivado使用误区与进阶》,作者为Xilinx工具与方法学应用专家Ally Zhou。

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

    01

    基本的FPGA设计实现流程

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

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

    175a5798c3bb10a08e76e434932ca3a9.png

    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 。不同按钮对应不同的实现过程,其中在后端实现阶段,还可以用右键调出详细分步命令,指引工具具体执行实现的哪一步。

    ffd2decb3044766c059954fc7ee07bff.png

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

    非工程模式

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

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

    e79004cc764bcb436400453a90bac23c.png

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

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

    caff0c3d1a3c70898ebf37938b579417.png

    02

    Tcl对图形化的补充

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

    Tcl Console

    78d7370f47058e9a8efe71cc7cb6402e.png

    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_objects、 select_objects 等等)的帮助,我们还可以利用 TclConsole 与时序报告、 RTL 和门级网表以及布局布线后的网表之间进行交互调试,极大发挥 Vivado IDE 的优势。

    Hook Scripts

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

    22bdd86ea27e51abd31e622bba96c703.png

    Tcl 脚本必须事先写好,然后在上图所示的设置界面由用户使用弹出窗口指定到脚本所在位置。这些就是所谓的“钩子”脚本,正是有了这样的脚本,我们才得以在图形化界面上既享有一键式执行的便利,又充分利用 Tcl 带来的扩展性。比较常见的使用场景是,在某个步骤后多产生几个特别的报告,或是在布线前再跑几次物理优化等。

    Customer Commands

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

    cb7843ea4e9c2e142891dcfb613d635b.png

    03

    用Tcl定制实现流程

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

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

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

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

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

    704f17f7b308a8c25de8834b0542883d.png

    充分利用物理优化

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

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

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

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

    7ddc6e1506436d24a1891ff0e52c38d6.png

    闭环设计流程

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

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

    ddbf6d4ad77bb8ce38a44937b1592b7f.png

    04

    增量设计流程

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

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

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

    e2cd99080f7045a3b34d24737f7464c8.pngb28ccf302f2bbf808cf06a7c281be766.png

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

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

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

    更多精彩看这里:

    Vivado使用误区与进阶系列(一)十分钟教会你UltraFast(1)

    Vivado使用误区与进阶系列(一)十分钟教会你UltraFast(2)

    Vivado使用误区与进阶系列(二)XDC约束技巧之时钟篇

    Vivado使用误区与进阶系列(三)XDC约束技巧之CDC篇

    Vivado使用误区与进阶系列(四)XDC约束技巧之I/O篇(上)

    Vivado使用误区与进阶系列(五)XDC约束技巧之I/O篇(下)

    Vivado使用误区与进阶系列(六)Tcl在Vivado中的应用

    01f796f7be85ab3296d55d420069933a.png
    展开全文
  • 使用tcl 创建vivado工程

    2021-03-08 20:06:28
    使用tcl 创建vivado工程ubuntu 下vivado 运行tcl脚本 ubuntu 下vivado 运行tcl脚本 vivado -source xxx.tcl #creat_xilinx_proj 注释 #设置工程输出路径 set outputDir ./proj #创建文件夹 file mkdir $outputDir ...

    使用tcl 创建vivado工程

    ubuntu 下vivado 运行tcl脚本

    vivado -source xxx.tcl

    #creat_xilinx_proj	注释
    
    #设置工程输出路径
    set outputDir ./proj 
    #创建文件夹
    file mkdir $outputDir
    
    #在指定文件夹下创建工程 需要指定器件, -force 表示强制执行
    #create_project proj_name  proj_dir -part xc7z010clg400-2 -force
    create_project 03_test_tcl ./proj/ -part xc7z010clg400-2 -force
    #添加verilog文夹
    add_file [ glob ./led.v]
    #向工程中添加block design 
    read_bd ./src/processing_system/processing_system.bd
    
    
    #设置顶层文件
    set_property top led_0to_n [current_fileset]
    
    

    上面的这个小例子可以使用tcl脚本简单的 创建vivado工程。
    未完待续……

    展开全文
  • 原标题:【Vivado使用误区与进阶】用Tcl定制Vivado设计实现流程上一篇《TclVivado中的应用》介绍了Tcl的基本语法以及如何利用TclVivado中定位目标。其实TclVivado中还有很多延展应用,接下来我们就来讨论如何...

    原标题:【Vivado使用误区与进阶】用Tcl定制Vivado设计实现流程

    7197dd5f57a47c4fa2c119ca480064ba.png

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

    基本的FPGA设计实现流程

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

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

    28ecf28254561ea3fc1300f3d455533e.png

    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 。不同按钮对应不同的实现过程,其中在后端实现阶段,还可以用右键调出详细分步命令,指引工具具体执行实现的哪一步。

    ac83a2be0fe352fe4e4f2182d32f2558.png

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

    非工程模式

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

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

    e29645f8c5f9a66e302cbdaf54850dad.png

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

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

    Vivado支持的两种Tcl脚本

    e135063ef2993a518d52ff289c3c54fc.png

    Tcl对图形化的补充

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

    Tcl Console

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

    530c213721b0fc2b82a6d9afef5647af.png

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

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

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

    Hook Scripts

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

    aa9a275bc1dccde325ee096894c6fd2b.png

    tcl.pre 表示当前这步之前Vivado会主动source的Tcl脚本,tcl.post 表示这步之后会source的脚本。Tcl脚本必须事先写好,然后在上图所示的设置界面由用户使用弹出窗口指定到脚本所在位置。

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

    Customer Commands

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

    da99515ec16472204686f69fdb755b7b.png

    用Tcl定制实现流程

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

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

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

    781f23db51dd148799d909b71dfd346e.png

    这里不会讨论那些图形化界面中可选的策略,不同策略有何侧重,具体如何配置我们将在另外一篇关于Vivado策略选择的文章中详细描述。我们要展示的是如何对设计流程进行改动来更好的满足设计需求,这些动作往往只能通过Tcl脚本来实现。

    充分利用物理优化

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

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

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

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

    f332dcfe10e5471b353a3cb6ce7e3ac8.png

    闭环设计流程

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

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

    913d8bd1567aec39a6abb14422ff9392.png

    增量设计流程

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

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

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

    a8d8e9ed284d0085d7de884f7106737d.png

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

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

    ae991755c44c3e6a446b8916aeca72cc.png

    以上用Tcl定制Vivado设计实现流程的讨论就到这里,关于更细节的Tcl使用场景,包括ECO流程等,会另外展开,敬请关注。

    作者:Ally Zhou

    整理:碎碎思

    版权归原作者所有

    ---> END

    7e0df954dba48d8256b45a0cc9af5847.gif

    NOW

    dcdac7cec0996e0f417576fcef310cbd.png

    推荐阅读

    【Vivado那些事】如何查找官网例程及如何使用官网例程

    【每周一问】如何控制加载FPGA程序时,Xilinx FPGA的IO管脚输出高低电平

    【每周一问】Vivado综合时突然OCC模式弹不出来了

    一文读懂Tcl在Vivado中的应用

    点击上方字体即可跳转阅读哟

    3eb5daa20ed936c97a3260a50eaadfee.gif3eb5daa20ed936c97a3260a50eaadfee.gif3eb5daa20ed936c97a3260a50eaadfee.gif

    7e9cd6c648e4d0dc67348eca93a190db.png

    展开全文
  • vivado tcl

    2015-02-26 11:09:28
    vivado tcl example for petalinux tutorial
  • 使用tcl命令保存vivado工程成.tcl文件和使用.tcl文件恢复vivado工程的方法 风且行 2018-10-22 22:02:23 ...

    使用tcl命令保存vivado工程成.tcl文件和使用.tcl文件恢复vivado工程的方法

    把vivado工程保存成.tcl文件,有两种方法,分别是:

         ① 使用tcl命令:在打开的vivado工程中,在tcl命令输入行,输入如下命令,write_project_tcl { d:/work/system.tcl},即可把工程保存成.tcl文件。其中d:/work/是.tcl文件保存的路径,可根据实际使用的需要更改,system.tcl是保存的文件名。

         ② 使用GUI操作:在打开的vivado工程中,依次点击 File —》 Write Project to Tcl ,在Write Project To Tcl 界面设置相关参数(主要是tcl文件的保存路径和文件名),即可把工程保存成.tcl文件。

        使用.tcl文件恢复vivado工程,需要注意以下事项:

         ① 首先要打开.tcl文件,查看此.tcl文件是用哪个版本的vivado创建的,然后必须使用同样版本的vivado软件来运行此.tcl文件。因为不同版本的vivado用的IP核可能不同,所以vivado版本必须先一致。

         ② 查看.tcl文件中的NOTE,把NOTE中提到的全部文件找到,并按相关提示修改.tcl文件中相关文件的路径为当前路径。

       使用.tcl文件恢复vivado工程,有以下两种方法:

         ① 使用tcl命令:启动vivado,在tcl console下,用cd命令将工作路径指定到目标路径,例如 cd d:/work/vivado_Project,在此路径下保存有.tcl文件,然后输入TCL命令 source ./system.tcl,即可完成恢复vivado工程。

         ②启动vivado,在vivado界面tools下,运行run tcl script,路径指到system.tcl的保存路径即可。

       可以使用pwd命令来查看当前路径。

    展开全文
  • 上一篇《TclVivado中的应用》介绍了Tcl的基本语法以及如何利用TclVivado中定位目标。其实TclVivado中还有很多延展应用,接下来我们就来讨论如何利用Tcl语言的灵活性和可扩展性,在Vivado中实现定制化的FPGA...
  • 今天听说可以用TCL脚本重构vivado工程,只需要利用vivado生成重建工程的脚本和源文件,即可自动恢复工程。具体操作如下:在当前版本的工程调试没有问题的情况下,在tcl_console输入如下命令,将脚本运行文件夹切换到...
  • 上一篇《 TclVivado 中的应用》 介绍了 Tcl 的基本语法以及如何利用 TclVivado 中定位目标。其实 TclVivado 中还有很多延展应用,接下来我们就来讨论如何利用 Tcl 语言的灵活性和可扩展性,在 Vivado 中...
  • Tcl定制Vivado设计实现流程

    千次阅读 2016-11-04 23:58:03
    其实TclVivado中还有很多延展应用,接下来我们就来讨论如何利用Tcl语言的灵活性和可扩展性,在Vivado中实现定制化的FPGA设计流程。 基本的FPGA设计实现流程 FPGA的设计流程简单来讲,就是从源代码到比特流...
  • TCLvivado中的应用

    2018-12-19 17:10:48
    Tcl(读作tickle)诞生于80年代的加州大学伯克利分校,作为一种简单高效可移植性好的脚本语言,目前已经广泛应用在几乎所有的EDA工具中。Tcl 的最大特点就是其语法格式极其简单甚至可以说僵化,采用纯粹的 [命令 ...
  • TclVivado中的应用

    千次阅读 2015-02-03 10:34:38
    转自:http://forums.xilinx.com/t5/Vivado专区/Vivado使用误区与进阶-TclVivado中的应用/td-p/525003 ...但是对初学者来说,新的约束语言XDC以及脚本语言Tcl的引入则成为了快速掌握Vivado使用技巧的最大障碍,以至
  • 但是对初学者来说,新的约束语言XDC以及脚本语言Tcl的引入则成为了快速掌握Vivado使用技巧的最大障碍,以至于两年多后的今天,仍有很多用户缺乏升级到Vivado的信心。本文介绍了TclVivado中的基础应用,希望...
  • 原标题:【Vivado使用误区与进阶】TclVivado中的应用Xilinx的新一代设计套件Vivado相比上一代产品ISE,在运行速度、算法优化和功能整合等很多方面都有了显著地改进。但是对初学者来说,新的约束语言XDC以及脚本...
  • VIVADO tcl命令

    2018-08-12 21:45:20
    VIVADO参考命令的设计文档,主要详细介绍了TCL命令的详细内容。
  • 用户定义的TCL脚本位于目标的vivado目录中。 当make目标为“ prom”时,不需要这些用户定义的TCL脚本。 然后必须定义promgen.tcl并存在。 这是用户定义的TCL脚本的完整列表: 用户文件名 源.TCL位置 project_setup...
  • TclVivado中的使用

    2015-04-06 16:08:00
    Vivado是Xilinx最新的FPGA设计工具,支持7系列以后的FPGA及Zynq 7000的开发。与之前的ISE设计套件相比,Vivado可以说是全新设计的。无论从界面、设置、算法,还是从对使用者思路的要求,都是全新的。看了大家很多的...
  • 设置永久的环境变量 在path环境变量中添加Vivado的路径,路径设置到bin文件夹,例如C:\Xilinx\Vivado\2014.1\bin 永久设置需要更改/etc/profile文件 ...vivado -mode tcl 要注意,使用前要先source一下sett...
  • 平时上github经常遇到上传的工程,除了源码就一个tcl脚本,通过tcl...打开vivado工程,直接tcl指令输入: 可以看到对应的目录下产生了对应的tcl 文件, 恢复的话,直接进入对应的目录。 然后直接执行tcl即可: ...
  • vivado tcl 命令手册

    2019-04-23 21:08:00
    vivadotcl工具的官方手册,包括tcl中用到的所有命令,方便大家查阅
  • vivadotcl脚本

    2019-01-09 14:17:14
    vivadotcl脚本,可用于vivado软件的借鉴参考~方便FPGA开发
  • vivado tcl 命令

    2014-12-06 11:10:04
    vivado 支持脚本处理,对于熟悉脚本的人来说,操作起来非常方便,但是对于不熟悉脚本的人操作起来就比较困难。
  • 上期内容:借助Elaborated Design优化RTL代码Vivado有两种工作模式:project模式和non-project模式。这两种模式都可以借助VivadoIDE或Tcl命令来运行。相比之下,VivadoIDE给project模式提供了更多的好处,而Tcl命令...
  • 每次创建vivado工程时都会生成大量的文件,这样一方面导致占用的磁盘空间很大,另一方面也不利于vivado工程的copy和github上传等操作。这里教大家一个简单又实用的方法,将工程...
  • Vivado中的TCL脚本语言

    2019-09-12 09:39:10
    本文介绍了TclVivado中的基础应用,希望起到抛砖引玉的作用,指引使用者在短时间内快速掌握相关技巧,更好地发挥Vivado在FPGA设计中的优势。 Vivado TCL脚本语言 使用Tcl作为它的命令语言的好处: 1 Tcl提供了...
  • write_bd_tcl G:/Vitisproj/0322.tcl Vivado% pwd cd G:/Xilinx2018.3/laser322 create_project project1 myDesigns project1 set_property part xc7z015clg485-1 [current_project] Vivado% add_files [glob ./*.v]...
  • vivadoTCL

    2020-06-10 20:42:48
    打开综合后的网表文件:open_run synth_1 得到debug core:get_debug_cores open_run impl_1 report_timing_summary -name timing1 set_param general.maxThreads 8

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 543
精华内容 217
关键字:

tclvivado