我试图将一个结构作为输入传递并在另一个结构中获取输出。但是我在模拟过程中遇到了一些问题。以下示例代码在 questasim 中编译得很好,但是模拟给出了以下错误:
连接类型“core_tb_sv_unit.struct”与端口(struct_in)的“core_sv_unit.struct”不兼容:结构/联合类型必须匹配。
MyStruct.sv
`ifndef _DEF_
`define _DEF_
typedef struct {
real instr;
real addr;
} instr_packet_s;
`endif
核心.sv
`timescale 1ns / 1ns
`include "MyStruct.sv"
module core(
input instr_packet_s struct_in,
output instr_packet_s struct_out
);
initial begin
$display("Initial");
end
endmodule
core_tb.sv
`include "MyStruct.sv"
module core_tb();
instr_packet_s struct_in_tb,struct_out_tb;
assign struct_in_tb.instr=2;
assign struct_in_tb.addr=3;
core u_core(
.struct_in(struct_in_tb),
.struct_out(struct_out_tb)
);
endmodule
我错过了什么?
我知道接口是这里建议的工作流程,但是模型的输入将使用 DPI 传递给 C 例程。DPI 接口支持结构,我不认为它支持接口。这就是为什么我想坚持简单的结构。