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