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などのラベルで表示されます。
便利ですね!
たぶん、合成ツールでもサポートしているので、デザインでも利用できます!!!