(57)【要約】【課題】  ＩＰを利用した集積回路装置の設計において、既存の回路の修正や回路ブロック間への新たな回路の挿入を容易に行ないうる設計方法を提供する。【解決手段】  タイミング関係の調整や、ＧＵＩ上での波形の変更に応じてＩ／Ｆ回路を自動的に生成し、回路ブロック間へのＩ／Ｆ回路の挿入や、回路ブロックへのＩ／Ｆ回路の付加を自動的に行ない、回路ブロック間の信号のやりとりが可能なシステムを迅速に構築する。また、異なる周波数で動作する複数のブロック間において、受信側の動作イネーブルを出力する回路を自動的に生成することで、周波数の違いを越えて回路ブロックの利用の拡大を実現する。さらに、所望の波形を簡単な編集によって自動的に生成したり、回路ブロック内の信号の組み合わせ回路によって所望の信号波形を生成したり、論理合成スクリプトを自動生成することにより、大規模なシステムの設計を効率的に行なう。【選択図】        図１
2004265435.tif 000002
【特許請求の範囲】
【請求項１】
データベースを用いた半導体集積回路装置の設計方法であって、
コンピュータの表示画面上に上記データベースに登録された入出力波形または、検証パターンにより自動的にシミュレーションされた結果の信号波形を表示させるステップ（ａ）と、
表示させた信号波形を所望の信号波形に変更操作するステップ（ｂ）と、
上記所望の信号波形への変更操作情報を、操作毎に上記データベースに登録するステップ（ｃ）と、
上記登録された変更操作が、論理素子に１対１に変換できるか否かを判断するステップ（ｄ）と、
上記ステップ（ｄ）において、変換が出来ない場合には、変換できない部分の波形信号を、上記コンピュータの表示画面上でハイライトし、上記、所望の信号波形に変更操作するステップへ遷移するステップ（ｅ）と、
上記ステップ（ｄ）において、変換が出来る場合に、上記変更操作に応じた論理素子に変換するステップ（ｆ）と、
上記変換された論理素子を回路として生成するステップ（ｇ）と
を含む半導体集積回路装置の設計方法。
【請求項２】
請求項１記載の半導体集積回路装置の設計方法において、
上記コンピュータは、上記ステップ（ｅ）と同時又はその後に、上記所望の波形のうち生成不能な部分を計算し、表示画面上に表示することを特徴とする半導体集積回路装置の設計方法。
【請求項３】
データベースを用いた半導体集積回路装置の設計方法であって、
上記データベースに登録された論理回路に対応した入力信号および出力信号に対して、複数の波形信号を選択するステップ（ａ）と、
生成したい信号論理を解析する範囲を指定するステップ（ｂ）と、
上記ステップ（ａ）と上記ステップ（ｂ）の情報とから、動作クロックエッジ毎の上記ステップ（ａ）で選択された信号から生成される真理値表を生成するステップ（ｃ）と、
上記ステップ（ｃ）で生成された真理値表を元に基本論理を生成し、論理素子に変換するステップ（ｄ）と、
上記ステップ（ｄ）によって変換された論理素子より回路情報を生成するステップと
を含む半導体集積回路装置。
【請求項４】
データベースを用いた半導体集積回路装置の設計方法であって、
上記データベースに登録された、互いに周波数が異なる第１，第２のクロックによって動作するように設計された第１，第２の回路ブロックにおいて、上記第１の回路ブロックを前段に上記第２の回路ブロックを後段にそれぞれ配置したものであって、
上記第１のクロックの周期が上記第２のクロックの周期の２倍以上か否かを判定するステップ（ａ）と、
上記第１のクロックの周期が上記第２のクロックの周期の２倍以上のときには、上記第２のクロックによって上記第１のクロックのエッジを検出するステップ（ｂ）と、
上記エッジの検出によって生成される信号を上記第２の回路ブロックに動作イネーブル信号として供給するインターフェース回路を上記第１のブロックと上記第２のブロックに挿入するステップ（ｃ）と、
上記第２の回路ブロックを、上記ステップ（ｃ）より生成されたインターフェース回路から供給される動作イネーブル信号によって動作するように、上記第１の回路と第２の回路と上記インターフェース回路との接続を変更するステップ（ｄ）と
を含む半導体集積回路装置の設計方法。
【請求項５】
請求項４記載の半導体集積回路装置の設計方法において、
上記ステップ（ａ）における判定で、上記第１のクロックの周期が上記第２のクロックの周期よりも大きく且つ第２のクロックの周期の２倍よりも小さいときには、第１のクロックを第２の回路ブロックの動作イネーブルとしてから上記ステップ（ｄ）を行なうことを特徴とする半導体集積回路装置の設計方法。
【請求項６】
請求項４又は５記載の半導体集積回路装置の設計方法において、
上記ステップ（ａ）における判定で、上記第１のクロックの周期が上記第２のクロックの周期よりも小さいときには、上記インターフェース回路の生成が不能であることを表示するステップをさらに含むことを特徴とする半導体集積回路装置の設計方法。
【請求項７】
請求項４〜６のうちいずれか１つに記載の半導体集積回路装置の設計方法において、
上記第１のクロックにより動作する第３の回路ブロックを上記第２の回路ブロックの後段に配置されている場合には、上記第３の回路ブロックに出力する出力データ信号を上記第２の回路ブロックの動作イネーブル信号に同期させるように、上記第２の回路ブロックの回路を変更するステップをさらに含むことを特徴とする半導体集積回路装置の設計方法。
【請求項８】
第１，第２の回路ブロックがデータベースに登録されている半導体集積回路装置の設計方法であって、
上記第１の回路ブロックを前段に上記第２の回路ブロックを後段にそれぞれ配置した回路において、
上記第１の回路ブロックのタイミングチャート中のデータ信号からデータ遷移領域を検出するステップ（ａ）と、
上記第１の回路ブロックのデータ信号のすべてのビット信号を上記データベースに登録されたホールド時間にほぼ等しい第１のマージン分遅延させた信号を生成するための遅延回路を生成するステップ（ｂ）と、
上記第１の回路のブロックデータ信号と、上記ステップ（ｂ）で生成した信号を、上記データベースに登録されたセットアップ時間にほぼ等しい第２のマージン分さらに遅延させた信号を生成するための遅延回路を生成するステップ（ｃ）と、
上記ステップ（ａ）のデータ信号Ａと、上記ステップ（ｂ）の第１のマージン分遅延させたデータ信号Ｂと、上記ステップ（ｃ）の第２のマージン分遅延させたデータ信号Ｃにおいて、Ａ＝Ｂ＝Ｃとなる期間以外を有効期間とするデータ確定信号を生成するステップ（ｄ）と、
上記ステップ（ｄ）に相当する回路を生成するステップ（ｅ）と
を含む半導体集積回路装置の設計方法。
【請求項９】
第１，第２の回路ブロックを有するデータベースを用い、上記第１の回路ブロックを前段に上記第２の回路ブロックを後段にそれぞれ配置した半導体集積回路装置の設計方法であって、
上記第２の回路ブロックに付属する入力波形データまたは、シミュレーションによって得られる入力波形データと、上記第１の回路ブロックにおいて、上記第２の回路の入力波形と一致する出力波形信号を検索するステップ（ａ）と、
上記第１の回路ブロックにおいて上記第２の回路の入力波形と一致する所望の波形を有する信号がない場合には、上記第１の回路ブロックの複数の出力信号を組み合わせて、上記第２の回路と一致する所望波形と同じ波形の信号論理を上記第１の回路の出力信号の組合せから探索するステップ（ｂ）と、
上記ステップ（ａ）と（ｂ）とから論理を実現するインターフェース回路を生成するステップ（ｃ）と
を含む半導体集積回路装置の設計方法。
【請求項１０】
請求項９記載の半導体集積回路装置の設計方法において、
上記探索するために用いる複数の信号の組み合わせ数の上限値を設定しておくことを特徴とする半導体集積回路装置の設計方法。
【請求項１１】
請求項９又は１０記載の半導体集積回路装置の設計方法において、
上記ステップ（ｂ）では、上記複数の信号のうち少なくともいずれか１つの信号に順序要素（フリップフロップ）を付加することにより、上記インターフェース回路を順序回路として生成することを特徴とする半導体集積回路装置の設計方法。
【請求項１２】
請求項１１記載の半導体集積回路装置の設計方法において、
上記順序要素の段数の上限値を設定しておくことを特徴とする半導体集積回路装置の設計方法。
【請求項１３】
請求項９〜１２のうちいずれか１つに記載の半導体集積回路装置の設計方法において、
上記ステップ（ｂ）では、上記第１の回路ブロックの内部ノードの信号を取り出して、上記内部ノードの信号と上記複数の出力信号とを組み合わせることにより、上記インターフェース回路を生成し、
上記第１の回路ブロックを、上記内部ノードの信号を出力するように変更することを特徴とする半導体集積回路装置の設計方法。
【請求項１４】
第１，第２，第３の回路ブロックを有するデータベースを用い、上記第１，第２，第３の回路ブロックを上流側から順次配置した半導体集積回路装置の設計方法であって、
上記第２の回路ブロックの論理合成のための論理合成スクリプトを作成する際に、上記データベースに登録されたもしくはシミュレーションによって得られた上記第１の回路ブロックの出力信号の波形と、これを受ける第３の回路ブロックの入力信号の波形と、上記第２の回路ブロックのクロックの波形とから、上記第２の回路ブロックのクロックに対する第１の回路ブロックの出力信号遅延時間と、上記第２の回路ブロックのクロックに対する第３の回路ブロックの入力信号遅延時間とを算出するステップと、
上記算出した遅延時間から、少なくとも、上記第２の回路ブロックの入力信号遅延制約と出力信号遅延制約情報を上記論理合成スクリプト中に挿入するステップと、
上記第２の回路ブロックのクロック周期を設定する記述を、上記論理合成スクリプト中に挿入するステップと
を含む半導体集積回路装置の設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばＩＰ（Intellectual Property ）のような既存の回路設計用資産である回路ブロックを用いて、大規模な半導体集積回路装置を設計する際の各回路ブロック間のインターフェースを生成する方法に関する。
【背景技術】
【０００２】
最近、設計工数の削減を目的とし、既存の回路設計用資産であるＩＰ（又はＩＰコア）などと呼ばれる回路ブロックを利用して、例えば“システムＬＳＩ”と呼ばれるような大規模な集積回路装置の開発が行なわれ始めている。この回路ブロックは、すでに定められた入出力インターフェース（Ｉ／Ｆ）を備えており、このＩ／Ｆは各回路ブロックごとに異なっているのが一般的である。したがって、このように各回路ブロック毎に異なるインターフェースを有する回路ブロックを１つのシステムにまとめるに際して、各回路ブロックのＩ／Ｆを如何に調整して各回路ブロック間の信号のやりとりを円滑に行なわせるかは、設計上重要な事項である。例えば、回路ブロックを１つのシステムにまとめるに際しては、Ｉ／Ｆ調整のための論理変更やタイミング変更が必要である。
【０００３】
そこで、従来、設計者が回路ブロックの入出力論理，タイミングを解読し、さらに各回路ブロック間のＩ／Ｆ構造の相違を十分把握した上で、回路ブロックを組み込む際に必要なインターフェース回路などを新たに設計することにより、各回路ブロックのＩ／Ｆ構造の相違を吸収して各回路ブロック間の接続状態を保持するように設計作業が行われている。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、最近のように、設計対象となるシステムＬＳＩの規模がさらに拡大されてくると、システムＬＳＩに組み込まれる回路ブロックの数も飛躍的に増えており、手動による回路ブロック間の調整を行なっていたのでは、設計の作業量が膨大となる。すなわち、従来の作業者の熟練に頼る設計のみでは、システムＬＳＩのような大規模な集積回路装置の設計を効率よく行なうことが困難となってきている。
【０００５】
一方、信号の属性やタイミングといった回路動作に着目し、回路動作から新たな回路を自動的に生成する技術として、以下のものが知られている。
【０００６】
例えば、特開平６−３２９７２号公報には、タイミングチャートと信号の属性とから、新たなハードウェア記述言語を生成する技術が開示されている。
【０００７】
特開平７−２５３９９８号公報には、新規に生成した２以上の論理回路の動作記述を真理値を用いて合成し、新たな１まとまりの回路動作記述を作成する技術が開示されている。
【０００８】
特開平９−９１３５５号公報には、動作データに基づいて、回路データ，期待値データ，タイミングデータ等を生成し、シミュレーションを行なって、新たな論理回路を自動的に生成する技術が開示されている。
【０００９】
そこで、上記従来の自動回路生成方法を利用して、回路ブロック間のＩ／Ｆ構造の相違を吸収するための回路を生成することが考えられる。
【００１０】
しかるに、上記従来の公報による技術では、回路ブロックとは独立した新たな回路ブロックを生成することはできても、各回路ブロック間の接続状態を如何に円滑に保持するかという点が未解決であり、これらの技術によっては、既存の資産である回路ブロックを利用した集積回路装置の設計において、各回路ブロックのＩ／Ｆ構造の相違に対応したインターフェース回路を生成することは困難である。
【００１１】
本発明の目的は、既存の資産である回路ブロックを利用した集積回路装置の設計において、回路ブロックの入出力論理，タイミング等の解読を行なわなくても、インターフェース構造を考慮した既存の回路の修正，変更や、回路ブロック間への新たなインターフェース回路の生成や挿入を容易に行ないうる手段を講ずることにより、大規模な集積回路装置の設計効率の向上を図ることにある。
【課題を解決するための手段】
【００１２】
本発明の第１の半導体集積回路装置の設計方法は、データベースを用いた半導体集積回路装置の設計方法であって、コンピュータの表示画面上に上記データベースに登録された入出力波形または、検証パターンにより自動的にシミュレーションされた結果の信号波形を表示させるステップ（ａ）と、上記表示させた信号波形を所望の信号波形に変更操作するステップ（ｂ）と、上記所望の信号波形への変更操作情報を、操作毎に上記データベースに登録するステップ（ｃ）と、上記変更操作に応じた論理素子に変換するステップ（ｄ）と、上記変換された論理素子を回路として生成するステップ（ｅ）とを含んでいる。
【００１３】
この方法により、半導体集積回路装置の設計の際の信号波形の移動，反転などの変形処理を、ＧＵＩを用いて簡易に行なうことができる。したがって、要素の追加，回路ブロックの修正などの設計上必要な処理の迅速化を図ることができる。
【００１４】
上記ステップ（ｅ）で生成された回路を、インターフェース回路として回路ブロック間に挿入するステップをさらに含むことができる。
【００１５】
上記ステップ（ｅ）では、上記回路をＲＴレベルで記述するか、ゲートレベルで記述することが好ましい。
【００１６】
本発明の第２の半導体集積回路装置の設計方法は、データベースを用いた半導体集積回路装置の設計方法であって、コンピュータの表示画面上に上記データベースに登録された入出力波形または、検証パターンにより自動的にシミュレーションされた結果の信号波形を表示させるステップ（ａ）と、表示させた信号波形を所望の信号波形に変更操作するステップ（ｂ）と、上記所望の信号波形への変更操作情報を、操作毎に上記データベースに登録するステップ（ｃ）と、上記登録された変更操作が、論理素子に１対１に変換できるか否かを判断するステップ（ｄ）と、上記ステップ（ｄ）において、変換が出来ない場合には、変換できない部分の波形信号を、上記コンピュータの表示画面上でハイライトし、上記、所望の信号波形に変更操作するステップへ遷移するステップ（ｅ）と、上記ステップ（ｄ）において、変換が出来る場合に、上記変更操作に応じた論理素子に変換するステップ（ｆ）と、上記変換された論理素子を回路として生成するステップ（ｇ）とを含んでいる。
【００１７】
この方法により、所望の波形を得るための処理を行なう際に、生成不能な箇所の探索や生成不能な理由の解析に要していた時間を短縮することができる。
【００１８】
上記コンピュータは、上記ステップ（ｅ）と同時又はその後に、上記所望の波形のうち生成不能な部分を計算し、表示画面上に表示することにより、ユーザに対して、生成不能な箇所の信号を生成する対策を講ずる方法を的確に判断させることができ、最適な回路を迅速に生成することができる。
【００１９】
本発明の第３の半導体集積回路装置の設計方法は、データベースを用いた半導体集積回路装置の設計方法であって、上記データベースに登録された論理回路に対応した入力信号および出力信号に対して、複数の波形信号を選択するステップ（ａ）と、生成したい信号論理を解析する範囲を指定するステップ（ｂ）と、上記ステップ（ａ）と上記ステップ（ｂ）の情報とから、動作クロックエッジ毎の上記ステップ（ａ）で選択された信号から生成される真理値表を生成するステップ（ｃ）と、上記ステップ（ｃ）で生成された真理値表を元に基本論理を生成し、論理素子に変換するステップ（ｄ）と、上記ステップ（ｄ）によって変換された論理素子より回路情報を生成するステップとを含んでいる。
【００２０】
この方法により、簡単な操作を利用して、所望の波形を容易に生成することが可能になる。
【００２１】
本発明の第４の半導体集積回路装置の設計方法は、データベースを用いた半導体集積回路装置の設計方法であって、上記データベースに登録された、互いに周波数が異なる第１，第２のクロックによって動作するように設計された第１，第２の回路ブロックにおいて、上記第１の回路ブロックを前段に上記第２の回路ブロックを後段にそれぞれ配置したものであって、上記第１のクロックの周期が上記第２のクロックの周期の２倍以上か否かを判定するステップ（ａ）と、上記第１のクロックの周期が上記第２のクロックの周期の２倍以上のときには、上記第２のクロックによって上記第１のクロックのエッジを検出するステップ（ｂ）と、上記エッジの検出によって生成される信号を上記第２の回路ブロックに動作イネーブル信号として供給するインターフェース回路を上記第１のブロックと上記第２のブロックに挿入するステップ（ｃ）と、上記第２の回路ブロックを、上記ステップ（ｃ）より生成されたインターフェース回路から供給される動作イネーブル信号によって動作するように、上記第１の回路と第２の回路と上記インターフェース回路との接続を変更するステップ（ｄ）とを含んでいる。
【００２２】
この方法により、互いに周波数が異なるクロックによって動作する２つの回路ブロック間におけるデータのやりとりが簡単な処理によって円滑化される。したがって、データの受け渡しを円滑に行なうことができるほか、多数の回路ブロックを配置して構成される半導体集積回路装置を設計する際に、利用するＩＰコアのクロックの種類による選択の制限を緩和でき、より幅広い選択による設計の迅速化，設計される半導体集積回路装置の品質の向上を図ることができる。
【００２３】
上記ステップ（ａ）における判定で、上記第１のクロックの周期が上記第２のクロックの周期よりも大きく且つ第２のクロックの周期の２倍よりも小さいときには、第１のクロックを第２の回路ブロックの動作イネーブルとしてから上記ステップ（ｄ）を行なうことができる。
【００２４】
上記ステップ（ａ）における判定で、上記第１のクロックの周期が上記第２のクロックの周期よりも小さいときには、上記インターフェース回路の生成が不能であることを表示するステップをさらに含むことが好ましい。
【００２５】
上記データベースから取り出した上記第１のクロックにより動作する第３の回路ブロックを上記第２の回路ブロックの後段に配置する場合には、上記第３の回路ブロックに出力する出力データ信号の周期を上記イネーブル信号に同期させるように、上記第２の回路ブロックの記述を変更するステップをさらに含むことが好ましい。
【００２６】
本発明の第５の半導体集積回路装置の設計方法は、第１，第２の回路ブロックがデータベースに登録されている半導体集積回路装置の設計方法であって、上記第１の回路ブロックを前段に上記第２の回路ブロックを後段にそれぞれ配置した回路において、上記第１の回路ブロックのタイミングチャート中のデータ信号からデータ遷移領域を検出するステップ（ａ）と、上記第１の回路ブロックのデータ信号のすべてのビット信号を上記データベースに登録されたホールド時間にほぼ等しい第１のマージン分遅延させた信号を生成するための遅延回路を生成するステップ（ｂ）と、上記第１の回路のブロックデータ信号と、上記ステップ（ｂ）で生成した信号を、上記データベースに登録されたセットアップ時間にほぼ等しい第２のマージン分さらに遅延させた信号を生成するための遅延回路を生成するステップ（ｃ）と、上記ステップ（ａ）のデータ信号Ａと、上記ステップ（ｂ）の第１のマージン分遅延させたデータ信号Ｂと、上記ステップ（ｃ）の第２のマージン分遅延させたデータ信号Ｃにおいて、Ａ＝Ｂ＝Ｃとなる期間以外を有効期間とするデータ確定信号を生成するステップ（ｄ）と、上記ステップ（ｄ）に相当する回路を生成するステップ（ｅ）とを含んでいる。
【００２７】
この方法により、多数の回路ブロックを配置して構成される半導体集積回路装置を設計する際に、データ確定信号の生成のために同期信号（クロックなど）を用いずに、データ遷移領域に着目したデータ確定信号の生成を行なうことにより、送受信ブロック間の使用クロック周波数の関係などに影響されずにデータ確定区間を示すことが可能になった。これにより、非同期回路インターフェースにおいても、転送されたデータ転送を効率的に利用することができる。さらに、設計者は、複雑なタイミング制御を含んだインターフェース回路の設計負荷が低減されることになる。
【００２８】
本発明の第６の半導体集積回路装置の設計方法は、第１，第２の回路ブロックを有するデータベースを用い、上記第１の回路ブロックを前段に上記第２の回路ブロックを後段にそれぞれ配置した半導体集積回路装置の設計方法であって、上記第２の回路ブロックに付属する入力波形データまたは、シミュレーションによって得られる入力波形データと、上記第１の回路ブロックにおいて、上記第２の回路の入力波形と一致する出力波形信号を検索するステップ（ａ）と、上記第１の回路ブロックにおいて上記第２の回路の入力波形と一致する所望の波形を有する信号がない場合には、上記第１の回路ブロックの複数の出力信号を組み合わせて、上記第２の回路と一致する所望波形と同じ波形の信号論理を上記第１の回路の出力信号の組合せから探索するステップ（ｂ）と、上記ステップ（ａ）と（ｂ）とから論理を実現するインターフェース回路を生成するステップ（ｃ）とを含んでいる。
【００２９】
この方法により、後段の第２の回路ブロックでは、前段の第１の回路ブロックの内容がよくわからないために、所望の波形を得ることが困難な場合にも、第２の回路ブロック内の信号を組み合わせてインターフェース回路を構成することで、所望の波形を得ることができる。
【００３０】
上記複数の信号の組み合わせ数の上限値を設定しておくことにより、検索の時間が無限に長くなるのを防止することができる。
【００３１】
上記ステップ（ｂ）では、上記複数の信号のうち少なくともいずれか１つの信号に順序要素（フリップフロップ）を付加することにより、上記インターフェース回路を順序回路として生成することにより、さらに所望の波形を生成できる確率が高くなる。
【００３２】
上記順序要素の段数の上限値を設定しておくことにより、検索の時間が無限に長くなるのを防止することができる。
【００３３】
上記ステップ（ｂ）では、上記第１の回路ブロックの内部ノードの信号を取り出して、上記内部ノードの信号と上記複数の信号とを組み合わせることにより、上記インターフェース回路を生成し、上記第１の回路ブロックの記述を、上記ノードの信号を出力する機能を付加するように変更することにより、さらに所望の波形を生成できる確率が高くなる。
【００３４】
本発明の第８の半導体集積回路装置の設計方法は、第１，第２，第３の回路ブロックを有するデータベースを用い、上記第１，第２，第３の回路ブロックを上流側から順次配置した半導体集積回路装置の設計方法であって、上記第２の回路ブロックの論理合成のための論理合成スクリプトを作成する際に、上記データベースに登録されたもしくはシミュレーションによって得られた上記第１の回路ブロックの出力信号の波形と、これを受ける第３の回路ブロックの入力信号の波形と、上記第２の回路ブロックのクロックの波形とから、上記第２の回路ブロックのクロックに対する第１の回路ブロックの出力信号遅延時間と、上記第２の回路ブロックのクロックに対する第３の回路ブロックの入力信号遅延時間とを算出するステップと、上記算出した遅延時間から、少なくとも、上記第２の回路ブロックの入力信号遅延制約と出力信号遅延制約情報を上記論理合成スクリプト中に挿入するステップと、上記第２の回路ブロックのクロック周期を設定する記述を、上記論理合成スクリプト中に挿入するステップとを含んでいる。
【００３５】
この方法により、ある回路ブロックを論理合成したい場合に、その前後に接続される他の回路ブロック間の遅延情報を考慮して、当該回路ブロックの論理合成スクリプトを自動的に生成することが可能になる。その結果、設計工数の短縮，設計される半導体集積回路装置の品質の向上を図ることができる。
【発明の効果】
【００３６】
本発明の半導体集積回路装置の設計に関する各方法によると、タイミング関係の調整や、ＧＵＩ上での波形の変更に応じてＩ／Ｆ回路を自動的に生成し、回路ブロック間へのＩ／Ｆ回路の挿入や、回路ブロックへのＩ／Ｆ回路の付加を自動的に行なうことによって、回路ブロック間の信号のやりとりが可能なシステムを迅速に構築することができる。
【００３７】
また、異なる周波数で動作する複数のブロック間において、受信側の動作イネーブルを出力する回路を自動的に生成することで、周波数の違いを越えて回路ブロックの利用の拡大を実現する。
【００３８】
さらに、所望の波形を簡単な編集によって自動的に生成することにより、回路の修正，要素の追加の処理の容易化を図る。
【００３９】
また、回路ブロック内の信号波形を組み合わせた回路によって所望の信号波形を容易に得ることができる。
【００４０】
さらに、設計対象の回路ブロックの論理合成スクリプトの自動生成により、設計工数の低減を図ることができる。
【発明を実施するための最良の形態】
【００４１】
（第１の実施形態）
本実施形態においては、集積回路装置の設計方法として、共通のクロック系統によって動作する２つの回路ブロックがある場合に、その２つの回路ブロック間に、両者間のデータのやりとりを円滑ならしめるためのインターフェース回路を生成するなどの方法に関して説明する。
【００４２】
図１（ａ），（ｂ）は、本実施形態の集積回路装置の設計に利用される資産である２つの既存の回路ブロックの信号伝達関係と、各回路ブロックのクロック及び出力値のタイミングチャートとをそれぞれ例示する図である。
【００４３】
図１（ａ）に示すように、前段の回路ブロックＩＰ−Ａは同期信号Sync-outとデータ信号Data-outとを出力するように設計されており、後段の回路ブロックＩＰ−Ｂは同期信号Sync-in とデータ信号Data-in とを入力して動作するように構成されている。また、図１（ｂ）に示すように、回路ブロックＩＰ−Ａと回路ブロックＩＰ−Ｂとは、共通のクロック系統に属する。しかし、前段の回路ブロックＩＰ−Ａにおいては、出力同期信号Sync-outがハイレベルのときには出力データ信号Data-outは有効になっておらず、出力同期信号Sync-outの立ち下がり時に出力データ信号が有効になる期間が始まっている。それに対し、後段の回路ブロックＩＰ−Ｂにおいては、入力同期信号Sync-in がハイレベルのときに入力データ信号Data-in が有効になっている。
【００４４】
既存の回路ブロックＩＰ−Ａ，ＩＰ−Ｂが以上のように構成されている場合には、後段の回路ブロックＩＰ−Ｂに、同期信号Sync-outとデータ信号Data-outとがそのままのタイミング関係を維持して入力されても、後段の回路ブロックＩＰ−Ｂにおいては入力データ信号Data-in を取り込むことができず、正常な動作ができないことになる。
【００４５】
そこで、本実施形態においては、図１（ａ），（ｂ）に示す出力又は入力特性を有する回路ブロックＩＰ−Ａ，ＩＰ−Ｂ間に、後述する各具体例に示すようなブロック間インターフェース回路を挿入することによって、回路ブロックＩＰ−Ａ，ＩＰ−Ｂ間の入出力を円滑に行なわせる。本実施形態においては、信号波形の検出や調整をグラフィカルな設計者インターフェース（ＧＵＩ）やファイルを用いて行なう。信号波形は、回路ブロックＩＰ−Ａ，ＩＰ−Ｂに付属されたデータ（要求されるタイミング）であったり、あるいは、回路シミュレーションを用いて回路ブロックＩＰ−Ａ，ＩＰ−Ｂのシミュレーションを行なうことにより取り出せる出力である。
【００４６】
−第１の具体例−
図２（ａ）は、第１の具体例におけるインターフェース回路（以下、“Ｉ／Ｆ回路”とする）の生成，挿入手順を示すフローチャート図である。図２（ｂ）〜（ｄ）は、フロー中の各ステップにおける処理の内容を示す図である。
【００４７】
まず、ステップＳＴ１１で、前段の回路ブロックＩＰ−Ａの信号波形を変更する。このステップＳＴ１１では、図２（ｂ）の中図に示すような前段の回路ブロックＩＰ−Ａの出力同期信号Sync-outが、図２（ｂ）の下図に示す修正出力同期信号Sync-out’のように、１サイクル（クロックの１周期）だけ遅延するように変更される。
【００４８】
次に、ステップＳＴ１２で、出力同期信号の変更に応じて、Ｉ／Ｆ回路ＩＰ−Ｃを生成する。このステップでは、図２（ｃ）に示すように、出力同期信号Sync-outを受けて修正出力同期信号Sync-out’と同じ波形の入力同期信号Sync-in を出力するＩ／Ｆ回路ＩＰ−Ｃ（フリップフロップＦＦ）を、ＲＴレベル（ハードウエア言語）およびGate（netlist ）レベルで生成する。
【００４９】
次に、ステップＳＴ１３で、前段の回路ブロックＩＰ−Ａと後段の回路ブロックＩＰ−Ｂとの間に、Ｉ／Ｆ回路ＩＰ−Ｃを自動的に挿入する。すなわち、図２（ｄ）に示すように、設計される集積回路装置において、回路ブロックＩＰ−Ａと回路ブロックＩＰ−Ｂとの間にＩ／Ｆ回路ＩＰ−Ｃが自動的に挿入され、出力同期信号sync-outがこのＩ／Ｆ回路ＩＰ−Ｃによって１サイクルだけ遅延されて後段の回路ブロックＩＰ−Ｂに入力同期信号Sync-in として入力される。なお、後段の回路ブロックＩＰ−Ｂの入力データ信号Data-in としては、前段の回路ブロックＩＰ−Ａの出力データ信号Data-outがそのまま入力される。
【００５０】
その結果、後段の回路ブロックＩＰ−Ｂにおいて、１サイクルだけ遅延された出力同期信号sync-outが図１（ｂ）に示す入力同期信号Sync-in に置き換わるので、入力データ信号Data-in を取り込むことが可能になり、後段の回路ブロックＩＰ−Ｂにおける適正な動作を確保することができる。このタイミングチャートの変更には、それほどの熟練は要せず、しかも、Ｉ／Ｆ回路ＩＰ−Ｃは自動的に挿入されるので、大規模な集積回路装置を設計する際にも、設計工数の低減を図ることができる。
【００５１】
−第２の具体例−
図３（ａ）は、第２の具体例におけるＩ／Ｆ回路の生成，挿入手順を示すフローチャート図である。図３（ｂ）〜（ｄ）は、フロー中の各ステップにおける処理の内容を示す図である。
【００５２】
まず、ステップＳＴ２１で、前段の回路ブロックＩＰ−Ａの信号波形を変更する。このステップＳＴ２１では、図３（ｂ）の中図に示すような前段の回路ブロックＩＰ−Ａの出力同期信号Sync-outが、図３（ｂ）の下図に示す修正出力同期信号Sync-out’のように、１サイクルだけ遅延するように変更される。
【００５３】
次に、ステップＳＴ２２で、出力同期信号の変更に応じて、Ｉ／Ｆ回路を生成する。このステップでは、図３（ｃ）に示すように、出力同期信号Sync-outを受けて修正出力同期信号Sync-out’と同じ波形の新出力同期信号Sync-out-newを出力するＩ／Ｆ回路ＩＰ−Ｃ（フリップフロップＦＦ）を、ＲＴレベル（ハードウエア言語）およびGate（netlist ）レベルで生成する。
【００５４】
次に、ステップＳＴ２３では、前段の回路ブロックＩＰ−Ａ中にＩ／Ｆ回路を自動的に挿入する。すなわち、図３（ｄ）に示すように、回路ブロックＩＰ−Ａ内にＩ／Ｆ回路が自動的に挿入され、新たな回路ブロックＩＰ−Ａ’内において、出力同期信号Sync-outがこのＩ／Ｆ回路によって１サイクルだけ遅延されてなる新出力同期信号Sync-out-newが生成される。そして、新出力同期信号Sync-out-newが後段の回路ブロックＩＰ−Ｂに入力信号Sync-in として入力される。
【００５５】
その結果、後段の回路ブロックＩＰ−Ｂにおいて、図３（ｂ）の下図に示す修正出力同期信号Sync-out’と同じ波形の新出力同期信号Sync-out-newが図１（ｂ）に示す入力同期信号Sync-in に置き換わるので、入力データ信号Data-in を取り込むことが可能になり、後段の回路ブロックＩＰ−Ｂにおける適正な動作を確保することができる。このＩ／Ｆ回路の生成には、それほどの熟練は要せず、しかも、Ｉ／Ｆ回路は自動的に挿入されるので、大規模な集積回路装置を設計する際にも、設計工数の低減を図ることができる。また、上記第１の具体例に比べて、Ｉ／Ｆ回路が回路ブロックＩＰ−Ａ’中に組み込まれているので、回路数が少なくて済む。さらに、このようにＩ／Ｆ回路が付設された新たな回路ブロックＩＰ−Ａ’をデータベースに登録しておくことにより、ＩＰ（回路ブロック）として再利用することが可能な資産（リソース）が得られることになる。
【００５６】
−第３の具体例−
図４（ａ）は、第３の具体例におけるＩ／Ｆ回路の生成，挿入手順を示すフローチャート図である。図４（ｂ）〜（ｄ）は、フロー中の各ステップにおける処理の内容を示す図である。
【００５７】
まず、ステップＳＴ３１で、前段の回路ブロックＩＰ−Ａの信号波形を変更する。このステップＳＴ３１では、図４（ｂ）の中図に示すような前段の回路ブロックＩＰ−Ａの出力同期信号Sync-outが、図４（ｂ）の下図に示す修正出力同期信号Sync-out’のように、１サイクルだけ遅延するように変更される。
【００５８】
次に、ステップＳＴ３２で、出力同期信号Sync-outの変更に応じて、Ｉ／Ｆ回路を生成する。このステップＳＴ３２では、図４（ｃ）に示すように、修正出力信号Sync-out’と同じ波形の新入力同期信号Sync-in-new を１サイクルだけ遅延させて入力同期信号Sync-in として出力するＩ／Ｆ回路ＩＰ−Ｃ（フリップフロップＦＦ）を、ＲＴレベル（ハードウエア言語）およびGate（netlist ）レベルで生成する。
【００５９】
次に、ステップＳＴ３３では、回路面積の小さな後段の回路ブロックＩＰ−Ｂ中にＩ／Ｆ回路を自動的に挿入する。すなわち、図４（ｄ）に示すように、設計される集積回路装置において、回路ブロックＩＰ−Ｂ内にＩ／Ｆ回路が自動的に挿入され、新たな後段の回路ブロックＩＰ−Ｂ’内に、回路ブロックＩＰ−Ａからの出力同期信号Sync-outが新入力同期信号Sync-in-new として入力されると、Ｉ／Ｆ回路によってクロックの１周期分だけ遅延される。そして、この遅延された新入力同期信号Sync-in-new が入力信号Sync-in となる。
【００６０】
その結果、図４（ｂ）の下図に示す修正出力同期信号Sync-out’と同じ波形に修正された入力同期信号Sync-in によって後段の回路ブロックＩＰ−Ｂが動作することになる。したがって、後段の回路ブロックＩＰ−Ｂにおいて、データ入力信号Data-in を取り込むことができ、後段の回路ブロックＩＰ−Ｂにおける適正な動作を確保することができる。このＩ／Ｆ回路の生成には、それほどの熟練は要せず、しかも、Ｉ／Ｆ回路は自動的に挿入されるので、大規模な集積回路装置を設計する際にも、設計工数の低減を図ることができる。また、上記第１の具体例に比べて、Ｉ／Ｆ回路が回路ブロックＩＰ−Ｂ’中に組み込まれているので、回路数が少なくて済む。さらに、このようにＩ／Ｆ回路が付設された新たな回路ブロックＩＰ−Ｂ’をデータベースに登録しておくことにより、ＩＰ（回路ブロック）として再利用することが可能な資産（リソース）が得られることになる。
【００６１】
−第４の具体例−
図５（ａ）は、第４の具体例におけるＩ／Ｆ回路の生成，挿入手順を示すフローチャート図である。図５（ｂ）〜（ｄ）は、フロー中の各ステップにおける処理の内容を示す図である。
【００６２】
まず、ステップＳＴ４１で、後段の回路ブロックＩＰ−Ｂの信号波形を変更する。このステップＳＴ４１では、図５（ｂ）の中図に示すような後段の回路ブロックＩＰ−Ｂの入力同期信号Sync-in が、図５（ｂ）の下図に示す修正入力同期信号Sync-in ’のように、１サイクルだけ早まるように変更される。
【００６３】
次に、ステップＳＴ４２で、入力同期信号の変更に応じて、Ｉ／Ｆ回路ＩＰ−Ｃを生成する。このステップＳＴ４２では、図５（ｃ）に示すように、修正入力同期信号Sync-in ’と同じ波形の出力同期信号Sync-outを受けて、所望の入力同期信号Sync-in を出力するＩ／Ｆ回路ＩＰ−Ｃ（フリップフロップＦＦ）を、ＲＴレベル（ハードウエア言語）およびGate（netlist ）レベルで生成する。
【００６４】
次に、ステップＳＴ４３では、前段の回路ブロックＩＰ−Ａと後段の回路ブロックＩＰ−Ｂとの間に、Ｉ／Ｆ回路ＩＰ−Ｃを自動的に挿入する。すなわち、図５（ｄ）に示すように、設計される集積回路装置において、回路ブロックＩＰ−Ｂ内にＩ／Ｆ回路が自動的に挿入され、後段の回路ブロックＩＰ−Ｂ内に、回路ブロックＩＰ−Ｂからの出力同期信号Sync-outが１サイクルだけ遅延される。そして、遅延された出力同期信号Sync-ouが入力信号Sync-in となる。
【００６５】
その結果、後段の回路ブロックＩＰ−Ｂにおいて、クロックの１周期分だけ遅延された出力同期信号sync-outが図１（ｂ）に示す入力同期信号Sync-in に置き換わるので、図１（ｃ）に示す期間ｔ２〜ｔ３の間に入力データ信号Data-in が活性化される。したがって、上記第１の具体例と同じ効果を発揮することができる。
【００６６】
−第５の具体例−
図６（ａ）は、第５の具体例におけるＩ／Ｆ回路の生成，挿入手順を示すフローチャート図である。図６（ｂ）〜（ｄ）は、フロー中の各ステップにおける処理の内容を示す図である。
【００６７】
まず、ステップＳＴ５１で、後段の回路ブロックＩＰ−Ｂの信号波形を変更する。このステップＳＴ５１では、図６（ｂ）の中図に示すような後段の回路ブロックＩＰ−Ｂの入力同期信号Sync-in が、図６（ｂ）の下図に示す修正入力同期信号Sync-in ’のように、１サイクルだけ早まるように変更される。
【００６８】
次に、ステップＳＴ５２で、入力同期信号の変更に応じて、Ｉ／Ｆ回路ＩＰ−Ｃを生成する。このステップＳＴ５２では、図６（ｃ）に示すように、修正入力同期信号Sync-in ’と同じ波形の出力同期信号Sync-outを受けて、所望の入力同期信号Sync-in と同じ波形の新出力同期信号Sync-out-newを出力するＩ／Ｆ回路ＩＰ−Ｃ（フリップフロップＦＦ）を、ＲＴレベル（ハードウエア言語）およびGate（netlist ）レベルで生成する。
【００６９】
次に、ステップＳＴ５３では、前段の回路ブロックＩＰ−Ａ中にＩ／Ｆ回路を自動的に挿入する。すなわち、図６（ｄ）に示すように、回路ブロックＩＰ−Ａ内にＩ／Ｆ回路が自動的に挿入され、新たな回路ブロックＩＰ−Ａ’内において、出力同期信号Sync-outがこのＩ／Ｆ回路によって１サイクルだけ遅延されてなる新出力同期信号Sync-out-newが生成される。そして、新出力同期信号Sync-out-newが後段の回路ブロックＩＰ−Ｂに入力信号Sync-in として入力される。
【００７０】
その結果、後段の回路ブロックＩＰ−Ｂにおいて、図６（ｂ）の下図に示す修正入力同期信号Sync-in ’が１サイクルだけ遅延したものと同じ波形を有する新出力同期信号Sync-out-newが図１（ｂ）に示す入力同期信号Sync-in に置き換わるので、図１（ｃ）に示す期間ｔ２〜ｔ３の間に入力データ信号Data-in が活性化される。したがって、上記第２の具体例と同じ効果を発揮することができる。
【００７１】
−第６の具体例−
図７（ａ）は、第６の具体例におけるＩ／Ｆ回路の生成，挿入手順を示すフローチャート図である。図７（ｂ）〜（ｄ）は、フロー中の各ステップにおける処理の内容を示す図である。
【００７２】
まず、ステップＳＴ６１で、後段の回路ブロックＩＰ−Ｂの信号波形を変更する。このステップＳＴ６１では、図７（ｂ）の中図に示すような後段の回路ブロックＩＰ−Ｂの入力同期信号Sync-in が、図７（ｂ）の下図に示す修正入力同期信号Sync-in ’のように、１サイクルだけ早まるように変更される。
【００７３】
次に、ステップＳＴ６２で、入力同期信号の変更に応じて、Ｉ／Ｆ回路ＩＰ−Ｃを生成する。このステップＳＴ６２では、図７（ｃ）に示すように、修正入力同期信号Sync-inと同じ波形の新入力同期信号Sync-in-new を受けて、所望の入力同期信号Sync-in を出力するＩ／Ｆ回路（フリップフロップＦＦ）を、ＲＴレベル（ハードウエア言語）およびGate（netlist ）レベルで生成する。
【００７４】
次に、ステップＳＴ６３では、回路面積の小さな後段の回路ブロックＩＰ−Ｂ中にＩ／Ｆ回路を自動的に挿入する。すなわち、図６（ｄ）に示すように、設計される集積回路装置において、回路ブロックＩＰ−Ｂ内にＩ／Ｆ回路が自動的に挿入され、後段の回路ブロックＩＰ−Ｂ内に、回路ブロックＩＰ−Ａからの出力同期信号Sync-outが新入力同期信号Sync-in-new として入力されると、Ｉ／Ｆ回路によって１サイクルだけ遅延される。そして、この遅延された新入力同期信号Sync-in-new が入力信号Sync-in となる。
【００７５】
このように、フリップフロップＦＦを生成して、このフリップフロップＦＦを前段の回路ブロックＩＰ−Ａ内にＩ／Ｆ回路を自動的に挿入することにより、図７（ｂ）の下図に示す修正入力同期信号Sync-in ’が１サイクルだけ遅延されたのと同じ波形を有する入力同期信号Sync-in によって後段の回路ブロックＩＰ−Ｂが動作することになる。したがって、上記第３の具体例と同じ効果を発揮することができる。
【００７６】
−第７の具体例−
図８（ａ）は、第７の具体例におけるＩ／Ｆ回路の生成，挿入手順を示すフローチャート図である。図８（ｂ）は、フロー中のステップＳＴ７１における処理の内容を示す図である。
【００７７】
まず、ステップＳＴ７１で、面積パラメータを“小”に設定し、前段の回路ブロックＩＰ−Ａの信号波形を変更する。このステップＳＴ７１では、図８（ｂ）の中図に示すような前段の回路ブロックＩＰ−Ａの出力同期信号Sync-outが、図８（ｂ）の下図に示す修正出力同期信号Sync-out’のように、１サイクルだけ遅延するように変更される。
【００７８】
次に、ステップＳＴ７２で、出力同期信号Sync-outの変更に応じて、Ｉ／Ｆ回路を生成する。このステップＳＴ７２では、例えば上記第４の具体例の図４（ｃ）に示すようなＩ／Ｆ回路（フリップフロップＦＦ）を、ＲＴレベル（ハードウエア言語）及びGateレベル（netlist ）で生成する。
【００７９】
次に、ステップＳＴ７３で、前段の回路ブロックＩＰ−Ａの面積が後段の回路ブロックＩＰ−Ｂの面積よりも小さいか否かを判別する。そして、後段の回路ブロックＩＰ−Ｂの面積の方が小さいとき（“ＮＯ”のとき）にはステップＳＴ７４に進んで後段の回路ブロックＩＰ−ＢにＩ／Ｆ回路を自動的に挿入する。このとき、例えば図４（ｄ）に示すような回路が設計される。一方、前段の回路ブロックＩＰ−Ａの面積の方が小さいとき（“ＹＥＳ”のとき）にはステップＳＴ７５に進んで前段の回路ブロックＩＰ−ＡにＩ／Ｆ回路を自動的に挿入する。このとき、例えば図３（ｄ）に示すような回路が設計される。
【００８０】
したがって、本具体例においては、考慮に入れたいパラメータとして面積パラメータを予め設定しておくことにより、面積的に有利な方の回路ブロック内に信号調整用の回路を自動的に挿入することができる。よって、上記第２又は第３の具体例と同様の効果を発揮することができる。
【００８１】
（第１の実施形態の変形形態１）
上記第１の実施形態においては、共通のクロック系統によって動作する２つの回路ブロックがある場合を例にとって説明したが、この変形形態においては、１つの回路ブロックに対して複数の回路ブロックが互いに並列に接続されている場合に、ピン数を変更しないように選択するための例について説明する。
【００８２】
図９（ａ），（ｂ）は、本変形形態の集積回路装置の設計に利用される資産である３つの既存の回路ブロックの信号伝達関係と、各回路ブロックのクロック及び各信号のタイミングチャートとをそれぞれ示す図である。
【００８３】
図９（ａ）に示すように、前段の回路ブロックＩＰ−Ａは同期信号Sync-outとデータ信号Data-outとを出力するように設計されており、後段の２つの回路ブロックＩＰ−Ｂ，ＩＰ−Ｃは、それぞれ同期信号Sync-in1，Sync-in2とデータ信号Data-in1，Data-in2とを入力して動作するように構成されている。また、図９（ｂ）に示すように、回路ブロックＩＰ−Ａ，ＩＰ−Ｂ，ＩＰ−Ｃは、共通のクロックにより動作するが、前段の回路ブロックＩＰ−Ａの出力同期信号Sync-outがハイレベルになるタイミングに対して、後段の回路ブロックＩＰ−Ｂ，ＩＰ−Ｃの入力同期信号Sync-in1，Sync-in2がハイレベルになるタイミングはそれぞれ１サイクル，２サイクルだけ遅れている。一方、前段の回路ブロックＩＰ−Ａの出力データ信号Data-outと、後段の回路ブロックＩＰ−Ｂの入力データ信号Data-in1とは同じタイミングで有効になるが、後段の回路ブロックＩＰ−Ｃの入力データ信号Data-in2は前段の回路ブロックＩＰ−Ａの出力データ信号Data-outよりも１サイクル遅れて有効になる。
【００８４】
既存の回路ブロックＩＰ−Ａ，ＩＰ−Ｂ，ＩＰ−Ｃが以上のように構成されている場合にも、第１の実施形態と同様に、後段の回路ブロックＩＰ−Ｂ，ＩＰ−Ｃにおいて、入力データ信号Data-in1，Data-in2を取り込むことができない。
【００８５】
そこで、本変形形態１においては、上記第１の実施形態と同様に、フリップフロップＦＦを生成してこれをいずれかに挿入するが、ここでは、ピン数をパラメータとしてフリップフロップ（Ｉ／Ｆ回路）を挿入する場所を決定する。
【００８６】
図１０（ａ）は、本変形形態におけるＩ／Ｆ回路の生成，挿入手順を示すフローチャート図である。図１０（ｂ），（ｃ）は、それぞれフロー中のステップＳＴ８４，ＳＴ８５における処理の内容を示す図である。
【００８７】
まず、ステップＳＴ８１で、ピン数の変更を重視するかどうかを選択するためのピン数パラメータを設定し、後段の回路ブロックＩＰ−Ｂ，ＩＰ−Ｃの同期信号Sync-in1，Sync-in2とデータ信号Data-in1，Data-in2との波形を、それぞれ回路ブロックＩＰ−Ａの同期信号Sync-outとデータ信号Data-outとに一致するように変更する。つまり、後段の回路ブロックＩＰ−Ｂの入力同期信号Sync-in1を１サイクルだけ早めるとともに、後段の回路ブロックＩＰ−Ｃの入力同期信号Sync-in2を２サイクルだけ早め、かつ、入力データ信号Data-in2を１サイクルだけ早めるように信号波形を変更する。
【００８８】
次に、ステップＳＴ８２で、この信号波形の変更に応じて、第１の実施形態における各具体例と同様に、Ｉ／Ｆ回路（フリップフロップＦＦ）を、ＲＴレベル（ハードウエア言語）及びGateレベル（netlist ）で生成する。つまり、変更された波形を有する信号から後段の回路における動作に必要な信号が得られるように、フリップフロップＦＦを生成する。
【００８９】
次に、ステップＳＴ８３で、前段の回路ブロックＩＰ−Ａのピン数の変更があってもよいかどうかを判断し、なるべく回路ブロックＩＰ−Ａのピン数に変更がないことを希望するとき（ＮＯのとき）には、ステップＳＴ８４に進んで、後段の回路ブロックＩＰ−Ｂ，ＩＰ−ＣにＩ／Ｆ回路（フリップフロップＦＦ）を自動的に挿入する。すなわち、図１０（ｂ）に示すように、後段の回路ブロックＩＰ−Ｂには、前段の回路ブロックＩＰ−Ａの出力同期信号Sync-outを１サイクルだけ遅延させて入力同期信号Sync-in1とするように、入力側に１つのフリップフロップＦＦを挿入する。一方、後段の回路ブロックＩＰ−Ｃには、回路ブロックＩＰ−Ａの出力同期信号Sync-outを２サイクルだけ遅延させるための２つのフリップフロップＦＦと、出力データ信号Data-outを１サイクルだけ遅らせるための１つのフリップフロップＦＦとを挿入する。
【００９０】
一方、ステップＳＴ８３における判別で、回路ブロックＩＰ−Ａのピン数に変更があってもよいとき，つまりピン数の変更を重視しないことを選択したときには、ステップＳＴ８５に進んで、前段の回路ブロックＩＰ−Ａ内にＩ／Ｆ回路（フリップフロップＦＦ）を自動的に挿入する。すなわち、図１０（ｃ）に示すように、前段の回路ブロックＩＰ−Ａ内に３つのフリップフロップＦＦを挿入することにより、出力同期信号Sync-outを１サイクルだけ遅延させた入力同期信号Sync-in1と、出力同期信号Sync-outを２サイクルだけ遅延させた入力同期信号Sync-in2と、出力データ信号Data-outを１サイクルだけ遅延させた入力同期信号Data-in2とを生成して、後段の各回路ブロックＩＰ−Ｂ，ＩＰ−Ｃに送り込む。この場合、図１０（ｂ）に示す回路に比べ、回路ブロックＩＰ−Ａの出力ピン数が２つ多いが、全体としてフリップフロップＦＦ数は１つ少なくて済むことになる。
【００９１】
この変形形態においては、設計者がピン数パラメータを設定する機能を付加することにより、設計者がピン数の増加を望まないときにはピン数を増加させない範囲で、Ｉ／Ｆ回路を自動挿入することが可能になる。
【００９２】
（第１の実施形態の変形形態２）
本変形形態においては、１つの回路ブロックに対して複数の回路ブロックが互いに並列に接続されている場合に、を例にとって説明する。
【００９３】
図１１（ａ），（ｂ）は、本変形形態の集積回路装置の設計に利用される資産である３つの既存の回路ブロックの信号伝達関係と、各回路ブロックのクロック及び各信号のタイミングチャートとをそれぞれ示す図である。
【００９４】
図１０（ａ）に示すように、前段の回路ブロックＩＰ−Ａは同期信号Sync-outとデータ信号Data-outとを出力するように設計されており、後段の２つの回路ブロックＩＰ−Ｂ，ＩＰ−Ｃは、それぞれ同期信号Sync-in1，Sync-in2とデータ信号Data-in1，Data-in2とを入力して動作するように構成されている。また、図１０（ｂ）に示すように、回路ブロックＩＰ−Ａ，ＩＰ−Ｂ，ＩＰ−Ｃは、共通のクロックにより動作するが、前段の回路ブロックＩＰ−Ａの出力同期信号Sync-outがハイレベルになるタイミングに対して、後段の回路ブロックＩＰ−Ｂ，ＩＰ−Ｃの入力同期信号Sync-in1，Sync-in2がハイレベルになるタイミングはそれぞれ、１サイクル，２サイクルだけ遅れている。一方、前段の回路ブロックＩＰ−Ａの出力データ信号Data-outと、後段の回路ブロックＩＰ−Ｂ，ＩＰ−Ｃの入力データ信号Data-in1，Data-in2とは同じタイミングで有効になる。
【００９５】
既存の回路ブロックＩＰ−Ａ，ＩＰ−Ｂ，ＩＰ−Ｃが以上のように構成されている場合にも、第１の実施形態と同様に、後段の回路ブロックＩＰ−Ｂ，ＩＰ−Ｃにおいて、入力データ信号Data-in1，Data-in2を取り込むことができない。
【００９６】
そこで、本変形形態２においては、上記第１の実施形態と同様に、フリップフロップＦＦを生成してこれをいずれかに挿入するが、ここでは、構成が変更される回路ブロックの数（変更個数）をパラメータとしてフリップフロップ（Ｉ／Ｆ回路）を挿入する場所を決定する。
【００９７】
図１２（ａ）は、本変形形態におけるＩ／Ｆ回路の生成，挿入手順を示すフローチャート図である。図１２（ｂ），（ｃ）は、それぞれフロー中のステップＳＴ９４，ＳＴ９５における処理の内容を示す図である。
【００９８】
まず、ステップＳＴ９１で、構成が変更される回路ブロックの数（変更個数）を１つだけにするかどうかを選択するためのブロック数パラメータを設定し、後段の回路ブロックＩＰ−Ｂ，ＩＰ−Ｃの同期信号Sync-in1，Sync-in2とデータ信号Data-in1，Data-in2との波形を、それぞれ回路ブロックＩＰ−Ａの同期信号Sync-outとデータ信号Data-outとに一致するように変更する。つまり、後段の回路ブロックＩＰ−Ｂ，ＩＰ−Ｃの入力同期信号Sync-in1，Sync-in2を１サイクルだけ早めるように信号波形を変更する。
【００９９】
次に、ステップＳＴ９２で、この信号波形の変更に応じて、第１の実施形態における各具体例と同様に、Ｉ／Ｆ回路（フリップフロップＦＦ）を、ＲＴレベル（ハードウエア言語）及びGateレベル（netlist ）で生成する。つまり、変更された波形を有する信号から後段の回路における動作に必要な信号が得られるように、フリップフロップＦＦを生成する。
【０１００】
次に、ステップＳＴ９３で、構成が変更される回路ブロック数を１つにするかどうかを判断し、回路ブロックの変更個数が１つにとどめなくてもよいとき（ＮＯのとき）には、ステップＳＴ９４に進んで、図１２（ｂ）に示すように、後段の各回路ブロックＩＰ−Ｂ，ＩＰ−ＣにＩ／Ｆ回路（フリップフロップＦＦ）を１つずつ自動的に挿入する。
【０１０１】
一方、ステップＳＴ９３における判別で、構成が変更される回路ブロック数を１つにとどめたいことを選択したときには、ステップＳＴ９５に進んで、図１２（ｃ）に示すように、前段の回路ブロックＩＰ−Ａ内に１つのＩ／Ｆ回路（フリップフロップＦＦ）を自動的に挿入する。この場合、図１２（ｂ）に示す回路に比べ、変更される回路ブロック数は１つで済み、かつ、必要なフリップフロップＦＦ数も１つ少なくて済むことになる。
【０１０２】
この変形形態においては、複数の回路ブロックが１つの回路ブロックに対して互いに並列に接続されている場合に、その入出力関係から判断してできるだけ少ない変更個数で済ませるように設計することができる。
【０１０３】
特に、図１２（ｂ）に示すように、１つの回路ブロックに互いに並列に接続されている複数の回路ブロックの信号波形が同じ場合には、１つの回路ブロック内に少ないＩ／Ｆ回路を挿入するだけで済むので、このような変更個数パラメータを設定することの効果が大きい。ただし、１つの回路ブロックのみにＩ／Ｆ回路を挿入する場合の合計のＩ／Ｆ回路数と、複数の回路ブロックに各々Ｉ／Ｆ回路を挿入する場合の合計のＩ／Ｆ回路数とが同じであっても、変更される回路ブロックの数が少ないことを希望する場合には、１つの回路ブロックの構成を変更するだけで済むだけでも効果がある。
【０１０４】
なお、本変形形態においては、後段に複数の回路ブロックが互いに並列に配置されている場合を例にとったが、１つの回路ブロックの前段に複数の回路ブロックが互いに並列に接続されている場合にも同様に適用することができる。つまり、その場合には、できるだけ変更個数を少なくするためには、後段側の回路ブロック内にＩ／Ｆ回路（フリップフロップＦＦ）を挿入すればよい。また、多数の回路ブロックが直列に接続されている場合でも、修正する回路ブロックの数ができるだけ少なくなるように、判別することができる。
【０１０５】
また、上記第１の実施形態及びその変形形態においては、いずれもＩ／Ｆ回路としてフリップフロップ（遅延回路）を設けたが、本発明はかかる例に限定されるものではなく、Ｉ／Ｆ回路として、インバータなどの他の要素を挿入することができる。
【０１０６】
（第２の実施形態）
本実施形態においては、ＧＵＩ（グラフィックユーザインターフェース）を利用して、手動で波形をすることによりインターフェース回路を生成する方法について説明する。
【０１０７】
−第１の具体例−
図１３（ａ），（ｂ）は、本実施形態の第１の具体例における信号波形の変更方法を示すタイミングチャート及び操作−回路動作関係表である。また、図１４は本具体例における信号波形の変更方法を示すフローチャートである。以下、図１３（ａ），（ｂ）を参照しながら、図１４に示すフローに沿って信号波形の変更手順を説明する。
【０１０８】
まず、ステップＳＴ１００で、利用したいＩＰの信号波形をＧＵＩ上に表示するようにセットした後、ステップＳＴ１０１で、信号波形をデータベースからＧＵＩに取り込むと、図１３（ａ）に示すクロック，リセット，信号Ａ及び信号Ｂの波形が表示され、ステップＳＴ１０２で、信号波形をグラフィカルに編集することができる。
【０１０９】
次に、ステップＳＴ１０３で、信号Ｂを２サイクルだけ遅延させる（処理(1)）。この処理(1)は、具体的には、図１３（ｂ）の上段に示す操作のように、設計者がマウスなどによって図１３（ａ）に示す信号Ｂをドラッグした後、これを後方にスライドさせることにより行なわれる。そして、この処理(1)は、回路動作“ｄｅｌａｙ”としてデータベースに登録される。
【０１１０】
次に、ステップＳＴ１０４で、信号Ｂの論理を反転させる（処理(2)）。この処理(2)は、具体的には、図１３（ｂ）の下段に示す操作のように、信号Ｂの波形をダブルクリックすることにより行なわれる。そして、この処理(2)によって、信号Ｂの波形は、図１３（ａ）の最下段に示す修正信号の波形となる。この処理(2)は、回路動作“信号全体の論理反転”としてデータベースに登録される。
【０１１１】
次に、ステップＳＴ１０５で、データベースから処理(1)，(2)の回路動作を取り出して、これを論理素子に変換する。その結果、処理(1)の“ｄｅｌａｙ”動作はフリップフロップに変換され、処理(2)の“論理反転”動作はインバータに変換される。なお、ここで説明した変更動作は、本発明の変更動作の一例であり、本発明の変更動作は、ここで説明した変更動作に限定されるものではない。
【０１１２】
次に、ステップＳＴ１０６で、信号Ｂが流れる経路内の適当な部位に、フリップフロップとインバータとを直列に配置する。そして、ステップＳＴ１０７で、回路間を再接続し、ステップＳＴ１０８で、ＲＴＬ回路の生成を完了する。
【０１１３】
このような信号波形の変更方法を例えば上記第１の実施形態における各回路ブロックの修正に利用すれば、例えばフリップフロップの挿入をきわめて短時間かつ容易に行なうことができる。
【０１１４】
本具体例によると、回路ブロック間の信号波形の相違を吸収するためのＩ／Ｆ回路を生成し、一部の回路ブロック内又は回路ブロック間に自動的に挿入することが、きわめて容易に行なわれる。
【０１１５】
従来、信号波形を利用して回路を生成する方法としては、信号波形をいったん真理値表に変換したり、状態遷移に変換する方法が知られているが、これらの方法では変換過程が複数過程に亘るため、変換手段が複雑となる。また、信号波形上で論理素子を指定する方法もあるが、これは設計者の工数が過大となる。しかも、簡単な構造の回路を生成する場合であっても、よけいな変換や生成の手順が必要となる。したがって、システムＬＳＩのような大規模な集積回路装置を設計する場合に、これらの従来の方法を利用していたのでは、設計の効率がきわめて低下するおそれがあった。
【０１１６】
それに対し、本具体例では、信号波形を変更する操作を設計者が行なうので、波形の変更は容易に行われ、波形の変更を追加又は変更すべき回路動作に対応づけて登録しておくことで、その後、登録された回路動作を利用して、波形の変更操作に対応する回路素子が自動的に生成される。したがって、要素を追加するための回路生成過程が簡略され、設計段階における回路生成処理を迅速に行なうことができる。また、ＧＵＩを用いた波形の変更処理も簡単化される。
【０１１７】
しかも、インターフェース回路の挿入、既存の集積回路の変更などを、回路設計者が受け入れやすいＧＵＩを用いた波形の変更によって実現できるので、システムＬＳＩなどの大規模な集積回路装置の設計を効率よく進めることができる。
【０１１８】
−第２の具体例−
図１５（ａ），（ｂ），（ｃ）は、本実施形態の第２の具体例における信号波形の変更方法を示すタイミングチャート及びＲＴレベル，ゲートレベルにおける操作−回路動作関係表である。また、図１６は本具体例における信号波形のＲＴレベル及びゲートレベルにおける変更方法を示すフローチャートである。以下、図１５（ａ），（ｂ）を参照しながら、図１６に示すフローに沿って信号波形の変更手順を説明する。
【０１１９】
まず、ステップＳＴ１１０，１２０で、利用したいＩＰの信号波形をＧＵＩ上に表示するようにセットした後、ステップＳＴ１１１，ＳＴ１２１で、信号波形をデータベースからＧＵＩに取り込むと、図１５（ａ）に示すクロック，リセット，信号Ａ及び信号Ｂの波形が表示され、ステップＳＴ１１２，ＳＴ１２２で、信号波形をグラフィカルに編集することができる。
【０１２０】
次に、ステップＳＴ１１３，ＳＴ１２３で、信号Ｂを２サイクルだけ遅延させる（処理(1)）。この処理(1)は、具体的には、図１５（ｂ）の上段に示す操作のように、設計者がマウスなどによって図１５（ａ）に示す信号Ｂをドラッグした後、これを後方にスライドさせることにより行なわれる。そして、この処理(1)は、回路動作“ｄｅｌａｙ”としてデータベースに登録され、その操作はＲＴＬ（ハードウエア記述）に関連づけられている。
【０１２１】
次に、ステップＳＴ１１４，ＳＴ１２４で、信号Ｂの論理を反転させる（処理(2)）。この処理(2)は、具体的には、図１５（ｂ）の下段に示すように、信号Ｂの波形をダブルクリックすることにより行なわれる。そして、この処理(2)によって、信号Ｂの波形は、図１５（ａ）の最下段に示す修正信号の波形となる。この処理(2)は、回路動作“信号全体の論理反転”として」データベースに登録され、その操作はＲＴＬ（ハードウエア記述）に関連づけられている。
【０１２２】
次に、ステップＳＴ１１５，ＳＴ１２５で、データベースから処理(1)，(2)の回路動作を取り出して、図１５（ｃ）に示すように、これを論理素子に変換する。その結果、処理(1)の“ｄｅｌａｙ”動作はフリップフロップに変換され、処理(2)の“論理反転”動作はインバータに変換される。
【０１２３】
次に、ステップＳＴ１１６，ＳＴ１２６で、信号Ｂが流れる経路内の適当な部位に、２つのフリップフロップとインバータとを直列に配置する。そして、ステップＳＴ１１７，ＳＴ１２７で、回路間を再接続し、ステップＳＴ１１８，１２８で、ＲＴＬ回路，ゲートレベル回路の生成を完了する。
【０１２４】
本具体例においては、信号波形の変更に応じて、ハードウエア記述によるＲＴＬ回路だけでなくゲートレベル回路も生成しているので、第１の具体例の効果をより下位のレベルまで詳細化された回路の変更，追加を行なうことができる。また、ＲＴＬ，ゲートレベル混在回路にも容易に追加することができる。
【０１２５】
−第３の具体例−
本具体例においては、ＧＵＩを利用した既存回路の変更処理の例について説明する。図１７（ａ）〜（ｄ）は、それぞれ順に、本具体例における変更の対象となる回路，シミュレーションの結果得られた変更前の各信号の波形，波形変更ウィンドウ中における各信号の波形，シミュレーションの結果得られた変更後の各信号の波形を示す図である。
【０１２６】
図１７（ａ）に示すように、回路中には、回路ブロックＡ，Ｂ，Ｃがあり、回路ブロックＡからの出力信号Ａout1，Ａout2を受けて、回路ブロックＢから出力信号Ｂout1，Ｂout2が出力される。また、回路ブロックＡからの出力信号Ａout3を受けて、回路ブロックＣから出力信号Ｃout が出力される。
【０１２７】
そして、回路をシミュレーションした結果、図１７（ｂ）に示す波形が得られたとする。ただし、図１７（ｂ）には、変更の対象である回路ブロックＡ，Ｂの出力信号の波形のみが記載されており、他の信号の波形の記載は省略されている。
【０１２８】
ここで、出力信号Ａout1，Ａout2を変更してＢout1，Ｂout2を変えたい場合がある。そこで、図１７（ｃ）に示すように、変更ウィンドウをＧＵＩに呼び出して、出力信号Ａout2の波形を変更する。この例では、ドラッグとスライドによって出力信号Ａout2を１サイクル遅延させた後、ダブルクリックによって出力信号Ａout2を論理反転する。そして、処理が完了すると“ＯＫ”を押す。
【０１２９】
その結果、図１７（ａ）においてＲＴＬ記述で表されているＩ／Ｆ回路が挿入される。具体的には、Ｉ／Ｆ回路はフリップフロップとインバータとからなるものである。
【０１３０】
そして、このＩ／Ｆ回路を挿入した状態で回路のシミュレーションを行なった結果、図１７（ｄ）に示すような信号波形が得られる。この波形が設計者の所望するものでなければ、再度変更処理を行なうことができる。
【０１３１】
本具体例によると、ＩＰを利用した設計を行なう場合のみならず、既存の集積回路を修正したいときには、ＧＵＩを利用して、ブロック間のＩ／Ｆ回路の挿入処理などの変更処理をシミュレーションと同時に行えるため、きわめて簡単に行なうことができる。
【０１３２】
−第４の具体例−
本具体例においては、第２の実施形態におけるＧＵＩを利用する手法を、上記第１の実施形態で行なったインターフェース回路の生成に適用した具体例について説明する。図１８（ａ）〜（ｆ）は、それぞれ順に、本具体例における変更の対象となる回路，前段の回路ブロックＩＰ−Ａの出力信号の波形，後段の回路ブロックＩＰ−Ｂの入力信号の波形，波形変更ウィンドウ中における各信号の波形，変更処理のＲＴＬ記述，変更処理により自動生成されるＩ／Ｆ回路を示す図である。
【０１３３】
図１８（ａ）に示すように、回路中には、回路ブロックＩＰ−Ａ，ＩＰ−Ｂがあり、回路ブロックＩＰ−Ａの出力同期信号Sync-out，出力データ信号Data-outの波形は図１８（ｂ）に示される波形であり、回路ブロックＩＰ−Ｂの入力同期信号Sync-in ，出力データ信号Data-in の波形は素１８（ｃ）に示される波形であるとする。このとき、入力同期信号Sync-in は出力同期信号Sync-outよりも１サイクル遅れており、かつ、論理値も逆である。
【０１３４】
そこで、図１８（ｄ）に示すように、変更ウィンドウをＧＵＩに呼び出して、出力同期信号Sync-outの波形を変更する。この例では、ダブルクリックによって出力同期信号Sync-outを論理反転した後、ドラッグとスライドによって出力同期信号Sync-outを１サイクル遅延させる。
【０１３５】
その結果、図１８（ｅ）のＲＴＬ記述で表されているＩ／Ｆ回路が自動的に生成される。このＩ／Ｆ回路は、図１８（ｆ）に示すように、インバータＩＮＶとフリップフロップＦＦとを直列に接続して構成されている。
【０１３６】
本具体例によると、ＧＵＩを利用して、Ｉ／Ｆ回路を自動的に生成し、自動的に挿入する処理を簡単に行なうことができる利点がある。
【０１３７】
なお、本実施形態で生成された回路要素を回路ブロック内に組み込んで回路ブロックを修正することもできることは言うまでもない。
【０１３８】
（第３の実施形態）
本実施形態においては、信号の波形を変更するだけでは生成不能な信号があった場合の処理について説明する。図１９は、本実施形態における基本的な処理の流れを示すフローチャート図である。図２０は、本実施形態において編集される回路の波形を示す図である。以下、図２０を参照しながら、図１９のフローに沿って本実施形態における処理の内容を説明する。
【０１３９】
まず、ステップＳＴ１３０で、例えばシミュレーションを行なって、利用したいＩＰの信号波形をＧＵＩ上に表示するようにセットした後、ステップＳＴ１３１で、信号波形をデータベースからＧＵＩに取り込む。このとき、図２０に示すクロック，リセット，信号Ａ，信号Ｂのの波形が表示画面に現れる。次に、ステップＳＴ１３２で、クリック・ドラッグ等により信号波形をグラフィカルに編集する。例えば、信号Ａの論理を反転させる処理(1)（図示せず），信号Ｂを２サイクルスライドさせる処理(2)によって図２０に示す信号Ｂ’に変形し、さらに、信号Ｂ’の一部の区間における論理のみを反転させる処理(3)（図示せず）を行なう。これらの処理によって変更された波形は、データベース内に登録される。
【０１４０】
次に、ステップＳＴ１３３，１３４，１３５で、処理(1)，(2)，(3)によって変更された波形をデータベースから取り出して、それぞれ１：１に可能か，つまり、図２０に示す信号Ｂの所望の波形を有する信号Ｂ”が生成されたか否かを判断する。この例では、上記処理(3)によって所望信号Ｂ”が生成されない。
【０１４１】
そして、ステップＳＴ１３３，１３４，１３５の判断において、いずれも１：１に可能でないＮＯと判断されたときには、ステップＳＴ１３６に移行して、論理的に変更できない部分の波形をハイライト表示する（図２０のハッチング部分参照）。この処理は、例えば信号Ｂを２サイクルスライドさせて生成した信号Ｂ’と所望信号Ｂ”との差分をとることによって得られる。
【０１４２】
次に、ステップＳＴ１３７に進んで、図２０の最下段に示すように、論理的に不足していると思われる部分を波形として表示する。そして、ステップＳＴ１３２に戻って、ステップＳＴ１３３，ＳＴ１３４，ＳＴ１３５の処理を繰り返した結果、いずれかのステップにおいてＹＥＳであれば所望の波形が得られるので、ステップＳＴ１３８に進んで、上述の各実施形態と同様に、編集動作を論理素子に変換する。
【０１４３】
その後、ステップＳＴ１３９で、信号Ａや得られた所望信号Ｂ”を利用する設計対象となる回路を接続する。さらに、ステップＳＴ１４０で、回路間を再接続して、ステップＳＴ１４１で、ＲＴＬ回路の生成を完了する。
【０１４４】
また、上述のグラフィカルな編集処理だけでは、図２０に示す“必要と思われる信号（つまり生成不能な部分）”を生成できないときは、以下のように生成する。まず、図２０中信号Ｂを１サイクルスライドさせて信号Ｂ''' に変形し、信号Ｂを２サイクルスライドさせて信号Ｂ’に変形する。そして、信号Ｂ''' の１サイクル部分Ｋｘと、信号Ｂ’の１サイクル部分Ｌｘとの論理積を演算することで、信号の立ち上がり部Ｍｘを生成する。また、信号Ｂ''' の他の１サイクル部分Ｋｙと、信号Ｂ’の他の１サイクル部分Ｌｙとの論理和を演算することで、信号の立ち下がり部Ｍｙを生成する。そして、生成した立ち上がり部と立ち下がり部とでＲＳフリップフロップを用いてパルスを生成し、セット信号とリセット信号とを生成する。さらに、Ｄフリップフロップによりこれを１サイクルディレイさせることにより、論理信号Ｄに変化することになる。これにより、必要と思われる論理信号Ｄのうち生成不能な部分と同じパルス幅（４サイクル分）の部分波形を有する論理選択信号Ｅを生成する。さらに、この論理選択信号を１サイクルだけスライドさせる処理(4)により、必要と思われる論理信号Ｄを生成する。このとき、スライド処理と反転処理とを加えることもできる。この過程で、立ち上がり部と立ち下がり部とを生成するときには、次の第４の実施形態で説明する方法を用いることができる。
【０１４５】
このように、利用しようとするＩＰなどにおける信号の波形を変更して利用したい場合、現在の波形から所望の波形を生成できないときには、生成ができないことを判断し、生成できないことが明らかになった場合にその旨をグラフィカルに表示して、信号生成のために不足している論理部分を必要な信号としてグラフィカルに表示することにより、以下の効果を発揮することができる。
【０１４６】
第１に、ユーザに対して、ＧＵＩ上で設計中に生成不能な箇所を迅速かつ視覚的に伝えることができるので、従来、生成不能な箇所の探索や生成不能な理由の解析に要していた時間を短縮することができる。
【０１４７】
第２に、ＧＵＩ上で生成不能な箇所を表示することにより、ユーザがその箇所を生成するための対策を講ずることが可能になる。すなわち、ユーザに対して、生成不能な箇所の信号を生成する方法についての判断を的確に行なわせて、最適な回路を迅速に生成することができる。
【０１４８】
また、グラフィカルな編集だけでは生成不能な信号がある場合には、複数の信号の１部同士の論理演算により、生成不能な信号と同じパルス幅の信号の立ち上がり部と立ち下がり部とを生成し、さらに、両者の論理値をそのまま延長することにより、生成不能な部分と同じパルス幅の部分波形を有する信号を生成することができる。さらに、その後必要に応じてグラフィカルなスライド・反転操作を加えることで、生成不能な部分を有する信号（必要と思われる信号）を容易に生成することができる。
【０１４９】
（第４の実施形態）
本実施形態においては、上記第３の実施形態において、複数の波形から回路を推測して生成するための設計方法について説明する。図２１は、本実施形態における基本的な処理の流れを示すフローチャート図である。図２２（ａ），（ｂ）は、本実施形態における信号の生成手順を示す波形図及び基本論理変換表である。図２３は、本実施形態の方法によって生成される回路の例を示す図である。以下、図２２（ａ），（ｂ）及び図２３を参照しながら、図２１のフローに沿って本実施形態における処理の内容を説明する。
【０１５０】
まず、ステップＳＴ１５０で、例えばシミュレーションを行なって、利用したいＩＰの信号波形をＧＵＩ上に表示するようにセットした後、ステップＳＴ１５１で、信号波形をデータベースからＧＵＩに取り込む。このとき、図２２（ａ）に示すクロック，リセット，信号Ａ，信号Ｂのの波形が表示画面に現れる。次に、ステップＳＴ１５２で、クリック・ドラッグ等により信号波形をグラフィカルに編集する。例えば、信号Ｂを２サイクルスライドさせる処理(2)（例えば、第３の実施形態における図２０に示す信号Ｂ’に変更する）を行なう。
【０１５１】
次に、ステップＳＴ１５３で、処理(2)は１：１に可能か，つまり、例えば第３の実施形態における図２０に示す信号Ｂの所望の波形を有する信号Ｂ”が生成されたか否かを判断する。
【０１５２】
そして、ステップＳＴ１５３の判断において、ＹＥＳであれば所望の波形が得られるので、ステップＳＴ１５４に進んで、上述の各実施形態と同様に、編集動作を論理素子に変換する。さらに、ステップＳＴ１５５で、信号Ａや得られた所望信号Ｂ”を利用する設計対象となる回路を接続する。
【０１５３】
一方、テップＳＴ１５３の判断において１：１に可能でないＮＯと判断されたときには、ステップＳＴ１５６に移行して、論理的に変更できない部分の波形をハイライト表示する（例えば図２０のハッチング部分参照）。次に、ステップＳＴ１５７で、ユーザが関連信号を選択して指定する。これにより、例えば図２２（ａ）に示す信号Ａ，Ｂが選択される。次に、ステップＳＴ１５８で、ユーザがクロックの動作エッジを選択する。このとき、図２１の右上に示すようなエッジ選択が行なわれる。
【０１５４】
次に、ステップＳＴ１５９に進んで、同図の右上に示すような解析区間の指定を行なう。
【０１５５】
さらに、ステップＳＴ１６０で、指定された解析区間におけるクロックの動作エッジでの入出力状態を抽出し、真理値表を作成して、真理値表の最適化などによって論理回路及びフリップフロップを生成する。例えば、図２２（ａ）に示すＡｘ，Ｂｘ，Ａｙ，ＢｙなどをＡＮＤ演算して立ち上がり信号Ｃｘと立ち下がり信号Ｃｙとが得られる。つまり、生成したい信号に作り上げるための論理信号がどの信号とどの信号とから作られるかを選択する。そして、遅延させる場合には、単位論理信号をスライドさせる。これにより、図２０に示す所望信号Ｂ”が生成される。なお、スライドではなく反転動作を行なってもよい。
【０１５６】
図２２（ｂ）は、上記所望信号Ｂ”を生成するための基本論理を回路素子に変換する場合の要素とそのＲＴＬ記述とを示す図である。図２３（ａ），（ｂ）は、この処理によって生成された論理回路及びフリップフロップのＲＴＬ記述及び回路図である。
【０１５７】
さらに、ステップＳＴ１６１で、回路間を再接続して、ステップＳＴ１６２で、ＲＴＬ回路の生成を完了する。
【０１５８】
このように、現在の波形から所望の波形を生成できないときには、他の既存の複数の信号をユーザに選択させて、これを合成することにより、所望の波形を出力する回路を生成する。
【０１５９】
また、この方法を利用して、例えば第３の実施形態における図２０のハッチングで示す波形を生成してもよい。
【０１６０】
（第５の実施形態）
本実施形態では、周波数の異なるクロックに応じて動作する２つの回路ブロック間におけるデータの転送タイミングの調整回路の自動生成方法について説明する。
【０１６１】
図２８（ａ），（ｂ）に示すように、前段の回路ブロックＡと後段の回路ブロックＢとが配置されている回路を設計する場合、回路ブロックＡとして利用するＩＰがクロック１で動作するように設計され、回路ブロックＢとして利用するＩＰがクロック２で動作するように設計されているとする。そして、クロック１とクロック２とは、周波数，位相が互いに異なっている場合を想定すると、回路ブロックＢの記述によっては、回路ブロックＡから受信するデータの有効期間（確定区間）の判断が不可能である。そこで、人手による解析，遅延生成回路の設計や付加を行なって、後段の回路ブロックＢの動作を確保している。このように、従来の技術では、複数のＩＰを用いた開発においてＩＰ間のデータ転送タイミングの調整を人手によって行なっていたため、多大な工数を要するという問題があった。そこで、本発明では、ＩＰ間のデータ転送タイミングの解析及びタイミング調整回路の生成を自動的に行なうための具体例について、種々のケースに沿って説明する。
【０１６２】
−第１の具体例−
図２４は、第１の具体例における基本的な処理の流れを示すフローチャート図である。図２５（ａ）〜（ｄ）は、それぞれ順に、第１の具体例における設計対象の回路図，回路変更手順を示すタイミングチャート，立ち上がりエッジ検出用回路ＣのＨＤＬ記述，回路Ｂの変更前後におけるＨＤＬ記述を示す図である。
【０１６３】
本具体例では、図２５（ａ）に示すように、互いに異なる周波数のクロックに応じて動作する２つのＩＰである回路ブロックＡ，Ｂが前段側及び後段側に配置されている場合について説明する。
【０１６４】
以下、図２５（ａ）〜（ｄ）を参照しながら、図２４のフローに沿って本実施形態における処理の内容を説明する。
【０１６５】
まず、ステップＳＴ１７０で、クロックを選択し、ステップＳＴ１７１でクロックの周期を指定する。この処理は、例えば図２５（ｂ）に示すように、回路ブロックＡはクロック１により動作し、回路ブロックＢはクロック２により動作することと、クロック１，２の周期とを知らせる処理である。クロックの周期の相違は、例えば遅いクロックを早いクロックで打ち抜くなど波形を比較するとわかるので、必ずしもクロックの周期まで指定する必要はないが、処理の迅速を期するためには、クロックの周期の指定まで行なった方が好ましい。
【０１６６】
次に、ステップＳＴ１７２で、クロック１の周期がクロック２の周期の２倍（２周期）以上であるか否かを判定する。上述のように、この判定は、遅いクロックを速いクロックで打ち抜くことによって容易に行なうことができる。そして、クロック１の周期がクロック２の２周期以上であるＹＥＳのときには、ステップＳＴ１７３に進んで、クロック１のエッジをクロック２により検出し、回路ブロックＢの動作をイネーブルにする。この立ち上がり検出用回路Ｃは、図２５（ｃ）に示すような動作記述により表される。そして、ステップＳＴ１７４で、図２５（ａ）に示すように、検出したエッジ回路Ｃを回路ブロックＡと回路ブロックＢとの間に挿入した後、回路ブロックＢにイネーブル信号Data-enable を追加して、このData-enable として回路Ｃの出力を用いる。すなわち、図２５（ｄ）に示すように、変更前の状態つまり回路ブロックＢをＩＰとしてデータベースから取り出した状態では、回路ブロックＢは、単に回路ブロックＡの出力データ信号Data-outA を入力データ信号Data-inBとして取り込むだけの動作しか行えない。それに対し、エッジ回路Ｃを挿入し、回路ブロックＢの回路変更を行うことにより、Data-enable に応じてData-Binを取り込む。つまり、周波数の相違はあっても、前段の回路ブロックのクロック周期が後段の回路ブロックのクロック周期の２倍以上であるときには、前段の回路ブロックにおけるデータの活性期間中に必ずData-enable をハイレベルに維持することができるので、確実にデータを取り込むことができるのである。特に、無駄な期間まで回路を動作させなくてもよくなるし、さらに、例えば累算回路など１データにつき１サイクルのみ動作させなくてはならない回路がある場合に有効である。
【０１６７】
一方、ステップＳＴ１７２の判断において、クロック１の周期がクロック２のクロック周期の２倍（２周期）以上ではないＮＯである場合には、ステップＳＴ１７６に移行して、さらに、クロック１がクロック２の１周期以上であるか否かを判定する。この判定結果が、ＹＥＳであれば、ステップＳＴ１７７で、クロック１をそのまま回路ブロックＢの動作イネーブルとして設定してから、ステップＳＴ１７５の処理を行なう。この場合には、エッジ回路の挿入を行なう必要はない。
【０１６８】
一方、ステップＳＴ１７６における判定結果がＮＯである場合には、ステップＳＴ１７８に移行して、自動生成が不能である旨を表示する。
【０１６９】
なお、クロック１の周期がクロック２の周期の逓倍である場合には、クロック２によって確実にデータを取り込めるので、回路の変更処理やエッジ回路の挿入を行なう必要はない。
【０１７０】
以上のように、前段の回路ブロックからデータを受信する後段の回路ブロックＢ側では、受信データの有効期間やクロックの周期の判断が不可能であるが、本具体例の方法によると、立ち上がりのエッジ検出によって、クロック１とクロック２との周波数の相違を気にすることなく、受信データを確実に取り込むことができる。すなわち、多数の回路ブロックを配置して構成される半導体集積回路装置を設計する際に、利用するＩＰコアのクロックの種類による選択の制限を緩和でき、より幅広い選択による設計の迅速化，設計される半導体集積回路装置の品質の向上を図ることができる。
【０１７１】
−第２の具体例−
図２６（ａ）〜（ｄ）は、それぞれ順に、第２の具体例における設計対象の回路図，回路変更手順を示すタイミングチャート，立ち上がりエッジ検出用回路ＣのＨＤＬ記述，回路Ｂの変更前後におけるＨＤＬ記述を示す図である。
【０１７２】
本具体例においては、上記第１の具体例の回路構成に加えて、回路ブロックＢの後段側に、クロック１によって動作する回路ブロックＤが配置されている。すなわち、システム上で、回路ブロックＡのデータを、周波数の異なるＩＰ（回路ブロックＢ）を介して、再び同周波数の回路ブロックＤに転送する場合を示している。
【０１７３】
本具体例では、上記第１の具体例と同様に、図２４に示すフローにしたがって処理を行なう。そして、図２６（ｂ）に示すタイミングチャートの関係にあるときには、図２６（ｄ）に示すように、回路ブロックＢの出力データ信号Data-outB の出力周期を回路ブロックＢ内のData-enable （回路Ｃから出力される信号）に同期させることで、クロック１によってデータを取り込めるように、回路ブロックＢの変更を行う。これにより、システムがクロック１に同期して動作する。
【０１７４】
本具体例では、性能上、回路ブロックの動作周波数を変更できないのでこれを行わず、かつ、システム上の動作の矛盾を避けるために、回路ブロックＢの他の回路ブロックとのデータインターフェースを擬似的に回路ブロックＡの動作周期（クロック１の周期）によって動作させることにより、システム全体の動作を正常にすることができる。
【０１７５】
なお、本具体例は、後段側の回路ブロックをエッジ検出によって生成されたイネーブル信号で動作させるような，非同期回路全般に適用することができる。
【０１７６】
−第３の具体例−
上記第１，第２の具体例のように、互いに異なる周波数，異なる位相のクロックにより動作する回路ブロック間のデータ転送において、送受信データの同期性を確保するために、各送受信回路の同期信号（クロック，データイネーブル等）に一定の規則を与えることにより、データ有効期間を確保できる。
【０１７７】
しかし、このような規則を与えることは、送受信ブロック間の関係、特に送受信ブロックの周波数の関係に好ましくない制限を加えることもある。
【０１７８】
そこで、本具体例においては、異周波数，異位相のクロックによって動作するブロック間の同期信号には依存せずに、前段のブロックにおける転送データの確定区間を通知する信号を自動生成し、このデータ確定区間を通知する信号を用いて後段のブロックでデータ信号を受信する手法について説明する。
【０１７９】
図２７（ａ），（ｂ），（ｃ）は、それぞれ順に、本具体例における設計対象の回路図，データ出力信号及びデータ確定信号の波形図、及び第１のマージンと第２のマージンの設定方法を示す図である。
【０１８０】
本具体例では、図２７（ａ）に示すように、クロック１に同期して動作する回路ブロックＡからデータ出力信号（Data-outA など）が出力され、このデータ出力信号が、クロック１とは異周波数，異位相のクロック２に同期して動作する回路ブロックＢに転送されるものとする。
【０１８１】
このとき、本具体例では、図２７（ａ）に示すように、データ確定信号を生成するためのインターフェース回路である回路Ｃを回路ブロックＡ，Ｂ間に自動的に挿入する。この回路Ｃは代表例として示す１つのデータ出力信号Data-outA だけでなく、他のデータ出力信号に対しても挿入される。この回路Ｃにおいては、回路ブロックＡからのデータ出力信号Data-outA のデータ遷移領域（期間ｔt ）の前後に第１，第２のマージンｔa ，ｔb を与えたデータ確定信号Data-enable を生成する。そして、回路Ｃにおいて生成されたデータ確定信号Data-enable が回路ブロックＢに転送される。一方、データ出力信号Data-outA は、回路ブロックＡから回路ブロックＢに直接転送される。回路ブロックＢでは、このデータ確定信号Data-enable がアクティブな期間をデータの確定区間であると判断することにより、有効なデータを受け取ることができる。このデータ確定信号Data-enable は、シミュレーション時にタイミングチャートを利用することにより、以下に説明する手順で生成される。
【０１８２】
まず、図２７（ａ）に示すように、回路ブロックＡのタイミングチャートを取り込む。図２７（ａ）の左下の枠内には、回路ブロックＡにおけるクロック信号とデータ信号とが例示されているが、クロック信号は必要でなくデータ信号のみを取り込めばよい。この具体例では、転送対象となるデータ出力信号Data-outA をユーザが選択すると、図２７（ｂ）に示すように、データ出力信号Data-outA のデータ遷移領域（期間ｔt ）と、データ遷移領域に対するマージン（ｔa ，ｔb ）とから、データの取り込みタイミングを制御するためのデータ確定信号Data-enable が自動的に生成され、ＧＵＩ上に表示される。このマージンｔa ，ｔb は、以下のようにして自動的に割り出される。
【０１８３】
一般に、予めライブラリの遅延情報には、セットアップ時間，ホールド時間などや、仮配線情報がデータベースに登録されている。本具体例では、このライブラリやデータベースの情報を利用して、この遅延情報や仮配線情報に基づいて、１つのデータ中の複数のビットの確定区間のズレを検出することにより、データスキューを自動的に検出する。その結果、図２７（ｃ）に示すように、データ遷移領域の期間ｔt （データ遷移領域の開始点及び終了点）と、ホールド時間にほぼ等しい第１のマージンｔa と、セットアップ時間にほぼ等しい第２のマージンｔb とが自動的に割り出される。このとき、データ遷移領域の開始点よりも第１のマージンｔa だけ進んだタイミングと、データ遷移領域の終了点から第２のマージンｔb だけ遅れたタイミングとの間をデータ不確定期間（ｔa ＋ｔt ＋ｔb ）とするのである。つまり、このデータ不確定期間（ｔa ＋ｔt ＋ｔb ）においては、１つデータのすべてのビットのうちいずれかのビットが確定していない可能性があるが、このデータ不確定期間（ｔa ＋ｔt ＋ｔb ）を除いた期間においては、１つのデータのすべてのビットが確定しているとみなすことができる。
【０１８４】
そこで、図２７（ｂ）の下図に示すように、回路ブロックＡのデータ出力信号Data-outA のタイミングチャートを取り込んで、データ出力信号data-outA のデータ遷移領域よりも第１のマージンｔa だけ進んだタイミングで立ち下がり（非有効になり）、データ遷移領域から第２のマージンだけ遅れたタイミングで立ち上がる（有効になる）データ確定信号Data-enable を生成する。このようにして、一意的に定まるデータ確定信号data-enable が得られる。そして、このデータ確定信号Data-enable を回路ブロックＢに入力すると、上述のように、回路ブロックＢにおいてデータ確定区間を正確に判断することが可能になり、データを確実に受け取ることができる。
【０１８５】
なお、このデータ確定信号data-enable を用い、回路ブロックＢ側でデータを正しく受信できるかどうかをシミュレーションして、もし、正しく受信できていないことが判明した場合には、データ確定区間を調整することも可能である。この際のマージンｔa ，ｔb の調整は、すでに他の実施形態において説明したように、ＧＵＩ上でのキーの入力，もしくはマウス等の入力機器を用いたタイミングチャートの変更等により実現される。
【０１８６】
すなわち、本具体例では、多数の回路ブロックを配置して構成される半導体集積回路装置を設計する際に、データ確定信号data-enable の生成のために同期信号（クロックなど）を用いずに、データ遷移領域に着目したデータ確定信号data-enable の生成を行なうことにより、送受信ブロック間の使用クロック周波数の関係などに影響されずにデータ確定区間を示すことが可能になった。これにより、非同期回路インターフェースにおいても、データ非確定区間における無効なデータを取り込まずに、データ確定区間における有効なデータのみを取り込むことが可能となる。よって、効率的なデータ転送を行なわせることができる。さらに、設計者は、複雑なタイミング制御を含んだインターフェース回路の設計付加が低減されることになる。
【０１８７】
−第４の具体例−
本具体例においても、上記第３の具体例と同様に、異周波数，異位相のクロックによって動作するブロック間の同期信号には依存せずに、前段のブロックにおける転送データの確定区間を通知する信号を自動生成し、このデータ確定区間を通知する信号を用いて後段のブロックでデータ信号を受信する手法について説明する。
【０１８８】
本具体例においても、第３の具体例と同様に、図２７（ａ）に示すように、クロック１に同期して動作する回路ブロックＡからデータ出力信号（Data-outＡなど）が出力され、このデータ出力信号が、クロック１とは異周波数，異位相のクロック２に同期して動作する回路ブロックＢに転送されるものとする。
【０１８９】
このとき、本具体例においても、データ確定信号を生成するためのインターフェース回路である回路Ｃを回路ブロックＡ，Ｂ間に自動的に挿入するが、本具体例では、データ出力信号を回路ブロックＡから回路ブロックＢに直接転送するのではなく、回路Ｃの途中のノードから回路Ｂにデータ出力信号を転送する。
【０１９０】
図３８（ａ），（ｂ），（ｃ）は、それぞれ順に、本具体例において形成されたデータ確定信号を生成するためのインターフェース回路、設計対象となる回路図、及び信号生成手順を示すタイミングチャートである。この場合、データ遷移領域の期間ｔt と、第１，第２のマージンｔa ，ｔb とは第３の具体例において説明した方法によって自動的に割り出される。
【０１９１】
そして、図３８（ａ）に示すように、第１のマージンｔa にほぼに等しい遅延を与える遅延回路１（ｔa ）と、第２のマージンｔb にほぼ等しい遅延を与える遅延回路２（ｔb ）とを生成し、遅延回路１（ｔa ）と遅延回路２（ｔb ）とをデータ出力信号Data-outA が伝達される信号線中に直列に介設する。この遅延回路１（ｔa ），遅延回路２（ｔb ）は、一般的にはバッファチェーンによって構成される。すると、図３８（ｃ）に示すように、遅延回路１（ｔa ）のデータ出力信号Data-outA'は、回路ブロックＡからのデータ出力信号Data-outA に対して第１のマージンｔa だけ遅れた信号である。また、遅延回路２（ｔb ）の出力信号Data-outA"は、遅延回路１（ｔa ）からのデータ出力信号Data-outA'に対して第２のマージンｔb だけ遅延し、回路ブロックＡの出力信号Data-outＡに対して、第１，第２のマージンｔa ，ｔb の和（ｔa ＋ｔb ）だけ遅延した信号である。
【０１９２】
そして、図３８（ａ）に示すように、回路ブロックＡのデータ出力信号Data-outA と、遅延回路２（ｔb ）の出力信号Data-outA"とを受けて、データ遷移領域の期間ｔt をも含めた位相の判定を行なう判定信号Ｓを出力する位相判定回路を自動的に生成する。図３８（ｃ）に示すように、この位相判定信号Ｓは、回路ブロックＡのデータ出力信号Data-outA のデータ遷移領域の開始点において立ち上がり，遅延回路２（ｔb ）の出力信号Data-outA"のデータ遷移領域の終了点において立ち下がる波形を有する信号である。さらに、判定信号Ｓとその反転信号Ｒとを受けるＲＳフリップフロップ（ＲＳ−ＦＦ）を自動的に生成すると、ＲＳ−ＦＦから、判定信号Ｓが反転した波形を有するデータ確定信号Data-enable が出力される。そして、このデータ確定信号Data-enable は回路ブロックＢに転送される。一方、遅延回路１（ｔa ）と遅延回路２（ｔb ）との間のノードから、データ出力信号Data-outA'を回路ブロックＢに転送する。
【０１９３】
その結果、図３８（ｂ）に示すように、回路ブロックＢには、回路ブロックＡからのデータ出力信号A に対して第１のマージンｔa だけ遅延したデータ出力信号Data-outA'と、回路Ｃからのデータ確定信号Data-enable とが転送される。そして、データ確定信号Data-enable は、データ出力信号Data-outA'に対して、データ遷移領域（期間ｔt ）の前後に一定のマージンｔa ，ｔb を持った区間をデータ不確定期間とする信号である。つまり、このデータ確定信号data-enable とデータ出力信号Data-outA'とのタイミング関係は、第３の具体例におけるデータ確定信号Data-enable とデータ出力信号Data-outA とのタイミング関係と同じである。したがって、第３の具体例で説明したように、回路ブロックＢでは、データ確定信号Data-enable がアクティブな期間をデータの確定区間であると判断することにより、有効なデータを受け取ることができる。
【０１９４】
すなわち、本具体例によっても、上記第３の具体例と同様の効果を発揮することができる。
【０１９５】
なお、データ確定信号Data-enableを生成するための回路としては、遅延回路１，２は必要であるが、位相判定回路とＲＳ−ＦＦとの組み合わせ以外の構成を採ることもできることは言うまでもない。
【０１９６】
（第６の実施形態）
本実施形態においては、複数のタイミングチャートから回路の推測と生成とを行なう方法に関して説明する。
【０１９７】
図２９は、本実施形態の各具体例に共通の概念を示す回路図である。同図に示すように、回路ブロックＡと回路ブロックＢとがあり、回路ブロックＡと回路ブロックＢとにおけるタイミングチャートが与えられている。このとき、回路ブロックＢ内の信号（１），（２）に対応する信号が回路ブロックＡにはあるが、信号（３）に対応する信号が回路ブロックＡにはないとする。つまり、信号（３）に対する入力がないが、信号（３）が欲しいことはわかっていることが前提である。
【０１９８】
このような場合、一方、ユーザが新規に所望信号を得るための回路Ｃを生成するのでは、回路規模の増大と設計工数の増大を招くおそれがある。
【０１９９】
そこで、本実施形態においては、回路ブロックＢ内の信号を組み合わせるなどの処理によって、回路Ｃを自動的に生成して付加するのである。以下、所望信号を得るための具体例について説明する。
【０２００】
−第１の具体例−
図３０（ａ），（ｂ）は、第１の具体例における所望信号を出力する回路の自動生成方法を示す図である。この例では、組み合わせ回路に焦点を絞って所望信号を出力する回路を自動生成する。
【０２０１】
まず、図３０（ａ）に示すような回路ブロックＡ，Ｂがあり、回路ブロックＢにおける信号（１）〜（４），…，（ｎ−１），（ｎ）のうち信号（ｎ）のみがないものとする。このとき、まず、信号（１）に絞って、２入力の組み合わせ回路として、信号（１）と（２）、信号（１）と（３）、信号（１）と（４）、…という組み合わせによる合成信号を所望信号（ｎ）と比較する。次に、信号（２）と（３）、信号（２）と（４）、…という組み合わせによる合成信号を所望信号（ｎ）と比較する。
【０２０２】
図３１（ａ）〜（ｅ）は、それぞれ順に、信号（１）に対する２入力の組み合わせ、信号（２）に対する２入力の組み合わせ、信号（１），（２）に対する３入力の組み合わせ、信号（１），（３）に対する３入力の組み合わせ、信号（ｎ−１）に対する２入力の組み合わせを行なうための組み合わせ回路の例を示す図である。
【０２０３】
そして、その中で所望信号（ｎ）に一致する信号が得られると、図３０（ｂ）に示すように、これを選択してこの信号を出力する回路Ｃを生成する。図３０（ｂ）に示す例では、信号（１）と（４）との組み合わせにより信号（ｎ）を出力する回路Ｃが得られたことになる。そして、回路Ｃの生成に伴うＩ／Ｆ回路の変更を行う。
【０２０４】
すなわち、回路ブロックＢにおいて必要な信号で回路ブロックＡにある信号（１）〜（４），…（ｎ−１）と、回路ブロックＡにはないが回路ブロックＢでは必要な信号（ｎ）がわかると、自動的にすべての信号の組み合わせによる信号を出力する回路Ｃが生成される。その際、信号の入力数の上限やゲートの段数の上限などをユーザが与えるようにしてもよい。
【０２０５】
そして、この組み合わせ回路の抽出過程において、所望信号（ｎ）にぴったり一致する信号を出力する回路が得られなかった場合でも、これに近い信号を出力する回路を回路Ｃの候補として残しておく。そして、最終的に、所望信号（ｎ）に一致する信号を出力する回路が複数個ある場合には、そのうちの１つを選択する。また、所望信号（ｎ）にぴったり一致する信号が得られなかった場合には、次善の策としてもっとも所望信号（ｎ）に近い信号を生成する回路を挿入回路Ｃとしてユーザが選択する。なお、回路の面積や消費電力などのパラメータを考慮して、最適な回路Ｃを選択することができる。ただし、検索時間が無限になるのを防止するために、組み合わせ数の上限を設定しておくことが好ましい。
【０２０６】
−第２の具体例−
図３２は、第２の具体例における所望信号を出力する回路の生成方法を示す回路図である。ここでは、既存信号の組み合わせでは所望信号を生成する回路が生成できない場合について説明する。
【０２０７】
図３２に示すように、各信号の組み合わせをスキャニングしても所望信号又はそれに近いものが得られなかった場合には、それを補完する新規信号のタイミングチャートの推測及び生成を行なう。言い換えると、組合せ回路だけでない順序回路を挿入する。例えば１つの信号（１）に対してフリップフロップＦＦを挿入して遅延させた上で、信号（２）と組み合わせるなどの処理を、上述の各組み合わせについてスキャニングする。例えば、（１）＋ＦＦ，（２）＋ＦＦについて、上記第１の具体例と同様の手順を繰り返す。そして、所望信号を出力する回路Ｃが得られると、回路Ｃの生成に伴うＩ／Ｆ回路の変更を行う。
【０２０８】
この方法によると、本来は前段の回路ブロックＡの信号から所望信号を得たいが、回路ブロックＡの仕様が回路ブロックＢではわからないために、回路ブロックＡ内の信号を組み合わせて回路Ｃを生成することは困難であるような場合にも、回路ブロックＢの信号を組み合わせるとともに、順序回路の概念を導入することにより、所望信号を自動的に生成することが可能となる。ただし、検索時間が無限になるのを防止するために、順序回路を段数の上限を設定しておくことが好ましい。
【０２０９】
−第３の具体例−
上述の第１，第２の具体例のような組み合わせ回路の生成や、組み合わせ回路と順序回路の生成を行なっても、所望信号が得られない場合でも、同図に示すように、既存の回路ブロックＡ内部のあるノードに、所望信号の生成に利用できる途中ノード波形が存在する場合がある。これは、シミュレーションによって発見される。本具体例では、既存信号の組み合わせでは所望信号を生成する回路が生成できないが、このように既存の回路ブロック内の信号波形を利用することが可能な場合について説明する。
【０２１０】
図３３は、第３の具体例における所望信号を出力する回路の生成方法を示す回路図である。また、図３４は第３の具体例における所望信号を生成する手順を示すフローチャートである。ただし、図３３において、信号（１）〜（４），…，（ｎ−１）は、図３０（ａ），（ｂ）や図３２において図示したように、回路ブロックＡ，Ｂ内に存在している。以下、図３３を参照しながら、図３４のフローに沿って、所望信号を出力する回路の生成方法について説明する。
【０２１１】
まず、ステップＳＴ１８１で、ＩＰ−Ａのシミュレーションを行なって、ＩＰ−Ａ内のノードに、所望信号の生成のために欲しい波形（所望波形）と一致する途中ノード波形が存在しないかどうかを検索する。そして、ステップＳＴ１８２で、この途中ノード波形が所望波形と一致するか否かを判別し、一致すれば（ＹＥＳ）であればステップＳＴ１８３に進んで、一致した波形を有するノードをＩＰ−Ａのトップに引き出し、Outputポートに追加する。つまり、図３３に示すように、その途中ノード波形を有するノードから信号を取り出すための出力端子を回路ブロックＡに付加し、この出力端子からの信号をも加えた組み合わせ回路（又は組み合わせ回路と順序回路）として、所望信号を出力する回路Ｃを生成する。
【０２１２】
一方、ステップＳＴ１８２の判別結果がＮＯの場合には、ステップＳＴ１８５に移行して、所望波形との一致度が高い途中ノード波形を抽出し、ステップＳＴ１８６で、ユーザの希望にしたがって、波形のマニュアル変更か自動変更かを切り換える。自動変更の場合には、ステップＳＴ１８７で、上述の第２，第３の具体例の手順に従って、所望信号を出力する回路Ｃを自動生成する。また、マニュアル変更の場合には、第５の実施形態（図２１〜図２３参照）で説明した方法，つまり複数波形の回路からの推測により回路Ｃを生成する。
【０２１３】
その際、新規のＩ／Ｆ部分である出力端子をＩＰ−Ａに付加すると共に、回路Ｃの生成によるＩ／Ｆ構造の変更をも行う。
【０２１４】
（第７の実施形態）
次に、回路を合成するための論理合成のための条件スクリプト生成に関する第７の実施形態について説明する。
【０２１５】
従来の集積回路装置の設計方法では、回路ブロックＩＰ−Ａと回路ブロックＩＰ−Ｂとに遅延情報があっても、回路ブロックＩＰ−Ｂを論理合成するときには、人手により、回路ブロックＩＰ−Ａの出力遅延値を回路ブロックＩＰ−Ｂの入力遅延として論理合成スクリプトファイルに設定している。しかし、このような処理も上述の各処理の場合と同様に、集積回路装置の設計における工数の増大や、誤設定による設計回路の品質の低下を招くおそれがある。
【０２１６】
そこで、本実施形態では、各回路ブロックＩＰの出力信号や入力信号の波形情報を用いて自動的に論理合成スクリプトを生成する方法について説明する。
【０２１７】
図３５は、本実施形態における設計対象となる集積回路装置の構成を概略的に示す回路図である。ここで、回路ブロックＩＰ−Ａは、遅延シミュレーションが可能な，又は動作時の波形が存在する回路ブロックである。回路ブロックＩＰ−Ｂは、論理合成の対象となるＲＴＬ設計回路ブロックである。回路ブロックＩＰ−Ｃは、入力ピンに関する要求波形が存在するＩＰである。このような条件の下で、回路ブロックＩＰ−Ｂを論理合成する際に必要な論理合成スクリプトを自動生成する。
【０２１８】
図３６（ａ）〜（ｅ）は、本実施形態における論理合成スクリプトを自動生成する手順を示す図である。図３７（ａ），（ｂ）は、遅延値の設定及びクロック周期の設定の記述を含む論理合成スクリプトの一部を示す図である。以下、図３７（ａ），（ｂ）を参照しながら、図３６（ａ）〜（ｅ）に沿って、論理合成スクリプトを生成する手順を説明する。
【０２１９】
まず、図３６（ａ）に示すように、回路ブロックＩＰ−Ｂのクロックの波形と共に回路ブロックＩＰ−Ａの出力信号out-1 ，out-2 の波形を入力する。また、図３６（ｃ）に示すように、回路ブロックＩＰ−Ｂのクロックの波形と共に回路ブロックＩＰ−Ｃの入力信号in-1，in-2，in-3，in-4の波形を入力する。図３６（ｂ）には、回路ブロックＩＰ−Ｂの構造を表すＨＤＬ記述が示されている。
【０２２０】
次に、図３６（ｄ）に示すように、図３６（ａ）〜（ｃ）のデータを用いて論理合成スクリプトを自動生成する。このとき、図３７（ａ）に示すように、回路ブロックＩＰ−Ａの出力信号out-1 を回路ブロックＩＰ−Ｂの入力信号in-1として設定し、回路ブロックＩＰ−Ａの出力信号out-2 を回路ブロックＩＰ−Ｂの入力信号in-2として設定する。そして、回路ブロックＩＰ−ＢのクロックＣＬＫの立ち上がりタイミングと、各入力信号in-1，in-2の立ち上がりタイミングとの遅延値Δｔ１，Δｔ２と、回路ブロックＩＰ−ＢのクロックＣＬＫの周期Ｔとを設定する。これにより、図３７（ｂ）に示すように、論理合成スクリプトの中に遅延値の設定の記述や、クロックＣＬＫの設定の記述が論理合成スクリプト中に挿入される。
【０２２１】
このように、前段の回路ブロックＩＰ−Ａの出力と回路ブロックＩＰ−Ｂのクロックとの間の遅延情報と、後段の回路ブロックＩＰ−Ｃの入力と回路ブロックＩＰ−Ｂのクロックとの間の遅延情報とを利用しながら、回路ブロックＩＰ−Ｂの論理合成スクリプトを生成する。このとき、回路ブロックＩＰ−Ｂの出力は、回路ブロックＩＰ−Ｃに信号を出力するための条件として与えられる。
【０２２２】
すなわち、本実施形態では、回路ブロックＩＰ−Ｃの入力ピンに関する条件が波形として与えられている場合に、その条件を回路ブロックＩＰ−Ｂの論理合成の結果に反映させることで、回路ブロックＩＰ−Ｂの論理合成スクリプトを自動的に生成することができる。そして、論理合成スクリプトを自動的に生成することにより、設計工数の短縮，設計される半導体集積回路装置の品質の向上を図ることができる。
【０２２３】
なお、出力がゲートによって出力されている場合など、適当なロードを自動的に付加することもできる。
【産業上の利用可能性】
【０２２４】
本発明は、例えばＩＰ（Intellectual Property ）のような既存の回路設計用資産である回路ブロックを用いて、大規模な半導体集積回路装置を設計する際に利用することができる。
【図面の簡単な説明】
【０２２５】
【図１】（ａ），（ｂ）は、第１の実施形態の集積回路装置の設計に利用される回路ブロックの信号伝達関係と、各回路ブロックのクロック及び出力値のタイミングチャートとをそれぞれ例示する図である。
【図２】（ａ）は、第１の実施形態の第１の具体例におけるＩ／Ｆ回路の生成，挿入手順を示すフローチャート図、（ｂ）〜（ｄ）は、フロー中の各ステップにおける処理の内容を示す図である。
【図３】（ａ）は、第１の実施形態の第２の具体例におけるＩ／Ｆ回路の生成，挿入手順を示すフローチャート図、（ｂ）〜（ｄ）は、フロー中の各ステップにおける処理の内容を示す図である。
【図４】（ａ）は、第１の実施形態の第３の具体例におけるＩ／Ｆ回路の生成，挿入手順を示すフローチャート図、（ｂ）〜（ｄ）は、フロー中の各ステップにおける処理の内容を示す図である。
【図５】（ａ）は、第１の実施形態の第４の具体例におけるＩ／Ｆ回路の生成，挿入手順を示すフローチャート図、（ｂ）〜（ｄ）は、フロー中の各ステップにおける処理の内容を示す図である。
【図６】（ａ）は、第１の実施形態の第５の具体例におけるＩ／Ｆ回路の生成，挿入手順を示すフローチャート図、（ｂ）〜（ｄ）は、フロー中の各ステップにおける処理の内容を示す図である。
【図７】（ａ）は、第１の実施形態の第６の具体例におけるＩ／Ｆ回路の生成，挿入手順を示すフローチャート図、（ｂ）〜（ｄ）は、フロー中の各ステップにおける処理の内容を示す図である。
【図８】（ａ）は、第１の実施形態の第７の具体例におけるＩ／Ｆ回路の生成，挿入手順を示すフローチャート図、（ｂ）〜（ｄ）は、フロー中の各ステップにおける処理の内容を示す図である。
【図９】（ａ），（ｂ）は、第１の実施形態の変形形態１の集積回路装置の設計に利用される回路ブロックの信号伝達関係と、各回路ブロックのクロック及び各信号のタイミングチャートとをそれぞれ示す図である。
【図１０】（ａ）は、第１の実施形態の変形形態１におけるＩ／Ｆ回路の生成，挿入手順を示すフローチャート図、（ｂ），（ｃ）は、それぞれフロー中の２つのステップにおける処理の内容を示す図である。
【図１１】（ａ），（ｂ）は、第１の実施形態の変形形態２の集積回路装置の設計に利用される回路ブロックの信号伝達関係と、各回路ブロックのクロック及び各信号のタイミングチャートとをそれぞれ示す図である。
【図１２】（ａ）は、第１の実施形態の変形形態２におけるＩ／Ｆ回路の生成，挿入手順を示すフローチャート図、（ｂ），（ｃ）は、それぞれフロー中の２つのステップにおける処理の内容を示す図である。
【図１３】（ａ），（ｂ）は、第２の実施形態の第１の具体例における信号波形の変更方法を示すタイミングチャート及び操作−回路動作関係表である。
【図１４】第２の実施形態の第１の具体例における信号波形の変更方法を示すフローチャートである。
【図１５】（ａ），（ｂ），（ｃ）は、第２の実施形態の第２の具体例における信号波形の変更方法を示すタイミングチャート及びＲＴレベル，ゲートレベルにおける操作−回路動作関係表である。
【図１６】第２の実施形態の第２の具体例における信号波形のＲＴレベル及びゲートレベルにおける変更方法を示すフローチャートである。
【図１７】（ａ）〜（ｄ）は、それぞれ順に、第２の実施形態の第３の具体例における変更の対象となる回路，変更前の各信号の波形，波形変更ウィンドウ中における各信号の波形，変更後の各信号の波形を示す図である。
【図１８】（ａ）〜（ｄ）は、それぞれ順に、第２の実施形態の第４の具体例における変更の対象となる回路，変更前の各信号の波形，波形変更ウィンドウ中における各信号の波形，変更後の各信号の波形を示す図である。
【図１９】第３の実施形態における基本的な処理の流れを示すフローチャート図である。
【図２０】第３の実施形態において編集される回路の波形を示す図である。
【図２１】第４の実施形態における基本的な処理の流れを示すフローチャート図である。
【図２２】（ａ），（ｂ）は、第４の実施形態における信号の生成手順を示す波形図及び基本論理変換表である。
【図２３】（ａ），（ｂ）は、第４の実施形態の処理によって生成された論理回路及びフリップフロップのＲＴＬ記述及び回路図である。
【図２４】第５の実施形態の第１の具体例における基本的な処理の流れを示すフローチャート図である。
【図２５】（ａ）〜（ｄ）は、それぞれ順に、第５の実施形態の第１の具体例における設計対象の回路図，回路変更手順を示すタイミングチャート，立ち上がりエッジ検出用回路ＣのＨＤＬ記述，回路Ｂの変更前後におけるＨＤＬ記述を示す図である。
【図２６】（ａ）〜（ｄ）は、それぞれ順に、第５の実施形態の第２の具体例における設計対象の回路図，回路変更手順を示すタイミングチャート，立ち上がりエッジ検出用回路ＣのＨＤＬ記述，回路Ｂの変更前後におけるＨＤＬ記述を示す図である。
【図２７】（ａ），（ｂ），（ｃ）は、それぞれ順に、第５の実施形態の第３の具体例における設計対象の回路図，データ出力信号及びデータ確定信号の波形図，及び第１，第２のマージンの設定方法を説明する図である。
【図２８】従来の異なる周波数で動作する回路ブロック間におけるデータのやりとりの不具合を示す回路図である。
【図２９】第６の実施形態の各具体例に共通の概念を示す回路図である。
【図３０】（ａ），（ｂ）は、第６の実施形態の第１の具体例における所望信号を出力する回路の自動生成方法を示す図である。
【図３１】（ａ）〜（ｅ）は、それぞれ順に、信号（１）に対する２入力の組み合わせ、信号（２）に対する２入力の組み合わせ、信号（１），（２）に対する３入力の組み合わせ、信号（１），（３）に対する３入力の組み合わせ、信号（ｎ−１）に対する２入力の組み合わせのための回路の例を示す図である。
【図３２】第６の実施形態の第２の具体例における所望信号を出力する回路の生成方法を示す回路図である。
【図３３】第６の実施形態の第３の具体例における所望信号を出力する回路の生成方法を示す回路図である。
【図３４】第６の実施形態の第３の具体例における所望信号を生成する手順を示すフローチャートである。
【図３５】第７の実施形態における設計対象となる集積回路装置の構成を概略的に示す回路図である。
【図３６】（ａ）〜（ｅ）は、第７の実施形態における論理合成スクリプトを自動生成する手順を示す図である。
【図３７】（ａ），（ｂ）は、第７の実施形態におおける遅延値の設定及びクロック周期の設定の記述を含む論理合成スクリプトの一部を示す図である。
【図３８】（ａ），（ｂ）は、それぞれ順に、第５の実施形態の第４の具体例におけるインターフェース回路の内容を示す回路図，信号変更手順を示すタイミングチャートである。
【図１】
2004265435.tif 000003
【図２】
2004265435.tif 000004
【図３】
2004265435.tif 000005
【図４】
2004265435.tif 000006
【図５】
2004265435.tif 000007
【図６】
2004265435.tif 000008
【図７】
2004265435.tif 000009
【図８】
2004265435.tif 000010
【図９】
2004265435.tif 000011
【図１０】
2004265435.tif 000012
【図１１】
2004265435.tif 000013
【図１２】
2004265435.tif 000014
【図１３】
2004265435.tif 000015
【図１４】
2004265435.tif 000016
【図１５】
2004265435.tif 000017
【図１６】
2004265435.tif 000018
【図１７】
2004265435.tif 000019
【図１８】
2004265435.tif 000020
【図１９】
2004265435.tif 000021
【図２０】
2004265435.tif 000022
【図２１】
2004265435.tif 000023
【図２２】
2004265435.tif 000024
【図２３】
2004265435.tif 000025
【図２４】
2004265435.tif 000026
【図２５】
2004265435.tif 000027
【図２６】
2004265435.tif 000028
【図２７】
2004265435.tif 000029
【図２８】
2004265435.tif 000030
【図２９】
2004265435.tif 000031
【図３０】
2004265435.tif 000032
【図３１】
2004265435.tif 000033
【図３２】
2004265435.tif 000034
【図３３】
2004265435.tif 000035
【図３４】
2004265435.tif 000036
【図３５】
2004265435.tif 000037
【図３６】
2004265435.tif 000038
【図３７】
2004265435.tif 000039
【図３８】
2004265435.tif 000040