はじめに
SystemVerilogのLRMを読んでいると配列に関する面白い?システムタスクがあったので紹介します。
$left 配列の左側
bit [10:12] a;
int b;
initial begin
b = $left(a);
$display("%d", b); // 10
end
$right 配列の右側
bit [10:12] a;
int b;
initial begin
b = $right(a);
$display("%d", b); // 12
end
$low 小さい方
bit [10:12] a;
int b;
initial begin
b = $low(a);
$display("%d", b); // 10
end
$high 大きい方
bit [10:12] a;
int b;
initial begin
b = $high(a);
$display("%d", b); // 12
end
$size 配列の幅
bit [10:12] a;
int b;
initial begin
b = $size(a);
$display("%d", b); // 3
end
$dimension 次元数
bit [10:12] a;
bit [10:12] c[1:0];
int b;
initial begin
b = $size(a);
$display("%d", b); // 1
b = $size(c);
$display("%d", b); // 2
end
まとめ
配列に使用できるシステムタスクを紹介しました。
コメント