作者zmudd (Zmud)
看板Electronics
標題[問題] Verilog Counter waveform請教
時間Wed Aug 26 23:06:56 2015
初學想請教verilog 模擬結果的waveform
我寫了這段:
reg [1:0] cnt;
always @ (posedge clk or negedge rstn)
if (!rst_n) cnt <=2'b00;
else if (EN) cnt <= cnt+1;
else cnt <= cnt;
ncverilog跑出來的dump結果應該是A ? 還是 B?
http://imgur.com/7h2lK29
如果是B, 什麼情況會跑出 A?
如果是A, 什麼情況會跑出 B?
懇請大大指教,謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.156.159
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Electronics/M.1440601618.A.B8E.html
1F:→ ViewMoon: 預期是A; cnt<=cnt+1最好改寫成cnt<=#1cnt+1,同理EN的 08/27 00:16
2F:→ ViewMoon: 來源也是;race condition才會是B;如果 design 是 single 08/27 00:17
3F:→ ViewMoon: clock,那麼 ncverilog 可以跑出A; 否則,不同 simulator 08/27 00:18
4F:→ ViewMoon: 可能會有不同 simulation result; 所以加 #1 是好習慣 08/27 00:19
5F:→ ViewMoon: 另一個加 #1 的好處是 waveform 可以分辨 clock phase和 08/27 00:20
6F:→ ViewMoon: data phase; 唯一不要加 #1 的情況是 generated clock 08/27 00:20
7F:→ ViewMoon: 不過這類 generated clock on FF/Q 我會故意寫 #0 去 08/27 00:21
8F:→ ViewMoon: highlight generated clock 這事實 08/27 00:21
9F:→ ViewMoon: 若 single clock 且 clock tree 上手放 gating cell 08/27 00:23
10F:→ ViewMoon: 不同的 simulator 一樣有可能有不同 simulation result 08/27 00:23
11F:推 wait: setup time.... 08/28 16:41
12F:推 kamia: 基本上應該要A 會有B代表en 不是同一個clock domain 08/28 22:33
13F:→ kamia: CDC會叫 primetime也可能過不了 不該會出現B 除非是故意 08/28 22:34