Design Compiler
目的と設定
RTLを elaboration し、特性評価済みの標準セルに論理マッピングし、タイミング/面積/電力を最適化して、実装ネットリストをエクスポートします。DCの出力は論理的な実装であり、物理的またはサインオフ結果ではありません。
ユーザーの設定環境またはツールプロファイルから dc_shell を解決します。
実際のリリース、サポートされているオプション、ライセンス、およびローカルのドキュメントを検出します。
環境検出 を使用してください。特定のインストールディレクトリ、アカウント、ライセンスエンドポイント、または起動シェルを想定しないでください。
インストールインベントリ、ログ、ドキュメントインデックスはプライベートなローカル状態に保持します。
呼び出しとコマンド規則
準備された環境から、設定された実行可能ファイルを直接使用します。 そのラッパーファイル名を保持してください。ディスパッチャの呼び出し名を変更すると、別の製品が選択される可能性があります。 そのリリースのドキュメントで、インタラクティブおよびバッチの規則を確認してください。 このリファレンスはコマンドの候補を提供するものであり、すべてのリリースに存在することを保証するものではありません。
dc_shell -f design.tcl
サポートされているステージスクリプトの場合、flow.py はシェルラッパーを必要とせずに、コマンド、ステータス、ログ、アーティファクト、チェックポイントをキャプチャします。 ツールは、同様のフラグに対して異なるセマンティクスを持つネイティブインターフェースを提供する場合があります。
入力と出力
順序付けられた Verilog/SystemVerilog/VHDL ソース、トップ、パラメータ/define/include パス、ターゲット/リンク .db ライブラリ、承認された SDC。必要な場合は UPF および物理参照。リセットセマンティクスと DesignWare 依存関係を記録します。.lib 変換には動作する Library Compiler が必要です。ローカルでの可用性を確認してください。
マッピングされた .v、.ddc、エクスポートされた .sdc、シンセシス .svf。デザイン、制約、面積、タイミング、電力、QoR レポート。マッピング前/elaboration の証拠と元の RTL/SDC ハッシュを保持します。チュートリアルライブラリの面積はライブラリ単位であり、アサートされた平方ミクロン値ではありません。
ステージ操作
新しいコマンドを構築する前に、インストールされているコマンド構文、引数の型、デフォルト値、制限、例、機能要件、デザイン状態の前提条件を取得します。各操作が状態を照会するのか、派生状態を更新するのか、デザインを変更するのか、アーティファクトをエクスポートするのかを特定します。
| ステージ | コマンドまたはネイティブプロシージャ | 前提条件とチェック |
|---|---|---|
| RTL | analyze elaborate link check_design | 論理ライブラリと順序付けられたソースが、必要なすべての参照を解決する必要があります。 |
| 制約 | read_sdc check_timing report_clock | クロック定義、すべてのインターフェース遅延、リカバリ/リムーバル、例外、制約なしエンドポイントを検査します。 |
| マッピング | compile compile_ultra | compile -map_effort medium/high を使用します。compile_ultra には、その機能ライセンスとモードの前提条件が必要です。 |
| インスペクション | report_area report_timing report_power report_qor | 単位、アクティビティの前提、パスカバレッジを読み取ります。電力は適切なアクティビティがない場合の推定値です。 |
| エクスポート | set_svf write_file write_sdc | 変換の前に SVF を有効にします。マッピングされたネットリストとチェックポイントを一緒に出力します。 |
Tcl、インスペクション、ドキュメント
current_design; get_designs *; get_cells -hierarchical; get_clocks *; report_hierarchy; check_design; check_timing。Synopsys コレクションのサイズ確認には、Tcl の llength ではなく、sizeof_collection を使用します。
Tcl インターフェースの場合、パス/引数を Tcl リストとして構築し、サポートされているコレクション API を使用してコレクションを処理し、エラーをキャッチして明示的なコマンドの戻り値を検査します。構文的に正しい Tcl ファイルは、コマンドの可用性を保証するものではありません。ネイティブドライバの場合は、代わりにドキュメント化された入力形式を使用します。
python3 scripts/docs.py search '' --tool design-compiler --limit 20
# 複数の一致がある場合は、インストールされているバージョン/インストールを選択します。
# 返されたエントリを次のコマンドで取得します: python3 scripts/docs.py show DOCUMENT_ID
例はバンドルディレクトリから実行されます。プライベートインデックスの作成、制限付き取得、実行時の可用性、ライフサイクルチェックについては、コマンド発見 を参照してください。マニュアルエントリは、呼び出し可能なコマンドではなく、変数や診断を記述している場合があります。ドキュメントがない場合は、サポートされていないコマンドを選択できないというブロッカーとなります。
制御パラメータと依存関係
マップエフォート (medium/high)、インクリメンタルコンパイル、PDK で許可されているバッファリング/セルの選択、面積とタイミングの重視度。compile_ultra -timing_high_effort_script と -area_high_effort_script は異なる戦略です。スイッチを組み合わせる前に制限を取得してください。リタイミング、階層変更、クロックゲーティングは検証義務を変更し、新しい等価性の証拠が必要になります。
面積を小さくすると、遅延とファンアウトが増加する可能性があります。物理認識/トポグラフィカル設定には物理ライブラリと RC テクノロジが必要です。フラグが存在するという理由だけでこれらを有効にしないでください。クロック周期とインターフェースバジェットは固定のままです。ネットリストを変更すると、Formality とすべての後続チェックポイントが無効になります。
元の値/提案値、レポートでサポートされた仮説、マニュアル参照、有効なステージ、期待されるメトリックを記録します。最適化 を使用して、不変の機能とハード制約の下で制限付き比較を行います。
障害回復と検証
チューニングの前に、ソースの順序、define、未解決の参照、ライブラリの選択、制約を診断します。推論されたラッチと複数のドライバを機能的な意図と照らし合わせて確認します。サポートされていないコマンドには、インストールされているバージョンのドキュメントが必要です。ライセンスまたはローダーの障害には、環境の修復が必要です。
コマンド/ステータス、内部ログ、レポート、状態/チェックポイントIDをキャプチャします。原因を分類し、関連するインストール済みドキュメントを参照し、最も影響の少ない正当な修正を適用します。最後に有効な受信チェックポイントの書き込み可能なコピーを復元し、影響を受けるステージを再実行します。変更を保持する前に、検証済みのメトリックを比較します。拒否された試行は保持します。回復の決定にはトラブルシューティングを使用します。
機能変更には明示的な承認が必要です。タイミング要件を緩和したり、必要な制約を削除したり、検証をバイパスして成功を報告したりしないでください。正当な修正が残っていない場合、または設定されたバジェットが枯渇した場合は停止し、どのような入力または環境の修復が必要かを報告します。
テンプレートと承認
実際の出力と製品固有のレポートを要求されたスコープに対して検査します。シンセシス/実装では、マッピング/リンクされたアーティファクトと保持された制約を要求し、変換後に機能性を再証明します。検証では、完全なカバレッジとクリーンな必須チェックを要求します。シミュレーション/デバッグでは、レビューされた診断とともに意図されたタスク/テストが完了することを要求します。
ドキュメント検証、Tcl 構文チェック、ツール実行、ステージ承認、エンドツーエンドのサインオフ証拠は分離して保持します。生成されたストリームは検証済みの実装ではありません。必要な証拠の境界については、実行契約 および 検証スコープ を参照してください。