3
module A (
    output A_OPORT_1 
    ); 
endmodule

module B (
    input B_IPORT_1
    ); 
endmodule

module TestBench;
wire A_to_B; 
A A_inst (
        .A_OPORT_1  (A_to_B)
        );
B B_inst (
        .B_IPORT_1  (A_to_B)
        );

endmodule

ここでは、基本的に出力ポート A:A_inst:A_OPORT_1 が B:B_inst:B_IPORT_1 に接続されています。

Verilog PLI を使用してその情報を取得するにはどうすればよいですか? 例を高く評価しました。

ポートを取得して highconn を取得し、wire/net A_to_B を取得できるコードがいくつかあります。

ただし、vpiPortInst を使用して A_To_B に接続されているポートを見つけることができません。null のイテレータを取得します。

    vpiHandle high = vpi_handle(vpiHighConn, port); 
        vpi_printf(" High conndata type is %s\n",
            vpi_get_str(vpiType, high));
        vpi_printf(" High conndata Net type is %s\n",
            vpi_get_str(vpiNetType, high));                    
        vpi_printf(" High conndata Name is %s\n",
            vpi_get_str(vpiFullName, high));     

        vpiHandle iter = vpi_iterate(vpiPortInst,high);
        vpiHandle p2ref;
        if (iter == NULL)
        {
            vpi_printf(" Port Iterator is null\n");                      
        }

O/P:

 High conndata type is vpiNet
 High conndata Net type is vpiWire
 High conndata Name is $unit::A_to_B
 Port Iterator is null
4

1 に答える 1

1

上記のコードは機能します。ツールが指摘したように、2 つのポートを接続する必要があります。

これで機能し、ファンアウトを印刷できるようになりました。

于 2012-05-09T05:50:02.683 に答える