(57)【要約】【課題】回路設計における回路ブロックの端子間の物理的および論理的な接続チェックを用いて上位階層から順に接続チェックを行う。【解決手段】トップダウン回路設計において、トップレベルの回路ブロックの定義票がユーザにより入力される（Ｓ１）。この定義票には、トップレベルの回路ブロックの端子の属性も含まれる。続いて、ユーザにより、トップレベルの直下の下位階層である第１階層の回路ブロック分割が行われ、分割された回路ブロックの定義票が作成・入力される（Ｓ２）。この定義票にも、第１階層の回路ブロックの端子の属性が含まれる。続いて、トップレベルと第１階層との接続チェックがコンピュータにより行われる（Ｓ３）。この接続チェックでは、トップレベルおよび第１階層の回路ブロックの端子の接続先の有無のチェックに加えて、トップレベルおよび第１階層の回路ブロックの端子の属性の整合性チェックも行われる。【選択図】        図１
2004280279.tif 000002
【特許請求の範囲】
【請求項１】
上位階層から下位階層に向けて回路ブロックを定義して行くことにより回路を設計するトップダウン設計装置において、
上位階層の回路ブロックの少なくとも端子の属性を含む第１ブロック定義と該上位階層の直下の下位階層の回路ブロックの少なくとも端子の属性を含む第２ブロック定義とを入力する入力部と、
前記入力部により入力された前記第１ブロック定義に含まれる端子の属性および前記第２ブロック定義に含まれる端子の属性に基づいて、前記上位階層の回路ブロックの端子および前記下位階層の回路ブロックの端子の接続先の有無のチェックと、前記上位階層の回路ブロックの端子の属性と前記下位階層の回路ブロックの端子の属性との整合性のチェックを行う接続チェック部と、
を備えていることを特徴とするトップダウン設計装置。
【請求項２】
請求項１において、
前記接続チェック部は、前記下位階層の２以上の回路ブロックの定義が前記入力部により入力されている場合には、該２以上の回路ブロック間の端子の接続先の有無および端子の属性の整合性のチェックをさらに行う、
ことを特徴とするトップダウン設計装置。
【請求項３】
請求項１または２において、
前記属性は、端子の入出力の属性、データタイプ、接続先の回路ブロック、および極性を含むことを特徴とするトップダウン設計装置。
【請求項４】
請求項１から３のいずれか１項において、
前記入力部により入力された定義に基づいてハードウェア記述言語による構造記述を生成する生成部をさらに備えている、
ことを特徴とするトップダウン設計装置。
【請求項５】
コンピュータに、
設計される回路における上位階層の回路ブロックの少なくとも端子の属性を含む第１ブロック定義および該上位階層の直下の下位階層の回路ブロックの少なくとも端子の属性を含む第２ブロック定義の入力を受け付け、内部のメモリに記憶する手順と、
前記内部のメモリに記憶された前記第１ブロック定義に含まれる端子の属性および前記第２ブロック定義に含まれる端子の属性に基づいて、前記上位階層の回路ブロックの端子および前記下位階層の回路ブロックの端子の接続先の有無のチェックと、前記上位階層の回路ブロックの端子の属性と前記下位階層の回路ブロックの端子の属性との整合性のチェックを行う手順と、
を実行させるためのトップダウン設計プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は，回路をトップダウンに設計するトップダウン設計装置およびトップダウン設計プログラムに関し、特に、回路に含まれる回路ブロックの端子の属性に基づいて回路間の接続の整合性をチェックするトップダウン設計装置およびトップダウン設計プログラムに関する。
【０００２】
【従来の技術】
従来、レジスタ間の転送関係を示すレジスタ転送レベル（ＲＴＬ：Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）言語を使用して論理回路設計を支援する設計支援装置として、ハードウェア記述言語が示す設計対象の論理回路を正規構造化することで論理回路の面積と遅延時間を見積もり、設計変更の少なくし設計時間を短縮する設計支援装置がある（例えば特許文献１参照）。
【０００３】
また、ＲＴＬ言語が用いられる回路設計装置では、上位階層から下位階層に向けてトップダウン的にブロックおよびブロック間のインターフェースがユーザにより定義されると、これらの定義に基づいて、ＲＴＬ構造記述を自動生成するソフトウェアが存在する。この設計装置では、上位階層と下位階層の間のブロック間の接続チェックおよび同一階層におけるブロック間の接続チェックが行われるものの、その接続チェックは、物理的な接続チェック、すなわち接続先の有無のチェックである。
【０００４】
【特許文献１】
特開平８−２７２８４７号公報
【０００５】
【発明が解決しようとする課題】
しかし、従来の回路設計装置またはソフトウェアでは、ブロックの端子の接続先の有無のみをチェックする物理的な接続チェックしか行われないため、論理的な接続ミス（例えば信号の極性の接続ミス、パルス信号／レベル信号の信号種別の接続ミス等）チェックすることができず、この論理的な接続ミスは、回路設計（言語記述）が完了した後、検証工程に進んでからしか発見できなかった。このため、論理的な接続ミスが発見されると、再び、設計段階にまで戻り、設計しなおす必要があり、作業時間の大幅なロスを招いていた。
【０００６】
したがって、本発明は、物理的および論理的な接続チェックを用いて上位階層から順に接続チェックを行うことを可能とすることを目的とする。また、本発明は、回路設計において、記述ミスの早期発見を目的とする、さらに、本発明は、回路の作成時間の短縮を図ることを目的とする。
【０００７】
【課題を解決するための手段】
前記目的を達成するために，本発明によるトップダウン設計装置は、上位階層から下位階層に向けて回路ブロックを定義して行くことにより回路を設計するトップダウン設計装置において、上位階層の回路ブロックの少なくとも端子の属性を含む第１ブロック定義と該上位階層の直下の下位階層の回路ブロックの少なくとも端子の属性を含む第２ブロック定義とを入力する入力部と、前記入力部により入力された前記第１ブロック定義に含まれる端子の属性および前記第２ブロック定義に含まれる端子の属性に基づいて、前記上位階層の回路ブロックの端子および前記下位階層の回路ブロックの端子の接続先の有無のチェックと、前記上位階層の回路ブロックの端子の属性と前記下位階層の回路ブロックの端子の属性との整合性のチェックを行う接続チェック部と、を備えていることを特徴とする。
【０００８】
また、本発明によるトップダウン設計プログラムは、コンピュータに、設計される回路における上位階層の回路ブロックの少なくとも端子の属性を含む第１ブロック定義および該上位階層の直下の下位階層の回路ブロックの少なくとも端子の属性を含む第２ブロック定義の入力を受け付け、内部のメモリに記憶する手順と、前記内部のメモリに記憶された前記第１ブロック定義に含まれる端子の属性および前記第２ブロック定義に含まれる端子の属性に基づいて、前記上位階層の回路ブロックの端子および前記下位階層の回路ブロックの端子の接続先の有無のチェックと、前記上位階層の回路ブロックの端子の属性と前記下位階層の回路ブロックの端子の属性との整合性のチェックを行う手順と、を実行させるためのプログラムである。
【０００９】
本発明によると、上位階層の回路ブロックの端子および下位階層の回路ブロックの端子の接続先の有無のチェック（物理レベルのチェック）だけでなく、上位階層の回路ブロックの端子の属性と下位階層の回路ブロックの端子の属性との整合性のチェック（論理レベルのチェック）も行われる。したがって、回路設計において、記述ミスを早期に発見でき、回路の作成時間の短縮を図ることができる。
【００１０】
【発明の実施の形態】
本発明によるトップ設計装置は、例えばソフトウェアおよび該ソフトウェアを実行するＣＰＵ、ＭＰＵ等のマイクロプロセッサにより実現される。これらソフトウェアおよびマイクロプロセッサは、コンピュータやワークステーションとして構成されてもよいし、ＣＡＤ（Ｃｏｍｐｕｔｅｒ  Ａｉｄｅｄ  Ｄｅｓｉｇｎ）システムの一部として構成されてもよい。
【００１１】
以下では、まず、本発明の一実施の形態によるトップダウン設計装置を利用した回路のトップダウン設計の概要について説明し、その後、具体的な回路例を用いてトップダウン設計の詳細について説明することとする。
【００１２】
図１は、本発明の一実施の形態によるトップダウン設計装置における回路（例えば論理回路）のトップダウン設計の全体処理フローを示すフローチャートである。図３は、トップダウン設計により設計される回路の概略図である。
【００１３】
まず、回路設計者（以下「ユーザ」という。）は、トップダウン設計装置を使用して、トップレベルの定義票を作成する（Ｓ１）。この定義票には、後に具体例に基づいて詳述するように、ジェネリック定義、ピン定義、構造定義等が含まれる。例えば、図３では、ピン定義として、トップレベル（レベル０）のブロック１の入力端子１１〜１３および出力端子１４〜１６の定義が作成され、構造定義として、レベル１のブロック２の定義が作成される。なお、図３では、端子１１〜１３等を方形のブロックとして表現しているが、これは端子を分かりやすくするために記載したものであって、後述する図４の回路図に示すように、実際の回路図では、端子が方形のブロックとして表現されるものではない。
【００１４】
続いて、ユーザは、トップレベル（レベル０）の直下の下位階層である第１階層（レベル１）のブロック分割および定義票を作成する（Ｓ２）。図３では、レベル１のブロック分割により、レベル２のブロック３および４が作成され、これらブロックの構造定義が作成される。また、定義票のピン定義として、ブロック２の入力端子２１〜２３および出力端子２４〜２６の定義が作成される。
【００１５】
これらの作成後、接続チェックの開始の指示がユーザにより入力されることにより、トップダウン設計装置は、レベル０とレベル１との接続チェック（後に詳述）を実行する（Ｓ３）。この接続チェックでは、単に端子（ピン）間が接続されているかどうかの物理的な接続チェックだけでなく、本発明による論理的な接続チェックも行われる。論理的な接続チェックでは、端子間の属性（例えば、接続先、ビット幅、信号の極性、入出力、信号のタイプ（データ信号、クロック信号、レベル信号、パルス信号等））が一致するかどうかがチェックされる。
【００１６】
トップダウン設計装置は、接続チェックの結果をディスプレイ等の表示装置に表示し、ユーザに知らせる。
【００１７】
接続チェック結果がＮＧの場合（ステップＳ４でＮ）、すなわち、物理的な接続チェックおよび論理的な接続チェックの少なくとも一方がＮＧの場合には、ユーザは、再度ステップＳ１またはＳ２に戻って、定義票等の修正を行う。一方、接続チェック結果がＯＫの場合（ステップＳ４でＹ）、すなわち、物理的な接続チェックおよび論理的な接続チェックの双方がＯＫの場合には、ユーザは、第１階層の直下の下位階層である第２階層（レベル２）のブロック分割および定義票を作成する（Ｓ５）。
【００１８】
図３では、ブロック３および４が論理回路または順序回路により構成されているプリミティブなブロック、すなわち分割できないブロックか、予め容易されているブロックであると仮定する。この場合には、第２階層のブロック分割は行われず、定義票の作成では、ブロック３および４の端子３１〜３５および４１〜４５のピン定義が作成され、構造定義は作成されない。
【００１９】
定義票の作成後、接続チェックの開始の指示がユーザにより入力されることにより、トップダウン設計装置は、上記ステップＳ３と同様にして、レベル１とレベル２との接続チェックを実行する（Ｓ６）。この接続チェックでは、レベル１と２との端子間の接続チェックに加えて、同じレベル２に２つのブロック３および４が存在するので、ブロック３と４との間の接続チェックも行われる。
【００２０】
この接続チェック結果がＮＧの場合には（Ｓ７でＮ）、ユーザは、上記同様に、ステップＳ５またはＳ６に戻って、定義票等の修正を行う。一方、接続チェック結果がＯＫの場合において（Ｓ７でＹ），次の下位階層のブロック分割および定義票の作成が可能な場合、すなわち下位階層がプリミティブな回路にまで至っていない場合には、再びブロック分割および定義票の作成ならびに接続チェックが繰り返されて行くこととなる。
【００２１】
このような処理が繰り返されて、最終的な回路定義が行われる。このように本実施の形態によるトップダウン設計装置では、隣接する２つの階層間での接続チェックを逐次行うと共に、この接続チェックでは、物理的な接続チェックに加えて論理的な接続チェックが行われる。したがって、回路の設計ミスを早期の段階で発見することができると共に、端子間の物理レベル（接続先の有無）のチェックだけでなく、論理レベル（端子の属性）のチェックも行われるので、より正確なチェックを行うことができる。その結果、検証工程に進む前に設計ミスを発見することができ、回路設計の効率を大幅に向上させることができる。
【００２２】
以下では、より具体的な回路例に基づいて、接続チェックの詳細な処理について説明する。
【００２３】
図２は、図１のステップＳ３、Ｓ６等の接続チェックの詳細な処理の流れを示すフローチャートである。図４（Ａ）および（Ｂ）は、具体的な回路ブロック図（完成図）である。図５は、図４（Ａ）の回路図のトップレベル（ＴＯＰ）および第１階層（ＣＯＲＥ）を定義した段階の回路図に対応し、上述した図１のステップＳ１およびＳ２の処理が終了した段階の回路図に対応する。
【００２４】
ユーザは、図１のステップＳ１およびＳ２において、図５のＴＯＰおよびＣＯＲＥの定義票の作成等を行う。これにより、図６のＴＯＰ定義票および図７のＣＯＲＥ定義票が作成される。なお、これら定義票は、テキストエディタによりテキスト入力されてもよいし、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を利用して入力されてもよい。
【００２５】
ＴＯＰ定義票には、図６（Ａ）のピン定義および図６（Ｂ）の構造定義が含まれる。もちろん、これ以外にジェネリック定義等が含まれてもよい。ここでは、本発明に関連するピン定義および構造定義を特に図示している。
【００２６】
ピン定義では、ＴＯＰブロックに入出力される各ピン（端子）の「ポート名」、「ｉ／ｏ」、「データタイプ」、「接続ブロック」、「接続ポート」、「極性」等が定義され、必要に応じてユーザのコメントが「コメント」欄に記載される。
【００２７】
「ポート名」は、ユーザがその端子に付した名称である。「ｉ／ｏ」は、そのピンが信号の入力端子か出力端子かを示し、「ｉｎ」は入力端子、「ｏｕｔ」は出力端子、「ｉｎｏｕｔ」は入出力端子であることをそれぞれ示している。
【００２８】
「データタイプ」は、そのピンに入力／出力／入出力される信号（データ）のタイプであり、“ｓｔｄ＿ｌｏｇｉｃ”は１ビットのディジタル信号を示す。これ以外に、“ｓｔｄ＿ｌｏｇｉｃ”の信号線を複数束ねたピンのデータタイプである“ｓｔｄ＿ｌｏｇｉｃ＿ｖｅｃｔｏｒ”がある。データタイプ“ｓｔｄ＿ｌｏｇｉｃ＿ｖｅｃｔｏｒ”が使用される場合には、図示しないビット幅（例えば４ビットを表す“３  ｄｏｗｎｔｏ  ０”）がピン定義内にさらに規定される。
【００２９】
「接続ブロック」は、該ピンの接続先のブロックを示す。接続先が外部であり、特定のブロックでない場合には、“ＥＸＴ”とされる。これ以外に、接続ブロックには、固定値の信号が入力／出力されることを示す“ＣｏＮＳＴＡＮＴ”、接続先のない出力ポート（すなわち空きポート）であることを示す“ｏＰＥＮ”を使用することができる。
【００３０】
「接続ポート」は、該ピンの接続先のポートのポート名を示し、接続先が外部“ＥＸＴ”である場合には、接続ポートは規定されない（例えば“ｎｕｌｌ”等の符号が置かれ、図では「−」で示している）。「極性」は信号の極性であり、例えばハイアクティブの場合には“Ｐ”、ローアクティブの場合には“Ｎ”となる。
【００３１】
なお、“ｐｉｎ＿ｄｅｆｉｎｅ＿ｓｔａｒｔ＿０”および“ｐｉｎ＿ｄｅｆｉｎｅ＿ｅｎｄ＿０”は、ピン定義の開始および終了をそれぞれ宣言する宣言文である。
【００３２】
構造定義では、ＴＯＰブロック内に定義されるブロックＣＯＲＥの名称である「ブロック名」、使用する定義番号を示す「ｄｅｆ」、「インスタンス名」、「ジェネリックマップ」等が定義され、必要に応じてユーザのコメントが「コメント」欄に記載される。
【００３３】
定義番号「ｄｅｆ」は、ブロックＣＯＲＥのピン定義が後に規定された場合に、そのピン定義の番号を意味する。この番号は、宣言文“ｐｉｎ＿ｄｅｆｉｎｅ＿ｓｔａｒｔ＿ｘ”および“ｐｉｎ＿ｄｅｆｉｎｅ＿ｅｎｄ＿ｘ”の“ｘ”に対応する。後述するように、ピン定義には、複数のピン定義（例えば、マスタ定義と個別のインスタンスごとの定義との２種類）が設けることがあり、その場合に、どのピン定義を用いて接続チェックを行うかが定義番号「ｄｅｆ」によって指定される。
【００３４】
ブロック名が該ブロックの総称（共通名）であるのに対し、「インスタンス名」は、ブロック名の回路における個別の名称である。例えば、同じブロック（例えばＤ−ＦＦ等）が１つの回路内に複数使用される場合もあり、この場合には、このブロックの共通名がブロック名に対応し、回路に配置される複数の該ブロックの個々の名称がインスタンス名に対応する。
【００３５】
なお、“ｓｔｒｕｃｔｕｒｅ＿ｄｅｆｉｎｅ＿ｓｔａｒｔ”および“ｓｔｒｕｃｔｕｒｅ＿ｄｅｆｉｎｅ＿ｅｎｄ”は、構造定義の開始および終了をそれぞれ宣言する宣言文である。
【００３６】
同様にして、ユーザにより、ブロックＣＯＲＥの定義票が、図７（Ａ）および（Ｂ）に示すように定義される。まず、図７（Ａ）のピン定義が規定される。ユーザは、このピン定義を作成した段階で、図１のステップＳ３の接続チェックを行うことができる。すなわち、接続チェックは、主としてピン定義に基づいて行われるので、ＣＯＲＥブロックの構造定義（ブロック分割）を行う前に、接続チェックを行うことができる。もちろん、ＣＯＲＥブロックの構造定義の作成後に、接続チェックを行うことができるのはいうまでもない。
【００３７】
図２を参照して、トップダウン設計装置によって、ＴＯＰブロックに下位階層が存在するかどうかが判断される（Ｓ１１）。ここでは、下位階層にＣＯＲＥブロックが存在するので（Ｓ１１でＹ），ＴＯＰ定義票およびＣＯＲＥ定義票のフォーマットがチェックされる（Ｓ１２）。このフォーマットチェックでは、定義票が所定のフォーマットにより記述されているかどうかがチェックされる。チェック結果がＮＧの場合には（Ｓ１３でＮ）、ＮＧが返され、ユーザに通知される（Ｓ２７）一方、チェック結果がＯＫの場合には（Ｓ１３でＹ），上位階層および下位階層の双方のインスタンス数が一致するかどうかがチェックされる（Ｓ１４）。インスタンス数が一致する場合には、ステップＳ１６に処理が進み、一致しない場合には、ＮＧが返され、ユーザに通知される（Ｓ２７）。
【００３８】
ここでは、上位階層のＴＯＰブロックにおいて、下位階層のＣＯＲＥブロックが１つ定義されている。すなわち、ＴＯＰ定義票の構造定義において、ＣＯＲＥブロックのブロック名およびインスタンス名がともに１つだけ定義されている。また、該構造定義の「ｄｅｆ」が０であり、ＣＯＲＥ定義票における宣言文“ｐｉｎ＿ｄｅｆｉｎｅ＿ｓｔａｒｔ＿０”および“ｐｉｎ＿ｄｅｆｉｎｅ＿ｅｎｄ＿０”に対応するピン定義が、１つのブロックについてのピン定義を規定している。したがって、上位階層および下位階層のインスタンス数は１つとなり、一致するので、チェック結果はＯＫとなり、ステップＳ１６の処理が行われる。
【００３９】
ステップＳ１６において、上位階層および下位階層のピン定義がチェックされる。まず、上位階層のブロックの入力ポートと下位階層の入力ポートとの接続がチェックされる。入力ポートかどうかは、定義の「ｉ／ｏ」欄の記述が「ｉｎ」であることにより判断される。このチェックでは、上位階層の入力ポートの属性と一致する属性を有する、下位階層の入力ポートが存在するかどうかが判断される。この判断では、「ポート名」および「コメント」を除く属性、すなわち「ｉ／ｏ」、「データタイプ」、「接続ブロック」、「接続ポート」、および「極性」が一致するかどうかが判断される。上位階層または下位階層の一方において一致するピンがない場合や、双方で一致するピンがない場合にはＮＧとなり、すべてのピン（オープンピンは除く。）が一致する場合にはＯＫとなる。
【００４０】
上位階層および下位階層の出力ポート（「ｉ／ｏ」＝ｏｕｔ）の接続チェックならびに上位階層および下位階層の入出力ポート（「ｉ／ｏ」＝ｉｎｏｕｔ）の接続チェックも同様にして行われる。
【００４１】
図６（Ａ）に示すＴＯＰブロックのピン定義および図７（Ａ）に示すＣＯＲＥブロックのピン定義によると、これらの接続チェック結果はＯＫとなる。
【００４２】
これらすべての接続チェックの少なくとも１つがＮＧの場合には（Ｓ１７でＮ）、ＮＧが返される一方、すべてがＯＫの場合には（Ｓ１７でＹ）、同一階層のブロック間のピン定義のチェックが行われる（Ｓ１８）。ＴＯＰブロックの下位階層には、ＣＯＲＥブロックのみが存在し、同じ階層に他のブロックが存在しないので、この処理はスキップされ、ステップＳ２０に処理が進む。このステップＳ１８の処理については、後述することとする。
【００４３】
続いて、ステップＳ２０において、チェック対象となったブロックのＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）構造記述が既に存在する場合、すなわち、過去に記述されている場合には、該記述との差分（すなわち追加、削除、修正箇所）がチェックされ、差分が存在する場合には、その差分がディスプレイ等に表示され、ユーザに示される。ユーザは、過去に記述した当該回路の記述に対する変更箇所を把握しているはずなので、自らが把握している変更箇所と、ディスプレイ等に表示された差分とを比較することにより、自らの意図した変更が回路に施されているかどうかを確認することができる。これにより、回路に対する変更ミスがないかどうかを確認でき、設計ミスを減少させることができる。
【００４４】
続いて、ＲＴＬ構造記述が作成される（Ｓ２１）。このＲＴＬ構造記述の作成は当業者には周知の技術で行われる。
【００４５】
なお、ステップＳ１１の判断において、下位階層がない場合（Ｓ１１でＮ）の処理については、後の回路例で説明する。
【００４６】
このようにして、図１のステップＳ４の接続チェックが行われた後、ユーザは、第２階層のブロック分割および定義票を作成する（図１のＳ５）。この作成により、図４の回路図における４つのＬ１＿ｂａｓｅブロック（Ｌ１ＢＡＳＥ＿０〜Ｌ１ＢＡＳＥ＿３）、２つのＬ１＿ｍｕｘブロック（Ｌ１ＭＵＸ＿０およびＬ１ＭＵＸ＿１）、および１つのＬ１＿ｃｐｕ（Ｌ１ＣＰＵ）ブロックの定義票が作成される。なお、これらのブロックのうち、括弧書きの名称がインスタンス名に対応し、括弧書きの前にある名称がブロック名に対応する。これらブロックの定義票は、図８（Ａ）〜（Ｃ）、図９（Ａ）および（Ｂ）、ならびに図１０に示される。
【００４７】
ブロックＬ１＿ｂａｓｅの定義票では、図８（Ａ）および（Ｂ）に示すように、２つのピン定義が規定される。図８（Ａ）のピン定義がブロックＬ１＿ｂａｓｅのマスタ定義（一般的な定義）であり、図８（Ｂ）のピン定義が、Ｌ１＿ｂａｓｅブロックの４つのインスタンスＬ１ＢＡＳＥ＿０〜Ｌ１ＢＡＳＥ＿３の定義である。後者のピン定義には、４つのインスタンスを指定するパラメータとしてｎが使用されており、ｎ＝０はインスタンスＬ１ＢＡＳＥ＿０、ｎ＝１はインスタンスＬ１ＢＡＳＥ＿１、ｎ＝２はインスタンスＬ１ＢＡＳＥ＿２、ｎ＝３はインスタンスＬ１ＢＡＳＥ＿３に対応する。
【００４８】
ブロックＬ１＿ｂａｓｅは、図４（Ｂ）に示すように、さらに下位階層のブロックを有するので、図８（Ｃ）に示す構造定義が規定される。
【００４９】
ブロックＬ１＿ｍｕｘの定義票も同様に、図９（Ａ）に示すマスタ定義および同図（Ｂ）に示すインスタンス定義が規定される。インスタンス定義では、パラメータｎが２つのインスタンスを指定するために使用される。なお、ブロックＬ１＿ｍｕｘは、プリミティブなブロックであり、下位階層のブロックを有しないので、構造定義を有しない。
【００５０】
ブロックＬ１＿ｃｐｕの定義票では、該ブロックが１つだけであるので、ピン定義が１つだけ設けられる。また、該ブロックは、プリミティブなブロックであるので、構造定義は設けられない。
【００５１】
これらの定義票が作成された後、図１のステップＳ６において、ＣＯＲＥブロックとその下位階層のＬ１＿ｂａｓｅブロック等との接続チェックが行われる。図２を参照して、ステップＳ１１ではＹと判断され、ステップＳ１２およびＳ１３の処理を経て、ステップＳ１４の処理が行われる。
【００５２】
このステップＳ１４において、上位階層のＣＯＲＥブロックの構造定義（図７（Ｂ）参照）のインスタンス数（＝７）と、下位階層のＬ１＿ｂａｓｅブロックのインスタンス数（すなわちパラメータｎの取る値の個数（＝４））、Ｌ１＿ｍｕｘブロックのインスタンス数（すなわちパラメータｎの取る値の個数（＝２））、およびＬ１＿ｃｐｕブロックのインスタンス数の合計値とが比較される。双方とも７で等しいので、処理はステップＳ１６に進む。
【００５３】
ステップＳ１６において、上位階層ＣＯＲＥブロックのピン定義と下位階層Ｌ１＿ｂａｓｅブロック（Ｌ１ＢＡＳＥ＿０〜Ｌ１ＢＡＳＥ＿３）、Ｌ１＿ｍｕｘブロック（Ｌ１ＭＵＸ＿０およびＬ１ＭＵＸ＿２）、およびＬ１＿ｃｐｕブロック（Ｌ１ＣＰＵ）のピン定義とが比較される。ＣＯＲＥブロックの構造定義において、Ｌ１＿ｂａｓｅブロックについては「ｄｅｆ」の値が１であるので、Ｌ１＿ｂａｓｅブロックの２つのピン定義のうち宣言文“ｐｉｎ＿ｄｅｆｉｎｅ＿ｓｔａｒｔ＿１”（“ｐｉｎ＿ｄｅｆｉｎｅ＿ｅｎｄ＿１”）の定義票が参照され、該定義票が比較の対象となる。同様にして、Ｌ１＿ｍｕｘブロックについては、ｄｅｆ＝１の定義票が参照される。一方、Ｌ１＿ｃｐｕブロックについては、ｄｅｆ＝０の定義票が参照される。これらの定義票に基づいて、前述したＴＯＰブロックとＣＯＲＥブロックとの接続チェックと同様にして、接続チェックが行われる。
【００５４】
続いて、同一階層のブロック間のピン定義のチェックが行われる（Ｓ１８）。ブロックＣＯＲＥ内には、同一階層に、ブロックＬ１ＢＡＳＥ＿０〜Ｌ１ＢＡＳＥ＿３、ブロックＬ１ＭＵＸ＿０およびＬ１ＭＵＸ＿１、ならびにブロックＬ１ＣＰＵが存在するので、これらブロック間のピン定義のチェックが行われる。
【００５５】
同一階層のブロック間のチェックについても、上位階層と下位階層との間のピン定義のチェックと同様に、ポート名およびコメントを除く属性が一致するかどうかがチェックされる。具体的には、（１）接続先の衝突はないか（すなわち複数のポートから１つのポートに接続されることはないか）、（２）接続先と接続元のピン定義（データタイプ、極性、種類）は同じであるか、（３）どこにも接続されない入力ポートはないか、がチェックされる。なお、同一階層間では、一方のブロックの出力端子は、他方のブロックの入力端子になっているので、「ｉ／ｏ」がｏｕｔ（またはｉｎｏｕｔ）の端子とｉｎ（またはｉｎｏｕｔ）の端子との比較とが行われる。
【００５６】
すべてのチェックがＯＫの場合にＯＫと判断され、いずれか１つでもＮＧの場合にはＮＧと判断される。チェック結果がＯＫの場合には、ステップＳ２０およびＳ２１の処理が行われる。
【００５７】
続いて、図１のステップＳ７以降の処理が行われる。ここでは、図４（Ｂ）に示すように、Ｌ１＿ｂａｓｅブロックがさらに下位階層のＬ２＿ｓｙｎｃ（Ｌ２ＳＹＮＣ）ブロックおよびＬ２＿ａｌｍ（Ｌ２ＡＬＭ）ブロックを有するので、上位階層Ｌ１＿ｂａｓｅブロックと下位階層Ｌ２＿ｓｙｎｃブロックおよびＬ２＿ａｌｍブロックとの接続チェックが行われる。なお、Ｌ２＿ｓｙｎｃブロックおよびＬ２＿ａｌｍブロックの定義票は、図１１および図１２にそれぞれ示される。
【００５８】
この接続チェック後、下位階層を有するブロックはもう存在しないので、図２におけるステップＳ２２以降の処理が実行される。すなわち、ステップＳ１２と同様に、定義票のフォーマットがチェックされ（Ｓ２２）、チェック結果がＯＫの場合には（Ｓ２３でＹ）、ＲＴＬ構造記述用のエンティティが作成される（Ｓ２４）。続いて、ステップＳ２０と同様に、既に存在するＲＴＬが存在する場合には、該存在するＲＴＬ（旧版ＲＴＬ）と新たなＲＬＴとの差分がチェックされ、差分がディスプレイ等に表示され、ユーザに示される（Ｓ２５）。続いて、旧版ＲＴＬが存在する場合には、旧版ＲＴＬのエンティティの部分が新たなエンティティに置換される（Ｓ２６）。
【００５９】
さらに、本実施の形態によるトップダウン設計装置は、出力されたＲＴＬ（ＨＤＬ）記述に基づいて、シミュレーション（ソフトシミュレーション）を行うことができ、このシミュレーションにおいては、回路ブロックのダミー回路を用いてシミュレーションを行い、回路の検証を行うこともできる。
【００６０】
接続チェックがＯＫの場合に、ＲＴＬ（ＨＤＬ）による構造記述が出力されるが、この場合に、プリミティブのブロックとして予め定義されているブロックを除き、それ以外の回路ブロックは、信号の出入りだけが定義された、中身のない空のブロックとして出力される。この状態で、シミュレーション（ソフトシミュレーション）を行うと、従来では、空ブロックの端子から出力される信号の値は不定（すなわち０でも１でもない値）となり、シミュレーションによる検証を行うことができなかった。しかし、本実施の形態では、空ブロックがダミー回路として扱われる。すなわち、ダミーブロックの出力信号が０または１のいずれかの固定値になるように、シミュレーションソフトウェアにおいて設定される。０、１のどちらの値を出力するかは、接続チェックに利用する極性のＰまたはＮにより決定される。例えばＰならば１、Ｎならば０である。
【００６１】
これにより、シミュレーションが可能となり、全ブロックの設計完了を待たずに、先に完成したブロックから検証を始めることができる。その結果、検証工程を短縮することができる。
【００６２】
（付記１）  上位階層から下位階層に向けて回路ブロックを定義して行くことにより回路を設計するトップダウン設計装置において、
上位階層の回路ブロックの少なくとも端子の属性を含む第１ブロック定義と該上位階層の直下の下位階層の回路ブロックの少なくとも端子の属性を含む第２ブロック定義とを入力する入力部と、
前記入力部により入力された前記第１ブロック定義に含まれる端子の属性および前記第２ブロック定義に含まれる端子の属性に基づいて、前記上位階層の回路ブロックの端子および前記下位階層の回路ブロックの端子の接続先の有無のチェックと、前記上位階層の回路ブロックの端子の属性と前記下位階層の回路ブロックの端子の属性との整合性のチェックを行う接続チェック部と、
を備えていることを特徴とするトップダウン設計装置。
【００６３】
（付記２）  付記１において、
前記接続チェック部は、前記下位階層の２以上の回路ブロックの定義が前記入力部により入力されている場合には、該２以上の回路ブロック間の端子の接続先の有無および端子の属性の整合性のチェックをさらに行う、
ことを特徴とするトップダウン設計装置。
【００６４】
（付記３）  付記１または２において、
前記属性は、端子の入出力の属性、データタイプ、接続先の回路ブロック、および極性を含むことを特徴とするトップダウン設計装置。
【００６５】
（付記４）  付記１から３のいずれか１つにおいて、
前記入力部により入力された定義に基づいてハードウェア記述言語による構造記述を生成する生成部をさらに備えている、
ことを特徴とするトップダウン設計装置。
【００６６】
（付記５）  付記４において、
前記ハードウェア記述言語が、レジスタ間の転送関係を示すレジスタ転送レベル言語である、ことを特徴とするトップダウン設計装置。
【００６７】
（付記６）  付記４または５において、
前記生成部により生成された構造記述に基づいて回路のシミュレーションを行うシミュレーション部をさらに備え、
前記シミュレーション部は、前記回路の中に動作が規定されていない回路ブロックが存在する場合には、該動作が規定されていない回路ブロックの出力端子の出力信号を、該出力端子の属性に基づいて決定し、シミュレーションを行う、
ことを特徴とするトップダウン設計装置。
【００６８】
（付記７）  付記１から６のいずれか１つにおいて、
前記下位階層ブロック定義は、該下位階層に同一の回路ブロックが複数定義される場合には、該同一の複数の回路ブロックのそれぞれ個別の端子の属性を含み、
前記チェック部は、前記それぞれ個別の端子の属性に基づいてチェックを行う、
ことを特徴とするトップダウン設計装置。
【００６９】
（付記８）  付記１から７のいずれか１つにおいて、
前記上位階層ブロック定義および前記下位階層ブロック定義が変更される場合に、変更前の上位階層ブロック定義および下位階層ブロック定義を記憶する記憶手段と、
前記記憶手段に記憶された前記変更前の上位階層ブロック定義および下位階層ブロック定義と、変更後の上位階層ブロック定義および下位階層ブロック定義との間の相違点を出力する出力部と、
をさらに備えていることを特徴とするトップダウン設計装置。
【００７０】
（付記９）  コンピュータに、
設計される回路における上位階層の回路ブロックの少なくとも端子の属性を含む第１ブロック定義および該上位階層の直下の下位階層の回路ブロックの少なくとも端子の属性を含む第２ブロック定義の入力を受け付け、内部のメモリに記憶する手順と、
前記内部のメモリに記憶された前記第１ブロック定義に含まれる端子の属性および前記第２ブロック定義に含まれる端子の属性に基づいて、前記上位階層の回路ブロックの端子および前記下位階層の回路ブロックの端子の接続先の有無のチェックと、前記上位階層の回路ブロックの端子の属性と前記下位階層の回路ブロックの端子の属性との整合性のチェックを行う手順と、
を実行させるためのトップダウン設計プログラム。
【００７１】
【発明の効果】
本発明によると，回路ブロックの端子間の物理的および論理的な接続チェックを用いて上位階層から順に接続チェックを行うことができる。また、本発明によると、回路設計において、記述ミスの早期発見が可能となり、回路の作成時間の短縮を図ることができる。
【図面の簡単な説明】
【図１】本発明の一実施の形態によるトップダウン設計装置における回路のトップダウン設計の全体処理フローを示すフローチャートである。
【図２】図１の接続チェックの詳細な処理の流れを示すフローチャートである。
【図３】トップダウン設計により設計される回路の概略図である。
【図４】（Ａ）および（Ｂ）は、具体的な回路ブロック図（完成図）である。
【図５】図４（Ａ）の回路図のトップレベルおよび第１階層を定義した段階の回路図である。
【図６】回路ブロックの定義票を示す。
【図７】回路ブロックの定義票を示す。
【図８】回路ブロックの定義票を示す。
【図９】回路ブロックの定義票を示す。
【図１０】回路ブロックの定義票を示す。
【図１１】回路ブロックの定義票を示す。
【図１２】回路ブロックの定義票を示す。
【符号の説明】
１，２，３，４  回路ブロック
１１〜１６，２１〜２６，３１〜３５，４１〜４５  端子（ピン）
【図１】
2004280279.tif 000003
【図２】
2004280279.tif 000004
【図３】
2004280279.tif 000005
【図４】
2004280279.tif 000006
【図５】
2004280279.tif 000007
【図６】
2004280279.tif 000008
【図７】
2004280279.tif 000009
【図８】
2004280279.tif 000010
【図９】
2004280279.tif 000011
【図１０】
2004280279.tif 000012
【図１１】
2004280279.tif 000013
【図１２】
2004280279.tif 000014