SystemVerilog-如何在ModelSim中强制使用用户定义的类型变量?

时间:2018-12-27 19:02:06

标签: typedef system-verilog modelsim

我还是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.aIW.b查看输出时,总是会收到此错误:Error: (vsim-3592) signal_force : Fields of user-defined types are not supported ('/ALU2/IW.a').

所以,我的问题是如何对这些数据类型使用force? 谢谢!

0 个答案:

没有答案