Xilinx System Generator时序和资源分析方法
Simulink时序和资源分析
- 一、System Generator时序分析
- 解决时序违例的方法
- 二、System Generator资源分析
一、System Generator时序分析
在本实验中,您将学习如何通过在Simulink®中进行仿真来验证设计的功能,以确保在目标Xilinx®设备中实现System Generator设计是正确的。
通过本实验您将能够:
- 识别由System Generator生成的HDL文件中的时序问题,并发现设计中时序违规的根源。
- 执行资源分析并访问现有的资源分析结果,并提出优化建议。
本实验包含两部分内容: - 在第1部分,您将学习如何在System Generator中进行时序分析。
- 在第2部分,您将学习如何在System Generator中执行资源分析。
本文实验环境:Vivado 2019.1、System Generator 2019.1、Matlab R2024a。
1、打开System Generator。
2、文件准备,这里使用Xilinx官网提供的UG948文档教程参考文件。
3、在Matlab中打开参考文件所在的目录。
双击打开Lab3_1.slx文件,如下图所示:
4、点击菜单栏中Simulation>Run或者点击Run Simulation按钮开始运行仿真。
5、双击System Generator令牌以打开Properties Editor。
6、选择Clocking选项。
7、Perform analysis选项选择Post Synthesis,Analyzer type选项选择Timing。
然后点击Generate。
8、当你点击Generate后,会发生下面这几种情况:
(1)系统生成器为选定的编译目标生成所需的文件。为了进行时序分析,System Generator在设计项目的后台调用Vivado,并将设计时序约束传递给Vivado。
(2)根据您选择的Perform Analysis (Post Synthesis or Post Implementation),设计通过综合或实现在Vivado中运行。
(3)Vivado工具运行完成后,将从Vivado时序数据库中收集定时路径信息,并以特定的文件格式保存。在时序路径数据采集结束时,关闭Vivado项目,并将控制传递给MATLAB/System Generator进程。
(4)System Generator处理时序信息,并显示时序分析器表,其中包含时序路径信息,如下所示。
9、在时序分析表中:
- 显示最小裕量值(Slack)的路径,最坏的裕量(Slack)在顶部,下面的裕量值(Slack)依次增加。
- 用红色文字显示有负裕量(Slack)的时序违例路径。
10、通过单击时序分析表中的任何路径,从时序分析器表交叉探测到Simulink模型,突出显示模型中相应的系统生成器块。这允许您通过分析发生时序违规的路径来解决时序违规问题。
11、交叉探测时,可以看到如下图所示的相应路径,有时序违例的路径都被显示为高亮红色。
12、双击时序分析器表中的第二条路径,交叉探测,对应的路径以绿色高亮显示,表示没有时序违规。
13、如果您关闭了Timing Analyzer表,并且稍后您可能希望使用该模型的现有的时序分析器结果重新启动Timing Analyzer表。在System Generator令牌对话框的Clocking选项卡下提供了一个Launch按钮。注意此按钮只有当您已经在Simulink模型上运行时序分析时,这才会起作用。
注意:如果重新启动时序分析表窗口,请确保Analyzer type选项设置为Timing。打开的表将显示存储在Target directory中的结果实例化在System Generator令牌对话框,无论选择的Perform analysis(Post Synthesis or Post Implementation)是什么。
解决时序违例的方法
1、通过在组合路径中插入一些寄存器可以获得更好的时序结果,并且可以帮助克服时序违规(如果有的话)。
2、再次双击时序分析表中的违规路径,将打开违规路径,如下所示。
3、双击Mult模块打开Multiplier块参数窗口,如下所示。
4、在Basic选项卡中,将Latency从“1”改为“2”,然后点击OK。
5、双击System Generator令牌,确保Analyzer Type选项选择的是Timing,然后点击Generate。
6、Generate完成后,将打开时序分析表,如下图所示。观察右上角的状态为PASSED,这表明在设计中没有违反时序的路径。
注意:
(1)为了更快进行时序分析,综合后进行时序分析优先于实现后进行时序分析。
(2)改变模块的延时可能会增加使用资源。
二、System Generator资源分析
在资源分析过程中,我们将使用和时序分析相同的示例Lab3_1.slx。
提示:每当生成以下任何编译目标时,都可以执行资源分析:
- IP Catalog
- Hardware Co-Simulation(硬件联合仿真)
- Synthesized Checkpoint
- HDL Netlist
1、双击Simulink模型中的System Generator令牌,在弹出的选项窗口中确保Part指定了对应的器件,Compilation选项设置为上面列出的四种情况。
2、在Clocking选项卡中,将Perform Analysis设置为Post Synthesis,Analyzer type设置为Resource。
3、点击Generate。System Generator处理资源利用率数据,并显示一个Resource Analyzer表,其中包含资源利用率信息。
表中的每个列(例如,BRAMs、DSPs或LUTs)显示了您的设计目标所针对的Xilinx设备中每种类型的可用资源的总数。表格的其余部分显示了设计中每个子系统和块的分层列表,以及这些资源类型的计数。
4、通过单击Resource Analyzer表中的模块或子系统名称,可以从Resource Analyzer表交叉探测到Simulink模型,这将突出显示相应的System Generator模块或子系统。交叉探测对于识别使用特定类型资源实现的块和子系统非常有用。
5、您在表中选择的模块将以黄色突出显示,并以红色概述。
6、如果您在表中选择的块或子系统位于上层子系统中,那么除了下面所示的底层块之外,子系统将以红色突出显示。
注意:如果打开“资源分析器”窗口或“时序分析器”窗口,表格中没有显示任何信息(表格单元格为空),双击“System Generator”令牌,将Target directory设置为新目录,即未使用过的目录。然后再次运行分析。
参考文章:Xilinx官方文档ug948-vivado-sysgen-tutorial