一般假如你的规划在较低时钟频率时经过了仿真,可是在较高时钟频率时却失利了,你的第一个问题应该是你的规划在某个较高时钟频率时是否到达了时序束缚的要求。
可是这儿咱们将举这样一个比方,便是关于某个较高时钟频率你现已查看了静态时序剖析(STA),并且时序束缚也是正确的。
这种状况是什么引起的较高时钟频率仿真失利呢?
或许的原因便是仿真办法、规划自身或许testbench设置办法有问题。
可是在较低时钟频率经过了仿真这个现实就排除了规划/testbench/仿真在设置上的问题。
排除了上面两项,下一个或许便是脉冲回绝(reject)或许脉冲过错。
“脉冲回绝(reject)”和“脉冲过错”是Verilog仿真中的概念。
这些概念说的是脉冲的持续时刻小于某个值(pulse_r)就不会经过某个电路元件。
当然脉冲持续时刻大于pulse_r,可是假如小于另一个值pulse_e虽然会经过,可是在仿真中显现的是“x”。
这个持续时刻是以经过某元器材推迟的百分比来表明的。
比方经过某元件的推迟是1ns。
0.5ns的脉冲表明为50%的持续时刻。
现在假定规划选用的频率是200MHz。
对应的周期便是5ns。
那么一半便是2.5ns。
在仿真中时钟每隔2.5ns改变一次,也便是时钟脉冲的宽度是2.5ns。
让咱们假定内部时钟网络某一脉冲宽度是2.8ns(也便是大于2.5ns)。
剖析成果,pulse-duraTIon(脉冲持续时刻)《100%。
这个脉冲或许就会被“回绝(rejected)”,也便是说虽然时钟信号能够抵达某个详细网络的输入端,可是却不能从这个网络输出。
因而虽然STA剖析显现200MHz很适宜,可是仿真却不能经过。
规划其他模块将不能取得时钟脉冲。
处理这个仿真问题的办法是在仿真设置中修正脉冲回绝和过错(reject/error)约束。
例如在ModelSim中咱们能够设置:
+transport_path_delays +transport_int_delays +pulse_r/0 +pulse_e/0
后续操作还有:
1.将pulse-rejecTIon约束修正为0。(不会回绝任何一个脉冲)
2.将pulse-error约束修正为0。(脉冲宽度低于某个值时不会显现输出为“x”)
一起要将interconnect推迟形式修正为transport,其实是修正了脉冲滤波选项。
最终的问题是咱们做这么多的修正便是为了能经过仿真测验吗?
在真实的硅片中的实际状况是怎样的?
在硅片中大部分内部互连线在每隔几皮秒后就会设置一个repeater(中继器)。
因而几纳秒的脉冲会顺畅经过(适宜的推迟),这不会存在问题。
详细出现问题的景象或许是这样的:
1.频率添加(脉冲宽度更小了)
2.器材尺度添加(某个途径的内部推迟或许变大了,导致内部推迟时刻大于脉冲到达的传输时刻)
『本文转载自网络,版权归原作者一切,如有侵权请联络删去』