System Generator学习——时间和资源分析

文章目录

  • 前言
  • 一、目标
  • 二、步骤
  • 三、步骤 1 :系统生成器的时序分析
    • 1、时序分析
    • 2、解决时间违规问题
  • 四、步骤 2 :系统生成器中的资源分析
  • 总结


前言

在本节实验中,你将学习如何通过在 Simulink 中进行仿真来验证设计的功能,以确保在目标 Xilinx 设备中实现设计时,System Generator 设计是正确的


一、目标

完成本实验后,你将能够:

  • 识别由 System Generator 生成的 HDL 文件中的计时问题,并发现设计中计时违规的根源
  • 执行资源分析并访问现有的资源分析结果,并提出优化建议

二、步骤

这个练习有两个主要部分:

  • 在第 1 步中,您将学习如何在 System Generator 中进行时序分析
  • 在第 2 步中,您将学习如何在 System Generator 中执行资源分析

三、步骤 1 :系统生成器的时序分析

1、时序分析

①、启动 System Generator 并打开 Simulink 将 Lab3\Lab3_1.slx 打开,如下图所示
在这里插入图片描述

②、从您的 Simulink 项目工作表中,选择仿真 Simulation -> Run 或单击运行仿真按钮来模拟设计。
在这里插入图片描述

③、双击 System Generator 令牌以打开 Properties Editor,选择时钟选项卡,从执行分析菜单中,选择合成后,从分析器类型菜单中选择计时,如下所示
在这里插入图片描述

④、在 System Generator 对话框中,单击 “生成”,生成时,显示如下信息:

  • a. 系统生成器为选定的编译目标生成所需的文件。为了进行时序分析,System Generator 在设计项目的后台调用 Vivado,并将设计时序约束传递给 Vivado
  • b. 根据你选择的执行分析(合成后或实现后),设计通过合成或实现在 Vivado 中运行
  • c. Vivado 工具运行完成后,将从 Vivado 定时数据库中收集定时路径信息,并以特定的文件格式保存。在时序路径数据采集结束时,关闭 Vivado 项目,并将控制传递给 MATLAB/System Generator 进程
  • d. System Generator 处理时序信息,并显示时序分析器表,其中包含时序路径信息,如下所示

在这里插入图片描述
⑤、在定时分析仪表中

  • 显示最低松弛值的路径,最坏的松弛在顶部,下面的松弛增加
  • 与时间冲突的路径有负松弛,并显示为红色

⑥、通过单击 Timing Analyzer 表中的任何路径,从 Timing Analyzer 表交叉探测到 Simulink 模型,这将突出显示模型中相应的 System Generator 块。这允许你通过分析发生时间违规的路径来排除故障,交叉探测时,可以看到如下图所示的相应路径,与时间冲突的块以红色突出显示
在这里插入图片描述
⑦、双击计时分析器表中的第四条路径,交叉探测,对应的路径以绿色高亮显示,表示没有计时违规
在这里插入图片描述
如果您关闭了 Timing Analyzer,并且稍后你可能希望使用该模型的现有计时分析器结果重新启动 Timing Analyzer 表。在 System Generator 令牌对话框的 clock 选项卡下提供了一个 Launch 按钮。只有当您已经在 Simulink 模型上运行时序分析时,这才会起作用。
在这里插入图片描述

2、解决时间违规问题

①、通过在组合路径中插入一些寄存器可以获得更好的计时结果,并且可以帮助克服计时违规(如果有的话)。这可以通过改变组合块的延迟来实现,如下所述

②、再次双击计时分析器中的违规路径,将打开违规路径,如下所示,但还是存在着其他的问题有待解决
在这里插入图片描述
③、双击 Mult 块打开 Multiplier 块参数窗口,在“基本”选项卡下,将延迟从 “1” 更改为 “2”,然后单击 “确定”
在这里插入图片描述
④、双击 System Generator token,确保 “Analyzer Type” 为 “Timing”,点击 Generate,生成完成后,将打开计时分析器表,如下所示,可见刚刚的 Mult 红色已不在了
在这里插入图片描述

四、步骤 2 :系统生成器中的资源分析

在这一步中,我们使用与第一步相同的设计,但我们将执行资源分析

1、打开 Lab3_2.slx 设计
在这里插入图片描述
提示:无论何时生成以下任何编译目标,都可以执行资源分析:①、IP目录,②、硬件协同仿真,③、合成检查点,4、HDL 网表。

②、双击 Simulink 模型中的 System Generator 令牌。确保指定了该部分,并且将 Compilation 设置为上面列出的任何一个编译目标
在这里插入图片描述

