SystemVerilog文本值和数据类型
SystemVerilog文本值和數據類型
1、增強的文本值賦值
給一個向量賦予文本值
在Veirlog語言中,一個向量可以很容易地賦值為全00、全x(不確定)或全z(高阻態)。
上例中每個賦值都是可擴展的。如果SIZE參數被重新定義,如128,賦值會自動擴展到data的新長度。但是Verilog并未提供一種將向量賦為全1的方便途徑。為了將一個文本值所有位都置1,必須指定一個固定長度。
data = 64'hFFFFFFFFFFFFFFFFF;為了使所有全1賦值都是可擴展的,Verilog設計者必須學習編碼技巧,例如使用一些操作類型來對向量賦全1,而不是指定文本值。
data = ~0;//0的補碼運算 data = -1;//2的補碼運算給一個向量賦予特殊的文本值
SystemVerilog在兩個方面增強了文本值的賦值。第一,增加了一個更簡單的語法,可以指定要賦的值,而不用指定進制。第二,賦值可以是邏輯1.這個語法指定所有位被賦予什么值,該值前面有個硬撇號(’)。
文本值隨左手邊向量寬度擴量
2、`define增強
SystemVerilog擴展了Verilog宏文本替換–`define的功能,是宏文本可以包含特殊字符。
`"允許字符串內的宏變量替換 字符串內的宏變量替換 Verilog允許在`define宏中使用雙引號("),但是雙引號內文本變成文本串。也就是說,在Verilog中, 不可能采用在字符串中嵌入宏變量的文本替換宏創建字符串。 SystemVerilog可以進行宏文本字符串的變量替換,這是通過在形成字符串的引號前加重音符號(`) 來實現。 //本例文本替換的目的是將所有出現的宏變量v變量替換為實際的變量值data。 `define print(v)\$display(`"variable v = %h`",v); `print(data);在Verilog中,為了不影響表示字符串的雙引號,字符串內嵌入的引號必須帶轉義符: \ "
$display("variable \"data\" = %h",data);當字符串是包含變量替換的文本替換宏的一部分時,對嵌入的雙引號僅使用轉義符是不夠的,必須使用
’ \ '"
通過宏建立標識符名
使用Verilog的’define,不可能通過連接兩個或多個文本宏來建立一個新的標識符。原因是創建的標識符名各部分之間總是有一個空格。
在宏文本中,“作為不引入空格的分隔符
SystemVerilog提供了一個不引入空格的方法,使用兩個連接的重音符(”),使兩個或多個文本宏連接成一個新的名字。
在多次使用一組相似的名字,并且無法使用數組的情況下,應用(")可以簡化源代碼。
總結
以上是生活随笔為你收集整理的SystemVerilog文本值和数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 18.Consent 实现思路介绍
- 下一篇: 对象类型和数据类型