寫testench時,使用等待上升沿語句,@(posedge clk)要用非阻塞賦值
例如,激勵信號爲輸入信號D,你的被測模塊要會對此信號延遲一拍
如果,你用阻塞賦值激勵信號,那麼你的這一拍就不會延遲,而是和激勵信號完全相等,如下圖的Q
原因:
- 阻塞賦值在上升沿之前某段時間;
- 非阻塞賦值在上升沿之後某段時間;
- 寄存器採樣是在時鐘上升沿之前的某段時間裏,而賦值是在時鐘上升沿之後的某段時間裏
所以,激勵信號D阻塞賦值,在上升沿之前賦值,而寄存器Q在上升沿之前採到了這一變化,又在時鐘上升沿之後進行賦值,所以看起來,他們是完全相等的。
可參考這篇文章
modelsim中用非阻塞賦值仿真遇到的問題 - CSDN博客