③、在 “时钟” 选项卡中,将“执行分析”字段设置为 “合成后” ,将“分析器”类型字段设置为 “资源”
在这里插入图片描述
④、在 “系统生成器令牌” 对话框中,单击 “生成”。System Generator 处理资源利用数据,并显示一个 Resource Analyzer 表,其中包含资源利用信息
在这里插入图片描述
表中的每个列标题(例如,BRAMs、DSPs 或 LUTs)显示了您的设计目标所针对的 Xilinx 设备中每种类型的可用资源的总数。表格的其余部分显示了设计中每个子系统和块的分层列表,以及这些资源类型的计数

⑤、通过单击 Resource Analyzer 表中的块或子系统名称,可以从 Resource Analyzer 表交叉探测到 Simulink 模型,这将突出显示模型中相应的 System Generator 块或子系统。交叉探测对于识别使用特定类型资源实现的块和子系统非常有用。在表中选择的块将以黄色突出显示,并以红色概述
在这里插入图片描述

⑥、如果在表中选择的块或子系统位于上层子系统中,那么除了下面所示的底层块之外,父子系统将以红色突出显示
在这里插入图片描述


总结

在本实验中,学习了如何在系统生成器中使用时序和资源分析,从而调用 vivado 合成来收集用于分析的信息。还学习了如何识别违反时序的路径,并对其进行简单设计的故障排除。


我的qq:2442391036,欢迎交流!


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

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

相关文章

熟练掌握Junit5框架

目录 一、注解 1.1 @Test 1.2 @Disabled 1.3 @BeforeAll 1.4 @AfterAll 1.5 @BeforeEach 1.6 @AfterEach 二、参数化 2.1单参数获取数据 2.2 CSV获取参数 2.3 方法获取数据 2.4 多参数获取数据 2.5测试用例执行顺序 2.6断言 2.6.1断言相等 2.6.2断言不相等

vue3使用v-model控制子组件进行双向数据绑定

vue2写法: 中父组件调用子组件: <child :isShow.sync"isShow" v-show"isShow"/> 子组件想要消失, 在子组件写: this.$emit("update:isShow",false); 具体代码就不粘贴了 vue3写法: 父组件核心代码: v-model:a"xxx" 子组…

aardio 读取 Excel文件,显示在 listview 中

