(57)【要約】【課題】複雑な階層構造をもつ半導体集積回路の設計を行う場合であっても、設計のターンアラウンドタイムの増加を抑えることができる回路記述生成装置を提供すること【解決手段】既存回路解析部２２は、所望の最上位階層回路内の機能回路の多階層構造を解析した階層構造解析情報と、既存の機能回路である既存回路各々の端子にかかる情報を規定した第１の端子情報と、に基づいて、最上位階層回路内での既存回路の信号接続について解析する。生成回路解析部２４は、既存回路接続情報に基づいて、最上位階層回路内で新たに生成する機能回路である生成回路の端子にかかる情報を規定した第２の端子情報、及び生成回路の内部での信号接続の情報を規定した生成回路内部情報と、を生成する。回路記述生成部２５は、第２の端子情報、及び生成回路内部情報に基づいて、最上位階層回路及び生成回路の回路記述を生成する。【選択図】図１
2012089054.tif 000002
【特許請求の範囲】
【請求項１】
所望の最上位階層回路内の機能回路の多階層構造を解析した階層構造解析情報と、既存の機能回路である既存回路の端子にかかる情報を規定した第１の端子情報と、に基づいて、前記最上位階層回路内での前記既存回路の信号接続について解析した既存回路接続情報を生成する既存回路解析部と、
前記既存回路接続情報に基づいて、前記最上位階層回路内で新たに生成する機能回路である生成回路の端子にかかる情報を規定した第２の端子情報、及び前記生成回路の内部での信号接続の情報を規定した生成回路内部情報、を生成する生成回路解析部と、
前記第２の端子情報、及び前記生成回路内部情報に基づいて、前記最上位階層回路及び前記生成回路の回路記述を生成する回路記述生成部と、を備える回路記述生成装置。
【請求項２】
前記最上位階層回路の各階層における前記既存回路及び前記生成回路の配置を示す階層構造情報を解析し、前記階層構造解析情報を生成する階層構造解析部を備えることを特徴とする請求項１に記載の回路記述生成装置。
【請求項３】
前記階層構造解析情報と、前記第１の端子情報と、に基づいて信号の接続関係の不具合の有無を判定する接続情報判定部をさらに備えることを特徴とする請求項１または請求項２に記載の回路記述生成装置。
【請求項４】
前記接続情報判定部は、信号接続関係の不具合を検出した場合に、該不具合について記述した接続判定結果情報を生成することを特徴とする請求項３に記載の回路記述生成装置。
【請求項５】
前記接続情報判定部は、信号接続関係の不具合を検出した場合に、前記回路記述生成装置による回路記述生成処理をすべて中止するように制御することを特徴とする請求項３または請求項４に記載の回路記述生成装置。
【請求項６】
前記回路記述生成部は、前記第２の端子情報を出力することを特徴とする請求項１乃至請求項５のいずれか１項に記載の回路記述生成装置。
【請求項７】
前記回路記述生成部は、前記第２の端子情報を前記生成回路各々の情報に分割して出力することを特徴とする請求項６に記載の回路記述生成装置。
【請求項８】
前記第１の端子情報と、前記第２の端子情報と、は同一のデータフォーマットにより記述された情報であることを特徴とする請求項１乃至請求項７のいずれか１項に記載の回路記述生成装置。
【請求項９】
前記既存回路解析部は、前記第１の端子情報に基づいて、一の端子から複数の接続先に接続される接続である１対多接続を検出し、当該１対多接続が検出された場合に前記複数の接続先の数に応じて前記既存回路接続情報のデータ列を構成するとともに、当該１対多接続にかかるデータ列であることを示す識別情報を付与し、
前記回路記述生成部は、前記識別情報に基づいて、前記１対多接続を示す記述を含む前記最上位階層回路及び前記生成回路の回路記述を生成することを特徴とする請求項１乃至請求項８のいずれか１項に記載の回路記述生成装置。
【請求項１０】
前記回路記述生成部は、前記一の端子と接続された仮想配線を定義し、前記仮想配線と、前記複数の接続先が接続される記述を定義することにより前記１対多接続を示す記述を含む前記最上位階層回路及び前記生成回路の回路記述を生成することを特徴とする請求項９に記載の回路記述生成装置。
【請求項１１】
前記第１の端子情報は、端子名称、端子のビット幅、端子の接続先、端子の入出力種別、の情報を含むことを特徴とする請求項１乃至請求項１０のいずれか１項に記載の回路記述生成装置。
【請求項１２】
前記第１の端子情報は、端子の接続種別を示すオープンクランプ情報をさらに含むことを特徴とする請求項１１に記載の回路記述生成装置。
【請求項１３】
前記階層構造解析情報は、各機能回路の回路種別を示す階層種別と、各機能回路の前記最上位階層回路内における配置段数を示す階層段数と、各機能回路のインスタンス名と、各機能回路の前記最上位階層回路内における配置位置を示すフルパス名と、を含むことを特徴とする請求項１乃至請求項１２のいずれか１項に記載の回路記述生成装置。
【請求項１４】
前記最上位階層回路は、３階層以上の階層構造を持つことを特徴とする請求項１乃至請求項１３に記載の階層構造生成装置。
【請求項１５】
前記回路記述は、ＨＤＬ（Hardware Description Language）形式の記述であることを特徴とする請求項１乃至請求項１４のいずれか１項に記載の回路記述生成装置。
【請求項１６】
前記回路記述は、ＨＤＬにかかるポート宣言、ワイヤー宣言、インスタンス宣言、前記インスタンス宣言内のポートリスト宣言、を含むことを特徴とする請求項１５に記載の回路記述生成装置。
【請求項１７】
所望の最上位階層回路内の機能回路の多階層構造を解析した階層構造解析情報と、既存の機能回路である既存回路各々の端子にかかる情報を規定した第１の端子情報と、に基づいて、前記最上位階層回路内での前記既存回路の信号接続について解析した既存回路接続情報を生成し、
前記既存回路接続情報に基づいて、前記最上位階層回路内で新たに生成する機能回路である生成回路の端子にかかる情報を規定した第２の端子情報、及び前記生成回路の内部での信号接続の情報を規定した生成回路内部情報と、を生成し、
前記第２の端子情報、及び前記生成回路内部情報に基づいて、前記最上位階層回路及び前記生成回路の回路記述を生成する、回路記述生成方法。
【請求項１８】
機能回路の回路記述を生成する処理をコンピュータに実行させるためのプログラムであって、
前記処理は、所望の最上位階層回路内の機能回路の多階層構造を解析した階層構造解析情報と、既存の機能回路である既存回路各々の端子にかかる情報を規定した第１の端子情報と、に基づいて、前記最上位階層回路内での前記既存回路の信号接続について解析した既存回路接続情報を生成し、
前記既存回路接続情報に基づいて、前記最上位階層回路内で新たに生成する機能回路である生成回路の端子にかかる情報を規定した第２の端子情報、及び前記生成回路の内部での信号接続の情報を規定した生成回路内部情報と、を生成し、
前記第２の端子情報、及び前記生成回路内部情報に基づいて、前記最上位階層回路及び前記生成回路の回路記述を生成する、回路記述生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は回路記述生成装置、回路記述生成方法、及び回路記述生成プログラムに関する。
【背景技術】
【０００２】
近年、半導体集積回路（ＬＳＩ：Large Scale Integration）の大規模化及び高機能化が進んでいる。これに伴い、半導体集積回路を構成する機能回路毎での分担設計、及び既存の機能回路を流用した設計手法が広く採用されている。換言すると、半導体集積回路の階層化設計の必要性が高まってきている。
【０００３】
特許文献１には、回路仕様を入力することにより自動的に最上位階層回路の回路記述を作成することができる回路自動生成装置にかかる技術が開示されている。特許文献１に記載の回路自動生成装置の構成を、図４２を参照して説明する。
【０００４】
回路自動生成装置は、入力部２０１、処理部２０２、及び出力部２０３を備える。入力部２０１は、本装置を用いて最上位階層回路の回路記述を自動生成するために必要な情報が入力される処理部である。入力部２０１には、機能回路入出力情報及び接続先情報２１１、最上位階層回路入出力情報及び接続先情報２１２、端子テスト仕様２１３、機能回路テスト仕様２１４、テストモード生成仕様２１５、及び修正仕様２３７が入力される。入力部２０１は、入力された各データを処理部２０２に供給する。
【０００５】
処理部２０２は、記憶手段２０４、接続情報確認手段２０５、及び最上位階層回路生成手段２０８を備える。記憶手段２０４は、機能回路入出力情報及び接続先情報２１１、最上位階層回路入出力情報及び接続先情報２１２、端子テスト仕様２１３、機能回路テスト仕様２１４、及びテストモード生成仕様２１５をオリジナルデータ２３６として記憶する。さらに記憶手段２０４は、修正仕様２３７を記憶する。
【０００６】
接続情報確認手段２０５は、回路記述を生成する最上位階層回路の信号接続関係を照合する接続情報照合手段２０６、及び信号接続の不具合の有無を判定する接続情報判定手段２０７を備える。接続情報確認手段２０５は、回路記述を生成する最上位階層回路内の信号接続不具合の有無を判定する。接続情報確認手段２０５は、判定結果を接続判定結果２１６として出力部２０３に供給する。
【０００７】
最上位階層回路生成手段２０８は、オリジナルデータ２３６及び修正仕様２３７を読み出し、こられのデータを基に最上位階層回路のＨＤＬ（Hardware Description Language）記述２１７を生成する。最上位階層回路生成手段２０８は、生成した最上位階層回路のＨＤＬ記述２１７を出力部２０３に供給する。
【０００８】
出力部２０３は、処理部２０２から供給された接続判定結果２１６、及び最上位階層回路のＨＤＬ記述２１７を任意の表示装置、外部の記憶装置、内部のメモリ装置等に出力する。
【０００９】
特許文献１にかかる回路自動生成装置は、上述の処理を行うことにより回路仕様を入力するだけで自動的に最上位階層回路の回路記述を作成している。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００６−２８５９４７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献１に記載の回路自動生成装置では、複雑な階層構造、より詳細には３階層以上の階層構造をもつ半導体集積回路の設計を行う場合、設計のＴＡＴ（ターンアラウンドタイム：Turn Around Time）が増加するという問題がある。当該問題の詳細について以下に述べる。
【００１２】
上述のように、特許文献１に記載の回路自動生成装置では、機能回路入出力情報及び接続情報２１１及び最上位階層回路入出力情報及び接続先情報２１２を用いて最上位階層回路の回路記述を生成している。ここで、機能回路入出力情報及び接続情報２１１は、最上位階層の直下の階層に位置する機能回路の入出力情報及び接続情報である。最上位階層回路入出力情報及び接続先情報２１２は、最上位階層の入出力情報及び接続情報である。このため、特許文献１に記載の回路自動生成装置では、一度の回路記述の生成処理において２階層を持つ半導体集積回路の設計しか行うことができず、３階層以上の構造を持つ半導体集積回路の設計を行うことはできない。これにより、３階層以上の構造を持つ半導体集積回路の回路記述を生成する場合、複数回の処理実行が必要となってしまい、ＴＡＴが増加する。
【課題を解決するための手段】
【００１３】
本発明にかかる回路記述生成装置の一態様は、
所望の最上位階層回路内の機能回路の多階層構造を解析した階層構造解析情報と、既存の機能回路である既存回路各々の端子にかかる情報を規定した第１の端子情報と、に基づいて、前記最上位階層回路内での前記既存回路の信号接続について解析した既存回路接続情報を生成する既存回路解析部と、
前記既存回路接続情報に基づいて、前記最上位階層回路内で新たに生成する機能回路である生成回路の端子にかかる情報を規定した第２の端子情報、及び前記生成回路の内部での信号接続の情報を規定した生成回路内部情報と、を生成する生成回路解析部と、
前記第２の端子情報、及び前記生成回路内部情報に基づいて、前記最上位階層回路及び前記生成回路の回路記述を生成する回路記述生成部と、を備える、ものである。
【００１４】
本発明にかかる回路記述生成方法の一態様は、
所望の最上位階層回路内の機能回路の多階層構造を解析した階層構造解析情報と、既存の機能回路である既存回路各々の端子にかかる情報を規定した第１の端子情報と、に基づいて、前記最上位階層回路内での前記既存回路の信号接続について解析した既存回路接続情報を生成し、
前記既存回路接続情報に基づいて、前記最上位階層回路内で新たに生成する機能回路である生成回路の端子にかかる情報を規定した第２の端子情報、及び前記生成回路の内部での信号接続の情報を規定した生成回路内部情報と、を生成し、
前記第２の端子情報、及び前記生成回路内部情報に基づいて、前記最上位階層回路及び前記生成回路の回路記述を生成する、ものである。
【００１５】
本発明にかかる回路記述生成プログラムの一態様は、
機能回路の回路記述を生成する処理をコンピュータに実行させるためのプログラムであって、
前記処理は、所望の最上位階層回路内の機能回路の多階層構造を解析した階層構造解析情報と、既存の機能回路である既存回路各々の端子にかかる情報を規定した第１の端子情報と、に基づいて、前記最上位階層回路内での前記既存回路の信号接続について解析した既存回路接続情報を生成し、
前記既存回路接続情報に基づいて、前記最上位階層回路内で新たに生成する機能回路である生成回路の端子にかかる情報を規定した第２の端子情報、及び前記生成回路の内部での信号接続の情報を規定した生成回路内部情報と、を生成し、
前記第２の端子情報、及び前記生成回路内部情報に基づいて、前記最上位階層回路及び前記生成回路の回路記述を生成する、ものである。
【００１６】
本発明においては、最上位階層回路内の機能回路の多階層構造を解析した階層構造解析情報と、第１の端子情報と、を入力として解析処理を行うことにより、一回の処理により最上位階層回路及び前記生成回路の回路記述を生成する。これにより、開発のＴＡＴを大幅に削減することができる。
【発明の効果】
【００１７】
本発明によれば、複雑な階層構造をもつ半導体集積回路の設計を行う場合であっても、設計のＴＡＴ（ターンアラウンドタイム：Turn Around Time）の増加を抑えることができる回路記述生成装置、回路記述生成方法、及び回路記述生成プログラムを提供することができる。
【図面の簡単な説明】
【００１８】
【図１】実施の形態１にかかる回路記述生成装置の構成を示すブロック図である。
【図２】実施の形態１にかかる回路記述生成装置の処理を示すフローチャートである。
【図３】実施の形態１にかかる階層構造情報のデータ例を示す図である。
【図４】実施の形態１にかかる最上位階層回路の階層構造の例を示す図である。
【図５】実施の形態１にかかる既存回路端子情報のデータ例を示す図である。
【図６】実施の形態１にかかる階層構造情報及び既存回路端子情報と、最上位階層回路と、の関係を示す概念図である。
【図７】実施の形態１にかかる階層構造解析情報のデータフォーマットを示す図である。
【図８】実施の形態１にかかる階層構造解析の処理を示すフローチャートである。
【図９】実施の形態１にかかる階層構造の種別判定処理を示すフローチャートである。
【図１０】実施の形態１にかかるフルパス名解析処理を示すフローチャートである。
【図１１】実施の形態１にかかるフルパス名の解析における各変数値の遷移を示す図である。
【図１２】実施の形態１にかかる階層構造解析情報のデータ例を示す図である。
【図１３】実施の形態１にかかる既存回路解析の処理を示すフローチャートである。
【図１４】実施の形態１にかかる既存回路接続情報のデータフォーマットを示す図である。
【図１５】実施の形態１にかかる既存回路解析部による、階層構造解析情報９と既存回路端子情報５との照合処理の概念図である。
【図１６】実施の形態１にかかる既存回路接続情報のデータ例を示す図である。
【図１７】実施の形態１にかかる接続情報判定の処理を示すフローチャートである。
【図１８】実施の形態１にかかる既存回路接続情報のデータ例を示す図である。
【図１９】実施の形態１にかかる生成回路内部情報のデータフォーマットを示す図である。
【図２０】実施の形態１にかかる生成回路端子情報のデータフォーマットを示す図である。
【図２１】実施の形態１にかかる生成回路解析の処理を示すフローチャートである。
【図２２】実施の形態１にかかる生成回路解析の処理詳細を示すフローチャートであるである。
【図２３】実施の形態１にかかる生成回路解析の処理を示す概念図である。
【図２４】実施の形態１にかかるオープンクランプ処理を示すフローチャートである。
【図２５】実施の形態１にかかる生成回路内部情報のデータ例を示す図である。
【図２６】実施の形態１にかかる生成回路端子情報のデータ例を示す図である。
【図２７】実施の形態１にかかるＨＤＬ記述の概略図である。
【図２８】実施の形態１にかかる階層記述生成の処理を示すフローチャートである。
【図２９】実施の形態１にかかる階層記述生成処理の動作イメージを示す図である。
【図３０】実施の形態１にかかる階層記述生成処理の動作イメージを示す図である。
【図３１】実施の形態１にかかる生成回路端子情報のデータ例を示す図である。
【図３２】実施の形態２にかかる１対多接続の概念を示す概念図である。
【図３３】実施の形態２にかかる回路記述生成装置が生成する回路記述の概念を示す概念図である。
【図３４】実施の形態２にかかる既存回路解析部の処理を示すフローチャートである。
【図３５】実施の形態２にかかる既存回路解析部による１対多接続の解析に関する概念図である。
【図３６】実施の形態２にかかる生成回路解析部が生成する生成回路内部情報を示す図である。
【図３７】実施の形態２にかかる生成回路解析部が生成する生成回路端子情報を示す図である。
【図３８】実施の形態２にかかる回路記述生成部の処理を示すフローチャートである。
【図３９】実施の形態２にかかる回路記述生成部の処理を示すフローチャートである。
【図４０】実施の形態２にかかる回路記述生成部の処理概念を示す図である。
【図４１】実施の形態２にかかる回路記述生成装置が生成する回路記述の例を示す図である。
【図４２】特許文献１に記載の回路記述生成装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１９】
＜実施の形態１＞
以下、図面を参照して本発明の実施の形態について説明する。はじめに、図１を参照して、本実施の形態にかかる回路記述生成装置の構成について説明する。図１は、本実施の形態にかかる回路記述生成装置の構成を示すブロック図である。
【００２０】
本実施の形態にかかる回路記述生成装置は、入力部１、処理部２、及び出力部３を備える。入力部１は、本装置を用いて設計する所望の回路（以降の説明では最上位階層回路と記載する）の回路記述及び当該最上位階層回路内に含まれる生成回路（最上位階層回路を構成する回路であって、新たに生成する回路を意味する。）を自動生成するために必要な情報が入力される処理部である。入力部１には、階層構造情報４及び既存回路端子情報５が入力される。階層構造情報４は、最上位階層回路の各階層における既存回路（すでに設計済みであり、ＨＤＬ記述が存在する機能回路）及び生成回路の配置を示す情報である。既存回路端子情報５は、既存回路各々の端子について規定した情報である。階層構造情報４及び既存回路端子情報５の詳細については後述する。
【００２１】
処理部２は、入力部１に入力された階層構造情報４及び既存回路端子情報５に基づいて、接続判定結果６、生成回路端子接続情報７、及び最上位階層回路のＨＤＬ記述８を生成し、出力部３に供給する処理部である。接続判定結果６、生成回路端子接続情報７、及び最上位階層回路のＨＤＬ記述８の詳細は、後述する。
【００２２】
処理部２は、階層構造解析部２１、既存回路解析部２２、接続情報判定部２３、生成回路解析部２４、及び回路記述生成部２５を備える。これらの処理部の処理の詳細は、フローチャート等を用いて後述する。
【００２３】
出力部３は、接続判定結果６、生成回路端子情報７、及び最上位階層回路のＨＤＬ記述８を任意の装置、詳細にはディスプレイ等の表示装置、内部の記憶装置、外部接続された記憶装置等に出力する。
【００２４】
図２は、処理部２内の処理の流れを示すフローチャートである。階層構造解析部２１は、入力された階層構造情報４を読み込み、階層構造情報４に記述された最上位階層回路内の階層構造を解析した階層構造解析情報を生成する（Ｓ１）。
【００２５】
既存回路解析部２２は、既存回路端子情報５を読み込む。既存回路解析部２２は、既存回路端子情報５及び階層構造解析部２１から入力される階層構造解析情報を基に、最上位階層回路内での既存回路の信号接続について解析した既存回路解析情報を生成する（Ｓ２）。
【００２６】
接続情報判定部２３は、Ｓ１にて生成された階層構造解析情報と、Ｓ２にて生成された既存回路解析情報と、から、適切な信号接続が設定されているかを判定する（Ｓ３）。適切な信号接続が設定されている場合（Ｓ３：Ｎｏ）、接続情報判定部２３は、エラーの内容を記述した接続判定結果６を出力して処理を終了する。適切な信号接続が設定されていない場合（Ｓ３：Ｙｅｓ）、Ｓ４の処理が開始される。
【００２７】
続いて、生成回路解析部２４は、既存回路解析情報を基に、生成回路の解析を行う（Ｓ４）。より詳細には、生成回路解析部２４は、生成回路内部における信号接続の情報（生成回路内部情報）と、生成回路の端子にかかる情報（生成回路端子情報）と、を生成する。
【００２８】
回路記述生成部２５は、階層構造解析情報、生成回路内部情報、及び生成回路端子情報に基づいて、最上位階層回路及び生成回路のＨＤＬ記述（ＨＤＬ記述８）と、生成回路の端子接続の情報（生成回路端子情報７）と、を生成する（Ｓ５）。
【００２９】
続いて、ユーザが入力すべき情報である階層構造情報４と、既存回路端子情報５と、の説明を行う。まず、階層構造解析情報生成処理（Ｓ１）において入力となる階層構造情報４の詳細について説明する。図３は、階層構造情報４のデータ例を示す図である。階層構造情報４は最上位階層回路の各階層における既存回路及び生成回路の配置を示す情報であるが故、階層構造情報４には、最上位に位置する階層（ＴＯＰ階層）から最下位に位置する階層（ＢＯＴＴＯＭ階層）までの各階層における機能回路の配置を示す階層情報４１〜４５、既存回路の接続情報ファイル名４６、及び機能回路の短縮名４７が設定される。階層構造情報４は、表形式のデータフォーマットにより記述される。
【００３０】
接続情報ファイル名４６には、既存回路の既存回路端子情報５のファイル名が指定される。例えば、既存回路ＵＮＩＴ＿Ａの既存回路端子情報５は、"ＵＮＩＴ＿Ａ．ｃｓｖ"というファイルであることが指定される。機能回路短縮名４７は、任意に設定可能である。機能回路短縮名４７を設定した場合には、設定値が当該回路の識別名として以降の処理において扱われる。機能回路短縮名４７を設定しない場合、インスタンス名が設定されているものとして扱われる。
【００３１】
図４は、図３に示された階層構造をツリー構造により示す図である。図４では、各機能回路はインスタンス名により表記されている。本例では、既存回路（既に設計済みの機能回路）ＵＮＩＴ＿Ａ〜ＵＮＩＴ＿Ｆを使用する。当該最上位階層回路では、ＴＯＰ階層にＴＯＰが配置される。ＬＥＶＥＬ１階層においては、ＴＯＰ内にて接続されるＴＯＰ１、ＴＯＰ２が配置される。ＬＥＶＥＬ２階層においては、ＴＯＰ１内にて接続されるＴＯＰ１−１、ＴＯＰ１−２が配置され、ＴＯＰ２内にて接続されるＵＮＩＴ＿Ｆが配置される。ＬＥＶＥＬ３階層においては、ＴＯＰ１−１内にて接続されるＵＮＩＴ＿Ａ及びＵＮＩＴ＿Ｂが配置され、ＴＯＰ１−２内にて接続されるＵＮＩＴ＿Ｃ、ＴＯＰ１−２−１、及びＴＯＰ１−２−２が配置される。ＢＯＴＴＯＭ階層には、ＴＯＰ１−２−１内にて接続されるＵＮＩＴ＿Ｄが配置され、ＴＯＰ１−２−２内にて接続されるＵＮＩＴ＿Ｅが配置される。
【００３２】
なお、図３、図４の例では、５階層の回路構成を示したがこれに限られず、階層構造情報４に任意の深さの階層を持つ回路構成を記載することができる。階層の深さに応じて、階層構造情報４のカラム数を適宜変更することができる。
【００３３】
次に、既存回路解析部２２に入力される既存回路端子情報５について説明する。図５に既存回路端子情報５のデータ例を示す。既存回路端子情報５は、既存回路（既にＨＤＬ記述が作成済みの機能回路）の端子にかかる情報を保持するファイルである。既存回路端子情報５には、端子名５１、端子エイリアス５２、端子Ｂｉｔ幅５３、端子接続先５４、オープンクランプ処理設定（Ｏｐｅｎ／Ｃｌａｍｐ）５５、端子入出力（ｉｎ／ｏｕｔ）５６が設定される。
【００３４】
既存回路端子情報５は、既存回路毎にファイル形式により記述される。図５（Ａ）は、既存回路ＵＮＩＴ＿Ａの既存回路端子情報５の例が示されている。なお、図示しないが、既存回路ＵＮＩＴ＿Ｂ〜ＵＮＩＴ＿Ｆについてもそれぞれ既存回路端子情報５が設定されている。
【００３５】
端子名５１には、既存のＨＤＬ記述において記載されている端子名が設定される。端子エイリアス５２には、Ｓ２〜Ｓ５の処理において端子名５１に設定された名前を別の名前を用いて処理したい場合に当該別名を設定する。基本的には、端子エイリアス５２に設定する値は、端子名５１に設定した値と同じで良く、設定しなくてもよい。設定しない場合、端子名５１と同じ値が設定されているものとして扱われる。端子エイリアス５２は、後述する既存回路接続情報１０の接続信号名１０２の生成等に用いられる。
【００３６】
端子Ｂｉｔ幅５３には、当該端子が扱うビット幅が設定される。端子接続先５４には、端子が接続される接続先の機能回路のインスタンス名、または階層構造情報４において指定した機能回路短縮名が設定される。
【００３７】
オープンクランプ処理設定（Ｏｐｅｎ／Ｃｌａｍｐ）５５には、最上位階層回路内において不要な端子を処理する場合に設定する。具体的には、端子をオープンにする場合、ハイレベルに固定する場合、ロウレベルに固定する場合に設定する。空文字が設定されている場合、オープンクランプ設定がなされていないものと扱われる。
【００３８】
端子入出力（ｉｎ／ｏｕｔ）５６には、端子が入力端子（Ｉ）であるか、出力端子（Ｏ）であるかが設定される。
【００３９】
図６は、図３に示す階層構造情報４及び図５に示す既存回路端子情報５と、設計する最上位階層回路と、の関係を示す概念図である。階層構造情報４は、最上位階層回路（"ＴＯＰ"）内の生成回路及び既存回路の包含関係を記載した情報とも解釈できる。既存回路端子情報５は、既存回路の接続情報を示す情報である。本実施の形態にかかる回路記述生成装置は、これらの入力から最上位階層回路（"ＴＯＰ"）及び生成回路（"ＴＯＰ１"，"ＴＯＰ１−１"等）のＨＤＬ記述８と、生成回路の端子にかかる情報（生成回路端子情報７）と、を自動生成することを主たる目的とする。
【００４０】
例えば図６では、既存回路ＵＮＩＴ＿Ａと既存回路ＵＮＩＴ＿Ｃとが信号接続されている。これは、生成回路ＴＯＰ1−１と生成回路ＴＯＰ１−２が信号接続されていると同義である。本実施の形態にかかる回路記述生成装置は、このような情報を反映したＨＤＬ記述８を生成することを主たる目的とする。
【００４１】
次に、階層構造解析情報生成処理（Ｓ１）の詳細について説明する。階層構造解析部２１には、上述の階層構造情報４が供給される。階層構造解析部２１は、階層構造情報４を解析し、解析結果として階層構造解析情報９を生成する。階層構造解析情報９には、各機能回路の情報が行毎に記述される。図７に階層構造解析情報９のデータフォーマットを示す。
【００４２】
階層構造解析情報９には、階層種別９１、階層段数９２、インスタンス名９３、フルパス名９４、接続情報ファイル名９５、及び機能回路短縮名９６が設定される。
【００４３】
階層種別９１には、生成回路であるか（"Ｃｒｅａｔｅ"）、既存回路であるか（"ＵＮＩＴ"）が記載される。階層段数９２には、ＴＯＰ階層を段数"０"とした場合の階層段数を示す。インスタンス名９３には、回路のインスタンス名が設定される。フルパス名９４には、ＴＯＰ階層からの階層の並びをセパレータ文字"／"により結合した文字列が設定される。接続情報ファイル名９５には、該当行が示す回路が既存回路である場合に、当該既存回路端子情報５のファイル名が設定される。機能回路短縮名９６には、該当行が示す回路のインスタンス名等を短縮した名称が設定される。
【００４４】
図８は、階層構造解析部２１による階層構造解析情報生成処理（Ｓ１）の詳細を示すフローチャートである。
【００４５】
階層構造解析部２１は、階層構造情報４から１行を読み出し、読み出し行が空行ではない場合に、読み出し行の情報を配列化する（Ｓ１−１）。例えば、階層構造解析部２１は、階層構造情報４から１行を読み出し、配列（"ＴＯＰ"，""，""，""，""，""，""）を生成する。このように、データが設定されていない項目については空文字列を代入して配列を構成する。
【００４６】
階層構造解析部２１は、読み出したデータが既存回路にかかるものであるか、生成回路にかかるものであるかを判定する（Ｓ１−２）。当該処理の詳細な流れを図９のフローチャートに示す。
【００４７】
階層構造解析部２１は、Ｓ１−１において生成した配列末尾に格納されたデータを機能回路短縮名データとして取り出す（Ｓ１−２−１）。例えば、Ｓ１−２−１の処理前に配列に（"ＴＯＰ"，""，""，""，""，""，""，""）が格納されている場合、階層構造解析部２１は、配列最後に位置する空文字""を取り出し、取り出し後の配列は（"ＴＯＰ"，""，""，""，""，""，""）となる。同様に、Ｓ１−２−１の処理前に配列に（""，""，""，"ＵＮＩＴ＿Ａ"，""，"ＵＮＩＴ＿Ａ．ｃｓｖ"，"Ａ"）が格納されている場合、階層構造解析部２１は、データ"Ａ"を取り出し、取り出し後の配列は（""，""，""，"ＵＮＩＴ＿Ａ"，""，"ＵＮＩＴ＿Ａ．ｃｓｖ"）となる。階層構造解析部２１が抽出した機能階層短縮名データ（例えば"Ａ"）は、後の処理Ｓ１−６において階層構造解析情報９の機能回路短縮名９６と対応づけられる。
【００４８】
次に、階層構造解析部２１は、Ｓ１−２−１の処理後の配列末尾に格納されたデータを接続ファイル名データとして取り出す（Ｓ１−２−２）。例えば、Ｓ１−２−２の処理前に配列に（"ＴＯＰ"，""，""，""，""，""，""）が格納されている場合、階層構造解析部２１は、接続ファイル名データとして配列最後に位置する空文字""を取り出し、取り出し後の配列は（"ＴＯＰ"，""，""，""，""，""）となる。同様に、Ｓ１−２−２の処理前に配列に（""，""，""，"ＵＮＩＴ＿Ａ"，""，"ＵＮＩＴ＿Ａ．ｃｓｖ"）が格納されている場合、階層構造解析部２１は、接続ファイル名データとして "ＵＮＩＴ＿Ａ．ｃｓｖ"を取り出し、取り出し後の配列は（""，""，""，"ＵＮＩＴ＿Ａ"，""）となる。階層構造解析部２１が抽出した接続ファイル名データ（例えば"ＵＮＩＴ＿Ａ．ｃｓｖ"）は、後の処理Ｓ１−６において階層構造解析情報９の接続情報ファイル名９５と対応づけられる。
【００４９】
階層構造解析部２１は、配列変数"階層情報"を定義し、当該変数にＳ１−２−２の処理後の配列データを代入する（Ｓ１−２−３）。例えば、階層構造解析部２１は、（"ＴＯＰ"，""，""，""，""，""）、（""，""，""，"ＵＮＩＴ＿Ａ"，""）等を配列変数"階層情報"に代入する。
【００５０】
階層構造解析部２１は、変数"階層情報"に格納されたデータに空文字以外のデータがいくつあるかを判定する（Ｓ１−２−４）。変数"階層情報"に格納されたデータ内の空文字以外のデータが１個以外の場合、階層構造情報４が不正な内容と判定し、エラーにより処理を終了する。
【００５１】
変数"階層情報"に格納されたデータに空文字以外のデータが１個である場合、階層構造解析部２１は、Ｓ１−２−２の処理において抽出した接続ファイル名データが存在するか否かを判定する（Ｓ１−２−５）。接続ファイル名データが存在する場合（Ｓ１−２−５：Ｙｅｓ）、階層構造解析部２１は、既存回路にかかるデータ列を処理していると判定し、後の処理１−６において階層種別９１に"ＵＮＩＴ"を設定する（Ｓ１−２−６）。接続ファイル名データが存在しない場合（Ｓ１−２−５：Ｎｏ）、階層構造解析部２１は、生成回路にかかるデータ列を処理していると判定し、後の処理１−６において階層種別９１に"Ｃｒｅａｔｅ"を設定する（Ｓ１−２−７）。
【００５２】
再び図８の説明を行う。階層構造解析部２１は、変数"階層情報"に格納されたデータから階層段数を解析する（Ｓ１−３）。階層構造解析部２１は、変数"階層情報"に格納されたデータ内で空文字以外の要素が存在する位置を基に階層段数を解析する。例えば変数"階層情報"に格納されたデータが（""，""，""，"ＵＮＩＴ＿Ａ"，""）である場合、階層構造解析部２１は階層段数として"３"を抽出する。抽出した階層段数は、後の処理Ｓ１−６において階層構造解析情報９の階層段数９２に対応づけられる。
【００５３】
次に、階層構造解析部２１は、処理中の既存回路または生成回路についてのフルパス名を解析する（Ｓ１−４）。フルパス名とは、ＴＯＰ階層からの階層の並びをセパレータ文字"／"により結合した文字列である。たとえば、図４における"ＵＮＩＴ＿Ａ"のフルパス名は、"ＴＯＰ／ＴＯＰ１／ＴＯＰ１−１／ＵＮＩＴ＿Ａ"となる。
【００５４】
フルパス名の解析（Ｓ１−４）の処理詳細を図１０のフローチャートに示す。階層構造解析部２１は、フルパス名の解析のために変数"フルパス名配列"、"現データ段数"、"前データ段数"を定義する。変数"前データ段数"の初期値は"０"である。"フルパス名配列"の初期値は空配列である。
【００５５】
階層構造解析部２１は、変数"現データ段数"に、Ｓ１−３において抽出された階層段数を代入する（Ｓ１−４−１）。階層構造解析部２１は、変数"現データ段数"に格納されたデータと、変数"前データ段数"に格納されたデータと、を比較する（Ｓ１−４−２）。
【００５６】
変数"現データ段数"に格納されたデータが変数"前データ段数"に格納されたデータよりも小さい場合（Ｓ１−４−２）、階層構造解析部２１は、変数"フルパス名配列"に対し、変数"階層情報"に格納されたデータの空文字以外を持つ各要素データを代入する（Ｓ１−４−３）。たとえば、変数"フルパス名配列"に格納されたデータが（"ＴＯＰ"，"ＴＯＰ１"，"ＴＯＰ１−１"，"ＵＮＩＴ＿Ｂ"，""）であり、変数"階層情報"に格納されたデータが（""，""，"ＴＯＰ１−２"，""，""）である場合、階層構造解析部２１は変数"フルパス名配列"内のデータを（"ＴＯＰ"，"ＴＯＰ１"，"ＴＯＰ１−２"，"ＵＮＩＴ＿Ｂ"，""）に更新する。そして、階層構造解析部２１は、変数"フルパス名配列"に格納されたデータにおいて、変数"現データ段数"に格納された整数値の示す要素以降のデータをクリアする（Ｓ１−４−４）。例えば変数"フルパス名配列"に格納されたデータが（"ＴＯＰ"，"ＴＯＰ１"，"ＴＯＰ１−２"，"ＵＮＩＴ＿Ｂ"，""）であり、変数"現データ段数"に格納されたデータが"２"である場合、階層構造解析部２１は変数"フルパス名配列"内のデータを（"ＴＯＰ"，"ＴＯＰ１"，"ＴＯＰ１−２"，""，""）に更新する。
【００５７】
変数"現データ段数"に格納されたデータが変数"前データ段数"に格納されたデータよりも大きい場合（Ｓ１−４−２）、階層構造解析部２１は、変数"フルパス名配列"に格納されたデータのうち、変数"現データ段数"に格納された整数値が示す要素に対して変数"階層情報"に格納されたデータの対応要素データを代入する（Ｓ１−４−５）。例えば、変数"フルパス名配列"に格納されたデータが（"ＴＯＰ"，"ＴＯＰ１"，""，""，""）、変数"現データ段数"に格納されたデータが"２"、変数"階層情報"に格納されたデータが（""，""，"ＴＯＰ１−１"，""，""）である場合、階層構造解析部２１は、変数"フルパス名配列"の格納データを（"ＴＯＰ"，"ＴＯＰ１"，"ＴＯＰ１−１"，""，""）に更新する。
【００５８】
変数"現データ段数"に格納されたデータが変数"前データ段数"に格納されたデータと等しい場合（Ｓ１−４−２）、階層構造解析部２１は、変数"フルパス名配列"に格納されたデータのうち、変数"現データ段数"に格納された整数値が示す要素を、変数"階層情報"に格納されたデータの対応要素データを用いて書き換える（Ｓ１−４−６）。たとえば、変数"現データ段数"に格納されたデータが（"ＴＯＰ"，"ＴＯＰ１"，"ＴＯＰ１−１"，"ＵＮＩＴ＿Ａ"，""）、変数"現データ段数"に格納されたデータが"３"、変数"階層情報"に格納されたデータが（""，""，""，"ＵＮＩＴ＿Ｂ"，""）である場合、階層構造解析部２１は変数"フルパス名配列"の格納データを（"ＴＯＰ"，"ＴＯＰ１"，"ＴＯＰ１−２"，"ＵＮＩＴ＿Ｂ"，""）に更新する。
【００５９】
次に、階層構造解析部２１は、変数"フルパス名配列"の格納データのうち、空文字ではない各要素を、セパレータ文字列"／"により結合したフルパス名を抽出する（Ｓ１−４−７）。例えば変数"フルパス名配列"の格納データが（"ＴＯＰ"，"ＴＯＰ１"，"ＴＯＰ１−１"，"ＵＮＩＴ＿Ａ"，""）である場合、フルパス名として"ＴＯＰ／ＴＯＰ１／ＴＯＰ１−１／ＵＮＩＴ＿Ａ"が抽出される。抽出したフルパス名は、後の処理Ｓ１−６において階層構造解析情報９のフルパス名９４にマッピングされる。
【００６０】
そして、解析構造解析部２１は、変数"前データ段数"に格納されたデータを変数"現データ段数"に格納されたデータにより上書きする（Ｓ１−４−８）。
【００６１】
図１１は、フルパス名の解析（Ｓ１−４）における各変数値の遷移を示す図である。図示したように、変数"現データ段数"に格納されたデータと変数"前データ段数"に格納されたデータと、の比較に応じて、フルパス名配列の各要素の値、及び空文字となる要素数が変化する。
【００６２】
図８の説明に戻る。階層構造解析部２１は、現在処理を行っているデータ列が階層構造情報４の最終行のデータであるか否かを判定する（Ｓ１−５）。最終行のデータではない場合（Ｓ１−５：Ｎｏ）、階層構造解析部２１は、階層構造情報４の次の行に対してＳ１−１〜Ｓ１−４の処理を行う。一方、階層構造情報４の最終行のデータである場合（Ｓ１−５：Ｙｅｓ）、階層構造解析部２１は、Ｓ１−１〜Ｓ１−４において抽出した情報を用いて階層構造解析情報９を生成する（Ｓ１−６）。
【００６３】
図１２は、図３に示す階層構造情報４から生成した階層構造解析情報９を示す図である。図４に示した各インスタンス（例えば、"ＴＯＰ"、"ＴＯＰ1−１"，"ＵＮＩＴ＿Ａ"等）毎にデータ列が生成されている。
【００６４】
階層構造解析情報９は、各回路の種別（既存回路であるか、生成回路であるか）の情報（階層種別９１）、最上位階層回路内での階層段数（階層段数９２）、最上位階層回路内でのフルパス名（フルパス名９４）、等の情報を含む詳細な解析情報である。ユーザは、階層構造情報４のような簡易なフォーマットのデータを入力するのみで、階層構造解析情報９のような詳細な解析情報を得ることができる。これにより、ユーザによる階層構造の入力の工数を削減することができる。
【００６５】
次に、既存回路解析部２２による既存回路接続情報生成処理（Ｓ２）について説明する。既存回路解析部２２には、Ｓ１において生成された階層構造解析情報９及び既存回路端子情報５が入力される。
【００６６】
図１３は、既存回路解析部２２による既存回路接続情報生成処理（Ｓ２）の詳細を示すフローチャートである。既存回路解析部２２は、階層構造解析情報９及び既存回路端子情報５に基づいて、既存回路接続情報１０を生成する。
【００６７】
図１４は、既存回路接続情報１０のデータフォーマットを示す図である。既存回路接続情報１０には、接続元フルパス名１０１、接続信号名１０２、端子名１０３、端子エイリアス１０４、端子Ｂｉｔ幅１０５、接続先フルパス名１０６、オープンクランプ処理設定（Ｏｐｅｎ／Ｃｌａｍｐ）１０７、及び端子入出力（ｉｎ／ｏｕｔ）１０８が設定される。これらの項目には、階層構造解析情報９または既存回路端子情報５から情報がマッピングされる。当該マッピング処理の詳細は、後述する。
【００６８】
図１３に戻り、既存回路接続情報生成処理（Ｓ２）の各処理の説明を行う。既存回路解析部２２は、Ｓ１において生成された階層構造解析情報９を１行読み出す（Ｓ２−１）。続いて、既存回路解析部２２は、読み出した行の階層種別９１が"ＵＮＩＴ"であるか否かを判定する（Ｓ２−２）。読み出した行の階層種別９１が"ＵＮＩＴ"ではない場合（Ｓ２−２：Ｎｏ）、既存回路解析部２２は階層構造解析情報９の次の１行を読み出す（Ｓ２−１）。
【００６９】
読み出したデータ行の階層種別９１が"ＵＮＩＴ"である場合（Ｓ２−２：Ｙｅｓ）、既存回路解析部２２は、階層構造解析情報９から読み出したデータ行の接続情報ファイル名９５に記載された既存回路端子情報５のファイル（例えば"ＵＮＩＴ＿Ａ．ＣＳＶ"）を１行読み出す（Ｓ２−３）。
【００７０】
既存回路解析部２２は、階層構造解析情報９のデータ行と既存回路端子情報５のデータ行との照合処理を行う（Ｓ２−４）。詳細には、既存回路解析部２２は、機能回路端子情報５のファイル（例えば"ＵＮＩＴ＿Ａ．ＣＳＶ"）からの読み出し行に含まれる情報と、階層構造解析情報９からの読出し行に含まれる情報と、を結合したデータ行を生成する（Ｓ２−４）。当該照合処理の概要を図１５に示す。
【００７１】
既存回路解析部２２は、階層構造解析情報９のフルパス名９４を接続元フルパス名１０１に対応づける。既存回路解析部２２は、機能回路端子情報５の端子接続先５４を抽出し、抽出したデータ（例えば"ＵＮＩＴ＿Ｃ"）をインスタンス名に持つデータ行を階層構造解析情報９から読み出し、当該行の機能回路短縮名９６（例えば"Ｃ"）を読み出す。さらに、既存回路解析部２２は、端子エイリアス５２を読み出す。同時に、既存回路解析部２２は、処理中の階層構造解析情報９のデータ行から機能回路短縮名９６を読み出す。既存回路解析部２２は、これらの読み出した情報を出力側の機能回路短縮名、入力側の機能回路短縮名、端子エイリアスを区切り文字で区切った名称（"Ｃ＿Ａ＿Ｓｉｇ＿ａ"）を接続信号名１０２に対応づける。
【００７２】
既存回路解析部２２は、既存回路端子情報５の端子名５１を端子名１０３に対応づける。既存回路解析部２２は、既存回路端子情報５の端子エイリアス５２を端子エイリアス１０４に対応づける。既存回路解析部２２は、既存回路端子情報５の端子Ｂｉｔ幅５３を端子Ｂｉｔ幅１０５に対応づける。
【００７３】
既存回路解析部２２は、既存回路端子情報５の端子接続先５４を抽出し、抽出したデータ（例えば"ＵＮＩＴ＿Ｃ"）をインスタンス名に持つデータ行を階層構造解析情報９から読み出し、当該行のフルパス名（例えば"ＴＯＰ／ＴＯＰ１／ＴＯＰ１−１／ＵＮＩＴ＿Ｃ"）を抽出する。既存回路解析部２２は、抽出したフルパス名を接続先フルパス名１０６に対応づける。
【００７４】
既存回路解析部２２は、既存回路端子情報５のオープンクランプ処理設定（Ｏｐｅｎ／Ｃｌａｍｐ）５５をオープンクランプ処理設定（Ｏｐｅｎ／Ｃｌａｍｐ）１０７に対応づける。既存回路解析部２２は、既存回路端子情報５の端子入出力（ｉｎ／ｏｕｔ）５６を端子入出力（ｉｎ／ｏｕｔ）１０８に対応づける。
【００７５】
図１３の説明に戻る。既存回路解析部２２は、既存回路端子情報５の全てのデータ行が読み込まれたかを判定する（Ｓ２−５）。既存回路端子情報５の読込みが終了していない場合（Ｓ２−５：Ｎｏ）、既存回路解析部２２はＳ２−３及びＳ２−４を繰り返し実行する。
【００７６】
既存回路端子情報５の読込みが終了した場合（Ｓ２−５：Ｙｅｓ）、既存回路解析部２２は、階層構造解析情報９の全行の読み込みが終了したかを判定する（Ｓ２−６）。階層構造解析情報９の全行の読み込みが終了していない場合（Ｓ２−６：Ｎｏ）、既存回路解析部２２は、Ｓ２−１〜Ｓ２−５の処理を繰り返し行う。階層構造解析情報９の全行の読み込みが終了した場合（Ｓ２−６：Ｙｅｓ）、既存回路解析部２２は、Ｓ２−４において生成したデータ行を書込んだファイルである既存回路接続情報１０を出力する（Ｓ２−７）。
【００７７】
図１６は、図５に示す既存回路端子情報５、及び図１２に示す階層構造解析情報９を基に生成された既存回路接続情報１０を示す図である。既存回路接続情報１０は、接続信号名１０２を基準にソートされて出力される。図１６では、接続信号名１０２についてアルファベット順となるようにソートされている。
【００７８】
次に、接続情報判定部２３による接続情報判定処理（Ｓ３）について説明する。接続情報判定部２３には、Ｓ２において生成された既存回路接続情報１０が入力される。図１７は、接続情報判定部２３による接続情報判定処理（Ｓ３）の詳細を示すフローチャートである。
【００７９】
接続情報判定部２３は、比較用の配列変数"信号接続１"、"信号接続２"を定義する。接続情報判定部２３は、既存回路接続情報１０の先頭行から順に１行読み出し、読み出し行を変数"信号接続１"に格納する（Ｓ３−１）。例えば、接続情報判定部２３は、既存回路接続情報１０からデータ行（"ＴＯＰ／ＴＯＰ１／ＴＯＰ１−１／ＵＮＩＴ＿Ａ"，"Ｃ＿Ａ＿Ｓｉｇ＿ａ"，"Ｓｉｇ＿ａ"，"Ｓｉｇ＿ａ"，"１"，"ＴＯＰ／ＴＯＰ１／ＴＯＰ１−１／ＵＮＩＴ＿Ｃ"，""，"Ｉ"）を読み出し、変数"信号接続１"に代入する。
【００８０】
接続情報判定部２３は、既存回路接続情報１０のＳ３−１において読み出した行の次の１行を読み出し、読み出し行を変数"信号接続２"に代入する（Ｓ３−２）。
【００８１】
接続情報判定部２３は、変数"信号接続１"内に格納されたデータに含まれる信号接続名データと、変数"信号接続２"内に格納されたデータに含まれる信号接続名データと、を比較する（Ｓ３−３）。両者が一致しない場合、接続情報判定部２３は、変数"信号接続１"内に格納されたデータにオープンクランプ処理の設定がされているか否かを判定する（Ｓ３−７）。すなわち、接続情報判定部２３は、オープンクランプ処理の設定欄に空文字が設定されているか否かを判定する。
【００８２】
オープンクランプ処理の設定がされている場合（Ｓ３−７：Ｙｅｓ）、接続情報判定部２３は、変数"信号接続２"内に格納されたデータを変数"信号接続１"にコピー（上書き）する（Ｓ３−８）。そして、接続情報判定部２３は、Ｓ３−２から処理を再開する。
【００８３】
一方、オープンクランプ処理の設定がなされていない場合（Ｓ３−７：Ｎｏ）、オープンクランプにかかる端子ではなく、かつ、信号接続先がない端子が存在することとなる。よって、接続情報判定部２３は、処理中のデータ行にエラーが有ることを記載した接続判定情報６を出力し、処理を終了する。
【００８４】
変数"信号接続１"内に格納されたデータに含まれる信号接続名データと、変数"信号接続２"内に格納されたデータに含まれる信号接続名データと、が一致する場合（Ｓ３−３）、接続情報判定部２３は、信号接続の一致性を判定する（Ｓ３−４）。詳細には、接続情報判定部２３は、変数"信号接続１"内に格納されたデータに含まれる接続元フルパス名と変数"信号接続２"内に格納されたデータに含まれる接続先フルパス名、及び変数"信号接続１"内に格納されたデータに含まれる接続先フルパス名と変数"信号接続２"内に格納されたデータに含まれる接続元フルパス名、が一致していること、を判定する（Ｓ３−４）。
【００８５】
フルパス名が一致していない場合、接続情報判定部２３は、フルパス名が一致しない旨を記載した接続判定情報６を出力し、処理を終了する。
【００８６】
フルパス名が夫々一致している場合、接続情報判定部２３は、変数"信号接続１"内に格納されたデータに含まれるビット幅と、変数"信号接続２"内に格納されたデータに含まれるビット幅と、が一致するか否かを判定する（Ｓ３−５）。
【００８７】
ビット幅が一致していない場合、接続情報判定部２３は、ビット幅が一致しない旨を記載した接続判定情報６を出力し、処理を終了する。
【００８８】
ビット幅が一致している場合、接続情報判定部２３は、変数"信号接続１"内に格納されたデータに含まれる端子入出力（ｉｎ／ｏｕｔ）と、変数"信号接続２"内に格納されたデータに含まれる端子入出力（ｉｎ／ｏｕｔ）と、の比較を行う（Ｓ３−６）。一方の値が"Ｉ（入力）"であり、他方の値が"Ｏ（出力）"である場合、接続情報判定部２３は、端子入出力の設定が正常と判断する。それ以外の場合には、接続情報判定部２３は、端子入出力の設定が異常と判断する。
【００８９】
端子入出力（ｉｎ／ｏｕｔ）の設定が異常と判定した場合、接続情報判定部２３は、端子入出力（ｉｎ／ｏｕｔ）の設定が異常である旨を記載した接続判定情報６を出力し、処理を終了する。
【００９０】
一方、端子入出力（ｉｎ／ｏｕｔ）の設定が正常と判定した場合、接続情報判定部２３は、既存回路接続情報１０の全行の読み込みが終了したかを判定する（Ｓ３−９）。既存回路接続情報１０の全行の読み込みが終了していない場合（Ｓ３−９：Ｎｏ）、接続情報判定部２３は、Ｓ３−１〜Ｓ３−８の処理を再度行う。
【００９１】
既存回路接続情報１０の全行の読み込みが終了した場合（Ｓ３−９：Ｙｅｓ）、接続情報判定部２３は、既存回路接続情報１０のデータ行をソートして出力する（Ｓ３−１０）。当該ソートは、端子間の信号接続にかかるデータ行が上部に配置され、オープンクランプ処理にかかるデータ行が下部に配置されるように行われる。
【００９２】
図１８は、接続情報判定部２３によるＳ３−１０の処理後の既存回路接続情報１０を示す図である。上部に信号接続を示すデータ列が配置され、２行が組となるように構成される。下部にオープンクランプ処理にかかるデータ列が１行ごとに配置される。
【００９３】
上述のように、接続情報判定部２３は、Ｓ２にて生成された既存回路解析情報１０に適切な信号接続が設定されているかを判定する（Ｓ３）。接続情報判定部２３は、適切な信号接続が設定されていない場合には、エラー情報を出力して処理を終了する。エラー情報を参照することにより、ユーザは、設定情報の誤りを認識でき、容易に階層構造情報４または既存回路端子情報５を修正することができる。
【００９４】
さらに、適切な信号接続が設定されていない場合にその時点で処理を終了することにより、本実施の形態にかかる回路記述生成装置は誤った設定を持つ回路記述を生成することがなくなる。これにより、回路記述生成装置が生成する回路記述（ＨＤＬ記述）の品質を向上することができる。
【００９５】
なお、接続情報判定部２３がエラー情報を出力した場合であっても後述の処理（Ｓ４、Ｓ５）を続けることは可能であるが、この場合にはユーザが接続判定結果６を参照して後述の生成回路端子情報７、ＨＤＬ記述８を手動で修正しなければならない。
【００９６】
次に、生成回路解析部２４による生成回路内部・端子情報生成処理（Ｓ４）について説明する。生成回路解析部２４には、Ｓ３においてソートされた既存回路接続情報１０が入力される。生成階層解析部２４は、既存回路接続情報１０から、生成回路内部情報１１と、生成回路端子情報１２と、を生成する。
【００９７】
図１９は、生成回路内部情報１１のデータフォーマットを示す図である。生成回路内部情報１１は、生成回路の内部においてどのように信号接続がなされているかを示す情報である。生成回路内部情報１１には、処理階層１１１、接続信号名１１２、接続インスタンス１１３、インスタンス端子名１１４、及びオープンクランプ処理設定（Ｏｐｅｎ／Ｃｌａｍｐ）１１５が設定される。
【００９８】
図２０は、生成回路端子情報１２のデータフォーマットを示す図である。生成回路端子情報１２は、生成回路の端子の情報である。生成回路端子情報１２は、既存回路端子情報５とほぼ同様のデータフォーマットを持つ。生成回路端子情報１２には、処理階層１２１、接続信号名１２２、端子名１２３、端子エイリアス１２４、端子Ｂｉｔ幅１２５、接続先名１２６、オープンクランプ処理設定（Ｏｐｅｎ／Ｃｌａｍｐ）１２７、及び端子入出力（ｉｎ／ｏｕｔ）１２８が設定される。
【００９９】
図２１は、生成回路解析部２４による生成回路内部・端子情報生成処理（Ｓ４）の詳細を示すフローチャートである。
【０１００】
生成回路解析部２４は、比較用の配列変数として"信号接続１"、"信号接続２"を定義する。生成回路解析部２４は、既存回路接続情報１０から１行読み出し、読み出したデータを変数"信号接続１"に代入する（Ｓ４−１）。例えば、"信号接続１"には、（"ＴＯＰ／ＴＯＰ１／ＴＯＰ１−１／ＵＮＩＴ＿Ａ","Ｃ＿Ａ＿Ｓｉｇ＿ａ"，"Ｓｉｇ＿ａ"，"Ｓｉｇ＿ａ"，"１"，"ＴＯＰ／ＴＯＰ１／ＴＯＰ１−１／ＵＮＩＴ＿Ｃ"，""，"Ｉ"）というデータが代入される。生成回路解析部２４は、既存回路接続情報１０から次の１行を読み出し、読み出したデータを変数"信号接続２"に代入する（Ｓ４−２）。
【０１０１】
生成回路解析部２４は、変数"信号接続１"に格納されたデータに含まれる接続信号名と、変数"信号接続２"に格納されたデータに含まれる接続信号名と、を比較する（Ｓ４−３）。両者が一致する場合、生成回路解析部２４は、生成回路解析処理を行う（Ｓ４−４）。一方、両者が一致しない場合、生成回路解析部２４は、オープンクランプ処理を行う（Ｓ４−５）。
【０１０２】
図２２は、生成回路解析処理（Ｓ４−４）の詳細を示すフローチャートである。生成回路解析部２４は、比較用の配列変数"階層構造１"を定義する。生成回路解析部２４は、変数"信号接続１"に格納されたデータから接続元フルパス名を抽出し、セパレータ文字列"／"を分割単位として用いた文字列を"階層構造１"に代入する（Ｓ４−４−１）。例えば、生成回路解析部２４は、インスタンス名"ＴＯＰ／ＴＯＰ１／ＴＯＰ１−１／ＵＮＩＴ＿Ｃ"を抽出し、変数"階層構造１"に各文字列を代入する。この場合、変数"階層構造１"内には、（"ＴＯＰ"，"ＴＯＰ１"，"ＴＯＰ１−１"，"ＵＮＩＴ＿Ｃ"）というデータが格納される。同様に、生成回路解析部２４は、比較用の配列変数"階層構造２"を定義する。生成回路解析部２４は、変数"信号接続２"に格納されたデータから接続元フルパス名を抽出して変数"階層構造２"に代入する（Ｓ４−４−２）。
【０１０３】
生成回路解析部２４は、解析処理に用いる変数"結果フラグ"、変数"カウント"、配列変数"確認階層"を定義する（Ｓ４−４−３）。変数"結果フラグ"及び配列変数"確認階層"には、文字列が格納される。変数"カウント"には整数値が格納される。生成回路解析部２４は、変数"結果フラグ"の初期値として"一致"、変数"カウント"の初期値として"０"、変数"確認階層"の初期値として"ＴＯＰ"を代入する（Ｓ４−４−３）。
【０１０４】
次に、生成回路解析部２４は、変数"カウント"に格納されたデータを配列変数"階層構造１"、"階層構造２"のインデックスとしてデータを抽出する。例えば、"階層構造１"に格納されたデータが（"ＴＯＰ"，"ＴＯＰ１"，"ＴＯＰ１−１"，"ＵＮＩＴ＿Ｃ"）であり、変数"カウント"に格納されたデータが"１"である場合、生成回路解析部２４は、"ＴＯＰ１"を抽出する。生成回路解析部２４は、配列変数"階層構造１"、"階層構造２"から抽出した文字列が一致するかを判定する（Ｓ４−４−４）。
【０１０５】
配列変数"階層構造１"、"階層構造２"から抽出した文字列が一致する場合（Ｓ４−４−４）、生成階層解析部２４は、変数"結果フラグ"に"一致"を代入する（Ｓ４−４−５）。生成階層解析部２４は、配列変数"階層構造１"または配列変数"階層構造２"から抽出した文字列を変数"確認階層"に代入する。例えば、配列変数"階層構造１"、"階層構造２"から抽出した文字列がともに"ＴＯＰ１"である場合、生成階層解析部２４は、変数"確認階層"に"ＴＯＰ１"を代入する（Ｓ４−４−６）。
【０１０６】
配列変数"階層構造１"、"階層構造２"から抽出した文字列が一致しない場合（Ｓ４−４−４）、生成階層解析部２４は、変数"結果フラグ"に格納されたデータが"一致"であるかを判定する（Ｓ４−４−７）。
【０１０７】
変数"結果フラグ"に格納されたデータが"一致"である場合、生成階層解析部２４は、処理中の既存回路接続情報１０のデータ列から生成回路内部情報１１のデータ列を生成する（Ｓ４−４−８）。具体的には、生成階層解析部２４は、変数"確認階層"に格納されたデータを処理階層１１１に対応づける。生成階層解析部２４は、接続信号名１０２、端子エイリアス１０４、オープンクランプ処理設定（Ｏｐｅｎ／Ｃｌａｍｐ）１０７をそれぞれ接続信号名１１２、インスタンス端子名１１４、オープンクランプ処理設定（Ｏｐｅｎ／Ｃｌａｍｐ）１１５に対応づける。さらに、生成階層解析部２４は、"階層構造１"、"階層構造２"から抽出した文字列を接続インスタンス１１３に対応づける。
【０１０８】
変数"結果フラグ"に格納されたデータが"一致"ではない場合、生成階層解析部２４は、処理中の既存回路接続情報１０のデータ列から生成回路端子情報１２を生成する（Ｓ４−４−９）。具体的には、生成階層解析部２４は、変数"確認階層"に格納されたデータを処理階層１２１に対応づける。生成階層解析部２４は、接続信号名１０２、端子名１０３、端子エイリアス１０４、端子Ｂｉｔ幅１０５、オープンクランプ処理設定（Ｏｐｅｎ／Ｃｌａｍｐ）１０７、端子入出力（ｉｎ／ｏｕｔ）１０８をそれぞれ接続信号名１２２、端子名１２３、端子エイリアス１２４、端子Ｂｉｔ幅１２５、オープンクランプ処理設定（Ｏｐｅｎ／Ｃｌａｍｐ）１２７、端子入出力（ｉｎ／ｏｕｔ）１２８に対応づける。生成階層解析部２４は、"階層構造２"から抽出した文字列を接続先名１２６に対応づける。
【０１０９】
Ｓ４−４−８またはＳ４−４−９の処理の後に、生成回路解析部２４は、変数"結果フラグ"に文字列"不一致"を代入する（Ｓ４−４−１０）。
【０１１０】
Ｓ４−４−６またはＳ４−４−１０の処理の後に、生成回路解析部２４は、変数"カウント"に格納された整数値を１増加させる（Ｓ４−４−１１）。そして、生成回路解析部２４は、配列変数"階層構造１"、"階層構造２"の末尾の文字列までを読み込んだかを判定する（Ｓ４−４−１２）。読込みが終了していない場合（Ｓ４−４−１２：Ｎｏ）、生成回路解析部２４は、Ｓ４−４−４〜Ｓ４−４−１１の処理を再度実行する。一方、読込みが終了した場合（Ｓ４−４−１２：Ｙｅｓ）、生成回路解析部２４は、生成回路解析処理（Ｓ４−４）を終了する。
【０１１１】
図２３は、Ｓ４−４−４〜Ｓ４−４−１２の処理概念を示す概念図である。配列変数"階層構造１"、"階層構造２"の同一インデックスを持つ文字列が比較され、一致している間は変数"確認階層"に格納された文字列が比較値により書き変わる。文字列が不一致となった場合には、次のＳ４−４−５の処理において結果フラグの値が"不一致"として扱われる。
【０１１２】
図２３のインデックス[２]の例では、"ＴＯＰ１−１"と"ＴＯＰ１−２"が不一致であり、かつ変数"結果フラグ"の値が"一致"である。この場合、生成回路解析部２４は、処理中の既存回路接続情報１０のデータ列から生成回路内部情報１１のデータ列を生成する。
【０１１３】
同様に図２３のインデックス[３]の例では、"ＵＮＩＴ＿Ａ"と"ＵＮＩＴ＿Ｃ"が不一致であり、かつ変数"結果フラグ"の値が"不一致"である。この場合、生成階層解析部２４は、処理中の既存回路接続情報１０のデータ列から生成回路端子情報１２のデータ列を生成する。
【０１１４】
続いて、オープンクランプ処理（Ｓ４−５）の詳細について説明する。図２４は、オープンクランプ処理の詳細を示すフローチャートである（Ｓ４−５）。
【０１１５】
生成回路解析部２４は、Ｓ４−４の処理と同様に比較用の配列変数"階層構造１"を定義する。生成回路解析部２４は、変数"信号接続１"に格納されたデータからインスタンス名を抽出し、セパレータ文字列"／"を分割単位として用いた文字列を"階層構造１"に代入する（Ｓ４−５−１）。例えば変数"信号接続１"に（"ＴＯＰ／ＴＯＰ１／ＴＯＰ１−１／ＵＮＩＴ＿Ａ","Ａ＿Ｓｉｇ＿ａａ＿ｃｍｐ"，"Ｓｉｇ＿ａａ"，"Ｓｉｇ＿ａａ＿ｃｍｐ"，"１"，""，"１'ｂ０"，"Ｉ"）が格納されている場合、生成回路解析部２４は、"階層構造１"に（"ＴＯＰ"，"ＴＯＰ１"，"ＴＯＰ１−１"，"ＵＮＩＴ＿Ａ"）を代入する。
【０１１６】
生成回路解析部２４は、Ｓ４−４の処理と同様に比較用の配列変数"階層構造２"を定義する。生成回路解析部２４は、変数"信号接続２"に格納されたデータから接続元フルパス名を抽出し、セパレータ文字列"／"を分割単位として用いた文字列を"階層構造２"に代入する（Ｓ４−５−２）。
【０１１７】
生成回路解析部２４は、変数"階層構造１"の配列末尾から数えて２番目にある要素をオープンクランプにかかるＨＤＬ記述を行う生成回路と判断する（Ｓ４−５−３）。例えば、変数"階層構造１"に（"ＴＯＰ"，"ＴＯＰ１"，"ＴＯＰ１−１"，"ＵＮＩＴ＿Ａ"）が格納されている場合、生成回路解析部２４は、"ＴＯＰ１−１"を処理対象の生成回路と判定する（Ｓ４−５−３）。
【０１１８】
生成回路解析部２４は、Ｓ４−５−３の処理と同様に、変数"階層構造２"の配列末尾から数えて２番目にある要素をオープンクランプにかかるＨＤＬ記述を行う生成回路と判断する（Ｓ４−５−４）。
【０１１９】
生成回路解析部２４は、変数"信号接続１"に格納されたデータを基に、オープンクランプに関する生成回路内部情報１１のデータ列を生成する（Ｓ４−５−５）。具体的には、生成回路解析部２４は、Ｓ４−５−３で処理対象階層と判定した回路（たとえば"ＴＯＰ１−１"）を処理階層１２１に対応づける。生成回路解析部２４は、接続信号名１０２、端子エイリアス１０４、オープンクランプ処理設定（Ｏｐｅｎ／Ｃｌａｍｐ）１０７をそれぞれ接続信号名１２２、インスタンス端子名１１４、オープンクランプ処理設定（Ｏｐｅｎ／Ｃｌａｍｐ）１１５に対応づける。さらに、生成回路解析部２４は、変数"階層構造１"の配列末尾の要素を接続インスタンス１１３に対応づける。
【０１２０】
生成回路解析部２４は、変数"信号接続２"に格納されたデータを基に、オープンクランプに関する生成回路内部情報１１のデータ列を生成する（Ｓ４−５−６）。当該生成処理は、Ｓ４−５−５と略同一である。
【０１２１】
再び図２１を参照し、Ｓ４−４またはＳ４−５の後の処理について説明する。生成回路解析部２４は、既存回路接続情報１０の全てのデータ行を読み込んだか否かを判定する（Ｓ４−６）。読込み処理が終了していない場合（Ｓ４−６：Ｎｏ）、生成回路解析部２４は、Ｓ４−１〜Ｓ４−５の処理を再度行う。
【０１２２】
読込み処理が終了した場合（Ｓ４−６：Ｙｅｓ）、生成回路内部情報１１は、Ｓ４−４及びＳ４−５にて生成したデータ列を基に、生成回路内部情報１１と、生成回路端子情報１２と、を生成して出力する（Ｓ４−７）。
【０１２３】
図２５は、図１８に示した既存回路接続情報１０から生成された生成回路内部情報１１のデータ例を示す図である。例えば、１、２行目のデータは、生成回路ＴＯＰ１の内部において"Ｃ＿Ａ＿Ｓｉｇ＿ａ"という信号名により"ＴＯＰ１−１"と"ＴＯＰ１−２"とが接続されていることを示している。
【０１２４】
図２６は、図１８に示した既存回路接続情報１０から生成された生成回路端子情報１２のデータ例を示す図である。例えば、１行目のデータは、生成回路"ＴＯＰ１−１"は、既存回路"ＵＮＩＴ＿Ｃ"と接続する１ビット幅の入力端子を有することを示している。
【０１２５】
次に、回路記述生成部２５による回路記述生成処理（Ｓ５）について説明する。回路記述生成部２５には、Ｓ３にて生成された階層構造解析情報９、Ｓ４にて生成された生成回路内部情報１１及び生成回路端子情報１２が入力される。回路記述生成部２５は、これらの入力を基に、最上位階層回路及び生成回路のＨＤＬ記述８と、生成回路毎の生成回路端子情報７を生成して出力する。
【０１２６】
まず、回路記述生成部２５が生成するＨＤＬ記述８について説明する。図２７は、一般的なＨＤＬ記述の記述方式について示した図である。モジュール名を宣言し、当該モジュールに関するポート宣言、ワイヤー宣言、パラメータ宣言、及びモジュールを構成する各要素を定義する。
【０１２７】
回路記述生成部２５は、階層構造解析情報９、生成回路内部情報１１及び生成回路端子情報１２を基に、モジュール名、ポートリスト、ポート宣言、ネット宣言、モジュール構成要素名、ａｓｓｉｇｎ、ｉｎｓｔａｎｃｅに情報を代入することによりＨＤＬ記述を生成する。
【０１２８】
図２８は、回路記述生成処理（Ｓ５）の詳細を示すフローチャートである。また、図２９及び図３０は、回路記述生成処理（Ｓ５）の動作イメージを示す図である。
【０１２９】
回路記述生成部２５は、階層構造解析情報９から１行読み出し、階層種別９１が"Ｃｒｅａｔｅ"に設定されているか否かを判定する（Ｓ５−１）。階層種別９１が"Ｃｒｅａｔｅ"に設定されていない場合（Ｓ５−１：Ｎｏ）、階層記述生成部２５は、階層構造解析情報９から次の１行を読み出す。
【０１３０】
階層種別９１が"Ｃｒｅａｔｅ"に設定されている場合（Ｓ５−１：Ｙｅｓ）、回路記述生成部２５は、インスタンス名９３の値をＨＤＬ記述のモジュール名として設定する（図２９では、"ＴＯＰ１−１"をモジュール名に設定する。）（Ｓ５−３）。
【０１３１】
回路記述生成部２５は、Ｓ５−３で抽出したインスタンス名と、生成回路端子情報１２内の処理階層１２１と、を照合する（Ｓ５−４）。すなわち、回路記述生成部２５は、生成回路端子情報１２内の処理階層１２１にＳ５−３で抽出したインスタンス名（図２９では"ＴＯＰ１−１"）と同じ値を持つデータ列を抽出する。
【０１３２】
回路記述生成部２５は、Ｓ５−４で抽出したデータ列の接続信号名１２２及び端子入出力（ｉｎ／ｏｕｔ）１２８を参照して、ＨＤＬ記述のポートリスト及びポート宣言部を生成する（Ｓ５−５）。図２９では、"Ｃ＿Ａ＿Ｓｉｇ＿ａ"等の記述を含むポートリスト部、及び"ｉｎｐｕｔ Ｃ＿Ａ＿Ｓｉｇ＿ａ；"等の記述を含むポート宣言部が生成されている。
【０１３３】
回路記述生成部２５は、Ｓ５−３で抽出したインスタンス名と、生成回路内部情報１１内の処理階層１１１と、を照合する（Ｓ５−６）。すなわち、回路記述生成部２５は、生成回路内部情報１１内の処理階層１１１にＳ５−３で抽出したインスタンス名（図３０では"ＴＯＰ１−１"）と同じ値を持つデータ列を抽出する。
【０１３４】
回路記述生成部２５は、Ｓ５−５で抽出したデータ列の接続信号名１１２を参照して、ＨＤＬ記述のワイヤー宣言を生成する（Ｓ５−７）。図３０では、"ｗｉｒｅ Ｂ＿Ａ＿Ｓｉｇ＿ａ"）等の記述を含むワイヤー宣言を生成する。さらに、回路記述生成部２５は、接続インスタンス１１３、インスタンス端子名１１４、及びオープンクランプ処理設定（Ｏｐｅｎ／Ｃｌａｍｐ）１１５を参照してインスタンス宣言、及びインスタンス宣言内のポートリストを生成する（Ｓ５−７）。
【０１３５】
ここで、オープンクランプ処理設定（Ｏｐｅｎ／Ｃｌａｍｐ）１１５にクランプ指定（本例では、"１'ｂ０"または"１'ｂ１"）が指定されている場合、インスタンス宣言内の接続信号部の接続先指定をオープンクランプ処理設定（Ｏｐｅｎ／Ｃｌａｍｐ）１１５の値（たとえば"１'ｂ０"）にする。オープンクランプ処理設定（Ｏｐｅｎ／Ｃｌａｍｐ）１１５に"ＯＰＥＮ"が指定されている場合、インスタンス宣言内の接続信号部の接続先指定を空文字列に設定する。
【０１３６】
回路記述生成部２５は、Ｓ５−７までの処理により生成したＨＤＬ記述をファイル形式により出力する（Ｓ５−８）。図３０の例では、生成回路"ＴＯＰ１−１"についてのＨＤＬ記述を出力する。さらに、回路記述生成部２５は、Ｓ５−４にて抽出したデータ列から処理階層１２１の行を削除した生成回路端子情報７を出力する。すなわち、回路記述生成部２５は、生成回路毎に端子情報をファイルに分割して出力する。図３１は、生成回路"ＴＯＰ１−１"にかかる生成回路端子情報７の例を示す図である。生成回路端子情報７は、既存回路端子情報５と同一データフォーマットとなる。
【０１３７】
回路記述生成部２５は、階層構造解析情報９の読込みが終了しているか否かを判定する（Ｓ５−９）。読込みが完了していない場合（Ｓ５−９：Ｎｏ）、回路記述生成部２５は、Ｓ５−１〜Ｓ５−８の処理を繰り返す。これにより、最上位階層回路（"ＴＯＰ"）及び生成回路（例えば"ＴＯＰ"、"ＴＯＰ１"，"ＴＯＰ１−１"等）のＨＤＬ記述８及び生成回路端子情報７を生成することができる。
【０１３８】
読み込みが完了している場合（Ｓ５−９：Ｎｏ）、回路記述生成部２５は、全ての処理を完了する。
【０１３９】
続いて、本実施の形態にかかる回路記述生成装置の効果について説明する。本実施の形態にかかる回路記述生成装置は、最上位階層回路内の機能回路の多階層構造を解析した階層構造解析情報９を基に、一回（Ｓ１〜Ｓ５）の処理により、最上位階層回路及び生成回路のＨＤＬ記述を生成する。１回の生成処理により必要となる全てのＨＤＬ記述を生成できるため、開発のＴＡＴを大幅に削減することができる。
【０１４０】
さらに、本実施の形態にかかる回路記述生成装置を用いた回路記述生成では、階層構造情報４と、既存回路端子情報５と、を別の情報として管理することができる。これにより、例えば最上位階層回路の階層構造を変更する必要が生じた場合であっても、ユーザは階層構造情報４のみを修正すればよく、既存回路端子情報５を修正する必要が無くなる。これにより、ユーザの設計工数をさらに削減でき、設計試行を繰り返すことが容易となる。
【０１４１】
さらにまた、回路記述生成部２５は、最上位階層回路内の生成回路の端子情報を記述した生成回路端子情報７を生成する。これにより、以後の回路設計において生成回路の端子情報を設計に再利用することができる。ここで、生成回路毎に端子情報が生成されることにより、１つの生成回路単位での流用設計がより容易となる。
【０１４２】
生成される生成回路端子情報７は、既存回路端子情報５と略同一のデータフォーマットを持つ。そのため、生成回路端子情報７を新たな回路設計に容易に流用できるという効果も奏する。
【０１４３】
本実施の形態にかかる回路記述生成装置は、単なる端子間の接続だけでなく、端子のオープン設定（接続先を持たない設定）、端子のクランプ設定（端子出力を固定する設定）をも考慮した回路記述を生成することができる。これにより、本実施の形態にかかる回路記述生成装置では、より実用性の高い回路記述を生成することができる。
【０１４４】
＜実施の形態２＞
本発明の実施の形態２にかかる回路記述生成装置は、１の出力端子に対して、複数の入力端子が接続される１対多接続をサポートできることを特徴とする。実施の形態１にかかる回路記述生成装置と異なる処理を行う箇所について説明する。
【０１４５】
はじめに、１対多接続の概要と本実施の形態にかかる回路記述生成装置の処理概要を図３２及び図３３を参照して説明する。図３２は、既存回路ＵＮＩＴ＿Ａの１の出力端子がＵＮＩＴ＿Ｂ、ＵＮＩＴ＿Ｃ、ＵＮＩＴ＿Ｄの入力端子と接続されている様子を示す概念図である。図３３は、本実施の形態にかかる回路記述生成装置が生成する回路記述の概念を示す図である。図３３に示すように既存回路ＵＮＩＴ＿Ａの１の出力端子から仮想的な配線（Ｊｕｎｃ＿Ｓｉｇ＿ａ）を作成し、当該配線（Ｊｕｎｃ＿Ｓｉｇ＿ａ）から各回路（ＵＮＩＴ＿Ｂ、ＵＮＩＴ＿Ｃ、ＵＮＩＴ＿Ｄ）の入力端子への配線が配置されているような回路記述を生成する。なお、本例では、仮想的な配線を作成する階層を"ＴＯＰ１−１"としたが、必ずしもこれに限られることはない。本実施の形態にかかる回路記述生成装置は、１対多接続に関し、仮想的な配線を定義し、この配線との接続関係をＨＤＬに表わすように動作すればよい。以下に、この動作の一例を示す。
【０１４６】
以下に、既存回路解析部２２の処理について図３４のフローチャートを参照して説明する。既存回路解析部２２は、実施の形態１におけるＳ２−３までの処理を行う。すなわち、既存回路解析部２２は、階層構造解析情報９から階層種別が"ＵＮIＴ"に設定されているデータ行を読み出し、読み出したデータ行に対応する既存回路端子情報５からデータ行を読み出す。その後、既存回路解析部２２は、読み出したデータ行に記述された端子の接続情報がいわゆる１対多の接続にかかるものであるかを判定する（Ｓ２−８）。
【０１４７】
図３５は、既存回路解析部２２による１対多接続の解析（Ｓ２−８）に関する概念図である。既存回路解析部２２は、読み出した既存回路端子情報５内の端子接続先５４を確認し、２つ以上の接続先（"，"に区切られた文字列）があるかを確認する。２つ以上の接続先が設定されている場合、既存回路解析部２２は、１対多接続が設定されていると判定する。一方、２つ以上の接続先が設定されていない場合、既存回路解析部２２は、１対１接続が設定されていると判定する。
【０１４８】
１対多の接続が設定されていないと判定された場合（Ｓ２−８：Ｎｏ）、既存回路解析部２２は、実施の形態１と同様の処理を行う。
【０１４９】
１対多の接続が設定されていると判定された場合（Ｓ２−８：Ｙｅｓ）、既存回路解析部２２は、端子接続先５４に設定されているデータの個数と同数だけＳ２−３において読み出したデータ列を複製する。ここで、既存回路解析部２２は、端子入出力（ｉｎ／ｏｕｔ）５６に"Ｏ（出力）"の場合にのみデータ列を複製する。
【０１５０】
そして、図３５に示すように、既存回路解析部２２は、階層構造解析情報９のデータ行と既存回路端子情報５のデータ行との照合処理を行う（Ｓ２−４）。ここで、既存回路解析部２２は、本実施の形態において既存回路接続情報１０に設けられた項目Ｍｕｌｔｉ１０９に端子エイリアス５２の値を設定する。このような処理により、１対多接続の場合にのみ、Ｍｕｌｔｉ１０９にデータが設定される。既存回路解析部２２は、複製したデータの数だけ照合処理を行う（Ｓ２−１０）。Ｓ２−５〜Ｓ２−７の処理は、実施の形態１と同様であるため、詳細な説明は省略する。また、接続情報判定部２３による接続情報判定（Ｓ３）の処理については、実施の形態１と同様であるため、詳細な説明は省略する。  
【０１５１】
続いて、図３６を参照して本実施の形態にかかる生成回路解析部２４が生成する生成回路内部情報１１について説明する。生成回路内部情報１１には、Ｍｕｌｔｉ１１６が設けられ、既存回路接続情報のＭｕｌｔｉ１０９の値がＭｕｌｔｉ１１６にそのままコピーされる。次に、図３７を参照して本実施の形態にかかる生成回路解析部２４が生成する生成回路端子情報１２について説明する。生成回路端子情報１２には、Ｍｕｌｔｉ１２９が設けられ、既存回路接続情報のＭｕｌｔｉ１０９の値がＭｕｌｔｉ１２９にそのままコピーされる。なお、生成回路解析部２４の処理は、実施の形態１と略同一であるため、詳細な説明は省略する。
【０１５２】
次に、本実施の形態にかかる回路記述生成部２５の処理について説明する。図３８、図３９は本実施の形態にかかる回路記述生成部２５の処理を示すフローチャートである。さらに、図４０は、本実施の形態にかかる回路記述生成部２５の処理概念を示す図である。
【０１５３】
回路記述生成部２５は、実施の形態１と同一の方法によりＨＤＬ記述のポートリスト及びポート宣言部を生成する（Ｓ５−１〜Ｓ５−５）。次に、Ｓ５−３で抽出したインスタンス名と、生成回路内部情報１１内の処理階層１１１と、を照合する（Ｓ５−６）。すなわち、回路記述生成部２５は、生成回路内部情報１１内の処理階層１１１にＳ５−３で抽出したインスタンス名（図４０の例では"ＴＯＰ１−１"とする）と同じ値を持つデータ列を抽出する。
【０１５４】
回路記述生成部２５は、Ｓ５−４にて抽出した生成回路端子情報１２のデータ列のうち、Ｍｕｌｔｉ１２９にデータが設定されているデータ列を抽出する（Ｓ５−１０）。さらに、回路記述生成部２５は、Ｓ５−６にて抽出した生成回路内部情報１１のデータ列の内、Ｍｕｌｔｉ１１６にデータが設定されているデータ列、及びこのデータ列と対になるデータ列（接続信号名１１２に同一値が設定されているデータ列）を抽出する（Ｓ５−１０）。図４０（Ａ）の例では、回路記述生成部２５は、合計４行のデータ列を読み出している。回路記述生成部２５は、この抽出したデータ列に対し、Ｍｕｌｔｉ１２９、Ｍｕｌｔｉ１１６に同一の値を持つグループ毎に１対多接続の確認判定（Ｓ５−１１）及び１対多接続にかかるＨＤＬ記述の生成処理を行う。
【０１５５】
回路記述生成部２５は、Ｓ５−１０にて生成回路内部情報１１からＭｕｌｔｉ１１６にデータが設定されているデータ列を抽出したか否かを判定する（Ｓ５−１１）。抽出した場合（Ｓ５−１１：Ｙｅｓ）、回路記述生成部２５は、１対多接続が設定されていると判定する。抽出していない場合（Ｓ５−１１：Ｎｏ）、回路記述生成部２５は、１対多接続が設定されていないと判定し、実施の形態１のＳ５−７以降と同様の処理を行う。
【０１５６】
１対多接続が設定されている場合（Ｓ５−１１：Ｙｅｓ）、回路記述生成部２５は、Ｓ５−１０にて抽出したデータ列のうち、Ｍｕｌｔｉ１２９又はＭｕｌｔｉ１１６にデータが設定されているデータ列の個数を確認し、当該個数を１対多接続における入力端子側の個数と特定する（Ｓ５−１２）。図４０（Ｂ）の例では、Ｍｕｌｔｉ１２９又はＭｕｌｔｉ１１６に３つのデータが設定されているため、回路記述生成部２５は、１対３の接続（１つの出力端子に対して３つの入力端子が接続される接続）であると判定する。
【０１５７】
回路記述生成部２５は、Ｓ５−１２にて判定した１対多接続の入力端子数が１個以上であることを確認する（Ｓ５−１３）。２個以上のデータが設定されていない場合（Ｓ５−１３：Ｎｏ）、回路記述生成部２５は、不正なデータが抽出されていると判定し、エラー内容をファイルに記述して処理を終了する（Ｓ５−１７）。
【０１５８】
２個以上のデータが設定されている場合（Ｓ５−１３：Ｙｅｓ）、回路記述生成部２５は、１対多接続における出力端子側（いわゆる"１"側）のインスタンス名を確認する（Ｓ５−１４）。このインスタンス名の確認には、Ｓ５−１０にて抽出したデータ列のうち、Ｍｕｌｔｉ１１６にデータが設定されていないデータ列の接続インスタンス名１１３を出力端子側のインスタンス名と認識する。図４０（Ｃ）の例では、回路記述生成部２５は、ＵＮＩＴ＿Ａを１対多接続における出力端子側のインスタンス名と認識する。
【０１５９】
回路記述生成部２５は、Ｓ５−１４にて確認した１対多接続における出力端子側のインスタンス名のデータを確認する。ここで、Ｍｕｌｔｉ１２９、Ｍｕｌｔｉ１１６に同一の値を持つグループでは、出力側のインスタンス名（接続インスタンス名１１３）に全て同じデータが入力される、すなわちデータは１種類であることになる。なお、出力側のインスタンス名（接続インスタンス名１１３）は、図４０（Ｃ）の例では確認対象データは１個であるが、同一階層内において１対多接続を行う場合に複数設定される。
【０１６０】
回路記述生成部２５は、Ｓ５−１４にて確認した１対多接続における出力端子側のインスタンス名が全て同じ、すなわち１種類で有る場合、エラーではないと判定する（Ｓ５−１５：Ｙｅｓ）。一方、１種類ではない場合（Ｓ５−１５：Ｎｏ）、回路記述生成部２５は、正確な１対多接続の設定がなされていない等のエラーが生じているものと判定し、エラー内容をファイルに記述して処理を終了する（Ｓ５−１７）。
【０１６１】
回路記述生成部２５は、Ｓ５−１５の判定が成功の場合、１対多接続に関するＨＤＬ記述を生成する（Ｓ５−１６）。具体的な生成処理を、図３３、図４０、図４１を参照し、説明する。
【０１６２】
回路記述生成部２５は、Ｓ５−１１にて抽出したデータ列のＭｕｌｔｉ１１６、Ｍｕｌｔｉ１２９に格納されたデータ（図４０の例では、"Ｓｉｇ＿ａ"）を用いて、新たなワイヤー宣言を作成する。図４１の例では、"Ｊｕｎｃｔｉｏｎ"を示す"Ｊｕｎｃ"と、"Ｓｉｇ＿ａ"を結合した"Ｊｕｎｃ＿Ｓｉｇ＿ａ"という名称のワイヤー宣言を定義している。このワイヤー宣言により、各接続先へと接続されるワイヤー信号線が定義される。
【０１６３】
回路記述生成部２５は、このワイヤー宣言と、複数ある入力端子と、を接続する記述をａｓｓｉｇｎ文により定義する。詳細には、回路記述生成部２５は、入力端子側のデータ列の接続信号名１１２、接続信号名１２２のデータを用いてａｓｓｉｇｎ文を定義する。図４１の例では、"ａｓｓｉｇｎ  Ａ＿Ｃ＿Ｓｉｇ＿ａ  ＝  Ｊｕｎｃ＿Ｓｉｇ＿ａ；"等の定義を行う。
【０１６４】
続いて、回路記述生成部２５は、上記のワイヤー信号線（図４１の例では、"Ｊｕｎｃ＿ｓｉｇ＿ａ"という名称のワイヤー信号線）と、１対多接続の出力端子側の回路と、を接続する。図４１の例では、"ＵＮＩＴ＿Ａ  ＵＮＩＴ＿Ａ（  ．Ｓｉｇ＿ａ（Ｊｕｎｃ＿Ｓｉｇ＿ａ）  ）；"との記述によりワイヤー信号線と、１対多接続の出力端子側の回路と、の接続を定義している。
【０１６５】
このようにして、回路記述生成部２５は、１対多接続のＨＤＬ記述を生成している。１対多接続に関するＨＤＬ記述を生成処理（Ｓ５−１６）の後、回路記述生成部２５は、実施の形態１のＳ５−７以降と同様の処理を行う。
【０１６６】
上述した処理により、本実施の形態にかかる回路記述生成装置は、最上位階層回路内部に１対多接続が有る場合であっても最上位階層回路及び生成回路のＨＤＬ記述を生成することができる。
【０１６７】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。上述の回路記述生成処理は、任意のハードウェア記述言語により記載された回路記述生成処理に応用が可能である。
【０１６８】
上述の処理Ｓ１〜Ｓ５は、任意のコンピュータ内で動作するプログラムとして実現されてもよい。プログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（random access memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【０１６９】
１  入力部
２  処理部
２１  階層構造解析部
２２  既存回路解析部
２３  接続情報判定部
２４  生成回路解析部
２５  回路記述生成部
３  出力部
４  階層構造情報
５  既存回路端子情報
６  接続判定結果
７  生成回路端子情報
８  ＨＤＬ記述
９  階層構造解析情報
１０  既存回路接続情報
１１  生成回路内部情報
１２  生成回路端子情報
【図１】
2012089054.tif 000003
【図２】
2012089054.tif 000004
【図３】
2012089054.tif 000005
【図４】
2012089054.tif 000006
【図５】
2012089054.tif 000007
【図６】
2012089054.tif 000008
【図７】
2012089054.tif 000009
【図８】
2012089054.tif 000010
【図９】
2012089054.tif 000011
【図１０】
2012089054.tif 000012
【図１１】
2012089054.tif 000013
【図１２】
2012089054.tif 000014
【図１３】
2012089054.tif 000015
【図１４】
2012089054.tif 000016
【図１５】
2012089054.tif 000017
【図１６】
2012089054.tif 000018
【図１７】
2012089054.tif 000019
【図１８】
2012089054.tif 000020
【図１９】
2012089054.tif 000021
【図２０】
2012089054.tif 000022
【図２１】
2012089054.tif 000023
【図２２】
2012089054.tif 000024
【図２３】
2012089054.tif 000025
【図２４】
2012089054.tif 000026
【図２５】
2012089054.tif 000027
【図２６】
2012089054.tif 000028
【図２７】
2012089054.tif 000029
【図２８】
2012089054.tif 000030
【図２９】
2012089054.tif 000031
【図３０】
2012089054.tif 000032
【図３１】
2012089054.tif 000033
【図３２】
2012089054.tif 000034
【図３３】
2012089054.tif 000035
【図３４】
2012089054.tif 000036
【図３５】
2012089054.tif 000037
【図３６】
2012089054.tif 000038
【図３７】
2012089054.tif 000039
【図３８】
2012089054.tif 000040
【図３９】
2012089054.tif 000041
【図４０】
2012089054.tif 000042
【図４１】
2012089054.tif 000043
【図４２】
2012089054.tif 000044