各種好用的 SystemVerilog 語法 (01) - logic
不知不覺一年以上沒更新了,想說網域的費用都繳了,不寫些東西實在是浪費錢,所以來想開一個新的系列。想來想去,發現網路上針對新手的 SystemVerilog 的資源相當的稀少,所以就來開一個系列好了。
總之就是介紹各種 SystemVerilog 實務上可以用的語法,想到什麼就寫什麼的系列,有時候也不一定會跟 SystemVerilog 有關,可能只是新手比較少用的 Verilog 語法,每一篇的量也會變少,文章針對的是已經大約知道 Verilog,但是對 SystemVerilog 不熟悉的人。
Logic 語法
在 Verilog 中宣告信號有 wire
以及 reg
兩種語法,設計上是用來表示 combinational 跟 sequential 信號使用的。
1wire sig1;
2reg sig2;
但是實際上這個語法根本沒發揮到他的功能,就是來搞人的。在 always
block 裡面寫到 wire
的時候會 compile fail,或是反過來 assign
給 reg
的時候也會 fail,除此之外根本沒其他意義。
1wire sig1, sig3;
2reg sig2;
3
4assign sig2 = 1'b1; // boom!
5always@(*) begin
6 sig1 = 1'b1; // boom!
7end
8
9always@(posedge clk) begin
10 sig3 <= 1'b1; // boom!
11end
於是就出現了 logic
語法全部取代掉。
1logic sig1, sig2, sig3;
2assign sig2 = 1'b1; // OK!
3always@(*) begin
4 sig1 = 1'b1; // OK!
5end
6
7always@(posedge clk) begin
8 sig3 <= 1'b1; // OK!
9end
logic
的使用就是這麼的方便,沒其他好說的了。在可以用 SystemVerilog
的情形下,用就對了。
第一篇很短,就當作熱身復健吧。
系列文連結
-
各種好用的 SystemVerilog 語法 (01) - logic
-
各種好用的 SystemVerilog 語法 (02) - always
-
各種好用的 SystemVerilog 語法 (03) - typedef (integer types)
-
各種好用的 SystemVerilog 語法 (04) - typedef (enum)
-
各種好用的 SystemVerilog 語法 (05) - typedef (struct)
-
各種好用的 SystemVerilog 語法 (06) - typedef (union)
-
各種好用的 SystemVerilog 語法 (07) - local variable
- 各種好用的 SystemVerilog 語法 (01) - logic
- 各種好用的 SystemVerilog 語法 (02) - always
- 各種好用的 SystemVerilog 語法 (03) - typedef (integer types)
- 各種好用的 SystemVerilog 語法 (04) - typedef (enum)
- 各種好用的 SystemVerilog 語法 (05) - typedef (struct)
- 各種好用的 SystemVerilog 語法 (06) - typedef (union)
- 各種好用的 SystemVerilog 語法 (07) - local variable