JP2016110408A - 設計装置、設計プログラム、および設計方法 - Google Patents

設計装置、設計プログラム、および設計方法 Download PDF

Info

Publication number
JP2016110408A
JP2016110408A JP2014247481A JP2014247481A JP2016110408A JP 2016110408 A JP2016110408 A JP 2016110408A JP 2014247481 A JP2014247481 A JP 2014247481A JP 2014247481 A JP2014247481 A JP 2014247481A JP 2016110408 A JP2016110408 A JP 2016110408A
Authority
JP
Japan
Prior art keywords
clock
register
logic synthesis
timing margin
processing
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
Application number
JP2014247481A
Other languages
English (en)
Inventor
朗 片上
Akira Kataue
朗 片上
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Socionext Inc
Original Assignee
Socionext Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Socionext Inc filed Critical Socionext Inc
Priority to JP2014247481A priority Critical patent/JP2016110408A/ja
Publication of JP2016110408A publication Critical patent/JP2016110408A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Semiconductor Integrated Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

【課題】タイミングマージンの最適化を図ること。【解決手段】設計装置100は、回路情報101と、回路情報101および第1タイミングマージンに基づき行われる第1論理合成処理の処理結果に基づく第1配置処理およびクロックツリー生成処理によって得られる対象回路に含まれるセルの位置とセル間の配線とを示すレイアウトデータ103と、を取得する。設計装置100は、レイアウトデータ103に基づいて、対象回路に含まれるレジスタの各々について、クロック供給源とレジスタとの間のクロック配線およびセルによる遅延値を導出する。設計装置100は、回路情報101と、第1タイミングマージンよりも小さい第2タイミングマージンと、に基づいて、レジスタの各々について、クロック供給源とレジスタとの間のクロック配線およびセルによる遅延値が導出した遅延値となるように第2論理合成処理を行う。【選択図】図1

Description

