Verilog HDL 作為數位 IC 設計主流語言,其關鍵字體系直接映射硬體結構與仿真語義。本文按功能維度分類 24 大核心關鍵字,配合語法規則、綜合語義與易錯點,構建系統性知識圖譜,助力 RTL 設計與驗證工程師精準落筆。
| 關鍵字 | 功能 | 關鍵語法點 |
|---|---|---|
module ... endmodule | 基本設計單元,定義輸入輸出埠與內部邏輯 | 埠方向 input/output/inout,參數化 #(parameter) |
initial | 仿真 0 時刻單次執行,用於初始化/激勵產生 | 不可綜合,僅仿真;常搭配 $display/$monitor |
always | 事件驅動無限循環,核心行為建模塊 | 格式 always @(sensitivity_list) stmt;敏感列表決定觸發條件 |
task ... endtask | 可含時序控制的過程封裝,支援輸入輸出引數 | 可調用其他 task/function;不可綜合 當含延遲/事件控制 |
function ... endfunction | 組合邏輯封裝,零時耗,單返回值 | 無時序控制;可綜合;常用於運算複用 |
posedge/negedge clk → 時序邏輯(觸發器);含信號電平變化 → 組合邏輯(鎖存器風險)。塊內語句順序執行,塊間並行。| 類別 | 關鍵字 | 語義 | 綜合提示 |
|---|---|---|---|
| 順序/並行塊 | begin ... end | 順序塊,語句依序執行 | 可嵌套;begin:label 支援區域變數宣告 |
fork ... join | 並行塊,語句同時啟動 | 仿真同步點;謹慎綜合(易產生競爭) | |
| 條件 | if ... else | 分支,else 匹配最近 if | 組合邏輯務必覆蓋全分支,否則產生鎖存器 |
case ... endcase | 多分支,支援 casex/casez (x/z 為通配) | 優先編碼器綜合;default 防止鎖存器 | |
| 循環 | forever | 無限循環,僅仿真 | 不可綜合 |
for | 固定次數循環 | 邊界為常數時可展開綜合 | |
repeat | 固定次數重複 | 同 for,語法糖 | |
while | 條件循環 | 邊界非常數不可綜合 |
| 類型 | 特性 | 典型用途 | 預設寬度 |
|---|---|---|---|
reg | 儲存型,保持上次賦值,需在 over程序塊賦值 | always 輸出、狀態機、暫存變數 | 1-bit |
wire | 網線型,持續驅動,無儲存,assign 賦值 | 模組連線、組合邏輯輸出 | 1-bit |
integer | 32-bit 有號整數,不可綜合 當用於 RTL | 仿真計數、參數計算、$display 格式化 | 32-bit |
parameter | 編譯期常數,模組參數化關鍵 | 位寬、延遲、狀態編碼等可配置常數 | 按值推導 |
⚠️ Verilog-2001 新增 signed/logic (SystemVerilog) 等增強類型,建議新專案遷移至 SystemVerilog。
| 關鍵字 | 語義 | 硬體映射 | 綜合規則 |
|---|---|---|---|
posedge | 上升沿事件 | 觸發器時鐘沿 | 敏感列表僅支援單沿 |
negedge | 下降沿事件 | 觸發器時鐘沿 | 同上 |
<= (Non-blocking) | 非阻塞賦值,塊結束時統一更新 | 時序邏輯 (FF) | always_ff 必用;右側舊值參與運算 |
= (Blocking) | 阻塞賦值,語句執行完即更新 | 組合邏輯/暫存變數 | always_comb 用;時序塊用會產生競爭/鎖存器 |
always_ff @(posedge clk or negedge rst_n) ... <= ...always_comb ... = ... 或 assign ... = ...reg ≠ 觸發器;wire ≠ 物理線;類型由賦值上下文決定,而非名稱。always @(*) / SystemVerilog always_comb 自動推導。module #(parameter WIDTH=8) ... 實例化時 #(.WIDTH(16)) 覆蓋。內化關鍵字語義與綜合映射,寫出的 RTL 才能「仿真通、綜合過、時序收、可維護」。
Linux 實戰技巧十則:虛擬控制台、滑鼠複製貼上、快速跳轉目錄、彩色 ls、指令定位、檔案搜尋、core 清理、mc 文件管理、後台 X 程式、強制退出 X
Linux 開機啟動流程深度剖析:從 BIOS 到 systemd
Linux 核心同步補充原語:Completion、中斷控制、軟中斷/Tasklet 延遲執行計數器
Linux Shell 邏輯運算子與條件判斷式完整解析:test、[]、[[]] 效能比較
Bash 腳本圖形化交互:Zenity 與 Whiptail 實戰教程
CentOS 7 MySQL 5.7 部署全流程:安裝、配置、安全加固與驗證