効率的なコードの記述 - 2023.2 日本語

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

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

実行時間を短縮する方法の 1 つに、コンテナーに含まれる各要素に対してループ内のコマンドを実行するのではなく、コンテナーを作成してコマンドをコンテナー全体に対して実行する方法があります。次の例はこれを示しており、カスタム デザイン ルール チェック (DRC) の作成の例と似ています。

効率の悪いコード:

foreach bram [get_cells -hier -filter {PRIMITIVE_SUBGROUP == bram}] {
    set bwidth [get_property WRITE_WIDTH_B $bram]
    if { $bwidth > 36} {
        highlight_object -color red [get_cells $bram]
    }; # End IF
}; # End FOR

効率的なコード:

foreach bram [get_cells -hier -filter {PRIMITIVE_SUBGROUP == bram}] {
    set bwidth [get_property WRITE_WIDTH_B $bram]
    if { $bwidth > 36} {
        lappend bram_list $bram
    }; # End IF
}; # End FOR
highlight_object -color red [get_cells $bram_list]

上記のコードをさらに短く効率的に記述するには、get_cells コマンドにフィルターを適用します。これにより、個別のチェックを含む foreach ループを実行する必要がなくなりますが、多少複雑なフィルターが必要になります。

highlight_object -color red [get_cells -hier -filter {PRIMITIVE_SUBGROUP == bram && 
WRITE_WIDTH_B > 36}]