<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
综合工具不支持任何延迟模型,做过综合的人不会有一点疑问。要搞清楚这个问题,你就必须懂得功能仿真(function simulation)和综合(synthesis)是怎么回事,有何区别。
功能仿真,也就是对你设计的电路通过软件方式作功能正确与否的考量,是对了还是错了,idea对不对,逻辑思路是否完备。为达到这一点,功能仿真可以做到非常抽象的层次,如你提到的after语句,我明确告诉电路在xx时间发生什么事件(event),电路在该时刻得到这个事件(event),执行一段代码,得到你要的结果。ok,出不出错,非常容易发现。那么,功能验证很快就可以做出来。
综合又是什么的干活呢?笼统一点说,就是将你设计的代码映射到具体的工艺当中去,这是ASIC、FPGA设计必经的环节。你的idea到这一步就将具体到门电路的实现上。你设计的组合逻辑将映射为一堆与或非门,你设计的时序电路将映射为DFFs。你设计中的(采用zero delay模型)信号连接将表示为器件的直接连接,这种线连接仍然采用的是zero delay模型,因为它没有器件布局的信息,这时不会有连线延时信息!!!那些after等延迟语句它将生成什么呢?什么也生成不了,因为综合后生成的只是一堆foundry提供的综合库中的器件,以及他们如何连接的信息,别无其他。这就是网表(netlist),它已有器件延时,但还没有线延时。
网表生成后就是再仿真,一般没有什么问题。然后给到foundry处布局布线,或者你自己做,得到真正的延时文件,再综合,此时网表就具有线延时了,再做后仿真,过了就可以拿去投片了。
现在你应该知道延时语句跟综合的联系了吧。说到底,HDL语言可以分为仅支持仿真和支持仿真和综合两类,而after属于前者。仿真的目的,并不在于可以直接到综合,当然这是我们所追求的,即所谓synthesizeable RTL coding,更进一步,还应testable RTL coding,而在于可以快速地构建电路原型,验证设计思路。
其实不单单是延时可以在功能仿真中人为的作出,而不被综合工具所接受,功能仿真中还有许多特性不被综合工具所接受或与综合特性不符合。比如组合逻辑的仿真,如果敏感变量表不全,综合出来的网表再仿真就会与功能仿真不一致,你知道是为什么吗?
文章评论(0条评论)
登录后参与讨论