本発明は、設計装置、設計プログラム、および設計方法に関する。
従来、半導体集積回路の設計では、RTL(Register Transfer Level)による設計の後に論理合成、配置および配置の最適化、クロックツリー生成およびクロックタイミングの最適化、配線および配線の最適化などの処理が行われる。各処理では、タイミングマージンを付加したタイミング制約を満たすように行われる。
例えば、論理合成結果に基づいて、パスの遅延時間を算出し、算出した遅延時間に基づき再度論理合成を行う技術が公知である(例えば、以下特許文献1参照。)。また、例えば、ハードウェア記述された回路情報と制約条件情報とから第1のクロックと第2のクロックとのそれぞれのクロックツリーによる想定遅延値をそれぞれ生成し、回路情報と制約条件情報とについて論理合成を行う技術が公知である(例えば、以下特許文献2参照。)。
また、設計後には、タイミングマージンを付加したタイミング制約を満たしているか否かを判定するタイミング解析が行われる。例えば、指定された節点と同じ入力端子を根とする木構造インバータ接続情報を抽出して回路特性情報と回路動作の指定値と木構造インバータ接続情報から、根となる節点から木構造末端に至るまでの遅延時間を算出し、算出値が設計上の特性的許容値内であるか否かを検証する技術が公知である(例えば、以下特許文献3参照。)。
特開2000−113019号公報 特開2013−33360号公報 特開平6−18619号公報
しかしながら、論理合成時のタイミングマージンは最悪の条件を考慮した値が一律に設定されるため、タイミングマージンが過剰となるという問題点がある。
1つの側面では、本発明は、タイミングマージンの最適化を図ることができる設計装置、設計プログラム、および設計方法を提供することを目的とする。
本発明の一側面によれば、設計の対象回路の動作が記述された回路情報と、前記回路情報および第1タイミングマージンに基づき行われた第1論理合成処理の処理結果に基づく第1配置処理およびクロックツリー生成処理によって得られ前記対象回路に含まれるセルの位置と前記セル間の配線とを示すレイアウトデータと、を取得し、取得した前記レイアウトデータに基づいて、前記対象回路に含まれるレジスタの各々について、前記対象回路に含まれ前記レジスタへクロック信号を供給するクロック供給源と前記レジスタとの間のクロック配線およびセルによる遅延値を導出し、取得した前記回路情報と、前記第1タイミングマージンよりも小さい第2タイミングマージンと、に基づいて、前記レジスタの各々について、前記クロック供給源と前記レジスタとの間のクロック配線およびセルによる遅延値が前記導出した遅延値となるように第2論理合成処理を行う設計装置、設計プログラム、および設計方法が提案される。
本発明の一態様によれば、タイミングマージンの最適化を図ることができる。
図1は、本発明にかかる設計装置の一動作例を示す説明図である。 図2は、実施の形態にかかる設計装置のハードウェア構成例を示すブロック図である。 図3は、設計装置の機能的構成例を示すブロック図である。 図4は、クロックレイテンシの導出例を示す説明図である。 図5は、レイテンシの記憶例を示す説明図である。 図6は、タイミング制約例を示す説明図である。 図7は、実施例1にかかる設計装置による設計処理手順例を示すフローチャートである。 図8は、図7で示した導出処理(ステップS704)の詳細な説明を示すフローチャートである。 図9は、実施例2にかかる設計装置による設計処理手順例を示すフローチャートである。 図10は、第1論理合成処理の詳細内容を示す説明図である。 図11は、マージされたレジスタの抽出結果例を示す説明図である。 図12は、レジスタマージ情報の使用例を示す説明図である。 図13は、実施例3にかかる設計装置による設計処理手順例を示すフローチャートである。 図14は、実施例4によるタイミング違反の改善例を示す説明図である。 図15は、実施例4にかかる設計装置による設計処理手順例を示すフローチャートである。 図16は、配置情報の抽出例を示す説明図である。 図17は、配置情報例を示す説明図である。 図18は、配置情報の使用例を示す説明図である。 図19は、実施例5にかかる設計装置による設計処理手順例を示すフローチャートである。 図20は、図19で示した配置情報の抽出処理(ステップS1905)の詳細な説明を示すフローチャートである。 図21は、動作速度と面積の相関例と消費電力の削減例を示す説明図である。 図22は、レイテンシの再現性向上の実現例を示す説明図である。
以下に添付図面を参照して、本発明にかかる設計装置、設計プログラム、および設計方法の実施の形態を詳細に説明する。
図1は、本発明にかかる設計装置の一動作例を示す説明図である。設計装置100は、半導体集積回路の設計を行うコンピュータである。
従来、半導体集積回路の設計では、RTLレベルによる設計の後に論理合成、配置および配置の最適化、クロックツリー生成およびクロックタイミングの最適化、配線および配線の最適化などの処理が行われる。各処理では、タイミングマージンやクロックの周波数などのタイミング制約を満たすように行われる。
ここで、タイミングマージンとは、半導体集積回路が正確に動作するための最大または最小の信号遅延時間、または入力信号のセットアップ/ホールド時間などのタイミング条件である。セットアップ時間とは、フリップフロップなどのデータ入力信号において、クロック信号のエッジより前に保持しておく最小の時間である。フリップフロップはFF(Flip Flop)とも表す。また、ホールド時間とは、フリップフロップなどのデータ入力信号において、クロック信号のエッジよりも後に保持しておく最小の時間である。
半導体集積回路が高速化するにつれてクロック信号やデータ信号などのタイミングは制約が厳しくなり、静的タイミング解析などによって信号遅延を正確に解析することが要求される。そのため、クロック信号の周波数が高い半導体集積回路の設計では、タイミングマージンをできるだけ小さくする。例えばタイミングマージンは、クロック周波数に対する割合によって表される。
論理合成時のタイミングマージンは、クロックスキュー、クロックジッタ、隣接配線のクロストーク遅延、素子のチップ内ばらつきなどが最悪となる場合を考慮した値が一律に設定される。クロックスキューとは、あるパスにおける、データ信号の発信FFについてのレイテンシと、データ信号の受信FFについてのレイテンシと、の差分値である。しかしながら、最悪の遅延値となる場合の条件がすべて揃う可能性は低いため、タイミングマージンが過剰となる場合がある。
そこで、本実施の形態では、クロックスキューを考慮したタイミングマージンでの1回目の論理合成結果による配置処理及びクロックツリー生成処理に基づくレイアウトデータから得たレジスタごとのクロック遅延値を2回目の論理合成で用いる。これにより、2回目の論理合成時のタイミングマージンの最適化を図ることができる。
まず、設計装置100は、回路情報101と、レイアウトデータ103と、を取得する。回路情報101は、設計の対象回路の機能や動作がVerilogやVHDL(Very high speed integrated circuit Hardware Description Language)などのハードウェア記述言語を用いてRTLによって記述される。
レイアウトデータ103は、回路情報101および第1タイミングマージンに基づき行われる第1論理合成処理の処理結果に基づく第1配置処理およびクロックツリー生成処理によって得られ対象回路に含まれるセルの位置とセル間の配線とを示す。また、ここでの第1タイミングマージンは、設計者によって、クロックスキュー、クロックジッタ、隣接配線のクロストーク遅延、素子のチップ内ばらつきなどを考慮して設定される。クロックスキューとは、あるパスにおける、データ信号の発信FFについてのレイテンシと、データ信号の受信FFについてのレイテンシと、の差分値である。クロックスキューを考慮して第1タイミングマージンが設定されることによって、実際のレイアウトのクロックスキューを考慮したデータパスの最適化が行われる。第1論理合成処理の処理結果は、例えば第1ネットリスト102である。
取得形式としては、例えば、設計装置100は、記憶装置などに記憶された回路情報101およびレイアウトデータ103から読み出すことにより、回路情報101およびレイアウトデータ103を取得してもよい。また、例えば、設計装置100は、他の装置からネットワークを介して回路情報101およびレイアウトデータ103を取得してもよい。また、設計装置100は、レイアウトデータ103について、第1論理合成処理と第1配置処理およびクロックツリー生成処理を行うことにより取得してもよい。より具体的には、設計装置100は、回路情報101と、第1タイミングマージンと、に基づいて、第1論理合成処理を行うことによって第1ネットリスト102を生成する。第1ネットリスト102は、セルとセル間の接続関係を示し、VerilogやVHDLなどのハードウェア記述言語を用いて記述される。そして、設計装置100は、第1ネットリスト102に基づいて、配置処理およびクロックツリー生成処理を行うことによって、対象回路に含まれるセルの位置とセル間の配線とを示すレイアウトデータ103を生成する。
つぎに、設計装置100は、取得したレイアウトデータ103に基づいて、対象回路に含まれるレジスタの各々について、対象回路に含まれレジスタへクロック信号を供給するクロック供給源とレジスタとの間のクロック配線およびセルによる遅延値を導出する。レジスタとしては、例えば、FFなどが挙げられる。クロック供給源は、対象回路内の分周回路などのクロック生成器であってもよいし、対象回路の外部から供給されるクロック信号を受け付けるクロック入力端子であってもよいし、レジスタを有する対象回路内のモジュールのクロック端子であってもよい。
図1の例では、クロック供給源はクロック端子111である。また、図1の例では、レジスタはレジスタ112である。また、図1の例では、クロック供給源とレジスタとの間のセルは、例えば、クロックバッファ113〜115などである。また、図1の例では、クロック配線は、例えば、クロック端子111とクロックバッファ113との間の配線、クロックバッファ113とクロックバッファ114との間の配線である。さらに、クロック配線は、クロックバッファ114とクロックバッファ115との間の配線、クロックバッファ115とレジスタ112との間の配線である。導出される遅延値は遅延値dである。また、遅延値の導出例については、図3以降の具体例において後述する。
設計装置100は、回路情報101と、第2タイミングマージンと、に基づいて、レジスタの各々について、クロック供給源とレジスタとの間のクロック配線およびセルによる遅延値が導出した遅延値となるように第2論理合成処理を行う。設計装置100は、第2論理合成処理によって第2ネットリスト104を生成する。第2タイミングマージンは、第1タイミングマージンよりも小さい。上述したように、第1タイミングマージンは、クロックスキュー、クロックジッタ、隣接配線のクロストーク遅延、素子のチップ内ばらつきなどを考慮した値が設定される。これに対して、第2タイミングマージンは、レジスタのレイテンシが指定される。このため、クロックスキューを考慮しなくてよく、第1タイミングマージンよりも小さくできる。
このように、レジスタのレイテンシをレジスタの各々について指定できるため、タイミングマージンを最適化できる。これにより、データパスの最適化を図ることができる。したがって、半導体集積回路の面積の縮小化、低消費電力化を図ることができる。
(設計装置100のハードウェア構成例)
図2は、実施の形態にかかる設計装置のハードウェア構成例を示すブロック図である。図2において、設計装置100は、CPU(Central Processing Unit)201と、ROM(Read Only Memory)202と、RAM(Random Access Memory)203と、ディスクドライブ204と、ディスク205と、を有する。設計装置100は、I/F(Inter/Face)206と、入力装置207と、出力装置208と、を有する。また、各部はバス200によってそれぞれ接続される。
ここで、CPU201は、設計装置100の全体の制御を司る。ROM202は、ブートプログラムなどのプログラムを記憶する。RAM203は、CPU201のワークエリアとして使用される。ディスクドライブ204は、CPU201の制御にしたがってディスク205に対するデータのリード/ライトを制御する。ディスク205は、ディスクドライブ204の制御で書き込まれたデータを記憶する。ディスク205としては、磁気ディスク、光ディスクなどが挙げられる。
I/F206は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク209に接続され、このネットワーク209を介して他の装置に接続される。そして、I/F206は、ネットワーク209と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F206には、例えばモデムやLANアダプタなどを採用することができる。
入力装置207は、キーボード、マウス、タッチパネルなど利用者の操作により、各種データの入力を行うインターフェースである。また、入力装置207は、カメラから画像や動画を取り込むこともできる。また、入力装置207は、マイクから音声を取り込むこともできる。出力装置208は、CPU201の指示により、データを出力するインターフェースである。出力装置208には、ディスプレイやプリンタが挙げられる。
(設計装置100の機能的構成例)
図3は、設計装置の機能的構成例を示すブロック図である。設計装置100は、第1論理合成処理部301と、第1配置処理部302と、第1クロックツリー生成処理部303と、取得部304と、導出部305と、抽出部306と、を有する。また、設計装置100は、第2論理合成処理部307と、第2配置処理部308と、第2クロックツリー生成処理部309と、を有する。第1論理合成処理部301から第2クロックツリー生成処理部309までの制御部の処理は、例えば、図2に示すCPU201がアクセス可能なROM202、RAM203、ディスク205などの記憶装置に記憶されたプログラムにコーディングされている。そして、CPU201が記憶装置から該プログラムを読み出して、プログラムにコーディングされている処理を実行する。これにより、制御部の処理が実現される。また、制御部の処理結果は、例えば、ROM202、RAM203、ディスク205などの記憶装置に記憶される。
本実施の形態では、各部の詳細な処理を、実施例1〜実施例5によって説明する。実施例1では、1回目のクロックツリー生成後の第2レイアウトデータ103に基づく各レジスタのレイテンシと、レイテンシのばらつきを考慮しないタイミングマージンと、に基づいて、2回目の論理合成処理を行う。実施例2では、1回目の論理合成処理と、2回目の論理合成処理と、において、レジスタのマージ処理を禁止する。実施例3では、1回目の論理合成後のマージ処理の結果と同様にレジスタがマージされるように2回目の論理合成処理を行う。
また、実施例4では、1回目のクロックツリー生成後の第2レイアウトデータ103に基づく各レジスタのレイテンシと、レイテンシのばらつきを考慮しないタイミングマージンと、に基づいて、2回目の配置処理を行う。実施例5では、2回目の配置処理の際に、1回目の配置処理によって得られる第2レイアウトデータ103によってレジスタの位置情報を抽出し、抽出したレジスタの位置情報に基づいて2回目の配置処理を行う。
(実施例1)
実施例1では、1回目のクロックツリー生成後の第2レイアウトデータ103に基づく各レジスタのレイテンシと、レイテンシのばらつきを考慮しないタイミングマージンと、に基づいて、2回目の論理合成処理を行う。これにより、2回目の論理合成処理時のタイミングマージンを小さくすることができるため、データパスの最適化を図ることができる。
まず、取得部304は、設計の対象回路に含まれるセルの位置とセル間の配線とを示すレイアウトデータであって、対象回路のクロックツリーを生成後のレイアウトデータと、対象回路の動作が記述された回路情報101と、を取得する。回路情報101は、設計の対象回路の機能や動作がVerilogやVHDLなどのハードウェア記述言語を用いてRTLレベルによって記述される。ここで取得されるレイアウトデータは第2レイアウトデータ103である。
具体的に、第2レイアウトデータ103は、例えば、第1論理合成処理部301と、第1配置処理部302と、第1クロックツリー生成処理部303と、によって生成される。そのため、まず、第1論理合成処理部301と、第1配置処理部302と、第1クロックツリー生成処理部303と、の各処理について説明する。
第1論理合成処理部301は、回路情報101と、タイミング制約情報311と、セルライブラリと、に基づいて、第1論理合成処理を行うことによって、対象回路に含まれるセルとセル間の接続とを示す第1ネットリスト102を生成する。第1ネットリスト102は、例えば、VerilogやVHDLなどのハードウェア記述言語を用いて記述される。ここでのタイミング制約情報311には、第1タイミングマージンやクロック周期などが記述される。セルライブラリは、図3では省略するが、複数の種類のセルの各々についてのセルを示す情報である。第1論理合成処理部301は、セルライブラリを利用してセルへのマッピングおよび論理の最適化を行う。
第1タイミングマージンは、クロックスキュー、クロックジッタ、隣接配線のクロストークによる遅延値、チップ内ばらつき、などの不確定要素によるばらつきなどを考慮して決定される値である。上述したように、クロックスキューとは、あるパスにおける発信FFのレイテンシと受信FFのレイテンシとの差である。クロックジッタとは、クロック信号のランダムな時間的な変動である。チップ内ばらつきとは、例えば、(1)トランジスタ特性のばらつき、配線抵抗のばらつき、コンタクト抵抗のばらつきなどに起因するプロセス特性のばらつきなどを指す。また、チップ内ばらつきとは、(2)チップ内の電圧降下に起因する電源電圧ばらつき、(3)素子配置や動作周波数が半導体集積回路内で均等でないことによるチップ内温度ばらつきなどを指す。
つぎに、第1配置処理部302は、第1ネットリスト102と、タイミング制約情報313と、物理制約情報と、に基づいて、第1配置および配置最適化処理を行う。第1配置処理部302は、第1ネットリスト102とタイミング制約情報313と物理制約情報とを、配置処理を実行可能なアプリケーションに与えて第1レイアウトデータ314を生成する。物理制約情報とは、設計者によって決定される対象回路に含まれるモジュールなどの大まかな配置や各端子の大まかな位置や大まかな電源配線などを示す情報である。ここでのタイミング制約情報313には、論理合成時と同様にタイミングマージンやクロック周期などが記述される。ここでのタイミングマージンは、例えば、第3タイミングマージンと称する。
つぎに、第1クロックツリー生成処理部303は、第1レイアウトデータ314と、タイミング制約情報315とに基づいて、第1クロックツリー生成およびクロックタイミングの最適化処理を行う。第1クロックツリー生成およびクロックタイミングの最適化処理によって得られる第2レイアウトデータ103は、ROM202、RAM203、ディスク205などの記憶装置に記憶される。
このようにして、取得部304は、クロックツリーを生成後の第2レイアウトデータ103を取得することができる。また、例えば、取得部304は、ROM202、RAM203、ディスク205などの記憶装置に記憶された第2レイアウトデータ103を読み出すことによって第2レイアウトデータ103を取得してもよい。または、例えば、取得部304は、利用者が入力装置207を介して入力された第2レイアウトデータ103を受け付けることによって第2レイアウトデータ103を取得してもよいし、ネットワーク209からI/F206を介して取得してもよい。
つぎに、導出部305は、第2レイアウトデータ103に基づいて、対象回路に含まれるレジスタの各々について、レジスタへのクロック信号を供給する対象回路に含まれるクロック供給源とレジスタとの間のクロック配線およびセルによる遅延値を導出する。
図4は、クロックレイテンシの導出例を示す説明図である。例えば、図3に示した導出部305は、第2レイアウトデータ103に基づいて、対象回路に含まれるレジスタの各々について、クロック供給源とレジスタとの間のクロック配線とセルとによる遅延値を導出する。レジスタとは、クロック信号に同期してデータを取り込むセルの一種であり、例えばフリップフロップである。クロック供給源は、レジスタへのクロック信号を供給する対象回路に含まれる。クロック供給源は、対象回路内の分周回路などのクロック生成器であってもよいし、対象回路の外部から供給されるクロック信号を受け付けるクロック入力端子であってもよいし、レジスタを有する対象回路内のモジュールのクロック端子であってもよい。また、クロック供給源は、利用者が入力装置207を介して指定してもよい。
具体的には、導出部305は、例えば、複数のレジスタの中から順に遅延値を算出する対象のレジスタとして選択する。そして、導出部305は、例えば、選択したレジスタを含むモジュールのクロック供給端子を特定する。導出部305は、例えば、特定したクロック端子と、選択したレジスタのクロック端子と、の間のクロック配線の長さとセルとを特定する。ここで特定されるセルとは、例えば、生成されたクロックツリーのクロックバッファである。
導出部305は、例えば、特定したクロック配線の長さに基づいて、クロック配線による遅延値を算出する。所定幅における所定長さ当たりの配線による遅延値が予め定められてある。例えば、所定幅については、予め定められた設計時の配線幅であるため、長さが与えられると配線による遅延値が求まる関数を予め用意しておいてもよい。そして、導出部305は、例えば、特定した長さを当該関数に与えてクロック配線による遅延値を算出する。
導出部305は、例えば、特定したセルに基づいて、セルによる遅延値を算出する。駆動力などのクロックバッファの種類ごとに1クロックバッファ当たりの遅延値が、例えば、ROM202、RAM203、ディスク205などの記憶装置に予め記憶される。そして、導出部305は、例えば、特定したセルの各々についての記憶装置から遅延値を特定し、特定した遅延値を合計することにより、セルによる遅延値を算出する。
つづいて、導出部305は、クロック配線による遅延値と、セルによる遅延値と、を合計することによって、選択したレジスタについてのレイテンシを算出する。導出部305は、算出したレイテンシをレジスタの識別子と関連付けてROM202、RAM203、ディスク205などの記憶装置に記憶させる。
図5は、レイテンシの記憶例を示す説明図である。例えば、レイテンシ情報316には、レジスタreg1と、レジスタreg2となどについて導出したレイテンシを記憶する。テーブルは、クロック供給端子名と、レジスタのクロックピン名と、遅延値と、のフィールドを有する。各フィールドに情報が設定されることによってレコード500として記憶される。
クロック供給端子名のフィールドには、クロック供給源の識別子が設定される。レジスタのクロックピン名のフィールドには、対象回路の全体を示すトップのモジュールからレジスタのクロック端子までのフルパスがレジスタおよびレジスタのクロック端子の識別子として設定される。遅延値のフィールドには、レジスタについて導出したレイテンシが設定される。
レコード500−1を例に挙げると、クロック供給端子名のフィールドには「CLK」が設定される。レジスタのクロックピン名のフィールドには「u_top/u_core/u_module1/reg1/CLK」が設定される。遅延値のフィールドには0.8[ns]が設定される。
つぎに、図3に示した第2論理合成処理部307は、レジスタの各々について、クロック供給源とレジスタとの間のクロック配線による遅延値が導出した遅延値となるように第2論理合成処理を行う。ここでの第2論理合成処理部307は、回路情報101と第2タイミングマージンとセルライブラリとに基づいて、第2論理合成処理を行う。第2タイミングマージンは、第1論理合成処理時の第1タイミングマージンよりも小さい。ここで、第2論理合成処理部307は、2回目の論理合成処理を行う前に、レイテンシを論理合成時に利用可能とするために、レイテンシをタイミング制約の記述フォーマットに変換する。
図6は、タイミング制約例を示す説明図である。タイミング制約情報319には、タイミング制約が記述される。タイミング制約には、例えば、クロック定義、タイミングマージン、クロックレイテンシ、外部信号の入出力遅延値、制約非適応パスなどが挙げられる。例えば、クロック定義としては、クロックの周期、クロック供給元の外部出力端子名などが記述される。上述したように、タイミングマージンは、半導体集積回路が正常に動作するための最大または最小の信号の遅延値、または入力信号のセットアップ/ホールド時間の条件である。ここでのタイミングマージンは、例えば、クロックサイクルに対する割合で表す。
タイミング制約情報319に記述されるタイミングマージンは、第1論理合成処理時の第1タイミングマージンよりも小さい第2タイミングマージンである。第2論理合成処理においては各レジスタについてレイテンシが指定されるため、第1タイミングマージンからクロックスキューのばらつきについてのタイミングマージンを減らすことができる。このため、第2タイミングマージンは第1タイミングマージンよりも小さくできる。例えば、第1タイミングマージンが20[%]程度である場合、第2タイミングマージンは10[%]程度である。
例えば、タイミング制約情報319がSDC(Synopsys Design Constraint)の場合、「set_clock_latency」によってレジスタの各々についてのレイテンシを指定することができる。
つぎに、例えば、図3に示した第2論理合成処理部307は、回路情報101とタイミング制約情報319とセルライブラリとを、論理合成処理を実行可能なアプリケーションに与えることによって、第2ネットリスト104を生成する。これにより、第2論理合成処理部307は、対象回路に含まれるセルとセル間の接続を示す第2ネットリスト104を生成する。これにより、実際のレイアウトのスキューを考慮したデータパスの最適化が行える。したがって、データパス上のセル数またはセルの稼働能力などを低減させることができ、低消費電力化、省面積化を図ることができる。
そして、第2配置処理部308は、第2ネットリスト104と、タイミング制約情報320と、物理制約情報と、に基づいて、第2配置処理および配置最適化処理を行う。ここでは、タイミング制約情報320に記述されるタイミングマージンは第3タイミングマージンとも呼ぶ。具体的に、第2配置処理部308は、例えば、第2ネットリスト104とタイミング制約情報320と物理制約情報とを、配置処理を実行可能なアプリケーションに与えて、第3レイアウトデータ321を生成する。
つぎに、第2クロックツリー生成処理部309は、第3レイアウトデータ321に基づいて、第2クロックツリー生成処理およびクロック最適化処理を行う。第2クロックツリー生成処理部309は、第3レイアウトデータ321を、クロックツリー生成処理を実行可能なアプリケーションに与えて第4レイアウトデータ323を生成する。
(実施例1にかかる設計装置100による設計処理手順例)
図7は、実施例1にかかる設計装置による設計処理手順例を示すフローチャートである。設計装置100は、タイミング制約情報311と、回路情報101と、セルライブラリと、に基づいて、第1論理合成処理を行う(ステップS701)。ステップS701でのタイミングマージンは、例えば、20[%]である。
つぎに、設計装置100は、タイミング制約情報313と、第1ネットリスト102と、物理制約情報と、に基づいて、第1配置処理および配置の最適化処理を行う(ステップS702)。ステップS702でのタイミングマージンは、ステップS701と同様にクロックスキューを考慮した値が設定されるため、ステップS702と同様に、例えば、20[%]である。設計装置100は、第1レイアウトデータ314と、タイミング制約情報315と、に基づいて、第1クロックツリー生成処理およびクロックツリーの最適化処理を行う(ステップS703)。ステップS703でのタイミングマージンは、クロックスキューを考慮しなくてよいため、例えば、10[%]である。
そして、設計装置100は、レジスタの各々について、レイテンシの導出処理を行う(ステップS704)。導出処理の詳細例については、図8に示す。つぎに、設計装置100は、導出したレイテンシに基づく第2論理合成処理を行う(ステップS705)。具体的に、ステップS705において、設計装置100は、タイミング制約情報319と、回路情報101と、セルライブラリと、に基づいて、レジスタの各々についてのレイテンシが導出したレイテンシとなるように第2論理合成処理を行う。ステップS705でのタイミングマージンは、ステップS701における第1論理合成処理時のタイミングマージンよりも小さい値であり、例えば、14[%]である。
つぎに、設計装置100は、第2ネットリスト104と、タイミング制約情報320と、物理制約情報と、に基づいて、第2配置処理および配置の最適化処理を行う(ステップS706)。ステップS706でのタイミングマージンは、例えば、ステップS702における第1配置処理と同様に、20[%]である。そして、設計装置100は、第3レイアウトデータ321と、タイミング制約情報322と、に基づいて、第2クロックツリー生成処理およびクロックツリーの最適化処理を行う(ステップS707)。ステップS707でのタイミングマージンは、ステップS703における第1クロックツリー生成処理と同様に、例えば、10[%]である。
つぎに、設計装置100は、配線処理および配線後の最適化処理を行う(ステップS708)。そして、設計装置100は、消費電力の最適化処理を行う(ステップS709)。ステップS709でのタイミングマージンは、例えば、5[%]である。つぎに、設計装置100は、面積の最適化処理を行い(ステップS710)、一連の処理を終了する。ステップS710でのタイミングマージンは、例えば、5[%]である。
図8は、図7で示した導出処理(ステップS704)の詳細な説明を示すフローチャートである。まず、設計装置100は、レジスタを選択する(ステップS801)。つぎに、設計装置100は、選択したレジスタに対応するクロック供給端子を特定する(ステップS802)。そして、設計装置100は、選択したレジスタと特定したクロック供給端子との間のクロック配線とセルとを特定する(ステップS803)。
つぎに、設計装置100は、特定したクロック配線による遅延値と特定したセルによる遅延値とのそれぞれを算出する(ステップS804)。そして、設計装置100は、特定したクロック配線による遅延値と特定したセルによる遅延値との合計値をレイテンシとして格納する(ステップS805)。設計装置100は、全レジスタについてのレイテンシを導出したか否かを判断する(ステップS806)。いずれかのレジスタについてのレイテンシを導出していないと判断された場合(ステップS806:No)、設計装置100は、ステップS801へ戻る。全レジスタについてのレイテンシを導出したと判断された場合(ステップS806:Yes)、設計装置100は、一連の処理を終了する。
(実施例2)
論理合成処理では、複数のレジスタを1つのレジスタに併合する処理が行われるこの併合する処理は、マージ処理とも称する。1回目の論理合成時と2回目の論理合成時とは異なるマージ処理結果となる場合がある。そこで、実施例2では、1回目および2回目の論理合成時にマージ処理を行わない。これにより、1回目のクロックツリー生成後の各レジスタのレイテンシと、2回目のクロックツリー生成後の各レジスタのレイテンシと、の相関性の向上を図ることができる。また、実施例2では、第1論理合成処理部301と第2論理合成処理部307との2つの部以外の部による処理については実施例1と同様の処理であり、同様の処理については詳細な説明を省略する。
図3に示した第1論理合成処理部301は、第1論理合成処理を行う処理において、対象回路に含まれる複数のレジスタを同一のレジスタに併合する処理を行わない。また、第2論理合成処理部307は、第2論理合成処理を行う処理において、対象回路に含まれる複数のレジスタを同一のレジスタに併合する処理を行わない。
これにより、第2レイアウトデータ103における各レジスタのレイテンシと、第4レイアウトデータ323における各レジスタのレイテンシと、の相関性の向上を図ることができる。このため、実施例2における第2タイミングマージンは、実施例1における第2タイミングマージンよりも小さくすることができる。例えば、実施例1における第2タイミングマージンは14[%]としたが、実施例2における第2タイミングマージンは12[%]とできる。これにより、よりデータパスの最適化を図ることができる。したがって、面積の縮小化、半導体集積回路の動作の高速化、低消費電力化を図ることができる。
(実施例2にかかる設計装置100による設計処理手順例)
図9は、実施例2にかかる設計装置による設計処理手順例を示すフローチャートである。設計装置100は、タイミング制約情報311と、回路情報101と、セルライブラリと、に基づいて、レジスタのマージを行わずに、第1論理合成処理を行う(ステップS901)。ステップS901でのタイミングマージンは、例えば、20[%]である。
つぎに、設計装置100は、タイミング制約情報313と、第1ネットリスト102と、物理制約情報と、に基づいて、第1配置処理および配置の最適化処理を行う(ステップS902)。ステップS902でのタイミングマージンは、例えば、20[%]である。そして、設計装置100は、第1レイアウトデータ314と、タイミング制約情報315と、に基づいて、第1クロックツリー生成処理およびクロックツリーの最適化処理を行う(ステップS903)。ステップS903でのタイミングマージンは、クロックスキューを考慮しなくてよいため、例えば、10[%]である。
つぎに、設計装置100は、レジスタの各々について、レイテンシの導出処理を行う(ステップS904)。ステップS904における導出処理は、図7で示したステップS704における導出処理と同じであるため、詳細な説明を省略する。つぎに、設計装置100は、回路情報101と、タイミング制約情報319と、に基づいて、レジスタのマージを行わずに、導出したレイテンシに基づく第2論理合成処理を行う(ステップS905)。ステップS905でのタイミングマージンは、ステップS901における第1論理合成処理時のタイミングマージンよりも小さい値であり、実施例1における第2論理合成処理よりも小さい値であるため、例えば、12[%]である。
つぎに、設計装置100は、第2ネットリスト104と、タイミング制約情報320と、物理制約情報と、に基づいて、第2配置処理および配置の最適化処理を行う(ステップS906)。ステップS906でのタイミングマージンは、例えば、ステップS902における第2配置処理と同様に、20[%]である。そして、設計装置100は、第3レイアウトデータ321と、タイミング制約情報322と、に基づいて、第2クロックツリー生成処理およびクロックツリーの最適化処理を行う(ステップS907)。ステップS907でのタイミングマージンは、例えば、ステップS903における第1クロックツリー生成処理と同様に、10[%]である。
つぎに、設計装置100は、第4レイアウトデータ323に基づいて、配線処理および配線後の最適化処理を行う(ステップS908)。そして、設計装置100は、消費電力の最適化処理を行う(ステップS909)。ステップS909でのタイミングマージンは、例えば、5[%]である。つぎに、設計装置100は、面積の最適化処理を行い(ステップS910)、一連の処理を終了する。ステップS910でのタイミングマージンは、例えば、5[%]である。
(実施例3)
上述したように、論理合成処理では、複数のレジスタを1つのレジスタに併合する処理が行われる。1回目の論理合成時と2回目の論理合成時とは異なるマージ処理結果となる場合がある。実施例3では、1回目の論理合成時におけるマージ処理の処理結果と同一の処理結果となるように2回目の論理合成時にマージ処理を行う。これにより、1回目のクロックツリー生成後の各レジスタのレイテンシと、2回目のクロックツリー生成後の各レジスタのレイテンシと、の相関性の向上を図ることができる。実施例3では、抽出部306と第2論理合成処理部307との2つの部以外の部による処理については実施例1と同様の処理であるため、同様の処理については詳細な説明を省略する。
図3に示した第2論理合成処理部307は、第2論理合成処理において、第1論理合成処理の処理結果に基づいて、第1論理合成処理においてマージ処理の処理結果と同じ処理結果になるようにマージ処理を行う。具体的には、抽出部306は、第1論理合成処理の処理結果から、マージ処理結果を抽出する。そして、第2論理合成処理部307は、マージ処理結果に基づいて、第1論理合成処理においてのマージ処理の処理結果と同じ処理結果になるようにマージ処理を行う。
図10は、第1論理合成処理の詳細内容を示す説明図である。より具体的に、第1論理合成処理としては、RTL記述された回路情報101に基づいて、FFの割り付け、組み合わせ論理の生成が行われる(ステップS1001)。つぎに、第1論理合成処理としては、タイミング制約に基づいて、論理の最適化が行われる(ステップS1002)。
そして、第1論理合成処理としては、セルへのマッピング、論理の最適化、バッファの挿入、レジスタのマージ、インスタンス名の変更などが行われる(ステップS1003)。これにより、第1ネットリスト102と、インスタンス名変更ログ312と、が生成される。インスタンス名変更ログ312は、RTL記述された回路情報101が示す対象回路と、第1ネットリスト102が示す対象回路と、の論理等価検証を行うために生成される情報である。具体的に、インスタンス名変更ログ312とは、ステップS1001によって得られる情報に記述されたインスタンス名と、第1ネットリスト102に記述されたインスタンス名と、の対応関係を示す情報である。論理合成処理においてレジスタのマージが行われると、レジスタのインスタンス名が変更されるため、インスタンス名変更ログ312が生成される。
抽出部306は、例えば、インスタンス名変更ログ312に基づいて、マージされたレジスタを抽出する。抽出結果は、例えば、レジスタマージ情報317として、ROM202、RAM203、ディスク205などの記憶装置に記憶される。
図11は、マージされたレジスタの抽出結果例を示す説明図である。例えば、具体的に、抽出部306は、マージされたすべてのレジスタについて、インスタンス名変更ログ312から、マージ前のレジスタセルのインスタンス名と、マージ後のレジスタセルのインスタンス名と、を抽出する。
レジスタマージ情報317は、マージ前レジスタセルのインスタンス名と、マージ後レジスタセルのインスタンス名と、のフィールドを有する。各フィールドに情報が設定されると、レコード1100として記憶される。
レコード1100−1を例に挙げると、マージ前レジスタセルのインスタンス名のフィールドには、「u_top/u_core/u_module1/reg1」が設定される。レコード1100−1を例に挙げると、マージ後レジスタセルのインスタンス名のフィールドには、「u_top/u_core/u_module1/reg1_reg2」が設定される。
図12は、レジスタマージ情報の使用例を示す説明図である。具体的に、第2論理合成処理部307は、例えば、レジスタマージ情報317に基づいて、マージされたレジスタの各々について、マージ前レジスタセルをマージ後レジスタセルにマージさせるための論理合成ツールが使用可能なコマンドに変換する。コマンドには、コマンド名と、セルの種別を示すセル名と、マージ対象のセルインスタンス名と、マージ後のセルインスタンス名と、が記述される。
第2論理合成処理における各ステップS1201〜S1203は、図10に示した各ステップS1001〜S1003と同様である。第2論理合成処理部307は、第2論理合成処理において、上述したステップS1003において、変換されたコマンドによってレジスタのマージを指定する。これにより、第1クロックツリー生成処理後のレジスタのレイテンシと、第2クロックツリー生成処理後のレジスタのレイテンシと、の相関性の向上を図ることができる。そのため、実施例3における第2タイミングマージンは、実施例1における第2タイミングマージンよりもより小さくすることができる。このため、実施例2における第2タイミングマージンは、実施例1における第2タイミングマージンよりも小さくすることができる。例えば、実施例1における第2タイミングマージンは14[%]としたが、実施例3における第2タイミングマージンは12[%]とできる。これにより、よりデータパスの最適化を図ることができる。したがって、面積の縮小化、半導体集積回路の動作の高速化、低消費電力化を図ることができる。
(実施例3にかかる設計装置100による設計処理手順例)
図13は、実施例3にかかる設計装置による設計処理手順例を示すフローチャートである。まず、設計装置100は、タイミング制約情報311と、回路情報101と、セルライブラリ1000と、に基づいて、第1論理合成処理を行う(ステップS1301)。ステップS1301でのタイミングマージンは、例えば、20[%]である。
つぎに、設計装置100は、タイミング制約情報313と、第1ネットリスト102と、物理制約情報と、に基づいて、第1配置処理および配置の最適化処理を行う(ステップS1302)。ステップS1302でのタイミングマージンは、例えば、20[%]である。設計装置100は、第1レイアウトデータ314と、タイミング制約情報315と、に基づいて、第1クロックツリー生成処理およびクロックツリーの最適化処理を行う(ステップS1303)。ステップS1303でのタイミングマージンは、例えば、10[%]である。
そして、設計装置100は、レジスタの各々について、レイテンシの導出処理を行う(ステップS1304)。ステップS1304における導出処理は、図7で示したステップS704における導出処理と同じであるため、詳細な説明を省略する。つぎに、設計装置100は、インスタンス名変更ログ312に基づいて、レジスタマージ情報317を抽出する(ステップS1305)。そして、設計装置100は、導出したレイテンシとレジスタマージ情報317とに基づく第2論理合成処理を行う(ステップS1306)。ステップS1306でのタイミングマージンは、第1論理合成処理時のタイミングマージンよりも小さい値であり、実施例1における第2論理合成処理時のタイミングマージンよりも小さい値であるため、例えば、12[%]である。
つぎに、設計装置100は、第2ネットリスト104と、タイミング制約情報320と、物理制約情報と、に基づいて、第2配置処理および配置の最適化処理を行う(ステップS1307)。ステップS1307でのタイミングマージンは、例えば、10[%]である。そして、設計装置100は、第3レイアウトデータ321と、タイミング制約情報322と、に基づいて、第2クロックツリー生成処理およびクロックツリーの最適化処理を行う(ステップS1308)。ステップS1308でのタイミングマージンは、例えば、10[%]である。
つぎに、設計装置100は、配線処理および配線後の最適化処理を行う(ステップS1309)。そして、設計装置100は、消費電力の最適化処理を行う(ステップS1310)。ステップS1310でのタイミングマージンは、例えば、5[%]である。つぎに、設計装置100は、面積の最適化処理を行い(ステップS1311)、一連の処理を終了する。ステップS1311でのタイミングマージンは、例えば、5[%]である。
(実施例4)
実施例4では、1回目のクロックツリー生成後の第2レイアウトデータ103に基づく各レジスタのレイテンシと、レイテンシのばらつきを考慮しないタイミングマージンと、に基づいて、2回目の配置処理を行う。これにより、2回目の配置の最適化処理において配置の選択肢を広げることができる。実施例2では、第2論理合成処理部307と第2配置処理部308との2つの部以外の部についての処理は、実施例1と同様の処理であるため、同様の処理についての詳細な説明を省略する。
まず、図3に示した第2論理合成処理部307は、第1論理合成処理部301と同様の処理を行うことによって第2ネットリスト104を生成すればよいため、実施例4では、第2論理合成処理部307による処理を行わなくてもよい。
第2配置処理部308は、第2ネットリスト104と、第4タイミングマージンと、に基づいて、レジスタの各々について、クロック供給源とレジスタとの間のクロック配線およびセルによる遅延値が導出した遅延値となるように第2配置処理を行う。第4タイミングマージンは、第3タイミングマージンよりも小さい。また、第2配置処理部308は、第2配置処理とともに、配置の最適化処理も行ってもよい。第4タイミングマージンは、クロックスキュー分のタイミングマージンを削減できるため、第3タイミングマージンよりも小さくできる。例えば、第3タイミングマージンが20[%]であり、第4タイミングマージンが14[%]である。
図14は、実施例4によるタイミング違反の改善例を示す説明図である。図14(1)には、すべてのFFについてレイテンシを同一値に設定した場合の配置例を示す。図14(2)には、FFの各々について導出したレイテンシに設定した場合の配置例を示す。Tconstrainは、タイミング制約を示す。Tclockは、送信FFについてのレイテンシと受信FFについてのレイテンシとの差を示す。Tdataは、データパスによる遅延値を示す。
図14(1)では、例えば、DATA2においてTviolation2のようにタイミング違反が発生すると、Tdata2を短縮するため、FF2をFF3に近づけるような配置変更が行われる。これにより、FF1とFF2との間隔が広がるため、Tdata1が長くなり、DATA2においてのタイミング違反の発生が解消しても、DATA1においてタイミング違反が発生する場合がある。そのため、DATA1においてのタイミング違反を解消するためには、FF1をFF2に近づける、またはDATA1にバッファの挿入やバッファの駆動能力を高くするなどの変更が行われる。
これに対して、図14(2)では、例えば、DATA2においてタイミング違反が発生すると、Tdata2を短縮するため、FF2をFF3に近づけるような配置変更が行われる。これにより、FF1とFF2との間隔は広がる。しかし、Tclock1によっては、図14(1)よりもタイミングに余裕が発生する場合があり、DATA1においてタイミング違反とならない可能性が高くなる。したがって、図14(2)のようにレイテンシを導出した遅延値とした場合には、図14(1)のようにレジスタのレイテンシを、ワーストを考慮した遅延値とした場合よりも低消費電力化を図ることができる。
(実施例4にかかる設計装置100による設計処理手順例)
図15は、実施例4にかかる設計装置による設計処理手順例を示すフローチャートである。設計装置100は、タイミング制約情報311と、回路情報101と、セルライブラリ1000と、に基づいて、第1論理合成処理を行う(ステップS1501)。ステップS1501でのタイミングマージンは、例えば、20[%]である。
つぎに、設計装置100は、タイミング制約情報313と、第1ネットリスト102と、物理制約情報と、に基づいて、第1配置処理および配置の最適化処理を行う(ステップS1502)。ステップS1502でのタイミングマージンは、例えば、20[%]である。設計装置100は、第1レイアウトデータ314と、タイミング制約情報315と、に基づいて、第1クロックツリー生成処理およびクロックツリーの最適化処理を行う(ステップS1503)。ステップS1503でのタイミングマージンは、例えば、10[%]である。
そして、設計装置100は、レジスタの各々について、レイテンシの導出処理を行う(ステップS1504)。ステップS1504における導出処理は、図7で示したステップS704における導出処理と同じであるため、詳細な説明を省略する。つぎに、設計装置100は、第2論理合成処理を行う(ステップS1505)。具体的に、ステップS1505において、設計装置100は、タイミング制約情報319と、回路情報101と、セルライブラリ1000と、に基づいて、レジスタの各々についてのレイテンシが導出したレイテンシとなるように第2論理合成処理を行う。ステップS1505でのタイミングマージンは、第1論理合成処理時のタイミングマージンと同じ値である。そのため、ステップS1505は行わずに、ステップS1501において生成された第1ネットリスト102をつぎのステップS1506で利用してもよい。
つぎに、設計装置100は、第2ネットリスト104と、タイミング制約情報320と、物理制約情報と、に基づいて、導出したレイテンシに基づく第2配置処理および配置の最適化処理を行う(ステップS1506)。導出したレイテンシに基づく第2配置処理とは、レジスタのレイテンシが導出したレイテンシとなるように配置を行うことである。ステップS1506でのタイミングマージンは、例えば、14[%]である。そして、設計装置100は、第3レイアウトデータ321と、タイミング制約情報322と、に基づいて、第2クロックツリー生成処理およびクロックツリーの最適化処理を行う(ステップS1507)。ステップS1507でのタイミングマージンは、例えば、10[%]である。
つぎに、設計装置100は、配線処理および配線後の最適化処理を行う(ステップS1508)。そして、設計装置100は、消費電力の最適化処理を行う(ステップS1509)。ステップS1509でのタイミングマージンは、例えば、5[%]である。つぎに、設計装置100は、面積の最適化処理を行い(ステップS1510)、一連の処理を終了する。ステップS1510でのタイミングマージンは、例えば、5[%]である。
(実施例5)
実施例5は、2回目の配置処理の際に、1回目の配置処理およびクロックツリー生成処理によって得られる第2レイアウトデータ103によってレジスタの位置情報を抽出し、抽出したレジスタの位置情報に基づいて2回目の配置処理を行う。
図3に示した第2配置処理部308は、第2論理合成処理の処理結果と、第4タイミングマージンと、に基づいて、クロック供給源とレジスタとの間のクロック配線およびセルによる遅延値が導出した遅延値となるように第2配置処理を行う。第4タイミングマージンは、第3タイミングマージンよりも小さい。具体的に、第2配置処理部308によってレジスタの位置をレイアウトデータが示す対象回路に含まれるレジスタの位置とするために、抽出部306は、レイアウトデータからレジスタの位置を抽出する。
図16は、配置情報の抽出例を示す説明図である。抽出部306は、複数のレジスタの中から順にレジスタの配置情報を抽出する対象のレジスタとして選択する。ここでは、配置情報として、レジスタの位置を示す座標値と、レジスタの配置状態と、が抽出される。配置状態とは、例えば、レジスタのセルの回転または反転を示す情報である。ここでは、例えば、セルの回転または反転は、Rx,MX,MYなどで表す。
抽出部306は、例えば、レイアウトデータにおける座標系の原点を対象回路の左下とした場合に、レジスタの左下の座標値を抽出する。そして、抽出部306は、レジスタの配置状態を抽出する。Rxは、x°の回転を示し、MXはX軸でミラー反転を示し、MYはY軸でミラー反転を示す。reg1を例に挙げると、座標値は、(x,y)=(3000,3000)であり、配置状態はR0である。reg2を例に挙げると、座標値は、(x,y)=(3000,2000)であり、配置状態は、MXである。抽出部306は、レジスタの各々について、抽出した座標値と配置状態との組み合わせをレジスタ配置情報318に登録する。配置情報は、ROM202、RAM203、ディスク205などの記憶装置に記憶される。
図17は、配置情報例を示す説明図である。レジスタ配置情報318は、例えば、レジスタセルのインスタンス名と、X座標値と、Y座標値と、配置状態と、のフィールドを有する。各フィールドに情報が設定されることにより、配置情報1700として記憶される。
配置情報1700−1を例に挙げると、レジスタセルのインスタンス名のフィールドには「u_top/u_core/u_module1/reg1」が設定される。配置情報1700−1を例に挙げると、X座標値のフィールドには「1392」が設定され、Y座標値のフィールドには「957」が設定され、配置状態のフィールドには「R180」が設定される。
図18は、配置情報の使用例を示す説明図である。第2配置処理部308は、レジスタの各々について、レジスタ配置情報318に記述されたレジスタの位置とレジスタの配置状態とを、第2配置処理を行うアプリケーションが読み取り可能な物理制約の記述フォーマットに変換する。
具体的には、第2配置処理部308は、レジスタの各々について、「placeInstance」と「−fixed」との位置を固定する記述を物理制約情報1800に追加する。物理制約情報1800には、チップサイズ、対象回路に含まれる入力端子や出力端子の位置を示す端子位置情報、マクロの配置情報、配置禁止領域情報、ここで変換された記述を含む配置位置固定セルの配置情報、使用配線、最大配線長、などの情報が含まれる。
第2配置処理部308は、物理制約情報1800と、タイミング制約情報320と、第2ネットリスト104と、に基づいて、レジスタの各々について、レジスタの位置が、前記レイアウトデータが示す前記対象回路に含まれるレジスタの位置となるように配置処理を行う。タイミング制約情報は、第3タイミングマージンよりも小さい第4タイミングマージンが記述される。
(実施例5にかかる設計装置100による設計処理手順例)
図19は、実施例5にかかる設計装置による設計処理手順例を示すフローチャートである。まず、設計装置100は、タイミング制約情報311と、回路情報101と、セルライブラリ1000と、に基づいて、第1論理合成処理を行う(ステップS1901)。ステップS1901でのタイミングマージンは、例えば、20[%]である。
つぎに、設計装置100は、タイミング制約情報313と、第1ネットリスト102と、物理制約情報と、に基づいて、第1配置処理および配置の最適化処理を行う(ステップS1902)。ステップS1902でのタイミングマージンは、例えば、20[%]である。設計装置100は、第1レイアウトデータ314と、タイミング制約情報315と、に基づいて、第1クロックツリー生成処理およびクロックツリーの最適化処理を行う(ステップS1903)。ステップS1903でのタイミングマージンは、例えば、10[%]である。
そして、設計装置100は、レジスタの各々について、レイテンシの導出処理を行う(ステップS1904)。ステップS1904における導出処理は、図7で示したステップS704における導出処理と同じであるため、詳細な説明を省略する。つぎに、設計装置100は、レジスタの配置情報の抽出処理を行う(ステップS1905)。設計装置100は、タイミング制約情報319と、回路情報101と、セルライブラリ1000と、に基づいて、第2論理合成処理を行う(ステップS1906)。ステップS1906でのタイミングマージンは、第1論理合成処理時のタイミングマージンと同じ値である。そのため、ステップS1906は行わずに、ステップS1901において生成された第1ネットリスト102をつぎのステップS1907で利用してもよい。
つぎに、設計装置100は、第2ネットリスト104と、タイミング制約情報320と、物理制約情報1800と、に基づいて、導出したレイテンシに基づく第2配置処理および配置の最適化処理を行う(ステップS1907)。ステップS1907でのタイミングマージンは、例えば、12[%]である。ここでのタイミングマージンは、第1配置処理のタイミングマージンよりも小さいタイミングマージンである。そして、設計装置100は、第3レイアウトデータ321と、タイミング制約情報322と、に基づいて、第2クロックツリー生成処理およびクロックツリーの最適化処理を行う(ステップS1908)。ステップS1908でのタイミングマージンは、例えば、10[%]である。
つぎに、設計装置100は、配線処理および配線後の最適化処理を行う(ステップS1909)。そして、設計装置100は、消費電力の最適化処理を行う(ステップS1910)。ステップS1910でのタイミングマージンは、例えば、5[%]である。つぎに、設計装置100は、面積の最適化処理を行い(ステップS1911)、一連の処理を終了する。ステップS1911でのタイミングマージンは、例えば、5[%]である。
図20は、図19で示した配置情報の抽出処理(ステップS1905)の詳細な説明を示すフローチャートである。設計装置100は、抽出の対象となっていないいずれかのレジスタを選択する(ステップS2001)。
そして、設計装置100は、選択したレジスタの座標値をレイアウトデータから抽出する(ステップS2002)。つぎに、設計装置100は、選択したレジスタの配置状態を抽出する(ステップS2003)。そして、設計装置100は、選択したレジスタについて、抽出した座標値と抽出した配置状態を配置情報に記憶する(ステップS2004)。
つぎに、設計装置100は、全レジスタについて抽出したか否かを判断する(ステップS2005)。いずれかのレジスタについて抽出していないと判断された場合(ステップS2005:No)、設計装置100は、ステップS2001へ戻る。一方、全レジスタについて抽出したと判断された場合(ステップS2005:Yes)、設計装置100は、一連の処理を終了する。
また、図示など省略するが、実施例1では、実施例5のように配置情報を制約として与えてもよい。これにより、論理合成時に考慮したクロックスキューの再現性の向上を図ることができる。
また、図示など省略するが、実施例3と実施例5とを組み合わせてもよい。これにより、複数の設計段階でタイミングマージンを削減可能である。例えば、第2論理合成処理におけるタイミングマージンは、10[%]とし、第2配置処理におけるタイミングマージンは10[%]とする。したがって、よりデータパスの最適化を図ることができる。
また、図示など省略するが、実施例1と実施例4とを組み合わせてもよいし、実施例1と実施例4と実施例5とを組み合わせてもよい。また、実施例1と、実施例2と、実施例4と、実施例5と、を組み合わせてもよいし、実施例1と、実施例3と、実施例4と、実施例5と、を組み合わせてもよい。
図21は、動作速度と面積の相関例と消費電力の削減例を示す説明図である。グラフ2100には、クロック周波数と面積の相関を示す。グラフ2100によれば、実施例1を適用した場合には、論理合成後の対象回路の達成動作速度に対する面積を従来の場合と比較して10[%]程度小さくすることができる。したがって、面積の削減を図ることができ、動作速度の向上を図ることができる。
また、グラフ2101には、配置配線後のデータパスの消費電力量を示す。グラフ2101によれば、実施例1を適用した場合には、配置配線後のデータパスの消費電力量を従来と比較して低減させることができる。
図22は、レイテンシの再現性向上の実現例を示す説明図である。グラフ2200は、実施例1の場合における、1回目のクロックの最適化後の各レジスタのレイテンシと、2回目のクロック最適化後の各レジスタのレイテンシと、の相関を示す。また、グラフ2201は、実施例2と実施例5とを組み合わせた場合における、1回目のクロックの最適化後の各レジスタのレイテンシと、2回目のクロック最適化後の各レジスタのレイテンシと、の相関を示す。グラフ2200とグラフ2201によれば、相関係数R2が、実施例1の場合よりも実施例2と実施例5とを組み合わせた場合のほうが1に近い値である。このように、マージを行わずに、レジスタの配置を指定することにより、レイテンシの再現性の向上を図ることができる。
以上説明したように、設計装置100は、スキューを考慮したタイミングマージンに基づく1回目の論理合成処理結果による配置処理およびクロックツリー生成処理で得たレイアウトから求めたレイテンシとなるよう2回目の論理合成を行う。これにより、2回目の論理合成時のタイミングマージンの最適化を図ることができ、データパスの最適化を図ることができる。したがって、半導体集積回路の面積の縮小化、低消費電力化を図ることができる。
また、設計装置100は、第1論理合成処理と第2論理合成処理では、対象回路に含まれる複数のレジスタを同一のレジスタに併合する処理を行わない。これにより、1回目のクロックツリー生成後のレジスタのレイテンシと、2回目のクロックツリー生成後のレジスタのレイテンシと、の相関性の向上を図ることができる。したがって、2回目の論理合成時のタイミングマージンをより小さくできるため、データパスの最適化をより図ることができる。半導体集積回路の面積の縮小化、低消費電力化を図ることができる。
また、設計装置100は、第2論理合成処理において、第1論理合成処理の処理結果に基づいて、第1論理合成処理において対象回路に含まれる複数のレジスタを同一のレジスタに併合する処理の処理結果と同じ処理結果になるように併合する処理を行う。これにより、1回目のクロックツリー生成後のレジスタのレイテンシと、2回目のクロックツリー生成後のレジスタのレイテンシと、の相関性の向上を図ることができる。したがって、2回目の論理合成時のタイミングマージンをより小さくできるため、データパスの最適化をより図ることができる。半導体集積回路の面積の縮小化、低消費電力化を図ることができる。
また、設計装置100は、第2論理合成処理の処理結果と、第1配置処理における第3タイミングマージンよりも小さい第4タイミングマージンと、に基づいて、レジスタの各々について、レジスタのレイテンシが導出した遅延値となるように第2配置処理を行う。これにより、2回目の配置処理時のタイミングマージンの最適化を図ることができる。これにより、データパスの最適化を図ることができる。したがって、半導体集積回路の面積の縮小化、低消費電力化を図ることができる。
また、設計装置100は、第2論理合成処理の処理結果に基づいて、レジスタの各々について、レジスタの位置が、レイアウトデータが示す対象回路に含まれるレジスタの位置となるように第2配置処理を行う。これにより、1回目のクロックツリー生成後のレジスタのレイテンシと、2回目のクロックツリー生成後のレジスタのレイテンシと、の相関性の向上を図ることができる。したがって、データパスの最適化をより図ることができる。半導体集積回路の面積の縮小化、低消費電力化を図ることができる。
また、以上説明したように、設計装置100は、スキューを考慮したタイミングマージンに基づく1回目の配置及びクロックツリー生成で得たレイアウトから求めたレイテンシとなるよう2回目の配置処理を行う。これにより、2回目の配置処理時のタイミングマージンの最適化を図ることができる。これにより、データパスの最適化を図ることができる。したがって、半導体集積回路の面積の縮小化、低消費電力化を図ることができる。
また、設計装置100は、第2配置処理において、レジスタの各々について、レジスタの位置が、レイアウトデータが示す対象回路に含まれるレジスタの位置となるように行う。これにより、1回目のクロックツリー生成後のレジスタのレイテンシと、2回目のクロックツリー生成後のレジスタのレイテンシと、の相関性の向上を図ることができる。したがって、2回目の論理合成時のタイミングマージンをより小さくできるため、データパスの最適化をより図ることができる。半導体集積回路の面積の縮小化、低消費電力化を図ることができる。
なお、本実施の形態で説明した設計方法は、予め用意された設計プログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本設計プログラムは、磁気ディスク、光ディスク、USB(Universal Serial Bus)フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、設計プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)設計の対象回路の動作が記述された回路情報と、前記回路情報および第1タイミングマージンに基づき行われた第1論理合成処理の処理結果に基づく第1配置処理およびクロックツリー生成処理によって得られ前記対象回路に含まれるセルの位置と前記セル間の配線とを示すレイアウトデータと、を取得し、
取得した前記レイアウトデータに基づいて、前記対象回路に含まれるレジスタの各々について、前記対象回路に含まれ前記レジスタへクロック信号を供給するクロック供給源と前記レジスタとの間のクロック配線およびセルによる遅延値を導出し、
取得した前記回路情報と、前記第1タイミングマージンよりも小さい第2タイミングマージンと、に基づいて、前記レジスタの各々について、前記クロック供給源と前記レジスタとの間のクロック配線およびセルによる遅延値が前記導出した遅延値となるように第2論理合成処理を行う、
制御部を有することを特徴とする設計装置。
(付記2)前記第1論理合成処理と前記第2論理合成処理では、前記対象回路に含まれる複数のレジスタを同一のレジスタに併合する処理を行わないことを特徴とする付記1に記載の設計装置。
(付記3)前記第2論理合成処理では、前記第1論理合成処理の処理結果に基づいて、前記第1論理合成処理において前記対象回路に含まれる複数のレジスタを同一のレジスタに併合する処理の処理結果と同じ処理結果になるように前記併合する処理を行うことを特徴とする付記1に記載の設計装置。
(付記4)前記第1配置処理は、前記第1論理合成処理の処理結果と、第3タイミングマージンと、に基づいて行われ、
前記制御部は、
前記第2論理合成処理の処理結果と、前記第3タイミングマージンよりも小さい第4タイミングマージンと、に基づいて、前記クロック供給源と前記レジスタとの間のクロック配線およびセルによる遅延値が導出した前記遅延値となるように第2配置処理を行う、
ことを特徴とする付記1〜3のいずれか一つに記載の設計装置。
(付記5)前記制御部は、
前記第2論理合成処理の処理結果に基づいて、前記レジスタの各々について、前記レジスタの位置が、前記レイアウトデータが示す前記対象回路に含まれるレジスタの位置となるように第2配置処理を行う、
ことを特徴とする付記1〜4のいずれか一つに記載の設計装置。
(付記6)設計の対象回路の動作が記述された回路情報と、前記回路情報に基づき行われた論理合成処理の処理結果と第1タイミングマージンとに基づく第1配置処理、およびクロックツリー生成処理によって得られ前記対象回路に含まれるセルの位置と前記セル間の配線とを示すレイアウトデータと、を取得し、
取得した前記レイアウトデータに基づいて、前記対象回路に含まれるレジスタの各々について、前記対象回路に含まれ前記レジスタへクロック信号を供給するクロック供給源と前記レジスタとの間のクロック配線およびセルによる遅延値を導出し、
取得した前記論理合成処理の処理結果と、前記第1タイミングマージンよりも小さい第2タイミングマージンと、に基づいて、前記レジスタの各々について、前記クロック供給源と前記レジスタとの間のクロック配線およびセルによる遅延値が前記導出した遅延値となるように第2配置処理を行う、
制御部を有することを特徴とする設計装置。
(付記7)前記第2配置処理は、前記レジスタの各々について、前記レジスタの位置が、前記レイアウトデータが示す前記対象回路に含まれるレジスタの位置となるように行うことを特徴とする付記6に記載の設計装置。
(付記8)コンピュータに、
設計の対象回路の動作が記述された回路情報と、前記回路情報および第1タイミングマージンに基づき行われた第1論理合成処理の処理結果に基づく配置処理およびクロックツリー生成処理によって得られ前記対象回路に含まれるセルの位置と前記セル間の配線とを示すレイアウトデータと、を取得し、
取得した前記レイアウトデータに基づいて、前記対象回路に含まれるレジスタの各々について、前記対象回路に含まれ前記レジスタへクロック信号を供給するクロック供給源と前記レジスタとの間のクロック配線およびセルによる遅延値を導出し、
取得した前記回路情報と、前記第1タイミングマージンよりも小さい第2タイミングマージンと、に基づいて、前記レジスタの各々について、前記クロック供給源と前記レジスタとの間のクロック配線およびセルによる遅延値が前記導出した遅延値となるように第2論理合成処理を行う、
処理を実行させることを特徴とする設計プログラム。
(付記9)コンピュータが、
設計の対象回路の動作が記述された回路情報と、前記回路情報および第1タイミングマージンに基づき行われた第1論理合成処理の処理結果に基づく配置処理およびクロックツリー生成処理によって得られ前記対象回路に含まれるセルの位置と前記セル間の配線とを示すレイアウトデータと、を取得し、
取得した前記レイアウトデータに基づいて、前記対象回路に含まれるレジスタの各々について、前記対象回路に含まれ前記レジスタへクロック信号を供給するクロック供給源と前記レジスタとの間のクロック配線およびセルによる遅延値を導出し、
取得した前記回路情報と、前記第1タイミングマージンよりも小さい第2タイミングマージンと、に基づいて、前記レジスタの各々について、前記クロック供給源と前記レジスタとの間のクロック配線およびセルによる遅延値が前記導出した遅延値となるように第2論理合成処理を行う、
処理を実行することを特徴とする設計方法。
100 設計装置
101 回路情報
102 第1ネットリスト
103 レイアウトデータ,第2レイアウトデータ
104 第2ネットリスト
111 クロック端子
112,reg1,reg2 レジスタ
113〜115 クロックバッファ
301 第1論理合成処理部
302 第1配置処理部
303 第1クロックツリー生成処理部
304 取得部
305 導出部
306 抽出部
307 第2論理合成処理部
308 第2配置処理部
309 第2クロックツリー生成処理部
311,313,315,319,320,322 タイミング制約情報
312 インスタンス名変更ログ
314 第1レイアウトデータ
316 レイテンシ情報
317 レジスタマージ情報
318 レジスタ配置情報
321 第3レイアウトデータ
323 第4レイアウトデータ
1000 セルライブラリ
1800 物理制約情報
d 遅延値

