(57)【要約】【課題】  従来、人手で行ってきた既存回路のパイプライン化を自動化する。【解決手段】  ハードウェアモデル変換システム（１０）は、論理合成ツール（３３）と、ハードウェアモデル変換プログラム（３２）を含む。論理合成ツール（３３）は、ＨＤＬ記述回路（５１）を論理合成して中間データ（５２）を出力する。中間データ（５２）に記述されている一つのassign文には、一つのassignセルが対応付けられる。ハードウェアモデル変換プログラム（３２）は、複数のassignセルの回路接続関係を示す論理構造テーブル（４０１）を作成する。ハードウェアモデル変換プログラム（３２）は、論理構造テーブル（４０１）を参照して、同一の論理深さを有するassignセルが同一のパイプラインステージに属するようにＨＤＬ記述回路（５１）をパイプライン構造にモデル変換する。【選択図】      図１
2007087215.tif 000002
【特許請求の範囲】
【請求項１】
ＨＤＬ記述回路を論理合成して得られた中間データに記述されている一つのassign文を一つのassignセルに対応付けた場合に、複数のassignセルが相互に接続している回路接続構造をコンピュータシステムが解析する処理に用いられるデータ構造であって、
前記assignセルに一対一に対応付けられたレコードを複数備え、
前記レコードは、
前記中間データの入力ポートから前記レコードに対応付けられたassignセルに至る回路接続経路上に並ぶassignセルの最大数を示す論理深さを格納するためのデータ部と、
前記レコードに対応付けられたassignセルに接続するassignセルを指し示すためのポインタと、を含むデータ構造。
【請求項２】
コンピュータシステムに、
ＨＤＬ記述回路を論理合成して得られた中間データを入力するステップと、
前記中間データの構文を解析し、請求項１に記載のデータ構造を出力するステップと、
を実行させるためのコンピュータプログラム。
【請求項３】
請求項２に記載のコンピュータプログラムであって、前記コンピュータシステムに、
同一の論理深さを有するassignセルが同一のパイプラインステージに属するように前記ＨＤＬ記述回路をパイプライン構造にモデル変換するステップを更に実行させるためのコンピュータプログラム。
【請求項４】
請求項２に記載のコンピュータプログラムであって、前記コンピュータシステムに、
前記ＨＤＬ記述回路をパイプライン構造に変換した場合に、各パイプラインステージ間のインターフェース信号線のビット数を解析するステップを更に実行させるためのコンピュータプログラム。
【請求項５】
請求項２に記載のコンピュータプログラムであって、前記コンピュータシステムに、
前記ＨＤＬ記述回路を言語変換して出力するステップを更に実行させるためのコンピュータプログラム。
【請求項６】
ＨＤＬ記述回路を論理合成して得られた中間データを入力するステップと、
前記中間データの構文を解析し、請求項１に記載のデータ構造を出力するステップと、
を備える、ハードウェアモデル変換方法。
【請求項７】
請求項６に記載のハードウェアモデル変換方法であって、
同一の論理深さを有するassignセルが同一のパイプラインステージに属するように前記ＨＤＬ記述回路をパイプライン構造にモデル変換するステップを更に備える、ハードウェアモデル変換方法。
【請求項８】
請求項６に記載のハードウェアモデル変換方法であって、
前記ＨＤＬ記述回路をパイプライン構造に変換した場合に、各パイプラインステージ間のインターフェース信号線のビット数を解析するステップを更に備える、ハードウェアモデル変換方法。
【請求項９】
請求項６に記載のハードウェアモデル変換方法であって、
前記ＨＤＬ記述回路を言語変換して出力するステップを更に備える、ハードウェアモデル変換方法。
【請求項１０】
ＨＤＬ記述回路を論理合成して得られた中間データを読み込むための中間データ読み込み部と、
前記中間データの構文を解析し、請求項１に記載のデータ構造を作成するためのデータ構造作成部と、
を備える、ハードウェアモデル変換システム。
【請求項１１】
請求項１０に記載のハードウェアモデル変換システムであって、
同一の論理深さを有するassignセルが同一のパイプラインステージに属するように前記ＨＤＬ記述回路をパイプライン構造にモデル変換するパイプラインモデル生成部を更に備える、ハードウェアモデル変換システム。
【請求項１２】
請求項１０に記載のハードウェアモデル変換システムであって、
前記ＨＤＬ記述回路をパイプライン構造に変換した場合に、各パイプラインステージ間のインターフェース信号線のビット数を解析する解析部を更に備える、ハードウェアモデル変換システム。
【請求項１３】
請求項１０に記載のハードウェアモデル変換システムであって、
前記ＨＤＬ記述回路を言語変換して出力する言語変換部を更に備える、ハードウェアモデル変換システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はハードウェアモデルの変換処理に用いられるデータ構造、コンピュータプログラム、方法、及びシステムに関する。
【背景技術】
【０００２】
近年のＬＳＩ開発においては、ＬＳＩ回路の大規模化が進んでおり、設計期間を短縮するために過去の回路設計資産を流用して新規の回路設計を行う手法が主流である。新規の回路設計では、動作周波数を向上させるための手法として、例えば、特開平８−４４７７３号公報に示すように、既存の回路設計資産をパイプライン化する手法が知られている。特に、ＲＡＩＤ(Redundant Arrays of Independent Inexpensive Disks）構成された複数のディスクドライブを備えるディスクアレイシステムにおいては、論理段数の大きいエラー訂正回路が必要となるので、エラー訂正回路をパイプライン化することは、性能向上を図る上で有効である。また、従来では、ＬＳＩ設計の設計言語として、ＨＤＬ（Hardware Description Language）が主流であったが、ＬＳＩ回路の大規模化に伴い、より抽象度の高いシステムレベル記述現言語（SpecC／SystemC）に移行しつつある。特開２００４−２１８４１号公報には、ＲＴＬのVerilogＨＤＬソースを入力し、計算機上で実行可能なプログラムに変換する手法が開示されている。
【特許文献１】特開２００４−２１８４１号公報
【特許文献２】特開平８−４４７７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、既存の回路設計資産のパイプライン化を人手で行うには、回路アルゴリズムを理解して、パイプライン回路を新たに再モデリングしなければならず、過去の設計資産をそのまま流用した設計は困難である。同様に、ＨＤＬで記述された既存の回路設計資産を人手でシステムレベル記述言語に書き直すためには、やはり回路アルゴリズムを理解して再モデリングしなければならず、過去の設計資産をそのまま流用した設計は困難である。既存回路の再モデリングを人手で行うと、書き直しや検証工数の増大によるバグの混入により、品質が低下するという問題が生じる。
【０００４】
そこで、本発明は上述の問題を解決し、従来、人手で行ってきた既存回路のパイプライン化やハードウェア記述言語の変換を自動化することを課題とする。本発明の更なる目的は、後述する実施の形態の記載から明らかになるであろう。
【課題を解決するための手段】
【０００５】
上記の課題を解決するため、本発明では、複数のassignセルが相互に接続している回路接続構造をコンピュータシステムが解析する処理に用いられるデータ構造を生成する。ＨＤＬ記述回路を論理合成して得られた中間データに記述されている一つのassign文には、一つのassignセルが対応付けられる。データ構造は、assignセルに一対一に対応付けられたレコードを複数備える。各レコードは、中間データの入力ポートからレコードに対応付けられたassignセルに至る回路接続経路上に並ぶassignセルの最大数を示す論理深さを格納するためのデータ部と、レコードに対応付けられたassignセルに接続するassignセルを指し示すためのポインタとを含む。
【０００６】
ハードウェアモデル変換を行うためのコンピュータシステムは、上述したデータ構造を参照し、同一の論理深さを有するassignセルが同一のパイプラインステージに属するようにＨＤＬ記述回路をパイプライン構造にモデル変換する。
【０００７】
コンピュータシステムは、ＨＤＬ記述回路をパイプライン構造に変換した場合に、上述したデータ構造を利用することにより、各パイプラインステージ間のインターフェース信号線のビット数を解析することもできる。
【０００８】
コンピュータシステムは、上述のデータ構造を基にＨＤＬの構文を変換することで、ＨＤＬ記述回路をシステムレベル記述言語へ言語変換して出力することもできる。
【発明の効果】
【０００９】
本発明によれば、従来、人手で行ってきた既存回路のパイプライン化やハードウェア記述言語の変換を自動化することができる。
【発明を実施するための最良の形態】
【００１０】
本実施形態では、ＨＤＬ記述回路をパイプライン分割し、或いは言語変換するための前処理として、ＨＤＬ記述回路の回路接続構造を示す論理構造テーブルを作成する。ＨＤＬ記述回路を論理合成して得られた中間データに記述されている一つのassign文には、一つのassignセルが対応付けられる。論理構造テーブルは、複数のassignセルが相互に接続している回路接続構造をコンピュータシステムが解析するために用いられる。論理構造テーブルは、assignセルに一対一に対応付けられたレコードを複数備える。各レコードは、中間データの入力ポートからレコードに対応付けられたassignセルに至る回路接続経路上に並ぶassignセルの最大数を示す論理深さを格納するためのデータ部と、レコードに対応付けられたassignセルに接続するassignセルを指し示すためのポインタとを含む。
【００１１】
ハードウェアモデル変換システムは、論理構造テーブルを参照して、同一の論理深さを有するassignセルが同一のパイプラインステージに属するようにＨＤＬ記述回路をパイプライン構造にモデル変換する。また、ハードウェアモデル変換システムはＨＤＬ記述回路をパイプライン構造に変換した場合に、論理構造テーブルを利用することにより各パイプラインステージ間のインターフェース信号線のビット数を解析することもできる。また、ハードウェアモデル変換システムは、論理構造テーブルを基にＨＤＬの構文を変換することで、ＨＤＬ記述回路をシステムレベル記述言語へ言語変換して出力することもできる。
【００１２】
ここで、本明細書で使用される主な用語について説明する。
「ＨＤＬ」とは、電気回路を記述するためのプログラム言語の総称である。ＨＤＬの代表的なものとして、ＶＨＤＬやVerilogＨＤＬなどが知られている。
「システムレベル記述言語」とは、ハードウェアとソフトウェアの区別なく、アーキテクチャを記述できる言語である。システムレベル記述言語の代表的なものとして、Ｃ言語、Ｃ＋＋言語、ハードウェア記述用にＣ言語を拡張したSystemC又はSpecC、VerilogＨＤＬを拡張したSystem-Verilogなどが知られている。
「パイプライン」とは、ハードウェアの命令演算処理能力を高めるための手段として、内部動作を複数のパイプラインステージに分割して互いに独立して動作するようにしたハードウェア構成である。各パイプラインステージは、並列に処理を実行することが可能であり、命令演算が一部オーバーラップして実行されることにより、高速処理が可能になる。「パイプラインステージ」とは、パイプライン構造によって区切られた命令演算の一つの処理単位である。
「レイテンシー」とは、命令演算を開始してから完了するまでに要する時間、又はサイクル数をいう。
「同時処理文」とは、時間的に並列に動作する処理を記述した文である。
「逐次処理」とは、プログラムの先頭から順に処理することをいう。
「論理合成」とは、レジスタ・トランスファー・レベルのＨＤＬソースコードをゲートレベルのネットリストに自動変換する手法をいう。
「論理深さ」とは、入力ポートから任意のassignセルに至る回路接続経路上に並ぶassignセルの最大数をいう。
【実施例】
【００１３】
以下、各図を参照しながら本発明の実施例について説明する。実施例は、特許請求の範囲を限定するものではなく、また実施例で説明されている特徴の全てが発明の解決手段に必須であるとは限らない。
【００１４】
図１は本実施例に係るハードウェアモデル変換システム１０の概略構成を示す。ハードウェアモデル変換システム１０は、ユーザインターフェース２０、主記憶装置３０、ＣＰＵ４０、及び外部記憶装置５０を備える。ハードウェアモデル変換システム１０は、パーソナルコンピュータ、ワークステーション、メインフレームコンピュータ等である。
【００１５】
ハードウェアモデル変換システム１０には、操作端末１１が接続されている。操作端末１１は、キーボード、マウス等の入力デバイスである。ユーザは、操作端末１１を入力操作してユーザ設定ファイル５５を編集し、或いはユーザインターフェース２０を介して、ハードウェアモデル変換システム１０に論理合成指示、パイプライン分割指示、言語変換指示等を与える。ユーザインターフェース２０は、例えば、ハードウェアモデル変換システム１０が装備するディスプレイに表示されるＧＵＩ（Graphical User Interface）である。ユーザインターフェース２０は、ユーザにユーザ設定ファイル５５の入力操作環境を提供するとともに、解析レポート５６を表示する機能を有する。
【００１６】
主記憶装置３０は、オペレーティングシステム３１、ハードウェアモデル変換プログラム３２、及び論理合成ツール３３を格納する。一方、外部記憶装置５０は、ＨＤＬ記述回路５１、中間データ５２、ＨＤＬ記述回路５３、及びシステムレベル記述回路５４を格納する。
【００１７】
論理合成ツール３３は、ユーザからの論理合成指示を受けて、ＨＤＬ記述回路５１を中間データ５２に変換する。ハードウェアモデル変換プログラム３２は、中間データ５２の回路接続関係を解析し、この接続関係をリスト構造として論理構造テーブル４０１に展開する。
【００１８】
ユーザ設定ファイル５５にパイプライン分割が指示されている場合には、ハードウェアモデル変換プログラム３２は、ＨＤＬ記述回路５１をパイプライン構造へ変換する。
【００１９】
ユーザ設定ファイル５５に出力言語が指定されている場合には、ハードウェアモデル変換プログラム３２は、再モデリングした出力回路をユーザ指定言語に変換して出力する。例えば、出力言語指定がＨＤＬであるならば、ハードウェアモデル変換プログラム３２は、ＶＨＤＬで記述されたＨＤＬ記述回路５１をVerilogＨＤＬで記述されたＨＤＬ記述回路５３に変換し、或いはVerilogＨＤＬで記述されたＨＤＬ記述回路５１をＶＨＤＬで記述されたＨＤＬ記述回路５３に変換する。出力言語指定がシステムレベル記述言語であるならば、ハードウェアモデル変換プログラム３２は、ＶＨＤＬ又はVerilogＨＤＬで記述されたＨＤＬ記述回路５１をシステムレベル記述言語（SpecC又はSystemC等）で記述されたシステムレベル記述回路５４に変換する。
【００２０】
ユーザ設定ファイル５５に回路解析が指示されている場合には、ハードウェアモデル変換プログラム３２は、解析結果を解析レポート５６に出力する。
【００２１】
尚、ハードウェアモデル変換プログラム３２は、主記憶装置３０に格納される他、コンピュータ読み取り可能な記録媒体に記録されていてもよい。記録媒体として、例えば、光記録媒体（ＣＤ−ＲＡＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−Ｒ、ＰＤディスク、ＭＤディスク、ＭＯディスク等の光学的にデータの読み取りが可能な記録媒体）や、磁気記録媒体（フレキシブルディスク、磁気カード、磁気テープ等の磁気的にデータの読み取りが可能な記録媒体）、或いはメモリ素子（ＤＲＡＭ等の半導体メモリ素子、ＦＲＡＭ等の強誘電体メモリ素子等）などが好適である。
【００２２】
図２はハードウェアモデル変換システム１０の機能ブロックを示す。この機能ブロックは、ハードウェアモデル変換プログラム３２とＣＰＵ４０とが共働することによって実現される。
【００２３】
ハードウェアモデル変換プログラム３２は、制御部３０１、ユーザ設定読み込み部３０２、論理構造テーブル作成部３０３、中間データ読み込み部３０４、ポート抽出部３０５、assign文抽出部３０６、論理構造解析部３０７、パイプラインモデル生成部３０８、パイプラインステージ計算部３０９、assign文ステージ抽出部３１０、ステージインターフェース抽出部３１１、解析部３１２、言語変換部３１３、ＶＨＤＬ出力部３１４、及びＣ言語出力部３１５として機能する。
【００２４】
制御部３０１は、ユーザ設定読み込み部３０２、論理構造テーブル作成部３０３、パイプラインモデル生成部３０８、及び言語変換部３１３を制御する。ユーザ設定読み込み部３０２は、ユーザ設定ファイル５５を読み込む。
【００２５】
論理構造テーブル作成部３０３は、中間データ読み込み部３０４、ポート抽出部３０５、assign文抽出部３０６、及び論理構造解析部３０７を制御し、後述する論理構造テーブル作成処理（Ｓ１２）を実行することにより、論理構造テーブル４０１を作成する。中間データ読み込み部３０４は、中間データ５２を読み込む。ポート抽出部３０５は、ポートテーブル４０３を作成する。ポートテーブル４０３は、後述するinputテーブル４０３Ａ、inputテーブル４０３Ｂ、outputテーブル４０３Ｃ、及びoutputテーブル４０３Ｄを示す。assign文抽出部３０６は、assign文要素テーブル４０４を作成する。論理構造解析部３０７は、ポートテーブル４０３とassign文要素テーブル４０４とに基づいて、論理構造テーブル４０１を作成する。
【００２６】
パイプラインモデル生成部３０８は、パイプラインステージ計算部３０９、assign文ステージ抽出部３１０、ステージインターフェース抽出部３１１、及び解析部３１２を制御し、後述するパイプラインモデル生成処理（Ｓ１３）を実行することにより、パイプラインモデルの生成処理を行う。パイプラインステージ計算部３０９は、ステージ境界テーブル４０７を作成する。assign文ステージ抽出部３１０は、論理構造テーブル４０１とステージ境界テーブル４０７とに基づいて、assign文ステージテーブル４０９を作成する。assign文ステージテーブル４０９は、後述するassign文ステージテーブル４０９Ａ〜４０９Ｄを総称する。ステージインターフェース生成部３１１は、論理構造テーブル４０１、ステージ境界テーブル４０７、及びassign文ステージテーブル４０９に基づいて、インターフェーステーブル４１３を作成する。解析部３１２は、解析レポート５６を作成する。
【００２７】
言語変換部３１３は、ＶＨＤＬ出力部３１４、及びＣ言語出力部３１５を制御し、後述する言語変換処理（Ｓ１４）を実行することにより、出力回路の言語変換を行う。ＶＨＤＬ出力部３１４は、各種テーブル４１７を参照して、入力回路の言語をＨＤＬに変換して、ＨＤＬ記述回路５３を出力する。各種テーブル４１７とは、論理構造テーブル４０１、ポートテーブル４０３、assign文要素テーブル４０４、ステージ境界テーブル４０７、assign文ステージテーブル４０９、及びインターフェーステーブル４１３を総称する。Ｃ言語出力部３１４は、各種テーブル４１７を参照して、入力回路の言語をシステムレベル記述言語に変換して、システムレベル記述回路５４を出力する。
【００２８】
次に、図３を参照しながら、本実施形態に係るハードウェアモデル変換方法の全体処理フローについて説明する。
【００２９】
ＨＤＬ記述回路５１は、再モデリングの入力となる。ＨＤＬ記述回路５１としては、例えば、既存の回路設計資産を用いることができる。ＨＤＬ記述回路５１を再モデリングの入力として用いるには、ＨＤＬ記述回路５１が以下の制約（Ａ）〜（Ｄ）を満たす必要がある。
（Ａ）順序回路（フリップフロップ、ラッチ等）を有しない組み合わせ回路であること。
（Ｂ）inoutポートを有しないこと。
（Ｃ）階層構造を有していてもよいが、ソースコードには、最下位のファンクションまで出力されていること。
（Ｄ）論理合成可能な記述であること。
【００３０】
論理合成ツール３３は、ＨＤＬ記述回路５１を入力して、論理合成を行い、VerilogＨＤＬで記述された中間データ５２を出力する（Ｓ１１）。中間データ５２は、ブール式形式の論理回路である。論理合成ツール３３は、論理合成の際に以下の処理を行う。
（１）階層構造のフラット化。
（２）ブール式の平坦化。
（３）ブール式の論理圧縮。
【００３１】
ハードウェアモデル変換プログラム３２は、中間データ５２を読み取り、以下の処理を行って、論理構造テーブル４０１を作成する（Ｓ１２）。
（４）入出力ポート及びassign文の抽出。
（５）ポート及びワイヤの接続関係を解析し、この接続関係をリスト構造として論理構造テーブル４０１に展開する。
（６）論理構造テーブル４０１の各レコードに論理深さを設定する。
【００３２】
ハードウェアモデル変換プログラム３２は、論理構造テーブル４０１を読み取り、ＨＤＬ記述回路５１をパイプライン構造に変換する上で指標となる解析情報を解析レポート５６に出力する（Ｓ１３）。ユーザは、解析レポート５６の出力結果を参考に、ＨＤＬ記述回路５１をパイプライン構造に分割するための最適な設定をユーザ設定ファイル５５に入力する。ハードウェアモデル変換プログラム３２は、ユーザ設定ファイル５５に設定されたパイプライン分割指示に基づいて、以下の処理を行う（Ｓ１３）。
（７）レイテンシー又は論理深さから回路内部のステージ分割。
（８）論理構造テーブル４０１に関連付けられたassign文のグルーピング。
（９）パイプラインステージ間のインターフェース生成。
【００３３】
ハードウェアモデル変換プログラム３２は、ユーザ設定ファイル５５に設定された出力言語の指示（システムレベル記述言語又はＨＤＬ）に基づいて、以下の処理を行う（Ｓ１４）。
（１０）同時処理文から逐次処理可能な実行文への並び替え。
（１１）出力言語の変換。
【００３４】
（１）〜（１１）の処理を経て、ユーザは、パイプライン構造に変換された出力回路を得る。出力回路は、ユーザの言語指定により、ＨＤＬ記述回路５３又はシステムレベル記述回路５４として生成される。
【００３５】
次に、各図を参照しながら、本実施形態に係るハードウェアモデル変換方法の詳細について説明する。説明の便宜上、ＨＤＬ記述回路５１として、ＶＨＤＬで記述された２ビット全加算器を例に説明する。図４は、ＶＨＤＬで記述された２ビット全加算器のＨＤＬ記述回路５１を示す。
【００３６】
図５は論理合成処理（Ｓ１１）を示すフローチャートである。論理合成ツール３３は、ＨＤＬ記述回路５１を読み込み（Ｓ２１）、論理式を１階層にまとめて、階層構造をフラット化する（Ｓ２２）。次に、論理合成ツール３３は、論理レベルの平坦化を行い、中間変数を除去し、ブール式の分配法則を適用して全ての中間括弧を消去する（Ｓ２３）。次に、論理合成ツール３３は、１ビットのブール式レベルで論理圧縮を行い（Ｓ２４）、この論理圧縮したブール式をVerilogＨＤＬフォーマットで出力し（Ｓ２５）、中間データ５２を生成する。中間データ５２は、便宜上、中間Verilogファイルと別称されることもある。
【００３７】
図６は中間データ５２を示す。中間データ５２は、上述した制約（Ａ）〜（Ｄ）の下で組み合わせ回路のブール式レベルで出力されるため、以下の前提を有する。
（Ｅ）ポート宣言部の属性は、inputポートとoutputポートとの２つのみであり、inoutポートは有しない。
（Ｆ）宣言部において、内部信号で使用される属性はwireのみであり、reg、及びparameterは使用されない。
（Ｇ）回路記述部において使用される構文は、assign文のみであり、function、always文、及びmodule呼び出しは使用されない。
（Ｈ）回路記述部における演算は、全て論理演算（ブール演算）のみである。
【００３８】
ここで、中間データ５２に含まれるassign文について説明を加える。assign文は、継続的代入を意味し、主として、演算子の結合で記述できる簡単な組み合わせ回路の定義に用いられる。本実施形態では、assign文を一つの回路セルと見立て、この回路セルを「assignセル」と称する。例えば、中間データ５２に含まれる、assign n14=(〜n11＆〜n15)という記述は、図７に示すassignセルに置き換えることができる。中間データ５２においては、assign文の左辺は、assignセルの出力に相当し、assign文の右辺は、assignセルの入力に相当する。ある一つのワイヤに対しては、唯一のassignセルがアサインされる。
【００３９】
図８は論理構造テーブル作成処理（Ｓ１２）を示すフローチャートである。ハードウェアモデル変換プログラム３２は、中間データ５２の読み込み処理（Ｓ３１）、入出力ポートを抽出する処理（Ｓ３２）、assign文要素を抽出する処理（Ｓ３３）、入力ポートを挿入する処理（Ｓ３４）、assignセルの接続関係を解析する処理（Ｓ３５）、assignセルの論理深さを解析する処理（Ｓ３６）、及び擬似出力ポートを挿入する処理（Ｓ３７）を順次実行する。
【００４０】
次に、各図を参照しながら論理構造テーブル作成処理の詳細について説明を加える。ハードウェアモデル変換プログラム３２は、中間データ読み込み処理（Ｓ３１）において、中間データ５２を一行ずつリードしていき、assign文のパートと、それ以外のパートに分類する。assign文のパートにおいて、途中改行されている場合もあるので、行末子"；"をキーに内部補正して１行のassign文として格納する。中間データ５２から抽出されたassign文のパートは、図９に示すように、assign文テーブル４０２に格納される。
【００４１】
ハードウェアモデル変換プログラム３２は、入出力ポート抽出処理（Ｓ３２）において、中間データ５２から入力ポートと出力ポートとをそれぞれ抽出し、図１０（Ａ）乃至同図（Ｄ）に示すテーブルに格納する。同図（Ａ）は、ポート形式のinputテーブル４０３Ａを示す。同図（Ｂ）は、ビット分割形式のinputテーブル４０３Ｂを示す。同図（Ｃ）は、ポート形式のoutputテーブル４０３Ｃを示す。同図（Ｄ）は、ビット分割形式のoutputテーブル４０３Ｄを示す。尚、inputテーブル４０３Ａ、及びoutputテーブル４０３Ｃにおけるportnameは、ポート名称を意味し、bitsizeは、ビット長さを意味する。
【００４２】
ハードウェアモデル変換プログラム３２は、assign文要素抽出処理（Ｓ３３）において、assign文テーブル４０２からassign文の要素を抽出する。assign文の要素とは、assign文の右辺と左辺のそれぞれを構成するワイヤである。抽出されたassign文の要素は、図１１に示すassign文要素テーブル４０４に格納される。同テーブル４０４のtbindexはassign文の出現順番を意味し、distはassign文の左辺の信号名を意味し、opsizeはassign文の右辺に接続する信号数を意味し、op[0]〜op[15]はassign文の右辺に接続する信号名を意味する。assign文の右辺に接続する信号が存在しない場合には、op[1]〜op[15]のうち該当する欄にNULL値がセットされる。尚、op[0]〜op[15]で示す右辺に接続する信号名の数の制限はなく、本実施例では１６個として説明する。
【００４３】
中間データ５２から抽出された全てのワイヤ及びポートは、assign文の左辺値distとして出力され、且つassign文の右辺値opとして入力される接続関係にあることがわかる。この回路接続関係は、図１２に示すように表現される。上述した論理構造テーブル４０１はassignセルの接続関係を示す。
【００４４】
図１３は論理構造テーブル４０１のテーブル構造を規定するレコード形式４００を示す。同図に示すように、レコード形式４００は、ltindex，tbindex，dist，attribute，depth，source_size，source[0]〜source[15]を格納するためのテーブル構造を有する。ltindexは、論理構造テーブル４０１のインデックス番号を示す。tbindexは、assign文要素テーブル４０４のインデックス番号を示す。distは、assign文の左辺の信号名を示す。attributeは、distの信号特性を示す。信号特性として、input，output，wire，dmyoutがある。dmyoutは、擬似出力ポートの信号特性である。depthは、論理深さを示す。source_sizeは、assign文の右辺に接続する信号数を示す。source[0]〜source[15]は、assign文の右辺に接続する信号名を示す。
【００４５】
ハードウェアモデル変換プログラム３２は、入力ポート挿入処理（Ｓ３４）において、回路の最上流に位置する入力ポートの情報をinputテーブル４０３Ｂから抽出し、論理構造テーブル４０１に格納する。図１４は、入力ポートの情報が格納された論理構造テーブル４０１を示す。入力ポートは、assign文の左辺に存在することはないので、tbindexには、NULL値がセットされる。distには、inputテーブル４０３Ｂから抽出された入力ポート名がセットされる。attributeには、"input"がセットされる。入力ポートは、回路の最上流に位置するため、depth及びsource_sizeは"０"にセットされる。また、source[0]〜source[15]には、NULL値がセットされる。
【００４６】
ハードウェアモデル変換プログラム３２は、接続関係解析処理（Ｓ３５）において、論理構造テーブル４０１にassign文のパートをセットする。まず、初期処理として、assign文要素テーブル４０４から抽出された情報を論理構造テーブル４０１にセットする。図１５は、assign文のパートがセットされ、初期化処理が施された後の論理構造テーブル４０１を示す。論理構造テーブル４０１の各レコードのtbindexには、assign文要素テーブル４０４の各レコードのtbindexがセットされる。論理構造テーブル４０１の各レコードのdistには、assign文要素テーブル４０４の各レコードのdistがセットされる。論理構造テーブル４０１の各レコードのattributeは、現時点では、ワイヤであるのか、或いは出力ポートであるのかを判断できないので、デフォルト値として"wire"が暫定的にセットされる。
【００４７】
次に、ハードウェアモデル変換プログラム３２は、論理構造テーブル４０１の各レコードの各source[0]〜source[15]に値をセットするための前準備として、図１６に示すように、論理構造テーブル４０１のltindex順にレコードをフェッチする。そして、assign文要素テーブル４０４のレコードのうち、いまフェッチした論理構造テーブル４０１のレコードのtbindex値と同一のtbindex値を有するレコードを参照する。
【００４８】
そして、図１７に示すように、ハードウェアモデル変換プログラム３２は、いま参照しているassign文要素テーブル４０４のレコードのop[0]〜op[15]の各要素について、op[0]〜op[15]の値と同一の値を有するdistを論理構造テーブル４０１の各レコードのdistの中から検索する。
【００４９】
そして、ハードウェアモデル変換プログラム３２は、assign文要素テーブル４０４のレコードのop[0]〜op[15]の値と同一の値を有するdistを論理構造テーブル４０１のレコードの中から検索できたならば、図１８に示すように、ヒットしたdistを格納する論理構造テーブル４０１のレコードのインデックス番号（ltindex）を、最初にフェッチした論理構造テーブル４０１のsource[0]〜source[15]にセットし、更にsource_sizeをインクリメントする。
【００５０】
ハードウェアモデル変換プログラム３２は、この処理を論理構造テーブル４０１の全てのレコードについて実施することにより、各レコードの各source[0]〜source[15]に値をセットすることができる。図１９は、全てのレコードの各source[0]〜source[15]に値がセットされた後の論理構造テーブル４０１を示す。
【００５１】
ハードウェアモデル変換プログラム３２は、論理深さ解析処理（Ｓ３６）において、論理構造テーブル４０１の各レコードのdepthをセットする。まず、depthに仮論理深さTMP_DEPTHをセットする。TMP_DEPTH＝０を初期値とする。
【００５２】
そして、図２０に示すように、論理構造テーブル４０１の各テーブルをltindex順にフェッチする。
【００５３】
そして、図２１に示すように、フェッチした論理構造テーブル４０１のレコードの各source[0]〜source[15]の値と同一の値を有するltindexのレコードのdepthをチェックする。
【００５４】
そして、図２２に示すように、フェッチした論理構造テーブル４０１のレコードの各source[0]〜source[15]の値と同一の値を有するltindexのレコードのdepthが、いまフェッチしたレコードのTMP#DEPTHに一致していれば、フェッチしたレコードのdepthにTMP_DEPTH＋１をセットする。一方、両者が一致しなければ、何もしない。
【００５５】
この処理を論理構造テーブル４０１のltindex順に行っていき、各レコードのTMP_DEPTHをインクリメントしていく。論理構造テーブル４０１の全てのレコードの論理深さが確定するまでこの処理を繰り返す。全てのレコードのdepthをセットし終わった時点でのTMP_DEPTHの値が最大論理深さになる。
【００５６】
図２３は最大論理深さが確定した論理構造テーブル４０１を示す。
【００５７】
出力ポートは、回路の最下位に位置するので、本来であれば、出力ポートの論理深さは最大論理深さになるはずであるが、上述の処理Ｓ３１〜Ｓ３６を経た後の論理構造テーブル４０１では、一部の出力ポートの論理深さは、最大論理深さにはならず、中間の論理深さになる場合がある。例えば、図２３に示す論理構造テーブル４０１の最大論理深さは１５であるが、出力ポートz[0]の論理深さは７であり、出力ポートz[1]の論理深さは１２である。
【００５８】
これを補正するために、ハードウェアモデル変換プログラム３２は、擬似出力ポート挿入処理（Ｓ３７）において、論理構造テーブル４０１に擬似出力ポートのレコードを挿入する。ハードウェアモデル変換プログラム３２は、図２４に示すように、outputテーブル４０３Ｄを参照して、outputテーブル４０３Ｄに格納されているポート名称と同一の名称を有するdistを論理構造テーブル４０１から検索する。
【００５９】
そして、ハードウェアモデル変換プログラム３２は、図２５に示すように、論理構造テーブル４０１のレコードの中で出力ポートの名称と同一のdistを格納するレコードを検索できたならば、そのレコードのattributeを"output"に変更し、更に、論理構造テーブル４０１の最後尾に擬似出力ポートのレコードを挿入する。擬似出力ポートは、assign文要素テーブル４０４には存在しないため、擬似出力ポートのレコードのtbindexには、NULL値をセットする。擬似出力ポートのレコードのdistには、出力ポート名に対応した擬似出力ポート名をセットし、attributeには、"dmyout"をセットし、depthには、「最大論理深さ＋１」をセットし、source[0]には、出力ポートのltindexをセットし、source_sizeには、「１」をセットする。この処理を出力ポートについて実行する。
【００６０】
図２６は擬似出力ポートのレコードの情報が確定した論理構造テーブル４０１を示す。
【００６１】
図２７は論理構造テーブル４０１をリスト構造４０５に変形した例を示す。リスト構造４０５のレコードは、ltindex，tbindex，dist，attribute，depth，source_size，source[0]〜source[15]を格納する。各レコード内のsourceは、当該sourceの値と同一の値をltindexに有するレコードを指し示すポインタである。論理構造テーブル４０１は、各レコード間を中間データ５２の接続関係に従って接続した変形リスト構造であると云える。
【００６２】
図２８は中間データ５２のassignセルの接続関係を回路図として見た場合における回路構造４０６を示す。論理構造テーブル４０１の各レコードは、assignセルを構成するポート又はセルに１対１で対応する。distは、assignセルの出力信号名である。sourceは、ポート又はassignセルの入力信号名である。depthは、回路上流側から任意のassignセルに至るまでに通過するassignセルの数の最大値である。入力ポートから出力ポートに至る最も長い経路がクリティカルパスである。論理深さは、物理的な回路構造では、論理段数に相当するが、論理合成ツール３３では、論理合成の際に物理的なゲートにマッピングしないので、論理深さと論理段数とが必ずしも１対１に対応するものではない。同じ論理深さのassignセル同士は接続関係を持たないので、並列に実行することができる。
【００６３】
図２９はパイプラインモデル生成処理（Ｓ１３）を示すフローチャートである。ハードウェアモデル変換プログラム３２は、ユーザ設定ファイル５５を読み取り（Ｓ４１）、動作モードを判定する（Ｓ４２）。動作モードがパイプラインモード、又は分割モードであるならば、ハードウェアモデル変換プログラム３２は、ステージ論理深さ計算処理（Ｓ４３）、パイプラインステージ計算処理（Ｓ４４）、及びパイプライン分割処理（Ｓ４５）を実行する。一方、動作モードが解析モードであるならば、ハードウェアモデル変換プログラム３２は、パイプライン解析処理（Ｓ４６）を実行する。
【００６４】
次に、各図を参照しながらパイプラインモデル生成処理の詳細について説明を加える。ハードウェアモデル変換プログラム３２は、ユーザ設定読み込み処理（Ｓ４１）において、ユーザ設定ファイル５５を読み込んで、パイプライン解析処理又はパイプライン分割処理に必要なパラメータを決定する。
【００６５】
図３０はユーザ設定ファイル５５の書式を示す。conv_model_modeで設定される動作モードを以下に示す。
（１）ノーマルモード
conv_model_mode=normal
ノーマルモードでは、ＨＤＬ記述言語からシステムレベル言語への言語変換のみが行われる。パイプライン分割は行われない。
（２）パイプラインモード
conv_model_mode=pipeline
パイプラインモードでは、conv_model_latencyとconv_logic_constraintとの制約から、Ｎステージのパイプライン分割が行われる。図３１はパイプラインモードの概要を示す。
（３）分割モード
conv_model_mode=divide
分割モードでは、ステージ分割数を「２」に固定してパイプライン分割が行われる。回路を二分割する箇所を示す論理深さは、conv_div_depthによって指定される。図３２は分割モードの概要を示す。
（４）解析モード
conv_model_mode=analyze
解析モードでは、入力回路をある論理深さで二つのステージに分割した場合における、ステージ間のインターフェース信号線のビット数を、それぞれの論理深さに対応付けて解析レポート５６に出力する。
（５）出力言語指定
conv_model_type=VHDL
VerilogＨＤＬで記述された入力回路をＶＨＤＬに言語変換して出力する。
conv_model_type=Verilog
ＶＨＤＬで記述された入力回路をVerilogＨＤＬに言語変換して出力する。
conv_model_type=SystemC
ＶＨＤＬ又はVerilogＨＤＬで記述された入力回路をSystemCに言語変換して出力する。
conv_model_type=SpecC
ＶＨＤＬ又はVerilogＨＤＬで記述された入力回路をSpecCに言語変換して出力する。
（６）conv_logic_constraint
conv_logic_constraintは、１ステージあたりの最大論理深さの上限値を示す。１ステージあたりの論理深さがconv_logic_constraintを超えると、エラーとして、ユーザに通知される。conv_logic_constraintは、「論理深さ制約」と別称されることもある。
（７）conv_model_latency
conv_model_latencyは、ステージ分割数を示す。例えば、conv_model_latency=Nの設定により、入力回路はＮステージに分割される。
（８）conv_div_depth
conv_div_depthは、分割モードで入力回路を二分割する際の分割位置、即ち、論理深さを示す。
【００６６】
ハードウェアモデル変換プログラム３２は、図１２に示す回路構造を、１ステージあたりの論理深さをパラメータとして、図３３のようにステージ分割する。図３３は、１ステージあたりの論理深さを「４」に設定してパイプライン分割した回路接続構造を示す。
【００６７】
ハードウェアモデル変換プログラム３２は、ステージ論理深さ計算処理（Ｓ４３）において、パイプラインモードで入力回路を複数のステージに分割する際に、１ステージあたりの論理深さを計算する。ハードウェアモデル変換プログラム３２は、論理構造テーブル４０１より得た最大論理深さから、次式を用いて、１ステージあたりの論理深さを計算する。
１ステージあたりの論理深さ＝｛（最大論理深さ−２）／（conv_model_latency）｝＋１
ここで、右辺の「−２」は、入力ポートと擬似出力ポートを差し引くことを意味する。１ステージあたりの論理深さがconv_logic_constraintを超えると、エラーとして、ユーザに通知される。
【００６８】
ハードウェアモデル変換プログラム３２は、パイプラインステージ計算処理（Ｓ４４）において、図３５に示すステージ境界テーブル４０７を作成する。ステージ境界テーブル４０７は、図３４に示すレコード形式４０８を有する。図３４において、stindexはステージ番号を示し、minは上流側ステージ境界を示し、maxは下流側ステージ境界を示す。
【００６９】
ステージ境界テーブル４０７の各レコードにセットされる値は、次式を用いて計算される。
（１）パイプラインモードの場合
上流側ステージ境界＝（論理深さ制約×ステージ番号）＋１
下流側ステージ境界＝｛論理深さ制約×（ステージ番号＋１）｝＋１
但し、論理構造テーブル４０１（擬似出力ポートを含む）の最大論理深さが下流側ステージ境界により小さい場合は、次式を用いる。
下流側ステージ境界＝最大論理深さ
上述の計算式を適用して上流側ステージ境界、及び下流側ステージ境界を計算すると、図３５に示すステージ境界テーブル４０７が得られる。
尚、論理深さ「０」の入力ポートと、最大論理深さ「１６」の擬似出力ポートは、パイプラインステージには含まれない。
【００７０】
（２）分割モードの場合
分割モードの場合は、ステージ分割数は「２」に限定されており、conv_div_depthの値によって、分割箇所が指定されるので、ステージ境界テーブル４０７の各レコードにセットされる値は、次式を用いて計算される。
ステージ０の場合
stindex＝０
上流側ステージ境界＝１
下流側ステージ境界＝conv_div_depth＋１
ステージ１の場合
stindex＝１
上流側ステージ境界＝conv_div_depth＋１
下流側ステージ境界＝最大論理深さ
【００７１】
図３６はパイプライン分割処理（Ｓ４５）を示すフローチャートである。ハードウェアモデル変換プログラム３２は、assign文ステージ抽出処理（Ｓ５１）、インターフェースステージ抽出処理（Ｓ５２）、抽出インターフェースのマージ処理（Ｓ５３）、及びインターフェース生成処理（Ｓ５４）を実行する。
【００７２】
ハードウェアモデル変換プログラム３２は、assign文ステージ抽出処理（Ｓ５１）において、assign文がどのパイプイランステージに属するのかをチェックする。本明細書では各パイプラインステージに属するassign文を格納するテーブルを「assign文ステージテーブル」と称する。
【００７３】
図３７はassign文ステージテーブルのテーブル構造を規定するレコード形式４１０を示す。同図に示すように、レコード形式４１０は、ltindex，tbindex，stageを格納するためのテーブル構造を有する。ltindexは、assign文の論理構造テーブル４０１のインデックス番号（ltindex）を示す。tbindexは、assign文の論理構造テーブル４０１のtbindexを示す。stageは、パイプラインステージ番号を示す。
【００７４】
assign文ステージ抽出処理は、以下の手順で実行される。まず、ハードウェアモデル変換プログラム３２は、図３８に示すように、ステージ境界テーブル４０７の各レコードをフェッチし、論理構造テーブル４０１の論理深さ（depth）を参照しながら、ステージ境界テーブル４０７の上流側ステージ境界（min）より深く、且つ下流側ステージ境界（max）より浅い論理深さを有するレコードを検索する。論理深さが上流側ステージ境界（min）より深く、且つ下流側ステージ境界（max）より浅いレコードが論理構造テーブル４０１の中から検索できたならば、図３９に示すように、そのレコードのltindex及びtbindexと、ステージ境界テーブル４０７のstindexとを、assign文ステージテーブルレコード形式４１０に格納する。この処理を全てのパイプラインステージについて繰り返し実行し、assign文ステージテーブルを作成する。
【００７５】
図４０（Ａ）乃至図４０（Ｄ）に示すように、assign文ステージテーブルは、パイプラインステージ毎に作成するものとする。図４０（Ａ）は、パイプラインステージ０のassign文ステージテーブル４０９Ａを示す。図４０（Ｂ）は、パイプラインステージ１のassign文ステージテーブル４０９Ｂを示す。図４０（Ｃ）は、パイプラインステージ２のassign文ステージテーブル４０９Ｃを示す。図４０（Ｄ）は、パイプラインステージ３のassign文ステージテーブル４０９Ｄを示す。
【００７６】
ハードウェアモデル変換プログラム３２は、インターフェースステージ抽出処理（Ｓ５２）において、各パイプラインステージ間のインターフェースとなる、assignセル間の接続を抽出する。図４１に示す中間データ回路において、例えば、パイプラインステージ１に注目すると、パイプラインステージ１の上流側からパイプラインステージ１に入る入力インターフェースと、パイプラインステージ１からパイプラインステージ１の下流側へ出る出力インターフェースとを抽出することができる。
【００７７】
但し、パイプラインステージ１の上流側からパイプラインステージ１を通過して、パイプラインステージ１の下流側に抜け出るassignセル同士の接続関係や、パイプラインステージ１の上流側に位置する複数のassignセルからからパイプラインステージ１内の同一のassignセルに接続する一対多の接続関係などがあるので、注意を要する。
【００７８】
各パイプラインステージ内のassignセルから上流側を見て、当該assignセルの入力に接続するassignセルが存在する場合、当該assignセルとこれに接続するassignセルとの接続関係がインターフェースになる。本明細書では、このようにして抽出された接続関係を格納するテーブルを「インターフェース抽出テーブル」と称する。
【００７９】
図４２はインターフェース抽出テーブルのテーブル構造を規定するレコード形式４１２を示す。同図に示すように、レコード形式４１２は、ltindex，dist，depth，find_stageを格納するためのテーブル構造を有する。ltindexは、論理構造テーブル４０１のインデックス番号を示す。distは、論理構造テーブル４０１に格納されたassignセル名（dist）を示す。depthは、論理構造テーブル４０１に格納された論理深さ（depth）を示す。find_stageは、distをassignセル名に有するassignに接続することが見つかったassignセルが所在するパイプラインステージの番号を示す。
【００８０】
インターフェースステージ抽出処理は、以下の手順で実行される。まず、ハードウェアモデル変換プログラム３２は、図４３に示すように、ステージ境界テーブル４０７のレコードをステージ上流側から順にフェッチする。そして、いまフェッチしたレコードのパイプラインステージに対応したassign文ステージテーブル４０９Ｂを参照する。
【００８１】
そして、図４４に示すように、ハードウェアモデル変換プログラム３２は、assign文ステージテーブル４０９Ｂの各レコードを順にフェッチし、assign文ステージテーブル４０９Ｂのlitndexが指し示す論理構造テーブル４０１のレコードをフェッチする。そして、図４５に示すように、ハードウェアモデル変換プログラム３２は、いまフェッチした論理構造テーブル４０１のレコードに格納されているsource[0]〜source[15]の値と同一の値を有するltindexのレコードを選択する。
【００８２】
そして、図４６に示すように、ハードウェアモデル変換プログラム３２は、いま選択したレコードの論理深さが、最初にフェッチしたステージ境界テーブル４０７の上流側ステージ境界（min）より小さければ、論理構造テーブル４０１のltindex，dist，depth，assign文ステージテーブル４０９Ｂのstageの値を、インターフェース抽出テーブル４１１の各レコードのltindex，dist，depth，find_stageに格納する。この処理をステージ境界テーブル４０７の全てのパイプラインステージについて繰り返し実行し、インターフェース抽出テーブル４１１を作成する。
【００８３】
しかし、図４７に示すように、この処理だけでは、擬似出力ポートに接続するoutputポートのインターフェースを抽出することはできない。擬似出力ポートは、パイプラインステージの境界外なので、上流側との接続が見えないためである。
【００８４】
そこで、擬似出力ポートに接続するインターフェースを次のようにして抽出する。図４８に示すように、ハードウェアモデル変換プログラム３２は、ステージ境界テーブル４０７の最終ステージのレコードをフェッチし、論理構造テーブル４０１の最大論理深さを格納する擬似出力ポートのレコードを選択する。
【００８５】
そして、図４９に示すように、いまフェッチした論理構造テーブル４０１のレコードのsource[0]〜source[15]の値と同一の値を有するltindexのレコードを論理構造テーブル４０１の中から選択する。そして、選択したレコードの論理深さが、ステージ境界テーブル４０７の上流側ステージ境界（min）よりも小さければ、選択した論理構造テーブル４０１のレコードのltindex，dist，depthをインターフェース抽出テーブル４１１のltindex，dist，depthに格納する。上述の処理を経て、インターフェース抽出テーブル４１１が完成する。図５０は、最終形のインターフェース抽出テーブル４１１を示す。
【００８６】
ここで、パイプラインステージ間のインターフェースを抽出することの意味について言及する。インターフェース抽出テーブル４１１は、当該テーブル４１１の各レコードに格納されているdistによって特定されるassignセルが、どのパイプラインステージから参照されているか（言い換えれば、下流に位置するどのパイプラインステージに接続されているか）を示している。例えば、図５１に示すように、パイプラインステージ０に属するn20のassignセルは、パイプラインステージ１に属するn19のassignセルと、パイプラインステージ２に属するn33のassignセルとに接続されている。図５０に示すインターフェース抽出テーブル４１１は、図５１に示す接続関係を示している。
【００８７】
さて、インターフェースステージ抽出処理（Ｓ５２）が終了した段階のインターフェース抽出テーブル４１１の中身は、図５１に示すように、ある一つのassignセルが他の二つのassignセルに接続されるという具合に、重複している。
【００８８】
本明細書では、説明の便宜上、各々のパイプラインステージを一つのモジュールと見立てて「パイプラインステージモジュール」と称する場合がある。インターフェース抽出テーブル４１１の情報は、どのassignセルがどの下流のパイプラインステージから参照されているかを表しているが、この情報は、パイプラインステージモジュールの入出力インターフェースの情報に置き換えることができる。
【００８９】
例えば、図５２に示すように、パイプラインステージモジュール０のassignセル（n20）は、パイプラインステージモジュール１のassignセル（n19）と、パイプラインステージモジュール２のassignセル（n33）に参照されている（接続されている）が、assignセル（n20）がassignセル（n33）に参照された時点で、assignセル（n20）をassignセル（n33）に接続するためのoutputポートをパイプラインステージモジュール１に生成しなければならないことが必然的に決定する。
【００９０】
このことから、インターフェース抽出テーブル４１１においては、下流のパイプラインステージモジュールから参照されているassignセルと、そのassignセルを参照している最下流のパイプラインステージモジュールとが判明すれば、各パイプラインステージモジュールに生成すべきインターフェースが一意的に定まることが理解できる。
【００９１】
また、パイプラインステージモジュール０から参照しているassignセルは、入力ポートであり、パイプラインステージモジュール間のインターフェースにはなりえない。
【００９２】
ハードウェアモデル変換プログラム３２は、抽出インターフェースのマージ処理（Ｓ５３）において、図５３に示すように、インターフェース抽出テーブル４１１のレコードのうち複数のパイプラインステージモジュールから参照されているレコードについて、最下流のパイプラインステージモジュールに参照されているレコードにマージする。
【００９３】
図５４はマージ処理後のインターフェース抽出テーブル４１１を示す。
【００９４】
ハードウェアモデル変換プログラム３２は、インターフェース生成処理（Ｓ５４）において、マージ処理後のインターフェース抽出テーブル４１１を用いて、各パイプラインステージモジュール間のインターフェースポートを生成する。本明細書では、インターフェース生成処理において生成されたインターフェース情報を格納するテーブルを「インターフェーステーブル」と称する。
【００９５】
図５５はインターフェーステーブルのテーブル構造を規定するレコード形式４１４を示す。同図に示すように、レコード形式４１４は、stindex，input_size，input_ltindex，output_size，output_ltindexを格納するためのテーブル構造を有する。stindexは、パイプラインステージ数を示す。input_sizeは、入力インターフェース数を示す。input_ltindexは、入力インターフェースとなるassignセルの論理構造テーブル４０１上のインデックスを示す。output_sizeは、出力インターフェース数を示す。output_ltindexは、出力インターフェースとなるassignセルの論理構造テーブル４０１上のインデックスを示す。
【００９６】
インターフェース生成処理は、以下の手順で実行される。まず、ハードウェアモデル変換プログラム３２は、図５６に示すように、初期化処理として、ステージ境界テーブル４０７に格納されているレコード数＋１個分のレコードをインターフェーステーブル４１３上に作成する。そして、インターフェーステーブル４１３の各レコードのinput_sizeとoutput_sizeのそれぞれを「０」に初期化し、stindexにインデックス番号をセットする。
【００９７】
そして、図５７に示すように、ハードウェアモデル変換プログラム３２は、インターフェース抽出テーブル４１１のレコードをチェックして、ステージ境界テーブル４０７を参照する。いまフェッチしたインターフェース抽出テーブル４１１のレコードの論理深さがステージ境界テーブル４０７上で管理されるパイプラインステージのうち、どのパイプラインステージに含まれるかをチェックする。
【００９８】
そして、いまフェッチしたインターフェース抽出テーブル４１１のレコードの論理深さを含むパイプラインステージが分かると、図５８に示すように、そのパイプラインステージのインデックス番号を示すステージ境界テーブル４０７上のstindexと同一の値をstindexに有するインターフェーステーブル４１３のレコードから、いまフェッチしたンターフェース抽出テーブル４１１のレコードのfind_stageの直前のパイプラインステージのインデックス番号を示すstindexの値と同一の値をstindexに有するインターフェーステーブル４１３のレコードのそれぞれのoutput_ltindexに、いまフェッチしたインターフェース抽出テーブル４１１のレコードのltindexをコピーして、更にoutput_sizeをインクリメントする。
【００９９】
あるパイプラインステージモジュールのoutputインターフェースは、そのまま次のパイプラインステージモジュールのinputインターフェースになるので、図５９に示すように、output_ltindexがセットされたインターフェーステーブル４１３のレコードの次のレコードのinput_indexに、先程、フェッチしたインターフェース抽出テーブル４１１のレコードのltindexをセットする。この処理をインターフェース抽出テーブル４１１の全てについて繰り返す。
【０１００】
図６０はインターフェーステーブル４１３の最終形を示す。インターフェーステーブル４１３のinput_ltindexとoutput_ltindexは、論理構造テーブル４０１のインデックス番号になるので、どのassignセルがどのパイプラインステージに参照されるのかは、明らかである。
【０１０１】
尚、パイプライン分割処理を行う際に、ユーザが分割条件をユーザ設定ファイル５５に入力する他に、解析レポート５６を基にハードウェアモデル変換プログラム３２が最適な分割条件をユーザに提示してもよい。最適な分割条件の例として、例えば、パイプラインステージ間のインターフェース信号線のビット数が少なくなる条件などがある。また、或いは予め設定された分割条件に従ってパイプライン分割してもよい。
【０１０２】
図６１はインターフェース生成処理によって生成されたパイプラインモジュール間のインターフェースを示す。
【０１０３】
図６２はパイプライン解析処理（Ｓ４６）を示すフローチャートである。パイプライン解析処理は、パイプライン分割をする上で参考となる回路情報をユーザに提供するための処理である。ハードウェアモデル変換プログラム３２は、論理構造テーブル４０１から得た入力回路の情報と、ユーザ設定ファイル５５より得た各種制約条件を収集して、以下の情報を出力する（Ｓ６１）。
（１）論理構造テーブル４０１の「最大論理深さ−２」（入力ポート及び擬似出力ポートを除く）
（２）パイプライン分割した場合の「レイテンシー数」（ユーザ指定値）
（３）パイプライン分割した場合の１パイプライステージあたりの「最大論理深さ」
（４）クリティカルパス
【０１０４】
次に、ハードウェアモデル変換プログラム３２は、Ｓ６２〜Ｓ６６を実行することにより、分割モードで２ステージに分割した場合におけるインターフェースビットサイズを計算する。
【０１０５】
具体的には、ハードウェアモデル変換プログラム３２は、分割位置を示す論理深さの初期値を「２」に設定し（Ｓ６２）、分割するパイプラインステージの論理深さを計算する（Ｓ６３）。この処理は、Ｓ４４のパイプラインステージ計算処理と同様である。
【０１０６】
次に、ハードウェアモデル変換プログラム３２は、パイプライン分割処理を行う（Ｓ６４）。この処理は、Ｓ４５のパイプライン分割処理と同様である。これにより、Ｓ６３で設定された論理深さでパイプライン分割した場合のインターフェースビットサイズを、インターフェーステーブル４１３のinput_size又はoutput_sizeから得ることができる。
【０１０７】
次に、ハードウェアモデル変換プログラム３２は、分割位置を示す論理深さをインクリメントし（Ｓ６５）、分割位置を示す論理深さが最大論理深さよりも浅いか否かをチェックする（Ｓ６６）。分割位置を示す論理深さが最大論理深さよりも浅い場合には（Ｓ６６；ＹＥＳ）、Ｓ６３の処理に戻る。
【０１０８】
一方、分割位置を示す論理深さが最大論理深さに一致する場合には（Ｓ６６；ＮＯ）解析レポート５６を出力する（Ｓ６７）。
【０１０９】
図６３は解析レポート５６の出力例を示す。同図において、TOTAL LOGIC DEPTHは、最大論理深さを示す。STADE LENGTHは、パイプラインステージ数を示す。STAGE LOGIC DEPTH MAXは、１ステージあたりの論理深さを示す。Critical Pathは、入力ポートから出力ポートに至る経路の中で最長の接続経路を示す。CUTPOINT|I/F Bit|は、パイプラインステージ間のインターフェース信号線のビット数を示す。ユーザは、解析レポート５６を参照することにより、パイプラインステージ間のインターフェース信号線のビット数が少なくなるように、パイプライン分割条件を設定することができる。パイプラインステージ間のインターフェース信号線のビット数は、少ない方が回路構成を簡略化できるため好ましい。
【０１１０】
図６４は出力言語をSpecCとする言語変換処理（Ｓ１４）を示すフローチャートである。ハードウェアモデル変換プログラム３２は、ユーザが編集したユーザ設定ファイル５５を読み取り、出力言語の指定として、conv_model_type=SpecCが設定されていることを検出すると、関数引数の宣言処理（Ｓ７１）、ローカル変数の宣言処理（Ｓ７２）、入力インターフェースとの接続処理（Ｓ７３）、assign文の出力処理（Ｓ７４）、及び出力インターフェースとの接続処理（Ｓ７４）を実行する。
【０１１１】
ハードウェアモデル変換プログラム３２はこれらの処理を実行することで、図７６乃至図７９に示すSpecCファイル４１５Ａ〜４１５Ｄを出力する。SpecCファイル４１５Ａは、パイプラインステージ０（第１ステージ）の関数を示す。SpecCファイル４１５Ｂは、パイプラインステージ１（第２ステージ）の関数を示す。SpecCファイル４１５Ｃは、パイプラインステージ２（第３ステージ）の関数を示す。SpecCファイル４１５Ｄは、パイプラインステージ３（最終ステージ）の関数を示す。
【０１１２】
ここで、関数引数の宣言処理（Ｓ７１）について説明する。出力言語をSpecCとする言語変換処理では、パイプラインステージモジュールを一つの関数と見立てて言語変換を行う。つまり、入力ポートは、値渡しの関数引き数、出力ポートは、参照渡しの関数引数として関数を定義する。関数名は、例えば、回路名に対応した名称を名付ける。
【０１１３】
図６５に示すように、ハードウェアモデル変換プログラム３２は、入力ポートとなる値渡しの関数引数を定義するためにインターフェーステーブル４１３を参照する。そして、インターフェーステーブル４１３のレコードのinput_sizeが０ならば、第１ステージであるパイプラインステージ０の値渡しの関数引数をSpecCファイル４１５Ａに定義するために、inputテーブル４０３Ａから入力ポート名とビットサイズを取得し、それに応じた引数をSpecCファイル４１５Ａに出力する。
【０１１４】
インターフェーステーブル４１３のレコードのinput_sizeが１以上ならば、パイプラインステージ１〜パイプラインステージ３の値渡しの関数引数をSpecCファイル４１５Ｂ〜４１５Ｄに定義するために、input_sizeのビットサイズを有する値渡しの引数をSpecCファイル４１５Ｂ〜４１５Ｄに出力する。
【０１１５】
図６６に示すように、ハードウェアモデル変換プログラム３２は、出力ポートとなる参照渡しの関数引数を定義するためにインターフェーステーブル４１３を参照する。そして、インターフェーステーブル４１３のレコードのoutput_sizeが０ならば、最終ステージであるパイプラインステージ３の値渡しの関数引数をSpecCファイル４１５Ｄに定義するために、outputテーブル４０３Ｃから出力ポート名とビットサイズを取得し、それに応じた参照渡しの関数引数をSpecCファイル４１５Ｄに出力する。
【０１１６】
インターフェーステーブル４１３のレコードのoutput_sizeが１以上ならば、パイプラインステージ０〜パイプラインステージ２の値渡しの関数引数をSpecCファイル４１５Ａ〜４１５Ｃに定義するために、output_sizeのビットサイズを有する参照渡しの引数をSpecCファイル４１５Ａ〜４１５Ｃに出力する。
【０１１７】
ローカル変数の宣言処理（Ｓ７２）では、ハードウェアモデル変換プログラム３２は、関数内部で使用されるローカル変数を宣言する。図６７に示すように、ハードウェアモデル変換プログラム３２は、中間データ５２の入力ポートと出力ポートに相当するローカル変数を、inputテーブル４０３Ａとoutputテーブル４０３Ｃから得たポート情報を基にSpecCファイル４１５Ａ〜４１５Ｄに出力する。
【０１１８】
次に、ハードウェアモデル変換プログラム３２は、中間データ５２のwireに相当するローカル変数を定義する。図６８に示すように、ハードウェアモデル変換プログラム３２はassign文ステージテーブル４０９Ａと論理構造テーブル４０１とを参照し、assign文ステージテーブル４０９Ａのltindexの値と同一の値を有するltindexのレコードを論理構造テーブル４０１から検索し、検索したレコードのattributeが"wire"ならば、１ビットサイズのローカル変数として、SpecCファイル４１５Ａに定義する。ハードウェアモデル変換プログラム３２は、SpecCファイル４１５Ｂ〜４１５Ｄについても、同様して、wireに相当するローカル変数を宣言する。
【０１１９】
次に、ハードウェアモデル変換プログラム３２は、パイプラインステージ１〜パイプラインステージ３の入力インターフェースとの値渡しに使用されるローカル変数を宣言する。図６９に示すように、ハードウェアモデル変換プログラム３２は、インターフェーステーブル４１３と論理構造テーブル４０１とを参照して、インターフェーステーブル４１３のレコードの中からパイプラインステージ１のレコードのinput_ltindexの値と同一の値を有するltindexのレコードを論理構造テーブル４０１から検索する。検索したレコードのattributeが"wire"ならば、１ビットサイズのローカル変数として、SpecCファイル４１５Ｂに定義する。ハードウェアモデル変換プログラム３２は、パイプラインステージ２，３の入力インターフェースとの値渡しに使用されるローカル変数についても、同様にして宣言する。
【０１２０】
次に、ハードウェアモデル変換プログラム３２は、パイプラインステージ０〜パイプラインステージ２の出力インターフェースとの値受け渡しに使用するローカル変数を宣言する。図７０に示すように、ハードウェアモデル変換プログラム３２は、インターフェーステーブル４１３を参照し、、パイプラインステージ０に対応するレコードのoutput_sizeが１以上であれば、output_size分のビットサイズのローカル変数をSpecCファイル４１５Ａ上で宣言する。パイプラインステージ１，２の出力インターフェースとの値受け渡しに使用するローカル変数についても、同様にして宣言する。
【０１２１】
次に、入力インターフェースとの接続処理（Ｓ７３）について説明する。ハードウェアモデル変換プログラム３２は、パイプラインステージ０では、中間データ５２の入力ポートとの接続処理を行い、パイプラインステージ１〜パイプラインステージ３では、入力インターフェースとの接続処理を行う。
【０１２２】
図７１に示すように、ハードウェアモデル変換プログラム３２は、インターフェーステーブル４１３のレコードを参照し、input_sizeが０ならば、第１ステージであるパイプラインステージ０に対応するレコードなので、inputテーブル４０３Ａを参照して、関数引数宣言処理（Ｓ７１）で出力されたinputポートの引数と、ローカル引数宣言処理（Ｓ７２）で宣言されたinputポートのローカル変数とを接続する（SpecCファイル４１５Ａを参照）。
【０１２３】
図７２に示すように、インターフェーステーブル４１３のレコードのinput_sizegが１以上ならば、ハードウェアモデル変換プログラム３２は、インターフェーステーブル４１３のinput_ltindexの値と同一の値を有するltindexのレコードを論理構造テーブル４０１の中から検索し、検索したレコードのdistに、関数引数宣言処理（Ｓ７１）で出力された入力インターフェース引数を１ビットずつビット分割して接続する（SpecCファイル４１５Ｂを参照）。
【０１２４】
次に、assign文の出力処理（Ｓ７４）について説明する。assign文の出力処理では、各々のSpecCファイル４１５Ａ〜４１５Ｄに中間データ５２のassign文が出力される。
【０１２５】
図７３に示すように、ハードウェアモデル変換プログラム３２は、assign文ステージテーブル４０９Ａ、ステージ境界テーブル４０７、論理構造テーブル４０１、及びassign文テーブル４０２を参照する。ハードウェアモデル変換プログラム３２は、assign文ステージテーブル４０９Ａのltindexの値と同一の値を有するltindexのレコードを論理構造テーブル４０１から検索する。そして、検索したレコードの論理深さがステージ境界テーブル４０７の上流側ステージ境界（min）と下流側ステージ境界（max）との間にある場合には、ハードウェアモデル変換プログラム３２は、論理構造テーブル４０１のレコードのtbindexが指し示すassign文テーブル４０２のassign文をSpecCファイル４１５Ａに出力する。SpecCファイル４１５Ａに出力されるassign文は、論理深さの小さい順とする。論理深さの浅い順にassign文をSpecCファイル４１５Ａに出力することで、ＨＤＬ特有の同時処理文をＣ言語の逐次実行可能な代入に変換できる。また、SpecCファイル４１５Ａに出力されるassign文の"assign"は、VerilogＨＤＬからSpecCに言語変換するために削除される。ハードウェアモデル変換プログラム３２は、SpecCファイル４１５Ｂ〜４１５Ｄについても、同様の処理を行うことで、assign文を出力する。
【０１２６】
次に、出力インターフェースとの接続処理（Ｓ７５）について説明する。ハードウェアモデル変換プログラム３２は、パイプラインステージ３では、中間データ５２の出力ポートとの接続処理を行い、パイプラインステージ０〜パイプラインステージ２では、出力インターフェースとの接続処理を行う。
【０１２７】
図７４に示すように、ハードウェアモデル変換プログラム３２は、インターフェーステーブル４１３のレコードを参照し、output_sizeが０ならば、最終ステージであるパイプラインステージ３に対応するレコードなので、outputテーブル４０３Ｃを参照して、関数引数宣言処理（Ｓ７１）で生成された参照渡しの関数引数と、outputポートに該当するローカル変数とを接続する（SpecCファイル４１５Ｄを参照）。
【０１２８】
図７５に示すように、インターフェーステーブル４１３のレコードのoutput_sizegが１以上ならば、ハードウェアモデル変換プログラム３２は、インターフェーステーブル４１３のoutput_ltindexの値と同一の値を有するltindexのレコードを論理構造テーブル４０１の中から検索し、検索したレコードのdistを、順番にビット連結して、ローカル変数宣言（Ｓ７２）で生成した出力インターフェース受け渡し用のローカル変数に代入する。代入された出力インターフェース受け渡し用のローカル変数は、関数引数宣言処理（Ｓ７１）で宣言した参照渡しの引数に代入する（SpecCファイル４１５Ａを参照）。
【０１２９】
以上の処理を経て、図７６乃至図７９に示すSpecCファイル４１５Ａ〜４１５Ｄがシステムレベル記述回路５４として、外部記憶装置５０に出力される。
【０１３０】
図８０は出力言語をＶＨＤＬとする言語変換処理（Ｓ１４）を示すフローチャートである。ハードウェアモデル変換プログラム３２は、ユーザが編集したユーザ設定ファイル５５を読み取り、出力言語の指定として、conv_model_type=ＶＨＤＬが設定されていることを検出すると、library文の宣言処理（Ｓ８１）、entity部の宣言処理（Ｓ８２）、signal文の宣言処理（Ｓ８３）、入力インターフェースとの接続処理（Ｓ８４）、assign文の出力処理（Ｓ８５）、及び出力インターフェースとの接続処理（Ｓ８６）を実行する。
【０１３１】
ハードウェアモデル変換プログラム３２は、これらの処理を実行することで、図９２乃至図９５に示すＶＨＤＬファイル４１６Ａ〜４１６Ｄを出力する。ＶＨＤＬファイル４１６Ａは、パイプラインステージ０（第１ステージ）の関数を示す。ＶＨＤＬファイル４１６Ｂは、パイプラインステージ１（第２ステージ）の関数を示す。ＶＨＤＬファイル４１６Ｃは、パイプラインステージ２（第３ステージ）の関数を示す。ＶＨＤＬファイル４１６Ｄは、パイプラインステージ３（最終ステージ）の関数を示す。
【０１３２】
ハードウェアモデル変換プログラム３２は、library文の宣言処理（Ｓ８１）において、以下のlibrary文を出力する。
Library IEEE;
use IEEE.std_logic_1164.all;
【０１３３】
次に、entity部の宣言処理（Ｓ８２）について説明する。entit名は、例えば、回路名に対応した名称を名付ける。
【０１３４】
図８１に示すように、ハードウェアモデル変換プログラム３２は、各パイプラインステージの入力ポートを定義するために、インターフェーステーブル４１３を参照する。そして、インターフェーステーブル４１３のレコードの中で、あるパイプラインステージに対応するレコードのinput_sizeが０ならば、inputテーブル４０３Ａから入力ポート名とビットサイズを取得し、第１ステージであるパイプラインステージ０の入力ポートをＶＨＤＬファイル４１６Ａに定義する。また、あるパイプラインステージに対応するレコードのinput_sizeが１以上ならば、そのパイプラインステージは、パイプラインステージ１〜パイプラインステージ３に対応するので、input_sizeのビットを有する入力ポートをＶＨＤＬファイル４１６Ｂ〜４１６Ｄに定義する。
【０１３５】
図８２に示すように、ハードウェアモデル変換プログラム３２は、各パイプラインステージの出力ポートを定義するために、インターフェーステーブル４１３を参照する。そして、インターフェーステーブル４１３のレコードの中で、あるパイプラインステージに対応するレコードのoutput_sizeが０ならば、outputテーブル４０３Ｃから出力ポート名とビットサイズを取得し、最終ステージであるパイプラインステージ３の出力ポートをＶＨＤＬファイル４１６Ｄに定義する。また、あるパイプラインステージに対応するレコードのoutput_sizeが１以上ならば、そのパイプラインステージは、パイプラインステージ０〜パイプラインステージ２に対応するので、output_sizeのビットを有する入力ポートをＶＨＤＬファイル４１６Ａ〜４１６Ｃに定義する。
【０１３６】
次に、signal文の宣言処理（Ｓ８３）について説明する。図８３に示すように、ハードウェアモデル変換プログラム３２は、中間データ５２の入力ポートと出力ポートに相当するsignal文を、inputテーブル４０３Ａとoutputテーブル４０３Ｃから得たポート情報を基に、ＶＨＤＬファイル４１６Ａ〜４１６Ｄに出力する。
【０１３７】
図８４に示すように、ハードウェアモデル変換プログラム３２は、論理構造テーブル４０１とassign文ステージテーブル４０９Ａとを参照して、assign文ステージテーブル４０９Ａのレコードのltindexの値と同一の値をltindexに有する論理構造テーブル４０１のレコードを検索する。検索したレコードのattributeが"wire"であるならば、１ビットサイズのsignal文として、ＶＨＤＬファイル４１６Ａに定義する。
【０１３８】
図８５に示すように、ハードウェアモデル変換プログラム３２は、パイプランステージ１〜パイプラインステージ３の入力ポートに接続されるsignal文を宣言する。ハードウェアモデル変換プログラム３２は、インターフェーステーブル４１３と論理構造テーブル４０１とを参照し、インターフェーステーブル４１３のレコードの中で、パイプラインスステージ１に対応するレコードのinput_ltindexの値と同一の値をltindexに有する論理構造テーブル４０１のレコードのattributeが"wire"であるならば、ＶＨＤＬファイル４１６Ｂにsignal文を宣言する。パイプランステージ２，パイプラインステージ３についても同様に、ＶＨＤＬファイル４１６Ｃ，Ｄにsignal文を宣言する。
【０１３９】
図８６に示すように、ハードウェアモデル変換プログラム３２は、パイプラインステージ０〜パイプラインステージ２の出力インターフェースとの接続に使用されるsignal文を宣言する。図８６に示すように、ハードウェアモデル変換プログラム３２は、インターフェーステーブル４１３を参照し、インターフェーステーブル４１３のoutput_sizeが０でなければ、output_size分のビットサイズのsignal文を宣言する。
【０１４０】
次に、入力インターフェースとの接続処理（Ｓ８４）について説明する。ハードウェアモデル変換プログラム３２は、パイプラインステージ０では、中間データ５２の入力ポートとの接続処理を行い、パイプラインステージ１〜パイプラインステージ３では、入力インターフェースとの接続処理を行う。
【０１４１】
図８７に示すように、ハードウェアモデル変換プログラム３２は、インターフェーステーブル４１３のレコードを参照し、input_sizeが０ならば、第１ステージであるパイプラインステージ０に対応するレコードなので、inputテーブル４０３Ａを参照して、entity部の宣言処理（Ｓ８２）で生成した入力ポートと、signal文宣言処理（Ｓ８３）で宣言した入力ポート用signalを接続する（ＶＨＤＬファイル４１６Ａを参照）。
【０１４２】
図８８に示すように、インターフェーステーブル４１３のレコードのinput_sizegが１以上ならば、ハードウェアモデル変換プログラム３２は、インターフェーステーブル４１３のinput_ltindexの値と同一の値を有するltindexのレコードを論理構造テーブル４０１の中から検索し、検索したレコードのdistに、entity部の宣言処理（Ｓ８２）で宣言処理したパイプライン用インターフェースを１ビットずつビット分割して接続する（ＶＨＤＬファイル４１６Ｂを参照）。
【０１４３】
次に、assign文の出力処理（Ｓ８５）について説明する。assign文の出力処理では、各々のＶＨＤＬファイル４１６Ａ〜４１６Ｄに中間データ５２のassign文が出力される。
【０１４４】
図８９に示すように、ハードウェアモデル変換プログラム３２は、assign文ステージテーブル４０９Ａ、ステージ境界テーブル４０７、論理構造テーブル４０１、及びassign文テーブル４０２を参照する。ハードウェアモデル変換プログラム３２は、assign文ステージテーブル４０９Ａのltindexの値と同一の値を有するltindexのレコードを論理構造テーブル４０１から検索する。そして、検索したレコードの論理深さがステージ境界テーブル４０７の上流側ステージ境界（min）と下流側ステージ境界（max）との間にある場合には、ハードウェアモデル変換プログラム３２は、論理構造テーブル４０１のレコードのtbindexが指し示すassign文テーブル４０２のassign文をＶＨＤＬファイル４１６Ａに出力する。ＶＨＤＬファイル４１６Ａに出力されるassign文は、論理深さの小さい順とする。また、ＶＨＤＬファイル４１６Ａに出力されるassign文は、VerilogＨＤＬからＶＨＤＬに言語変換して出力される。ＶＨＤＬファイル４１５Ｂ〜４１５Ｄについても、同様の処理を行うことで、assign文を出力する。
【０１４５】
次に、出力インターフェースとの接続処理（Ｓ８６）について説明する。ハードウェアモデル変換プログラム３２は、パイプラインステージ３では、中間データ５２の出力ポートとの接続処理を行い、パイプラインステージ０〜パイプラインステージ２では、出力インターフェースとの接続処理を行う。
【０１４６】
図９０に示すように、ハードウェアモデル変換プログラム３２は、インターフェーステーブル４１３のレコードを参照し、output_sizeが０ならば、最終ステージであるパイプラインステージ３に対応するレコードなので、outputテーブル４０３Ｃを参照して、entity部の宣言処理（Ｓ８２）で生成した出力ポートと、signal文宣言処理（Ｓ８３）で宣言した出力ポート用signaに接続する（ＶＨＤＬファイル４１６Ｄを参照）。
【０１４７】
図９１に示すように、インターフェーステーブル４１３のレコードのoutput_sizegが１以上ならば、ハードウェアモデル変換プログラム３２は、インターフェーステーブル４１３のoutput_ltindexの値と同一の値を有するltindexのレコードを論理構造テーブル４０１の中から検索し、検索したレコードのdistを、順番にビット連結して、signal文宣言処理（Ｓ８３）で生成した出力インターフェース接続用のsignalに代入する。代入された出力インターフェース受け渡し用のsignalは、entity部の宣言処理（Ｓ８２）で宣言された出力ポートに接続される（ＶＨＤＬファイル４１６Ａを参照）。
【０１４８】
以上の処理を経て、図９２乃至図９５に示すＶＨＤＬファイル４１６Ａ〜４１６ＤがＨＤＬ記述回路５３として、外部記憶装置５０に出力される。
【０１４９】
本実施例によれば、人手で行ってきた既存回路のパイプライン化やハードウェア記述言語の変換を自動化することができる。
【図面の簡単な説明】
【０１５０】
【図１】本実施例のハードウェアモデル変換システムの概略構成図である。
【図２】本実施例のハードウェアモデル変換システムの機能ブロック図である。
【図３】本実施例のハードウェアモデル変換システムの全体処理フローである。
【図４】ＶＨＤＬで記述された２ビット全加算器のＨＤＬ記述回路である。
【図５】論理合成処理フローを示すフローチャートである。
【図６】論理合成処理された中間データの説明図である。
【図７】本実施例のassignセルの説明図である。
【図８】本実施例の論理構造テーブル作成処理を示すフローチャートである。
【図９】本実施例のassign文テーブルの説明図である。
【図１０】同図（Ａ）はポート形式のinputテーブル、同図（Ｂ）はビット分割形式のinputテーブル、同図（Ｃ）はポート形式のoutputテーブル、同図（Ｄ）は、ビット分割形式のoutputテーブルを示す。
【図１１】本実施例のassign文要素テーブルの説明図である。
【図１２】本実施例の中間データの回路接続を示す説明図である。
【図１３】本実施例の論理構造テーブルのレコード形式を示す図である。
【図１４】入力ポートの情報がセットされた論理構造テーブルの説明図である。
【図１５】初期化処理後の論理構造テーブルの説明図である。
【図１６】論理構造テーブルにsourceの値をセットする処理を示す説明図である。
【図１７】論理構造テーブルにsourceの値をセットする処理を示す説明図である。
【図１８】論理構造テーブルにsourceの値をセットする処理を示す説明図である。
【図１９】各レコードのsourceに値がセットされた後の論理構造テーブルの説明図である。
【図２０】論理構造テーブルのdepthをセットする処理の説明図である。である。
【図２１】論理構造テーブルのdepthをセットする処理の説明図である。である。
【図２２】論理構造テーブルのdepthをセットする処理の説明図である。である。
【図２３】最大論理深さが確定した論理構造テーブルの説明図である。
【図２４】論理構造テーブルに擬似出力ポートのレコードを挿入する処理の説明図である。
【図２５】論理構造テーブルに擬似出力ポートのレコードを挿入する処理の説明図である。
【図２６】論理構造テーブルの説明図である。
【図２７】論理構造テーブルを変形して得られるリスト構造の説明図である。
【図２８】論理構造テーブルの回路構造を示す図である。
【図２９】パイプラインモデル生成処理を示すフローチャートである。
【図３０】ユーザ設定ファイルの書式を示す図である。
【図３１】パイプラインモードの概要を示す説明図である。
【図３２】分割モードの概要を示す説明図である。
【図３３】パイプライン分割後の回路接続構造を示す図である。
【図３４】本実施例のステージ境界テーブルのレコード形式を示す図である。
【図３５】本実施例のステージ境界テーブルを示す図である。
【図３６】パイプライン分割処理を示すフローチャートである。
【図３７】assign文ステージテーブルレコード形式の説明図である。
【図３８】assign文ステージ抽出処理の説明図である。
【図３９】assign文ステージ抽出処理の説明図である。
【図４０】assign文ステージテーブルの説明図である。
【図４１】中間データ回路の説明図である。
【図４２】インターフェース抽出テーブルレコード形式の説明図である。
【図４３】インターフェースステージ抽出処理の説明図である。
【図４４】インターフェースステージ抽出処理の説明図である。
【図４５】インターフェースステージ抽出処理の説明図である。
【図４６】インターフェースステージ抽出処理の説明図である。
【図４７】インターフェースステージ抽出処理の説明図である。
【図４８】インターフェースステージ抽出処理の説明図である。
【図４９】インターフェースステージ抽出処理の説明図である。
【図５０】インターフェース抽出テーブルの説明図である。
【図５１】抽出されたインターフェースの説明図である。
【図５２】パイプランステージモジュール間のインターフェースの説明図である。
【図５３】抽出されたインターフェースをマージする処理の説明図である。
【図５４】マージ処理後のインターフェース抽出テーブルの説明図である。
【図５５】インターフェーステーブルレコード形式の説明図である。
【図５６】インターフェース生成処理の説明図である。
【図５７】インターフェース生成処理の説明図である。
【図５８】インターフェース生成処理の説明図である。
【図５９】インターフェース生成処理の説明図である。
【図６０】インターフェーステーブルの説明図である。
【図６１】パイプラインステージモジュールインターフェースの説明図である。
【図６２】パイプライン解析処理を示すフローチャートである。
【図６３】解析レポートの説明図である。
【図６４】言語変換処理を示すフローチャートである。
【図６５】関数引数の宣言処理の説明図である。
【図６６】関数引数の宣言処理の説明図である。
【図６７】ローカル変数宣言処理の説明図である。
【図６８】ローカル変数宣言処理の説明図である。
【図６９】ローカル変数宣言処理の説明図である。
【図７０】ローカル変数宣言処理の説明図である。
【図７１】入力インターフェースとの接続処理の説明図である。
【図７２】入力インターフェースとの接続処理の説明図である。
【図７３】assign文出力処理の説明図である。
【図７４】出力インターフェースとの接続処理の説明図である。
【図７５】出力インターフェースとの接続処理の説明図である。
【図７６】第１ステージのSpecCファイルの出力例である。
【図７７】第２ステージのSpecCファイルの出力例である。
【図７８】第３ステージのSpecCファイルの出力例である。
【図７９】第４ステージのSpecCファイルの出力例である。
【図８０】言語変換処理を示すフローチャートである。
【図８１】entity部の宣言処理の説明図である。
【図８２】entity部の宣言処理の説明図である。
【図８３】signal文の宣言処理の説明図である。
【図８４】signal文の宣言処理の説明図である。
【図８５】signal文の宣言処理の説明図である。
【図８６】signal文の宣言処理の説明図である。
【図８７】入力インターフェースとの接続処理の説明図である。
【図８８】入力インターフェースとの接続処理の説明図である。
【図８９】assign文出力処理の説明図である。
【図９０】出力インターフェースとの接続処理の説明図である。
【図９１】出力インターフェースとの接続処理の説明図である。
【図９２】第１ステージのＶＨＤＬファイルの出力例である。
【図９３】第２ステージのＶＨＤＬファイルの出力例である。
【図９４】第３ステージのＶＨＤＬファイルの出力例である。
【図９５】第４ステージのＶＨＤＬファイルの出力例である。
【符号の説明】
【０１５１】
１０…ハードウェアモデル変換システム  ３２…ハードウェアモデル変換プログラム  ５１…ＨＤＬ記述回路  ５２…中間データ  ５３…ＨＤＬ記述回路  ５４…システムレベル記述回路  ５５…ユーザ設定ファイル  ５６…解析レポート  ３０３…論理構造テーブル作成部  ３０８…パイプラインモデル生成部  ３１２…解析部  ３１３…言語変換部  ４０１…論理構造テーブル
【図１】
2007087215.tif 000003
【図２】
2007087215.tif 000004
【図３】
2007087215.tif 000005
【図４】
2007087215.tif 000006
【図５】
2007087215.tif 000007
【図６】
2007087215.tif 000008
【図７】
2007087215.tif 000009
【図８】
2007087215.tif 000010
【図９】
2007087215.tif 000011
【図１０】
2007087215.tif 000012
【図１１】
2007087215.tif 000013
【図１２】
2007087215.tif 000014
【図１３】
2007087215.tif 000015
【図１４】
2007087215.tif 000016
【図１５】
2007087215.tif 000017
【図１６】
2007087215.tif 000018
【図１７】
2007087215.tif 000019
【図１８】
2007087215.tif 000020
【図１９】
2007087215.tif 000021
【図２０】
2007087215.tif 000022
【図２１】
2007087215.tif 000023
【図２２】
2007087215.tif 000024
【図２３】
2007087215.tif 000025
【図２４】
2007087215.tif 000026
【図２５】
2007087215.tif 000027
【図２６】
2007087215.tif 000028
【図２７】
2007087215.tif 000029
【図２８】
2007087215.tif 000030
【図２９】
2007087215.tif 000031
【図３０】
2007087215.tif 000032
【図３１】
2007087215.tif 000033
【図３２】
2007087215.tif 000034
【図３３】
2007087215.tif 000035
【図３４】
2007087215.tif 000036
【図３５】
2007087215.tif 000037
【図３６】
2007087215.tif 000038
【図３７】
2007087215.tif 000039
【図３８】
2007087215.tif 000040
【図３９】
2007087215.tif 000041
【図４０】
2007087215.tif 000042
【図４１】
2007087215.tif 000043
【図４２】
2007087215.tif 000044
【図４３】
2007087215.tif 000045
【図４４】
2007087215.tif 000046
【図４５】
2007087215.tif 000047
【図４６】
2007087215.tif 000048
【図４７】
2007087215.tif 000049
【図４８】
2007087215.tif 000050
【図４９】
2007087215.tif 000051
【図５０】
2007087215.tif 000052
【図５１】
2007087215.tif 000053
【図５２】
2007087215.tif 000054
【図５３】
2007087215.tif 000055
【図５４】
2007087215.tif 000056
【図５５】
2007087215.tif 000057
【図５６】
2007087215.tif 000058
【図５７】
2007087215.tif 000059
【図５８】
2007087215.tif 000060
【図５９】
2007087215.tif 000061
【図６０】
2007087215.tif 000062
【図６１】
2007087215.tif 000063
【図６２】
2007087215.tif 000064
【図６３】
2007087215.tif 000065
【図６４】
2007087215.tif 000066
【図６５】
2007087215.tif 000067
【図６６】
2007087215.tif 000068
【図６７】
2007087215.tif 000069
【図６８】
2007087215.tif 000070
【図６９】
2007087215.tif 000071
【図７０】
2007087215.tif 000072
【図７１】
2007087215.tif 000073
【図７２】
2007087215.tif 000074
【図７３】
2007087215.tif 000075
【図７４】
2007087215.tif 000076
【図７５】
2007087215.tif 000077
【図７６】
2007087215.tif 000078
【図７７】
2007087215.tif 000079
【図７８】
2007087215.tif 000080
【図７９】
2007087215.tif 000081
【図８０】
2007087215.tif 000082
【図８１】
2007087215.tif 000083
【図８２】
2007087215.tif 000084
【図８３】
2007087215.tif 000085
【図８４】
2007087215.tif 000086
【図８５】
2007087215.tif 000087
【図８６】
2007087215.tif 000088
【図８７】
2007087215.tif 000089
【図８８】
2007087215.tif 000090
【図８９】
2007087215.tif 000091
【図９０】
2007087215.tif 000092
【図９１】
2007087215.tif 000093
【図９２】
2007087215.tif 000094
【図９３】
2007087215.tif 000095
【図９４】
2007087215.tif 000096
【図９５】
2007087215.tif 000097