sv2v/test/relong/enum.sv

28 lines
701 B
Systemverilog
Raw Permalink Normal View History

2019-03-27 02:32:02 +01:00
`default_nettype none
// Technically the value assignment could be anything, but most tools default to a 32-bit logic assigning MODE_A = 0 and MODE_B = 1
typedef enum {MODE_A, MODE_B} Mode_t;
typedef enum logic [1:0] {READ=2'd1, WRITE=2'd2, NONE=2'd0} Operation_t;
module Example(
input logic rawMode,
output logic [1:0] rawOperation
);
Mode_t mode;
Operation_t operation;
// cast into a strongly typed variant
assign mode = Mode_t'(rawMode);
assign rawOperation = operation;
always_comb begin
case(mode)
MODE_A: operation = READ;
MODE_B: operation = WRITE;
default: operation = NONE;
endcase
end
endmodule