Implementing the Design -- 在non-project模式下运行实施设计

vivado有project模式和non-project模式,project模式就是我们常用的方式,在vivado里面新建工程,通过图形界面去操作;non-project模式是使用Tcl命令或脚本自行管理设计源和设计过程。
non-project模式的优势在于可以完全控制流程的每个步骤。
为了在non-project模式下将综合后的设计或网表实现到目标AMD设备上,需要运行与实施子过程对应的Tcl命令。这些子过程包括:
1. Opt Design (opt_design):
优化逻辑设计,使其更容易适应目标AMD设备。
2. Power Opt Design (power_opt_design) (可选)
优化设计元素,以减少目标AMD设备的功耗需求。
3. Place Design (place_design)
将设计放置在目标AMD设备上,并复制逻辑以改进时序。
4. Post-Place Power Opt Design (power_opt_design) (可选)
放置后的额外优化,以进一步减少功耗。
5. Post-Place Phys Opt Design (phys_opt_design) (可选)
使用基于放置的估计时序来优化逻辑和放置。包括高扇出驱动器的复制。
6. Route Design (route_design)
将设计路由到目标AMD设备上。
7. Post-Route Phys Opt Design (phys_opt_design) (可选)
使用实际的路由延迟来优化逻辑、放置和路由。
8. Write Bitstream (write_bitstream)
生成用于AMD设备配置的位流,但不适用于AMD Versal™自适应SoC。通常,位流生成在实现之后进行。
9. Write Device Image (write_device_image)
生成可用于编程Versal设备的可编程设备映像。
在non-project模式下,需要手动执行这些Tcl命令,而不是依赖于图形界面或项目管理器来自动化这些步骤。
请注意,上述Tcl命令的名称和参数可能会根据使用的具体工具版本和AMD设备系列有所不同。因此,在实际操作中,应该参考相应工具的官方文档,以确保使用正确的命令和参数。

这些步骤统称为实现。可以通过以下任何一种方式输入命令:
1. 在AMD Vivado IDE的Tcl控制台中
在Vivado IDE中,通常有一个Tcl控制台窗口,可以直接在其中输入Tcl命令并执行。
2. 在Vivado Design Suite Tcl shell的Tcl提示符下
Vivado Design Suite提供了一个独立的Tcl shell环境,可以在其中输入Tcl命令。这通常用于更高级的脚本编写和调试。
3. 使用包含实现命令的Tcl脚本,并在Vivado Design Suite中加载该脚本
可以编写一个Tcl脚本文件,其中包含按顺序排列的实现命令。然后,在Vivado Design Suite中,加载(或源)这个脚本文件来执行其中的命令。这通常用于自动化流程,确保每一步都按照预定的顺序和参数执行。
无论选择哪种方式,关键是确保输入的Tcl命令正确无误,并且与设计目标和目标AMD设备兼容。在编写Tcl脚本或直接在Tcl控制台中输入命令时,应参考Vivado Design Suite的官方文档,以获取正确的命令语法、参数说明和最佳实践建议。

non-project模式示例脚本

以下脚本是在non-project模式下执行实现的示例。假设脚本名为run.tcl,将在Tcl shell中使用source命令调用该脚本。
注意:read_xdc步骤从XDC文件中读取XDC约束,并将约束应用于设计对象。因此,在调用read_xdc之前,必须将所有网表文件读入Vivado,并运行link_design,以确保XDC约束可以应用于其预期的设计对象。
以下是示例脚本的内容:

source run.tcl
# Step 1: Read in top-level EDIF netlist from synthesis tool
read_edif c:/top.edf
# Read in lower level IP core netlists
read_edif c:/core1.edf
read_edif c:/core2.edf
# Step 2: Specify target device and link the netlists
# Merge lower level cores with top level into single design
link_design -part xc7k325tfbg900-1 -top top
# Step 3: Read XDC constraints to specify timing requirements
read_xdc c:/top_timing.xdc
# Read XDC constraints that specify physical constraints such as pin
locations
read_xdc c:/top_physical.xdc
# Step 4: Optimize the design with default settings
opt_design
# Step 5: Place the design using the default directive and save a
checkpoint
# It is recommended to save progress at certain intermediate steps
# The placed checkpoint can also be routed in multiple runs using different
options
place_design -directive Default
write_checkpoint post_place.dcp
# Step 6: Route the design with the AdvancedSkewModeling directive. For
more information
# on router directives type 'route_design -help' in the Vivado Tcl Console
route_design -directive AdvancedSkewModeling
# Step 7: Run Timing Summary Report to see timing results
report_timing_summary -file post_route_timing.rpt
# Run Utilization Report for device resource utilization
report_utilization -file post_route_utilization.rpt
# Step 8: Write checkpoint to capture the design database;
# The checkpoint can be used for design analysis in Vivado IDE or TCL API
write_checkpoint post_route.dcp