编写 main.aardio 如下 import win.ui; /*DSG{{*/ winform win.form(text"excel1";right801;bottom500) winform.add( button1{cls"button";text"读取Excel文件";left19;top14;right126;bottom44;z1}; button2{cls"button";text&quo…

力扣第226翻转二叉数 c++三种方法 +注释

题目 226. 翻转二叉树 简单 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&#xff1a; 输入&#xff1a;root [2,1,3] 输出&am…

常见的几种排序方式

常见的几种排序方式 1. 排序的概念2. 常见排序算法的实现2.1 插入排序2.1.1基本思想2.1.2 直接插入排序2.1.3 希尔排序( 缩小增量排序 ) 2.2 选择排序2.2.1基本思想2.2.2 直接选择排序:2.2.3 堆排序 2.3 交换排序2.3.1冒泡排序2.3.2 快速排序 2.4 归并排序2.4.1 基本思想2.4.2 …

【POST请求-腾讯翻译君-爬虫案例】

原因&#xff1a;尝试多个在线翻译平台&#xff0c;由于返回数据存在加密原因&#xff08;暂时不会解密&#xff09;&#xff0c;最总找到 ”腾讯翻译君“ 完成爬虫案例POST请求测试 案例测试网址 腾讯翻译 &#xff1a;https://fanyi.qq.com/ import requests import jsoncla…

知识图谱小白入门(1):neo4j的安装与CQL的使用

文章目录 序一、安装neo4j1.1 下载neo4j1.2 安装JDK1.3 BUG&#xff1a;dbms failed to start 二、CQL语法2.1 CQL语法创建节点查询节点创建关系查询关系2.2 习题 习题答案 序 知识图谱&#xff0c;是一种实体间的信息与关系知识的网状结构&#xff0c;借用图论中点与边的概念…

低代码开发技术选型

低代码的技术路径 低代码开发低代码开发优势低代码的技术路径1.表格驱动2.表单驱动3.数据模型4.领域模型 低代码的核心能力企业级低代码开发平台的11项关键能力低代码平台的流程引擎选型低代码平台的流程设计器选型低代码平台的表单设计器选型低代码平台的Vue.js 框架选型 低代…

python中的range的详解

一. python中的range的使用方法 range() 函数可创建一个整数列表&#xff0c;一般用在 for 循环中。 range(start, stop[, step])参数说明&#xff1a; start: 计数从 start 开始。默认是从 0 开始。例如range&#xff08;5&#xff09;等价于range&#xff08;0&#xff0c…

阿里云服务器镜像系统Anolis OS龙蜥详细介绍

阿里云服务器Anolis OS镜像系统由龙蜥OpenAnolis社区推出&#xff0c;Anolis OS是CentOS 8 100%兼容替代版本&#xff0c;Anolis OS是完全开源、中立、开放的Linux发行版&#xff0c;具备企业级的稳定性、高性能、安全性和可靠性。目前阿里云服务器ECS可选的Anolis OS镜像系统版…

【Java】猫和狗接口版本思路分析

目录 猫&#x1f431;和狗&#x1f415;&#xff08;接口版本&#xff09; 画图分析 案例代码 猫&#x1f431;和狗&#x1f415;&#xff08;接口版本&#xff09; 需求&#xff1a;对猫和狗进行训练&#xff0c;它们就可以跳高了&#xff0c;这里加入了跳高功能&#xff0…

Python常用功能的标准代码

后台运行并保存log 1 2 3 4 5 6 7 8 9 nohup python -u test.py > test.log 2>&1 & #最后的&表示后台运行 #2 输出错误信息到提示符窗口 #1 表示输出信息到提示符窗口, 1前面的&注意添加, 否则还会创建一个名为1的文件 #最后会把日志文件输出到test.log文…

【2023年11月第四版教材】第18章《项目绩效域》(第二部分)

TOC) 6 项目工作绩效域 1、有效执行工作绩效域可以实现预期目标&#xff0c;主要包含:①高效且有效的项目绩效;②适合项目和环境的项目过那益干系人适当的沟通和参与;④对实物资源进行了有效管理;⑤对采购进行了有效管理;⑥有.处理了变更;⑦通过持续学习和过程改进提高了团队…

阿里云服务器IP地址查询方法(公网IP和私网IP)

阿里云服务器IP地址在哪查看&#xff1f;在云服务器ECS管理控制台即可查看&#xff0c;阿里云服务器IP地址包括公网IP和私有IP地址&#xff0c;阿里云百科分享阿里云服务器IP地址查询方法&#xff1a; 目录 阿里云服务器IP地址查询 阿里云服务器IP地址查询 1、登录到阿里云服…

第47节——使用bindActionCreators封装actions模块

一、什么是action creators 1、概念 在Redux中&#xff0c;Action Creators是一种函数&#xff0c;它用于创建一个描述应用程序状态变化的action对象。Action对象是一个普通JavaScript对象&#xff0c;它包含一个描述action类型的字符串属性&#xff08;通常称为“type”&…

软件设计模式系列之二十五——访问者模式

访问者模式&#xff08;Visitor Pattern&#xff09;是一种强大的行为型设计模式&#xff0c;它允许你在不改变被访问对象的类的前提下&#xff0c;定义新的操作和行为。本文将详细介绍访问者模式&#xff0c;包括其定义、举例说明、结构、实现步骤、Java代码实现、典型应用场景…

k8s晋级之亲和性与反亲和性

nodeSelector 提供了一个非常简单的方式&#xff0c;将 Pod 限定到包含特定标签的节点上。亲和性与反亲和性&#xff08;affinity / anti-affinity&#xff09;特性则极大地扩展了限定的表达方式。主要的增强点在于&#xff1a; 表达方式更加有效&#xff08;不仅仅是多个精确…

卷积神经网络-卷积层

卷积神经网络 卷积神经网络&#xff08;convolutional neural network&#xff0c;CNN&#xff09;是一类包含卷积计算且具有深度结构的前馈神经网络&#xff0c;是深度学习的代表算法之一。卷积神经网络具有表征学习能力&#xff0c;能够按其阶层结构对输入信息进行平移不变分…

算法:强连通分量(SCC) Tarjan算法

强连通分量&#xff0c;不能再加任何一个点了&#xff0c;再加一个点就不是强连通了 vector<int>e[N]; int dfn[N],low[N],tot; bool instk[N]; int scc[N],siz[N],cnt; void tarjan(int x){//入x时,盖戳,入栈dfn[x]low[x]tot;q.push(x);instk[x]true;for(auto y:e[x]){i…

卷积神经网络-池化层和激活层

2.池化层 根据特征图上的局部统计信息进行下采样&#xff0c;在保留有用信息的同时减少特征图的大小。和卷积层不同的是&#xff0c;池化层不包含需要学习的参数。最大池化(max-pooling)在一个局部区域选最大值作为输出&#xff0c;而平均池化(average pooling)计算一个局部区…