在project模式下自定义Implementation Strategies

2024-04-04 23:12

本文主要是介绍在project模式下自定义Implementation Strategies,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Implementation Settings定义了默认选项,当要定义新的implementation runs时会使用这些选项,选项的值可以在Vivado IDE中进行配置。
图1展示了“Settings”对话框中的“implementation runs”对话框。要从Vivado IDE打开此对话框,请从主菜单中选择“Tools > Settings”。
图1 Implementation Settings
在Vivado中,自定义Implementation Strategies对于优化设计和提高性能至关重要。通过修改Implementation Settings,可以调整各种参数,如优化级别、并行度、目标硬件等,以满足特定项目的需求。

一、通过Flow Navigator访问Active Run的Implementation Settings

还可以通过在Flow Navigator的顶部选择“Settings”,然后单击“Implementation”类别,来访问active implementation run的Implementation Settings。
如图1所示的Settings 对话框包含以下字段:
• Default Constraint Set
选择implementation run时默认使用的约束集。
• Report Settings
使用此菜单选择报告策略。可以从预设的报告策略中选择,或者定义自己的策略来选择在每个设计步骤中运行哪些报告。
• Incremental Compile
如果需要,指定增量编译检查点。
• Strategy
选择用于实现运行的策略。Vivado Design Suite包含一组预定义的策略。也可以创建自己的实现策略,并将更改保存为新策略以供将来使用。
• Description
描述所选的Implementation Strategies。用户定义的策略的描述可以通过输入新的描述进行更改。Vivado工具标准实现策略的描述无法更改。
通过Flow Navigator访问Implementation Settings,可以方便地查看和修改当前活动运行的配置选项。这对于调整设计流程、优化性能或解决特定问题非常有用。

二、定义Implementation Strategies

run strategy是解决设计中synthesis 或 implementation 挑战的预定义方法。
• 策略是在Vivado implementation特性中为预配置选项集定义的。
• 策略是针对特定工具和版本的。
• Vivado Design Suite的每个主要版本都包含特定于版本的策略。Vivado实现包括几个常用的策略,这些策略都经过了内部基准测试的验证。
提示:不能保存对预定义implementation strategies的更改。但是,可以复制、修改和保存预定义策略以创建自己的策略。
在Vivado中,定义implementation strategies是优化设计和提高性能的关键步骤。通过选择或创建适合项目需求的策略,可以更好地控制设计流程,并解决特定的implementation挑战。Vivado提供了多种预定义的策略,这些策略基于广泛的测试和验证,适用于各种常见的设计场景。如果需要更精细的控制或针对特定项目的优化,可以复制和修改这些预定义策略,以创建自定义策略,并保存以供将来使用。
图2 Default Implementation Strategies

三、访问当前定义的策略

要访问当前定义的运行策略,请在Vivado IDE主菜单中选择“Tools > Settings”。
要查看、复制和修改运行策略,请按照以下步骤操作:
1、从主菜单中选择“Tools > Settings”。
2、在左侧面板中选择“Strategies ”。
3、选择“Run Strategies”以查看、复制或修改运行策略**。**
run Strategies页面(如上图2所示)包含各种工具和发行版本的预定义运行策略列表。
4、在“Flow”下拉菜单中,为可用策略选择适当的Vivado Implementation版本。

将显示包含的策略列表。
5、创建新策略或复制现有策略。
要创建新策略,请单击工具栏上的“Create Strategy”按钮或从右键菜单中选择它。
要复制现有策略,请选择工具栏或弹出菜单中的“Copy Strategy”。
Vivado设计工具将执行以下操作:
a. 复制当前所选策略。
b. 将其添加到“User Defined Strategies”列表中。
c. 在对话框的右侧显示策略选项,以便进行修改。
6、为新策略提供名称和描述
Name:输入要分配给运行的策略名称。
Type:指定综合或实现。
Tool Version:指定工具版本。
Description:输入在设计运行结果表中显示的策略描述。
7、编辑各个实现步骤的Options
设计初始化(init_design)
优化设计(opt_design)
电源优化设计(power_opt_design)(可选)
放置设计(place_design)
放置后电源优化设计(power_opt_design)(可选)
放置后物理优化设计(phys_opt_design)(可选)
布线设计(route_design)
布线后物理优化设计(post_route_phys_opt_design)(可选)
写入比特流(write_bitstream)(除Versal之外的所有设备)
写入设备映像(write_device_image)(Versal设备)
提示:选择一个选项以在设计运行设置对话框的底部查看该选项的简要说明。
8、点击特定选项的右侧列以修改命令选项。
请参见下面的图3作为示例。
图3 Edit Implementation Steps
修改命令选项的步骤为:

  • 从下拉菜单中选择预定义选项。
  • 使用复选框启用或禁用某些选项。
  • 为带有文本输入字段的选项键入用户定义的值。
  • 使用文件浏览器为接受文件名和路径的选项指定文件。
  • 在implementation过程的每个步骤之前和之后插入自定义Tcl脚本(称为钩子脚本)(tcl.pre和tcl.post)。这允许您在每个implementation步骤之前或之后执行特定任务(例如,在Place Design之前和之后生成时序报告以比较时序结果)。
    注意:tcl.pre和tcl.post脚本中的相对路径是相对于它们应用的项目的适当运行目录的:
    /<project.runs>/<run_name>
    可以使用当前项目或当前运行的DIRECTORY属性在脚本中定义相对路径:
