ASIC 設計

ASIC 設計とは?

図1. プリント基板に実装されているASICチップ

図1. プリント基板に実装されているASICチップ

ASIC(読み方:エーシック)とは、「Application Specific Integrated Circuit」の略称であり、特定のアプリケーションに最適化された高性能なIC(半導体集積回路/Integrated Circuit)のことを指します。カスタム設計されたICであり、特定の機能を実現するために最適化されています。これからASICに入門する方のために、どんなものなのか見ていきましょう。

※ICとは一つのチップ上に電子回路の構成要素であるトランジスタ、抵抗、コンデンサーなどをまとめたデバイスです。

私たちの身の回りには、スマートフォンやゲーム機など、このASICのお陰で動いているガジェットが山のようにあります。

図2. ASICを搭載するスマートフォン

図2. ASICを搭載するスマートフォン

ASICは一言で表すと、「ある特定のタスクを超速でこなす専門家」のようなものです。一つ一つのASICは、特定の計算やデータ処理を行うために設計されており、そのタスクにおいては、他の一般的なプロセッサよりもはるかに高速に動作します。しかし、一方で一度設計されたASICは、その後に処理内容を変更することはできません。

ASICの特徴

ASICには以下の特徴があります。

  • 高性能:専用の回路で構成するため、そのアプリケーションに必要な機能のみを持つことができます。そのため、ASICは非常に高速で、処理能力が高いことが特徴です。
  • 省電力:特定のアプリケーションに最適化されているため、必要な機能のみを持つことができます。そのため電力効率が高くなります。暗号通貨のマイニングではGPUやFPGAが使われることがありますが、電力と性能を極限まで高めようと思うと、最終的にはそれら性能が最も高いASICを使用することになります。
図3. 暗号通貨のマイニング用クラスタコンピュータ

図3. 暗号通貨のマイニング用クラスタコンピュータ

  • イニシャルコストが高い:ASICの設計や製造には、多大なコストがかかります。専用の回路であるため、大勢のエンジニアが設計に携わり、いくつものプロセスを経て製造されます。そのため、製品の開発コストが高く、開発および製造期間も長くなるため、チップが市場に出回るまでに数ヶ月~数年の時間がかかり、他の競合製品に追いつかれる可能性があります。
  • 先端の製造プロセスが使われる:「回路の線幅が何nmの製造プロセスで・・・」といったことが論じられることがありますが、これはASICの製造プロセスのことです。線幅が細くなるほど、チップサイズは小さく、消費電力は小さくなり、処理速度は高速になります。最先端の製造プロセスを使うには、製造装置の値段も高価になるため製造コストが上がりますが、線幅が細くなるほど、同じ処理を行う回路で比較しても高性能かつ省電力になります。
図4. ASICウエハーのイメージ図

図4. ASICウエハーのイメージ図

  • チップ単価が安い:ASICは大量生産することが多いため、チップ単価は安くなります。更にSoCにすると、プリント基板上に配置していたマイコン、メモリなどの他のチップも含めて1チップ化できるため、部品点数を減らしてプリント基板面積を小さく出来るため、トータルコストの削減に繋がります。裏を返すと、大量に販売できるチップでなければイニシャルコストを回収できず、トータルコストとしては高くなってしまいます。
  • 回路の変更が難しい:ASICを製造するには回路パターンやトランジスタを配置するために、フォトマスクと呼ばれる転写するための原版を数枚程度作成します。回路パターンを変更するには、このフォトマスクを変更する必要があります。そのためASICでは回路を変更するために多額のコストと時間が必要になります。

これらの特徴から、ASICはスマートフォンやゲーム機など大量生産する製品で利用されます。少量生産の製品では代わりにFPGAが使用されます。

ASICの設計

ASIC設計では、アイデアから物理的なチップを製造するまでに、多くのプロセスを経ます。以下はその主要なプロセスを概説したものです。

(1)要件定義

最初に、何を作るか、どのような機能を持たせるかなど、製品の要件を定義します。この際に、市場の需要や競合環境、製品の性能などを考慮して、要件を決定します。

