Tcl チェッカー プロシージャの作成 - 2023.2 日本語

Vivado Design Suite ユーザー ガイド: Tcl スクリプト機能の使用 (UG894)

Document ID
UG894
Release Date
2023-11-17
Version
2023.2 日本語

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 変数により、プロシージャで作成された違反オブジェクトのリストが返されます。