アトリビュート
アトリビュートは変数宣言などいくつかの宣言に注釈を付けることができます。
sv
アトリビュート
sv
アトリビュートは SystemVerilog のアトリビュートを表し、(* *)
という形式の SystemVerilog アトリビュートに変換されます。
module ModuleA {
#[sv("ram_style=\"block\"")]
let _a: logic<10> = 1;
#[sv("mark_debug=\"true\"")]
let _b: logic<10> = 1;
}
allow
アトリビュート
allow
アトリビュートは指定されたリントチェックを無効化するために使用できます。
module ModuleA {
#[allow(unused_variable)]
let a: logic<10> = 1;
}
指定可能なリント名は以下の通りです。
- unused_variable
- missing_reset_statement
- missing_port
ifdef
/ifndef
アトリビュート
ifdef
と ifndef
アトリビュートは定義された値によってコードブロックを有効にするかどうかを制御するために使用することができます。もし DEFINE_A
が定義されていれば、#[ifdef(DEFINE_A)]
のついたコードブロックは有効に、#[ifndef(DEFINE_A)]
のついたコードブロックは無効になります。
module ModuleA {
#[ifdef(DEFINE_A)]
{
let _a: logic<10> = 1;
}
#[ifndef(DEFINE_A)]
{
let _b: logic<10> = 1;
}
}
align
アトリビュート
align
アトリビュートはフォーマッタの垂直方向の整列を制御することができます。number
が align
の引数として指定されたとき、全ての数値は整列されます。identifier
も使用可能です。
module ModuleA {
let a : logic<32> = 1;
let aa : logic<32> = 1;
let aaa: logic<32> = 1;
let _b: logic = {
a[0] repeat 1, a[0] repeat 1,
aa[1] repeat 8, aa[1] repeat 8,
aaa[2] repeat 16, aaa[2] repeat 16,
};
#[align(number, identifier)]
let _c : logic = {
a [0 ] repeat 1 , a [0 ] repeat 1 ,
aa [1 ] repeat 8 , aa [1 ] repeat 8 ,
aaa[2 ] repeat 16, aaa[2 ] repeat 16,
};
}