(2)仕様設計/アーキテクチャ設計

要件に基づいて、仕様を設計して行きます。ここでは機能の構成要素を分解し、例えば、機能ブロック図の作成、アナログ、デジタル回路への分割、インターフェイスの設計などを行います。要件と仕様との割り当ては、システムズエンジニアリングの手法が用いられることもあります。

(3)機能設計

仕様に基づいて、新しく採用する機能を設計していきます。新しく採用する機能は動作を表現したビヘイビアモデルをC言語やMATLAB/Simulinkなどを使って開発して、シミュレーションで期待通りの動作を行うか機能検証を行います。仕様設計から直接HDL設計するような説明も散見されますが、HDLで機能検証を十分に行うのは難しく、エラー混入の一因となるため、近年はC言語ベースの高位合成 やモデルベースデザインなどの新しい設計手法を導入して効率化する例が増えています。

(4)詳細設計~HDL(RTL)設計

作成された機能を回路動作レベルで詳細に設計します。従来はRTL(Register Transfer Level)の抽象度を持ったHDLコード(VHDL/Verilog HDL)を記述して行っていましたが、CコードからRTLの合成や、MATLAB/SimulinkのモデルからHDLコードを生成するなど、上位の開発ツールが使用されることが増えています。このプロセスでは、それらの何らかの手段を用いてクロックサイクルレベルで詳細機能を設計し、RTLを準備します。新しくASICを設計する場合でも、新機能はごく一部であることが多く、過去に設計したIPコアを再利用して多くの機能要素を構成します。

(5)HDL(RTL)検証

RTLをシミュレーションで実行して、機能や論理の検証や上位モデルとの等価性検証を行います。シミュレーションはテストベンチを作成して実施します。HDLのシミュレーションは実機と比較して実行に時間がかかるため、LSI検証エミュレータや、FPGA実機を使用してテストベンチを高速に実行するFPGA-In-the-Loopなど、効率化の手法を適宜利用します。

図5. ASIC設計フロー

図5. ASIC設計フロー

(6)論理合成

論理合成とはRegister Transfer Level(RTL)で記述されたHDLコードを論理ゲートとその配線情報を記述したネットリストに変換する処理のことです。一般的に論理合成する際にはVHDLまたはVerilog HDLなどのコードと、制約ファイルを与えます。制約ファイルでは、回路の動作クロック周波数と、それの対象となる配線を制約として定義します。

(7)テスト容易化設計(DFT)

テスト容易化設計:DFT(Design For Testability)とは、ASICの回路において、物理的な故障が無いかを確認するために、テスト回路の挿入やテストパターンを作成することを言います。

(8)レイアウト設計/配置配線/タイミング解析

次に、実際のチップ上で回路を物理的に配置するレイアウトを行います。これには、回路素子の配置と素子間の配線が含まれます。レイアウト後、デザインがクロック周波数などのタイミング要件を満たしているか解析します。

(9)サインオフ検証/物理検証

チップの製造データを引き渡す前に、レイアウト後のデザインで論理機能とタイミングの検証を行うサインオフ検証を行います。また、生成された物理レイアウトが設計ルールや製造プロセスの制約を満たしているか、DRC (Design Rule Check) や LVS (Layout Versus Schematic) を通してチェックします。

(10)エンジニアリング・サンプル(ES)/コマーシャル・サンプル(CS)製造および評価

エンジニアリング・サンプル(ES)を量産工場で試作し、電気的特性や動作の確認を行います。ESでの動作確認終了後、コマーシャル・サンプル(CS)の製造を行います。量産品と同等のサンプルであるCSで信頼性の評価も行います。

(11)Engineering Change Order (ECO)

サインオフ後に機能的なバグや性能的な問題で、デザインやネットリストの一部に変更の必要性が生じた場合には、論理合成や配置配線を再度行うこと無く変更するECOを行います。

以上がASICの設計プロセスの概要になります。

ASICはこんなところで使われている

ASICは特定の機能用途に多岐にわたる分野で使用されています。以下は主な分野の例です。

