JP2022016409A - レジスタ転送レベル設計から合成可能なネットリストを生成するためのシステム及び方法 - Google Patents
レジスタ転送レベル設計から合成可能なネットリストを生成するためのシステム及び方法 Download PDFInfo
- Publication number
- JP2022016409A JP2022016409A JP2021113971A JP2021113971A JP2022016409A JP 2022016409 A JP2022016409 A JP 2022016409A JP 2021113971 A JP2021113971 A JP 2021113971A JP 2021113971 A JP2021113971 A JP 2021113971A JP 2022016409 A JP2022016409 A JP 2022016409A
- Authority
- JP
- Japan
- Prior art keywords
- semiconductor device
- design
- memory
- compiler
- register
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/08—Word line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, for word lines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/12—Bit line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, equalising circuits, for bit lines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/02—System on chip [SoC] design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/18—Manufacturability analysis or optimisation for manufacturability
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
【課題】RTL設計から合成可能なネットリストを生成して半導体デバイスの設計を支援する方法を提供する。
【解決手段】ネットリストは、半導体デバイスの一部に対応するRTL設計情報を提供する。構成トレーサーは、RTL設計に関連付けられた動作情報を生成する。レジスタコンパイラは、半導体デバイスに関連する技術及びパワー、パフォーマンス及びエリア(PPA)情報に基づき半導体デバイスのセットをパイルする。事前定義されたPPAの条件を満たすレジスタコンパイラにより生成された半導体デバイスが識別される。半導体デバイスの入力/出力ポートを整列させるための構造情報が生成される。合成可能な半導体デバイスの設計を選択して、構造合成可能な入力/出力境界コンパチブルな半導体デバイスモジュールを有する設計ネットリストを生成できるように、ユーザ定義パラメータに基づいて合成可能な半導体デバイス構成のセットが作成される。
【選択図】図8
【解決手段】ネットリストは、半導体デバイスの一部に対応するRTL設計情報を提供する。構成トレーサーは、RTL設計に関連付けられた動作情報を生成する。レジスタコンパイラは、半導体デバイスに関連する技術及びパワー、パフォーマンス及びエリア(PPA)情報に基づき半導体デバイスのセットをパイルする。事前定義されたPPAの条件を満たすレジスタコンパイラにより生成された半導体デバイスが識別される。半導体デバイスの入力/出力ポートを整列させるための構造情報が生成される。合成可能な半導体デバイスの設計を選択して、構造合成可能な入力/出力境界コンパチブルな半導体デバイスモジュールを有する設計ネットリストを生成できるように、ユーザ定義パラメータに基づいて合成可能な半導体デバイス構成のセットが作成される。
【選択図】図8
Description
本発明は、半導体デバイスの設計に関し、より具体的には、レジスタ転送レベル(RTL)(例えば、動作レジスタ転送レベル)設計から合成可能な(例えば、合成可能なパフォーマンスパワーエリア(PPA)の事前プロファイル依存)ネットリストを生成して、半導体デバイス(例えば、特定用途向け集積回路(ASIC)システムオンチップ(SoC)集積チップ)の設計を支援するためのシステム及び方法に関する。
通常、半導体デバイスの設計にはいくつかのステップが含まれる。半導体デバイスのデジタル部分に関連付けらたロジックは、レジスタ転送レベル(RTL)を用いて定義され得る。RTL設計は、ハードウェア記述言語(HDL)などのいくつかのツールのうちの一つ以上を用いて実施され得る。RTL設計は、合成可能なネットリストに変換され得て、この合成可能なネットリストは、RTL設計によって定義された機能を実行できる半導体デバイスを製造するために用いられるハードウェア回路への詳細な説明である。
本発明の態様は、添付図面を参照しながら、以下の詳細な説明から最もよく理解される。
本開示の様々な実施形態に係るRAM構成とレジスタファイルからデータを様々なテクノロジーサイズ(例えば、5nm、7nm、10nm、12nm、16nm、28nmなど)にわたって分析し抽出するための例示的なシステムのブロック図である。
本開示の様々な実施形態に係るRAM構成とレジスタファイルからデータを様々なテクノロジーサイズ(例えば、5nm、7nm、10nm、12nm、16nm、28nmなど)にわたって分析し抽出するための他の例示的なシステムのブロック図である。
本開示の様々な実施形態に係るRAM構成とレジスタファイルからデータを様々なテクノロジーサイズ(例えば、5nm、7nm、10nm、12nm、16nm、28nmなど)にわたって分析し抽出するための他の例示的なシステムのブロック図である。
本開示の様々な実施形態に係る合成されたネットリストの生成を示す例示的なブロック図である。
本開示の様々な実施形態に係る合成されたCPUネットリストの生成を示す例示的なブロック図である。
本開示の様々な実施形態に係るPPA分析を示す例示的な図である。
本開示の様々な実施形態に係る合成されたMLネットリストの生成を示す例示的なブロック図である。
本開示の様々な実施形態に係る集積回路で実施する回路合成を最適化するための方法を示す例示的なフローチャートである。
本明細書に記載の様々な態様を実施するためのサンプルコンピューティングデバイスアーキテクチャを示す例示的なブロック図である。
以下の開示は、提供された主題の異なる特徴を実施するための多くの異なる実施形態又は例を提供する。以下、本開示を簡略化するために、コンポーネントおよび配置の特定の例を説明する。もちろん、これらは、一例に過ぎず、これらに限定するものではない。また、本開示は、様々な例において符号及び/又は文字を繰り返してもよい。この繰り返しは、単純さと明快さを目的としており、それ自体では、説明した様々な実施形態及び/又は構成の間の関係を示すものではない。
RTL設計の一部には合成に十分な詳細が含まれている場合があるが、他の部分には含まれていない場合がある。いくつかの例では、RTL設計がいくつかの異なる合成可能なハードウェア実装にマッピングされる場合があり、他の例では、RTL設計に合成に十分な情報が含まれていない場合がある。RTL設計から合成できないことは、メモリ(例えば、RAMマクロ)ラッパー設計の場合に特に当てはまる。その結果、RTL設計を(例えば、エコシステムパートナー、ベンダー、顧客、オープンソースから)合成可能なネットリストへ増分的かつ反復的なプロセスで手動で変換するために、操作の取り組みを利用する必要があることがよくある。
場合によっては、この増分的かつ反復的なプロセスに時間がかかる場合がある。さらに、このプロセスが手動で行われるため、機械学習及び人工知能などのメモリアクセスを主に取り扱うアプリケーションを含むパフォーマンス、パワー、及びエリア(PPA)に対して結果が最適化されない場合がある。
半導体デバイス(例えば、半導体特定用途向け集積回路(ASIC)システムオンチップ(SoC)集積チップ)の設計にはいくつかのステップが含まれる。半導体デバイスのデジタル部分に関連付けられたロジックは、レジスタ転送レベル(RTL)設計技術を用いて定義され得る。RTL設計は、ハードウェア記述言語(HDL)などのいくつかのツールのうちの一つ以上を用いて実施され得る。いくつかの実施形態では、RTL設計は、IPコア又はIP設計と呼ばれる場合がある。RTL設計は、合成可能なネットリストに変換され得て、この合成可能なネットリストは、RTL設計によって定義された機能を実行できる半導体デバイスを製造するために用いられるハードウェア回路への詳細な説明である。RTL設計の一部には合成に十分な詳細が含まれている場合があるが、他の部分には含まれていない場合がある。いくつかの例では、RTL設計がいくつかの異なる合成可能なハードウェア実装にマッピングされる場合があり、他の例では、RTL設計に合成に十分な情報が含まれていない場合がある。RTL設計から合成できないことは、メモリ(例えば、RAMマクロ)ラッパー設計の場合に特に当てはまる。RTL設計では、メモリは論理的に定義され得るが、メモリにアクセスするために用いられる物理プロトコルは完全には定義されていない場合がある。特定のプロトコルは、メモリの種類によって異なることができる。物理メモリのタイプに関して柔軟性を維持するために、ラッパー(例えば、柔軟な入力/出力を有するラッパー)を用いることができる。メモリ、より一般的には、半導体デバイス(例えば、半導体ASIC SoC集積チップ)のコンテキストでは、ラッパーは、メモリの論理ポート(例えば、論理アクセス)と物理メモリポート(例えば、電力制御及び/又はテストポート)との間のインタフェースを定義する。ラッパーは物理メモリ自体から分離されるため、メモリタイプ(例えば、物理的特性)の定義をチップ設計プロセスの完全なインタフェースにすることができる。しかしながら、ラッパーの柔軟性を有しても、増分的かつ反復的なプロセスではRTLを合成可能なネットリストに手動で変換する必要があることがよくある。このタスクは通常、1人以上の個人によって実行され、時間がかかる場合がある。
図1は、本開示の様々な実施形態に係るRAM構成とレジスタファイルからデータを様々なテクノロジーサイズ(例えば、5nm、7nm、10nm、12nm、16nm、28nmなど)にわたって分析し抽出するための例示的なシステム100のブロック図である。システム100は、様々な回路の論理動作を定義するRAM動作モデルのレジスタ転送レベル(RTL)設計を受信するデータ処理コンピュータシステムであり得る。RTLは、ハードウェアレジスタ間のデジタル信号の流れ、及びそれらの信号に対して実行される論理演算に関して同期デジタル回路をモデル化する設計抽象化である。いくつかの実施形態では、RTL設計は、単一のソース(例えば、単一の設計エンティティ)から取得されてもよい又は複数のソース(例えば、パートナーデザイナー)から取得されてもよい。複数のソースからRTL設計を取得する場合、異なるソースからのRTL設計のフォーマットが異なることができる。最初に、RAMマクロモデルの動作に関連する情報を含むRTL設計は、自動RTL RAMマクロ構成トレーサーによって自動的に処理されてRAMマクロリスト(例えば、様々なRAMマクロデバイスに関する動作情報及び/又はサイズ情報)を自動的に生成する。システム100は、トレーサー110と図2-3により詳細に記載されるような複数のモジュールとを用いて新たな回路設計用の最適化された設計ネットリストを生成する。トレーサー110は、一組のコンピュータプログラムを含む。これらのコンピュータプログラムは、RTL設計をスキャンするために適用することができる。ワード線及び/又はビット線サイズなどの対応するメモリサイズはスキャンから抽出することができる。トレーサー110は、抽出されたメモリサイズ情報を用いて出力リストを生成する。そのメモリサイズ情報は、最適化された設計ネットリストを生成するためにレジスタコンパイラに提供することができる。ネットリストは、電子回路の接続性への説明である。ネットリストは、様々な電気部品とそれらの部品間のノード接続を定義するリストである。新たな回路設計は、システム100に入力されたRTL設計に基づく、最適化された設計であり得る。システム100によって出力されたネットリストは、最適化されたパワー、パフォーマンス、及びエリア(PPA)特徴をさらに含む。回路設計のパワー、パフォーマンス、及びエリアの各々が設計の不可欠な要件であるため、PPA分析は設計を最適化するために用いられる。
図2は、本開示の様々な実施形態に係るRAM構成とレジスタファイルからデータを様々なテクノロジーサイズ(例えば、5nm、7nm、10nm、12nm、16nm、28nmなど)にわたって分析し抽出するための他の例示的なシステム200のブロック図である。システム200は、変換モジュール210、フロアプランマッピングモジュール220、シミュレーションモジュール230、及び分析モジュール240を含む。変換モジュール210は、図1に記載されるように、レジスタ転送レベルコード(RTL)を受信する。レジスタ転送レベルコードは、ハードウェア記述言語内で用いられるソフトウェアコードである。物理回路は、ハードウェアレジスタ間のデジタル信号フローと、物理回路のコンポーネントによってデジタル信号に対して実行される論理演算(例えば、AND、NAND、OR、NOR)とを記述するレジスタ転送レベルコードを用いて記述され得る。変換モジュール210は、その回路論理動作のレジスタ転送レベルコード記述にアクセスする。そして、変換モジュールは、複数のタイプのコンポーネント(例えば、CPU、GPU、ML-NPU)及びフィーチャサイズ技術(例えば、5nm、7nm、10nm、12nm、16nm、28nmなど)のためにレジスタ転送レベルコードを構造的に定義された回路設計(例えば、ANDゲート、NAND回路、ORゲート、NOR回路)のセットに変換する。フロアプランマッピングモジュール220は、構造的に定義された回路設計のセットにアクセスして構造的に定義された回路設計のセットをフロアプランのセットに変換する。フロアプランは、回路設計内の電気部品と、特定領域(例えば、フロア)でのそれらの電気部品の物理的な配置とを定義する。シミュレーションモジュール230は、フロアプランのセットにアクセスし、各フロアプランについてシミュレートできる回路を作成する。分析モジュール240は、物理的にシミュレートされた回路にアクセスし、物理的にシミュレートされた回路の動作条件の範囲にわたってスイープして、物理的にシミュレートされた回路のパワー、パフォーマンス、及びエリア特性の一連の分析を含む最適化された設計ネットリストを生成する。分析モジュール240はまた、複数の物理的にシミュレートされた回路に対して並行して(例えば、同時に)動作条件(例えば、様々な入力電圧、高/低温度、高/低湿度などの様々な周囲環境)の範囲にわたって同時にスイープする。
図3は、本開示の様々な実施形態に係るRAM構成とレジスタファイルからデータを様々なテクノロジーサイズ(例えば、5nm、7nm、10nm、12nm、16nm、28nmなど)にわたって分析し抽出するための他の例示的なシステム300のブロック図である。図2のシステム200と同様に、システム300は、変換モジュール210、フロアプランマッピングモジュール220、シミュレーションモジュール230、及び分析モジュール240を含むことができる。さらに、システムは、ソーティングモジュール310、表示モジュール320、回路設計モジュール330、合成モジュール340、及びネットリスト作成モジュール350のうちの一つ以上を含むことができる。
ソーティングモジュール310は、分析にアクセスし、回路のパワー消費、パフォーマンス、つまり、回路が動作する周波数、及び回路が占めるエリアを定義するパワー、パフォーマンス、及びエリア特性によって、物理的にシミュレートされた回路のセットのソーティングされたリストを生成する。これらの特性は、パワー、パフォーマンス、及びエリアの値に基づいてソーティングされ得る。表示モジュール320は、物理的にシミュレートされた回路のソーティングされたリストにアクセスし、物理的にシミュレートされた回路のソーティングされたリストをグラフィカルユーザーインタフェースに表示する。回路設計モジュール330は、構造的に定義された回路設計のセットにアクセスし、構造的に定義された回路設計をファイルリストのセットに変換して、パワー、パフォーマンス、及びエリア特性の複数のプロファイル構成を合成する。ファイルリストは、回路のコンポーネントと、コンポーネント間の相互接続点とを定義する。合成モジュール340は、ファイルリストのセットにアクセスし、設計コンパイラを用いてファイルリストのセットを論理ゲート構成のセットに合成する。回路の合成には、レジスタ転送レベルコードを一般的なブールモデルに変換することが含まれる。そのブールモデルを論理レベルで最適化して、複数の論理演算をより簡単な演算に組み合わせることができる。例えば、コンポーネントは、動作時間と回路内のコンポーネント全体の数を削減するために、異なるコンポーネントに再配置、結合、及び/又は再結合することができる。さらに、最適化には、エリアを節約するために、シーケンシャルセルを取り巻くロジックをセル内に吸収できるコンポーネントのシーケンシャルマッピングが含まれ得る。設計コンパイラは、出力ポート接続のないロジックの削除、冗長コンポーネント(例えば、2つのシーケンシャルインバータ)の削除、及び/又は定数の伝搬などの様々な最適化動作を実行して、回路内のロジックコンポーネント全体を削減することもできる。ネットリスト作成モジュール350は、論理ゲート構成のセットにアクセスし、論理ゲート構成のセットを、シミュレーションモジュール130によって用いられるネットリストのセットに変換する。論理ゲート構成には、コンポーネントの相互接続を定義する論理回路図が含まれる。これらの論理ゲート構成は、構成内のノード、構成内のコンポーネント、及びそれらの相互接続のテキスト表現に変換することができる。このテキスト表現はネットリストである。
図4は、本開示の様々な実施形態に係る合成されたネットリストの生成を示す例示的なブロック図400である。ファイルリスト(例えば、回路論理動作を記述するRTL設計-回路の論理動作を定義するソフトウェアコード)は、中央処理装置(CPU)(例えば、CPU-IP1 402)、グラフィック処理装置(GPU)(例えば、GPU-IP1)、機械学習ネットワークプロセッサ(ML-NPU)(例えば、ML-NPU-IP1)などの任意の数の技術に関連付けることができる。ファイルリストの各セットは、図6-7により詳細に記載されるように、異なるモジュール設計に関連付けられた一つ以上のファイルリストを含むことができる。メモリサイズ抽出器410(例えば、合成モジュール340)は、ネットリストの所与のセットを処理して、評価されている所与のメモリセルのサイズを定義する各セットに対応する論理ゲート構成を生成する。例えば、論理ゲート構成422(例えば、config.CPU)は、CPU-IP1ファイルリスト402に対応する。メモリサイズ抽出器410はトレーサー412をさらに含む。トレーサー412は、半導体デバイスに対応するRTL設計の少なくとも一部に関連付けられた動作情報を生成する。例えば、そのような動作情報は、デバイスサイジング(例えば、ワード線の数及びビット線の数)を含むことができる。同様に、論理ゲート構成422(例えば、config.GPU)は、GPU-IP1ファイルリスト404に対応する。論理ゲート構成426(例えば、config.ML-NPU)は、ML-NPU-IP1ファイルリスト406に対応する。論理ゲート構成は、例えば、シングルポート(SP)スタティックランダムアクセスメモリ(SRAM)431、2ポートSRAM 432、デュアルポート(DP)SRAM 433、1P RF 432、2P RF 434などのレジスタコンパイラ及び任意の他のタイプのレジスタコンパイラ436を用いて以前に詳述されるようにコンパイルされる。そして、これらのコンパイルされた構成は、ラッパー440によって、インポートされたファイルリスト(例えば、ファイルリスト402、ファイルリスト404、ファイルリスト406)に対応するネットリストに変換される。ラッパーは、ラップされているコードのコード複雑性が別のインタフェースソフトウェアコンポーネントに見えないように、ラップされているコードをカプセル化するように定義されたソフトウェアである。その代りに、ラッパー自体には、二つのソフトウェアコンポーネント間の相互作用を容易にするために、他のソフトウェアコンポーネントとのインタフェースを作成するより簡単なコードが含まれる。ラッパーは、例えば、二つのソフトウェアコンポーネントが、互いに互換性のない異なるタイプのソフトウェアコードを有する場合に用いられる。例えば、ネットリストCPU-IP1 452は、ファイルリストCPU-IP1 402に対応する。ネットリストGPU-IP1 454は、ファイルリストGPU-IP1 454に対応する。ネットリストMP-NPU-IP1 456は、ML-NPU-IP1 406に対応する。これらのネットリストは、コンポーネントの自動配置及び/又は信号のルーティングを用いて、最適化された回路設計を生成するために利用される(例えば、ステップ460)。最適化されたネットリストは、将来の回路レイアウトに利用できるようにコンパイラに返送されて記憶される。
図5は、本開示の様々な実施形態に係る合成されたCPUネットリストの生成を示す例示的なブロック図500である。この例では、ファイルリストのセットは、N個のモジュール(例えば、ファイルリスト501、ファイルリスト502、ファイルリスト503、ファイルリスト504、ファイルリスト505など)に対応する。各ファイルリストは、その特別なモジュールに関連付けられた特定の動作ロジックを含む。ファイルリストのセットは、レジスタコンパイラ又はフリップフロップコンパイラ520を用いて、テクノロジーサイズ(例えば、5nm、7nm、16nmなど)に基づくグルーピングに共にコンパイルされる。コンパイリングとは、コンピュータプログラムが、あるプログラム言語で書いたコンピュータコードを別の言語に翻訳するプロセスである。各コンパイルは、すべての物理メモリ構成と、インポートされたファイルリスト501、502、503、504、及び505に関連付けられたPPA構成とを含む。換言すれば、様々なテクノロジーサイズ(例えば、5nm、7nm、16nmなど)にわたる一つのワード線及び一つのビット線を有するすべてのモジュール(例えば、ファイルリスト501のモジュール-1)は共にコンパイルされる。同様に、様々なテクノロジーサイズ(例えば、5nm、7nm、16nmなど)にわたる二つのワード線及び二つのビット線を有するすべてのモジュール(例えば、ファイルリスト502のモジュール-2)は共にコンパイルされる。これは、様々なテクノロジーサイズ(例えば、5nm、7nm、16nmなど)全体にわたるすべてのモジュールに対して継続される。PPA-プロファイラは、記憶されたコンパイル(例えば、コンパイル511、512、513、及び514)を、各テクノロジーサイズ(例えば、5nm、7nm、16nmなど)の論理ゲート構成に評価する。PPA分析は、図6により詳細に記載される。レジスタコンパイラ520の設定は、レジスタフリップフロップストレージ515に記憶することができる。レジスタフリップフロップストレージ515とともにコンパイル511、512、513、及び514は、ラップ及びコンパイルされて、様々なモジュールのパワー、パフォーマンス、及びエリア特性を定義するラップされたPPAプロファイルを有する対応するネットリスト(例えば、CPUネットリスト521、522、523、524、及び525)を生成することができる。ラッパーは、ラップされているコードのコード複雑性が別のインタフェースソフトウェアコンポーネントに見えないように、ラップされているコードをカプセル化するように定義されたソフトウェアである。その代りに、ラッパー自体には、二つのソフトウェアコンポーネント間の相互作用を容易にするために、他のソフトウェアコンポーネントとのインタフェースを作成するより簡単なコードが含まれる。ラッパーは、例えば、二つのソフトウェアコンポーネントが、互いに互換性のない異なるタイプのソフトウェアコードを有する場合に用いられる。図5に示される実施形態の例では、PPAプロファイルは、異なるモジュールサイズ(例えば、一つのワード線/ビット線、二つのワード線/ビット線など)に関連する特定のパワー、パフォーマンス、及びエリア要件を定義する。いくつかの実施形態では、プロジェクトユーザ定義コンフィギュレータは、最適化される回路の特定のサイジング定義を設定することができる(例えば、ユーザ定義530)。換言すれば、ユーザはユーザ入力を通じて回路の特定の寸法を設定することができる。
図6は、PPA分析を示す例示的な図600である。PPAプロファイラを用いて、様々なファイルリストが評価されて、パフォーマンスの向上、低パワー消費の維持、及びデバイスエリアの最小化が同時に行われる。これらの計算は、パワー(例えば、sp、Ip)、エリア(例えば、udh)、及びパフォーマンス(例えば、hs)に関連付けられた定数を三角測量することによって実行される。これらの定数は、電子デバイスによって消費されるパワー、電子デバイスコンポーネントが占めるエリア、及び電子デバイスを操作するために必要なクロック周波数(例えば、パフォーマンス)を定義する。三角測量は、各定数(例えば、図600に示されるポイント)間の距離を測定するプロセスである。最終的な目標は、回路パフォーマンスhsを犠牲にすることなく、パワー定数sp、Ip、及びエリア定数udhを可能な限り低い値にすることである。これらの三つのメトリック(例えば、パワー、エリア、パフォーマンス)はすべて相互に依存しているため、これらの値の一つを変更すると他の二つに影響する。
図7は、本開示の様々な実施形態に係る合成されたMLネットリストの生成を示す例示的なブロック図700である。この例では、ファイルリストのセットは、N個のモジュール(例えば、ファイルリスト701、ファイルリスト702、ファイルリスト703、ファイルリスト704、ファイルリスト705など)に対応する。各ファイルリストは、その特別なモジュールに関連付けられた特定の動作ロジックを含む。ファイルリスト701は、一つのワード線及び一つのビット線を有する第一モジュール(例えば、モジュール-1)を記述する。ファイルリスト702は、二つのワード線及び二つのビット線を有する第二モジュール(例えば、モジュール-2)を記述する。ファイルリスト703は、三つのワード線及び三つのビット線を有する第三モジュール(例えば、モジュール-3)を記述する。ファイルリスト704は、少なくとも四つのワード線及び少なくとも四つのビット線を有する小さなRAMを記述する。ファイルリスト705は、任意の数(例えば、N)のワード線及び任意の数(例えば、N)のビット線を有するN番目のモジュールを記述する。図5に詳細に記載されるように、ファイルリスト701、702、703、704、及び705が処理され、ラップされたPPAプロファイルを有する対応するネットリスト(例えば、MLネットリスト7217、722、723、724、及び725)が生成される。
図8は、RTL設計から合成可能なネットリストを生成して半導体デバイスの設計を支援するための方法を示す例示的なフローチャート800である。図8は、理解を容易にするために前述した構造を参照して本明細書で記載されており、この方法は他の多くの構造にも適用されることが理解される。半導体デバイスの少なくとも一部に対応するRTL設計情報(例えば、図1のRTL設計)が提供される(例えば、ステップ810)。半導体デバイスに対応するRTL設計の少なくとも一部に関連付けられた動作情報が生成される(例えば、ステップ820)。半導体デバイスのセットは、半導体デバイスに関連する一つ以上の技術(例えば、CPU-IP 1 402、GPU-IP1 404、ML-NPU-IP1 406)とPPA情報に基づいてコンパイルされる(例えば、ステップ830)。事前定義されたPPA条件を満たすレジスタコンパイラによって生成された半導体デバイスが識別される(例えば、ステップ840)。半導体デバイスの入力/出力ポートを整列させるための、コンポーネントレイアウト及び相互接続を定義する構造情報が生成される(例えば、ステップ850)。合成可能な半導体デバイスの設計のうちの一つを選択して、構造合成可能な入力/出力境界コンパチブルな半導体デバイスモジュールを有する設計ネットリストを生成することができるように、ユーザ定義パラメータに基づいて、一つ以上の合成可能な半導体デバイス構成のセットが作成される(例えば、CPUネットリスト521、522、523、524、及び525、MLネットリスト7217、722、723、724、及び725)(例えば、ステップ860)。先に述べたように、回路の合成には、レジスタ転送レベルコードを一般的なブールモデルに変換することが含まれる。そのブールモデルを論理レベルで最適化して、複数の論理演算をより簡単な演算に組み合わせることができる。例えば、コンポーネントは、動作時間と回路内のコンポーネント全体の数を削減するために、異なるコンポーネントに再配置、結合、及び/又は再結合することができる。さらに、最適化には、エリアを節約するために、シーケンシャルセルを取り巻くロジックをセル内に吸収できるコンポーネントのシーケンシャルマッピングが含まれ得る。設計コンパイラは、出力ポート接続のないロジックの削除、冗長コンポーネント(例えば、2つのシーケンシャルインバータ)の削除、及び/又は定数の伝搬などの様々な最適化動作を実行して、回路内のロジックコンポーネント全体を削減することもできる。
図9は、本明細書に記載の様々な態様を実施するためのサンプルコンピューティングデバイスアーキテクチャを示す例示的なブロック図900である。バス904は、ハードウェアの他の図示されたコンポーネントを相互接続する情報ハイウェイとして機能することができる。CPU(中央処理装置)とラベル付けされた処理システム908(例えば、所与のコンピュータ又は複数のコンピュータにおける一つ以上のコンピュータプロセッサ/データプロセッサ)は、プログラムを実行するために必要な計算及び論理演算を実行することができる。読み出し専用メモリ(ROM)912及びランダムアクセスメモリ(RAM)916などの非一時的なプロセッサ可読記憶媒体は、処理システム908と通信することができ、本明細書で指定された動作用の一つ以上のプログラミング命令を含むことができる。任意選択として、プログラム命令は、磁気ディスク、光ディスク、記録可能なメモリデバイス、フラッシュメモリ、又は他の物理的記憶媒体などの非一時的なコンピュータ可読記憶媒体に記憶することができる。
一例では、ディスクコントローラ948は、一つ以上の任意のディスクドライブをシステムバス904にインタフェースすることができる。これらのディスクドライブは、外付け又は内蔵のCD-ROM、CD-R、CD-RW又はDVD、あるいは952のようなソリッドステートドライブ、あるいは外付け又は内蔵のハードドライブ956であり得る。先に述べたように、これらの様々なディスクドライブ952、956及びディスクコントローラは任意のデバイスである。システムバス904は、コンピューティングシステムに物理的に接続されるか又は有線又は無線ネットワークを介して外部で利用可能な外部デバイスとの通信を可能にするために、少なくとも一つの通信ポート920をさらに含むことができる。場合によっては、通信ポート920は、ネットワークインタフェースを含むか又はそれからなる。
ユーザとの相互作用を提供するために、本明細書に記載の主題は、バス904から取得された情報をユーザに表示するための表示装置940(例えば、CRT(陰極線管)又はLCD(液晶ディスプレイ)モニタ)と、ユーザがコンピュータに入力を提供できるキーボード936及び/又はポインティングデバイス(例えば、マウス又はトラックボール)及び/又はタッチスクリーンなどの入力デバイス932とを含むコンピューティングデバイス上に実装することができる。他の種類の入力デバイス932は、ユーザとの相互作用を提供するためにも用いられる;例えば、ユーザに提供されるフィードバックは、任意の形式の感覚フィードバック(例えば、視覚フィードバック、マイクロフォンによる聴覚フィードバック、又は触覚フィードバック)であり得る;ユーザからの入力は、音響、音声、又は触覚入力を含む任意の形式で受信することができる。入力デバイス932及びキーボード936は、入力デバイスインタフェース928によってバス904に結合され、バス904を介して情報を伝達することができる。専用サーバなどの他のコンピューティングデバイスは、ディスプレイ940及びディスプレイインタフェース914、入力デバイス932、キーボード936、及び入力デバイスインタフェース928のうちの一つ以上を省略することができる。
さらに、本明細書に記載の方法及びシステムは、デバイス処理サブシステムによって実行可能なプログラム命令を含むプログラムコードによって、多くのタイプの異なる処理デバイスに実装され得る。ソフトウェアプログラム命令は、ソースコード、オブジェクトコード、マシンコード、又は処理システムに本明細書に記載の方法及び動作を実行させるように動作可能な他の任意の記憶データを含み得て、例えば、C、C++、JAVA、Perl、Python、Tclsなどの任意の適切な言語、又は他の任意の適切なプログラミング言語で提供され得る。しかしながら、本明細書に記載の方法及びシステムを実行するように構成されたファームウェア又は適切に設計されたハードウェアなどの他の実装も用いられる。
システム’及び方法’のデータ(例えば、関連付け、マッピング、データ入力、データ出力、中間データ結果、最終データの結果など)は、タイプの異なるストレージデバイス及びプログラミング構造(例えば、RAM、ROM、フラッシュメモリ、フラットファイル、データベース、プログラミングデータ構造、プログラミング変数、IF-THEN(又は同じタイプ)ステートメント構造など)などの一つ以上のタイプの異なるコンピュータ実装データストアに記憶及び実装され得る。データ構造は、データベース、プログラム、メモリ、又はコンピュータプログラムで使用するための他のコンピュータ可読媒体にデータを編成及び記憶する際に使用するためのフォーマットを記述することに留意されたい。
本明細書に記載のコンピュータコンポーネント、ソフトウェアモジュール、機能、データストア及びデータ構造は、それらの動作に必要なデータのフローを可能にするために、互いに直接又は間接的に接続され得る。モジュール又はプロセッサは、ソフトウェア動作を実行するコードのユニットを含むが、これに限定されず、例えば、コードのサブルーチンユニット、又はコードのソフトウェア機能ユニット、又は(オブジェクト指向パラダイムにおける)オブジェクト、又はアプレットとして、又はコンピュータスクリプト言語に、又は他のタイプのコンピュータコードとして実装できることにも留意されたい。ソフトウェアコンポーネント及び/又は機能は、目前の状況に応じて、単一のコンピュータに配置されてもよい又は複数のコンピュータにわたって分散されてもよい。
本明細書に記載されるような様々なプロセスの使用は、多くの利点を提供することができる。例えば、主題の使用は多くの利点を提供することができる。例えば、回路は設計を通じて自動的に最適化され、再設計の労力を最小限するか又はそれを必要としないため、主題を使用するとASIC開発スケジュールを短縮できる。本明細書に記載されるシミュレーションは、デバイスの製造と手動テストに関連付けられた時間遅延なしに、デバイスの検証も容易にする。
一実施形態では、半導体デバイスの少なくとも一部に対応するRTL設計情報が提供される。半導体デバイスに対応するRTL設計の少なくとも一部に関連付けられた動作情報が生成される。半導体デバイスに関連する一つ以上の技術及びPPA情報に基づいて半導体デバイスのセットがコンパイルされる。事前定義されたPPA条件を満たすレジスタコンパイラによって生成された半導体デバイスが識別される。半導体デバイスの入力/出力ポートを整列させるための構造情報が生成される。合成可能な半導体デバイスの設計のうちの一つを選択して、構造合成可能な入力/出力境界コンパチブルな半導体デバイスモジュールを有する設計ネットリストを生成することができるように、ユーザ定義パラメータに基づいて一つ以上の合成可能な半導体デバイス構成のセットが作成される。
他の実施形態では、半導体デバイスの設計を支援するためにRTL設計から合成可能なネットリストを生成するためのシステムは、構成トレーサー、レジスタコンパイラ、及び技術オプション構成を含む。構成トレーサーは、半導体デバイスに対応するRTL設計の少なくとも一部に関連付けられたサイズ情報を生成する。レジスタコンパイラは、半導体デバイスに関連するパワー、パフォーマンス、及びエリア(PPA)情報に基づいて、半導体デバイスのセットをコンパイルする。技術オプションコンフィギュレータは、合成可能な半導体デバイスの設計のうちの一つを選択して、サイズ情報とコンパイルされた半導体デバイスのセットに基づいて設計ネットリストを生成できるように、ユーザ定義パラメータに基づいて一つ以上の合成可能な半導体デバイス構成のセットを作成する。
さらに別の実施形態では、半導体デバイスの設計を支援するためにRTL設計から合成可能なネットリストを生成するためのシステムは、自動RTL構成トレーサー、メモリレジスタコンパイラ、PPA依存プロファイラ、メモリラッパー、及び技術オプションコンフィギュレータを含む。自動RTL構成トレーサーは、半導体デバイスに関連付けられた一つ以上のメモリデバイスに対応するRTL設計の少なくとも一部に関連付けられた動作情報を生成する。メモリレジスタコンパイラは、メモリデバイスに関連する一つ以上の技術及びPPA情報に基づいて、メモリデバイスのセットをコンパイルする。PPA依存プロファイラは、事前定義されたパワー、パフォーマンス、及びエリアの条件を満たすメモリレジスタコンパイラによって生成されたメモリデバイスを識別する。メモリラッパーは、メモリデバイスの入力/出力ポートを整列させるための構造情報を生成する。技術オプションコンフィギュレータは、合成可能なメモリデバイスの設計のうちの一つを選択して、構造合成可能な入力/出力境界コンパチブルなメモリデバイスモジュールを有する設計ネットリストを生成できるように、ユーザ定義パラメータに基づいて一つ以上の合成可能なメモリデバイス構成のセットを作成する。
前述は、当業者が本開示の態様をよりよく理解できるように、いくつかの実施形態の特徴を概説している。当業者であれば、本明細書に導入された実施形態の同じ目的を実行し、及び/又は同じ利点を達成するための他のプロセス及び構造を設計又は修正するための基礎として本開示を容易に使用できることを理解できる。当業者であれば、またそのような同等の構造が本開示の精神及び範囲から逸脱せず、本開示の精神及び範囲から逸脱することなく本明細書において様々な変更、置換、及び改変を行うことができることを理解できる。
前述は、当業者が本開示の態様をよりよく理解できるように、いくつかの実施形態の特徴を概説する。当業者であれば、本明細書に導入された実施形態の同じ目的を実行し、及び/又は同じ利点を達成するための他のプロセス及び構造を設計又は修正するための基礎として本開示を容易に使用できることを理解できる。当業者であれば、またそのような同等の構造が本開示の精神及び範囲から逸脱せず、本開示の精神及び範囲から逸脱することなく本明細書において様々な変更、置換、及び改変を行うことができることを理解できる。
RTL設計の一部には合成に十分な詳細が含まれている場合があるが、他の部分には含まれていない場合がある。いくつかの例では、RTL設計がいくつかの異なる合成可能なハードウェア実装にマッピングされる場合があり、他の例では、RTL設計に合成に十分な情報が含まれていない場合がある。RTL設計から合成できないことは、メモリ(例えば、RAMマクロ)ラッパー設計の場合に特に当てはまる。その結果、RTL設計を(例えば、エコシステムパートナー、ベンダー、顧客、オープンソースから)合成可能なネットリストへ増分的かつ反復的なプロセスで手動で変換するために、操作の取り組みを利用する必要があることがよくある。
場合によっては、この増分的かつ反復的なプロセスに時間がかかる場合がある。さらに、このプロセスが手動で行われるため、機械学習及び人工知能などのメモリアクセスを主に取り扱うアプリケーションを含むパフォーマンス、パワー、及びエリア(PPA)に対して結果が最適化されない場合がある。
半導体デバイス(例えば、半導体特定用途向け集積回路(ASIC)システムオンチップ(SoC)集積チップ)の設計にはいくつかのステップが含まれる。半導体デバイスのデジタル部分に関連付けられたロジックは、レジスタ転送レベル(RTL)設計技術を用いて定義され得る。RTL設計は、ハードウェア記述言語(HDL)などのいくつかのツールのうちの一つ以上を用いて実施され得る。いくつかの実施形態では、RTL設計は、IPコア又はIP設計と呼ばれる場合がある。RTL設計は、合成可能なネットリストに変換され得て、この合成可能なネットリストは、RTL設計によって定義された機能を実行できる半導体デバイスを製造するために用いられるハードウェア回路への詳細な説明である。RTL設計の一部には合成に十分な詳細が含まれている場合があるが、他の部分には含まれていない場合がある。いくつかの例では、RTL設計がいくつかの異なる合成可能なハードウェア実装にマッピングされる場合があり、他の例では、RTL設計に合成に十分な情報が含まれていない場合がある。RTL設計から合成できないことは、メモリ(例えば、RAMマクロ)ラッパー設計の場合に特に当てはまる。RTL設計では、メモリは論理的に定義され得るが、メモリにアクセスするために用いられる物理プロトコルは完全には定義されていない場合がある。特定のプロトコルは、メモリの種類によって異なることができる。物理メモリのタイプに関して柔軟性を維持するために、ラッパー(例えば、柔軟な入力/出力を有するラッパー)を用いることができる。メモリ、より一般的には、半導体デバイス(例えば、半導体ASIC SoC集積チップ)のコンテキストでは、ラッパーは、メモリの論理ポート(例えば、論理アクセス)と物理メモリポート(例えば、電力制御及び/又はテストポート)との間のインタフェースを定義する。ラッパーは物理メモリ自体から分離されるため、メモリタイプ(例えば、物理的特性)の定義をチップ設計プロセスの完全なインタフェースにすることができる。しかしながら、ラッパーの柔軟性を有しても、増分的かつ反復的なプロセスではRTLを合成可能なネットリストに手動で変換する必要があることがよくある。このタスクは通常、1人以上の個人によって実行され、時間がかかる場合がある。
図1は、本開示の様々な実施形態に係るRAM構成とレジスタファイルからデータを様々なテクノロジーサイズ(例えば、5nm、7nm、10nm、12nm、16nm、28nmなど)にわたって分析し抽出するための例示的なシステム100のブロック図である。システム100は、様々な回路の論理動作を定義するRAM動作モデルのレジスタ転送レベル(RTL)設計を受信するデータ処理コンピュータシステムであり得る。RTLは、ハードウェアレジスタ間のデジタル信号の流れ、及びそれらの信号に対して実行される論理演算に関して同期デジタル回路をモデル化する設計抽象化である。いくつかの実施形態では、RTL設計は、単一のソース(例えば、単一の設計エンティティ)から取得されてもよい又は複数のソース(例えば、パートナーデザイナー)から取得されてもよい。複数のソースからRTL設計を取得する場合、異なるソースからのRTL設計のフォーマットが異なることができる。最初に、RAMマクロモデルの動作に関連する情報を含むRTL設計は、自動RTL RAMマクロ構成トレーサーによって自動的に処理されてRAMマクロリスト(例えば、様々なRAMマクロデバイスに関する動作情報及び/又はサイズ情報)を自動的に生成する。システム100は、トレーサー110と図2-3により詳細に記載されるような複数のモジュールとを用いて新たな回路設計用の最適化された設計ネットリストを生成する。トレーサー110は、一組のコンピュータプログラムを含む。これらのコンピュータプログラムは、RTL設計をスキャンするために適用することができる。ワード線及び/又はビット線サイズなどの対応するメモリサイズはスキャンから抽出することができる。トレーサー110は、抽出されたメモリサイズ情報を用いて出力リストを生成する。そのメモリサイズ情報は、最適化された設計ネットリストを生成するためにレジスタコンパイラに提供することができる。ネットリストは、電子回路の接続性への説明である。ネットリストは、様々な電気部品とそれらの部品間のノード接続を定義するリストである。新たな回路設計は、システム100に入力されたRTL設計に基づく、最適化された設計であり得る。システム100によって出力されたネットリストは、最適化されたパワー、パフォーマンス、及びエリア(PPA)特徴をさらに含む。回路設計のパワー、パフォーマンス、及びエリアの各々が設計の不可欠な要件であるため、PPA分析は設計を最適化するために用いられる。
図2は、本開示の様々な実施形態に係るRAM構成とレジスタファイルからデータを様々なテクノロジーサイズ(例えば、5nm、7nm、10nm、12nm、16nm、28nmなど)にわたって分析し抽出するための他の例示的なシステム200のブロック図である。システム200は、変換モジュール210、フロアプランマッピングモジュール220、シミュレーションモジュール230、及び分析モジュール240を含む。変換モジュール210は、図1に記載されるように、レジスタ転送レベルコード(RTL)を受信する。レジスタ転送レベルコードは、ハードウェア記述言語内で用いられるソフトウェアコードである。物理回路は、ハードウェアレジスタ間のデジタル信号フローと、物理回路のコンポーネントによってデジタル信号に対して実行される論理演算(例えば、AND、NAND、OR、NOR)とを記述するレジスタ転送レベルコードを用いて記述され得る。変換モジュール210は、その回路論理動作のレジスタ転送レベルコード記述にアクセスする。そして、変換モジュールは、複数のタイプのコンポーネント(例えば、CPU、GPU、ML-NPU)及びフィーチャサイズ技術(例えば、5nm、7nm、10nm、12nm、16nm、28nmなど)のためにレジスタ転送レベルコードを構造的に定義された回路設計(例えば、ANDゲート、NAND回路、ORゲート、NOR回路)のセットに変換する。フロアプランマッピングモジュール220は、構造的に定義された回路設計のセットにアクセスして構造的に定義された回路設計のセットをフロアプランのセットに変換する。フロアプランは、回路設計内の電気部品と、特定領域(例えば、フロア)でのそれらの電気部品の物理的な配置とを定義する。シミュレーションモジュール230は、フロアプランのセットにアクセスし、各フロアプランについてシミュレートできる回路を作成する。分析モジュール240は、物理的にシミュレートされた回路にアクセスし、物理的にシミュレートされた回路の動作条件の範囲にわたってスイープして、物理的にシミュレートされた回路のパワー、パフォーマンス、及びエリア特性の一連の分析を含む最適化された設計ネットリストを生成する。分析モジュール240はまた、複数の物理的にシミュレートされた回路に対して並行して(例えば、同時に)動作条件(例えば、様々な入力電圧、高/低温度、高/低湿度などの様々な周囲環境)の範囲にわたって同時にスイープする。
図3は、本開示の様々な実施形態に係るRAM構成とレジスタファイルからデータを様々なテクノロジーサイズ(例えば、5nm、7nm、10nm、12nm、16nm、28nmなど)にわたって分析し抽出するための他の例示的なシステム300のブロック図である。図2のシステム200と同様に、システム300は、変換モジュール210、フロアプランマッピングモジュール220、シミュレーションモジュール230、及び分析モジュール240を含むことができる。さらに、システムは、ソーティングモジュール310、表示モジュール320、回路設計モジュール330、合成モジュール340、及びネットリスト作成モジュール350のうちの一つ以上を含むことができる。
ソーティングモジュール310は、分析にアクセスし、回路のパワー消費、パフォーマンス、つまり、回路が動作する周波数、及び回路が占めるエリアを定義するパワー、パフォーマンス、及びエリア特性によって、物理的にシミュレートされた回路のセットのソーティングされたリストを生成する。これらの特性は、パワー、パフォーマンス、及びエリアの値に基づいてソーティングされ得る。表示モジュール320は、物理的にシミュレートされた回路のソーティングされたリストにアクセスし、物理的にシミュレートされた回路のソーティングされたリストをグラフィカルユーザーインタフェースに表示する。回路設計モジュール330は、構造的に定義された回路設計のセットにアクセスし、構造的に定義された回路設計をファイルリストのセットに変換して、パワー、パフォーマンス、及びエリア特性の複数のプロファイル構成を合成する。ファイルリストは、回路のコンポーネントと、コンポーネント間の相互接続点とを定義する。合成モジュール340は、ファイルリストのセットにアクセスし、設計コンパイラを用いてファイルリストのセットを論理ゲート構成のセットに合成する。回路の合成には、レジスタ転送レベルコードを一般的なブールモデルに変換することが含まれる。そのブールモデルを論理レベルで最適化して、複数の論理演算をより簡単な演算に組み合わせることができる。例えば、コンポーネントは、動作時間と回路内のコンポーネント全体の数を削減するために、異なるコンポーネントに再配置、結合、及び/又は再結合することができる。さらに、最適化には、エリアを節約するために、シーケンシャルセルを取り巻くロジックをセル内に吸収できるコンポーネントのシーケンシャルマッピングが含まれ得る。設計コンパイラは、出力ポート接続のないロジックの削除、冗長コンポーネント(例えば、2つのシーケンシャルインバータ)の削除、及び/又は定数の伝搬などの様々な最適化動作を実行して、回路内のロジックコンポーネント全体を削減することもできる。ネットリスト作成モジュール350は、論理ゲート構成のセットにアクセスし、論理ゲート構成のセットを、シミュレーションモジュール130によって用いられるネットリストのセットに変換する。論理ゲート構成には、コンポーネントの相互接続を定義する論理回路図が含まれる。これらの論理ゲート構成は、構成内のノード、構成内のコンポーネント、及びそれらの相互接続のテキスト表現に変換することができる。このテキスト表現はネットリストである。
図4は、本開示の様々な実施形態に係る合成されたネットリストの生成を示す例示的なブロック図400である。ファイルリスト(例えば、回路論理動作を記述するRTL設計-回路の論理動作を定義するソフトウェアコード)は、中央処理装置(CPU)(例えば、CPU-IP1 402)、グラフィック処理装置(GPU)(例えば、GPU-IP1)、機械学習ネットワークプロセッサ(ML-NPU)(例えば、ML-NPU-IP1)などの任意の数の技術に関連付けることができる。ファイルリストの各セットは、図6-7により詳細に記載されるように、異なるモジュール設計に関連付けられた一つ以上のファイルリストを含むことができる。メモリサイズ抽出器410(例えば、合成モジュール340)は、ネットリストの所与のセットを処理して、評価されている所与のメモリセルのサイズを定義する各セットに対応する論理ゲート構成を生成する。例えば、論理ゲート構成422(例えば、config.CPU)は、CPU-IP1ファイルリスト402に対応する。メモリサイズ抽出器410はトレーサー412をさらに含む。トレーサー412は、半導体デバイスに対応するRTL設計の少なくとも一部に関連付けられた動作情報を生成する。例えば、そのような動作情報は、デバイスサイジング(例えば、ワード線の数及びビット線の数)を含むことができる。同様に、論理ゲート構成422(例えば、config.GPU)は、GPU-IP1ファイルリスト404に対応する。論理ゲート構成426(例えば、config.ML-NPU)は、ML-NPU-IP1ファイルリスト406に対応する。論理ゲート構成は、例えば、シングルポート(SP)スタティックランダムアクセスメモリ(SRAM)431、2ポートSRAM 432、デュアルポート(DP)SRAM 433、1P RF 432、2P RF 434などのレジスタコンパイラ及び任意の他のタイプのレジスタコンパイラ436を用いて以前に詳述されるようにコンパイルされる。そして、これらのコンパイルされた構成は、ラッパー440によって、インポートされたファイルリスト(例えば、ファイルリスト402、ファイルリスト404、ファイルリスト406)に対応するネットリストに変換される。ラッパーは、ラップされているコードのコード複雑性が別のインタフェースソフトウェアコンポーネントに見えないように、ラップされているコードをカプセル化するように定義されたソフトウェアである。その代りに、ラッパー自体には、二つのソフトウェアコンポーネント間の相互作用を容易にするために、他のソフトウェアコンポーネントとのインタフェースを作成するより簡単なコードが含まれる。ラッパーは、例えば、二つのソフトウェアコンポーネントが、互いに互換性のない異なるタイプのソフトウェアコードを有する場合に用いられる。例えば、ネットリストCPU-IP1 452は、ファイルリストCPU-IP1 402に対応する。ネットリストGPU-IP1 454は、ファイルリストGPU-IP1 454に対応する。ネットリストMP-NPU-IP1 456は、ML-NPU-IP1 406に対応する。これらのネットリストは、コンポーネントの自動配置及び/又は信号のルーティングを用いて、最適化された回路設計を生成するために利用される(例えば、ステップ460)。最適化されたネットリストは、将来の回路レイアウトに利用できるようにコンパイラに返送されて記憶される。
図5は、本開示の様々な実施形態に係る合成されたCPUネットリストの生成を示す例示的なブロック図500である。この例では、ファイルリストのセットは、N個のモジュール(例えば、ファイルリスト501、ファイルリスト502、ファイルリスト503、ファイルリスト504、ファイルリスト505など)に対応する。各ファイルリストは、その特別なモジュールに関連付けられた特定の動作ロジックを含む。ファイルリストのセットは、レジスタコンパイラ又はフリップフロップコンパイラ520を用いて、テクノロジーサイズ(例えば、5nm、7nm、16nmなど)に基づくグルーピングに共にコンパイルされる。コンパイリングとは、コンピュータプログラムが、あるプログラム言語で書いたコンピュータコードを別の言語に翻訳するプロセスである。各コンパイルは、すべての物理メモリ構成と、インポートされたファイルリスト501、502、503、504、及び505に関連付けられたPPA構成とを含む。換言すれば、様々なテクノロジーサイズ(例えば、5nm、7nm、16nmなど)にわたる一つのワード線及び一つのビット線を有するすべてのモジュール(例えば、ファイルリスト501のモジュール-1)は共にコンパイルされる。同様に、様々なテクノロジーサイズ(例えば、5nm、7nm、16nmなど)にわたる二つのワード線及び二つのビット線を有するすべてのモジュール(例えば、ファイルリスト502のモジュール-2)は共にコンパイルされる。これは、様々なテクノロジーサイズ(例えば、5nm、7nm、16nmなど)全体にわたるすべてのモジュールに対して継続される。PPA-プロファイラは、記憶されたコンパイル(例えば、コンパイル511、512、513、及び514)を、各テクノロジーサイズ(例えば、5nm、7nm、16nmなど)の論理ゲート構成に評価する。PPA分析は、図6により詳細に記載される。レジスタコンパイラ520の設定は、レジスタフリップフロップストレージ515に記憶することができる。レジスタフリップフロップストレージ515とともにコンパイル511、512、513、及び514は、ラップ及びコンパイルされて、様々なモジュールのパワー、パフォーマンス、及びエリア特性を定義するラップされたPPAプロファイルを有する対応するネットリスト(例えば、CPUネットリスト521、522、523、524、及び525)を生成することができる。ラッパーは、ラップされているコードのコード複雑性が別のインタフェースソフトウェアコンポーネントに見えないように、ラップされているコードをカプセル化するように定義されたソフトウェアである。その代りに、ラッパー自体には、二つのソフトウェアコンポーネント間の相互作用を容易にするために、他のソフトウェアコンポーネントとのインタフェースを作成するより簡単なコードが含まれる。ラッパーは、例えば、二つのソフトウェアコンポーネントが、互いに互換性のない異なるタイプのソフトウェアコードを有する場合に用いられる。図5に示される実施形態の例では、PPAプロファイルは、異なるモジュールサイズ(例えば、一つのワード線/ビット線、二つのワード線/ビット線など)に関連する特定のパワー、パフォーマンス、及びエリア要件を定義する。いくつかの実施形態では、プロジェクトユーザ定義コンフィギュレータは、最適化される回路の特定のサイジング定義を設定することができる(例えば、ユーザ定義530)。換言すれば、ユーザはユーザ入力を通じて回路の特定の寸法を設定することができる。
図6は、PPA分析を示す例示的な図600である。PPAプロファイラを用いて、様々なファイルリストが評価されて、パフォーマンスの向上、低パワー消費の維持、及びデバイスエリアの最小化が同時に行われる。これらの計算は、パワー(例えば、sp、Ip)、エリア(例えば、udh)、及びパフォーマンス(例えば、hs)に関連付けられた定数を三角測量することによって実行される。これらの定数は、電子デバイスによって消費されるパワー、電子デバイスコンポーネントが占めるエリア、及び電子デバイスを操作するために必要なクロック周波数(例えば、パフォーマンス)を定義する。三角測量は、各定数(例えば、図600に示されるポイント)間の距離を測定するプロセスである。最終的な目標は、回路パフォーマンスhsを犠牲にすることなく、パワー定数sp、Ip、及びエリア定数udhを可能な限り低い値にすることである。これらの三つのメトリック(例えば、パワー、エリア、パフォーマンス)はすべて相互に依存しているため、これらの値の一つを変更すると他の二つに影響する。
図7は、本開示の様々な実施形態に係る合成されたMLネットリストの生成を示す例示的なブロック図700である。この例では、ファイルリストのセットは、N個のモジュール(例えば、ファイルリスト701、ファイルリスト702、ファイルリスト703、ファイルリスト704、ファイルリスト705など)に対応する。各ファイルリストは、その特別なモジュールに関連付けられた特定の動作ロジックを含む。ファイルリスト701は、一つのワード線及び一つのビット線を有する第一モジュール(例えば、モジュール-1)を記述する。ファイルリスト702は、二つのワード線及び二つのビット線を有する第二モジュール(例えば、モジュール-2)を記述する。ファイルリスト703は、三つのワード線及び三つのビット線を有する第三モジュール(例えば、モジュール-3)を記述する。ファイルリスト704は、少なくとも四つのワード線及び少なくとも四つのビット線を有する小さなRAMを記述する。ファイルリスト705は、任意の数(例えば、N)のワード線及び任意の数(例えば、N)のビット線を有するN番目のモジュールを記述する。図5に詳細に記載されるように、ファイルリスト701、702、703、704、及び705が処理され、ラップされたPPAプロファイルを有する対応するネットリスト(例えば、MLネットリスト7217、722、723、724、及び725)が生成される。
図8は、RTL設計から合成可能なネットリストを生成して半導体デバイスの設計を支援するための方法を示す例示的なフローチャート800である。図8は、理解を容易にするために前述した構造を参照して本明細書で記載されており、この方法は他の多くの構造にも適用されることが理解される。半導体デバイスの少なくとも一部に対応するRTL設計情報(例えば、図1のRTL設計)が提供される(例えば、ステップ810)。半導体デバイスに対応するRTL設計の少なくとも一部に関連付けられた動作情報が生成される(例えば、ステップ820)。半導体デバイスのセットは、半導体デバイスに関連する一つ以上の技術(例えば、CPU-IP 1 402、GPU-IP1 404、ML-NPU-IP1 406)とPPA情報に基づいてコンパイルされる(例えば、ステップ830)。事前定義されたPPA条件を満たすレジスタコンパイラによって生成された半導体デバイスが識別される(例えば、ステップ840)。半導体デバイスの入力/出力ポートを整列させるための、コンポーネントレイアウト及び相互接続を定義する構造情報が生成される(例えば、ステップ850)。合成可能な半導体デバイスの設計のうちの一つを選択して、構造合成可能な入力/出力境界コンパチブルな半導体デバイスモジュールを有する設計ネットリストを生成することができるように、ユーザ定義パラメータに基づいて、一つ以上の合成可能な半導体デバイス構成のセットが作成される(例えば、CPUネットリスト521、522、523、524、及び525、MLネットリスト7217、722、723、724、及び725)(例えば、ステップ860)。先に述べたように、回路の合成には、レジスタ転送レベルコードを一般的なブールモデルに変換することが含まれる。そのブールモデルを論理レベルで最適化して、複数の論理演算をより簡単な演算に組み合わせることができる。例えば、コンポーネントは、動作時間と回路内のコンポーネント全体の数を削減するために、異なるコンポーネントに再配置、結合、及び/又は再結合することができる。さらに、最適化には、エリアを節約するために、シーケンシャルセルを取り巻くロジックをセル内に吸収できるコンポーネントのシーケンシャルマッピングが含まれ得る。設計コンパイラは、出力ポート接続のないロジックの削除、冗長コンポーネント(例えば、2つのシーケンシャルインバータ)の削除、及び/又は定数の伝搬などの様々な最適化動作を実行して、回路内のロジックコンポーネント全体を削減することもできる。
図9は、本明細書に記載の様々な態様を実施するためのサンプルコンピューティングデバイスアーキテクチャを示す例示的なブロック図900である。バス904は、ハードウェアの他の図示されたコンポーネントを相互接続する情報ハイウェイとして機能することができる。CPU(中央処理装置)とラベル付けされた処理システム908(例えば、所与のコンピュータ又は複数のコンピュータにおける一つ以上のコンピュータプロセッサ/データプロセッサ)は、プログラムを実行するために必要な計算及び論理演算を実行することができる。読み出し専用メモリ(ROM)912及びランダムアクセスメモリ(RAM)916などの非一時的なプロセッサ可読記憶媒体は、処理システム908と通信することができ、本明細書で指定された動作用の一つ以上のプログラミング命令を含むことができる。任意選択として、プログラム命令は、磁気ディスク、光ディスク、記録可能なメモリデバイス、フラッシュメモリ、又は他の物理的記憶媒体などの非一時的なコンピュータ可読記憶媒体に記憶することができる。
一例では、ディスクコントローラ948は、一つ以上の任意のディスクドライブをシステムバス904にインタフェースすることができる。これらのディスクドライブは、外付け又は内蔵のCD-ROM、CD-R、CD-RW又はDVD、あるいは952のようなソリッドステートドライブ、あるいは外付け又は内蔵のハードドライブ956であり得る。先に述べたように、これらの様々なディスクドライブ952、956及びディスクコントローラは任意のデバイスである。システムバス904は、コンピューティングシステムに物理的に接続されるか又は有線又は無線ネットワークを介して外部で利用可能な外部デバイスとの通信を可能にするために、少なくとも一つの通信ポート920をさらに含むことができる。場合によっては、通信ポート920は、ネットワークインタフェースを含むか又はそれからなる。
ユーザとの相互作用を提供するために、本明細書に記載の主題は、バス904から取得された情報をユーザに表示するための表示装置940(例えば、CRT(陰極線管)又はLCD(液晶ディスプレイ)モニタ)と、ユーザがコンピュータに入力を提供できるキーボード936及び/又はポインティングデバイス(例えば、マウス又はトラックボール)及び/又はタッチスクリーンなどの入力デバイス932とを含むコンピューティングデバイス上に実装することができる。他の種類の入力デバイス932は、ユーザとの相互作用を提供するためにも用いられる;例えば、ユーザに提供されるフィードバックは、任意の形式の感覚フィードバック(例えば、視覚フィードバック、マイクロフォンによる聴覚フィードバック、又は触覚フィードバック)であり得る;ユーザからの入力は、音響、音声、又は触覚入力を含む任意の形式で受信することができる。入力デバイス932及びキーボード936は、入力デバイスインタフェース928によってバス904に結合され、バス904を介して情報を伝達することができる。専用サーバなどの他のコンピューティングデバイスは、ディスプレイ940及びディスプレイインタフェース914、入力デバイス932、キーボード936、及び入力デバイスインタフェース928のうちの一つ以上を省略することができる。
さらに、本明細書に記載の方法及びシステムは、デバイス処理サブシステムによって実行可能なプログラム命令を含むプログラムコードによって、多くのタイプの異なる処理デバイスに実装され得る。ソフトウェアプログラム命令は、ソースコード、オブジェクトコード、マシンコード、又は処理システムに本明細書に記載の方法及び動作を実行させるように動作可能な他の任意の記憶データを含み得て、例えば、C、C++、JAVA、Perl、Python、Tclsなどの任意の適切な言語、又は他の任意の適切なプログラミング言語で提供され得る。しかしながら、本明細書に記載の方法及びシステムを実行するように構成されたファームウェア又は適切に設計されたハードウェアなどの他の実装も用いられる。
システム’及び方法’のデータ(例えば、関連付け、マッピング、データ入力、データ出力、中間データ結果、最終データの結果など)は、タイプの異なるストレージデバイス及びプログラミング構造(例えば、RAM、ROM、フラッシュメモリ、フラットファイル、データベース、プログラミングデータ構造、プログラミング変数、IF-THEN(又は同じタイプ)ステートメント構造など)などの一つ以上のタイプの異なるコンピュータ実装データストアに記憶及び実装され得る。データ構造は、データベース、プログラム、メモリ、又はコンピュータプログラムで使用するための他のコンピュータ可読媒体にデータを編成及び記憶する際に使用するためのフォーマットを記述することに留意されたい。
本明細書に記載のコンピュータコンポーネント、ソフトウェアモジュール、機能、データストア及びデータ構造は、それらの動作に必要なデータのフローを可能にするために、互いに直接又は間接的に接続され得る。モジュール又はプロセッサは、ソフトウェア動作を実行するコードのユニットを含むが、これに限定されず、例えば、コードのサブルーチンユニット、又はコードのソフトウェア機能ユニット、又は(オブジェクト指向パラダイムにおける)オブジェクト、又はアプレットとして、又はコンピュータスクリプト言語に、又は他のタイプのコンピュータコードとして実装できることにも留意されたい。ソフトウェアコンポーネント及び/又は機能は、目前の状況に応じて、単一のコンピュータに配置されてもよい又は複数のコンピュータにわたって分散されてもよい。
本明細書に記載されるような様々なプロセスの使用は、多くの利点を提供することができる。例えば、主題の使用は多くの利点を提供することができる。例えば、回路は設計を通じて自動的に最適化され、再設計の労力を最小限するか又はそれを必要としないため、主題を使用するとASIC開発スケジュールを短縮できる。本明細書に記載されるシミュレーションは、デバイスの製造と手動テストに関連付けられた時間遅延なしに、デバイスの検証も容易にする。
一実施形態では、半導体デバイスの少なくとも一部に対応するRTL設計情報が提供される。半導体デバイスに対応するRTL設計の少なくとも一部に関連付けられた動作情報が生成される。半導体デバイスに関連する一つ以上の技術及びPPA情報に基づいて半導体デバイスのセットがコンパイルされる。事前定義されたPPA条件を満たすレジスタコンパイラによって生成された半導体デバイスが識別される。半導体デバイスの入力/出力ポートを整列させるための構造情報が生成される。合成可能な半導体デバイスの設計のうちの一つを選択して、構造合成可能な入力/出力境界コンパチブルな半導体デバイスモジュールを有する設計ネットリストを生成することができるように、ユーザ定義パラメータに基づいて一つ以上の合成可能な半導体デバイス構成のセットが作成される。
他の実施形態では、半導体デバイスの設計を支援するためにRTL設計から合成可能なネットリストを生成するためのシステムは、構成トレーサー、レジスタコンパイラ、及び技術オプション構成を含む。構成トレーサーは、半導体デバイスに対応するRTL設計の少なくとも一部に関連付けられたサイズ情報を生成する。レジスタコンパイラは、半導体デバイスに関連するパワー、パフォーマンス、及びエリア(PPA)情報に基づいて、半導体デバイスのセットをコンパイルする。技術オプションコンフィギュレータは、合成可能な半導体デバイスの設計のうちの一つを選択して、サイズ情報とコンパイルされた半導体デバイスのセットに基づいて設計ネットリストを生成できるように、ユーザ定義パラメータに基づいて一つ以上の合成可能な半導体デバイス構成のセットを作成する。
さらに別の実施形態では、半導体デバイスの設計を支援するためにRTL設計から合成可能なネットリストを生成するためのシステムは、自動RTL構成トレーサー、メモリレジスタコンパイラ、PPA依存プロファイラ、メモリラッパー、及び技術オプションコンフィギュレータを含む。自動RTL構成トレーサーは、半導体デバイスに関連付けられた一つ以上のメモリデバイスに対応するRTL設計の少なくとも一部に関連付けられた動作情報を生成する。メモリレジスタコンパイラは、メモリデバイスに関連する一つ以上の技術及びPPA情報に基づいて、メモリデバイスのセットをコンパイルする。PPA依存プロファイラは、事前定義されたパワー、パフォーマンス、及びエリアの条件を満たすメモリレジスタコンパイラによって生成されたメモリデバイスを識別する。メモリラッパーは、メモリデバイスの入力/出力ポートを整列させるための構造情報を生成する。技術オプションコンフィギュレータは、合成可能なメモリデバイスの設計のうちの一つを選択して、構造合成可能な入力/出力境界コンパチブルなメモリデバイスモジュールを有する設計ネットリストを生成できるように、ユーザ定義パラメータに基づいて一つ以上の合成可能なメモリデバイス構成のセットを作成する。
前述は、当業者が本開示の態様をよりよく理解できるように、いくつかの実施形態の特徴を概説している。当業者であれば、本明細書に導入された実施形態の同じ目的を実行し、及び/又は同じ利点を達成するための他のプロセス及び構造を設計又は修正するための基礎として本開示を容易に使用できることを理解できる。当業者であれば、またそのような同等の構造が本開示の精神及び範囲から逸脱せず、本開示の精神及び範囲から逸脱することなく本明細書において様々な変更、置換、及び改変を行うことができることを理解できる。
前述は、当業者が本開示の態様をよりよく理解できるように、いくつかの実施形態の特徴を概説する。当業者であれば、本明細書に導入された実施形態の同じ目的を実行し、及び/又は同じ利点を達成するための他のプロセス及び構造を設計又は修正するための基礎として本開示を容易に使用できることを理解できる。当業者であれば、またそのような同等の構造が本開示の精神及び範囲から逸脱せず、本開示の精神及び範囲から逸脱することなく本明細書において様々な変更、置換、及び改変を行うことができることを理解できる。
Claims (20)
- レジスタ転送レベル(RTL)設計から合成可能なネットリストを生成して半導体デバイスの設計を支援するための方法であって、
前記半導体デバイスの少なくとも一部に対応するRTL設計情報を提供することと、
前記半導体デバイスに対応するRTL設計の少なくとも一部に関連付けられた動作情報を生成することと、
前記半導体デバイスに関連する一つ以上の技術及びパワー、パフォーマンス、及びエリア(PPA)情報に基づいて半導体デバイスのセットをパイルすることと、
事前定義されたPPA条件を満たすレジスタコンパイラによって生成された半導体デバイスを識別することと、
前記半導体デバイスの入力/出力ポートを整列させるための構造情報を生成することと、
合成可能な半導体デバイスの設計のうちの一つを選択して、構造合成可能な入力/出力境界コンパチブルな半導体デバイスモジュールを有する設計ネットリストを生成することができるように、ユーザ定義パラメータに基づいて一つ以上の合成可能な半導体デバイス構成のセットを作成することとを含む、方法。 - 合成用の前記合成可能な半導体デバイスの設計のうちの一つを選択することをさらに含む、請求項1に記載の方法。
- 前記RTL設計が複数のソースから取得される、請求項1に記載の方法。
- 前記半導体デバイスが少なくとも一つのメモリデバイスであり、自動RTL構成トレーサーが前記メモリデバイス用のサイズ情報をさらに生成する、請求項1に記載の方法。
- メモリは、シングルポート(SP SRAM)、2ポート(2P)SRAM、デュアルポート(DP)SRAM、シングルポート(1P)レジスタファイル、及び/又はデュアルポート(2P)レジスタファイルのうちの少なくとも一つを含む群から選択されるランダムアクセスメモリ(RAM MACRO)である、請求項4に記載の方法。
- 前記半導体デバイスのセットをコンパイルする前記ステップは、前記メモリのサイズに関する情報に基づいてコンパイルすることをさらに含む、請求項4に記載の方法。
- 前記一つ以上の技術は、3um、1.5um、1.2um、1.0um、0.8um、0.6um、0.5um、0.35um、0.25um、0.18um、0.13um、90nm、65nm、40nm、28nm、22nm、20nm、16nm、12nm、10nm、7nm、6nm、5nm、3nmの製造のうちの一つ以上の任意の組み合わせに対応する製造技術を含む、請求項1に記載の方法。
- 前記半導体デバイスは、中央処理装置(CPU)、グラフィック処理装置(GPU)、デジタル信号処理装置(DSP)、及び/又はニューラル処理装置(NPU)のうちの少なくとも一つの少なくとも一部に関連する、請求項1に記載の方法。
- 前記コンパイルするステップは、RAM高速コンパイラ、RAM高密度コンパイラ、及び/又はRAM超高密度コンパイラのうちの少なくとも一つを用いることを含む、請求項1に記載の方法。
- 前記コンパイルするステップは、物理メモリ構成及び/又はパフォーマンス、パワー、及びエリア情報のデータベースを含む情報の一つ以上のデータベースを用いることを含む、請求項1に記載の方法。
- レジスタ転送レベル(RTL)設計から合成可能なネットリストを生成して半導体デバイスの設計を支援するためのシステムであって、
前記半導体デバイスに対応するRTL設計の少なくとも一部に関連付けられたサイズ情報を生成する構成トレーサーと、
前記半導体デバイスに関連するパワー、パフォーマンス、及びエリア(PPA)情報に基づいて、半導体デバイスのセットをコンパイルするレジスタコンパイラと、
合成可能な半導体デバイスの設計のうちの一つを選択して、前記サイズ情報と前記コンパイルされた半導体デバイスのセットに基づいて設計ネットリストを生成できるように、ユーザ定義パラメータに基づいて一つ以上の合成可能な半導体デバイス構成のセットを作成する技術オプションコンフィギュレータと、を含む、システム。 - 前記RTL設計が複数のソースから取得される、請求項11に記載のシステム。
- 前記半導体デバイスが少なくとも一つのメモリデバイスであり、構成トレーサーが前記メモリデバイス用の動作情報をさらに生成する、請求項11に記載のシステム。
- メモリは、シングルポート(SP SRAM)、2ポート(2P)SRAM、デュアルポート(DP)SRAM、シングルポート(1P)レジスタファイル、及び/又はデュアルポート(2P)レジスタファイルのうちの少なくとも一つを含む群から選択されるランダムアクセスメモリ(RAM MACRO)である、請求項13に記載のシステム。
- 前記レジスタコンパイラは、前記メモリのサイズに関する情報に基づいてコンパイルすることをさらに含む、前記半導体デバイスのセットをさらにコンパイルする、請求項13に記載のシステム。
- 前記一つ以上の技術は、3um、1.5um、1.2um、1.0um、0.8um、0.6um、0.5um、0.35um、0.25um、0.18um、0.13um、90nm、65nm、40nm、28nm、22nm、20nm、16nm、12nm、10nm、7nm、6nm、5nm、3nmの製造のうちの一つ以上の任意の組み合わせに対応する製造技術を含む、請求項11に記載のシステム。
- 前記半導体デバイスは、中央処理装置(CPU)、グラフィック処理装置(GPU)、デジタル信号処理装置(DSP)、及び/又はニューラル処理装置(NPU)のうちの少なくとも一つの少なくとも一部に関連する、請求項11に記載のシステム。
- 前記レジスタコンパイラは、RAM高速コンパイラ、RAM高密度コンパイラ、及び/又はRAM超高密度コンパイラのうちの少なくとも一つを含む、請求項11に記載のシステム。
- 前記レジスタコンパイラは、物理メモリ構成及び/又はパフォーマンス、パワー、及びエリア情報のデータベースを含む情報の一つ以上のデータベースを含む、請求項11に記載のシステム。
- レジスタ転送レベル(RTL)設計から合成可能なネットリストを生成して半導体デバイスの設計を支援するためのシステムであって、
前記半導体デバイスに関連付けられた一つ以上のメモリデバイスに対応するRTL設計の少なくとも一部に関連付けられた動作情報を生成する自動RTL構成トレーサーと、
前記メモリデバイスに関連する一つ以上の技術及びパワー、パフォーマンス、及びエリア(PPA)情報に基づいて、メモリデバイスのセットをコンパイルするメモリレジスタコンパイラと、
事前定義されたパワー、パフォーマンス、及びエリアの条件を満たす前記メモリレジスタコンパイラによって生成されたメモリデバイスを識別するPPA依存プロファイラと、
前記メモリデバイスの入力/出力ポートを整列させるための構造情報を生成するメモリラッパーと、
合成可能なメモリデバイスの設計のうちの一つを選択して、構造合成可能な入力/出力境界コンパチブルなメモリデバイスモジュールを有する設計ネットリストを生成できるように、ユーザ定義パラメータに基づいて一つ以上の合成可能なメモリデバイス構成のセットを作成する技術オプションコンフィギュレータと、を含む、システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/925,500 | 2020-07-10 | ||
US16/925,500 US20220012392A1 (en) | 2020-07-10 | 2020-07-10 | Systems and Methods for Generating Synthesizable Netlists From Register Transfer Level Designs |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022016409A true JP2022016409A (ja) | 2022-01-21 |
Family
ID=77042695
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021113971A Pending JP2022016409A (ja) | 2020-07-10 | 2021-07-09 | レジスタ転送レベル設計から合成可能なネットリストを生成するためのシステム及び方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20220012392A1 (ja) |
EP (1) | EP3937057A1 (ja) |
JP (1) | JP2022016409A (ja) |
CN (1) | CN113380286A (ja) |
TW (1) | TW202203069A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11347920B2 (en) * | 2020-10-21 | 2022-05-31 | Taiwan Semiconductor Manufacturing Company, Ltd. | Circuit synthesis optimization for implements on integrated circuit |
US11620426B2 (en) * | 2021-05-27 | 2023-04-04 | Taiwan Semiconductor Manufacturing Company, Ltd. | Automated system and method for circuit design |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5210701A (en) * | 1989-05-15 | 1993-05-11 | Cascade Design Automation Corporation | Apparatus and method for designing integrated circuit modules |
JPH09270197A (ja) * | 1996-01-30 | 1997-10-14 | Mitsubishi Electric Corp | 半導体記憶装置及びレイアウト/回路情報生成装置 |
US6135647A (en) * | 1997-10-23 | 2000-10-24 | Lsi Logic Corporation | System and method for representing a system level RTL design using HDL independent objects and translation to synthesizable RTL code |
US6292427B1 (en) * | 2000-10-12 | 2001-09-18 | Virage Logic Corp. | Hierarchical sense amp and write driver circuitry for compilable memory |
US8589851B2 (en) * | 2009-12-15 | 2013-11-19 | Memoir Systems, Inc. | Intelligent memory system compiler |
US8185862B2 (en) * | 2010-07-13 | 2012-05-22 | Algotochip Corporation | Architectural level power-aware optimization and risk mitigation |
US8589854B2 (en) * | 2010-07-13 | 2013-11-19 | Algotochip Corp. | Application driven power gating |
US8607019B2 (en) * | 2011-02-15 | 2013-12-10 | Shine C. Chung | Circuit and method of a memory compiler based on subtractive approach |
US9852250B2 (en) * | 2015-02-20 | 2017-12-26 | Esilicon Corporation | Memory optimization in VLSI design using generic memory models |
US9454636B1 (en) * | 2015-04-02 | 2016-09-27 | Esilicon Corporation | Integrated circuit design optimization |
US9811627B2 (en) * | 2015-12-08 | 2017-11-07 | Taiwan Semiconductor Manufacturing Co., Ltd. | Method of component partitions on system on chip and device thereof |
US10437946B1 (en) * | 2016-09-01 | 2019-10-08 | Xilinx, Inc. | Using implemented core sources for simulation |
US10795751B2 (en) * | 2017-03-03 | 2020-10-06 | Mentor Graphics Corporation | Cell-aware diagnostic pattern generation for logic diagnosis |
-
2020
- 2020-07-10 US US16/925,500 patent/US20220012392A1/en active Pending
-
2021
- 2021-02-22 CN CN202110196679.6A patent/CN113380286A/zh active Pending
- 2021-03-16 TW TW110109274A patent/TW202203069A/zh unknown
- 2021-07-09 JP JP2021113971A patent/JP2022016409A/ja active Pending
- 2021-07-09 EP EP21184797.5A patent/EP3937057A1/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
CN113380286A (zh) | 2021-09-10 |
US20220012392A1 (en) | 2022-01-13 |
TW202203069A (zh) | 2022-01-16 |
EP3937057A1 (en) | 2022-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5009979B2 (ja) | 処理システムでのソフトウェアプログラムの実行に基づくasicの設計 | |
US9558308B2 (en) | Compiler for closed-loop 1×N VLSI design | |
US11755805B2 (en) | Systems and methods for multi-bit memory with embedded logic | |
US8799837B2 (en) | Optimizing a netlist circuit representation by leveraging binary decision diagrams to perform rewriting | |
US8141016B2 (en) | Integrated design for manufacturing for 1×N VLSI design | |
US8639487B1 (en) | Method for multiple processor system-on-a-chip hardware and software cogeneration | |
US8156458B2 (en) | Uniquification and parent-child constructs for 1xN VLSI design | |
US20100107130A1 (en) | 1xn block builder for 1xn vlsi design | |
JP2022016409A (ja) | レジスタ転送レベル設計から合成可能なネットリストを生成するためのシステム及び方法 | |
TW202139046A (zh) | 進行積體電路的自動化設計的方法 | |
Gubbi et al. | Survey of machine learning for electronic design automation | |
US20240135078A1 (en) | Circuit Synthesis Optimization for Implements on Integrated Circuit | |
TWI839084B (zh) | 電腦實施方法、電腦實施系統以及非暫時性電腦可讀媒體 | |
US20230016865A1 (en) | Diagnosis of inconsistent constraints in a power intent for an integrated circuit design | |
US11657205B2 (en) | Construction, modeling, and mapping of multi-output cells | |
Lienig et al. | Methodologies for Physical Design: Models, Styles, Tasks, and Flows | |
US20240176943A1 (en) | Auto-creation of custom standard cells | |
WO2024112505A1 (en) | Auto-creation of custom standard cells | |
Kurian | An ASIC design and test methodology for an undergraduate design and fabrication project |