(57)【特許請求の範囲】
【請求項１】
回路を設計するための設計装置において、
回路設計のためのハードウェアの一連の処理の流れがビヘイビアレベルで記述された複数のコマンドを、それぞれ制御に関する動作が記述された制御系ビヘイビアと、データ処理に関する動作が記述されたデータ系ビヘイビアとに分離するコマンド分離部と、
各前記コマンドの前記データ系ビヘイビアを１又は複数のビヘイビアに統合する統合部
と、
各前記コマンドの前記制御系ビヘイビアと、各前記コマンドの前記データ系ビヘイビア
の１又は複数を統合してなる前記ビヘイビアとをそれぞれ高位合成処理する高位合成処理部と、
を備え、
前記コマンド分離部は、
ハードウェア記述言語を用いて記述された動作処理のうち前記コマンドが実行する処理内容の１構文を示す処理ノード及びハードウェア記述言語を用いて記述された動作処理のうち前記コマンドが実行する状態遷移処理の条件文を示す遷移条件ノードをそれぞれ字句分割した処理ノードトークン及び遷移条件ノードトークンに基づいて、当該コマンドを前記制御系ビヘイビアと前記データ系ビヘイビアとに分離する
ことを特徴とする設計装置。
【請求項２】
前記コマンド分離部は、
予め設定されたメッセージの属性判定仕様に基づいて各前記コマンドを前記制御系ビヘイビアと前記データ系ビヘイビアとに分離する
ことを特徴とする請求項１に記載の設計装置。
【請求項３】
コンピュータが備えるコマンド分離部により、回路設計のためのハードウェアの一連の処理の流れがビヘイビアレベルで記述された複数のコマンドを、それぞれ制御に関する動作が記述された制御系ビヘイビアと、データ処理に関する動作が記述されたデータ系ビヘイビアとに分離する第１のステップと、
前記コンピュータが備える統合部により、各前記コマンドの前記データ系ビヘイビアを１又は複数のビヘイビアに統合する第２のステップと、
前記コンピュータが備える高位合成処理部により、各前記コマンドの前記制御系ビヘイビアと、各前記コマンドの前記データ系ビヘイビアの１又は複数を統合してなる前記ビヘイビアとをそれぞれ高位合成処理する第３のステップと、
からなる処理を実行させる設計プログラムであって、
前記第１のステップでは、前記コマンド分離部が、
ハードウェア記述言語を用いて記述された動作処理のうち前記コマンドが実行する処理内容の１構文を示す処理ノード及びハードウェア記述言語を用いて記述された動作処理のうち前記コマンドが実行する状態遷移処理の条件文を示す遷移条件ノードをそれぞれ字句分割した処理ノードトークン及び遷移条件ノードトークンに基づいて、当該コマンドを前記制御系ビヘイビアと前記データ系ビヘイビアとに分離する
ことを特徴とする設計プログラム。
【請求項４】
前記第１のステップでは、
予め設定されたメッセージの属性判定仕様に基づいて各前記コマンドを前記制御系ビヘイビアと前記データ系ビヘイビアとに分離する
ことを特徴とする請求項３に記載の設計プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、設計装置及び設計プログラムに関し、例えばストレージ装置に使用するＬＳＩ（Large Scale Integration circuit）論理回路を設計するための設計装置及び設計プログラムに適用して好適なものである。
【背景技術】
【０００２】
従来、ＬＳＩの論理回路の設計は、ＲＴＬ（Register Transfer Level）の抽象度で設計され、データフロー制御を行なうために状態遷移図を用いて行なわれていた。ここでＲＴＬとは、ＬＳＩ設計の抽象度を表す。ＲＴＬでは、レジスタ−レジスタ単位でデータの流れを記述するが、このＲＴＬの記述には、ＶＨＤＬ（VHSIC Hardware Description Language）やVerilog−ＨＤＬといった抽象度の低いハードウェア記述言語（ＨＤＬ：Hardware Description Language）が用いられる。そしてＲＴＬで記述されたＨＤＬのソースコードは、この後、論理合成ツールと呼ばれるソフトウェアを用いてＩＣ（Integrated Circuit）セルを接続したネットリストと呼ばれる回路図に変換される。
【０００３】
上述のような状態遷移図を用いたＬＳＩ設計作業では、状態遷移図の作成後に人手により１つ１つの状態遷移の流れを検証してゆく必要があるが、ストレージ装置用途の高性能なＬＳＩになると、複雑なデータフロー仕様から状態遷移図（ＦＳＭ：Finite State Machine）で記述されたステートマシンの状態数や条件数が増加する。このため、このようなＬＳＩ設計作業では、状態遷移の流れを検証してゆく際に検証漏れや、バグの混入等による設計品質の低下が発生し易く、ＬＳＩの再製によるロストコストが増加する問題がある。
【０００４】
これに対して、近年では、品質改善や生産性の向上を目的として、ＲＴＬからコマンドごとに動作を切り出したビヘイビアレベルに抽象度を上げる方法が導入されつつある（例えば特許文献１参照）。ビヘイビアレベルを用いたＬＳＩ設計では、コマンドがＣ言語やSystem C（拡張Ｃ言語）といった高級言語を用いて記述される。そして、ビヘイビアレベルで記述されたコマンドは、この後、高位合成ツール（High Level Synthesis Tool）と呼ばれるソフトウェアを用いてＲＴＬで記述されたＨＤＬのソースコードに変換され、さらにこの後論理合成ツール（Logic Synthesis Tool）を用いてネットリスト（回路図）に変換される。
【特許文献１】特開２００７−４２０８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、ビヘイビアレベルの設計で利用される高位合成には、コマンドごとにデータパス回路が生成されるため、回路規模及びコストが従来のＲＴＬによる設定手法よりも大きくなるという問題（第１の問題点）があり、また回路リソースシェアを機械的に行なうため、制御系資源とデータ系資源に分離した実用的な資源共有制御を行なえないという問題（第２の問題点）があった。
【０００６】
実際上、一般的な高位合成のアルゴリズムでは、１つのビヘイビア（ハードウェアの一連の処理の流れ）に対して１組のステートマシンとデータパスとを生成する。そして高位合成処理では、この１つのデータパスの中でリソースシェアを行なうため、１コマンドに対しては従来の設計手法よりも回路規模を削減することが可能である。
【０００７】
しかしながら、かかる第１の問題点について、従来の高位合成処理では、複数組のステートマシンとデータパスとに跨ってリソースシェアを行なうことができないため、コマンド数が増加すると、これに応じてデータパス回路が生成されることとなる。ストレージ装置に代表されるコンピュータ向けのＬＳＩでは、単一データパス上に複数の命令が実行される特徴があることから、回路規模及びコスト面で高位合成は不向きであった。
【０００８】
また第２の問題点について、一般的な論理設計では、カウンタ回路や比較器など制御を司る論理回路については制御系資源とし、データレジスタやアドレスレジスタ、データ演算器などのデータ転送に特化した論理回路についてはデータ系資源として、これら制御系資源とデータ系資源とを分離して設計する。これは、制御系資源とデータ系資源を分離することで回路構造の可読性や保守性を高め、データエラーなどの障害に制御を巻き込まれないようにするためである。また制御系論理は、比較的小規模な回路で構成されることから、リソース共有による回路規模削減効果が小さいという理由もある。
【０００９】
これに対して高位合成処理では、ステートマシン以外はデータパスとして機械的にリソースシェアすることから、制御系資源とデータ系資源とが混在した回路が生成される。このため高位合成で生成されるＲＴＬは、可読性や保守性又は回路品質の面から従来のＲＴＬ設計手法に対して劣っているという問題がある。
【００１０】
本発明は以上の点を考慮してなされたもので、回路規模が小さく、保守性及び品質の高い回路設計を行い得る設計装置、設計方法及びプログラムを提案しようとするものである。
【課題を解決するための手段】
【００１１】
かかる課題を解決するため本発明においては、回路を設計するための設計装置において
、回路設計のためのハードウェアの一連の処理の流れがビヘイビアレベルで記述された複数のコマンドを、それぞれ制御に関する動作が記述された制御系ビヘイビアと、データ処理に関する動作が記述されたデータ系ビヘイビアとに分離するコマンド分離部と、各前記コマンドの前記データ系ビヘイビアを１又は複数のビヘイビアに統合する統合部と、各前記コマンドの前記制御系ビヘイビアと、各前記コマンドの前記データ系ビヘイビアの１又は複数を統合してなる前記ビヘイビアとをそれぞれ高位合成処理する高位合成処理部と、を備え、前記コマンド分離部は、ハードウェア記述言語を用いて記述された動作処理のうち前記コマンドが実行する処理内容の１構文を示す処理ノード及びハードウェア記述言語を用いて記述された動作処理のうち前記コマンドが実行する状態遷移処理の条件文を示す遷移条件ノードをそれぞれ字句分割した処理ノードトークン及び遷移条件ノードトークンに基づいて、当該コマンドを前記制御系ビヘイビアと前記データ系ビヘイビアとに分離することを特徴とする。
【００１３】
また本発明においては、設計プログラムにおいて、コンピュータが備えるコマンド分離部により、回路設計のためのハードウェアの一連の処理の流れがビヘイビアレベルで記述された複数のコマンドを、それぞれ制御に関する動作が記述された制御系ビヘイビアと、データ処理に関する動作が記述されたデータ系ビヘイビアとに分離する第１のステップと、
前記コンピュータが備える統合部により、各前記コマンドの前記データ系ビヘイビアを１又は複数のビヘイビアに統合する第２のステップと、前記コンピュータが備える高位合成処理部により、各前記コマンドの前記制御系ビヘイビアと、各前記コマンドの前記データ系ビヘイビアの１又は複数を統合してなる前記ビヘイビアとをそれぞれ高位合成処理する第３のステップと、からなる処理を実行させる設計プログラムであって、前記第１のステップでは、前記コマンド分離部が、ハードウェア記述言語を用いて記述された動作処理のうち前記コマンドが実行する処理内容の１構文を示す処理ノード及びハードウェア記述言語を用いて記述された動作処理のうち前記コマンドが実行する状態遷移処理の条件文を示す遷移条件ノードをそれぞれ字句分割した処理ノードトークン及び遷移条件ノードトークンに基づいて、当該コマンドを前記制御系ビヘイビアと前記データ系ビヘイビアとに分離することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、カウンタ回路や比較器などの制御系資源と、データレジスタやアドレスレジスタ、データ演算器などのデータ系資源とが分離されて設計される。かくするにつき、最終的に得られる回路構造の可読性や保守性を高め、品質の高い回路設計を行なうことができる。
【００１５】
また本発明によれば、制御系ビヘイビアから分離した各コマンドのデータ系ビヘイビアを１つのビヘイビアに統合するようにしているため、複数のステートマシンに跨ってデータパス論理の中でのリソースシェアを行なうことができる。かくするにつき、最終的に得られる回路構造の規模を格段的に削減することができる。
【発明を実施するための最良の形態】
【００１６】
以下図面について、本発明の一実施の形態を詳述する。
【００１７】
（１）本実施の形態による設計装置の構成
図１において、１は全体として本実施の形態によるＬＳＩ設計装置を示す。このＬＳＩ設計装置１は、ストレージ装置用途のＬＳＩの設計に適したものであり、コンピュータ本体２、操作端末３及びディスプレイ４から構成される。
【００１８】
コンピュータ本体部２は、メモリ１０、ＣＰＵ（Central Processing Unit）１１及び外部記憶装置１２を備える。
【００１９】
メモリ１０は、主としてＬＳＩ設計用ツールを保持するために用いられる。具体的には、ＬＳＩ設計ツールとして、例えば特開２００７−４２０８５号公報に開示されているような仕様モデルを生成するための市販のソフトウェアである仕様モデル生成ツール（Spec Authoring Tool）１３と、後述するデータパスシェアプログラム１４と、高位合成処理を行うための市販のソフトウェアである高位合成ツール１５と、高位合成ツール１５により生成された回路図をディスプレイ４に表示するための市販のソフトウェアである回路図ビューア１６となどがメモリ１０に保持される。
【００２０】
またＣＰＵ１１は、ＬＳＩ設計装置１全体の動作制御を司るプロセッサである。ＣＰＵ１１がメモリ１０に格納されたＬＳＩ設計用ツールを実行することにより、ＬＳＩ設計装置１全体として後述のような各種の処理を実行する。さらに外部記憶装置１２は、例えばハードディスク装置から構成されるもので、各ＬＳＩ設計ツールが使用する各種パラメータが格納される。設計者が入力した入力データ１７や、後述の設計データベース１８、回路ライブラリ１８及び設計データ２０などもこの外部記憶装置１２に保持される。
【００２１】
操作端末３は、ユーザがＬＳＩ設計装置１を操作するために用いられるもので、キーボードやマウスなどから構成される。またディスプレイ４は、各種のＧＵＩ（Graphical User Interface）や情報を表示するためのものであり、ＣＲＴ（Cathode Ray Tube）や液晶パネルなどが適用される。
【００２２】
（２）本実施の形態によるＬＳＩ設計手法
（２−１）本実施の形態によるＬＳＩ設計手法の概要
図２は、従来のＲＴＬを用いたＬＳＩ設計手法の概要を示す。このＬＳＩ設計手法では、状態遷移図でなる制御論理３０及びデータパスでなるデータパス論理３１を人手で作成する。そしてこのような作業により得られたＲＴＬで記述されたＨＤＬのソースコードを、論理合成ツール３２を用いてネットリスト３３に変換する。
【００２３】
また図３は、ビヘイビアレベルを用いたＬＳＩ設計手法の概要を示す。このＬＳＩ設計手法では、データフローを互いに排他動作する複数のコマンド３４としてビヘイビアレベルで記述し、これらコマンド３４を高位合成ツール３５を用いてＲＴＬで記述された制御論理３５及びデータパス論理３６にそれぞれ変換する。そして、この後、これらコマンド３４ごとの制御論理３５及びデータパス論理３６をそれぞれ論理合成ツール３７を用いてネットリスト３８に変換する。
【００２４】
一方、図３との対応部分に同一符号を付した図４は、本実施の形態によるＬＳＩ設計手法の概要を示す。本実施の形態によるＬＳＩ設計手法は、基本的には上述のビヘイビアレベルを用いたＬＳＩ設計手法のアルゴリズムと同様であるが、高位合成の前処理として、各コマンド３４を制御に関するビヘイビア（以下、これを制御系ビヘイビアと呼ぶ）とデータ転送に関するビヘイビア（以下、これをデータ系ビヘイビアと呼ぶ）とに分離し、各コマンド３４のデータ系ビヘイビアを１つのビヘイビア（以下、適宜、これをデータパス階層と呼ぶ）４１としてまとめる処理を行う点を特徴の１つとしている。
【００２５】
そして本実施の形態によるＬＳＩ設計手法では、このようにして得られた各コマンドの制御系ビヘイビア（以下、適宜、これらをコマンド階層と呼ぶ）４０と、データパス階層４１とを高位合成ツール３５を用いてＲＴＬで記述された制御論理４２及び制御系論理（制御パス）４３と、データ系論理（データパス）４４とにそれぞれ変換する。そして、この後、これらコマンド３４ごとの制御論理４２及び制御系論理４３並びにデータ系論理４４をそれぞれ論理合成ツール３７を用いてネットリスト４５に変換する。
【００２６】
図５は、このような本実施の形態によるＬＳＩ設計手法を用いた設計作業のうち、高位合成処理までの作業の流れを示している。本実施の形態によるＬＳＩ設計手法を用いた設計作業では、まず、設計者がＬＳＩ設計装置１の仕様モデル生成ツール１３（図１）を用いて必要なコマンド３４をビヘイビアレベルで記述する（ＳＰ１）。また設計者は、この後この仕様モデル生成ツール１３を用いて、コマンドをグルーピング（ポートシェアや排他制御論（アービタ）を生成）して設計データベース１８を生成する（ＳＰ２）。
【００２７】
続いて、設計者は、データパスシェアプログラム１４（図１）を起動し、高位合成の前処理としてのデータパスシェア処理を実行させる。かくして、このときＬＳＩ設計装置１は、データパスシェアプログラム１４に基づいて、各コマンドを制御系ビヘイビア４０と、データ系ビヘイビアとに分離すると共に、各コマンドのデータ系ビヘイビアを１つのビヘイビア４１としてまとめる。そしてＬＳＩ設計装置１は、このような処理により得られた新たな設計データにより設計データベース１８を更新する（ＳＰ３）。
【００２８】
この後、設計者は、高位合成ツール１５（図１）を起動して、ステップＳＰ３において更新した設計データベース１８と、ＬＳＩ設計装置１の外部記憶装置１２（図１）に予め格納されている回路ライブラリ１９とに基づいて高位合成処理を実行させる（ＳＰ４）。
【００２９】
なお、図５のステップＳＰ１において作成されるビヘイビアモデルの一例を図６及び図７に示す。図６は、マスタ５０からの「0ｘ0A」という命令コードで起動し、その後マスタ５０から与えられるDIN0及びDIN1というデータを加算してメモリ５２に書き込む処理を８回繰り返すというコマンド（「コマンドＡ」）５１ＡをＵＭＬ（Unified Modeling Language）表記したものである。また図７は、マスタ５０からの「0ｘ0B」という命令コードで起動し、その後マスタ５０から送信されるDIN2及びDIN3というデータを加算してメモリ５２に書き込む処理を８回繰り返すというコマンド（「コマンドＢ」）５１ＢをＵＭＬ表記したものである。
【００３０】
これら図６及び図７において、各コマンド５１Ａ，５１Ｂの生存線５４Ａ，５４Ｂ上に配置された活性化シンボル５６Ａ，５６Ｂは、そのコマンド５１Ａ，５１Ｂ内における１つのステート（状態）を表現している。また活性化シンボル５６Ａ，５６Ｂの左側に表記された文字列は処理コードと呼ばれるもので、そのステートにおいて実行すべき処理内容を表している。
【００３１】
さらにマスタ５０の生存線５３から各コマンド５１Ａ，５１Ｂの活性化シンボル５６Ａ，５６Ｂに向かう矢印はそのコマンド５１Ａ，５１Ｂへの入力メッセージを表し、これら活性化シンボル５６Ａ，５６Ｂからマスタ５０やメモリ５２の生存線５４Ａ，５４Ｂに向かう矢印はそのコマンド５１Ａ，５１Ｂからの出力メッセージを表している。
【００３２】
これらの矢印上に表記されている文字列のうち、アンダーラインが引いてある文字列はフラグを表し、アンダーラインが引いていない文字列は変数値の受け渡しを表す。また図中「［CNT !＝0x00］」は、同じ動作を連続する条件を示しており、ここではカウンタの値が「0x00」となるまで同じ動作を繰り返すことを表している。
【００３３】
このようなビヘイビアモデルのＵＭＬ表記方法については、特開２００７−４２０８５号公報を参照されたい。なお、図６及び図７では、設計者により定義されたローカル変数を右上の枠５７Ａ，５７Ｂ内に表記している。
【００３４】
図８は、図６及び図７のビヘイビアモデルに基づいて仕様モデル生成ツール１３（図１）により作成される設計データベース１８上でのビヘイビアモデルの構造例を示している。この図８に示すように、設計データベース１８上のビヘイビアモデルでは、マスタ５０と、設計対象のブロック６０との間に、マスタ５０及びブロック６０間（ここではマスタ５０及び「コマンドＡ」間と、マスタ５０及び「コマンドＢ」間）でやり取りされる変数値にそれぞれ対応させてチャネル６１Ａ〜６１Ｈが定義される。
【００３５】
またブロック６０内には、例えば入力メッセージの振り分けを行なう受信ブロック６２と、設計者が設計した各コマンド（ここでは「コマンドＡ」及び「コマンドＢ」）６３Ａ，６３Ｂから構成される排他グループ６３と、例えば出力メッセージの選択を行なう送信ブロック６４と、排他グループ６３内のコマンド階層６３Ａ，６３Ｂ間の排他制御を行なうアービタ６５とが定義される。
【００３６】
そして受信ブロック６２と排他グループ６３内の各コマンド階層６３Ａ，６３Ｂとの間には、それぞれマスタ５０及びそのコマンド階層６３Ａ，６３Ｂ間でやり取りされる変数値にそれぞれ対応させてチャネル６６Ａ〜６６Ｊが定義され、各コマンド階層６３Ａ，６３Ｂ及び送信グループ６４間には、それぞれそのコマンド階層６３Ａ，６３Ｂ及びメモリ６５間でやり取りされる変数値にそれぞれ対応させてチャネル６７Ａ〜６７Ｌが定義される。また各コマンド階層６３Ａ，６３Ｂ及びアービタ６５間には、それぞれ送信用及び受信用のチャネル６８Ａ〜６８Ｄが定義され、送信ブロック６４及びメモリ５２間には、各コマンド階層６３Ａ，６３Ｂ及びメモリ５２間でやり取りされる変数値にそれぞれ対応させてチャネル６９Ａ，６９Ｂが定義される。なお、受信ブロック６２及び送信ブロック６４の構成をそれぞれ図９及び図１０に示す。
【００３７】
図１１は、図８のコマンドＡの具体的な構成を示している。この図１１において、「S0」〜「S4」はそれぞれ図６のいずれかの活性化シンボル５６Ａに対応するステートであり、「ABTBEGIN」及び「ABTEND」はアービタを取得し又は開放するためのステートである。
【００３８】
この図１１では、ステートを表す枠７０Ａ〜７０Ｅ内にそのステートの名称（１段目）と、そのステートに対する入力メッセージ及びその入力メッセージが入力されるチャネルの名称（２段目）と、そのステートにおける処理内容を表すステートアクション（３段目）とが表記されている。
【００３９】
またステートアクションを表す枠７１Ａ〜７１Ｋ内には、そのステートアクションの名称（１段目）と、そのステートアクションが実行される条件（２段目）と、そのステートアクションの処理コード（３段目）と、そのステートアクションにおける出力値及びその出力値を出力するチャネルの名称（４段目）とが表記されている。
【００４０】
なお、「S2」というステートと「S3」というステートの間に表記されている「!（CNT!＝0x00）」という文字列は遷移条件を表しており、ここではカウンタの値が「0x00」になったら「S2」というステートから「S3」というステートに遷移することを表している。
【００４１】
図１２は、図５について上述した本実施の形態によるＬＳＩ設計手法を用いた設計作業のステップＳＰ２において生成される設計データベース１８の具体的な構成を示している。
【００４２】
この図１２からも明らかなように、設計データベース１８では、設計対象のブロック６０（図８）の名称が格納された「Component」という名称のクラス１８Ａを最上位階層として、当該クラス１８Ａの下位階層に、そのブロック内に存在するコマンドや、アービタ、受信ブロック及び送信ブロック等の各ユニットの名称が格納された「Unit」という名称のクラス１８Ｂと、そのブロック６０内に存在する各チャネルのチャネル名及びチャネル属性が格納された「Channel」という名称のクラス１８Ｃとが存在する。
【００４３】
また「Unit」というクラス１８Ｂの下位階層には、かかる各ユニットの型、変数名及び初期値が格納された「Local Variable」という名称のクラス１８Ｄがユニットごとに存在する。また「Unit」というクラス１８Ｂの下位階層には、かかるユニットのうちの各コマンドとそれぞれ対応付けて、そのコマンド内に定義された各ステートの名称が格納された「State」という名称のクラス１８Ｅが存在する。
【００４４】
さらに「State」という各クラス１８Ｅの下位階層には、各ステートにそれぞれ対応させて、そのステートの型、変数名及び初期値が格納された「Local Variable」という名称のクラス１８Ｆと、そのステート内に定義されたステートアクションの名称が格納された「State Action」という名称のクラス１８Ｇとが存在する。
【００４５】
さらに「State Action」というクラス１８Ｇの下位階層には、それぞれそのステートアクションにおけるフラグ条件値、データ入力値、データ／フラグ出力値、実行コード又は遷移条件がそれぞれ格納された「Condition」、「Input」、「Output」、「Text」及び「NextState Element」という名称のクラス１８Ｈ〜１８Ｌが存在する。
【００４６】
そして「State」というクラス１８Ｅと「NextState Element」というクラス１８Ｌとがリンクされ、「Channel」というクラス１８Ｃと、「Condition」、「Input」及び「Output」という各クラス１８Ｈ〜１８Ｊとがリンクされている。
【００４７】
（２−２）データパスシェアプログラムのモジュール構成
図１３は、データパスシェアプログラム１４（図１）のモジュール構成を示している。データパスシェアプログラム１４は、データパスシェア制御部８０を最上位階層として、その下位階層に初期テーブル生成部８１、データパス追出し設定部８２及びデータパス階層生成部８３が存在する。これら初期テーブル生成部８１、データパス追出し設定部８２及びデータパス階層生成部８３は、必要時にデータパスシェア制御部８０により呼び出される。
【００４８】
またデータパス追出し設定部８２の下位階層には入力メッセージ初期化部８４、出力メッセージ初期化部８５及び処理ノードデータパス８６が存在する。そしてこれら入力メッセージ初期化部８４、出力メッセージ初期化部８５及び処理ノードデータパス追出し部８６は、必要時にデータパス追出し設定部８２に呼び出される。さらにデータパス階層生成部８３の下位階層には、処理ノード統合部８７、入力メッセージ再構成部８８及び出力メッセージ再構成部８９が存在する。そしてこれら処理ノード統合部８７、入力メッセージ再構成部８８及び出力メッセージ再構成部８９は、必要時にデータパス階層生成部８３に呼び出される。
【００４９】
これら各モジュールの機能については、後述する。
【００５０】
（２−３）各内部テーブルの構成
図１４は、データパスシェアプログラム１４が管理する内部テーブルの関連を示している。この図１４からも明らかなように、本実施の形態によるＬＳＩ設計装置１の場合、内部テーブルとしてローカル変数テーブル９０、入力メッセージテーブル９１、出力メッセージテーブル９２、処理ノードテーブル９３、処理ノードトークンテーブル９４、遷移条件ノードテーブル９５及び遷移条件ノードトークンテーブル９６を備える。これら内部テーブルの関連性については、図３１〜図３４において説明する。
【００５１】
ローカル変数テーブル９０は、図８について上述した排他グループ６３内で使用されるローカル変数を管理するためのテーブルであり、図１５に示すように、「コマンド階層」欄９０Ａ、「スコープ」欄９０Ｂ、「変数名」欄９０Ｃ、「型」欄９０Ｄ、「初期値」欄９０Ｅ、「データパス追出しフラグ」欄９０Ｆから構成される。
【００５２】
このうち「コマンド階層」欄９０Ａには、そのローカル変数が定義されているコマンド階層の名称（「コマンドＡ」又は「コマンドＢ」）が格納され、「スコープ」欄９０Ｂには、そのローカル変数が有効なスコープ範囲が格納される。例えば、そのローカル変数がコマンド階層内で有効な場合には「Unit」が格納され、そのローカル変数がそのコマンド内の個々のステート内でのみ有効な場合にはそのステート名が格納される。また「変数名」欄９０Ｃには、そのローカル変数の名称が格納される。
【００５３】
また「型」欄９０Ｄ及び「初期値」欄９０Ｅには、それぞれそのローカル変数のタイプ及び初期値が格納され、「データパス追出しフラグ」欄９０Ｆには、そのレコードに対応するローカル変数が制御系処理及びデータ系処理のいずれに対応するものであるかを表すデータパス追出しフラグが格納される。
【００５４】
また入力メッセージテーブル９１は、コマンド階層に与えられる入力メッセージを管理するためのテーブルであり、図１６に示すように、「コマンド階層」欄９１Ａ、「ステート名」欄９１Ｂ、「接続先チャネル名」欄９１Ｃ、「一時入力変数名」欄９１Ｄ、「入力変数名」欄９１Ｅ、「Input属性」欄９１Ｆ、「接続先チャネル属性」欄９１Ｇ、「メッセージ属性」欄９１Ｈ及び「データパス追出しフラグ」欄９１Ｉから構成される。
【００５５】
そして「コマンド階層」欄９１Ａには、その入力メッセージによってイベントが発生するコマンド階層の名称が格納され、「ステート名」欄には、そのコマンド階層内のステートのうち、その入力メッセージによって入力イベントが発生するステートの名称が格納される。また「接続先チャネル名」欄９１Ｃには、その入力メッセージが入力されるチャネル６１Ａ〜６１Ｈの名称が格納される。
【００５６】
また「一時入力変数名」欄９１Ｄには、その入力メッセージが一時的に変換される変数の名称が格納され、「入力変数名」欄９１Ｅには、その入力メッセージが変換される最終的なローカル変数の名称が格納される。ただし、入力変数名が定義されていないときには、「入力変数名」欄９１Ｅに「NONE」が格納される。
【００５７】
「Input属性」欄９１Ｆには、入力メッセージがデータ型メッセージ及びフラグ型メッセージのいずれであるかの情報が格納される。例えば、入力メッセージがデータ型メッセージのときには「input」、フラグ型メッセージのときには「condition」が格納される。この入力メッセージがデータ型メッセージ及びフラグ型メッセージのいずれであるかは、その入力メッセージが経由するチャネル６６Ａ〜６６Ｊによって一意に定まる。また、各チャネル６６Ａ〜６６Ｊに対して入力メッセージがデータ型メッセージ及びフラグ型メッセージのいずれであるかは予め定義される。
【００５８】
また「接続先チャネル属性」欄９１Ｇには、その入力メッセージが経由するチャネル６６Ａ〜６６Ｊの属性が格納される。このチャネル６６Ａ〜６６Ｊの属性は、入力メッセージの種類に応じて予め定義されており、例えば、かかる入力メッセージがアービタ６５（図８）からのものである場合には「arb」、かかる入力メッセージが受信ブロック６２（図８）で振り分けられるタイプのものであるときには「share」、かかる入力メッセージが宛先（コマンド）を指定した通常メッセージのときには「normal」が格納される。
【００５９】
さらに「メッセージ属性」欄９１Ｈには、その入力メッセージの属性が格納される。例えば、かかる入力メッセージが制御系メッセージのときには「ctl」、データ系メッセージのときには「data」、制御系メッセージ及びデータ系メッセージのいずれでもないときには「dummy」が格納される。後述のように、このメッセージの属性は、図１７に示す判定仕様に従って判定される。
【００６０】
そして「データ追出しフラグ」欄９１Ｉには、そのレコードに対応する入力メッセージが制御系処理及びデータ処理系処理のいずれに対応するかを表すデータ追出しフラグが格納される。なお、入力メッセージテーブル９１におけるデータパス追出しフラグのデフォルト値は、対応する入力メッセージがデータ処理系メッセージであることを表す「TRUE」である。
【００６１】
一方、出力メッセージテーブル９２は、各コマンドから出力される出力メッセージを管理するためのテーブルであり、図１８に示すように、「コマンド階層」欄、９２Ａ「ステート名」欄９２Ｂ、「ステートアクション名」欄９２Ｃ、「接続先チャネル名」欄９２Ｄ、「出力変数名」欄９２Ｅ、「ビットサイズ」欄９２Ｆ、「接続先チャネル属性」欄９２Ｇ、「接続先チャネルサブ属性」欄９２Ｈ、「接続先変数名」欄９２Ｉ、「メッセージ属性」欄９２Ｊ及び「データ追出しフラグ」欄９２Ｋから構成される。
【００６２】
そして「コマンド階層」欄９２Ａには、その出力メッセージが出力されるコマンド階層の名称が格納され、「ステート名」欄９２Ｂには、そのコマンド内の出力イベントが発生するステートの名称が格納される。また「ステートアクション名」欄９２Ｃには、そのステート内のステートアクション（サブステート）のうちの出力イベントが発生するステートアクションの名称が格納され、「接続先チャネル名」欄９２Ｄには、出力メッセージを出力するチャネル６７Ａ〜６７Ｌ（図８）の名称が格納される。
【００６３】
また「出力変数名」欄９２Ｅには、出力されるローカル変数の名称が格納され、「ビットサイズ」欄９２Ｆには、そのローカル変数のビットサイズが格納される。さらに「接続先チャネル属性」欄９２Ｇには、出力メッセージを出力するチャネル６７Ａ〜６７Ｌの属性が格納される。この属性は、出力メッセージの種類に応じて異なり、例えば、かかる出力メッセージがアービタ６５（図８）に対するものである場合には「arb」、かかる出力メッセージが送信ブロック６４において振り分けられるタイプのものであるときには「share」、かかる出力メッセージが通常メッセージのときには「normal」が格納される。
【００６４】
「接続先チャネルサブ属性」欄９２Ｈには、出力メッセージを出力するチャネル６７Ａ〜６７Ｌのサブ属性が格納される。例えば、対応するチャネルのチャネル属性が「share」の場合、出力メッセージが送信ブロック６４（図８）において選択される値のメッセージであるときには「data」、出力メッセージが送信ブロック６４に選択を指示するフラグメッセージのときには「en」が格納される。なお対応するチャネル６７Ａ〜６７Ｌのチャネル属性が「arb」の場合には「arb」、「normal」である場合には「data」となる。
【００６５】
さらに「接続先変数名」欄９２Ｉには、接続先のコマンドで代入される変数名が格納され、「メッセージ属性」欄９２Ｊには、その出力メッセージの属性が格納される。例えば、かかる出力メッセージが制御系メッセージのときには「ctl」、データ系メッセージのときには「data」が格納される。後述のように、このメッセージの属性は、図１９に示す仕様書に従って判定される。
【００６６】
さらに「データパス追出しフラグ」欄９２Ｋには、出力メッセージが制御系処理及びデータ処理系処理のいずれに対応するものであるかを表すデータ追出しフラグが格納される。具体的には、接続先のチャネル６７Ａ〜６７Ｌの属性が「ctl」のときには「TRUE」、かかる属性が「data」のときには「FALSE」が格納される。なお、出力メッセージテーブル９２におけるデータパス追出しフラグのデフォルト値は「TRUE」である。
【００６７】
他方、処理ノードテーブル９３は、入力メッセージに応じてコマンドが実行する処理ノードを管理するためのテーブルであり、図２０に示すように、「コマンド階層」欄９３Ａ、「ステート名」欄９３Ｂ、「ステートアクション名」欄９３Ｃ、「処理ノードＩＤ」欄９３Ｄ、「処理ノード」欄９３Ｅ及び「データパス追出しフラグ」欄９３Ｆから構成される。
【００６８】
「処理ノード」欄９３Ｅには、対応する処理ノードが格納され、「コマンド階層」欄９３Ａには、その処理ノードが実行されるコマンド階層の名称が格納される。また「ステート名」欄９３Ｂには、そのコマンド階層内のその処理ノードが実行されるステートの名称が格納され、「ステートアクション名」欄９３Ｃには、そのステート内のその処理ノードが実行されるステートアクションの名称が格納される。
【００６９】
また「処理ノードＩＤ」欄９３Ｄには、その処理ノードに付与されたＩＤが格納され、「データパス追出しフラグ」欄９３Ｆには、その処理ノードが制御系及びデータ系のいずれであるかを表すデータパス追出しフラグが格納される。なお、処理ノードテーブル９３におけるデータパス追出しフラグのデフォルトは「TRUE」である。
【００７０】
さらに処理ノードトークンテーブル９４は、処理ノードを字句分割することにより得られた処理ノードトークンを管理するためのテーブルであり、図２１に示すように、「コマンド階層」欄９４Ａ、「ステート名」欄９４Ｂ、「ステートアクション名」欄９４Ｃ、「処理ノードＩＤ」欄９４Ｄ、「処理ノードトークンＩＤ」欄９４Ｅ、「処理ノードトークン」欄９４Ｆ及び「データパス追出しフラグ」欄９４Ｇから構成される。
【００７１】
このうち「処理ノードトークンＩＤ」欄９４Ｅには、対応する処理ノードトークンに付与されたＩＤが格納され、「処理ノードトークン」欄９４Ｆには、対応する処理ノードトークンが格納される。
【００７２】
また「コマンド階層」欄９４Ａ、「ステート名」欄９４Ｂ、「ステートアクション名」欄９４Ｃ、「処理ノードＩＤ」欄９４Ｄ及び「データパス追出しフラグ」欄９４Ｇには、処理ノードテーブル９３（図２０）の「コマンド階層」欄９３Ａ、「ステート名」欄９３Ｂ、「ステートアクション名」欄９３Ｃ、「処理ノードＩＤ」欄９３Ｄ及び「データパス追出しチェック」欄９３Ｆにそれぞれ格納される情報と同じ情報が格納される。
【００７３】
遷移条件ノードテーブル９５は、状態遷移を行なうための条件文である遷移条件ノードを管理するためのテーブルであり、図２２に示すように、「コマンド階層」欄９５Ａ、「ステート名」欄９５Ｂ、「ステートアクション名」欄９５Ｃ、「遷移条件ノードＩＤ」欄９５Ｄ及び「遷移条件ノード」欄９５Ｅから構成される。
【００７４】
そして「遷移条件ノード」欄９５Ｅには、対応する遷移条件ノードが格納され、「コマンド階層」欄９５Ａには、その遷移条件ノードが実行されるコマンド階層の名称が格納される。また「ステート名」欄９５Ｂには、そのコマンド階層内のその遷移条件ノードが実行されるステートの名称が格納され、「ステートアクション名」欄９５Ｃには、そのステート内のその遷移条件ノードが実行されるステートアクションの名称が格納される。さらに「遷移条件ノードＩＤ」欄９５Ｄには、その遷移条件ノードに付与されたＩＤが格納される。
【００７５】
また遷移条件ノードトークンテーブル９６は、遷移条件ノードを字句分割することにより得られた遷移条件ノードトークンを管理するためのテーブルであり、図２３に示すように、「コマンド階層」欄９６Ａ、「ステート名」欄９６Ｂ、「ステートアクション名」欄９６Ｃ、「遷移条件ノードＩＤ」欄９６Ｄ及び「遷移条件ノードトークンＩＤ」欄９６Ｅ及び「遷移条件ノードトークン」欄９６Ｆから構成される。
【００７６】
そして「遷移条件ノードトークン」欄９６Ｆには、遷移条件ノードトークンが格納され、「遷移条件ノートトークンＩＤ」欄９６Ｅには、その遷移条件ノードトークンに付与されたＩＤが格納される。
【００７７】
また「コマンド階層」欄９６Ａ、「ステート名」欄９６Ｂ、「ステートアクション名」欄９６Ｃ及び「遷移条件ノードＩＤ」欄９６Ｄには、遷移条件ノードテーブル９５の「コマンド階層」欄９５Ａ、「ステート名」欄９５Ｂ、「ステートアクション名」欄９５Ｃ及び「遷移条件ノードＩＤ」欄９５Ｄに格納された情報と同様の情報がそれぞれ格納される。
【００７８】
（２−４）データパスシェア処理
（２−４−１）データパスシェア処理の流れ
図２４は、図５について上述した本実施の形態によるＬＳＩ設計手法を用いた設計作業において、高位合成の前処理として行なわれるデータパスシェア処理（ＳＰ３）に関するＬＳＩ設計装置１のＣＰＵ１１（図１）の具体的な処理内容を示している。
【００７９】
ＣＰＵ１１は、図５のステップＳＰ３に進むとデータパスシェア処理を開始し、まず、データパスシェア制御部８０（図１３）に基づいて初期テーブル生成部８１（図１３）を呼び出す。そしてＣＰＵ１１は、この後、この初期テーブル生成部８１に基づいて、設計データベース１８から必要な情報を収集し、収集した情報を内部テーブルに展開することにより、初期状態の内部テーブルをそれぞれ生成する（ＳＰ１０）。
【００８０】
続いてＣＰＵ１１は、データパスシェア制御部８０に基づいてデータパス追出し設定部８２（図１３）を呼び出し、このデータパス追出し設定部８２と、その下位階層にある入力メッセージ初期化部８４（図１３）、出力メッセージ初期化部８５（図１３）及び処理ノードデータパス追出し部８６（図１３）とに基づいて、各内部テーブルのデータパス追出しフラグをそれぞれ設定する（ＳＰ１１）。
【００８１】
この後ＣＰＵ１１は、データパスシェア制御部８０に基づいてデータパス階層生成部８３（図１３）を呼び出し、このデータパス階層生成部８３と、その下位階層にある処理ノード統合部８７（図１３）、入力メッセージ再構成部８８（図１３）及び出力メッセージ再構成部８９（図１３）とに基づいて、図８について上述した設計対象のブロック６０内にデータパス階層４０（図４）を生成し、ステップＳＰ１１において設定した各内部テーブルのデータパス追出しフラグを参照しながら、各コマンド３４（図４）内の処理コードやメッセージをデータパス階層４１に移動する（ＳＰ１２）。
【００８２】
（２−４−２）初期テーブル生成処理
ここで、ＣＰＵ１１は、図２４について上述したデータパスシェア処理のステップＳＰ１０に進むと図２５に示す初期テーブル生成処理を開始し、まず、ローカル変数テーブル９０（図１５）を初期化する（ＳＰ２０）。具体的には、ＣＰＵ１１は、設計データベース１８から各コマンド階層について設定されたローカル変数の定義情報を収集し、これをローカル変数テーブル９０に展開する。この際、ＣＰＵ１１は、ローカル変数テーブル９０の各レコードのデータパス追出しフラグを一律に「TRUE」に設定する。
【００８３】
続いてＣＰＵ１１は、入力メッセージテーブル９１（図１６）を初期化する（ＳＰ２１）。具体的にＣＰＵ１１は、設計データベース１８から各コマンド階層への入力メッセージの情報を収集し、これを入力メッセージテーブル９１に展開する。またＣＰＵ１１は、各コマンド階層にそれぞれ接続された入力メッセージ用のチャネル６６Ａ〜６６Ｊ（図８）のチャネル属性情報を設計データベース１８から取得し、これを入力メッセージテーブル９１に格納する。なおＣＰＵ１１は、初期段階では、入力メッセージテーブル９１上の各入力メッセージのメッセージ属性を「NULL」に設定し、データパス追出しフラグを一律に「TRUE」に設定する。
【００８４】
次いでＣＰＵ１１は、出力メッセージテーブル９２（図１８）を初期化する（ＳＰ２２）。具体的にＣＰＵ１１は、設計データベース１８から各コマンド階層からの出力メッセージの情報を収集し、これを出力メッセージテーブル９２に展開する。またＣＰＵ１１は、各コマンド階層にそれぞれ接続された出力メッセージ用のチャネル６７Ａ〜６７Ｌのチャネル属性情報を設計データベース１８から取得し、これを出力メッセージテーブル９２に格納する。なおＣＰＵ１１は、初期段階では、出力メッセージテーブル９２上の各出力メッセージのメッセージ属性を「NULL」に設定し、データパス追出しフラグを一律に「TRUE」に設定する。
【００８５】
この後ＣＰＵ１１は、処理ノードテーブル９３（図２０）を初期化する（ＳＰ２３）。具体的にＣＰＵ１１は、設計データベース１８から各コマンド階層内の各ステートアクションにそれぞれ含まれる処理コードの情報を取得する。この処理コードには、代入文や演算代入文及び関数呼び出しなどが含まれ、選択文や繰り返し文及び分岐文などは含まれない。また処理コードは、１構文ごとに分割されて処理ノードとして処理ノードテーブル９３に格納される。例えば図２６（Ａ）に示すような処理コードの場合、図２６（Ｂ）に示すように「WTDT＝DIN0＋DIN1；」という処理ノードと、「CNT--；」という処理ノードとに分割され、これら処理ノードが処理ノードテーブル９３に格納される。なおＣＰＵ１１は、処理ノードテーブル９３上の各レコードのデータパス追出しフラグを一律「TRUE」に設定する。
【００８６】
続いてＣＰＵ１１は、処理ノードトークンテーブル９４（図２１）を初期化する（ＳＰ２４）。具体的にＣＰＵ１１は、処理ノードテーブル９３から１レコードずつ処理ノードを読み出し、読み出した処理ノードを字句分割する。そしてＣＰＵ１１は、分割した字句（中間トークン）の中から変数部のみを処理ノードトークンとして処理ノードトークンテーブル９４に格納する。従って、例えば図２７に示すように、処理ノードが「WTDT＝DIN0＋DIN1；」であった場合（図２７（Ａ））、この処理ノードは「WTDT」、「＝」、「DIN0」、「＋」、「DIN0」及び「；」という字句に分割され（図２７（Ｂ））、このうちの「WTDT」、「DIN0」及び「DIN0」という字句のみが処理ノードトークンとして処理ノードトークンテーブル９４に格納されることになる（図２７（Ｃ））。またＣＰＵ１１は、この際、処理ノードトークンテーブル９４上の各レコードのデータパス追出しフラグを一律「TRUE」に設定する。
【００８７】
次いでＣＰＵ１１は、状態遷移ノードテーブル９５（図２２）を初期化する（ＳＰ２５）。具体的にＣＰＵ１１は、設計データベース１８より各コマンドのステートアクションに含まれる遷移条件ノードを取得し、これを遷移条件ノードテーブル９５に展開する。
【００８８】
この後ＣＰＵ１１は、状態遷移ノードトークンテーブル９６（図２３）を初期化する（ＳＰ２６）。具体的にＣＰＵ１１は、状態遷移ノードテーブル９４から１レコードずつ遷移条件ノードを読み出し、読み出した遷移条件ノードを字句分割する。そしてＣＰＵ１１は、分割した字句（中間トークン）の中から変数部のみを遷移条件ノードトークンとして状態遷移ノードトークンテーブル９６に展開する。従って、例えば図２８に示すように、遷移条件ノードが「CNT !＝0x00」であった場合（図２８（Ａ））、この遷移条件ノードは「CNT」、「!＝」及び「0x00」という字句に分割され（図２８（Ｂ））、このうちの「CNT」という字句のみが遷移条件ノードトークンとして状態遷移ノードトークンテーブル９６に格納されることとなる（図２８（Ｃ））。
【００８９】
（２−４−３）データパス追出し設定処理
一方、ＣＰＵ１１は、この後、図２４について上述したデータパスシェア処理のステップＳＰ１１に進むと図２９に示すデータパス追出し設定処理を開始し、まず、入力メッセージ初期化部８４（図１３）に基づいて、入力メッセージテーブル９１の各レコードについてメッセージ属性及びデータパス追出しフラグを設定する（ＳＰ３０）。
【００９０】
具体的に、ＣＰＵ１１は、入力メッセージテーブル９１から１レコードずつ入力メッセージを取り出し、取り出したレコードについて、図１７に示したメッセージ属性判定様式に従ってメッセージ属性を設定することにより、接続先のチャネル６６Ａ〜６６Ｊ（図８）をキー（key）とし、メッセージ属性を値（value）とするハッシュテーブルを生成する。
【００９１】
なお、同じチャネルが制御系処理及びデータ系処理の双方で使用されることがあるが、ハッシュテーブル上ではそれらのチャネルを１つにまとめ、その値を、その入力メッセージが制御系のものであることを意味する「ctl」、その入力メッセージがデータ系のものであることを意味する「data」、その入力メッセージが制御系及びデータ系のいずれでもないことを意味する「dummy」の優先順位で設定する。
【００９２】
この後ＣＰＵ１１は、生成したハッシュテーブルに従って、入力メッセージテーブル９１の各レコードのメッセージ属性をそれぞれ設定する。またＣＰＵ１１は、これと併せて、メッセージ属性が「ctl」のレコードについてはデータ追出しフラグとして「FALSE」、メッセージ属性が「data」のレコードについてはデータパス追出しフラグとして「TRUE」をそれぞれ設定する。
【００９３】
続いて、ＣＰＵ１１は、出力メッセージ初期化部８５（図１３）に基づいて、出力メッセージテーブル９２（図１８）の各レコードについてメッセージ属性及びデータパス追出しフラグを設定する（ＳＰ３１）。
【００９４】
具体的に、ＣＰＵ１１は、出力メッセージテーブル９２から１レコードずつ出力メッセージを取り出し、取り出したレコードについて、図１９に示したメッセージ属性判定様式に従ってメッセージ属性を設定することにより、接続先のチャネル６７Ａ〜６７Ｌ（図８）をキー（key）とし、メッセージ属性を値（value）とするハッシュテーブルを生成する。
【００９５】
なお、同じ名称のチャネルが制御系処理及びデータ系処理の双方で使用されることがあるが、ハッシュテーブル上ではそれらのチャネルを１つにまとめ、その値を、その出力メッセージが制御系のものであることを意味する「ctl」、その出力メッセージがデータ系のものであることを意味する「data」の優先順位で設定する。
【００９６】
この後ＣＰＵ１１は、生成したハッシュテーブルに従って、出力メッセージテーブル９２の各レコードのメッセージ属性をそれぞれ設定する。またＣＰＵ１１は、これと併せて、メッセージ属性が「ctl」のレコードについてはデータ追出しフラグとして「FALSE」、メッセージ属性が「data」のレコードについてはデータパス追出しフラグとして「TRUE」をそれぞれ設定する。
【００９７】
次いでＣＰＵ１１は、処理ノードデータパス追出し部８６に基づいて、図３０に示す処理ノードデータパス追出し設定処理手順に従って、ローカル変数テーブル９０、入力メッセージテーブル９１、出力メッセージテーブル９２、処理ノードテーブル９３、処理ノードトークンテーブル９４上の各レコードのうち、制御系の処理ノードに対応する各レコードのデータパス追出しフラグをそれぞれ「FALSE」に設定する（ＳＰ３２）。
【００９８】
すなわちＣＰＵ１１は、まず、図３１（Ａ）に示すように、入力メッセージテーブル９１上のデータパス追出しフラグが「FALSE」のレコードについて、当該レコードの入力変数名又は一時入力変数名の少なくともいずれか一方と対応するローカル変数テーブル９０上のレコードのデータパス追出しフラグを「FALSE」に更新する（ＳＰ４０）。
【００９９】
続いてＣＰＵ１１は、図３１（Ｂ）に示すように、出力メッセージテーブル９２上のデータパス追出しフラグが「FALSE」のレコードについて、当該レコードの出力変数名と対応するローカル変数テーブル９０上のレコードのデータパス追出しフラグを「FALSE」に更新する（ＳＰ４１）。
【０１００】
次いで、ＣＰＵ１１は、図３１（Ｃ）に示すように、遷移条件ノードトークンテーブル９６を参照して、当該遷移条件ノードトークンテーブル９４に登録された遷移条件ノードトークンに対応するローカル変数テーブル９０上のレコードのデータパス追出しフラグを「FALSE」に更新する（ＳＰ４２）。
【０１０１】
この後ＣＰＵ１１は、図３２（Ａ）に示すように、ローカル変数テーブル９０を参照して、データパス追出しフラグが「FALSE」に設定されている各ローカル変数について、処理ノードトークンテーブル９４上の対応するレコードのデータパス追出しフラグを「FALSE」に更新する（ＳＰ４３）。
【０１０２】
さらにＣＰＵ１１は、図３２（Ｂ）に示すように、処理ノードトークンテーブル９４を参照して、データパス追出しフラグが「FALSE」に設定されているレコードの処理ノードＩＤと同じ処理ノードＩＤが登録された処理ノードテーブル９３上のレコードのデータパス追出しフラグを「FALSE」に更新する（ＳＰ４４）。
【０１０３】
続いてＣＰＵ１１は、図３２（Ｃ）に示すように、処理ノードテーブル９３を参照して、データパス追出しフラグが「FALSE」の処理ノードのレコードについて、その処理ノードの処理ノードＩＤと同じ処理ノードＩＤが登録された処理ノードトークンテーブル９４上のレコードのデータパス追出しフラグを「FALSE」に更新する（ＳＰ４５）。
【０１０４】
次いでＣＰＵ１１は、図３３（Ａ）に示すように、処理ノードトークンテーブル９４を参照して、データパス追出しフラグが「FALSE」の処理ノードトークンについて、対応するローカル変数テーブル９０上のレコードのデータパス追出しフラグを「FALSE」に更新する（ＳＰ４６）。
【０１０５】
さらにＣＰＵ１１は、図３３（Ｂ）に示すように、ローカル変数テーブル９０を参照して、データパス追出しフラグが「FALSE」に設定されたエントリの変数名と同じ入力変数名又は一時入力変数名が登録された入力メッセージテーブル９１のレコードのデータパス追出しフラグを「FALSE」に更新する。またＣＰＵ１１は、これと併せて、入力メッセージテーブル９１上のそのときデータパス追出しフラグを「FALSE」に更新したレコードの「接続先チャネル名」欄９１Ｃに格納されたチャネル名と同じチャネル名が格納された当該入力メッセージテーブル９１上のレコードを検索し、そのようなレコードが存在するときには、そのレコードのデータパス追出しフラグを「FALSE」に設定する（ＳＰ４７）。
【０１０６】
この後ＣＰＵ１１は、図３３（Ｃ）に示すように、入力メッセージテーブル９１を参照して、データパス追出しフラグが「FALSE」のレコードの入力変数名及び一時入力変数名の少なくとも一方と同じ変数名が登録されたローカル変数テーブル９０上のレコードのデータパス追出しフラグを「FALSE」に更新する（ＳＰ４８）。
【０１０７】
続いてＣＰＵ１１は、図３４（Ａ）に示すように、ローカル変数テーブル９０を参照して、データパス追出しフラグが「FALSE」に設定されたレコードの変数名と同じ出力変数名が登録された出力メッセージテーブル９２上のレコードのデータパス追出しフラグを「FALSE」に更新する。またＣＰＵ１１は、これと併せて、出力メッセージテーブル９２上のそのときデータパス追出しフラグを「FALSE」に更新したレコードの「接続先チャネル名」欄９２Ｄに格納されたチャネル名と同じチャネル名が格納された当該出力メッセージテーブル９２上のレコードを検索し、そのようなレコードが存在するときには、そのレコードのデータパス追出しフラグを「FALSE」に設定する（ＳＰ４９）。
【０１０８】
次いでＣＰＵ１１は、図３４（Ｂ）に示すように、出力メッセージテーブル９２を参照して、データパス追出しフラグが「FALSE」に設定されたレコードの出力変数名と同じ変数名が登録されたローカル変数テーブル９０上のレコードのデータパス追出しフラグを「FALSE」に更新する（ＳＰ５０）。
【０１０９】
この後ＣＰＵ１１は、すべてのデータパス抑止設定が完了したか否かを判断する（ＳＰ５１）。具体的に、ＣＰＵ１１は、このステップＳＰ５１において、そのときのステップＳＰ４３〜ステップＳＰ５０までの処理でいずれかの内部テーブルのいずれかのレコードのデータ追出しフラグを「FALSE」に設定したか否かを判断する。そしてＣＰＵ１１は、この判断において否定結果を得るとステップＳＰ４３に戻り、この後ステップＳＰ５１において肯定結果を得るまで同様の処理を繰り返す（ＳＰ４３〜ＳＰ５１−ＳＰ４３）。
【０１１０】
そしてＣＰＵ１１は、やがてステップＳＰ５１において肯定結果を得ると、この処理ノードパス追出し設定処理を終了する。
【０１１１】
（２−４−４）データパス階層生成処理
他方、ＣＰＵ１１は、図２４について上述したデータパスシェア処理のステップＳＰ１２に進むと、データパス階層生成部８３（図１３）を呼び出し、このデータパス階層生成部８３と、当該データパス階層生成部８３の下位階層に存在する処理ノード統合部８７（図１３）、入力メッセージ再構成部８８（図１３）及び出力メッセージ再構成部８９（図１３）とに基づいて、図３５に示すデータパス階層生成処理を実行する。
【０１１２】
すなわちＣＰＵ１１は、図２４のデータパス処理のステップＳＰ１２に進むと、処理ノード統合部８７を呼び出し、この処理ノード統括部８７に基づいて、各コマンド階層のデータ系処理を格納するためのデータパス階層（図４の４１を参照）を設計データベース１８上に生成し、このデータパス階層に各コマンド階層から分離したデータ系ビヘイビアを移動させる（ＳＰ６０）。
【０１１３】
続いてＣＰＵ１１は、入力メッセージ再構成部８８を呼び出し、この入力メッセージ再構成部８８に基づいて、入力メッセージテーブル９１上でデータパス追出しフラグが「TRUE」のメッセージをデータパス階層に入力する（ＳＰ６１）。
【０１１４】
またＣＰＵ１１は、出力メッセージ再構成部８９を呼び出し、この出力メッセージ再構成部８９に基づいて、出力メッセージテーブル９２上でデータパス追出しフラグが「TRUE」のメッセージをデータパス階層に入力する（ＳＰ６２）。
【０１１５】
ここで図３６は、図３５のステップＳＰ６０におけるＣＰＵ１１の具体的な処理内容を示すフローチャートである。
【０１１６】
ＣＰＵ１１は、図２４のデータパス処理のステップＳＰ１２に進むと、この図３６に示す処理ノード統合処理を開始し、まず、処理ノードテーブル９３（図２０）を参照し、当該処理ノードテーブル９３上のデータパス追出しフラグが「TRUE」のレコードの処理ノード情報を抽出する（ＳＰ７０）。具体的にはＣＰＵ１１は、かかる処理ノード情報として、対応するレコードのコマンド階層、ステート名及びステートアクション名を抽出する。
【０１１７】
またＣＰＵ１１は、これと併せて、出力メッセージテーブル９２（図１８）を参照し、当該出力メッセージテーブル９２上のデータパス追出しフラグが「TRUE」のレコードの出力メッセージ情報を抽出する（ＳＰ７０）。具体的にＣＰＵ１１は、かかる出力メッセージ情報として、対応するレコードのコマンド階層、ステート名及びステートアクション名を抽出する。
【０１１８】
続いてＣＰＵ１１は、図３７に示すように、設計データベース１８上の排他グループ１００内にデータパス階層１０１を新規生成すると共に、ステップＳＰ７０において処理ノードテーブル９３から抽出した処理ノード情報と、出力メッセージテーブル９２から抽出した出力メッセージ情報とに基づいて、排他グループ１００内の各コマンド階層１０２Ａ，１０２Ｂからデータパス階層１０１に内部制御フラグを送信するためのチャネル（以下、これらを内部制御フラグ用チャネルと呼ぶ）１０３Ａ，１０３Ｂを生成する。またＣＰＵ１１は、データパス階層１０１内にステート１０４を１つ生成すると共に、内部制御フラグに対応したステートアクション１０５Ａ，１０５Ｂをこのステート内に生成する（ＳＰ７１）。
【０１１９】
次いでＣＰＵ１１は、ローカル変数テーブル９０（図１５）からデータ追出しフラグが「TRUE」に設定されたレコードの変数名、型及び初期値をローカル変数情報として抽出し、抽出したローカル変数情報に基づいて、対応するローカル変数をデータパス階層１０１内において定義する。この際、ＣＰＵ１１は、コマンド階層１０２Ａ，１０２Ｂ間で同名重複しているローカル変数を統合し、共通化する。またこの際、ＣＰＵ１１は、ローカル変数のスコープを考慮して、スコープが「Unit」である場合にはかかるローカル変数をデータパス階層１０１に定義し、スコープが「ステート」である場合にはかかるローカル変数をデータパス階層１０１内に生成した対応するステート１０４内に定義する（ＳＰ７２）。
【０１２０】
次いでＣＰＵ１１は、処理ノードテーブル９３からデータパス追出しフラグが「TRUE」に設定された処理ノードをデータパス階層１０１内の対応するステートアクション１０５Ａ，１０５Ｂに移行する。またＣＰＵ１１は、生成した処理ノードについて、対応するコマンド階層、ステート及びステートアクションから設定データベース１８上の処理ノードを削除する（ＳＰ７３）。
【０１２１】
この後ＣＰＵ１１は、各コマンド階層１０２Ａ，１０２Ｂからデータパス階層１０１への該当する内部制御フラグ用チャネル１０３Ａ，１０３Ｂを介した接続を行う。なお、上述のようにコマンド階層１０２Ａ，１０２Ｂからデータパス階層１０１に移行させた処理ノードを実行していたステートアクション１０５Ａ，１０５Ｂについての内部制御フラグは「１」、それ以外は「０」とする。
【０１２２】
一方、図３８は、図３５のステップＳＰ６１におけるＣＰＵ１１の具体的な処理内容を示すフローチャートである。
【０１２３】
ＣＰＵ１１は、データパス階層生成処理のステップＳＰ６１に進むと、この図３８に示す入力メッセージ再構成処理を開始し、まず、入力メッセージテーブル９１（図１６）を参照して、データパス追出しフラグが「TRUE」に設定されたレコード（入力メッセージ）情報を抽出する（ＳＰ８０）。
【０１２４】
続いてＣＰＵ１１は、ステップＳＰ８０において情報を抽出した入力メッセージについて、図３９に示すように、設計データベース上でコマンド階層からデータパス階層への張替えを行なう（ＳＰ８１）。
【０１２５】
他方、図４０は、図３５のステップＳＰ６２におけるＣＰＵ１１の具体的な処理内容を示すフローチャートである。
【０１２６】
ＣＰＵ１１は、データパス階層生成処理のステップＳＰ６２に進むと、この図４０に示す出力メッセージ再構成処理を開始し、まず、出力メッセージテーブル９２（図１８）を参照して、データパス追出しフラグが「TRUE」に設定されたレコード（出力メッセージ）の情報を抽出する（ＳＰ９０）。
【０１２７】
続いてＣＰＵ１１は、ステップＳＰ９０において情報を抽出した出力メッセージについて、図３９に示すように、設計データベース１８上でコマンド階層からデータパス階層への張替えを行なう（ＳＰ９１）。
【０１２８】
以上のような処理の結果、図３９に示すような新たな設計データベース１８が生成される。そしてこの設計データベース１８が高位合成されることにより、図４１に示すような構造を有するＲＴＬで記述されたＨＤＬのソースコードが生成されることになる。
【０１２９】
（３）本実施の形態の効果
以上のように本実施の形態によるＬＳＩ設計装置１では、高位合成処理の前処理として各コマンド３４を制御系ビヘイビアとデータ系ビヘイビアとに分離するため、カウンタ回路や比較器などの制御系資源と、データレジスタやアドレスレジスタ、データ演算器などのデータ系資源とが分離されて設計される。かくするにつき、最終的に得られる回路構造の可読性や保守性を高め、品質の高い回路設計を行なうことができる。
【０１３０】
また本実施の形態によるＬＳＩ設計装置１では、上述のように制御系ビヘイビアから分離した各コマンド３４のデータ系ビヘイビアを１つのビヘイビアにまとめるようにしているため、高位合成処理の際に複数のステートに跨ってデータパス論理の中でのリソースシェアを行なうことができる。かくするにつき、最終的に得られる回路構造の規模を格段的に削減することができる。
【０１３１】
（４）他の実施の形態
なお上述の実施の形態においては、本発明をストレージ用途のＬＳＩの設計に適したＬＳＩ設計装置１に適用するようにした場合について述べたが、本発明はこれに限らず、この他種々の回路設計に用いる設計装置に広く適用することができる。
【０１３２】
また上述の実施の形態においては、ビヘイビアレベルで記述された複数のコマンドを制御系ビヘイビアと、データ系ビヘイビアとに分離するコマンド分離部と、各コマンドのデータ系ビヘイビアを統合する統合部とを図１３のように構成されたデータパスシェアプログラム１４及びＣＰＵ１１により構成するようにした場合について述べたが、本発明はこれに限らず、かかるコマンド分離部及び統合部の構成としては、この他種々の構成を広く適用することができる。
【０１３３】
さらに上述の実施の形態においては、各コマンドのデータ系ビヘイビアを１つのビヘイビアに統合するようにした場合について述べたが、本発明はこれに限らず、かかる複数のデータ系ビヘイビアを２つ又は３つなど、複数のビヘイビアに統合するようにしても良い。
【産業上の利用可能性】
【０１３４】
本発明は、種々の回路設計に用いる設計装置に広く適用することができる。
【図面の簡単な説明】
【０１３５】
【図１】本実施の形態によるＬＳＩ設計装置の概略構成を示すブロック図である。
【図２】従来のＲＴＬを用いたＬＳＩ設計手法の概要を示す概念図である。
【図３】ビヘイビアレベルを用いたＬＳＩ設計手法の概要を示す概念図である。
【図４】本実施の形態によるＬＳＩ設計手法の概要を示す概念図である。
【図５】本実施の形態によるＬＳＩ設計手法を用いた設計作業のうち、高位合成処理までの作業の流れを示すフローチャートである。
【図６】ＵＭＬ表記したビヘイビアモデルを示すシーケンス図である。
【図７】ＵＭＬ表記したビヘイビアモデルを示すシーケンス図である。
【図８】設計データベース１８上でのビヘイビアモデルの構造例を示す概念図である。
【図９】受信ブロックの説明に供する概念図である。
【図１０】送信ブロックの説明に供する概念図である。
【図１１】図８のコマンドＡの説明に供する状態遷移図である。
【図１２】設計データベースの構造を示すクラス図である。
【図１３】データパスシェアプログラムのモジュール構成を示すクラス図である。
【図１４】内部テーブルの説明に供するクラス図である。
【図１５】ローカル変数テーブルを示す図表である。
【図１６】入力メッセージテーブルを示す図表である。
【図１７】入力メッセージテーブルのメッセージ属性判定仕様を示す図表である。
【図１８】出力メッセージテーブルを示す図表である。
【図１９】出力メッセージテーブルのメッセージ属性判定仕様を示す図表である。
【図２０】処理ノードテーブルを示す図表である。
【図２１】処理ノードトークンテーブルを示す図表である。
【図２２】遷移条件ノードテーブルを示す図表である。
【図２３】遷移条件ノードトークンテーブルを示す図表である。
【図２４】データパスシェア処理の説明に供するフローチャートである。
【図２５】初期テーブル生成処理の説明に供するフローチャートである。
【図２６】処理ノードテーブルの初期化処理の説明に供する図である。
【図２７】処理ノードトークンテーブルの初期化処理の説明に供する図である。
【図２８】遷移条件ノードトークンテーブルの初期化処理の説明に供する図である。
【図２９】データパス追出し設定処理の説明に供するフローチャートである。
【図３０】処理ノードデータパス追出し設定処理の説明に供するフローチャートである。
【図３１】処理ノードデータパス追出し設定処理の説明に供する概念図である。
【図３２】処理ノードデータパス追出し設定処理の説明に供する概念図である。
【図３３】処理ノードデータパス追出し設定処理の説明に供する概念図である。
【図３４】処理ノードデータパス追出し設定処理の説明に供する概念図である。
【図３５】データパス階層生成処理の説明に供するフローチャートである。
【図３６】処理ノード統合処理の説明に供するフローチャートである。
【図３７】処理ノード統合処理の説明に供する概念図である。
【図３８】入力メッセージ再構成処理の説明に供するフローチャートである。
【図３９】入力メッセージ再構成処理及び出力メッセージ再構成処理の説明に供する概念図である。
【図４０】出力メッセージ再構成処理の説明に供するフローチャートである。
【図４１】図３９のビヘイビアモデルを高位合成処理した後の構成の説明に供する概念図である。
【符号の説明】
【０１３６】
１……ＬＳＩ設計装置、２……コンピュータ本体、３……操作端末、４……ディスプレイ、１０……メモリ、１１……ＣＰＵ、１２……外部記憶装置、１３……仕様モデル生成ツール、１４……データパスシェアプログラム、１５，３５……高位合成ツール、１６……回路図ビューア、１８……設計データベース、１９……回路ライブラリ、２０……設計データ、３２，３８……論理合成ツール、４０……データ系ブロック、４１……コマンド階層、５０……マスタ、５１Ａ，５１Ｂ，６３Ａ，６３Ｂ……コマンド、６３，１００……排他グループ、６１Ａ〜６１Ｈ，６６Ａ〜６６Ｊ，６７Ａ〜６７Ｌ，６８Ａ〜６８Ｄ，６９Ａ，６９Ｂ，１０３Ａ，１０３Ｂ……チャネル、７０Ａ〜７０Ｅ，１０４……ステート、７１Ａ〜７１Ｋ，１０５Ａ，１０５Ｂ……ステートアクション、８０……データパスシェア制御部、８１……初期テーブル生成部、８２……データパス追出し設定部、８３……データパス階層生成部、８４……入力メッセージ初期化部、８５……出力メッセージ初期化部、８６……処理ノードデータパス追出し部、８７……処理ノード統合部、８８……入力メッセージ再構成部、８９……出力メッセージ再構成部、９０……ローカル変数テーブル、９１……入力メッセージテーブル、９２……出力メッセージテーブル、９３……処理ノードテーブル、９４……処理ノードトークンテーブル、９５……遷移条件ノードテーブル、９６……遷移条件ノードトークンテーブル、１０１……データパス階層。
【図１】
0004945360.tif 000002
【図２】
0004945360.tif 000003
【図３】
0004945360.tif 000004
【図４】
0004945360.tif 000005
【図５】
0004945360.tif 000006
【図６】
0004945360.tif 000007
【図７】
0004945360.tif 000008
【図８】
0004945360.tif 000009
【図９】
0004945360.tif 000010
【図１０】
0004945360.tif 000011
【図１１】
0004945360.tif 000012
【図１２】
0004945360.tif 000013
【図１３】
0004945360.tif 000014
【図１４】
0004945360.tif 000015
【図１５】
0004945360.tif 000016
【図１６】
0004945360.tif 000017
【図１７】
0004945360.tif 000018
【図１８】
0004945360.tif 000019
【図１９】
0004945360.tif 000020
【図２０】
0004945360.tif 000021
【図２１】
0004945360.tif 000022
【図２２】
0004945360.tif 000023
【図２３】
0004945360.tif 000024
【図２４】
0004945360.tif 000025
【図２５】
0004945360.tif 000026
【図２６】
0004945360.tif 000027
【図２７】
0004945360.tif 000028
【図２８】
0004945360.tif 000029
【図２９】
0004945360.tif 000030
【図３０】
0004945360.tif 000031
【図３１】
0004945360.tif 000032
【図３２】
0004945360.tif 000033
【図３３】
0004945360.tif 000034
【図３４】
0004945360.tif 000035
【図３５】
0004945360.tif 000036
【図３６】
0004945360.tif 000037
【図３７】
0004945360.tif 000038
【図３８】
0004945360.tif 000039
【図３９】
0004945360.tif 000040
【図４０】
0004945360.tif 000041
【図４１】
0004945360.tif 000042