Vivado使用(2)——综合运行与OOC

news2024/9/24 7:19:47

目录

一、综合运行

二、OOC 

2.1 如何设置 OOC 模块

2.2 存根文件和黑盒属性

2.3 使用限制

2.4 另一种设置方法


一、综合运行

        一个“运行(run)”是指定义和配置设计在综合过程中的各方面,包括:使用到约束,针对的器件型号,综合策略,报告方式等,我们可以通过以下的方式来创建一个新的 run 。

        通过点击上图中的“+”,我们得到了以下的界面:

        我们在这样的界面中选择“综合”,得到下图的界面:

        在这个界面中,我们可以对这个“run”进行命名,设置约束集、器件、运行策略等,如果希望该运行为激活状态,则选中Make Active。继续下去,我们会得到如下界面:

        Launch directory选择启动运行的目录;Number of jobs设置了可以同时启动多少个运行(run);Generate scripts only表示仅生成运行脚本(Windows下为bat文件,Linux下为sh文件);Do not launch now只会保存先前的设置,暂时不会启动运行。

        这样我们就完成了一个运行的创建,它会和我们创建的其他run一起展示在窗口中。

        窗口中报告了相关的运行状态(not started、in progress、complete或out-of-date)。修改源文件、约束或工程设置都会导致状态变为out-of-date。

        一个“综合”运行可以有多个“实现”运行。我们可以有若干个综合和实现运行,但是在同一时间,只能有一个为active状态。所有的报告显示的都是 active 运行的相关信息。比如Project Summary窗口中的编译、资源等总结信息都属于当前状态为active的运行。选择一个运行,右键->Make Active可以设置活跃状态。同样,Flow Navigator和Flow菜单中的Run Synthesis也是启动状态为Active的运行。如果需要启动其它运行,只能通过Design Runs窗口。

二、OOC 

        在 Vivado 设计流程中,使用“Out-of-Context (OOC)”流设置自底向上的设计方法是一个高效的策略,特别适用于大型项目或需要重用某些模块的场景。通过将特定的硬件描述语言(HDL)对象设置为独立的 OOC 模块,你可以单独综合和验证这些模块,从而优化整个设计流程的管理和执行效率。

OOC具有如下特点:

  • 底层的OOC模块相对于顶层模块独立运行,并且拥有自己的约束集合;
  • 运行了OOC模块之后,再运行顶层模块综合时可以直接调用OOC综合结果,而不需要重新运行一次综合(除非修改了RTL设计或约束)。

        由于不需要每次综合时都运行整个设计,这项技术可以大大减少顶层模块的综合运行时间。IP核就是典型的采用OOC技术的代表,配置好IP核后可以选择综合模式为global(与顶层设计一起综合)或Out-of-context(作为独立模块综合),最好的做法就是选择后者,以减少整体设计的综合运行时间。

2.1 如何设置 OOC 模块

  1. 选择对象:在 Vivado IDE 的“源文件”(Sources)窗口中,找到你想要作为 OOC 模块运行的 HDL 对象。

  2. 设置为 OOC 模块

    • 右击该对象,并选择“设置为 Out-of-Context 模块”(Set as Out-of-Context Module)。
    • 在弹出的“设置为 Out-of-Context 模块”对话框中,Clock Constraint File必须创建一个新的XDC文件或在下拉菜单中选择一个已经存在的XDC文件,该约束文件中要有该模块时钟信号的相关约束。点击OK后,该模块会出现在Design Runs窗口的Out-of-Context Module Runs目录中,还有Compile Order窗口的Block Sources目录中。

2.2 存根文件和黑盒属性

        当运行了OOC综合后,会产生底层模块的综合网表和存根文件(stub文件)。存根文件仅描述了底层模块的输入和输出,在综合顶层模块时,通过存根文件来调用底层模块,模块内部当作黑盒子看待。运行实现时,Vivado会将OOC模块的综合网表插入到顶层网表中,从而完成设计。

  • 存根文件:存根文件是一个简单的 HDL 文件,包含了模块的输入和输出声明,但不包含任何内部实现逻辑。这个文件作为一个“黑盒”(black-box),在顶层模块的综合时使用,允许综合工具了解如何连接到这个模块,而不需要模块的具体实现。
  • 黑盒属性:存根文件展示了设置为黑盒属性的输入和输出。默认情况下,这个选项是选中的。如果你取消选择这个选项,那么你必须为运行创建自己的存根文件或组件声明。

        该操作将较低层级的模块设置为顶层模块,并对该模块进行合成,同时不创建输入/输出缓冲(I/O buffers)。这种方法特别适用于模块化设计,允许设计者独立验证和优化设计的各个部分。

