これは単純なSystemVerilogの質問であり、答えを見つけるのに驚くほど困難な時間を過ごしています。
この種のビット配列初期化構文では、b [0]部分はaの最上位ビットに割り当てられていますか、それとも最下位ビットに割り当てられていますか?
bit a[7:0];
bit b[7:0] = 8'hff;
bit c[7:0] = 8'h00;
a = {b[0], c[6:0]};
では、a [0]==1またはa[7]== 1ですか?
これは単純なSystemVerilogの質問であり、答えを見つけるのに驚くほど困難な時間を過ごしています。
この種のビット配列初期化構文では、b [0]部分はaの最上位ビットに割り当てられていますか、それとも最下位ビットに割り当てられていますか?
bit a[7:0];
bit b[7:0] = 8'hff;
bit c[7:0] = 8'h00;
a = {b[0], c[6:0]};
では、a [0]==1またはa[7]== 1ですか?
答えを見つけるのが難しいと思った理由は、結果があなたが物事をどのように宣言したかに依存しているからです。
あなたはであると宣言a
しました[7:0]
。したがって、のビットは次のa
ように配置されます。
a7 a6 a5 a4 a3 a2 a1 a0
{b[0], c[6:0}
次に、以下に割り当てますa
。
a7 a6 a5 a4 a3 a2 a1 a0 = b0 c6 c5 c4 c3 c2 c1 c0
1 0 0 0 0 0 0 0 = 1 0 0 0 0 0 0 0
A[7] == 1
a
結果が次のようになると宣言した場合[0:7]
:
a0 a1 a2 a3 a4 a5 a6 a7 = b0 c6 c5 c4 c3 c2 c1 c0
1 0 0 0 0 0 0 0 = 1 0 0 0 0 0 0 0
A[0] == 1
b[0]
最上位ビットに割り当てられa[7]
ます; すなわちa[7] == 1
。
ただし、タイプミスなのか、解凍された宣言を使用する意図があるのかはわかりません。bit a[7:0]
は、unpacked array
連続ストレージを意味するものではなく、パック値または整数値を直接割り当てることはできません。
SystemVerilog for Design
以下は、P.114、5.3.1アンパックアレイから採用されています。
解凍された配列は、各要素を個別に格納しますが、共通の配列名でグループ化されます。
P.122、5.3.5配列への値の割り当て
SystemVerilogは、アンパックされた配列に値を割り当てる2つの追加の方法でVerilogを拡張します。-配列
全体に値のリストを割り当てることができます
-配列のスライスに値のリストを割り当てることができます。値のリストは、アンパックされた配列を初期化する場合と同じように、'{}中括弧の間に指定されます。
パックされた配列についてはbit [7:0] a
、Paulから正解があります。