0

ある構造を入力として渡し、別の構造で出力を取得しようとしています。ただし、シミュレーション中にいくつかの問題が発生しています。次のサンプル コードは 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

core.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 インターフェイスは構造体をサポートしていますが、インターフェイスをサポートしているとは思いません。だからこそ、シンプルな構造にこだわりたい。

4

1 に答える 1