Claims (7)

  1. 設計の対象回路の動作が記述された回路情報と、前記回路情報および第1タイミングマージンに基づき行われた第1論理合成処理の処理結果に基づく第1配置処理およびクロックツリー生成処理によって得られ前記対象回路に含まれるセルの位置と前記セル間の配線とを示すレイアウトデータと、を取得し、
    取得した前記レイアウトデータに基づいて、前記対象回路に含まれるレジスタの各々について、前記対象回路に含まれ前記レジスタへクロック信号を供給するクロック供給源と前記レジスタとの間のクロック配線およびセルによる遅延値を導出し、
    取得した前記回路情報と、前記第1タイミングマージンよりも小さい第2タイミングマージンと、に基づいて、前記レジスタの各々について、前記クロック供給源と前記レジスタとの間のクロック配線およびセルによる遅延値が前記導出した遅延値となるように第2論理合成処理を行う、
    制御部を有することを特徴とする設計装置。
  2. 前記第1論理合成処理と前記第2論理合成処理では、前記対象回路に含まれる複数のレジスタを同一のレジスタに併合する処理を行わないことを特徴とする請求項1に記載の設計装置。
  3. 前記第2論理合成処理では、前記第1論理合成処理の処理結果に基づいて、前記第1論理合成処理において前記対象回路に含まれる複数のレジスタを同一のレジスタに併合する処理の処理結果と同じ処理結果になるように前記併合する処理を行うことを特徴とする請求項1に記載の設計装置。
  4. 前記第1配置処理は、前記第1論理合成処理の処理結果と、第3タイミングマージンと、に基づいて行われ、
    前記制御部は、
    前記第2論理合成処理の処理結果と、前記第3タイミングマージンよりも小さい第4タイミングマージンと、に基づいて、前記クロック供給源と前記レジスタとの間のクロック配線およびセルによる遅延値が導出した前記遅延値となるように第2配置処理を行う、
    ことを特徴とする請求項1〜3のいずれか一つに記載の設計装置。
  5. 前記制御部は、
    前記第2論理合成処理の処理結果に基づいて、前記レジスタの各々について、前記レジスタの位置が、前記レイアウトデータが示す前記対象回路に含まれるレジスタの位置となるように第2配置処理を行う、
    ことを特徴とする請求項1〜4のいずれか一つに記載の設計装置。
  6. コンピュータに、
    設計の対象回路の動作が記述された回路情報と、前記回路情報および第1タイミングマージンに基づき行われた第1論理合成処理の処理結果に基づく配置処理およびクロックツリー生成処理によって得られ前記対象回路に含まれるセルの位置と前記セル間の配線とを示すレイアウトデータと、を取得し、
    取得した前記レイアウトデータに基づいて、前記対象回路に含まれるレジスタの各々について、前記対象回路に含まれ前記レジスタへクロック信号を供給するクロック供給源と前記レジスタとの間のクロック配線およびセルによる遅延値を導出し、
    取得した前記回路情報と、前記第1タイミングマージンよりも小さい第2タイミングマージンと、に基づいて、前記レジスタの各々について、前記クロック供給源と前記レジスタとの間のクロック配線およびセルによる遅延値が前記導出した遅延値となるように第2論理合成処理を行う、
    処理を実行させることを特徴とする設計プログラム。
  7. コンピュータが、
    設計の対象回路の動作が記述された回路情報と、前記回路情報および第1タイミングマージンに基づき行われた第1論理合成処理の処理結果に基づく配置処理およびクロックツリー生成処理によって得られ前記対象回路に含まれるセルの位置と前記セル間の配線とを示すレイアウトデータと、を取得し、
    取得した前記レイアウトデータに基づいて、前記対象回路に含まれるレジスタの各々について、前記対象回路に含まれ前記レジスタへクロック信号を供給するクロック供給源と前記レジスタとの間のクロック配線およびセルによる遅延値を導出し、
    取得した前記回路情報と、前記第1タイミングマージンよりも小さい第2タイミングマージンと、に基づいて、前記レジスタの各々について、前記クロック供給源と前記レジスタとの間のクロック配線およびセルによる遅延値が前記導出した遅延値となるように第2論理合成処理を行う、
    処理を実行することを特徴とする設計方法。
