Tcl チェッカー プロシージャは、チェックするデザイン オブジェクトを選択し、デザイン オブジェクトに対して必要なテストまたは評価を実行して、エラーに関連するオブジェクトを特定する DRC 違反オブジェクトを返します。
次の Tcl スクリプトは、WRITE_B
バスの幅をチェックする dataWidthCheck
Tcl チェッカー プロシージャを定義しています。report_drc
コマンドを実行する前に、この Tcl スクリプト ファイルを Vivado に読み込む必要があります。Tcl チェッカー プロシージャの詳細は、Tcl スクリプトの読み込みと実行を参照してください。
# This is a simplistic check -- report BRAM cells with WRITE_WIDTH_B wider than 36.
proc dataWidthCheck {} {
# list to hold violations
set vios {}
# iterate through the objects to be checked
foreach bram [get_cells -hier -filter {PRIMITIVE_SUBGROUP == bram}] {
set bwidth [get_property WRITE_WIDTH_B $bram]
if { $bwidth > 36} {
# define the message to report when violations are found
set msg "On cell %ELG, WRITE_WIDTH_B is $bwidth"
set vio [ create_drc_violation -name {RAMW-1} -msg $msg $bram ]
lappend vios $vio
}; # End IF
}; # End FOR
if {[llength $vios] > 0} {
return -code error $vios
} else {
return {}
}; # End IF
} ; # End PROC
proc
定義からわかるように、dataWidthCheck
プロシージャに引数はなく、必要な情報はすべてデザインから取得されます。空のリスト変数 $vios
を作成し、create_drc_violation
コマンドで返された違反オブジェクトを保存します。
dataWidthCheck プロシージャは、デザインのすべての BRAM セルに対して WRITE_WIDTH_B
プロパティの評価を実行します。ブロック RAM セルの WRITE_WIDTH_B
が 36 を超える場合、DRC 違反が指定のメッセージ ($msg
) で作成されます。メッセージには、セルのプレースホルダー値 %ELG
とバス幅 $bwidth
が含まれます。dataWidthCheck
プロシージャでは、create_drc_violation
コマンドで 1 つのオブジェクト $bram
のみが返され、メッセージ文字列に定義されている %ELG
プレースホルダーに代入されます。create_drc_violation
コマンドでは、ネットリスト オブジェクト (%ELG
)、クロック領域 (%CRG
)、デバイス サイト (%SIG
)、およびパッケージ I/O バンク (%PBG
) のプレースホルダーがサポートされます。
create_drc_violation
コマンドで渡される順序とタイプが、-msg
コマンドの create_drc_check
の指定と一致している必要があります。
WRITE_WIDTH_B
プロパティの幅が指定の値を超えているブロック RAM が検出されるたびに、create_drc_violation
で違反オブジェクトが作成されます。違反オブジェクトは、名前は関連付けられている Vivado Design Suite の DRC ルールの名前と同じになり、あらかじめ定義されたメッセージ文字列を含み、ルールに違反するオブジェクトを特定します。デザイン ルール違反で返されるオブジェクトには、セル、ポート、ピン、ネット、クロック領域、デバイス サイト、パッケージ I/O バンクなどがあります。違反からのメッセージ文字列には、特定のプロパティ値などのほかの情報を含めることもでき、DRC レポートに必要な詳細情報を提供できます。
違反が検出された場合、dataWidthCheck
プロシージャから report_drc
コマンドにチェックの結果を通知するエラー コードが返されます。
return -code error $vios
エラー コードに加え、$vios
変数により、プロシージャで作成された違反オブジェクトのリストが返されます。