在运行此脚本之前,请确保:

  1. netlist_file.v 是网表文件,需要将其替换为实际网表文件的路径。
  2. constraints.xdc 是包含设计约束的XDC文件,同样需要替换为实际文件的路径。
  3. 确保Vivado Design Suite已正确安装,并且Tcl shell环境已准备好。

Non-Project 模式示例脚本的关键步骤

步骤 1:读取设计源文件
EDIF网表设计源文件通过read_edif命令读入内存。non-project模式也支持RTL设计流程,这允许读取源文件并在实现之前运行综合。
使用read_checkpoint命令可以将综合后的设计检查点文件添加为源文件。
read_* Tcl命令是为非项目模式设计的。这些read_* Tcl命令允许Vivado工具读取磁盘上的文件并在内存中构建设计,而无需复制文件或创建对文件的依赖。
这种方法使non-project模式在设计方面具有很高的灵活性。
**重要提示!**必须监控源文件设计文件的任何更改,并按需更新设计。

步骤 2:构建内存中的设计
Vivado工具使用link_design命令构建设计的内存视图。link_design命令将读入工具中的基于网表的源文件与AMD部件信息相结合,在内存中创建一个设计数据库。
link_design有两个重要的选项:
• -part选项指定目标设备。
• -top选项指定用于实现的顶层设计。如果顶层网表是EDIF格式且未指定-top选项,Vivado工具将使用嵌入在EDIF网表中的顶层设计。如果顶层网表不是EDIF而是结构化的Verilog,则需要使用-top选项。此外,-top选项还可以用于指定子模块作为顶层,例如在运行模块分析流程以估计性能和利用率时。
在non-project模式下执行的所有操作都针对Vivado工具中的内存数据库。
内存中的设计驻留在Vivado IDE中,以便以图形形式与设计数据进行交互。这些工具可以在批处理模式下运行,也可以在Tcl shell模式下运行交互式Tcl命令,或者在[此处应提供Vivado IDE的图形界面相关描述]。

步骤 3:读取设计约束
Vivado Design Suite使用设计约束来定义设计的物理和时序特性的要求。
read_xdc命令读取XDC约束文件,然后将其应用于内存中的设计。
提示:尽管project模式支持定义包含多个用于不同目的的约束文件的约束集,但non-project模式使用多个read_xdc命令来实现相同的效果。

步骤 4:执行逻辑优化
逻辑优化是在布局和布线之前进行的准备步骤。优化在将逻辑设计提交到目标部件的物理资源之前简化设计。
Vivado网表优化器包含多种类型的优化,以满足不同的设计要求。

步骤 5:放置设计
使用place_design命令来放置设计。放置完成后,使用write_checkpoint命令将进度保存到设计检查点文件中。

步骤 6:对设计进行布线
route_design命令用于对设计进行布线。

步骤 7:运行所需报告
report_timing_summary命令运行时序分析,并生成包含时序违规详情的时序报告。report_utilization命令生成设备资源使用百分比和其他利用率统计数据的摘要。
在non-project模式下,必须使用适当的Tcl命令来指定要创建的每个报告。每个报告命令都支持-file选项,以将输出定向到文件。
可以将报告输出到文件中以便稍后查看,或者直接将报告发送到Vivado IDE以立即查看。

步骤 8:保存设计检查点
将内存中的设计保存到设计检查点文件中。保存的内存设计包括:
• 逻辑网表
• 物理和时序相关约束
• AMD部件数据
• 布局和布线信息
在non-project模式下,设计检查点文件保存设计,并允许重新加载设计以进行进一步的分析和修改。

相关推荐

  1. windows环境设置redis后台运行

    2024-03-30 23:52:03       41 阅读
  2. 如何Python中实现设计模式

    2024-03-30 23:52:03       16 阅读
  3. 如何 windows 运行 linux 程序

    2024-03-30 23:52:03       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-30 23:52:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-30 23:52:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-30 23:52:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-30 23:52:03       20 阅读

热门阅读

  1. 【阅读笔记】《你的第一本博弈论》

    2024-03-30 23:52:03       16 阅读
  2. 防范非法集资,小米消金在行动

    2024-03-30 23:52:03       17 阅读
  3. ASTM C568/C568-22 石灰石检测

    2024-03-30 23:52:03       17 阅读
  4. IDM工具v6.42.3 便携绿色

    2024-03-30 23:52:03       20 阅读
  5. 简单的聊聊Rust元组

    2024-03-30 23:52:03       21 阅读
  6. 10个点介绍SpringBoot3工作流程与核心组件源码解析

    2024-03-30 23:52:03       21 阅读
  7. 动态内存管理

    2024-03-30 23:52:03       21 阅读
  8. Spring Cache 快速入门

    2024-03-30 23:52:03       19 阅读
  9. docker 打包前台程序

    2024-03-30 23:52:03       17 阅读
  10. visual studio快捷键

    2024-03-30 23:52:03       18 阅读