JP2014247481A 2014-12-05 2014-12-05 設計装置、設計プログラム、および設計方法 Pending JP2016110408A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014247481A JP2016110408A (ja) 2014-12-05 2014-12-05 設計装置、設計プログラム、および設計方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014247481A JP2016110408A (ja) 2014-12-05 2014-12-05 設計装置、設計プログラム、および設計方法

Publications (1)

Publication Number Publication Date
JP2016110408A true JP2016110408A (ja) 2016-06-20

Family

ID=56122279

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014247481A Pending JP2016110408A (ja) 2014-12-05 2014-12-05 設計装置、設計プログラム、および設計方法

Country Status (1)

Country Link
JP (1) JP2016110408A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10928442B2 (en) 2017-02-10 2021-02-23 Samsung Electronics Co., Ltd. Computer implemented methods and computing systems for designing integrated circuits by considering back-end-of-line

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10928442B2 (en) 2017-02-10 2021-02-23 Samsung Electronics Co., Ltd. Computer implemented methods and computing systems for designing integrated circuits by considering back-end-of-line

Similar Documents

Publication Publication Date Title
US8863049B1 (en) Constraining traces in formal verification
US8594988B1 (en) Method and apparatus for circuit simulation using parallel computing
US8713506B2 (en) System and method for employing signoff-quality timing analysis information concurrently in multiple scenarios to reduce dynamic power in an electronic circuit and an apparatus incorporating the same
US9141742B2 (en) Priori corner and mode reduction
US8037443B1 (en) System, method, and computer program product for optimizing an altered hardware design utilizing power reports
US9842187B1 (en) Representation of complex timing characteristics of startpoint-endpoint pairs in a circuit design
US11003821B1 (en) Deterministic loop breaking in multi-mode multi-corner static timing analysis of integrated circuits
Hyman et al. A clock control strategy for peak power and RMS current reduction using path clustering
US9449127B1 (en) System for verifying timing constraints of IC design
JP4200465B2 (ja) 半導体集積回路の設計方法及び設計システム
JP6787045B2 (ja) 検証支援プログラム、検証支援方法、および情報処理装置
JP5830955B2 (ja) 検証装置、検証方法及び検証プログラム
JP2016110408A (ja) 設計装置、設計プログラム、および設計方法
US9965581B1 (en) Fanout optimization to facilitate timing improvement in circuit designs
US20140040845A1 (en) System and method for employing side transition times from signoff-quality timing analysis information to reduce leakage power in an electronic circuit and an electronic design automation tool incorporating the same
Semba et al. Comparison of RTL conversion and GL conversion from synchronous circuits to asynchronous circuits
US8959467B2 (en) Structural rule analysis with TCL scripts in synthesis or STA tools and integrated circuit design tools
US20220327269A1 (en) Computing device and method for detecting clock domain crossing violation in design of memory device
Garg Common path pessimism removal: An industry perspective: Special session: Common path pessimism removal
Wu et al. Asynchronous circuit placement by lagrangian relaxation
JP2008243092A (ja) マルチサイクルパス検出装置、マルチサイクルパス検出方法及びマルチサイクルパス検出プログラム
US6532584B1 (en) Circuit synthesis method
Ewetz et al. Construction of latency-bounded clock trees
Minnella et al. Mix & Latch: An Optimization Flow for High-Performance Designs With Single-Clock Mixed-Polarity Latches and Flip-Flops
US10157253B2 (en) Multi-bit-mapping aware clock gating