Я пытаюсь понять, как typedef и enum работают в SystemVerilog и, в частности, возможно ли использовать «пользовательский» тип данных в объявлении порта модуля.
До сих пор я смог создать пользовательский тип данных в пакете, вот он:
typedef enum logic[2:0] {
add_conf = 3'b000,
sub_conf = 3'b001,
and_conf = 3'b010,
or_conf = 3'b011,
xor_conf = 3'b100,
sll_conf = 3'b101,
srl_conf = 3'b110,
sra_conf = 3'b111
} iexu_conf
Теперь я хотел бы определить входной порт типа iexu_conf
в модуле, например:
module iexu_decoder
(
input iexu_conf conf,
output logic add_ctrl,
output logic[1:0] logic_ctrl,
output logic[1:0] shifter_ctrl,
output logic[1:0] outmux_ctrl
);
Возможно ли это? Если да, правильный ли синтаксис? У меня сейчас проблемы с Modelsim
** Error: (vlog-13069) iexu_decoder.sv(5): near "conf": syntax error, unexpected IDENTIFIER, expecting ')'.
но я не могу сказать, из-за какой-то глупой ошибки или из-за более серьезной концептуальной ошибки.