(1)    コンシューマエレクトロニクス

スマートフォン、テレビ、PC、ゲーム機、掃除機など何百万台も製造されるような家電製品では、特定機能用途にASICが搭載されます。

図6. コンシューマエレクトロニクス製品

図6. コンシューマエレクトロニクス製品

(2)自動車

ADAS (先進運転支援システム)、インフォテインメントシステム、エンジン制御ユニットなど、自動車に関連する多くのシステムで使用されます。自動車には、複数のセンサーが搭載されており、それらのデータを収集して、運転支援や安全装置に活用されます。例えば、車速センサーやエンジンセンサーなどがありますが、これらのセンサーからのデータを処理するのに、ASICが使用されます。その一方、ステレオカメラのシステムなどではFPGAが使われるケースもあります。  

図7. ステレオカメラのADASシステム

図7. ステレオカメラのADASシステム

(3)医療

医療分野でも、ASICが使用されています。例えば、血糖測定器や心電計などがありますが、これらの機器には、ASICが搭載されています。ASICによって、高精度で正確な測定が可能となり、医療現場での診断や治療に役立てられます。

(4)セキュリティ

セキュリティ分野でも、ASICが使用されています。例えば、暗号化や認証に使用されるスマートカードやICカードには、ASICが搭載されています。ASICによって、高度な暗号化や認証が可能となり、セキュリティの向上に貢献しています。

ASICと比較されるデバイス

ASICとよく比較される似たデバイスとして、内部構造が異なるFPGA、販売ルートが異なるASSP、デバイス内部構成を示すSoCなどがあります。

FPGAとは?

また、回路が固定されており、機能変更が出来ないASICに対して、同じような機能をプログラマブルに書き換えることができるデバイスとしてFPGA(Field Programmable Gate Array)があります。FPGAはASICを開発する際に様々な用途で利用されます。

1. プロトタイピング

ASICの設計変更は高コストなため、実際に製造する前にその機能や性能をテストしたい場面があります。FPGAはプログラム可能なハードウェアであるため、ASICのデザインを模擬して、実機上で動作させることができます。このようにして、設計エラーを早期に発見し、修正することができます。

2. ソフトウェアとの同時開発

ASICの製造は時間がかかるため、製造中にFPGAを使用して先行してソフトウェアの開発を進めることができます。ASICのデザインをFPGAに実装することで、ソフトウェア開発者は実際のハードウェア環境に近い状態でソフトウェアのテストや開発を進めることができます。

3. 実機検証

ASICのデザインは極めて複雑なため、シミュレーションだけですべてのケースを確認するのは困難です。FPGAを用いることで、高速に多くのテストケースでテストすることが出来ます。

4. 市場への早期投入

FPGAの単価はASICよりも高価なことが多いため、大量生産には向いていませんが、新しい製品を早期に市場投入する「プレリリース」や「試作」段階でFPGAを搭載した製品をリリースすることがあります。これにより、市場の反応を早期に得たり、顧客からのフィードバックを受け取りながら、最終的なASICのデザインをより良いものとしてブラッシュアップさせることができます。

ASSPとは?

特定アプリケーション向けでも、市場で購入できる汎用ICも存在します。これは、ASSP(Application Specific Standard Product )と呼ばれます。ASSPは、特定のアプリケーションの要件を満たすために設計されていますが、複数の顧客やアプリケーションで使用されることが特徴です。例えば、オーディオ処理、映像処理、通信インターフェイスなどの特定の機能を持つ製品が考えられます。ASSPは、ASICと比べて開発コストや時間が削減されることが多いです。これは、ASSPが複数の顧客やアプリケーションで共有されるため、開発コストを分散できるからです。

SoCとは?

更に、チップ上にメモリ、CPU、特定用途向け専用回路、各モジュール間で信号をやり取りするデータバス、I/Oなど、複数の機能を統合しているデバイスSoC(System On Chip)があります。SoCにも特定アプリケーション向けのASIC SoC(カスタムSoC)、汎用SoC、SoC FPGAなどがあり、目的、用途、使用する数量に応じて使い分けられます。

