SystemVerilog - Как заставить пользовательскую переменную типа в ModelSim? - PullRequest
0 голосов
/ 27 декабря 2018

Я все еще новичок в 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').

Итак, мой вопрос, как я могу использовать силу для этих данныхтипы?Спасибо!

...