実行時間を短縮する方法の 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}]