2012-09-12 436 views
1

我需要在我的Verilog仿真中對字符串(如串聯,替換和比較)執行基本操作。這怎麼可能?有沒有內置的支持?Verilog中的字符串操作

在此先感謝。

回答

4

如果您有權訪問支持SystemVerilog語法的現代模擬器,則有一個string數據類型。字符串可以連接和比較。請參閱IEEE標準(1800年至2009年),或this reference

3

Verilog中沒有字符串數據類型,但verilog不支持字符串文字並將它們用作字節向量。這是從規範的例子:

module string_test; 
reg [8*14:1] stringvar; 
initial begin 
    stringvar = "Hello world"; 
    $display ("%s is stored as %h", stringvar,stringvar); 
    stringvar = {stringvar,"!!!"}; 
    $display ("%s is stored as %h", stringvar,stringvar); 
    end 
endmodule 

由於字符串使用reg數據類型,你可以使用正常的運營商來操作它們,記住每一個字符用8位。

5.2.3.1字符串操作

常見的字符串操作複製,串聯,和比較是由Verilog HDL語言運營商的支持。複製 由簡單的作業提供。級聯由 級聯運算符提供。比較由等於 運營商提供。當處理矢量寄存器中的字符串值時,爲了保留8位ASCII碼,寄存器 應該至少爲8 * n位(其中n是ASCII碼爲 的字符數)。

如果您需要搜索等操作,您將不得不編寫一些任務或函數。

0

sjtaheri,

振興死線程,但我看到這個問題上來,有是它的一個新的解決方案。

svlib是一個免費的開放源碼的SystemVerilog實用函數庫。它包括文件和字符串操作功能,完整的正則表達式搜索/替換,輕鬆讀寫配置文件,訪問環境變量和掛鐘時間等等。該項目在DVCon 2014展出。

http://www.verilab.com/resources/svlib/