(57)【要約】【課題】ステム全体の設計に必要な工数を削減することを課題とする。【解決手段】本願が開示する論理回路設計装置は、入力された論理回路ブロックのレジスタ情報を解析して論理回路の構成情報を取得する。そして、論理回路設計装置は、取得された論理回路の構成情報に基づいて、論路回路のレジスタ部と、論理回路のコア機能部の雛形とを生成する。また、論理回路設計装置は、レジスタ部とコア機能部とを包含するトップモジュールの雛形とのそれぞれについて、ハードウェアソースコードを生成する。さらに、論理回路設計装置は、取得された論理回路の構成情報に基づいて、論路回路の初期化用デバイスドライバ関数の雛形について、ソフトウェアソースコードを生成する。【選択図】図１
2010262412.tif 000002
【特許請求の範囲】
【請求項１】
入力された論理回路ブロックのレジスタ情報を解析して論理回路の構成情報を取得するレジスタ解析手段と、
前記レジスタ解析手段によって取得された論理回路の構成情報に基づいて、前記論路回路のレジスタ部と、前記論理回路のコア機能部の雛形と、前記レジスタ部とコア機能部とを包含するトップモジュールの雛形とのそれぞれについて、ハードウェアソースコードを生成するハードウェア記述生成手段と、
前記レジスタ解析手段によって取得された論理回路の構成情報に基づいて、前記論路回路の初期化用デバイスドライバ関数の雛形について、ソフトウェアソースコードを生成するソフトウェア記述生成手段と、
を有することを特徴とする論理回路設計装置。
【請求項２】
前記ハードウェア記述生成手段は、前記レジスタ解析手段によって取得された論理回路の構成情報を用いて、前記ハードウェアソースコードそれぞれの雛形を書き換えることで、前記ハードウェアソースコードを生成し、
前記ソフトウェア記述生成手段は、前記レジスタ解析手段によって取得された論理回路の構成情報を用いて、前記ソフトウェアソースコードの雛形を書き換えることで、前記ソフトウェアソースコードを生成することを特徴とする請求項１に記載の論理回路設計装置。
【請求項３】
ソフトウェアとハードウェアとを有するシステムのメモリマップを受け付けて、受け付けたメモリマップを解析し、前記システムの構成情報を取得するメモリ解析手段をさらに有し、
前記ハードウェア記述生成手段は、前記メモリ解析手段によって取得されたシステムの構成情報に基づいて、前記システムのバスモデルと、前記論理回路のバスインタフェースとのそれぞれについて、前記ハードウェアソースコードを生成することを特徴とする請求項１または２に記載の論理回路設計装置。
【請求項４】
前記ハードウェア記述生成手段は、論理検証が可能なトランザクションレベル記述と論理合成可能でクロックベースの検証が可能なレジスタトランスファレベル記述の少なくとも一方の形式で、前記ハードウェアソースコードを生成することを特徴とする請求項１に記載の論理回路設計装置。
【請求項５】
前記レジスタ解析手段は、前記論理回路ブロックの割り込み情報をさらに取得し、
前記ハードウェア記述生成手段は、前記レジスタ解析手段に取得された割り込み情報を用いて、割り込みコントローラを生成し、
前記ソフトウェア記述生成手段は、前記レジスタ解析手段に取得された割り込み情報を用いて、割り込み処理関数の雛形を生成することを特徴とする請求項１に記載の論理回路設計装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理回路設計装置に関する。
【背景技術】
【０００２】
従来より、システム設計者は、システムレベル設計装置で作成される論理合成可能なＲＴＬ（Register  Transfer  Level）と、論理合成ができないがＲＴＬと同等の機能を発揮するクロックベースモデルとを使用してシステムレベルの設計を行っている。
【０００３】
具体的には、システムレベル設計装置は、コ・デザイン装置を用いて、システムのハードウェア部分とソフトウェア部分とを分割するとともに、アーキテクチャ情報、マッピング情報、アドレス情報などを含むデータベースを自動生成する。そして、システムレベル設計装置は、トップレベル記述生成装置を用いて、上記データベースの情報からクロックベースシミュレーション用の記述を自動生成する。
【０００４】
また、上記したシステムレベル設計装置では、ハードウェアの動作合成を行い、ＲＴＬとクロックベースのモデルを作成する装置であるハードウェア生成装置や、ＣＰＵ（Central  Processing  Unit）モデルを作成する装置であるソフトウェア装置も用いられる。
【０００５】
上記したシステムレベル設計装置以外には、例えば、ＣＰＵを搭載するＬＳＩ製造時のテスト用の入力ベクタを作成する自動生成装置なども開示されている。具体的には、自動生成装置は、ソフトウェアからハードウェア回路にアクセスするメモリマップドレジスタ情報を抽出し、Ｃ言語で利用可能なマクロ定義に自動変換する。その後、自動生成装置は、全てのメモリマップドレジスタに順次アクセスするルールに従って、プログラムソースコードを自動生成する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−５４７５５号公報
【特許文献２】特開２００４−２５７８２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の技術では、ハードウェアとソフトウェアを含むシステム全体を設計する場合には、手作業の工数が多くなってしまい、結果として、システム全体の設計に多くの工数が必要であるという課題があった。
【０００８】
具体的には、従来の技術では、クロックベースシミュレーション用の記述やアーキテクチャ情報、マッピング情報、アドレス情報などを含むデータベースを自動生成することができる。ところが、システム全体を設計するには、回路構成（ハードウェア部分）やデバイスドライバ（ソフトウェア部分）をさらに設計する必要があり、これらを手作業で設計する必要がある。特に大規模システムの場合には、多くの手作業工数が必要となる。
【０００９】
また、従来の技術では、全てのメモリマップドレジスタに順次アクセスするルールに従って、プログラムソースコードを自動生成することができるが、実際のデバイスドライバやアプリケーションで全てのメモリマップドレジスタに順次アクセスすることがほとんどない。したがって、このような手法をソフトウェアの開発に流用することができず、ソフトウェア開発を手作業で行う必要があるので、システム全体としては多くの工数が必要となる。
【００１０】
開示の技術は、上記に鑑みてなされたものであって、システム全体の設計に必要な工数を削減することが可能である論理回路設計装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本願の開示する論理回路設計装置は、一つの態様において、入力された論理回路ブロックのレジスタ情報を解析して論理回路の構成情報を取得するレジスタ解析手段と、前記レジスタ解析手段によって取得された論理回路の構成情報に基づいて、前記論路回路のレジスタ部と、前記論理回路のコア機能部の雛形と、前記レジスタ部とコア機能部とを包含するトップモジュールの雛形とのそれぞれについて、ハードウェアソースコードを生成するハードウェア記述生成手段と、前記レジスタ解析手段によって取得された論理回路の構成情報に基づいて、前記論路回路の初期化用デバイスドライバ関数の雛形について、ソフトウェアソースコードを生成するソフトウェア記述生成手段と、を有する。
【発明の効果】
【００１２】
本願の開示する論理回路設計装置の一つの態様によれば、システム全体の設計に必要な工数を削減することが可能であるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施例１に係る論理回路設計装置の構成を示すブロック図である。
【図２】図２は、メモリマップ設定画面例を示す図である。
【図３】図３は、システムメモリマップＤＢに記憶される情報の例を示す図である。
【図４】図４は、バスマスターのアクセス優先度を設定する画面例を示す図である。
【図５】図５は、システムメモリマップに記憶されるアクセス優先度の例を示す図である。
【図６】図６は、バス種別ＤＢに記憶される情報の例を示す図である。
【図７】図７は、レジスタ一覧の入力を受け付けるＧＵＩの例を示す図である。
【図８】図８は、ユーザにより入力されたレジスタ一覧の例を示す図である。
【図９】図９は、レジスタ種別の例を示す図である。
【図１０】図１０は、論理回路レジスタマップ一覧ＤＢに記憶される情報の例を示す図である。
【図１１】図１１は、レジスタ詳細の入力を受け付けるＧＵＩの例を示す図である。
【図１２】図１２は、論理回路レジスタマップ詳細ＤＢに記憶される情報の例を示す図である。
【図１３】図１３は、論理回路割り込み情報ＤＢに記憶される情報の例を示す図である。
【図１４】図１４は、バスモデルのＲＴＬ記述のハードウェアソースコードを生成する処理の流れを示すフローチャートである。
【図１５】図１５は、バスモデルの雛形ファイルの例を示す図である。
【図１６】図１６は、バスモデルの雛形ファイルの別例（Loop処理）を示す図である。
【図１７】図１７は、最終的に作成されるバスモデルのＲＴＬ記述のハードウェアソースコードの例を示す図である。
【図１８】図１８は、簡易割り込みコントローラのレジスタマップを示す図である。
【図１９−１】図１９−１は、論理回路レジスタマップ詳細ＤＢに記憶される情報の例を示す図である。
【図１９−２】図１９−２は、論理回路割り込みＤＢに記憶される情報の例を示す図である。
【図２０】図２０は、割込み処理関数生成に必要な部分を抜粋した定義ファイルを示す図である。
【図２１】図２１は、割込み処理関数を多段構成で生成する場合の例を示す図である。
【図２２】図２２は、割り込み処理のエントリ関数の生成例を示した図である。
【図２３】図２３は、論理回路ブロック単位の割り込み処理関数の例を示す図である。
【図２４】図２４は、生成される割り込み処理関数の実態を示した図である。
【図２５】図２５は、ソフトウェア記述生成部２２による初期化関数生成処理の流れを示すフローチャートである。
【図２６】図２６は、初期化関数の生成イメージを例示した図である。
【図２７】図２７は、初期化関数生成に必要な部分を抜粋した定義ファイルを示す図である。
【図２８】図２８は、生成される初期化関数の例を示した図である。
【図２９】図２９は、擬似ＣＰＵ及び割り込みコントローラ関係のファイル群を示す図である。
【図３０】図３０は、バスモデル及びユーザロジック関係のファイル群を示す図である。
【図３１】図３１は、論理回路ブロック関係のファイル群を示す図である。
【図３２】図３２は、テストベンチ関係のファイル群を示す図である。
【図３３】図３３は、論理検証トップ及びデバイスドライバ関係のファイル群を示す図である。
【図３４】図３４は、論理検証用テストプログラム及び論理検証関係ファイル群を示す図である。
【図３５】図３５は、実施例１に係る論理回路設計装置による全体的な処理の流れを示すフローチャートである。
【図３６】図３６は、最終的に生成されるシステムの構成を示す図である。
【図３７】図３７は、精度検証用検証環境の構成例を示す図である。
【図３８】図３８は、機能検証用検証環境の構成例を示す図である。
【図３９】図３９は、単体用検証環境の構成例を示す図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示する論理回路設計装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【００１５】
本願が開示する論理回路設計装置は、入力された論理回路ブロックのレジスタ情報（レジスタマップ）を解析して論理回路の構成情報を取得する。そして、論理回路設計装置は、取得された論理回路の構成情報に基づいて、論路回路のレジスタ部と、論理回路のコア機能部の雛形とのそれぞれについて、ハードウェアソースコードを生成する。また、論理回路設計装置は、レジスタ部とコア機能部とを包含するトップモジュールの雛形についても、ハードウェアソースコードを生成する。さらに、論理回路設計装置は、取得された論理回路の構成情報に基づいて、論路回路の初期化用デバイスドライバ関数の雛形について、ソフトウェアソースコードを生成する。
【００１６】
つまり、本願が開示する論理回路設計装置は、論理回路ブロックのレジスタ情報を受け付けると、論理回路のコア機能部などハードウェア設計用及び論理回路ブロック用のデバイスドライバ開発に流用可能なソフトウェア設計用のソースコードを作成することができる。したがって、設計者は、設計対象の論理回路ブロックのレジスタ情報を本願が開示する論理回路設計装置に入力することで、ハードウェア設計用及びソフトウェア設計用のソースコードを取得することができ、取得した各ソースコードを用いて論理回路設計を行うことができる。
【００１７】
なお、論理回路ブロックとは、ある特定の機能を実現するための、論理回路（組み合わせ回路と順序回路）の集合体であり、例えば、DMAコントローラ、タイマ、UART、各種エンコーダ／デコーダなどのように、プロセッサのバスに接続されるものである。また、論理回路ブロックのレジスタ部とは、論理回路ブロックの機能を適切に実現するための設定値を保持する順序回路や、論理回路ブロックの内部情報を保持する順序回路の値を、バス経由でプロセッサがアクセス可能な構成を保持するものである。例えば、論理回路ブロックのレジスタ部とは、デバイスのデータシートに「レジスタマップ」等として記載され、デバイスドライバ等のソフトウェアからアクセス可能な部分のことである。
【００１８】
また、論理回路ブロックのコア機能部とは、その「論理回路ブロック」が持つ、ある特定の機能を果たす本質的な回路を実装している部分のことである。例えば、「レジスタ部」に設定された値によって、その振る舞いや出力結果が変わり、出力結果の一部やコア機能部の内部状態の一部は、「レジスタ部」に保持されてソフトウェアからアクセス可能なものもある。また、論理回路ブロックのトップモジュールとは、「論理回路ブロック」の最上位階層となる部分である。例えば、「レジスタ部」、「コア機能部」、「バスインターフェイス部」のそれぞれの接続を行い（場合によっては内部ＲＡＭとの接続も含む）、「論理回路ブロック」としての外部インターフェイスを提供するモジュールである。
【００１９】
このように、本願が開示する論理回路設計装置は、ハードウェアとソフトウェアを含むシステム全体を設計する場合でも、論理回路ブロックのレジスタ情報からハードウェアとソフトウェア両方とのソースコードを作成することができる。その結果、従来に比べて、設計者による手作業の工数を削減することができるので、システム全体の設計に必要な工数を削減することが可能である。
【実施例１】
【００２０】
次に、図１を用いて、実施例１に係る論理回路設計装置の構成について説明する。図１は、実施例１に係る論理回路設計装置の構成を示すブロック図である。
【００２１】
図１に示すように、論理回路設計装置１は、データベースとして、システムメモリマップＤＢ１０とバス種別ＤＢ１１と論理回路レジスタマップ一覧ＤＢ１２と論理回路レジスタマップ詳細ＤＢ１３と論理回路割り込み情報ＤＢ１４と検証種別ＤＢ１５とを有する。また、論理回路設計装置１は、各種制御を実施する制御部として、ハードウェア記述生成部（システム関連）２０と、ハードウェア記述生成部（論理回路関連）２１と、ソフトウェア記述生成部２２と、検証環境生成部２５とを有する。
【００２２】
［各データベースの説明］
システムメモリマップＤＢ１０は、バススレーブ（論理回路ブロック）のブロックごとに空間が分割されたシステムのメモリマップをユーザ（設計者）から受け付けて記憶する。具体的には、システムメモリマップＤＢ１０は、システム上の当該バススレーブにアクセス可能とするために、バススレーブ毎に開始アドレスと終了アドレスを記憶する。また、システムメモリマップＤＢ１０は、ＣＰＵの他にＤＭＡ（ダイレクト・メモリ・アクセス）コントローラなどバスマスターとなりうる論理回路ブロックが存在する場合は、当該バスマスターがどのバススレーブにアクセス可能かという情報を記憶する。
【００２３】
例えば、論理回路設計装置１は、ユーザから論理回路設計要求を受信した場合、図２に示すようなＧＵＩ上でメモリマップの基本情報が設定できる画面をディスプレイなどの表示部に出力する。そして、論理回路設計装置１は、図２に示したＧＵＩ上で、バススレーブ（Slave）やバスマスター（Master）などの情報をユーザから受け付ける。その結果、システムメモリマップＤＢ１０は、図３に示したように、「Slave_name、start_addr、end_addr」として「Slave_0、0000_0000、0001_fffe」や「Slave_1、0002_0000、0003_fffe」などを記憶する。
【００２４】
ここで記憶される「Slave_name」は、バススレーブを特定する情報であり、「start_addr」は、バススレーブの開始アドレスであり、「end_addr」は、バススレーブの終了アドレスであり、いずれの情報も図２のＧＵＩによってユーザから指定された情報である。なお、図２は、メモリマップ設定画面例を示す図であり、図３は、システムメモリマップＤＢに記憶される情報の例を示す図である。
【００２５】
また、システムメモリマップＤＢ１０は、図２などで指定されたバスマスターの優先度も記憶する。具体的には、論理回路設計装置１は、図２よってメモリマップの基本情報がシステムメモリマップＤＢ１０に登録された場合、図４に示すようなバスマスターのアクセス優先度をユーザに設定させる画面を表示し、アクセス優先度の設定をユーザから受け付ける。その結果、システムメモリマップＤＢ１０は、図５に示したように、「Slave_name、master_name、priority」として「Slave_0、Master_0、1」や「Slave_0、Master_1、0」、「Slave_0、Master_2、2」などを記憶する。
【００２６】
ここで記憶される「Slave_name」は、バススレーブを特定する情報であり、「master_name」は、バスマスターを特定する情報であり、「priority」は、優先度を示す情報であり、いずれの情報も図４のＧＵＩによってユーザから指定された情報である。なお、図４の「priority」では、「０」が最も優先度が高く、「２」が最も優先度が低い。また、図４は、バスマスターのアクセス優先度を設定する画面例を示す図であり、図５は、システムメモリマップに記憶されるアクセス優先度の例を示す図である。
【００２７】
バス種別ＤＢ１１は、本願ではバスモデルや論理回路ブロックのバスインタフェースを生成するが、その際に使用されるバス種別を記憶する。具体的には、論理回路設計装置１は、図２や図４と同様の手法で、バス種別をＧＵＩでユーザに入力させることが可能であり、例えば、論理回路設計装置１が提供可能なバス種別が提示される単純なドロップダウンリストでユーザに選択させることができる。その結果、バス種別ＤＢ１１は、図６に示すように、バス種別を特定する「bus_name」として「AMBA  AHB」や「AMBA  APB」などを記憶する。なお、図６は、バス種別ＤＢに記憶される情報の例を示す図である。
【００２８】
論理回路レジスタマップ一覧ＤＢ１２は、論理回路ブロックで使用するレジスタ一覧情報を記憶する。具体的には、論理回路設計装置１は、例えば図７に示すようなＧＵＩを表示部に出力する。そして、論理回路設計装置１は、図７に示したＧＵＩ上で、「アドレス、名称、Read/Write、機能、初期値、マッピング先（種別）」などを受け付けることで、図８に示すような情報を作成することができる。その結果、論理回路レジスタマップ一覧ＤＢ１２は、図９に示すように、「Slave_name、address、reg_name、attribute、function、reset_value、init_value」として「Slave_0、0x0010_0000、TEST、rw0、アクセステスト、0000_0000、−」などと記憶する。
【００２９】
ここで記憶される「Slave_name」は、バススレーブを特定する情報であり、「address」は、レジスタの開始アドレスを示しており、「reg_name」は、ユーザにより指定されたレジスタの名称である。また、「attribute」は、ユーザによって指定されるレジスタ種別であり、例えば、図１０に示したレジスタ種別の中から指定されたものを記憶する。また、「function」は、レジスタの機能を示しており、「reset_value」は、ハードウェアによる初期化値を示しており、「init_value」は、デバイスドライバで設定される初期値を示している。上述したいずれの情報も、図７のようなＧＵＩを用いて、ユーザにより入力された情報である。
【００３０】
なお、図７は、レジスタ一覧の入力を受け付けるＧＵＩの例を示す図であり、図８は、ユーザにより入力されたレジスタ一覧の例を示す図である。また、図９は、レジスタ種別の例を示す図であり、図１０は、論理回路レジスタマップ一覧ＤＢに記憶される情報の例を示す図である。
【００３１】
論理回路レジスタマップ詳細ＤＢ１３は、論理回路ブロックで使用するレジスタの詳細情報を記憶する。具体的には、論理回路レジスタマップ詳細ＤＢ１３は、レジスタの情報をbit単位で記憶するものであり、例えば、bit位置、幅、名称、属性などを記憶する。例えば、論理回路設計装置１は、図８に示したレジスタ一覧ＧＵＩ上でレジスタがクリックされると、図１１に示すようなＧＵＩを表示部に出力する。そして、論理回路設計装置１は、図１１に示すＧＵＩ上で、「bit位置、幅、名称、初期値、Read/Write、機能、操作」などを受け付ける。その結果、論理回路レジスタマップ詳細ＤＢ１３は、図１２に示すように、「Slave_name、address、lsb、width、name、attribute、function、interrupt、reset_value、init_value」として「Slave_0、0x0010_0010、0、1、BUFFEMPTY、rw0、バッファempty、0、0、−」などと記憶する。
【００３２】
ここで記憶される「Slave_name」は、バススレーブを特定する情報であり、「address」は、レジスタの開始アドレスを示しており、「lsb」は、最下位のビットを示しており、「width」は、ビット幅を示している。また、「name」は、レジスタの名称であり、「attribute」は、ユーザによって指定されるレジスタ種別であり、「function」は、レジスタの機能を示している。また、「interrupt」は、割込みの有無（例えば、０なら無し）を示しており、「reset_value」は、ハードウェアによる初期化値を示しており、「init_value」は、デバイスドライバで設定される初期値を示している。上述したいずれの情報も、図１１のようなＧＵＩを用いて、ユーザにより入力された情報である。
【００３３】
なお、図１１は、「アドレス」が「7E10_0044」、「名称」が「MODEB0」、「初期値」が「0000＿0000」であるリードライト可能な動作モード設定用レジスタの詳細設定例を示している。また、図１１は、レジスタ詳細の入力を受け付けるＧＵＩの例を示す図であり、図１２は、論理回路レジスタマップ詳細ＤＢに記憶される情報の例を示す図である。
【００３４】
論理回路割り込み情報ＤＢ１４は、論理回路ブロックで使用する割込み情報を記憶する。具体的には、論理回路設計装置１は、図１２に示したレジスタ詳細情報から「interrupt」に０以外の数値が設定されている情報を抽出し、その「address」に対応する「reg_name」を図９から抽出して、論理回路割り込み情報ＤＢ１４に出力する。その結果、論理回路割り込み情報ＤＢ１４は、図１３に示したように、「slave_name、address、regname、type」として「Slave_0、0x0010_0010、ISR、0」などを記憶する。なお、「type=0」は、割り込み要因（割り込みステータス）を示しており、「type=1」は、割り込みイネーブル（割り込みマスク）を示しており、「type=2」は、割り込みクリアを示している。また、図１３は、論理回路割り込み情報ＤＢに記憶される情報の例を示す図である。
【００３５】
検証種別ＤＢ１５は、ハードウェアソースコードやソフトウェアソースコードの記述形式を記憶する。具体的には、検証種別ＤＢ１５は、検証目的に応じて機能検証用に高速動作可能なＴＬ記述、性能検証用にサイクルベースで動作可能でかつ論理合成可能なＲＴＬ記述などの種別を記憶する。なお、ＲＴＬ記述とは、レジスタ転送水準（Register  Transfer  Level）で記述したソースファイルのことであり、ＴＬ記述とは、モジュール間の通信を捉えて機能を記述するトランザクションレベルで記述されたソースファイルである。
【００３６】
［ハードウェア記述生成部（システム関連）２０］
ハードウェア記述生成部（システム関連）２０は、システム関連のバスモデルのハードウェアソースコード２０ａ、論理回路バスＩ／Ｆ部のハードウェアソースコード２０ｂ、簡易割込みコントローラのハードウェアソースコード２０ｃをＲＴＬ記述やＴＬ記述で作成する。なお、バスモデルとは、ＬＳＩ（Large  Scale  Integration）内部で使用されるオンチップバスのことである。また、バスＩ／Ｆ部（バスインタフェース部）とは、論理回路のバスモデルとレジスタ部との間を論理的に接続するものであり、例えば、バスモデルで指定されたプロトコルを吸収し、レジスタ部に対して統一したインタフェース（プロトコル）を提供する。
【００３７】
ここで、図１４を用いて、ハードウェア記述生成部（システム関連）２０が雛形ファイル（図１６参照）を用いて、バスモデルのハードウェアソースコード２０ａ（図１７参照）を作成する処理の流れについて説明する。図１４は、バスモデルのＲＴＬ記述のハードウェアソースコードを生成する処理の流れを示すフローチャートである。
【００３８】
図１４に示すように、ハードウェア記述生成部（システム関連）２０は、ユーザが指定したバス種別をバス種別ＤＢ１１から読み込んだ後（ステップＳ１０１）、ユーザにより格納されたメモリマップをシステムメモリマップＤＢ１０から読み込む（ステップＳ１０２）。さらに、ハードウェア記述生成部（システム関連）２０は、読み込んだバス種別に対応するＲＴＬ記述用の雛形ファイルをメモリなどの記憶部から読み出す（ステップＳ１０３）。
【００３９】
そして、ハードウェア記述生成部（システム関連）２０は、読み込んだ雛形ファイルの最終行（ＥＯＦ）に到達するまで、ステップＳ１０５〜ステップＳ１０８の処理を実行する（ステップＳ１０４）。
【００４０】
具体的には、ハードウェア記述生成部（システム関連）２０は、読み込んだ雛形ファイルからキーワードを検出すると（ステップＳ１０５肯定）、検出したキーワードに対応する情報をシステムメモリマップＤＢ１０から抽出する（ステップＳ１０６）。そして、ハードウェア記述生成部（システム関連）２０は、例えば、システムメモリマップＤＢ１０に記憶されるバススレーブの数から１を減じるなどloop処理を実施する（ステップＳ１０７）。その後、ハードウェア記述生成部（システム関連）２０は、抽出した情報を１行出力していくことでバスモデルのハードウェアソースコード２０ａを作成する（ステップＳ１０８）。
【００４１】
次に、上述したバスモデルのハードウェアソースコード２０ａのＲＴＬ記述作成処理を例にして具体的に説明する。ハードウェア記述生成部（システム関連）２０は、バス種別に応じたバスモデルの雛形ファイルをメモリなどに記憶させておく。そして、ハードウェア記述生成部（システム関連）２０は、ソースコード作成を開始すると、バス種別ＤＢ１１に記憶されるバス種別を取得し、取得したバス種別に対応する雛形ファイル（図１５参照）をメモリなどから読み込む。その後、ハードウェア記述生成部（システム関連）２０は、システムメモリマップＤＢ１０に記憶されるバススレーブ（図３や図５）の数から１を減じた値によって、図１５の「__SlaveNum__の部分」を書き換える。上述した手法を実施することで、ハードウェア記述生成部（システム関連）２０は、バスモデルのハードウェアソースコード２０ａを作成することができる。
【００４２】
上述した雛形ファイルは、図１５に示したファイルだけでなく、例えば、図１６のようなファイルを用いることもできる。ハードウェア記述生成部（システム関連）２０は、図１６に示した「__Start__SlaveNum__」と「__End_SlaveNum__」をペアで使用し、この２つのキーワードで囲まれた部分の記述を「__SlaveNum__」の数だけ繰り返す。いわゆる「for-loop文」相当となる。「__SlaveId__」は、上記繰り返し処理中で使用されるいわゆるloop変数に相当する。ハードウェア記述生成部（システム関連）２０は、システムメモリマップＤＢ１０に記憶されるバススレーブ（図３や図５）から１を減じた値分繰り返し、キーワード（__SlaveId__など）に対応する情報をシステムメモリマップＤＢ１０から抽出する。その結果、ハードウェア記述生成部（システム関連）２０は、図１７に示すようなＲＴＬ記述（バスモデルのハードウェアソースコード２０ａ）を作成することができる。また、例えば、ハードウェア記述生成部（システム関連）２０は、ファイル名やディレクトリ名をinput_stage.vやoutput_stage.vなどとするハードウェアソースコード２０ａを作成する。
【００４３】
上述したようにハードウェア記述生成部（システム関連）２０は、図１４〜図１７を用いて説明した手法で、バスモデルのＲＴＬ記述ハードウェアソースコード２０ａを作成することができる。また、ＴＬ記述の雛形ファイルを用意しておき、図１４と同様の処理を実行することで、バスモデルのＴＬ記述ハードウェアソースコード２０ａを作成することができる。さらに、上記ではバスモデルを例として示したが、簡易割り込みコントローラ２０ｃ、論理回路ブロックのバスインタフェース部２０ｂついても同様に作成することができる。具体的には、他の部分のＲＴＬ記述やＴＬ記述を生成する際にも、それぞれのファイル生成に必要な規則をあらかじめ定めた雛型ファイルを用意しておくことで、生成することができる。
【００４４】
また、ハードウェア記述生成部（システム関連）２０は、簡易割り込みコントローラ２０ｃを生成することもできる。簡易割込みコントローラとは、論理回路ブロックからの割込み通知を受けると当該論理回路ブロック用に生成した割込み処理関数を呼び出し、以降の処理をソフトウェアに渡す処理を行う。一般に、割り込みコントローラは、プロセッサに付属する論理回路ブロックとして提供されるか、あるいはユーザがシステムに合わせて作りこむことが多い。
【００４５】
本願では、ソフトウェア／ハードウェア協調検証を早期に実現させるため、簡易割り込みコントローラ２０ｃを自動作成可能としている。ハードウェア記述生成部（システム関連）２０は、各論理回路ブロックにおけるレジスタマップで割り込みが設定されると、その情報をもとに割り込みの端子名を推定し、簡易割り込みコントローラ２０ｃのトップモジュールを生成する。具体的には、ハードウェア記述生成部（システム関連）２０は、メモリマップ上で複数の論理回路ブロック（Slave_0、Slave_1、Slave_2）が定義された場合、図１２および図１３で示された各論理回路ブロックの割込み情報を抽出する。そして、ハードウェア記述生成部（システム関連）２０は、抽出した情報を簡易割り込みコントローラ２０ｃのレジスタマップとして図１８のようなデータ構造を生成し、データベースに格納する。ここで、簡易割り込みコントローラ２０ｃが自身に対して割り込みを通知することはないため、「interrupt」の欄は空白で構わない。図１８は、簡易割り込みコントローラのレジスタマップを示す図である。
【００４６】
［ハードウェア記述生成部（論理回路関連）２１］
図１に戻り、ハードウェア記述生成部（論理回路関連）２１は、論理回路関連のハードウェアソースコードの自動生成を実行する。具体的には、ハードウェア記述生成部（論理回路関連）２１は、論理回路レジスタ部のハードウェアソースコード２１ａ、論理回路コア機能ブロックのハードウェアソースコード雛形２１ｂをＲＴＬ記述やＴＬ記述で作成する。また、ハードウェア記述生成部（論理回路関連）２１は、論理回路トップモジュールのハードウェアソースコード雛形２１ｃをＲＴＬ記述やＴＬ記述で作成する。
【００４７】
なお、具体的な処理手順は、上述したハードウェア記述生成部（システム関連）２０と同じフローで作成することができるので、詳細な説明は省略する。簡単に説明すると、ハードウェア記述生成部（論理回路関連）２１は、論理回路レジスタマップ一覧ＤＢ１２（図９）、論理回路レジスタマップ詳細ＤＢ１３（図１２）、論理回路割り込み情報ＤＢ１４（図１３）に記憶される情報を読み込む。また、ハードウェア記述生成部（論理回路関連）２１は、作成対象となるハードウェアソースコード２１ａ〜２１ｃそれぞれの雛形ファイルをメモリなどから読み込み、雛形ファイルと各ＤＢの情報を用いて、図１７と同様のフローを実施する。その結果、ハードウェア記述生成部（論理回路関連）２１は、ハードウェアソースコード２１ａ〜２１ｃをＲＴＬ記述やＴＬ記述で作成することができる。
【００４８】
［ソフトウェア記述生成部２２］
ソフトウェア記述生成部２２は、論理回路の割り込み処理関数の雛形２２ａや初期化関数の雛形２２ｂの自動生成を論理回路ブロックごとに実行する。本来、割込み処理関数（一般に、割り込みハンドラなどと呼ばれる）は、ＯＳ（オペレーティング・システム）やＣＰＵ（中央処理装置）に強く依存するため、汎用的なものを作ることは困難である。また、割込み処理とは現在実行中の処理を止めて「割り込」んでまで処理しなければならない性質のものなので、割込み処理関数は処理速度優先な実装になることが多い。
【００４９】
そこで、ソフトウェア記述生成部２２が生成する割り込み処理関数の雛形２２ａや初期化関数の雛形２２ｂは、ソフトウェア／ハードウェア協調検証や論理回路ブロックの論理検証用に使用するのを主な目的としている。すなわち、処理速度よりも検証の容易性や保守性に重きを置いているため、関数を多段構成としている。生成された割込み処理関数をデバイドドライバ（割り込みハンドラ）開発に流用するためには、処理速度を改善させるために多段構成になっている部分を一つの関数内に集約させるなどの変更を行えばよい。
【００５０】
（割り込み処理関数の雛形２２ａの生成）
具体的には、ソフトウェア記述生成部２２は、図９と図１３に示した情報をもとに、図２１に示す各種定義情報をＣ言語で生成する。例えば、割込み関連の情報が図１９−１及び図１９−２に示す値で与えられた場合で説明する。この場合、ソフトウェア記述生成部２２は、システムメモリマップＤＢ１０と論理回路レジスタマップ一覧ＤＢ１２と論理回路レジスタマップ詳細ＤＢ１３と論理回路割込み情報ＤＢ１４のそれぞれから情報を取得する。そして、ソフトウェア記述生成部２２は、各ＤＢから取得した情報をもとに、ソフトウェアソースコードで使用する各種定義情報を記述したソースコード（図２０参照）を生成する。なお、図１９−１は、論理回路レジスタマップ詳細ＤＢに記憶される情報の例を示す図であり、図１９−２は、論理回路割り込みＤＢに記憶される情報の例を示す図である。また、図２０は、割込み処理関数生成に必要な部分を抜粋した定義ファイルを示す図である。
【００５１】
また、割込み処理関数を多段構成で生成する場合の例を図２１に示す。この場合、まず簡易割り込みコントローラから割込み処理のエントリ関数である「irq_hdlr()」を呼び出す。「irq_hdlr()」は、図２２に示すように簡易割り込みコントローラのレジスタを読み出し、図１８に従ってどの論理回路ブロックから割り込みが発生しているのかを判定する。そして、当該論理回路ブロックの割込み処理関数を呼び出す。図２２のエントリ関数「irq_hdlr()」から呼び出される各論理回路ブロックの割込み処理関数のイメージを図２３に示す。この関数は、当該論理回路ブロック内でどの割込み要因が発生しているのかを判定し、該当する割込み要因に応じた割込み処理関数を呼び出す。
【００５２】
次に、図２３の各論理回路ブロックの割込み処理関数から呼び出される割込み処理関数の実態のイメージを図２４に示す。この関数は、当該割込み要因に応じた処理を行う関数となる。
【００５３】
以上のように、ソフトウェア記述生成部２２は、図２１に示した構造の関数群をメモリマップやレジスタマップや割込み情報から生成することができる。なお、図２４の割込み処理関数の実態において関数本文は、その割り込みの動作仕様に沿って実装される必要があるが、この動作仕様は当該論理回路ブロックの設計者にしかわからない。このため、ファイル生成後に割込み処理内容本体を追加で実装することができる。なお、図２０の定義名や図２１〜図２４における太字部分については、メモリマップやレジスタマップなどから抽出されたものである。したがって、ソフトウェア記述生成部２２は、太字以外の部分を雛型ファイルとしてあらかじめ準備して必要なキーワードを設定しておき、抽出したデータをもとに図２０から図２１〜図２４に示したファイルを生成していく。
【００５４】
なお、図２１は、割込み処理関数を多段構成で生成する場合の例を示す図であり、図２２は、割り込み処理のエントリ関数の生成例を示した図である。また、図２３は、論理回路ブロック単位の割り込み処理関数の例を示す図であり、図２４は、生成される割り込み処理関数の実態を示した図である。
【００５５】
（初期化関数の雛形２２ｂの生成）
次に、初期化関数の雛形２２ｂの生成について説明する。ここでは、まず、図２５を用いて、ソフトウェア記述生成部２２による初期化関数生成処理の流れについて説明する。図２５は、ソフトウェア記述生成部２２による初期化関数生成処理の流れを示すフローチャートである。
【００５６】
図２５に示すように、ソフトウェア記述生成部２２は、論理回路レジスタマップ一覧ＤＢ１２に記憶される情報を１行読み込み（ステップＳ２０１）、読み込んだ行が最終行（ＥＯＦ）か否かを判定する（ステップＳ２０２）。そして、ソフトウェア記述生成部２２は、読み込んだ１行の「init_value」に値が設定されている（初期化設定情報が有効である）場合（ステップＳ２０３肯定）、上述した初期化処理を生成してファイルに出力する（ステップＳ２０４とステップＳ２０５）。なお、ソフトウェア記述生成部２２は、初期化設定情報が有効でない場合（ステップＳ２０３否定）、次の行を読み込んでステップＳ２０２以降の処理を実行する。また、ソフトウェア記述生成部２２は、読み込んだ行が最終行である場合（ステップＳ２０２肯定）、処理を終了する。
【００５７】
次に、図２５に示した処理の流れを具体的に説明する。ソフトウェア記述生成部２２は、システムメモリマップＤＢ１０と論理回路レジスタマップ一覧ＤＢ１２と論理回路レジスタマップ詳細ＤＢ１３のそれぞれから情報を取得する。そして、ソフトウェア記述生成部２２は、各ＤＢから取得した情報をもとに、初期化関数の雛形２２ｂを生成する。例えば、図２６のアドレス「0x0011_0014」のレジスタIERのように、「init_value」欄に何らかの値が設定されているものが処理対象となり、「init_value」欄に設定されている値が初期化関数内で当該論理回路ブロックのレジスタに設定される値となる。
【００５８】
そして、ソフトウェア記述生成部２２は、図２０と同様に、初期化関数生成に必要なファイル（図２７）を生成する。そして、ソフトウェア記述生成部２２は、図２７の情報を元に、図２８のようなソースコードを生成する。割込み処理関数の生成と同じように、図２８における太字部分は、メモリマップやレジスタマップなどから抽出されたものである。したがって、ソフトウェア記述生成部２２は、太字以外の部分を雛型ファイルとしてあらかじめ準備して必要なキーワードを設定しておき、抽出したデータをもとに図２８に示したファイルを生成していく。また、例えば、ソフトウェア記述生成部２２は、ファイル名やディレクトリ名をinit_*.hやinit_*.c（＊には論理回路ブロックなどの名称が入る）などとする初期化関数の雛形２２ｂを作成する。
【００５９】
なお、図２６は、初期化関数の生成イメージを例示した図であり、図２７は、初期化関数生成に必要な部分を抜粋した定義ファイルを示す図であり、図２８は、生成される初期化関数の例を示した図である。
【００６０】
［検証環境生成部２５］
次に、検証環境生成部２５について説明する。検証環境生成部２５は、生成部２０〜２２によって生成されたソースコードの情報を解析して、検証環境（機能検証、性能検証）を構築する。また、検証環境生成部２５は、検証目的に応じて機能検証用の環境と性能検証用の環境を必要に応じて生成する。
【００６１】
具体的には、検証環境生成部２５は、ファイル名やディレクトリ名の命名規則やディレクトリの階層構成の規則などを予め定義しておき、その定義した情報に従って、生成部２０〜２２によって生成されたソースコードから検証環境および検証環境用のファイル構成を作成する。例えば、検証環境生成部２５は、ファイル名について、バスインタフェース部の場合には「論理回路ブロック名_bt.v」、レジスタ部の場合には「論理回路ブロック名_rt.v」などと規則性を定義しておく。また、コア機能部の場合には「論理回路ブロック名_core.v」、トップモジュールの場合には「論理回路ブロック名.v」などと規則性を定義しておく。また、例えば、初期化関数雛形については「init_論理回路ブロック名.［ch］」、割り込み処理関数雛形については「irq_論理回路ブロック名.［ch］」、レジスタアクセス確認関数雛形については「reg_rw_論理回路ブロック名.［ch］」などと定義しておく。
【００６２】
上述した規則性に従って、検証環境生成部２５が作成した検証用ファイルの例を図２９〜図３４に示す。図２９は、擬似ＣＰＵ（Central  Processing  Unit）及び割り込みコントローラ関係のファイル群を示す図であり、図３０は、バスモデル及びユーザロジック関係のファイル群を示す図であり、図３１は、論理回路ブロック関係のファイル群を示す図である。また、図３２は、テストベンチ関係のファイル群を示す図である。また、図３３は、論理検証トップ及びデバイスドライバ関係のファイル群を示す図であり、図３４は、論理検証用テストプログラム及び論理検証関係ファイル群を示す図である。
【００６３】
［論理回路設計装置による処理の流れ］
次に、図３５を用いて、実施例１に係る論理回路設計装置による全体的な処理の流れを説明する。図３５は、実施例１に係る論理回路設計装置による全体的な処理の流れを示すフローチャートである。
【００６４】
図３５に示すように、論理回路設計装置１は、各データベースからレジスタマップやメモリマップを読み込むと（ステップＳ３０１肯定）、読み込んだ情報に従って、システム構成を解析し（ステップＳ３０２）、論理回路構成を解析する（ステップＳ３０３）。なお、このとき使用するバス種別の情報も取得する。
【００６５】
続いて、論理回路設計装置１は、取得したバス種別に対応するものであって、作成対象となるハードウェアやソフトウェアのソースコードの雛形を読み込む（ステップＳ３０４）。そして、論理回路設計装置１は、読み込んだ雛形に指定されたキーワードと読み込んだレジスタマップやメモリマップに記憶される情報に基づいて、各種ソースコード又はソースコード雛形を作成する（ステップＳ３０５）。さらに、論理回路設計装置１は、作成したソースコード又はソースコード雛形と、予め指定された規則性とに基づいて、検証環境を作成する（ステップＳ３０６）。
【００６６】
上述した処理を実行することで、論理回路設計装置１は、図３６に示すようなシステムを生成することができる。つまり、論理回路設計装置１は、ハードウェア記述生成部（システム関連）２０やハードウェア記述生成部（論理回路関連）２１によって、論理回路ブロック（論理回路Ａ〜論理回路Ｃ）を作成することができる。さらに、論理回路設計装置１は、ハードウェア記述生成部（システム関連）２０やハードウェア記述生成部（論理回路関連）２１によって、バスドライバ、割り込みコントローラを生成することができる。また、論理回路設計装置１は、ソフトウェア記述生成部２２によって、初期化処理関数雛形や割り込み処理関数雛形を生成することができる。図３６は、最終的に生成されるシステムの構成を示す図である。
【００６７】
［実施例１による効果］
このように、実施例１によれば、ハードウェアとソフトウェアを含むシステム全体を設計する場合でも、論理回路ブロックのレジスタ情報からハードウェアとソフトウェア両方のソースコードを作成することができる。その結果、従来に比べて、設計者による手作業の工数を削減することができるので、システム全体の設計に必要な工数を削減することが可能である。
【００６８】
また、実施例１によれば、ＴＬ記述とＲＴＬ記述のいずれかあるいは両方を選択して生成可能としたため、システムレベルの検証、すなわちソフトウェア／ハードウェアの協調検証が高速にできるようになる。
【００６９】
また、実施例１によれば、レジスタへの順次アクセス以外に初期化処理や割込み処理まで考慮しており、さらにこれらの処理毎に生成するファイル（関数）を分けているため、生成したファイルを容易にデバイスドライバ等のソフトウェア開発に流用することが可能となる。
【００７０】
また、実施例１によれば、システムのメモリマップ、当該論理回路ブロックのレジスタマップ、割り込み情報が準備できると、当該論理回路ブロックのコア機能以外の論理部分がすべて本願開示の装置で生成されるため、論理回路ブロックの開発工数が劇的に短縮できる。
【００７１】
また、実施例１によれば、システムのメモリマップ、当該論理回路ブロックのレジスタマップ、割り込み情報が準備できる。その結果、当該論理回路ブロックのコア機能以外の論理部分以外がすべて本願開示の装置で生成されるため、コア機能以外の論理回路の品質を一定程度に保証することが可能となる。
【００７２】
また、実施例１によれば、システムのメモリマップ、当該論理回路ブロックのレジスタマップ、割り込み情報が準備できる。その結果、当該論理回路ブロックを制御するために必要な初期化処理の割り込み処理やレジスタアクセスなどデバイスドライバ用の雛形ファイルが本願開示の装置で生成されるため、デバイスドライバの開発工数の大幅な短縮が実現できる。
【００７３】
また、実施例１によれば、システムのソフトウェア／ハードウェア協調検証に開発の早い段階から着手することが可能となる。また、ファイルを自動生成する際に命名規則に沿ったファイル名にしておくことで、当該論理回路ブロックの検証環境も自動で構築することが可能となる。また、開発の早期から当該論理回路ブロックの論理検証が行えるため、当該論理回路ブロックの品質向上が期待できる。
【実施例２】
【００７４】
ところで、本願が開示する論理回路設計装置は、用途に応じて、様々な検証環境を自動で生成することができる。そこで、実施例２では、本願が開示する論理回路設計装置で生成できる検証環境の例を説明する。
【００７５】
（精度検証用検証環境）
例えば、本願が開示する論理回路設計装置は、図３７に示すような精度検証用検証環境を作成することができる。具体的には、論理回路設計装置は、論理合成可能で精度検証に適しているＲＴＬ記述で生成されたソースコード等を用いることで、精度検証用の検証環境を作成することができる。この場合、ＤＭＡコントローラ（Direct  Memory  Access  controller）は既存のＩＰマクロを使用することができ、初期化処理関数の雛形および割り込み処理関数の雛形はテストデータ（テストドライバ）として用いられる。このような検証環境を作成することで、レジスタのRead/Writeを一通り検証することができ、バスの動作やレジスタ部までの動作確認ができる。図３７は、精度検証用検証環境の構成例を示す図である。
【００７６】
（機能検証用検証環境）
また、本願が開示する論理回路設計装置は、図３８に示すような機能検証用検証環境を作成することができる。具体的には、論理回路設計装置は、高速に動作可能で機能検証に適しているＴＬ記述で生成されたソースコード等を用いることで、機能検証用の検証環境を作成することができる。この場合、ＤＭＡコントローラは既存のＩＰマクロを使用することができ、初期化処理関数の雛形および割り込み処理関数の雛形はテストデータ（テストドライバ）として用いられる。このような検証環境を作成することで、作成されたソースコード等を用いて生成したシステムが正常に動作するかを高速に検証できる。図３８は、機能検証用検証環境の構成例を示す図である。
【００７７】
（単体用検証環境）
また、本願が開示する論理回路設計装置は、図３９に示すような単体用検証環境を作成することができる。このような検証環境を作成することで、作成されたソースコード等を用いて生成した論理回路ブロック単位で検証することができる。その結果、不具合の原因特定をシステム構築の早い段階で検出することができる。図３９は、単体用検証環境の構成例を示す図である。
【実施例３】
【００７８】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に示すように、（１）ＧＵＩ、（２）雛形ファイル、（３）ハードウェアソースコード、（４）システム構成等、（５）プログラムにそれぞれ区分けして異なる実施例を説明する。
【００７９】
（１）ＧＵＩ
例えば、実施例１では、ＧＵＩを用いてメモリマップ等の情報をユーザから受け付けて各データベースに登録するようにした。ところが、本願は、ＧＵＩでなくとも、例えば、ＸＭＬ（eXtensible  Markup  Language）やＣＳＶ（Comma  Separated  Value）、ＹＡＭＬ（YAML  Ain't  a  Markup  Language）などのテキストファイルを用いることもできる。
【００８０】
（２）雛形ファイル
例えば、実施例１では、雛形ファイルを用意しておき、雛形ファイルとメモリマップやレジスタマップの情報とに基づいて、ソースコード等を生成する例について説明した。本願は雛形ファイルが必ずしも必要ではなく、メモリマップやレジスタマップの情報に基づいて、ソースコード等を生成することもできる。
【００８１】
（３）ハードウェアソースコード
例えば、本願が開示する論理回路設計装置は、ハードウェアソースコードをＨＤＬで作成することもでき、ＨＤＬ以外のハードウェア記述言語でも作成することができる。
【００８２】
（４）システム構成等
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００８３】
また、図示した各装置の各構成要素は、一例に過ぎず、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００８４】
（５）プログラム
なお、本実施例で説明した論理回路設計方法は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【００８５】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００８６】
（付記１）入力された論理回路ブロックのレジスタ情報を解析して論理回路の構成情報を取得するレジスタ解析手段と、
前記レジスタ解析手段によって取得された論理回路の構成情報に基づいて、前記論路回路のレジスタ部と、前記論理回路のコア機能部の雛形と、前記レジスタ部とコア機能部とを包含するトップモジュールの雛形とのそれぞれについて、ハードウェアソースコードを生成するハードウェア記述生成手段と、
前記レジスタ解析手段によって取得された論理回路の構成情報に基づいて、前記論路回路の初期化用デバイスドライバ関数の雛形について、ソフトウェアソースコードを生成するソフトウェア記述生成手段と、
を有することを特徴とする論理回路設計装置。
【００８７】
（付記２）前記ハードウェア記述生成手段は、前記レジスタ解析手段によって取得された論理回路の構成情報を用いて、前記ハードウェアソースコードそれぞれの雛形を書き換えることで、前記ハードウェアソースコードを生成し、
前記ソフトウェア記述生成手段は、前記レジスタ解析手段によって取得された論理回路の構成情報を用いて、前記ソフトウェアソースコードの雛形を書き換えることで、前記ソフトウェアソースコードを生成することを特徴とする付記１に記載の論理回路設計装置。
【００８８】
（付記３）ソフトウェアとハードウェアとを有するシステムのメモリマップを受け付けて、受け付けたメモリマップを解析し、前記システムの構成情報を取得するメモリ解析手段をさらに有し、
前記ハードウェア記述生成手段は、前記メモリ解析手段によって取得されたシステムの構成情報に基づいて、前記システムのバスモデルと、前記論理回路のバスインタフェースとのそれぞれについて、前記ハードウェアソースコードを生成することを特徴とする付記１または２に記載の論理回路設計装置。
【００８９】
（付記４）前記ハードウェア記述生成手段は、論理検証が可能なトランザクションレベル記述と論理合成可能でクロックベースの検証が可能なレジスタトランスファレベル記述の少なくとも一方の形式で、前記ハードウェアソースコードを生成することを特徴とする付記１に記載の論理回路設計装置。
【００９０】
（付記５）前記レジスタ解析手段は、前記論理回路ブロックの割り込み情報をさらに取得し、
前記ハードウェア記述生成手段は、前記レジスタ解析手段に取得された割り込み情報を用いて、割り込みコントローラを生成し、
前記ソフトウェア記述生成手段は、前記レジスタ解析手段に取得された割り込み情報を用いて、割り込み処理関数の雛形を生成することを特徴とする付記１に記載の論理回路設計装置。
【００９１】
（付記６）前記ソフトウェア記述生成手段は、前記ソフトウェアソースコードを生成するのに際して、処理機能ごとにファイル分割して、前記ソフトウェアソースコードを生成することを特徴とする付記１に記載の論理回路設計装置。
【００９２】
（付記７）前記ハードウェア記述生成手段により生成されたハードウェアソースコードおよび前記ソフトウェア記述生成手段により生成されたソフトウェアソースコードを用いて、前記ハードウェアソースコード及びソフトウェアソースコードを検証する検証環境を作成する検証環境作成手段をさらに有することを特徴とする付記１に記載の論理回路設計装置。
【００９３】
（付記８）前記検証環境作成手段は、予め定めた規則性に従って、前記ハードウェアソースコード及びソフトウェアソースコードについて前記検証環境用のファイルまたはディレクトリを作成し、前記規則性に従って、作成されたファイルまたはディレクトリを命名することを特徴とする付記７に記載の論理回路設計装置。
【００９４】
（付記９）入力された論理回路ブロックのレジスタ情報を解析して論理回路の構成情報を取得するレジスタ解析手順と、
前記レジスタ解析手順によって取得された論理回路の構成情報に基づいて、前記論路回路のレジスタ部と、前記論理回路のコア機能部の雛形と、前記レジスタ部とコア機能部とを包含するトップモジュールの雛形とのそれぞれについて、ハードウェアソースコードを生成するハードウェア記述生成手順と、
前記レジスタ解析手順によって取得された論理回路の構成情報に基づいて、前記論路回路の初期化用デバイスドライバ関数の雛形について、ソフトウェアソースコードを生成するソフトウェア記述生成手順と、
を論理回路設計装置としてのコンピュータに実行させることを特徴とする論理回路設計プログラム。
【符号の説明】
【００９５】
１  論理回路設計装置
１０  システムメモリマップＤＢ
１１  バス種別ＤＢ
１２  論理回路レジスタマップ一覧ＤＢ
１３  論理回路レジスタマップ詳細ＤＢ
１４  論理回路割り込み情報ＤＢ
１５  検証種別ＤＢ
２０  ハードウェア記述生成部（システム関連）
２０ａ  バスモデルのハードウェアソースコード
２０ｂ  論理回路バスインタフェース部のハードウェアソースコード
２０ｃ  簡易割り込みコントローラのハードウェアソースコード
２１  ハードウェア記述生成部（論理回路関連）
２１ａ  論理回路レジスタ部のハードウェアソースコード
２１ｂ  論理回路コア機能ブロック雛形のハードウェアソースコード
２１ｃ  論理回路トップモジュール雛形のハードウェアソースコード
２２  ソフトウェア記述生成部
２２ａ  論理回路割込処理関数雛形のソフトウェアソースコード
２２ｂ  論理回路初期化関数雛形のソフトウェアソースコード
２５  検証環境生成部
【図１】
2010262412.tif 000003
【図２】
2010262412.tif 000004
【図３】
2010262412.tif 000005
【図４】
2010262412.tif 000006
【図５】
2010262412.tif 000007
【図６】
2010262412.tif 000008
【図７】
2010262412.tif 000009
【図８】
2010262412.tif 000010
【図９】
2010262412.tif 000011
【図１０】
2010262412.tif 000012
【図１１】
2010262412.tif 000013
【図１２】
2010262412.tif 000014
【図１３】
2010262412.tif 000015
【図１４】
2010262412.tif 000016
【図１５】
2010262412.tif 000017
【図１６】
2010262412.tif 000018
【図１７】
2010262412.tif 000019
【図１８】
2010262412.tif 000020
【図１９−１】
2010262412.tif 000021
【図１９−２】
2010262412.tif 000022
【図２０】
2010262412.tif 000023
【図２１】
2010262412.tif 000024
【図２２】
2010262412.tif 000025
【図２３】
2010262412.tif 000026
【図２４】
2010262412.tif 000027
【図２５】
2010262412.tif 000028
【図２６】
2010262412.tif 000029
【図２７】
2010262412.tif 000030
【図２８】
2010262412.tif 000031
【図２９】
2010262412.tif 000032
【図３０】
2010262412.tif 000033
【図３１】
2010262412.tif 000034
【図３２】
2010262412.tif 000035
【図３３】
2010262412.tif 000036
【図３４】
2010262412.tif 000037
【図３５】
2010262412.tif 000038
【図３６】
2010262412.tif 000039
【図３７】
2010262412.tif 000040
【図３８】
2010262412.tif 000041
【図３９】
2010262412.tif 000042