我想知道为什么数字设计的布局后模拟需要很长时间?
为什么软件不能只计算芯片的时序并用一个程序来模拟行为,这个程序会产生睡眠()或其他什么的延迟?我的猜测是sleep()不够精确,无法模拟硬件,但我不确定。
那么,它实际上做了多长时间呢?
谢谢!
答案 0 :(得分:4)
布局后模拟(事实上 - 合成后的任何事情)将模拟门而不是RTL,而且还有很多门。
我认为您已经了解了模拟器的运作方式有点困惑。我这样说是因为像sleep()
这样的调用与等待时间有关,就像墙上的时钟所测量的那样,而不是模拟器时间计数器。模拟器运行时模拟器时间很快就会提前。
模拟器是一个评估系统状态的循环。循环的每次迭代都是一个时间片'例如什么是系统的状态是100ns。当它中的所有信号都达到稳定状态时,它仅从一个时间片前进到下一个时间片。
在RTL或非定时门模拟中,大多数信号评估发生在零时间内,也就是说评估分配的效果发生在同一时间片中。一个例外往往是时钟,它定义为在某个时间发生变化并导致寄存器触发,这会导致它们改变输出,这会导致进程,模块,赋值从寄存器中重新进行评估,这导致其他信号发生变化,导致其他进程重新评估等等等......直到一切都稳定下来,我们才能进入下一个时钟边缘。
在后期布局模拟中,使用反标注时序,系统中的每个门都有从输入到输出的时间。这意味着零时间内没有任何事情发生。更多。模拟器现在已将每个任务的效果放在一个列表中,表示信号b将在102.35ns时间变为1。每个门都有不同的时间。每个门上的每个输入都将具有不同的输出时序。这意味着反向注释模拟必须评估许多时间片,因为信号在不同时间的批次中改变状态。不仅仅是时钟变化的时候。每个切片可能都没有发生太多事情,但其中有很多。
......我只谈到增加门限时间。添加线路时序,事情变得更加复杂。
基本上还有更多需要担心的问题,因此SIM卡会变慢。