【轉載】System_Verilog列印格式
system_verilog display format
1. 簡介
- $display 和 $write的區別:
- $display系的系統函式:會在輸出的末尾自動新增換行符(newline character);
- $write系的系統函式:游標會停留在輸出的末尾,不會自動換行。
- $display 和 $write相同之處:
- 按照引數列表的順序輸出引數;
- 引數可以是引號內的字串(quoted string literal),表示式(expression) 和數值(value);
- 未指定輸出格式的 string 和未壓縮的 byte 資料型別,將按照字串型別輸出;
- 其他未指定輸出格式的資料類型別是非法的。
- 未指定 轉義字元 輸出特殊字元和特殊格式時,$dispaly 和 $write 的輸出型別預設為 string。
2. 轉義字元 (Escape sequences)
轉義字元可以分為以下三類:
- ’ \ ’ 表示其後跟隨:文字或者不可列印字元(Literal or Nonprintable Character);
- ’ % ’ 表示其後跟隨:格式規範,為後續引數指定格式(Format Specification);
- ’ %% ’ 表示其後跟隨:%字元 (percent sign character).
2.1 轉義字元 ‘\’
Escaped Sequence | Character Produced by Escaped Sequence |
---|---|
\n | newline character -> 換行符 |
\t | tab character -> 製表符 |
\\ | \ character -> 反斜槓 |
\" | “ character -> 引號 |
\v | vertical tab -> 縱向製表符 |
\f | form feed -> 換頁符 |
\a | Bell -> 響鈴 |
%% | % character -> 百分號 |
\ddd | (1)三位八進位制指定的字元,0 ≤ d ≤ 7; (2)字元少於3位,輸出非八進位制數字; (3)大於\377出錯; |
\xdd | 兩位十六進位制數字指定的字元,0 ≤ d ≤ F |
注意: system_verilog中僅包含以上幾種型別的轉義字元(IEEE Std 1800TM-2017),未出現於上表中的其他型別將輸出原來字元。如轉義字元’ \b ‘的輸出結果為‘ b ’。這與 c 語言中不同, c 語言中的 ‘ \b ’為退格,而SV中為字元’ b '.
轉義字元 >> 輸出示例:
2.2 格式說明符 ‘%’
Argument | Description |
---|---|
%h or %H | hexadecimal -> 十六進位制 |
%d or %D | decimal -> 十進位制 |
%o or %O | octal -> 八進位制 |
%b or %B | binary->二進位制 |
%c or %C | ASCII -> ASCII碼 |
%l or %L | Library binding information -> 庫索引 |
%t or %T | time->時間 |
%u or %U | unformatted 2 value data ->二值型別 |
%z or %Z | unformatted 4 value data ->四值型別 |
%v or %V | net signal strength -> 線網型訊號強度 |
%m or %M | hierarchical name -> 層次名 |
%p or %P | assignment pattern -> |
%s or %S | string -> 字串 |
- ‘%h’ ~ ‘%z’ 將整形資料顯示為對應格式,應用比較常見,此處不再贅述;
- ‘%l’ 可以顯示既定module的library資訊,如果某module例化自library0,例化名稱為module1,那麼最終的列印資訊格式為“ library0.module1 ” ;
- ‘%t’ 根據不同module的時間精度(precision)和時間單元(unit)顯示的格式可能不同;
- ‘%u’ ‘%z’ 常用於$fwrite函式,用於向檔案寫入資料;其中%u不區分’x’和’z’資料,並將其對映為’0’;%z嚴格區分x和’z’資料,將其分別對映為’x’,‘z’。
Argument | Description |
---|---|
%e or %E | exponential -> 指數型 |
%f or %F | decimal ->十進位制 |
%g or %G | exponential or decimal (shorter one) |
數字型別 >> 輸出示例:
2.3 資料顯示尺寸
- 對錶達式引數而言,寫入輸出檔案的尺寸是自動調整的。例如:12 bit的資料在以 ‘hex’ 格式輸出的時候自動調整為3個字元長度,以 ‘decimal’ 格式輸出的時候,自動調整為4個字元長度,因為引數輸出的最大值為FFF(hexadecimal)和4095(decimal)。
- 預設設定:以十進位制顯示的資料格式,引數首部的 ‘0’(leading zeros)會被自動替換成空格(space);對其他格式而言,leading zeros 正常顯示;ps:如上圖第一行列印資訊。
- 可以在%和字母之間插入域寬(field width),改寫顯示的格式。注意:域寬只能是非負十進位制整型常亮(non-negative decimal integer constant) ;
- field width == 0 : 以最小位寬顯示,去除首部的空格和0;
- field width == others :以others的值顯示位寬,不去除首部的空格和0;
- argument width < others: 向左擴充套件,增加位寬至others;(arguments 值靠在右側)
- argument width > others: 顯示完整資料位寬(> others);
- decimal & string 向左擴充套件時,補空格 ’ '(space),其他格式,補充 ‘0’.
數字尺寸 >> 輸出示例:
2.4 ‘x’ & ‘z’ 態資料顯示
- 十進位制 顯示規則 (decimal specification)
- 全部 bits 為 ‘x’ 態 : 單個小寫 ‘x’ (single lowercase x);
- 全部 bits 為 ‘z’ 態:單個小寫 ‘z’ (single lowercase z);
- 部分 bits 為 ‘x’ 態:單個大寫 ‘X’ (single uppercase X);
- 部分 bits 為 ‘z’ 態:單個大寫 ‘Z’ (single uppercase Z);
- 部分 bits 為 ‘x’ 態 & 部分 bits 為 ‘z’ 態:單個大寫 ‘X’ (single uppercase X); (x takes precedence over z)
- 十六進位制/八進位制 顯示規則 (hexadecimal/octal specification)
- 每 4 bits 為一組,對映 hex 的一位;每 3 bits 為一組,對映 octal 的一位; (single digit)
- 某組內全部 bits 為 ‘x’ 態 : 單個小寫 ‘x’ (single lowercase x);
- 某組內全部 bits 為 ‘z’ 態:單個小寫 ‘z’ (single lowercase z);
- 某組內部分 bits 為 ‘x’ 態:單個大寫 ‘X’ (single uppercase X);
- 某組內部分 bits 為 ‘z’ 態:單個大寫 ‘Z’ (single uppercase Z);
- 某組內部分 bits 為 ‘x’ 態 & 部分 bits 為 ‘z’ 態:單個大寫 ‘X’ (single uppercase X); (x takes precedence over z)
- 二進位制 顯示規則 (binary specification)
- each bit 分別顯示為 ‘0’ ‘1’ ‘x’ ‘z’;
‘x’ & ‘z’ 態 >> 輸出示例:
2.5 強度顯示格式
- %v or %V 格式定義用於顯示 標量線網型資料 的強度。
- 標量線網型資料顯示為三個字元(3-character),前兩個表示強度(strength character),第三個代表引數當前的邏輯值(current logic character);
- 邏輯字元和強度字元的可選範圍如表2.5.1 和表2.5.2所示:
Table 2.5.1 Logic value of scalar nets
Arguments | Description |
---|---|
0 | value 0 -> 邏輯0 |
1 | value 1 -> 邏輯1 |
X | unknown value -> 不定值 ‘x’ |
Z | high-impedance -> 高阻 ‘z’ |
L | 0 or high-impedance -> 0 或 ‘z’ |
H | 1 or high-impedance -> 1 或 ‘z’ |
Table 2.5.2 Strength of scalar nets
Mnemonics | Strength name | Strength levels |
---|---|---|
Su | Supply drive | 7 |
St | Strong drive | 6 |
Pu | Pull drive | 5 |
La | Large capacitor | 4 |
We | weak drive | 3 |
Me | Medium capacitor | 2 |
Sm | Small capacitor | 1 |
Hi | High-impedance | 0 |
表2.5.2中定義了 4 種驅動強度和 3 種電荷儲存強度:驅動強度與 gate output 和 continuous assignment有關;電荷儲存強度用於 trireg 型別 net. (see clause 28 gate-level and switch-level modeling)
那麼邏輯字元和強度字元如何配合使用呢?
-
對邏輯 ‘0’ 和 ‘1’ :
- 訊號強度為定值時,使用助記符(mnemonic)表示強度字元;
- 訊號強度為區間時,使用兩位10進位制數字表示強度字元範圍(strength level中的等級,0~7);
-
對不定值’x’ :
- 訊號強度和邏輯’0’ & '1’相同時,使用助記符(mnemonic)表示強度字元;
- 訊號強度和邏輯’0’ & '1’相同時,使用兩位10進位制數字分別表示邏輯 ‘0’ 和 ‘1’ 的強度(strength level中的等級);
-
對於高阻態’z’
- 只能採用 0 等級的Hi,表示高阻 ‘z’ 態的訊號強度;
-
對於 L 和 H:
- 只能使用助記符(mnemonic)表示訊號強度;
訊號強度 >> 輸出示例:
2.6 層次名格式 (Hierarchical name)
- %m or %M 不接受引數輸入。 相反,它使設計元素,子例程,命名塊或標記語句的層次結構名稱,該語句呼叫包含格式說明符的系統任務。 當某模組的許多例項呼叫系統任務時,%m可以指示具體哪個例項呼叫次任務。
2.7 Assignment pattern format
- %p or %P 格式說明符可用於列印聚合表示式,例如解壓縮結構,陣列和聯合(unpacked structure,array,unions).
- 對於解壓縮的資料結構,遍歷搜尋該結構並列印找到的單值資料型別(single data type),單值型別資料的輸出需要遵循以下要求:
- 列舉型別:顯示列舉型別的name (其值在enum型別的有效範圍內),否則顯示value;
- 字串:顯示為雙引號內的字串形式(quoted string);
- 各種控制程式碼:顯示預設格式名字,如果為空控制程式碼顯示 null;
- 其他格式:按照未定義的預設格式顯示。
- %0p 格式說明符使得unpacked structure,array,unions可以以更短的形式顯示列印;
- %p 和 %0p 也可以用於列印單值表示式,此時顯示結果和上述的幾種顯示格式相同。
Assignment pattern format >> 輸出格式:
2.8 字串格式
- %s or %S 格式說明符用於將ASCII程式碼以字元樣式列印。
- 對於出現在字串中的每個%s,相應的引數應遵循引數列表中的字串定義。
- 相關引數被對映為一個8位十六進位制ASCII碼序列,每8位代表一個字元。
- 如果引數是變數,則其值是右對齊的,以便該值的最右邊的位是字串中最後一個字元的LSB。
- 字串末尾不需要終止字元或值,並且永遠不會列印前導零(leading zeros)。
- 列印字串時,一般使用%s即可滿足要求,可以列印出全部字元。
>> IEEE Standard for SystemVerilog - Unified Hardware Design, Specification and Verification Language, 1800TM-2017
>> clause 21 Input/output system tasks and system functions
轉載請註明出處!
相關文章
- 列印電子發票調整格式
- PHP列印格式化顯示利器PHP
- java列印出迴文數格式方陣Java
- 【轉載】WPF中Binding使用StringFormat格式化字串方法ORM字串
- hrsc2016資料集xml格式轉換為yolo格式,附下載連結XMLYOLO
- 【轉載】 SAP 列印二維碼 QR Code or 2D Bar Code in SAP
- Java™ 教程(格式化數字列印輸出)Java
- Go語言學習(5) - 列印格式化Go
- 轉換流與列印流
- Allavsoft Video Downloader Converter for Mac(視訊下載和格式轉換)IDEMac
- 影像格式轉換
- sra轉fastq格式AST
- 3D列印CLI檔案格式的讀取3D
- Python將xml格式轉換為json格式PythonXMLJSON
- python json格式轉url引數&分割, url引數轉json格式PythonJSON
- csv格式怎麼轉換成excel?csv格式轉換成excel格式檔案的方法Excel
- Qsv格式轉換分享:騰訊下載的影片怎麼轉換成mp4?
- openssh key格式轉換
- Excel表格轉Json格式ExcelJSON
- java Word 轉 PDF格式Java
- heic格式批量轉jpg怎麼轉?
- 如何給視訊格式的檔案進行格式轉換 可以轉為音訊格式嗎?音訊
- Rust 問答之 println!巨集都有哪些格式化列印Rust
- Python字典格式與JSON格式的相互轉換PythonJSON
- 彙編+qemu玩轉控制檯列印
- js jquery 列印物件;json 物件轉字串jQuery物件JSON字串
- 列印服務的細節部署(列印許可權、印表機池、列印優先順序、列印文件轉向、分隔頁)
- 一招教你heic格式批量轉換png,必會的格式轉換!
- python+ffmpeg視訊轉碼轉格式Python
- heic圖片轉換格式怎麼轉?
- cer格式證書怎麼轉換為pfx格式
- 如何將檔案PDF格式轉換成Word格式
- word轉化為markdown格式
- 轉換UTC時間格式
- SOLIDWORKS批次轉格式外掛Solid
- heic格式轉換軟體
- java時間格式轉化Java
- [時間格式的轉換]