組み込まれたエンジニア

我輩は石である。名前はまだ無い。

NSL:構造体

2010-06-11 11:35:39 | Weblog
構造体宣言と、構造体インスタンスのサポートを行なった。

構造体は、モジュールの外部で先行して宣言する。
インスタンスはモジュールインスタンス同様、構造体名を用いて、宣言。
インスタンス宣言時に、regかwireかを明示する。

構造体名および各メンバーに対して、独立に参照、転送が可能。
左辺ビット連結も、無名構造体扱いとして、. { } = 値という形の転送を許す。(中括弧の前のピリオドに注意)

構造体全体への転送は、ビット数の推定は行なわず、ビット数違いはエラーとする。

構造体宣言の後ろのセミコロン";"の必要性は微妙なところだが、将来の拡張時に利用する可能性があり、とりあえず付けておく。


struct test {
test1[3];
test2[4];
test3;
};

declare st{
output a[3];
output b[4],c[5],d[4];
}

module st{
reg r1[8],r2[3],r3[5],r4[3],r5[8];
test wire mmm
test reg mmr;

. { a,b,c,d } = 0x2345;
. { r1,r2,r3 } := 0x6789;
r4:=mmm.test1;
mmr := 8'h93;
mmm.test2 = 0xa;
r5 := mmm;
}