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

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

前言

在本节实验中,你将学习如何通过在 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 合成来收集用于分析的信息。还学习了如何识别违反时序的路径,并对其进行简单设计的故障排除。

目录
相关文章
|
4天前
|
监控 Serverless Shell
函数计算操作报错合集之 显示"Function timed out after 30 seconds (maxMemoryUsage: 73.38MB)" ,该如何解决
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
27天前
|
JavaScript Java
Java long传到前台精度损失解决方案
Java long传到前台精度损失解决方案
19 1
|
9月前
|
SQL 安全 中间件
Go开发:如何封装函数来统计执行时间
Go开发:如何封装函数来统计执行时间
253 0
|
10月前
|
SQL 存储 Java
java通过拦截器实现项目每次执行sql耗时统计,可配置是否打印
java通过拦截器实现项目每次执行sql耗时统计,可配置是否打印
|
10月前
|
弹性计算 固态存储 网络安全
使用Count功能批量创建资源
本场景将以批量创建ECS实例和EIP,并为ECS实例绑定EIP为例,为您介绍如何使用Count功能。
176 0
|
前端开发
前端 window.print() 打印方案、优化策略总结(一)
前端 window.print() 打印方案、优化策略总结(一)
628 0
前端 window.print() 打印方案、优化策略总结(一)
|
JSON 前端开发 JavaScript
前端 window.print() 打印方案、优化策略总结(二)
前端 window.print() 打印方案、优化策略总结(二)
330 0
|
IDE 编译器 开发工具
【RT-Thread】env工具学习(更新中)
【RT-Thread】env工具学习(更新中)
401 0
|
运维 Java Python
用python提前预测jvm cpu100%自动dump thread升级版
用python提前预测jvm cpu100%自动dump thread升级版
168 0
用python提前预测jvm cpu100%自动dump thread升级版
|
机器学习/深度学习 存储 人工智能
TensorFlow 2.0将把Eager Execution变为默认执行模式,你该转向动态计算图了
8 月中旬,谷歌大脑成员 Martin Wicke 在一封公开邮件中宣布,新版本开源框架——TensorFlow 2.0 预览版将在年底之前正式发布。今日,在上海谷歌开发者大会上,机器之心独家了解到一个重大的改变将会把 Eager Execution 变为 TensorFlow 默认的执行模式。这意味着 TensorFlow 如同 PyTorch 那样,由编写静态计算图全面转向了动态计算图。
180 0
TensorFlow 2.0将把Eager Execution变为默认执行模式,你该转向动态计算图了