(57)【要約】【課題】半導体集積回路の設計において、設計した論理回路の論理機能やタイミングをＲＴＬシミュレーションで効率的に検証できるようにするとともに、該検証結果に基づいて設計工程の上流側での修正を可能とする。【解決手段】動作合成手段２は、動作記述１からＲＴＬ記述への変換を行い、対応表生成手段３は、動作記述１、ＲＴＬ記述４、及び動作合成の各工程の処理内容を参照して、動作記述１の各ブロック及びＲＴＬ記述４における状態の対応表を生成する。論理シミュレーション手段６は、ＲＴＬ記述４に対する論理シミュレーションを行い、レイテンシ解析手段７は、該シミュレーション結果と対応表の対応関係とを参照して、動作記述１における各ブロックでのレイテンシを求める。【選択図】図１
2008204111.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアが行う処理のアルゴリズムを動作レベルで記述した動作記述を読み込み、レジスタやクロック同期を含むハードウェア特有の概念を意識して記述したＲＴＬ記述を生成する半導体集積回路の設計支援装置において、
前記ＲＴＬ記述に対する論理シミュレーションの結果を解析して、前記動作記述における所定単位の動作を表す各ブロックでのレイテンシを求めるレイテンシ解析手段を有することを特徴とする半導体集積回路の設計支援装置。
【請求項２】
前記動作記述における前記各ブロックと、前記ＲＴＬ記述における状態との対応表を生成する対応表生成手段をさらに有することを特徴とする請求項１に記載の半導体集積回路の設計支援装置。
【請求項３】
前記レイテンシ解析手段は、前記論理シミュレーションの結果と、前記対応表生成手段により生成された対応表とを参照して、前記動作記述における前記各ブロックでのレイテンシを求めることを特徴とする請求項２に記載の半導体集積回路の設計支援装置。
【請求項４】
ハードウェアが行う処理のアルゴリズムを動作レベルで記述した動作記述を読み込み、レジスタやクロック同期を含むハードウェア特有の概念を意識して記述したＲＴＬ記述を生成する半導体集積回路の設計支援方法において、
前記ＲＴＬ記述に対する論理シミュレーションの結果を解析して、前記動作記述における所定単位の動作を表す各ブロックでのレイテンシを求めるレイテンシ解析工程を有することを特徴とする半導体集積回路の設計支援方法。
【請求項５】
前記動作記述における前記各ブロックと、前記ＲＴＬ記述における状態との対応表を生成する対応表生成工程をさらに有することを特徴とする請求項４に記載の半導体集積回路の設計支援方法。
【請求項６】
前記レイテンシ解析工程は、前記論理シミュレーションの結果と、前記対応表生成工程により生成された対応表とを参照して、前記動作記述における前記各ブロックでのレイテンシを求めることを特徴とする請求項５に記載の半導体集積回路の設計支援方法。
【請求項７】
請求項４から６のいずれか１項に記載の半導体集積回路の設計支援方法を用いて回路を設計しレイアウトを作成する設計工程と、
前記設計工程により設計された回路のレイアウトに基づいてフォトマスクを生成する生成工程と、
前記生成工程により生成されたフォトマスクのパターンを半導体ウエハに転写する転写工程と、
を有することを特徴とする半導体集積回路の製造方法。
【請求項８】
請求項４から６のいずれか１項に記載の半導体集積回路の設計支援方法を、その設計支援装置に実行させるためのプログラム。
【請求項９】
請求項８に記載のプログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の設計支援装置、その設計支援方法、その製造方法、プログラム、及び記録媒体に関し、特に、動作合成ツールを用いて行われる半導体集積回路の設計において好適に適用される技術に関するものである。
【背景技術】
【０００２】
半導体製造技術の進歩により、半導体の集積度は非常に速い速度で高まってきており、これによりＬＳＩ（Large Scale Integration）は規模、複雑さが年々増している。一方で、ＬＳＩを搭載する電子機器製品のライフサイクルは短くなる傾向にあることからも、回路設計期間の短縮化が望まれている。ところが、ＬＳＩが大規模化、複雑化するに従い、従来の設計手法は限界にきていると考えられており、近年では、より高い抽象度で設計を記述する手法に注目が集まっている。また、そのためのＥＤＡ（Electronic Design Automation：電子設計自動化）ツールも各種提案されている。
【０００３】
このＥＤＡツールの１つとして注目を浴びているのが動作合成ツールである。動作合成ツールは、ハードウェアの動作を表現する動作記述から、論理合成ツールに入力するＲＴＬ（Register Transfer Level：レジスタ転送レベル）記述を生成するツールである。動作記述は、ハードウェアに実行させる処理のアルゴリズムを直接的に動作レベルで記述したものでクロックサイクルの概念はない。他方、ＲＴＬ記述は、レジスタやクロック同期等のハードウェアに特有の概念を意識して記述したものである。動作合成ツールでは、動作記述からＲＴＬ記述を自動的に合成することにより、設計の抽象度を上げることができる。
【０００４】
動作記述の最大の特徴は、各クロックサイクルでどのような演算（加算、乗算、比較等）をするかについては明示的には記述せず、単に演算のみを記述するという点である。ＲＴＬ記述に比べて動作レベル記述には以下の利点があるとされている。
・ＲＴＬ記述に比べて記述量が少なくて済む。
・動作レベルでのシミュレーションの方が、ＲＴＬシミュレーションよりシミュレーション速度が速い。
【０００５】
ところで、動作合成ツールを使ってＲＴＬ記述を生成した場合、そのＲＴＬ記述のレイテンシを調べる必要がある。レイテンシとは、入力された総データに対して処理をすべて完了するのに必要な総クロックサイクル数のことである。通常、このレイテンシは入力するデータの種類に依存する。このため、ＲＴＬ記述に対する論理シミュレーション（以下、ＲＴＬシミュレーションという）を実施し、そのシミュレーション結果からレイテンシを求める。このＲＴＬシミュレーションをせずにレイテンシを求めることができる場合もあるが、そうでない場合が多い。
【０００６】
ＲＴＬシミュレーションを実施しないとレイテンシがわからない場合について、図４の例を使って説明する。図４は動作レベルの記述例である。これを動作合成ツールに入力して、ＲＴＬ記述を生成したとき、ＲＴＬ記述において、ブロックＡ４１の総処理サイクル数とブロックＢ４２の総処理サイクル数はＲＴＬシミュレーション前には分からない（なお、ブロックは所定単位の動作を表す部分）。これは、ブロックＡ４１やブロックＢ４２の実行される回数が、処理すべき入力データによって異なる場合があるからである。
【０００７】
例えば、ブロックＡ４１の処理では２クロックサイクルが必要で、ブロックＢ４２の処理では３クロックサイクルが必要であるとする。動作合成ツールによりＲＴＬ記述が生成され、このＲＴＬ記述に対して、ある処理すべきデータを入力して論理シミュレーションを実行した結果、ブロックＡ４１が１００万回実行され、ブロックＢ４２は１万回実行されたとする。この結果、ブロックＡ４１における総レイテンシは、２×１００万回＝２００万クロックサイクルであり、ブロックＢ４２における総レイテンシは、３×１万回＝３万クロックサイクルとなる。つまり、このデータに対して総レイテンシを減らしたい場合には、ブロックＢ４２ではなくブロックＡ４１の処理サイクルを減らすための対策を採ることが必要となる。また、別の入力データを使ってＲＴＬシミュレーションした場合は、逆にブロックＢ４２の総レイテンシがブロックＡ４１の総レイテンシよりも多くなる可能性もある。
【０００８】
また、ＲＴＬシミュレーションを行わずに最悪ケースのレイテンシを求める手法も考えられているようだが、実用には至らず、依然ＲＴＬミュレーションによるレイテンシ計測が主要となっている。さらに、ＲＴＬシミュレーションによるレイテンシを計測した場合、目的とする機能が所望のレイテンシで完了しない場合がある。この場合は、動作記述に立ち戻り、該動作記述においてどの部分で多数のクロックサイクルを消費しているかを調べる必要がある。しかし、動作記述のどの部分でレイテンシが多くなっているのかを調べることは、現状では非常に面倒な作業となっている。
【０００９】
例えば特許文献１では、ＲＴＬ記述上のパスと動作記述上のパスとの対応関係を特定する方法が開示されている。当該発明では、論理合成によりＲＴＬ記述から変換されたゲート記述（ゲートレベル論理回路）での静的タイミング解析において、クリティカルパス（回路中最も遅延が大きいパス）の遅延を小さくする修正を効率良く行うことを狙いとしている。
【特許文献１】特開２００６−２８５８６５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上述した状況に鑑み、本発明は、半導体集積回路の設計において、設計した論理回路の論理機能やタイミングをＲＴＬシミュレーションで効率的に検証できるようにするとともに、該検証結果に基づいて設計工程の上流側での修正を可能とすることを目的とする。
【課題を解決するための手段】
【００１１】
かかる目的を達成するために、本発明は、ハードウェアが行う処理のアルゴリズムを動作レベルで記述した動作記述を読み込み、レジスタやクロック同期を含むハードウェア特有の概念を意識して記述したＲＴＬ記述を生成する半導体集積回路の設計支援装置において、前記ＲＴＬ記述に対する論理シミュレーションの結果を解析して、前記動作記述における所定単位の動作を表す各ブロックでのレイテンシを求めるレイテンシ解析手段を有することを特徴とする。
【００１２】
また、上記に加えて、前記動作記述における前記各ブロックと、前記ＲＴＬ記述における状態との対応表を生成する対応表生成手段をさらに有するように構成してもよい。
【００１３】
また、さらに、前記レイテンシ解析手段は、前記論理シミュレーションの結果と、前記対応表生成手段により生成された対応表とを参照して、前記動作記述における前記各ブロックでのレイテンシを求めるように構成してもよい。
【００１４】
また、他の態様として、ハードウェアが行う処理のアルゴリズムを動作レベルで記述した動作記述を読み込み、レジスタやクロック同期を含むハードウェア特有の概念を意識して記述したＲＴＬ記述を生成する半導体集積回路の設計支援方法において、前記ＲＴＬ記述に対する論理シミュレーションの結果を解析して、前記動作記述における所定単位の動作を表す各ブロックでのレイテンシを求めるレイテンシ解析工程を有することを特徴とする。
【００１５】
また、上記に加えて、前記動作記述における前記各ブロックと、前記ＲＴＬ記述における状態との対応表を生成する対応表生成工程をさらに有するように構成してもよい。
【００１６】
また、さらに、前記レイテンシ解析工程は、前記論理シミュレーションの結果と、前記対応表生成工程により生成された対応表とを参照して、前記動作記述における前記各ブロックでのレイテンシを求めるように構成してもよい。
【００１７】
また、他の態様として、上記の設計支援方法を用いて回路を設計しレイアウトを作成する設計工程と、前記設計工程により設計された回路のレイアウトに基づいてフォトマスクを生成する生成工程と、前記生成工程により生成されたフォトマスクのパターンを半導体ウエハに転写する転写工程と、を有することを特徴とする半導体集積回路の製造方法であってもよい。
【００１８】
また、他の態様として、上記の設計支援方法を半導体集積回路の設計支援装置に実行させるためのプログラムであってもよい。
【００１９】
また、他の態様として、上位プログラムを記録した記録媒体であってもよい。
【発明の効果】
【００２０】
本発明によれば、半導体集積回路の設計において、設計した論理回路の論理機能やタイミングをＲＴＬシミュレーションで効率的に検証できるとともに、該検証結果に基づいて設計工程の上流側での修正することが可能となる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照しながら本発明の実施形態について説明する。
【００２２】
図１は、本発明の実施形態に係る半導体集積回路の設計支援装置の概略構成を示した機能ブロック図である。本実施形態の設計支援装置は、動作合成手段２、論理シミュレーション手段６、及びレイテンシ情報表示手段９を備える。
【００２３】
動作合成手段２は、対応表生成手段３を有しており、動作記述１を読み込んでＲＴＬ記述４と対応表３とを生成する。なお、動作合成のアルゴリズムは既存のものを使用する。
対応表５は、動作記述１における各ブロックがＲＴＬ記述４内でのステートマシン（状態遷移機械）におけるどの状態に対応するのかを示す情報である。ここでいうブロックは、所定単位の動作を表す部分で、例えば図４に示すように、Ｃ言語での中括弧（"｛","｝"）にて囲まれた部分（ブロック４１及び４２）を意味する。
【００２４】
対応表５の例を図２に示す。ここで対応表５は、ブロック名、開始状態、終了状態の３つの情報から構成される。ブロック名は、動作記述１における各ブロックを示している。ブロック名のつけ方の例としては、「ファイル名＿行番号＿ブロックの種類」がある。ブロックの種類としては、「ｉｆ」や「ｃａｓｅ」といったものが挙げられるが、このブロック名のつけ方は例示であって、本発明ではこれに限るものではない。開始状態とは、ブロックの実行が開始される状態を示す。ここでいう状態の例として、ＲＴＬ記述４中のステートマシン（有限状態機械）における各状態が挙げられる。もちろん、ステートマシンの状態ではなく、ＲＴＬ記述４中におけるファイル名や行番号等を用いて開始状態を表現してもよい。また、終了状態とは、ブロックの実行が完了する状態を示す。以後の説明では、図２中のブロック「ｆｉｌｅ１＿１０２＿ｉｆ」は図４のブロック４１に対応し、ブロック「ｆｉｌｅ１＿１０４＿ｅｌｓｅ」は図４のブロック４２に対応しているものとする。
【００２５】
対応表生成手段３は、動作記述１と、動作合成手段２が動作記述１から自動変換したＲＴＬ記述４とから、動作記述１における各ブロック及びＲＴＬ記述４における状態の対応表５を生成する。具体的には、まず動作記述１を所定単位の動作であるブロックに分け、次いで、動作合成における各過程（ＣＤＦＧ（Control Data Flow Graph）変換、スケジューリング、アロケーション（データパス割り当て）、ステートマシン生成等）の内容を参照し、ＲＴＬ記述４での状態が動作記述１のどのブロックに該当するかを特定する。そして、該当ブロックに相当する状態の範囲がわかるように、ブロック最初の状態と最後の状態を開始状態及び終了状態として特定する。
【００２６】
論理シミュレーション手段６は、レイテンシ解析手段７を有しており、ＲＴＬ記述４に対して論理シミュレーションを実施し、レイテンシ解析手段７により、論理シミュレーション結果及び対応表５を参照しながら動作記述１における各ブロックのレイテンシを求める。そして、レイテンシ情報表示手段９は、求められた各ブロックのレイテンシを表示する。
【００２７】
レイテンシ解析手段７では、ＲＴＬ記述に対する論理シミュレーション結果から状態遷移を監視する。以下、図２を参照して具体的に説明する。図２の対応表では状態Ｓ１０が開始状態、状態Ｓ２１が終了状態と示されている。そこで、状態Ｓ１０に到達したらブロック４１（ｆｉｌｅ＿１０２＿ｉｆ）の実行が開始されたと認識し、そしてさらにシミュレーションが進み状態Ｓ２１に到達したら同ブロックの実行が完了したと認識する。そして、状態Ｓ２１の時刻と状態Ｓ１０の時刻の差分をタイマ等で計算し、ブロック４１（ｆｉｌｅ＿１０２＿ｉｆ）でのレイテンシとして記憶しておく。また、ブロック４１（ｆｉｌｅ＿１０２＿ｉｆ）が再度実行された場合は、同様の方法でレイテンシを計算し、以前に求めたレイテンシに加算していく。図２に示すように、状態Ｓ１０と状態Ｓ２１の対応のほか、状態Ｓ１２の開始状態と状態３０の終了状態の対応が特定されており、ブロックの開始状態は1つとは限らない。
【００２８】
図３は、レイテンシ解析手段７で求めた各ブロックの総レイテンシをレイテンシ情報表示手段９が表示する場合の例を示したものである。図３ではブロックのみが表示されているが、さらに関数ごとのレイテンシ情報等を表示することもできる。
【００２９】
（処理のフロー）
図５は、本実施形態において動作記述における各ブロックの総レイテンシを求める処理動作の流れを示したフローチャートである。
【００３０】
まず、ある処理を実行するためのアルゴリズムを直接的に動作レベルで表現する動作記述を作成する（ステップＳ１０１）。次に、動作合成手段により動作記述からＲＴＬ記述への自動変換を行う（ステップＳ１０２）。なお、動作合成は、先述したとおり、ＣＤＦＧ（Control Data Flow Graph）変換、スケジューリング、アロケーション（データパス割り当て）、ステートマシン生成等の各工程を経て行う。動作合成によりＲＴＬ記述を得た後（ステップＳ１０３）、対応表生成手段により、動作記述、ＲＴＬ記述、動作合成の各工程を参照して対応表の生成を行う（ステップＳ１０４）。
【００３１】
対応表が得られたら（ステップＳ１０５）、ＲＴＬ記述に対して論理シミュレーションを行い、設計した論理回路の論理機能やタイミングの検証を行う（ステップＳ１０６）。そして、対応表による動作記述の各ブロック及びＲＴＬ記述における状態の対応関係と、該検証結果（ステップＳ１０７）とから、動作レベル記述における各ブロックの総レイテンシを求めるべくレイテンシ解析を行う（ステップＳ１０８）。各ブロックの総レイテンシが得られた後（ステップＳ１０９）、これをレイテンシ情報としてレイテンシ情報表示手段により表示する（ステップＳ１１０）。
【００３２】
なお、本実施形態では、対応表生成手段３が動作合成手段２に含まれ、論理シミュレーション手段６がレイテンシ解析手段７を包含するように構成しているが、動作合成手段２と対応表生成手段３とを独立して構成してもよいし、また、論理シミュレーション手段６とレイテンシ解析手段７とを別個に構成してもよい。この場合、ＲＴＬ記述の自動変換機能と対応表生成機能とは分離され、各機能を動作合成手段２及び対応表生成手段３が有することとなり、論理シミュレーション機能とレイテンシ解析機能とは分離され、それぞれを論理シミュレーション手段６及びレイテンシ解析手段７が有することとなる。
【００３３】
上記の実施形態によれば、動作記述における各ブロックとＲＴＬ記述における状態との対応表を作成し、ＲＴＬシミュレーション結果と照らし合わせることにより、動作記述における各ブロックにおけるレイテンシを容易に求めることができる。これにより、レイテンシを削減するために動作記述のどの部分を修正するのが効果的かを容易に知ることができる。
【００３４】
なお、上述する実施形態は、本発明の好適な実施形態であり、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
【００３５】
すなわち、上記した実施形態の設計支援装置は、プログラムの命令によりコンピュータ（ＣＰＵ等）で実行される処理等によって動作する。当該プログラムは、コンピュータの各構成要素に指令を送り、先に述べたような所定の処理、例えば、ＣＰＵにより、動作記述からＲＴＬ記述と対応表を生成し、論理シミュレーションにおいてＲＴＬ記述及び対応表を参照して動作記述の各ブロックの総レイテンシを求める。このように、上記実施形態の設計支援装置における各処理は、プログラムとコンピュータとが協働した具体的手段によって実現されるものである。
【００３６】
そして、上記実施形態の機能を実現するソフトウェアのプログラムコードを記録したコンピュータ読み取り可能な記録媒体、すなわち記憶メディアを介して、設計支援装置のコンピュータが記憶メディアに格納されたプログラムコードを読み出し実行することによっても、本発明の目的は達成される。また、プログラムは、記録メディアを介さず、通信回線を通じて直接に設計支援装置のコンピュータにロードし実行することもでき、これによっても同様に本発明の目的は達成される。
【００３７】
この場合、記憶メディアから読み出された又は通信回線を通じてロードし実行されたプログラムコード自体が前述の実施形態の処理機能を実現することになる。そして、そのプログラムコードを記憶した記憶メディアは本発明を構成する。なお、プログラムコードを供給するための記憶メディアとしては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、不揮発性のメモリカード、ＲＯＭ、磁気テープ等を用いることができる。
【００３８】
また、先に述べた設計支援方法を用いて回路を設計してレイアウトを作成し、設計された回路のレイアウトに基づいてフォトマスクを生成して、生成されたフォトマスクのパターンを半導体ウエハに転写して半導体集積回路を製造することによっても、本発明は実効的に実施される。
【図面の簡単な説明】
【００３９】
【図１】本発明の実施形態に係る半導体集積回路の設計支援装置の概略構成を示した機能ブロック図である。
【図２】本発明の実施形態における動作記述の各ブロック及びＲＴＬ記述における状態の対応表の例を示した図である。
【図３】本発明の実施形態におけるレイテンシ情報の表示の例を示した図である。
【図４】本発明の実施形態における動作記述の例を示した図である。
【図５】本発明の実施形態における動作記述の各ブロックの総レイテンシを求める処理動作の流れを示したフローチャートである。
【符号の説明】
【００４０】
１    動作記述
２    動作合成手段
３    対応表生成手段
４    ＲＴＬ記述
５    対応表
６    論理シミュレーション手段
７    レイテンシ解析手段
８    レイテンシ情報
９    レイテンシ情報表示手段
４１    ブロックＡ
４２    ブロックＢ
【図１】
2008204111.tif 000003
【図２】
2008204111.tif 000004
【図３】
2008204111.tif 000005
【図４】
2008204111.tif 000006
【図５】
2008204111.tif 000007