发新话题
打印

有趣的仿真问题

有趣的仿真问题

作者: 5life   最近同事遇见一个有趣的问题, 有助于理解仿真器的工作原理.   描述如下, 若有空可以试试.^_^ 代码一:
引用:
always@(c) b= c + 1;                                                             assign a= b + 1;                                                             always@(a or b)   begin     d= b + 1;     c= a + 1;   end
若采用该代码会出现什么现象? 代码二:
引用:
always@(c) b= c + 1;                                                             assign a= b + 1;                                                             always@(b)   begin     d= b + 1;     c= a + 1;   end  
采用代码二会出现什么现象呢?   代码三:
引用:
always@(c) #1 b= c + 1;                                                             assign a= b + 1;                                                             always@(a or b)   begin     d= b + 1;     c= a + 1;   end  
采用代码三会出现什么现象呢? 比较以上三种代码, 您能得出什么结论和理解呢? 注: 附件loop_tb.v为仿真文件, 只需仿真该文件即可.
附件: 您所在的用户组无法下载或查看附件
With your idea, Carry out together.

TOP

这样子的代码要是遇到综合器肯定是报Warning:组合逻辑反馈!!!! 但是作为验证的人可以研究一下:)
我灌水,你快乐!
Email:ahan.mail@gmail.com
Blog:http://blog.dicder.com/html/3/3.html

TOP

5life解释一下吧,我仿出来的结果1跟2是一样的,3只不过多了延时而已。我想你的意思是不是仿真器如何处理 always@(a or b)  和 assign 的顺序呢?如果always优先的话c,d会多加一次,但结果好像不是这样的, 你们仿出来结果如何呢?

TOP

对于在IEEE标准中没有详细说明的一些东西,不同厂家的仿真器的解释也不同,所以对于这类问题的最好处理办法是尽量不要写这种代码。。。
来往了无痕,去留寂无声
红尘一颗粒,万事不随身

TOP

发新话题