2.3 使用限制

  • 含有IP的低层模块:如果较低层级的模块中包含IP(Intellectual Property,智能属性),则不应使用此流程。因为在 Out-of-Context(OOC)模块中处理IP可能会在后续的设计流程中导致错误。
  • 有参数或用户定义类型端口的OOC模块:当OOC模块具有参数或其端口是用户定义的类型时,也不应使用此流程,这些情况同样可能导致后续流程中出现错误。

2.4 另一种设置方法

        可以通过修改合成设置中的 -mode 选项为 out_of_context 来实现类似的效果。这个设置确保合成过程不会向该模块插入I/O缓冲,从而便于将模块作为黑盒处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1552081.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用 OpenOCD 来调试 STM32

STM32 在 Windows 上的交叉编译二 调试 在上一篇博客 《在Windows上交叉编译STM32(环境搭建)》 ,已经让 CubeMX 生成的工程成功编译,并下载到板子上了。 这篇博客主要继续介绍接下来的步骤,调试。硬件是使用的 ST-LINK ,别的也无…

【任职资格】某大型制造型企业任职资格体系项目纪实

该企业以业绩、责任、能力为导向,确定了分层分类的整体薪酬模式,但是每一名员工到底应该拿多少工资,同一个岗位的人员是否应该拿同样的工资是管理人员比较头疼的事情。华恒智信顾问认为,通过任职资格评价能实现真正的人岗匹配&…

RobotFramework编写用例,在Jenkins上如何实现用例的并发运行?

我们了解RobotFramework编写自动化测试用例的方法,了解如何将用例在Jenkins上运行。 但是,随着用例的增多,传统的pybot/robot命令运行测试用例会耗费大量的时间,这就慢慢成为了一个苦恼的问题。 那么,在Jenkins上如何…

Redis数据结构的基础插入操作

数据结构与内部编码 Redis常见的数据结构 数据结构和内部编码 数据结构的插入操作 在Redis中,数据结构的插入操作取决于你要插入的数据类型。以下是一些常见的数据结构和它们的插入操作: 字符串 (String):使用 SET 命令来插入字符串。例…

考研数学|武忠祥学习包搭配《660》和《880》

一、660、880、三大计算简单分析 660题 这本题册具有高难度、综合度和深度,属于高质量的题材。我建议不要在基础阶段就着手解决其中的660题,因为这可能会影响你的信心。相反,你可以在基础阶段完成一轮学习后,将这些题目留到强化…

Linux manim安装

简介 根据文档可知, manim目前分为两个版本, 一个是由3Blue1Brown维护更新的最新版本的manimgl, 另一个是稳定的社区版本manim or manimce. 两个版本在安装和使用上都有些不同, 不要搞混. Linux manim ERROR No package ‘pangocairo’ found Getting requirements to buil…

Spring-IoC-属性注入的注解实现

1、创建对象的注解 Component 用于声明Bean对象的注解,在类上添加该注解后,表示将该类创建对象的权限交给Spring容器。可以直接将这些类直接创建,使用的时候可以直接用。 注解的value属性用于指定bean的id值,value可以省略&…

电源噪声的起因及危害

对造成电源不稳定的根源进行简单分析如下,主要在于两个方面:一是器件高速开关状态下,瞬态的交变电流过大;二是电流回路上存在的电感。从表现形式上来看又可以分为三类:同步开关噪声(SSN),有时被称为Δi噪声,地弹(Ground bounce)现象也可归于此类(图1-a);非理想电…

HTTP状态 405 - 方法不允许

