blocking PK nonblocking

记得汉玲大姐提起过 blocking与nonblocking,但当时并没有做好笔记,现在借助真OO无双的笔记重新整理。 由于量子计算机还没有研发到民用的级别,所以我们在做硬件开发的时候不得不考虑simulator是基于当前计算机技术的软件算法,是只能顺序执行的,而硬件是并行执行的。当simulator 模拟并行执行——时间片轮转法,鬼知道它转到哪里去了。所以有时候这个simulator出来的结果不是我们想要的,而且不是我们设计的错。 先来看看 blocking 与nonblocking 运用时的基本规范: 1,有clock的always中通常使用nonblocking。 2,无clock的always中通常使用blocking。 3,assign中使用的 blocking 4,同块中,blocking 与nonblocking不并存。 首先让我们来看看IEEE Verilog 的standard 图片
(RHS为赋值语句右边的等式,LHS为赋值语句左边的变量。) 问题出现了,standard并没有说明RHS的执行顺序,这个时间片轮转法到底转到哪里去是“随机”的。 还是真OO无双会想办法去验证 图片 blocking 的执行方式类似于C ,一步步执行。可是并不知道先执行的是哪一条。
再 将所有的 = 转换成<= 图片 先执行的是RHS。再在posedge clk 快要结束的时候去执行赋值过程。所以LHS得到的是RHS 上一个时刻的值。
原文地址:https://www.cnblogs.com/sepeng/p/3137967.html