(57)【要約】【課題】ＤｉｒｔｙＲＴＬの論理合成の精度を高めることができる論理合成装置を提供する。【解決手段】仕様書読込部３がブロックの端子名、Ｉ／Ｏ種別、周波数、割合、同期クロックの各項目が設定されている仕様書ファイル１１ｂ、１２ｂ、１３ｂを読み込む。そして、仕様書読込部３が読み込んだ仕様書ファイル１１ｂ、１２ｂ、１３ｂからクロック端子をクロック認識部４が認識し、入出力タイミングを入出力端子認識部６が認識する。そして、クロック制約生成部５が各ブロックのクロック制約情報を生成し、入出力制約生成部７が各ブロックの入出力端子の制約情報を生成する。そして、クロック制約生成部５が生成した制約情報と入出力制約生成部７が生成した制約情報に基づいて、ブロック合成処理部８が、各ブロックのＲＴＬソースを読み込んで論理合成を行う。【選択図】図１
2015127847.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路を構成するブロックのＲＴＬ回路情報を読み込むＲＴＬ読込手段と、前記ＲＴＬ読込手段が読み込んだ前記ＲＴＬ回路情報に対して論理合成手段に論理合成を行わせ論理回路を合成させる論理合成実行手段と、を有する論理合成装置において、
前記ブロックのクロック信号に関する情報と、前記ブロックの入力端子及び出力端子のタイミング制約情報と、を含むブロック情報を読み込むブロック情報読込手段と、
前記ブロック情報読込手段が読み込んだ前記ブロック情報に基づいて前記論理合成手段が用いる論理合成制約情報を生成する論理合成制約情報生成手段と、を有し、
前記論理合成実行手段が、前記ＲＴＬ読込手段が読み込んだ前記ＲＴＬ回路情報及び前記論理合成制約情報生成手段が生成した前記論理合成制約情報に基づいて前記論理合成手段に論理合成を行わせる、
ことを特徴とする論理合成装置。
【請求項２】
前記ブロック情報に接続先のブロックの情報である接続先情報を更に含み、
前記論理合成手段の結果および前記接続先情報に基づいて前記ブロックの境界にあるセルの段数をカウントするカウント手段と、
前記カウント手段がカウントした前記ブロックの境界にあるセルの段数から前記タイミング制約情報に含まれている前記タイミング制約情報を修正するタイミング制約情報修正手段と、を有し、
前記論理合成制約情報生成手段が、前記タイミング制約情報修正手段が修正した前記タイミング制約情報を含む前記ブロック情報に基づいて前記論理合成制約情報を再度生成し、
前記論理合成実行手段が、前記論理合成制約情報生成手段が再度生成した前記論理合成制約情報に基づいて前記論理合成手段に再度論理合成を行わせる、
ことを特徴とする請求項１に記載の論理合成装置。
【請求項３】
前記論理合成手段の結果に基づいて複数のブロックからなる前記半導体集積回路のゲート数を算出するゲート数算出手段を有することを特徴とする請求項１または２に記載の論理合成装置。
【請求項４】
半導体集積回路を構成するブロックのＲＴＬ回路情報を読み込むＲＴＬ読込工程と、前記ＲＴＬ読込工程で読み込んだ前記ＲＴＬ回路情報に対して論理合成手段に論理合成を行わせて論理回路を合成させる論理合成実行工程と、を含む論理合成方法において、
前記ブロックのクロック信号に関する情報と、前記ブロックの入力端子及び出力端子のタイミング制約情報と、を含むブロック情報を読み込むブロック情報読込工程と、
前記ブロック情報読込工程で読み込んだ前記ブロック情報に基づいて前記論理合成工程で用いる論理合成制約情報を生成する論理合成制約情報生成工程と、を含み、
前記論理合成実行工程は、前記ＲＴＬ読込工程で読み込んだ前記ＲＴＬ回路情報及び前記論理合成制約情報生成工程で生成した前記論理合成制約情報に基づいて前記論理合成手段に論理合成を行わせる、
ことを特徴とする論理合成方法。
【請求項５】
半導体集積回路の設計を行う設計工程と、前記設計工程で設計された前記半導体集積回路のレイアウトを行うレイアウト工程と、前記レイアウト工程でレイアウトされた前記半導体集積回路の製造を行う製造工程と、を含む半導体集積回路の製造方法において、
前記設計工程は、請求項４に記載の論理合成方法を含んでいることを特徴とする半導体集積回路の製造方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の論理回路を合成する論理合成装置、論理合成方法および半導体集積回路の製造方法に関する。
【背景技術】
【０００２】
ＬＳＩ（大規模集積回路）等の半導体集積回路の設計においては、ハードウェア記述言語（ＨＤＬ）で記述された回路データを論理合成ツールによって論理合成することによりゲートレベルの論理回路を生成（合成）する。
【０００３】
このＨＤＬで記述された回路データは、レジスタ転送レベル（ＲＴＬ）で記述されることが多い。このとき、記述対象の半導体設計回路内のブロック間の端子のビット数のミスマッチや検証が不十分など不完全な記述を持つ状態のＲＴＬの回路データ（ＲＴＬ記述）をＤｉｒｔｙＲＴＬと呼ぶことがある。
【０００４】
ＲＴＬで記述された回路データは、上述したように論理合成ツールを使用することで所望の半導体製造技術に最適なゲートレベルの論理回路（ネットリスト）に変換できる。しかしながら従来の論理合成ツールはＤｉｒｔｙＲＴＬには対応していなかった。そこで、従来は論理合成時に発見された不完全な記述を修正した後に論理合成を実行するという作業を何度か繰り返すことによって、最終的に正常なネットリストを生成していた。
【０００５】
そのため、この繰り返し作業に時間がかかると、論理合成後のネットリストのゲート数、即ち半導体集積回路の回路規模が明らかになるのが遅くなってしまう。仮に机上の見積もりよりも大幅にゲート数が増加してしまった場合、仕様削減などの対応策の検討が必要になるが、ゲート数が明らかになるのが遅れることはこの対応策の検討開始が遅れるということであり、開発期間の遅延やコスト増などといった問題に繋がっていた。
【０００６】
また、ゲート数の見積もり方法としては、例えば特許文献１に、セルライブラリごとに所定の動作速度の達成に必要となるゲート数と回路の機能の実現に最小限必要なゲート数である最小機能ゲート数との比率である性能考慮ゲート数係数を予め設定し、最小機能ゲート数と性能考慮ゲート数係数とから算出されるゲート数を用いて前記回路の総面積を見積もることが提案されている。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載の方法では、性能考慮ゲート数係数を予め設定する必要がある。また、最小機能ゲート数の見積もり精度によって最終的なゲート数の見積もり精度が変化してしまう。また、最小機能ゲート数が全く不明である場合、論理合成または別の方法により最小機能ゲート数を見積もるという工程が必要となってしまうなどといった問題がある。
【０００８】
ところで、近年、ＤｉｒｔｙＲＴＬに対応した論理合成ツールが提案されている。但しこのような論理合成ツールを使用しても、ＲＴＬ記述の回路構造において、あるブロックのデータ信号が入力浮きまたは出力浮きになっていれば、そのブロックの境界は論理合成実行時にタイミング制約に基づいた最適化がなされない。そのために、ＤｉｒｔｙＲＴＬで論理合成したネットリストと最終的なＲＴＬ記述を論理合成して生成されたネットリストのゲート数との乖離が大きくなり、ＤｉｒｔｙＲＴＬ時のゲート数の見積もり精度が低下する原因となっていた。
【０００９】
このような問題を解決するには、ブロック間を正しく接続したトップ階層のＲＴＬ記述を用意する必要があるが、通常トップ階層のブロック間の接続数は膨大であり、設計者に多大な時間と手間をかけさせてしまうという問題があった。
【００１０】
本発明はかかる問題を解決することを目的としている。
【００１１】
すなわち、本発明は、ＲＴＬの論理合成の精度を高めることができる論理合成装置を提供することを目的としている。
【課題を解決するための手段】
【００１２】
上記に記載された課題を解決するために請求項１に記載された発明は、半導体集積回路を構成するブロックのＲＴＬ回路情報を読み込むＲＴＬ読込手段と、前記ＲＴＬ読込手段が読み込んだ前記ＲＴＬ回路情報に対して論理合成手段に論理合成を行わせ論理回路を合成させる論理合成実行手段と、を有する論理合成装置において、前記ブロックのクロック信号に関する情報と、前記ブロックの入力端子及び出力端子のタイミング制約情報と、を含むブロック情報を読み込むブロック情報読込手段と、前記ブロック情報読込手段が読み込んだ前記ブロック情報に基づいて前記論理合成手段が用いる論理合成制約情報を生成する論理合成制約情報生成手段と、を有し、前記論理合成実行手段が、前記ＲＴＬ読込手段が読み込んだ前記ＲＴＬ回路情報及び前記論理合成制約情報生成手段が生成した前記論理合成制約情報に基づいて前記論理合成手段に論理合成を行わせる、ことを特徴とする論理合成装置である。
【発明の効果】
【００１３】
請求項１に記載の発明によれば、ブロック情報に基づいて論理合成を行うので、トップ階層のＲＴＬを用意することなくＲＴＬの論理合成の精度を高めることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態にかかる論理合成装置の機能構成図である。
【図２】図１に示された仕様書ファイルの例を示した説明図である。
【図３】図１に示されたクロック認識部と入出力端子認識部が処理した情報をイメージ化した説明図である。
【図４】本発明の一実施形態にかかる論理合成方法のフローチャートである。
【図５】図４に示された論理合成方法を実行するコンピュータの構成図である。
【図６】本発明の第２の実施形態にかかる論理合成装置の機能構成図である。
【図７】図６に示された仕様書ファイルの例を示した説明図である。
【図８】図６に示されたクロック認識部と入出力端子認識部が処理した情報をイメージ化した説明図である。
【図９】プリミティブレベルまで論理合成した論理回路図の例である。
【図１０】本発明の一実施形態にかかる半導体集積回路の製造方法のフローチャートである。
【発明を実施するための形態】
【００１５】
（第１実施形態）
以下、本発明の第１の実施形態を、図１乃至図３を参照して説明する。図１は、本発明の第１の実施形態にかかる論理合成装置の機能構成図である。図２は、図１に示された仕様書ファイルの例を示した説明図である。図３は、図１に示されたクロック認識部と入出力端子認識部が処理した情報をイメージ化した説明図である。
【００１６】
図１に本発明の第１の実施形態にかかる論理合成装置１の機能構成を示す。論理合成装置１は、ＲＴＬソース読込部２と、仕様書読込部３と、クロック認識部４と、クロック制約生成部５と、入出力端子認識部６と、入出力制約生成部７と、ブロック合成処理部８と、ゲート数算出部９と、を備えている。
【００１７】
ＲＴＬ読込手段としてのＲＴＬソース読込部２は、記録装置等に記録されているＲＴＬソースファイルを読み込む。ＲＴＬソースは勿論キーボード等から直接入力して読み込ませてもよいし、ネットワーク等を介して接続されているコンピュータ等から取得するようにしてもよい。図１の例では、ブロックＡのＲＴＬソースファイル１１ａ、ブロックＢのＲＴＬソースファイル１２ａ、ブロックＣのＲＴＬソースファイル１３ａを読み込んでいるが、ブロック数は３に限らず２以上であればよい。ＲＴＬソースファイルは、ＲＴＬ回路情報であって、レジスタ転送レベルのＨＤＬで記述された回路データである。
【００１８】
ブロック情報読込手段としての仕様書読込部３は、記録装置等に記録されている後述するブロック情報としての仕様書ファイルを読み込む。仕様書ファイルは勿論直接キーボード等から入力して読み込ませてもよいし、ネットワーク等を介して接続されているコンピュータ等から取得するようにしてもよい。図１の例では、ブロックＡの仕様書ファイル１１ｂ、ブロックＢの仕様書ファイル１２ｂ、ブロックＣの仕様書ファイル１３ｂを読み込む。
【００１９】
仕様書ファイルの内容例を図２を参照して説明する。図２（ａ）はブロックＡの仕様書ファイルの例、図２（ｂ）はブロックＢの仕様書ファイルの例、図２（ｃ）はブロックＣの仕様書ファイルの例である。なお、図２は説明のために表形式としているが、表形式である必要はなく、後述するクロック認識部４や入出力端子認識部６が認識できる形式であればよい。
【００２０】
図２に示した各ブロックの仕様書ファイルの内容は、ブロック名、端子名、Ｉ／Ｏ種別、周波数、割合、同期クロックが項目として設定される。ブロック名はブロックの名称が設定される。図２（ａ）ではＢＬＯＣＫ＿Ａ、図２（ｂ）ではＢＬＯＣＫ＿Ｂ、図２（ｃ）ではＢＬＯＣＫ＿Ｃ、がそれぞれブロック名となる。
【００２１】
端子名はブロックの入力端子や出力端子の名称が設定される。図２（ａ）では、ｃｌｋ１、ｄａｔａ１、ｄａｔａ２、ｄａｔａ３が設定されている。図２（ｂ）では、ｃｌｋ１、ｃｌｋ２、ｄａｔａ１、ｄａｔａ２、ｄａｔａ３、ｄａｔａ４、ｄａｔａ５が設定されている。図２（ｃ）では、ｃｌｋ２、ｄａｔａ４、ｄａｔａ５が設定されている。なお、図２に記載されている、「Ｓｙｓｔｅｍ」や「ＤａｔａＩ／Ｆ」は、端子の分類を示すものであるが、無くても構わない。
【００２２】
Ｉ／Ｏ種別は入力（Ｉ）または出力（Ｏ）の種別が端子ごとに設定されている。周波数はクロック端子に対して設定するクロック周波数である。図２では、ｃｌｋ１が２００ＭＨｚ、ｃｌｋ２が１００ＭＨｚに設定されている。
【００２３】
割合はタイミングバジェットともいい、ブロックの入力端子から初段のＦＦ（フリップフロップ）まで、またはブロック内の最終段のＦＦから出力端子までの遅延時間が、同期しているクロックの１サイクルの時間の間で使用してよい時間の割合（％）を示している。例えば、図２（ａ）のｄａｔａ１は、３０％と設定され、同期クロックとして設定されているｃｌｋ１の１サイクルのうちの３０％の時間を遅延時間として使用してよいこととなる。
【００２４】
同期クロックは、クロック端子以外の入力端子において同期するクロック端子名を設定する。例えば、図２（ａ）のｄａｔａ１は、ｃｌｋ１が同期するクロック端子として設定されている。
【００２５】
クロック認識部４は、仕様書読込部３が読み込んだ各ブロックの仕様書ファイルからクロック端子（即ち、クロック信号）を認識する。クロック端子の認識方法は、Ｉ／Ｏ種別の項目が“Ｉ”に設定され、かつ、周波数の項目が設定されている端子をクロック端子として認識する。例えば、図２（ａ）の場合、ｃｌｋ１が上記条件に該当するので、ｃｌｋ１をクロック端子として認識する。即ち、上記条件がクロック信号に関する情報に相当する。
【００２６】
論理合成制約情報生成手段としてのクロック制約生成部５は、クロック認識部４で認識したクロック端子の情報を論理合成ツールに入力するクロック制約情報に変換する。即ち、クロック端子の論理合成制約情報を生成する。クロック制約情報は論理合成ツールが認識できるフォーマットであれば良く、ＳＤＣ（Synopsys Design Constraints）の言語形式が一例として挙げられる。例えば、図２（ａ）の場合、クロック端子はｃｌｋ１で周波数は２００ＭＨｚと認識されていた。この情報は次のようにＳＤＣに変換される。
create＿clock -name clk1 -period 5000 -waveform [0 2500] [get＿ports clk1]
【００２７】
入出力端子認識部６は、仕様書読込部３が読み込んだ各ブロックの仕様書ファイルからタイミング制約を抽出する。タイミング制約は、クロック端子以外の端子についての入力または出力の設定、どのクロックと同期しているか、タイミングバジェットの情報が必要である。これらの情報は、Ｉ／Ｏ種別、同期クロック、割合の設定から判断することができる。例えば、図２（ａ）のｄａｔａ１端子の場合、Ｉ／Ｏ種別の設定が“Ｉ”であるので入力端子であり、同期クロックの設定が“ｃｌｋ１”であるのでｃｌｋ１に同期した端子であり、割合の値が“３０”であるのでタイミングバジェットは３０％であると認識される。即ち、これらの情報がブロックの入出力端子のタイミング制約情報に相当する。
【００２８】
論理合成制約情報生成手段としての入出力制約生成部７は、入出力端子認識部６で認識したクロック端子以外の各端子の情報を論理合成ツールに入力するタイミング制約情報に変換する。即ち、入出力端子の論理合成制約情報を生成する。タイミング制約情報もクロック制約生成部と同様にＳＤＣで生成される。例えば、図２（ａ）ｄａｔａ１の場合、ｄａｔａ１は入力端子で、ｃｌｋ１に同期し、タイミングバジェットは３０％と認識されていた。この情報は次のようにＳＤＣに変換される。
set＿input＿delay 3500 -max [get＿ports data1] -clock [get＿clocks clk1]
【００２９】
クロック制約生成部５と入出力制約生成部７は、上述した動作を全てのブロックに対して実行し、各ブロックの論理合成用の制約情報を生成する。
【００３０】
クロック認識部４と入出力端子認識部６が処理した情報をイメージ化したものを図３に示す。本実施形態では、トップ階層のＲＴＬ記述を読み込まないので、図３に示したように、ブロック間の接続状況は全く認識していない状態にある。ただし各入出力端子においてはタイミングバジェットが設定されており、このタイミングバジェットに基づいてブロック境界の回路を最適化することが可能となっている。
【００３１】
論理合成実行手段としてのブロック合成処理部８は、ＲＴＬソース読込部２が読み込んだＲＴＬソースファイルと、クロック制約生成部５と入出力制約生成部７で生成された各ブロックの論理合成用の制約情報に基づいて、論理合成手段としての論理合成ツールにブロック毎に論理合成を実行させる。論理合成ツールは、自身の内部に持っていてもよいし、論理合成装置１の外部にある論理合成ツールをブロック合成処理部８が呼び出して論理合成を実行させ実行結果を受け取るようにしてもよい。
【００３２】
ブロック合成処理部８で行った論理合成の結果には、合成された論理回路であるネットリストとともにその回路のゲート数の情報も含まれている。
【００３３】
ゲート数算出手段としてのゲート数算出部９は、ブロック合成処理部８の実行結果に含まれる各ブロックのゲート数に基づいて、例えば全ブロックのゲート数を加算してチップ全体のゲート数を算出する。算出された結果は、チップ全体のゲート数情報２１として記録装置等に出力する。なお、出力先は記録装置に限らず、表示装置に表示したりプリンタ等に出力するようにしてもよい。あるいはネットワークを介して他のコンピュータ等に出力するようにしてもよい。
【００３４】
即ち、図１に示した論理合成装置１は、図４に示したフローチャートのように各工程が実行されて、ゲート数の算出が行われる。
【００３５】
図４に示したフローチャートは、ステップＳ２でＲＴＬソースファイルが読み込まれ、それと並行してステップＳ３〜Ｓ７までが実行される。つまり、ステップＳ３で仕様書ファイルが読み込まれる。そして、ステップＳ４、Ｓ５でクロック端子を認識してクロック端子の制約情報を生成し、ステップＳ６、Ｓ７で入出力端子のタイミング制約を抽出して入出力端子の制約情報を生成する。そして、ステップＳ８で論理合成を行って、ステップＳ９でゲート数を算出する。
【００３６】
即ち、ステップＳ２がＲＴＬ読込工程、ステップＳ３がブロック情報読込工程、ステップＳ５と、Ｓ７が制約情報生成工程、ステップＳ８が論理合成実行工程、としてそれぞれ機能する。
【００３７】
次に、上述した実施形態にかかる論理合成装置１の具体的構成例を図５を参照して説明する。図５は、論理合成装置１を構成するコンピュータの一例のブロック図である。
【００３８】
コンピュータ５００は、ＣＰＵ５１０と、ハードディスク５２０と、メモリ５３０と、表示部５４０と、入力部５５０と、通信部５６０と、を備えている。ＣＰＵ５１０は演算処理装置であって、コンピュータ５００において実行される演算や処理を実行する。ハードディスク５２０は、データを格納する記録手段であって、コンピュータ５００上で動作するアプリケーションや、このアプリケーションにより作成されたデータなどが格納されている。メモリ５３０には、コンピュータ５００に係る各種の設定値や、ＣＰＵ５１０での演算結果などが格納される。
【００３９】
表示部５４０はディスプレイなどであり、コンピュータ５００において作成されたデータなどをユーザに閲覧可能に表示する。入力部５５０は例えばキーボードやマウスであって、ユーザの操作により各種データが入力される。通信部５６０は例えばネットワークコントロールユニットなどであり、コンピュータ５００が外部の装置と通信を行うためのものである。また、図示しないがメモリーカードリーダなどの着脱自在な記録媒体を読み書きする装置やＵＳＢ（Universal Serial Bus）インタフェースなどの外部機器と接続するためのインタフェースを備えていてもよい。
【００４０】
ハードディスク５２０には、上述した論理合成装置１として機能させるためのコンピュータプログラム（論理合成プログラム）や論理合成ツール等が格納されている。即ち、図４に示したフローチャートを実行するためのコンピュータプログラムが格納されている。そして、ＣＰＵ５１０は、当該コンピュータプログラムを読み出して実行することにより、図１に示した論理合成装置１として機能する。
【００４１】
図５に示したような論理合成方法を実行するコンピュータプログラムとすることで、コンピュータで機能を実現できるので機能の移植や拡張が容易となる。また、このコンピュータプログラムをコンピュータ読み取り可能な記録媒体に格納することで当該プログラムを機器に組み込む以外に単体でも流通させることができ、バージョンアップ等も容易に行える。
【００４２】
本実施形態によれば、仕様書読込部３がブロックの端子名、Ｉ／Ｏ種別、周波数、割合、同期クロックの各項目が設定されている仕様書ファイル１１ｂ、１２ｂ、１３ｂを読み込む。そして、仕様書読込部３が読み込んだ仕様書ファイル１１ｂ、１２ｂ、１３ｂからクロック端子をクロック認識部４が認識し、入出力タイミングを入出力端子認識部６が認識する。そして、クロック制約生成部５が各ブロックのクロック制約情報を生成し、入出力制約生成部７が各ブロックの入出力端子の制約情報を生成する。そして、クロック制約生成部５が生成した制約情報と入出力制約生成部７が生成した制約情報に基づいて、ブロック合成処理部８が、各ブロックのＲＴＬソースを読み込んで論理合成を行う。このようにすることにより、ブロック境界のタイミング制約情報を設定することができるので、トップ階層のＲＴＬソースを用意することなくＤｉｒｔｙＲＴＬの論理合成結果の精度を高めることができる。
【００４３】
また、タイミング制約としてタイミングバジェットを各入力端子および出力端子ごとに設定しているので、入力端子および出力端子ごとに適切なタイミングを設定することができ、ブロック境界の回路を最適化することができる。
【００４４】
また、ブロック合成処理部８が論理合成した結果に基づいて、ゲート数を算出するゲート数算出部９を有しているので、論理合成結果から容易にチップ全体のゲート数を把握することができる。そのため、実際に論理合成を実行した結果に基づくチップ全体のゲート数を開発早期のＤｉｒｔｙＲＴＬの段階で明らかにすることが可能となり、結果的に半導体集積回路の開発ＴＡＴの短縮に繋がる。
【００４５】
なお、ゲート数算出部９を有せずにブロック合成処理部８が論理合成した結果から人手でゲート数を算出（論理合成ツールの結果に含まれる各ブロックのゲート数を加算）するようにしてもよい。即ち、ブロックの論理合成結果が得られれば、チップのゲート数算出は自動でも手動でも実行可能である。
【００４６】
また、上述した実施形態は、設計初期段階のトップ階層のＲＴＬソースファイルが無い時期だけに使用が限定されるものではない。設計期間全般を通しての使用が可能で、特に仕様が大きく変更され、トップ階層の接続やブロックの種類や数が大きく変わる場合にも有効である。
【００４７】
また、全てのブロックのＲＴＬソースファイルがある場合だけに限定されるものではない。例えばあるブロックのＲＴＬソースファイルが用意されていなくとも、ＲＴＬソースファイルが用意されていないブロックはブラックボックスとすれば、そのブロックは考慮されないだけとなる。したがって、その他のＲＴＬソースファイルが用意されているブロック全てを足し合わせたゲート数を求めるという使い方でもよい。
【００４８】
（第２実施形態）
次に、本発明の第２の実施形態を図６乃至図９を参照して説明する。なお、前述した第１の実施形態と同一部分には、同一符号を付して説明を省略する。図６は、本発明の第２の実施形態にかかる論理合成装置の機能構成図である。図７は、図６に示された仕様書ファイルの例を示した説明図である。図８は、図６に示されたクロック認識部と入出力端子認識部が処理した情報をイメージ化した説明図である。図９は、プリミティブレベルまで論理合成した論理回路図の例である。
【００４９】
図６に本発明の第２の実施形態にかかる論理合成装置１’の機能構成を示す。論理合成装置１’は、ＲＴＬソース読込部２と、仕様書読込部３と、クロック認識部４と、クロック制約生成部５と、入出力端子認識部６’と、入出力制約生成部７と、第１ブロック合成処理部８ａと、第２ブロック合成処理部８ｂと、ゲート数算出部９と、プリミティブ段数カウント部１５と、タイミングバジェット決定部１６と、入出力制約修正部１７と、を備えている。
【００５０】
図６の、ＲＴＬソース読込部２と、仕様書読込部３と、クロック認識部４と、クロック制約生成部５と、入出力制約生成部７と、ゲート数算出部９と、は、第１の実施形態と同様である。
【００５１】
入出力端子認識部６’は、第１の実施形態で行っていたタイミング制約に加えて接続先のブロック名を認識する機能が追加されている。即ち、接続先情報を含んでいる。本実施形態における仕様書ファイルの内容例を図７を参照して説明する。図７（ａ）はブロックＡの仕様書ファイルの例、図７（ｂ）はブロックＢの仕様書ファイルの例、図７（ｃ）はブロックＣの仕様書ファイルの例である。
【００５２】
図７に示した例において、端子名、Ｉ／Ｏ種別、周波数、割合、同期クロックの各設定項目は第１の実施形態と同様である。本実施形態では、これらに加えて、接続先が設定項目として追加されている。
【００５３】
つまり、当該端子の接続先のブロック名を認識する処理が追加されている。そして、接続先のブロックにおいても端子名を検索し、同じ端子名のものがあれば接続先の端子と判断する。逆に同じ端子名のものがなければ接続先の端子は無しと判断する。従ってこの処理を使って正しく接続関係を認識させるには、接続元と接続先の端子名を同じにするというルールの元、ＲＴＬソースファイルと仕様書ファイルを作成しておく必要がある。
【００５４】
本実施形態で、クロック認識部４と入出力端子認識部６’が処理した情報をイメージ化したものを図８に示す。本実施形態では、接続先のブロック名と端子名を認識できたので、ブロック間の接続状況を認識している点が第１の実施形態とは異なる。
【００５５】
第１ブロック合成処理部８ａは、クロック制約生成部５と入出力制約生成部７で生成された制約情報に基づいて、ＲＴＬソース読込部２が読み込んだＲＴＬソースと、クロック制約生成部５と入出力制約生成部７で生成された各ブロックの論理合成用の制約情報に基づいて、論理合成ツールにブロック毎に論理合成を実行させる。但し、第１ブロック合成処理部８ａは、ライブラリセルにマッピングされる前の、論理合成ツールが持つプリミティブセルレベルのネットリストが合成された段階で一旦処理を終了する。
【００５６】
カウント手段としてのプリミティブ段数カウント部１５は、ブロック境界のプリミティブセルの段数をカウントする。論理合成ツールが持つプリミティブセルレベルのネットリストでのブロック境界の回路図の一例を図９に示す。図９はブロックＢ（ＢＬＯＣＫ＿Ｂ）とブロックＡ（ＢＬＯＣＫ＿Ａ）のブロック境界の回路図である。なお、図９では、ブロックＡとブロックＢが接続されているように記載しているが、実際はトップ階層のＲＴＬソースファイルが無いのでネットリストとして接続されているものではない。図９は、論理合成装置１’内での認識を示した図である。
【００５７】
図９の場合、ブロックＡの入力端子ｄａｔａ１には１つのフリップフロップＦＦ３へのパスが存在し、入力端子ｄａｔａ１とフリップフロップＦＦ３の間のプリミティブの数はセルＣ５の１個（１段）である。また、ブロックＢの出力端子ｄａｔａ１には２つのフリップフロップ（ＦＦ１、ＦＦ２）からのパスが存在し、フリップフロップＦＦ１と出力端子ｄａｔａ１の間のプリミティブの数はセルＣ４の１個（１段）である。それに対してフリップフロップＦＦ２と出力端子ｄａｔａ１の間のプリミティブの数はセルＣ１、Ｃ２、Ｃ３、Ｃ４の４個（４段）である。即ち、プリミティブ段数カウント部１５は、ＦＦから出力端子及び入力端子からＦＦまでのプリミティブセルによる組み合わせ回路の段数をカウントしている。
【００５８】
一般的に、通過するプリミティブの段数が多いパスの方がトータルの遅延値が大きくなり、タイミング的にクリティカルなパスとなることが多い。そこで、入力側は対象の１つの端子から複数のフリップフロップへのパスが存在する場合、プリミティブの段数が最も多いものを選ぶ。また出力側は対象の１つの端子に対して複数のフリップフロップからのパスが存在する場合、同様に段数が最も多いものを選ぶ。図９の例ではブロックＢの出力端子ｄａｔａ１へのプリミティブの段数は４個に決まる。一方、ブロックＡの入力端子ｄａｔａ１には、上述したように１つのフリップフロップへのパスしか存在せず、そのパスのプリミティブの数は１個であるので、ブロックＡの入力端子ｄａｔａ１のプリミティブの段数は自動的に１個に決まる。プリミティブ段数カウント部１５は、このような処理を全ブロックのクロック端子以外の全端子で行う。即ち、論理合成ツールの結果および接続先情報に基づいてブロックの境界にあるプリミティブセルの段数をカウントしている。
【００５９】
タイミングバジェット決定部１６は、接続元と接続先の端子のプリミティブの段数の割合からタイミングバジェットを決定する。つまり、この処理の際に接続先情報が用いられる。例えば図９の場合、ブロックＡの出力端子ｄａｔａ１のプリミティブの段数は４段、ブロックＢの入力端子ｄａｔａ１のプリミティブの段数は１段であったので、４対１の割合となる。この場合、ブロックＢの出力端子ｄａｔａ１のタイミングバジェットは８０％、ブロックＡの入力端子ｄａｔａ１のタイミングバジェットは２０％と決定する。タイミングバジェット決定部１６は、このような処理を全ての接続に対して行う。
【００６０】
タイミング制約情報修正手段としての入出力制約修正部１７は、タイミングバジェット決定部１６で決定されたタイミングバジェットに従って、入出力制約生成部７で生成した制約情報を修正する。例えば、ブロックＡの入力端子ｄａｔａ１は、入出力制約生成部７ではタイミングバジェットは３０％と認識されていたので次のような制約になっていた。
set＿input＿delay 3500 -max [get＿ports data1] -clock [get＿clocks clk1]
【００６１】
これがタイミングバジェット決定部１６において、タイミングバジェットが２０％に変更になっているので次のように修正される。
set＿input＿delay 4000 -max [get＿ports data1] -clock [get＿clocks clk1]
【００６２】
このような処理を全ブロックの全ての端子に対して行い、各ブロックの論理合成用の制約情報を修正していく。勿論修正の必要がない端子はそのままとする。即ちプリミティブセルの段数からタイミング制約情報を修正して論理合成制約情報を再度生成している。
【００６３】
第２ブロック合成処理部８ｂは、入出力制約修正部１７で修正された制約情報を使用して論理合成ツールに論理合成の処理の続きを行わせる。つまり、プリミティブセルレベルのネットリストから論理合成を再開する。また、論理合成の処理の続きではなく、論理合成を最初から実行し直してもよい。即ち、再度論理合成を行っている。
【００６４】
本実施形態によれば、仕様書ファイルに接続先の項目を追加し、第１ブロック合成処理部８ａでプリミティブセルレベルの論理合成まで行い、プリミティブ段数カウント部１５でブロック境界のプリミティブセルの段数をカウントする。そして、タイミングバジェット決定部１６でタイミングバジェットを決定して入出力制約修正部１７で論理合成の制約情報を修正して第２ブロック合成処理部８ｂで論理合成を行う。このようにすることにより、一度論理合成を実行した結果に基づいて、段数の割合に応じてタイミングバジェットを振り分けるので、より精度の高い最適化が可能となり、チップ全体のゲート数の精度をより高めることが可能となる。
【００６５】
なお、第１ブロック合成処理部８ａは、プリミティブセルレベルの論理合成に限らず、ライブラリセルまで論理合成してもよい。但し、プリミティブセルレベルで一旦終了した方が、第１ブロック合成処理部８ａにおける論理合成時間を短縮することができる。
【００６６】
また、上述した論理合成方法は、図１０に示した半導体集積気回路の製造方法に含まれていてもよい。図１０に示した半導体集積回路の製造方法は、まず、仕様検討や決定した仕様に基づき機能設計等を行いＲＴＬの回路記述を行って当該回路の検証をして論理合成を行い、生成されたゲートレベルのネットリストを検証してネットリストを作成する設計工程（ステップＳ１０１）を行う。そして、設計工程で作成されたネットリストに基づいて回路の配置配線（レイアウト）を行い、マスクパターンのデータを生成するレイアウト工程を行う（ステップＳ１０２）。そして、レイアウト工程で生成されたマスクパターンデータに基づいてマスクを作成し、そのマスクを使用して半導体集積回路を製造する製造工程を行う（ステップＳ１０３）。
【００６７】
即ち、図１０に示した設計工程に上述した論理合成方法が含まれていてもよい。このようにすることにより、ＲＴＬ記述の段階でチップ全体のゲート数を精度良く見積もれるので、半導体集積回路の開発ＴＡＴの短縮に繋げることができる。
【００６８】
また、本発明は上記実施形態に限定されるものではない。即ち、当業者は、従来公知の知見に従い、本発明の骨子を逸脱しない範囲で種々変形して実施することができる。かかる変形によってもなお本発明の論理合成装置、論理合成方法および半導体集積回路の製造方法の構成を具備する限り、勿論、本発明の範疇に含まれるものである。
【符号の説明】
【００６９】
１                        論理合成装置
２                        ＲＴＬ読込部（ＲＴＬ読込手段）
３                        仕様書読込部（ブロック情報読込手段）
８                        ブロック合成処理部（論理合成実行手段）
５                        クロック制約生成部（論理合成制約情報生成手段）
７                        入出力制約生成部（論理合成制約情報生成手段）
９                        ゲート数算出部（ゲート数算出手段）
１１ａ、１２ａ、１３ａ    ＲＴＬソースファイル
１１ｂ、１２ｂ、１３ｂ    仕様書ファイル（ブロック情報）
１５                      プリミティブ段数カウント部（カウント手段）
１７                      入出力制約修正部（タイミング制約情報修正手段）
Ｓ２                      ＲＴＬ読込工程
Ｓ３                      仕様書読込工程（ブロック情報読込工程）
Ｓ５                      クロック制約生成工程（制約情報生成工程）
Ｓ７                      入出力制約生成工程（制約情報生成工程）
Ｓ８                      ブロック合成処理工程（論理合成実行工程）
Ｓ１０１                  設計工程
Ｓ１０２                  レイアウト工程
Ｓ１０３                  製造工程
【先行技術文献】
【特許文献】
【００７０】
【特許文献１】特開２０１２−２４３１５１号公報
【図１】
2015127847.tif 000003
【図２】
2015127847.tif 000004
【図３】
2015127847.tif 000005
【図４】
2015127847.tif 000006
【図５】
2015127847.tif 000007
【図６】
2015127847.tif 000008
【図７】
2015127847.tif 000009
【図８】
2015127847.tif 000010
【図９】
2015127847.tif 000011
【図１０】
2015127847.tif 000012