Я все еще новичок в SystemVerilog и пытаюсь привести несколько примеров.Один пример использует пакет для определения некоторых типов данных, вот он:
package definitions;
parameter VERSION = "1.1";
typedef enum {ADD, SUB, MUL} opcodes_t;
typedef struct {
logic [31:0] a, b;
opcodes_t opcode;
} instruction_t;
function automatic [31:0] multiplier (input [31:0] a,b);
return a * b;
endfunction
endpackage
Я пытаюсь использовать его в этом модуле
module ALU (input definitions::instruction_t IW,
input logic clock,
output logic [31:0] result);
always_ff @(posedge clock) begin
case (IW.opcode)
definitions::ADD : result = IW.a + IW.b;
definitions::SUB : result = IW.a - IW.b;
definitions::MUL : result = definitions::multiplier(IW.a, IW.b);
endcase
end
endmodule
, но когда я пытаюсь смоделировать его, используяModelSim, и я пытаюсь заставить сигналы IW.a
и IW.b
смотреть на выходы, я всегда получаю эту ошибку: Error: (vsim-3592) signal_force : Fields of user-defined types are not supported ('/ALU2/IW.a').
Итак, мой вопрос, как я могу использовать силу для этих данныхтипы?Спасибо!