rtl-verif-env-generator 是做什麼的?
用於生成 RTL pytest 驗證環境的 Codex 技能,支援 FST 波形與內部信號注入輔助工具。
概述
此技能可自動建立基於 pytest 的硬體驗證框架。它會產生測試檔案、配置設定以及輔助函式,讓你能夠:
- 對 RTL 設計執行 pytest 測試
- 透過
deposit()輔助函式將內部信號強制設定為特定值 - 以 FST 格式輸出波形,便於後續除錯與視覺化
支援平台
- Codex CLI (主要) — 搭配 GPT-4o 或 Claude 3.5 Sonnet 模型效果最佳
- 可與 Verilator、Icarus Verilog 或其他支援 VPI 的模擬器整合
使用方法
產生測試環境
在 Codex 提示中,指定:
使用 rtl-verif-env-generator 為模組 `top_module` 建立驗證環境,檔案位於 `rtl/top.v`
產生的結構
產生的目錄結構類似於:
.
├── test_harness.py # 主要 pytest 測試檔案
├── conftest.py # pytest 配置與固定裝置
├── sim_build/ # 模擬建置目錄
└── waves.fst # 輸出的 FST 波形(測試執行後產生)
範例測試
# test_harness.py
import pytest
from conftest import setup_simulation, deposit
def test_counter_initial_value(simulation):
"""測試計數器初始值為 0"""
sim = simulation
val = sim.value("top_module.counter")
assert val == 0, f"預期計數器為 0,但得到 {val}"
def test_deposit_internal_signal(simulation):
"""測試透過 deposit 強制設定內部訊號"""
sim = simulation
deposit(sim, "top_module.counter", 42)
val = sim.value("top_module.counter")
assert val == 42
設定
你可以透過環境變數自訂行為:
| 環境變數 | 說明 | 預設值 |
|---|---|---|
RTL_VERIF_SIMULATOR | 使用的模擬器(verilator / icarus) | verilator |
RTL_VERIF_WAVES | 啟用 FST 波形輸出(1 啟用,0 停用) | 1 |
RTL_VERIF_TIMEOUT | 每個測試案例的模擬逾時秒數 | 60 |
輔助函式
deposit(simulation, signal_name, value)
simulation: 由conftest.py中的固定裝置提供的模擬物件signal_name: 要強制設定的信號完整路徑(字串)value: 要設定的值(整數或字串)
此函式使用 VPI 機制來覆蓋內部信號的值。
相依性
- Python 3.8+
- pytest
- cocotb(選擇性,用於進階協同模擬)
進階用法
如需自行修改腳本,可直接編輯 conftest.py 以變更:
- 模擬命令列參數
- 波形後處理選項
- 覆蓋率收集設定
授權條款
此技能採用 MIT 授權。