~Show Time~
这次直接准备好了一个设计文件,打开如下所示,可以直接回复文末的关键字获取,
双击System Generator,将Compilation菜单下的Compilation改为HDL Netlist,语言可以改成Verilog,也可以默认使用VHDL,然后将目标路径更改下,与以前进行设计时所用的文件做个区分,更改的配置如下:
然后在Clocking菜单下,主要做以下更改,将Perform analysis改成Post Synthesis, Analyzer type选择位Timing,如下所示:
然后点击Generate,等待编译结果,编译完成后,会出现以下的结果,一个FAILED的状态;
在上面分析的表格中,是按Slack的数值从小到大排列的,违反时序的会变成红色的,直接单击红色的(其他的也可以),然后会在Simulink模型界面突出显示其位置,模块违反了时序的就会以红色进行高亮显示,如下:
单击一个未违反时序,就以表格中的第二行为例,然后就会以绿色高亮显示,表示未违反时序,如下所示:
在做完时序分析,也就是刚刚Generate完成后,如果时序分析的对话窗口被关闭,或者整个软件被关闭,在下次使用时,可以直接使用Launch加载之前运行的数据,并在窗口进行显示,这是由于之前运行的结果已经储存在设定的目标文件夹中,所以可以重新加载。
违反时序的故障排除
通过在组合路径中插入一些寄存器,可能会提供更好的时序分析结果,并有助于克服时序违规(如果有)。这可以通过更改组合块的延迟来完成,解决如下。
继续点击表格中第一行违反时序的那一项,也就是标红的那个,然后打开违反的地方。
双击Mult,打开它的变量窗口,然后将Basic菜单下的Latency的值由1改为2,然后点击OK保存并关闭。
然后重新打开System Generator,确定“Analyzer Type” 是 “Timing” 就点击Generate重新进行生成。
等待完成后,观察右上角的状态,此时已经变成了PASSED,代表该设计中已无违反时序的源。
通过今天简单的使用System Generator中的Timing 分析的功能找到时序错误的地方,然后通过增加寄存器,使得延迟改变,最终导致时序被纠正,但是这样会增加资源的消耗。