インテルのみ表示可能 — GUID: pxe1487713499243
Ixiasoft
インテルのみ表示可能 — GUID: pxe1487713499243
Ixiasoft
2.3.7. フィッターの過剰制約の使用
Stratix® 10デザインでの過剰制約
通常、フィッター時にのみ適用される過剰制約を記述する際は、.sdc ファイルを読み取っている実行ファイルの名前をチェックする条件ステートメントを使用します。次の例は、フィッター時に過剰制約を適用する条件ステートメントを示しています。
# Example Fitter overconstraint targeting specific nodes if { $::TimingAnalyzerInfo(nameofexecutable) eq "quartus_fit"} { set_max_delay -from ${my_src_regs} -to ${my_dst_regs} 1ns }
通常、過剰制約は、特定のパス (またはパスのセット) でフィッターのデフォルトの最適化作業よりも多くを必要とする場合に適用されます。したがって、過剰制約では通常、追加の最適化が必要な (1つまたは複数の) パス内の特定のノード名またはレジスター名を指定します。
Hyperflex® アーキテクチャーをサポートするデバイス ( Stratix® 10や Agilex™ FPGAポートフォリオ・デバイスなど) の場合、特定のノード名またはレジスター名に適用するタイミング制約により、Hyper-Retimerによってそれらのノードまたはレジスターを含むパスが最適化されないようにします。
Hyper-Retimerはフィッターのコンポーネントであるため、フィッター時に条件付きで適用される過剰制約は、フィッターのHyper-Retimer部分では逆効果になります。過剰制約により、実際には最適化が効果的に進むのではなく、最適化が妨げられます。
Hyperflex® アーキテクチャーに向けて設計している場合は、is_post_route Tcl関数形式の条件ステートメントを使用して、過剰制約を配置および配線時に適用し、Hyper-Retimerには適用しないようにします。is_post_route では、フィッターのPlan、Place、Routeステージなどで過剰制約を適用し、スラックを調整することができます。また、is_post_route では、Hyper-Retimerによる配線後のリタイミングを可能にします。サインオフ時のタイミング解析には影響しません。
# Example Fitter overconstraint targeting specific nodes (allows for post-route retiming) if { ! [is_post_route]} { set_max_delay -from ${my_src_regs} -to ${my_dst_regs} 1ns }
他のすべてのデバイスファミリーをターゲットとする場合のデザインの過剰制約
フィッターの過剰制約を割り当て、現在の実行ファイルの名前を確認することで (quartus_fit もしくは quartus_sta)、フィッターによる最適化とサインオフのタイミング解析に異なる制約を適用することができます。
set fit_flow 0 if { $::TimingAnalyzerInfo(nameofexecutable) == "quartus_fit" } { set fit_flow 1 } if {$fit_flow} { # Example Fitter overconstraint targeting specific nodes (restricts retiming) set_max_delay -from ${my_src_regs} -to ${my_dst_regs} 1ns }
その他の過剰制約の組み合わせ
タイミング制約は、上記のフィッターの他にも、コンパイラーの特定のステージに適用することができます。次の表は、コンパイルステージのさまざまな組み合わせと、それらのステージにおいて制約を適用する条件式を示しています。
コンパイルステージ | Tcl条件 | 備考 |
---|---|---|
Fitter | if { $::TimingAnalyzerInfo(nameofexecutable) eq "quartus_fit" } | フィッターステージ全体で制約を適用します。 Hyperflex® アーキテクチャーをサポートしないデバイスでフィッターの過剰制約に使用します。 |
Signoffタイミング | if { $::TimingAnalyzerInfo(nameofexecutable) eq "quartus_sta" } | タイミング解析時に制約を適用します。この条件は一般的ではありません。通常、タイミング解析の制約はコンパイルフロー全体で適用します。 |
Plan、Place、Route | if { ! [is_post_route] } | Hyperflex® アーキテクチャーをサポートするデバイスのPlan、Place、Routeステージで制約を適用します。フィッターの過剰制約に使用します。 |
Retime (HyperRetimer)、Finalize、Signoffタイミング | if { [is_post_route] } | Hyperflex® アーキテクチャーをサポートするデバイスのRouteステージ完了後に制約を適用します。このステージの組み合わせは一般的ではありません。通常、タイミング解析の制約はコンパイルフロー全体で適用します。 |
Retime (HyperRetimer)、Finalize | if { [is_post_route] && $::TimingAnalyzerInfo(nameofexecutable) eq "quartus_fit" } | Hyperflex® アーキテクチャーをサポートするデバイスのRetimingおよびFinalizeステージで制約を適用します。このステージの組み合わせは一般的ではありません。 |