看板 Electronics 關於我們 聯絡資訊
推 ksmrt0123:在sequential ckt用nonblocking (<=), 在combinational 04/11 23:47 → ksmrt0123:ckt用blocking(=)是 coding style, 而且是很好的coding 04/11 23:47 → ksmrt0123:style, 應該要 follow. 04/11 23:48 ※ 引述《zxvc (修行)》之銘言: : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ : 又如sequential circuit: : module Test(c, d, Clock , Reset1); : output reg [2:0] c; : output reg d; : input Clock, Reset1; : always@(posedge Clock) : if(Reset1) : c = 0; : else : begin : c = c+1; : if(c == 3) : d = 1; : else : d = 0; : end : endmodule : 這個用blocking的寫法會造成c = 3的那個(clock) cycle,d = 1。 這樣的寫法, 合成出的硬體與verilog不能直接對應, 程式寫的是(c==3), 但合成出來的應該是 (c+1==3), 這讓寫code與讀code的人更不容易掌握硬體. : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ : 如果改成non-blocking的寫法: : module Test(c, d, Clock , Reset1); : output reg [2:0] c; : output reg d; : input Clock, Reset1; : always@(posedge Clock) : if(Reset1) : c <= 0; : else : begin : c <= c+1; : if(c == 3) : d <= 1; : else : d <= 0; : end : endmodule : 會造成c = 4的那個cycle,d = 1。 以C來想這可能很怪, 但以電路來想這很自然. 而且code寫(c==3)合成出來就是(c==3). ========================================================= 支持採納此coding style 最重要的理由, 如上面的例子所示, 採用此 coding style, 可讓 code 與電路更容易對照. 還有很多其它理由. 有篇paper可參考: http://www.sunburst-design.com/papers/CummingsSNUG2000SJ_NBA.pdf 最後還有一個很實際的理由, 應徵 ic design 的 logic design engineer 時若有考 verilog, 不 follow 此 coding style 的上的機會應該不大... 不知zxvc實驗室是否有學長姐進 ic design 寫 verilog的, 可問問他們的意見. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.68.71.218
acelp:說的好 04/12 23:32
zxvc:你那篇解釋的很好。combinational circuits用blocking 04/12 23:38
zxvc:assignment的理由跟我當初猜測的一樣,simulator模擬速度會 04/12 23:39
zxvc:比較快。用non-blocking assignment可以model一樣的 04/12 23:40
zxvc:combinational circuits,但有時候有sensitivy list要多觸發 04/12 23:42
zxvc:幾次結果才會跟用blocking assignment一樣。 04/12 23:42
zxvc:(Example 19) 04/12 23:44
zxvc:看來似乎較多人認為用non-blocking model sequential circuit 04/12 23:45
zxvc:較好,我又找不出一個用blocking assignment強大的好理由, 04/12 23:46
zxvc:我想以後會follow用non-blocking。而且用blocking assignment 04/12 23:47
zxvc:model sequential circuits有一個很大的缺點,我之前有提到 04/12 23:48
zxvc:,就是不能寫shift registers。 04/12 23:49
zxvc:這在你那篇paper有提到(Example 15)。 04/12 23:50
zxvc:多謝你的資訊。 04/13 00:05
ksmrt0123:感謝回應 :) 04/13 01:35
sneak: m 11/11 15:04
sneak: odel seque https://noxiv.com 11/11 15:04
sneak: 幾次結果才會跟用blo https://noxiv.com 01/04 21:55