2016-06-30 6 views
2

に一次元「多次元」配列をキャスティング宣言?我々は(SVI in_apbBus中)の配列を持つ一次元

logic [APB_AW-1:0] apbPAddr; 
in_apbBus #(.SIZE(1), .APB_AW(APB_AW)) uin_apbBus(); 

apbPAddr = uin_apbBus.apbPAddr; 

私は理論上、多次元値を単次元配列に割り当てています。しかし、内部の次元の1つのサイズは1であり、これはパックされた配列のためにこれが動作することを期待しています。

これらのタイプの割り当てで断続的な問題が発生します。しかし、SVI(uin_apbBus)がモジュール階層(APB_AWをインタフェースから継承する受信モジュールで)を通過すると、何かがうまくいかず、uin_apbBusのAPB_AWがAPB_AWのデフォルト値を使用しているようです32)。

私はこのような割り当てた場合:

apbPAddr = uin_apbBus.apbPAddr[0]; 

問題が解決されます。だから私の質問を上にeloborate:これはLRMで定義されている、これはツールの問題ですか?

答えて

2

パックド・アレイを扱う場合、異なるサイズまたはディメンションの配列間の型の安全性はありません。それらはすべて、フィットするように埋め込まれた、または切り捨てられた積分値として扱われます。 SystemVerilogが範囲[0:0]をどのように扱うかは、LRMで明確に定義されていませんが、ほとんどのツールは指定されていない場合と同じように扱います。

APB_AWが正しく上書きされないという問題は、ツールベンダーにもっと完全なテストケースを提示しなければならないという別の問題です。

関連する問題