資料來源:
(1)公眾號-傑瑞IC驗證;
(2)硅芯思見:【97】$sformat()與$psprintf() (qq.com)
1.$sformat & $sformatf
1 //示例1-jerry IC驗證; 2 string jerry_string; 3 string jerry_string_r; 4 5 $sformat(jerry_string,"jerry_face_score=%0d",100); 6 $display("1.%0s",jerry_string); 7 8 jerry_string_r=$sformatf("jerry_cool_score=%0d",100); 9 $display("2.%0s",jerry_string_r);
1 //示例2-硅芯思見 2 `timescale 1ns/1ps 3 module top_tb; 4 string str; 5 logic[31:0] data; 6 7 initial begin 8 data=32'h87654321; 9 str=$sformatf("The data is %0h!",data); 10 $display("I'm from display->%s",str); 11 end 12 13 endmodule
1 //示例3-硅芯思見 2 `timescale 1ns/1ps 3 module top_tb; 4 bit[3:0] sig; 5 initial begin 6 sig=4'h0; 7 foreach(sig[i]) begin 8 if($test$plusargs($sformatf("SIG%0h",i))) begin 9 sig[i]=1'b1; 10 $display($sfrmatf("SIG%0h -> %0h",i,sig[i])); 11 end 12 end 13 end 14 endmodule
(1) $sformat & $sformatf是system verilog標准中的系統函數,用於整理字符串的格式;
(2) $sformat()比$sformatf()多了第一個參數,該參數用於存放最終整理好的字符串;
(3) $sformatf()返回的值就是整理好的字符串,可以直接把它整體拿去使用;
2.$psprintf(類似$sformatf)
(1) $psprintf是由VCS添加的sv擴展,暫未被system verilog標准收錄;
(2) $psprintf()返回一個格式化的臨時字符串,並且可以傳遞給其他子程序. 這樣可以不用定義新的臨時字符串並在格式化語句與函數調用過程中傳遞這個字符串.