生成
宣言や for
や if
を使って生成することができます。:
で示すラベルは生成された複数の宣言を識別するのに必要です。
module ModuleA {
var a: logic<10>;
for i in 0..10 :label {
if i >: 5 :label {
assign a[i] = i + 2;
} else { // else 句のラベルは省略可能
assign a[i] = i + 2;
}
}
}
in
キーワードの後に rev
キーワードを付けることで、ループを降順にすることができます。
module ModuleA (
i_a: input logic,
o_a: output logic,
i_b: input logic,
o_b: output logic,
) {
var a: logic<4>;
var b: logic<4>;
always_comb {
a[lsb] = i_a;
o_a = a[msb];
}
for i in 0..4 :g_a {
assign a[i + 1] = a[i];
}
always_comb {
b[msb] = i_b;
o_b = b[lsb];
}
for i in rev 0..4 :g_b {
assign b[i - 1] = b[i];
}
}