図8. SoCの内部構造

図8. SoCの内部構造

ASICの先端的な設計手法

ASICやFPGAの設計においては、高位合成やモデルベースデザインのような高レベルの設計手法が登場し、重要性を増してきました。それには以下のような背景や利点があります。

C言語ベース高位合成

RTL設計では、具体的なハードウェアの動作を記述する必要があります。これは設計およびデバッグに膨大な時間を必要とするため、複雑なアルゴリズムやアプリケーションを設計するには困難が伴います。

特徴:C高位合成は、C、C++、SystemCのような高レベルの言語を使用してハードウェアの動作を記述し、自動的にVHDLやVerilogなどのHDLコードに変換します。

モデルベースデザイン

モデルベースデザインは、MATLABやSimulinkのようなツールを使用して、システムの動作モデルをグラフィカルにブロック線図で記述して設計します。

特徴:グラフィカルインターフェースを使用することで、システムの動作やアーキテクチャを視覚的に理解しやすく、直感的に設計することができます。可視化や解析機能を使用して、モデルの動作を早期に検証することができます。モデルからはCコード、HDLコードのどちらも生成することができ、ソフトウェア、ハードウェアどちらにでも展開が可能です。

図9. 従来手法とモデルベースデザインの工数比較

図9. 従来手法とモデルベースデザインの工数比較

FPGAを使ったASICデザインの検証

ASICの製造には時間がかかるため、デザインの検証にはFPGAが用いられます。モデルベースデザインではFPGAを使ったテスト機能が提供されており、等価性検証を行うFPGA-In-the-Loop、AXIバスを介してデバッグするAXI Manager、内部信号をモニターするFPGA Data Captureなどの機能があります。

図10. AXI Managerの概念図

図10. AXI Managerの概念図

C高位合成やモデルベースデザインでは、システム設計の複雑さを管理し、開発期間を短縮するのに役立ちますが、サポートする言語や構造に制約があるため、これらを理解した上で適切に運用する必要があります。

高レベル設計手法が利用される背景

高レベルの設計手法の重要性が増してきた背景には次のような要因があります。

●システムの複雑さの増加

エレクトロニクス製品およびASICには、年々より高い機能が求められます。このような高度に複雑なシステムを低レベル言語(RTL)で設計するのは非常に時間がかかり、また記述ミスなどのエラーのリスクが高くなります。C言語やモデルでは、複雑な機能設計および検証が容易になります。

●異なる分野のエンジニアの協業が容易

ソフトウェアとハードウェアが協調して動作するようなより複雑なシステムが増加するにともない、ハードウェアエンジニアしか理解できないHDLで設計するのではなく、エンジニア間でのコラボレーションが容易なブロック線図で記述したモデルを共通言語として用いることで、コミュニケーションや共同作業が容易になります。

図11. エンジニア間でのコラボレーション

図11. エンジニア間でのコラボレーション

●設計および検証期間の短縮

市場での競争力を維持するためには、製品をより迅速に投入することが重要です。高位合成やモデルベースデザインを適用することで、機能設計~検証、プロトタイピング、実装までの期間を短縮できるようになります。

これらの要因により、RTLベースの設計手法だけでは、先端的な設計要件や開発サイクルに対応することが困難になってきました。そのため、高レベルの設計手法が適用されるようになりました。

まとめ

ASICは、高速処理や省電力化、信頼性の高さ、大量生産に向いているなどのメリットがあります。昨今のエレクトロニクス製品には必ずと行っていいほどASICが使用されており、無くてはならない存在です。しかし、設計や製造には多大な手間がかかるため、製品の開発コストが高く、市場に出るまでに時間がかかることが欠点として挙げられます。今後も、ASICは、様々な分野で使用されることが期待されています。

参考: FPGA、ASIC、および SoC 開発, ハードウェア設計, 高水準合成, VHDL テストベンチ, ミックスドシグナル システム, 半導体, SoC アーキテクチャ