Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

enumを使えば、、

Verification Engineerの戯言

Verilog HDLでは、ステートマシンのステート名を表現するには、次のようにparameter文を使います。

parameter ST_IDLE = 3'b000, ST_REQ = 3'b001, ST_ACK = 3'b010, ST_READ = 3'b011,
ST_WRITE = 3'b100, ST_DONE = 3'b101, ST_TAR = 3'b110;

reg [2:0] next_state, state;

この場合は、next_stateとstateを波形表示すると、3ビットのデータとして表示されます。
(ツールによっては、置き換え等にステート名で表示するすることも可能ですが)

一方、SystemVerilogでは、VHDLと同様にenumが使えます。enumを使うと上記の表記は
次のように置き換えられます。

typdef enum { ST_IDLE, ST_REQ, ST_ACK, ST_READ, ST_WRITE, ST_DONE, ST_TAR } state_type;

state_type next_state, state;

next_stateとstateは、波形表示のときにST_IDLEやST_READなどのラベルで表示されます。

便利ですね!

たぶん、合成ツールでもサポートしているので、デザインでも利用できます!!!