方法有问题。 用Post发的请求&#xff0c;然后用Put接收的。 大家也可以看看是不是有这种问题 <body><h1>HTTP状态 405 - 方法不允许</h1><hr class"line" /><p><b>类型</b> 状态报告</p><p><b>消息…

windwos权限维持

1.php 不死马权限维持 <?php ignore_user_abort(); //关掉浏览器&#xff0c;PHP脚本也可以继续执行. set_time_limit(0);//通过set_time_limit(0)可以让程序无限制的执行下去 $interval 5; // 每隔*秒运行 do { $filename test.php; if(file_exists($filename)) { echo…

Spring Integration 是什么?

Spring Integration 是什么&#xff1f; Spring Integration 在 Spring 家族不太有名气&#xff0c;如果不是有需求&#xff0c;一般也不会仔细去看。那么 Spring Integration 是什么呢&#xff1f;用官方的一句话来解释就是&#xff1a;它是一种轻量级消息传递模块&#xff0…

快速上手Spring Cloud 十四:璀璨物联网之路

快速上手Spring Cloud 一&#xff1a;Spring Cloud 简介 快速上手Spring Cloud 二&#xff1a;核心组件解析 快速上手Spring Cloud 三&#xff1a;API网关深入探索与实战应用 快速上手Spring Cloud 四&#xff1a;微服务治理与安全 快速上手Spring Cloud 五&#xff1a;Spring …

虚幻引擎资源加密方案解析

前段时间&#xff0c;全球游戏开发者大会(Game Developers Conference&#xff0c;简称GDC)在旧金山圆满落幕&#xff0c;会议提供了多份值得参考的数据报告。根据 GDC 调研数据&#xff0c;当下游戏市场中&#xff0c;Unreal Engine (下文简称虚幻)和 Unity 是使用最多的游戏引…

神奇的css radial-gradient

使用css radial-gradient属性&#xff0c;创造一个中间凹陷进去的形状。如下图 background: radial-gradient(circle at 50% -0.06rem, transparent 0.1rem, white 0) top left 100% no-repeat;

VLAN实验记录---对抗遗忘

sw1的接口6应该调成混杂模式&#xff0c;因为pc2,4,5,6的pvid各不相同而网段相同&#xff0c;所以往上去路由时应该剥离标记&#xff08;VLAN里面是标记而不是标签&#xff09;出去&#xff0c;这样 路由器上的物理接口用来管理不带标记的流量&#xff0c;而vlan2流量的往上打上…

Vue2(十一):脚手架配置代理、github案例、插槽

一、脚手架配置代理 1.回顾常用的ajax发送方式&#xff1a; &#xff08;1&#xff09;xhr 比较麻烦&#xff0c;不常用 &#xff08;2&#xff09;jQuery 核心是封装dom操作&#xff0c;所以也不常用 &#xff08;3&#xff09;axios 优势&#xff1a;体积小、是promis…

springboot检测脚本

import requests import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) session requests.session()# 从文本文件中读取 with open(dic.txt, r) as file:paths file.readlines()# 移除每个末尾的换行符 paths [path.strip() for path in pa…

【概率论与数理统计】Chapter2 随机变量及其分布

随机变量与分布函数 随机变量 随机变量&#xff1a;一个随机变量是对随机现象可能的结果的一种数学抽象 分布函数 分布函数&#xff1a; X为随机变量&#xff0c; F ( x ) F(x) F(x)定义为&#xff1a; F ( x ) P ( X ≤ x ) F(x) P(X \leq x) F(x)P(X≤x) 定义域&#…

项目四-图书管理系统

1.创建项目 流程与之前的项目一致&#xff0c;不再进行赘述。 2.需求定义 需求: 1. 登录: ⽤⼾输⼊账号,密码完成登录功能 2. 列表展⽰: 展⽰图书 3.前端界面测试 无法启动&#xff01;&#xff01;&#xff01;--->记得加入mysql相关操作记得在yml进行配置 配置后启动…

vue2高德地图选点

<template><el-dialog :title"!dataForm.id ? 新建 : isDetail ? 详情 : 编辑" :close-on-click-modal"false" :visible.sync"show" class"rv-dialog rv-dialog_center" lock-scroll width"74%" :before-close&q…