0

DPI-C 経由でいくつかのタスクを C プログラムにエクスポートしようとしています。タスクは、モジュール「my_subm」で次のように定義されています。

module my_subm;
    task mytask1(...);
    ...
    endtask
    task mytask2(...);
    ...
    endtask
endmodule

そして、私のメイン モジュール「main_mod」では、「my_subm」がインスタンス化されます。

module main_mod;
    my_subm my_subm_i ();
    `include "dpic_exports.svh"

    initial begin
        ...
    end
endmodule

「dpic_exports.svh」は次のとおりです。

`ifndef DPIC_EXPORTS
`define DPIC_EXPORTS

export "DPI-C" task my_subm_i.mytask1;
export "DPI-C" task my_subm_i.mytask2;

`endif

コンパイルしようとすると、「dpic_exports.svh」の my_subm_i が階層名の不正な場所であるというエラーが表示されます。

私は何を間違っていますか?

これらのタスクにアクセスする C タスクはそのモジュールから呼び出されるため、これらのタスクを「main_mod」のスコープから使用できるようにする必要があります。

4

2 に答える 2

1

ステートメントは、exportエクスポートされるタスク/関数と同じ場所にある必要があります。2 つの提案: main_mod でラッパー タスクを作成し、それらをエクスポートすることができます。

task mytask1;
  my_subm_i.mytask1;
endtask
task mytask2;
  my_subm_i.mytask2;
endtask
export "DPI-C" task mytask1;
export "DPI-C" task mytask2;

もう 1 つのオプションは、exportステートメントを my_subn_i 内に置きsvSetScope(svGetScopeFromName("main_mod.my_subm_i");、C コードで使用することです。

于 2017-11-09T15:47:08.630 に答える