包括的なASIC設計フロー:要件定義から量産まで
典型的な設計フローは以下の構造に従い、複数のステップに分解できます。これらのフェーズの一部は並行して、一部は順次進行します。業界で一般的なプロジェクト設計サイクルを見ていきましょう。
要件定義
半導体企業の顧客は通常、そのチップを自社システムや最終製品で使用する別の企業です。そのため、顧客の要件もチップ設計の方向性を決める上で重要な役割を果たします。最初のステップは、要件を収集し、最終製品の市場価値を試算し、プロジェクトに必要なリソースを評価することです。
仕様策定
次のステップは、設計すべきチップの機能、インターフェース、全体アーキテクチャを抽象的に記述する「仕様」をまとめることです。例:
- VR対応のため、画像処理アルゴリズムを実行する演算能力が必要
- コヒーレントインターコネクトを持つ2つのARM A53プロセッサ、600MHz動作が必要
- USB 3.0、Bluetooth、PCIe第2世代インターフェースが必要
- 1920x1080ピクセル表示対応の適切なコントローラが必要
アーキテクチャ設計
アーキテクトがチップの動作に関するシステムレベルのビューを作成します。必要なコンポーネント、クロック周波数、電力・性能要件への対応策、チップ内のデータフローを決定します。例:プロセッサがシステムRAMから画像データをフェッチして実行する間、グラフィックスエンジンは前のバッチの後処理データをメモリの別領域から実行する、といった並行動作の設計です。
デジタル設計(RTL設計)
現代のチップは複雑すぎてゼロから構築できず、多くのコンポーネントが再利用されます。例えば、自動車向けにFlexCANモジュールが必要な場合、他社から購入して時間・労力を節約するか、自社で開発するかを選択します。フリップフロップやCMOSトランジスタといった基本ブロックから設計するのは非現実的です。代わりに、VerilogやVHDLといったハードウェア記述言語(HDL)を用いて振る舞い記述を開発し、機能・性能・その他の高レベル課題を分析します。これはデジタルデザイナーが行い、デジタルエレクトロニクスのスキルを持つハイレベルプログラマーに近い役割です。
検証(機能検証)
RTL設計が完成したら、機能的正確性を検証する必要があります。例えば、DSPプロセッサがメモリから命令をフェッチするバストランザクションを発行すると期待されるとき、それが期待通りに起こることをどう保証するか?ここで機能検証が必要となり、EDAシミュレータを用いて設計をモデル化し、さまざまな刺激を与えてテストします。これはプリシリコン検証エンジニアの仕事です。
時間短縮と機能クロージャー達成のため、設計チームと検証チームは並行して作業します。設計チームがRTLバージョンを「リリース」し、検証チームがテストベンチ環境とテストケースを開発してそのRTLバージョンの機能をテスト。テストが失敗すれば設計に問題がある可能性があり、「バグ」として報告され、次のRTLリリースで修正されます。このプロセスは、設計の機能的正確性に十分な信頼が得られるまで続きます。
論理合成
設計に満足したら、組み合わせゲートやフリップフロップといった実ハードウェア要素による回路図(ゲートレベルネットリスト)に変換します。このステップを「合成」と呼びます。論理合成ツールは、HDLでのRTL記述をゲートレベルネットリストに変換します。ネットリストは、ゲートとそれらの接続で回路を記述したものです。
and_2_0 u_and2_0 ( .in_a (_net_112), .in_b (_net_56), .out (_net_222));
ff_lt u_ff_lt_122 (.d (_net_222), .clk (_net_11), .q (_net_76));
論理合成ツールは、ネットリストがタイミング・面積・電力仕様を満たすことを保証します。通常、異なるプロセスノードやデジタル要素のライブラリにアクセスでき、これらの基準を満たすようインテリジェントな計算を行います。これらのライブラリは、フリップフロップの立ち上がり/立ち下がり時間、組み合わせゲートの入出力時間など、様々なコンポーネントのデータ特性を提供する半導体ファブから入手します。
論理等価性チェック
ゲートレベルネットリストはRTLと論理的に等価かチェックされ、場合によっては「ゲートレベル検証」が実施されます。これは再度検証を行うものですが、より低い抽象化レベル(ゲートレベル)で、バックアノテートされた遅延情報を含みます。この段階では設計要素の数が膨大になるため、シミュレーション時間は長くなりがちです。
配置配線
ネットリストを物理設計フローに入力し、EDAツールを用いて自動配置配線(APRまたはPnR)を行います。代表的なツールにはCadence Encounter、Synopsys IC Compilerなどがあります。標準セルを行に配置し、入出力のボールマップを定義し、複数の金属層を作成し、タイミングを満たすためバッファを挿入します。このプロセス完了後、レイアウトが生成され、通常は製造(ファブリケーション)に送られます。この段階は、プロセスノードと物理実装詳細に精通したフィジカルデザインチームが担当します。
バリデーション(ポストシリコン検証)
ここで終わりではありません。サンプルチップが同一半導体企業で製造されるか、TSMCやGlobalFoundriesなどのサードパーティファウンダリに送られます。このサンプルはポストシリコンバリデーションプロセスを経て、別のエンジニアチームがテスタ上で様々なパターンを実行します。チップ内部ノードへの可視性が大幅に低下するため、プリシリコン検証よりデバッグが遥かに困難です。さらに、100万クロックサイクルが1秒で完了するため、エラーの正確な発生時刻を遡るのは時間がかかります。この段階で実問題や設計バグが見つかれば、RTLで修正し、再検証し、その後の全ステップを再実行する必要があります。
設計フローには多数のステップがありますが、設計活動の大半はRTL記述の最適化と検証に集中します。EDAツールでプロセスを自動化できますが、不適切な使用は非効率な設計を招くため、設計者は設計プロセス全体で意識的な選択を行う必要があります。
Verilog
- 優れた制御盤設計の4つのキーファクター
- 産業オートメーションにおける制御エンクロージャ設計の必須原則
- 電気制御盤設計のマスター:主要原則とベストプラクティス
- PCB設計の必須Q&A:エキスパートが答える32の質問
- PCB設計向上:耐干渉性能を高める実証済み戦略
- PCB干渉対策の完全ガイド:EMC適合を確実にするプロフェッショナル手法
- ノートPC PCBにおける最適EMCを実現する3つの重要設計戦略
- 建築設計の原理と実践:歴史・専門分化・現代建築家に求められる力
- フロープロファイル作成のタイミング:アトラスコプコエキスパートの指針
- Verilogマスター:デジタル回路設計のための完全チュートリアル
- 設計抽象化レイヤー:チップアーキテクチャを理解するための明確なガイド