当我们做后仿时我们究竟在仿些什么(三)

异步电路之间必须消除毛刺

        之前提到过,数字电路后仿的一个主要目的就是动态验证异步电路时序。异步电路的时序是目前STA工具无法覆盖的。

        例如异步复位的release是同步事件,其时序是可以靠STA保证的;但是reset是异步事件,它的时序只能靠设计来保证、动态仿真来检查。产生reset的逻辑可能来自多个时钟域,但是在送入异步复位电路的时候,还是需要在设计上做到最终是单独一个时钟域的触发器输出。这样才能保证异步复位信号本身无毛刺。

        话说回来,现在的代码静态检查工具,已经能够很好的检查出类似的CDC问题了。不过工具虽然强大,但决定工具发挥作用大小的还是站在工具背后的人。

        所以后仿成了最后一道关口。

        遗憾的是,在上面这个例子中,后仿这个关口也并不是百分百能截住所有问题。如果后仿侥幸发现了类似的设计问题,真是应该去买张彩票、改行去捞鱼了。为什么捞鱼呢?因为整个设计流程肯定漏洞很多,说不定是一张上好的渔网。

X 态的问题

        后仿中,难免会碰到X态的问题,而且波形工具还很贴心的用红色绘制出来,血淋淋的、吓你没商量。如果STA都干净了,很多时候X态还是异步电路造成的问题。

        大家都知道,多bit信号跨时钟域的时候,除了用同步指示信号的方法外,常用的还是用异步FIFO。异步FIFO形成读数据的逻辑里,可以分为两部分。一部分是写数据,这部分是写时钟域的,是异步跨时钟域的。另一部分是读地址,这部分是读时钟域的,是同步的。大部分情况下,读数据中呈现的X态,是因为写数据的异步造成的。而异步FIFO的设计,是需要保证写数据稳定足够的时间(多个读时钟周期),以便读时钟来稳定采样的。

        所以在这样的情形中,读数据局部出现了X态(时序违例),是不应该影响正常功能的。


 

你可能感兴趣的:(FPGA,fpga开发)