[導(dǎo)讀]SV將C語言中的大部分特性包含進(jìn)去,包括了相當(dāng)多的數(shù)據(jù)類型和操作符。1.SystemVerilog支持C語言內(nèi)建的數(shù)據(jù)類型。為了避免int和long數(shù)據(jù)類型的重復(fù)帶來混淆,在SV中,int是32位的,longint是64位的。C語言中的float類型在SV中稱為shortreal...
SV 將 C 語言中的大部分特性包含進(jìn)去,包括了相當(dāng)多的數(shù)據(jù)類型和操作符。1. SystemVerilog 支持 C 語言內(nèi)建的數(shù)據(jù)類型。為了避免 int 和 long 數(shù)據(jù)類
型的重復(fù)帶來混淆,在 SV 中, int 是 32 位的, longint 是 64 位的。C 語言中的float 類型在 SV 中稱為 shortreal。
2. SystemVerilog?中加入了字符串、結(jié)構(gòu)體和聯(lián)合體等常見的數(shù)據(jù)類型。
3. SystemVerilog?中有數(shù)組的概念,不過其將數(shù)組擴(kuò)展為三類,壓縮數(shù)組和非壓縮數(shù)組以及動態(tài)數(shù)組等類,不同的數(shù)組類型都有不同的屬性。其非壓縮數(shù)組類似于 C語言中的數(shù)組。另外, SV 中的數(shù)組都有自己的成員函數(shù),設(shè)計者無需自己設(shè)計
數(shù)組的操作函數(shù)。
4. SystemVerilog?的操作符是 Verilog 和 C 語言操作符的組合。正是因為其支持 C 語言的操作符,因此其編程風(fēng)格更像 C 語言。
5. SystemVerilog?的過程語句和控制流方法,支持 C 語言中大部分的控制語句(if else/dowhile/case),支持 Verilog 中的控制語句(begin end/fork join/fork join_any/fork join_none)。同時支持 Verilog 的電平敏感和沿敏感的時間控制。
下面是一段 SystemVerilog?語言的代碼,進(jìn)行對比后發(fā)現(xiàn),如果將其中的 begin end 換成 C 語言的{},將很難區(qū)分 SV 語言和 C 語言。
總體來說, SV 語言繼承了 C 語言的大部分特性。
型的重復(fù)帶來混淆,在 SV 中, int 是 32 位的, longint 是 64 位的。C 語言中的float 類型在 SV 中稱為 shortreal。
2. SystemVerilog?中加入了字符串、結(jié)構(gòu)體和聯(lián)合體等常見的數(shù)據(jù)類型。
3. SystemVerilog?中有數(shù)組的概念,不過其將數(shù)組擴(kuò)展為三類,壓縮數(shù)組和非壓縮數(shù)組以及動態(tài)數(shù)組等類,不同的數(shù)組類型都有不同的屬性。其非壓縮數(shù)組類似于 C語言中的數(shù)組。另外, SV 中的數(shù)組都有自己的成員函數(shù),設(shè)計者無需自己設(shè)計
數(shù)組的操作函數(shù)。
4. SystemVerilog?的操作符是 Verilog 和 C 語言操作符的組合。正是因為其支持 C 語言的操作符,因此其編程風(fēng)格更像 C 語言。
5. SystemVerilog?的過程語句和控制流方法,支持 C 語言中大部分的控制語句(if else/dowhile/case),支持 Verilog 中的控制語句(begin end/fork join/fork join_any/fork join_none)。同時支持 Verilog 的電平敏感和沿敏感的時間控制。
下面是一段 SystemVerilog?語言的代碼,進(jìn)行對比后發(fā)現(xiàn),如果將其中的 begin end 換成 C 語言的{},將很難區(qū)分 SV 語言和 C 語言。
if(X_mac_pkt.data_length == 130)begin `uvm_info("X_mac_driver","data_length = 34",UVM_HIGH) for(int i=0;i<32;i ) begin????X_mac_data[1 i]={emac_data[i*4 0],emac_data[i*4 1],emac_data[i*4 2],emac_data[i*4 3]; end X_mac_data[33]={emac_data[32*4 0],emac_data[32*4 1],8'b0,8'b0}; for(int i=0;i<30;i ) begin X_mac_data[34 i]=(i 1); endendelse begin `uvm_info("X_mac_driver","data_length = 56",UVM_HIGH) for(int i=0;i<54;i ) begin????X_mac_data[1 i]={emac_data[i*4 0],emac_data[i*4 1],emac_data[i*4 2],emac_data[i*4 3]};//Verilog?語言 end X_mac_data[55]={emac_data[54*4 0],emac_data[54*4 1],8'b0,8'b0};??for(int?i=0;i<8;i )?begin X_mac_data[56 i]=(i 1); endendwhile(hiphy_time != X_mac_pkt.input_time) begin//等待最小加載時間@X_mac_vif.clk_three;//Verilog 語言#1; //Verilog 語言endwhile(X_mac_vif.X_mac_clk.receive_rdy != 1) begin//等待 X_mac 空閑@X_mac_vif.X_mac_clk;end總體來說, SV 語言繼承了 C 語言的大部分特性。