get_property DIRECTORY [current_project]
get_property DIRECTORY [current_run]

9、点击“OK”以保存新策略。
新策略将列在“User Defined Strategy”下。Vivado工具将用户定义的策略保存到以下位置:
Linux操作系统
$HOME/.Xilinx/Vivado/strategies
Windows
C:\Users\AppData\Roaming\Xilinx\Vivado\strategies
这样,就可以创建、编辑和保存自定义策略,以满足特定设计项目的需求。通过仔细调整这些策略,可以优化实现过程,从而改进设计的性能、功耗和面积等方面。

四、共享运行策略

设计团队如果希望创建和共享策略,可以将任何用户定义的策略从用户目录复制到 /Vivado//strategies 目录。其中, 是Xilinx软件的安装目录, 是发行版本号。
通过这样做,其他团队成员可以在他们自己的Vivado环境中访问和使用这些共享的策略,而无需每个用户都重新创建它们。这有助于确保团队内的设计流程一致性和可重复性。
以下是复制和共享策略的步骤:
1、找到用户定义的策略文件。这些文件通常位于用户目录下的Vivado策略文件夹中,例如在Linux系统中是 $HOME/.Xilinx/Vivado/strategies,在Windows系统中是 C:\Users<username>\AppData\Roaming\Xilinx\Vivado\strategies。
2、复制这些策略文件。可以使用文件浏览器或命令行工具来复制这些文件。
3、将策略文件粘贴到Vivado安装目录下的策略文件夹中。路径应类似于 /Vivado//strategies,其中 是Xilinx软件安装所在的目录, 是你正在使用的Vivado版本。
4、确保其他团队成员在他们的Vivado环境中也能访问到这个共享的策略目录。这通常意味着他们需要拥有读取这些文件的权限。
5、在Vivado IDE中,团队成员可以通过“Tools > Settings >Strategy”来访问这些共享的策略,并像使用其他策略一样选择和应用它们。

这篇关于在project模式下自定义Implementation Strategies的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/877055

相关文章

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

聊聊springboot中如何自定义消息转换器

《聊聊springboot中如何自定义消息转换器》SpringBoot通过HttpMessageConverter处理HTTP数据转换,支持多种媒体类型,接下来通过本文给大家介绍springboot中... 目录核心接口springboot默认提供的转换器如何自定义消息转换器Spring Boot 中的消息

C#和Unity中的中介者模式使用方式

《C#和Unity中的中介者模式使用方式》中介者模式通过中介者封装对象交互,降低耦合度,集中控制逻辑,适用于复杂系统组件交互场景,C#中可用事件、委托或MediatR实现,提升可维护性与灵活性... 目录C#中的中介者模式详解一、中介者模式的基本概念1. 定义2. 组成要素3. 模式结构二、中介者模式的特点

Python自定义异常的全面指南(入门到实践)

《Python自定义异常的全面指南(入门到实践)》想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异... 目录引言:为什么需要自定义异常一、异常基础:先搞懂python的异常体系1.1 异常是什么?1.2

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

C语言自定义类型之联合和枚举解读

《C语言自定义类型之联合和枚举解读》联合体共享内存,大小由最大成员决定,遵循对齐规则;枚举类型列举可能值,提升可读性和类型安全性,两者在C语言中用于优化内存和程序效率... 目录一、联合体1.1 联合体类型的声明1.2 联合体的特点1.2.1 特点11.2.2 特点21.2.3 特点31.3 联合体的大小1

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

Java设计模式---迭代器模式(Iterator)解读

《Java设计模式---迭代器模式(Iterator)解读》:本文主要介绍Java设计模式---迭代器模式(Iterator),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录1、迭代器(Iterator)1.1、结构1.2、常用方法1.3、本质1、解耦集合与遍历逻辑2、统一