SystemVerilog は、一般的なコード部分 (関数、型、定数など) の名前空間を提供するパッケージを追加しました。ただし、パッケージはインスタンス化されていないため、パラメーター化できず、パラメーター化されたメンバーの扱いには問題があります。実際には、カスタム型にはフィールド幅などを指示するいくつかのパラメーターがあることが非常に多いため、これはかなり制限的であることがわかりました。
私は通常、デフォルト値のパラメーターを使用し、一部のアプリケーションのパッケージ ソース コードを変更する必要があることを理解することでこれに対処しますが、これは非常に間違っているように思えます。しかし、これをよりきれいに処理する方法をまだ見つけていません。例えば:
package my_pkg;
parameter ADDR_MSB = 7;
parameter DATA_MSB = 31;
typedef struct {
logic [ADDR_MSB:0] address;
logic [DATA_MSB:0] data;
} simple_struct_t;
endpackage
これに対処するよりクリーンな方法を見つけた人はいますか?パッケージはコードをより安全に再利用できるようにする SV への非常に強力な追加機能であると考えているため、ぜひお聞きしたいのですが、この制限はかなり厳しいものです。