附錄 A.2:關鍵字與內建函式清單
本附錄以概括方式列出 Veryl 的關鍵字與常用內建系統函式。語言仍在演進,完整且最新的清單一律以官方手冊(https://doc.veryl-lang.org)為準。
結構關鍵字
| 關鍵字 | 用途 |
module | 定義模組,硬體的基本單位 |
interface | 定義介面,封裝一群相關訊號 |
modport | 在 interface 內宣告各方向的存取視角 |
proto | 定義 proto module / proto interface(契約),實作側以 module Foo for FooIF 綁定 |
package | 定義套件,收納 const/struct/enum/function |
struct | 定義結構體型別 |
enum | 定義列舉型別 |
union | 定義聯合型別(概列) |
function | 定義函式 |
impl | 實作 trait(概列,最新語意以官方手冊為準) |
embed | 嵌入原生 SV / cocotb 程式碼區塊 |
宣告關鍵字
| 關鍵字 | 用途 |
var | 可變變數宣告 |
let | 單一賦值變數宣告 |
const | 常數宣告 |
param | 參數宣告(module 內) |
port | 埠宣告(module 定義內) |
inst | 實例化 module 或 interface |
bind | 將模組綁定到其他模組/介面(概列) |
assign | 連續賦值 |
pub | 公開可見性(package 內項目對外可見) |
import | 匯入 package 的項目 |
alias | 建立別名(型別或識別字,概列) |
行為關鍵字
| 關鍵字 | 用途 |
always_comb | 組合邏輯區塊 |
always_ff | 時序邏輯區塊,帶時脈與 reset 引數 |
if_reset | always_ff 內的 reset 分支 |
initial(概列) | 初始區塊(主要用於模擬) |
if / else | 條件 |
case / default | 多路分支(case/casem/casez 變體以官方手冊為準) |
for / in / step | 迴圈(合成用 generate for 與行為 for 共用語法) |
while | 迴圈 |
return | 函式返回 |
break / continue | 迴圈控制(概列) |
and / or / not / xor / sll / srl / sra(概列) | 建議留意:Veryl 部分位元運算子採關鍵字形式,最新清單見官方手冊 |
型別與方向關鍵字
| 關鍵字 | 用途 |
logic / bit | 位向量型別基底 |
input / output / inout / modport | 埠方向 |
clock / clock_posedge / clock_negedge | 時脈型別 |
reset / reset_async_high / reset_async_low / reset_sync_high / reset_sync_low | reset 型別(極性與同步性由型別決定) |
u32 / u64 / i32 / i64 / f32 / f64 | 整數與浮點型別 |
string | 字串型別(主要用於模擬) |
tri | 三態型別(概列) |
as | 型別轉換 |
widthof / $bits(概列) | 取得位寬 |
生成與屬性
| 關鍵字 | 用途 |
if COND: label { } | labelled generate if(label 為強制) |
for i: u32 in 0..W { } | generate for |
#[...] | 屬性(attribute),如 #[test(name)] 標記測試 |
內建系統函式(概列)
| 函式 | 用途 | SV 對應 |
$clog2(x) | 取上取 2 為底對數,位寬計算常客 | $clog2 |
$bits(x) | 運算式的總位元數 | $bits |
$readmemh / $readmemb | 從檔案載入記憶體內容(模擬用) | 同名 |
$display / $write | 模擬輸出 | 同名 |
$finish | 結束模擬 | 同名 |
系統函式與仿真專用功能在 Veryl 中多為直接沿用 SV 的 $ 函式;未列出的項目(時間函式、隨機數、斷言相關等)以官方手冊為準。使用embed (inline)區塊時,任何 SV 系統任務也可透過 $sv namespace 直接呼叫。