(57)【要約】【課題】レジスタのアドレスマップの作成の容易化を図ること。【解決手段】設計支援装置１００は、ビット領域Ｘについての第１ビット幅に基づいて、ビット領域ＸのレジスタＲＥＧｚ内における第１位置Ｐ１を決定する。設計支援装置１００は、決定した第１位置Ｐ１と、レジスタＲＥＧｚが配置されるメモリへのアクセス単位のビット幅と、ビット領域Ｙについての第２ビット幅と、に基づいて、ビット領域ＹのレジスタＲＥＧｚ内における第２位置Ｐ２を決定する。設計支援装置１００は、レジスタＲＥＧｚにおいて、第１位置Ｐ１にビット領域Ｘを配置し、決定した第２位置Ｐ２にビット領域Ｙを配置し、ビット領域Ｘとビット領域Ｙとの間の領域を空きビット領域にすることを示すビット配置情報を生成する。【選択図】図１
2015197750.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、
レジスタに配置する第１ビット領域と、前記レジスタに配置する前記第１ビット領域と異なる第２ビット領域との各々についてのビット幅を示すビット幅情報を取得し、
取得した前記ビット幅情報が示す前記第１ビット領域についての第１ビット幅に基づいて、前記第１ビット領域の前記レジスタ内における第１位置を決定し、
決定した前記第１位置と、前記レジスタが配置されるメモリへのアクセス単位のビット幅と、取得した前記ビット幅情報が示す前記第２ビット領域についての第２ビット幅と、に基づいて、前記第２ビット領域の前記レジスタ内における第２位置を決定し、
前記レジスタにおいて、決定した前記第１位置に前記第１ビット領域を配置し、決定した前記第２位置に前記第２ビット領域を配置し、前記第１ビット領域と前記第２ビット領域との間の領域を第１空きビット領域にすることを示す第１ビット配置情報を生成する、
処理を実行することを特徴とする設計支援方法。
【請求項２】
前記コンピュータが、
前記第１ビット配置情報に基づいて、前記第１ビット幅と前記第２ビット幅と前記第１空きビット領域のビット幅とを合計した第１合計値を所定のビット幅によって除算した場合の余りを前記第１合計値から減算した値に相当するビット幅を導出し、
前記第１ビット配置情報に基づいて、前記レジスタにおいて、前記第２位置と前記第２ビット幅とに基づく位置に、導出した前記ビット幅の第２空きビット領域を配置することを示す第２ビット配置情報を生成する、
処理を実行することを特徴とする請求項１に記載の設計支援方法。
【請求項３】
前記コンピュータが、
前記メモリのアドレス空間のうちのいずれのレジスタも割り当てられていないアドレスの中から、前記第１合計値と前記第２空きビット領域のビット幅との第２合計値に基づいて、前記レジスタを割り当てるアドレスを決定し、
生成した前記第２ビット配置情報に基づいて、決定した前記アドレスに前記レジスタを割り当てることを示すレジスタ配置情報を生成する、
処理を実行することを特徴とする請求項２に記載の設計支援方法。
【請求項４】
レジスタに配置する第１ビット領域と、前記レジスタに配置する前記第１ビット領域と異なる第２ビット領域との各々についてのビット幅を示すビット幅情報を取得し、取得した前記ビット幅情報が示す前記第１ビット領域についての第１ビット幅に基づいて、前記第１ビット領域の前記レジスタ内における第１位置を決定し、決定した前記第１位置と、前記レジスタが配置されるメモリへのアクセス単位のビット幅と、取得した前記ビット幅情報が示す前記第２ビット領域についての第２ビット幅と、に基づいて、前記第２ビット領域の前記レジスタ内における第２位置を決定し、前記レジスタにおいて、決定した前記第１位置に前記第１ビット領域を配置し、決定した前記第２位置に前記第２ビット領域を配置し、前記第１ビット領域と前記第２ビット領域との間の領域を空きビット領域にすることを示すビット配置情報を生成する制御部
を有することを特徴とする設計支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、設計支援方法、および設計支援装置に関する。
【背景技術】
【０００２】
従来、レジスタが所定のバス構造に従いメモリのアドレス空間に割り当てられることによって、レジスタのアドレスマップが作成される技術が公知である。
【０００３】
また、従来、ハードウェア回路の自動設計工程のうち、レジスタ割り当て工程において、レフトエッジ・アルゴリズムを利用して、記憶されている変数リンク情報とレジスタ割り当て状況からレジスタとバス間の接続線を増やさないように割り当てる技術が公知である（例えば、以下特許文献１参照。）。
【０００４】
また、従来、動作記述から、外部回路とデータ転送を行うために、プロトコルが決められたバスに接続するバスインターフェース回路を自動生成する技術が公知である（例えば、以下特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平６−３０１７４２号公報
【特許文献２】特開２００２−１４０３７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来、アクセス効率の高いレジスタのアドレスマップを作成することが困難であるという問題点がある。
【０００７】
１つの側面では、本発明は、アクセス効率の高いレジスタのアドレスマップの作成の容易化を図ることができる設計支援方法、および設計支援装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一側面によれば、レジスタに配置する第１ビット領域と、前記レジスタに配置する前記第１ビット領域と異なる第２ビット領域との各々についてのビット幅を示すビット幅情報を取得し、取得した前記ビット幅情報が示す前記第１ビット領域についての第１ビット幅に基づいて、前記第１ビット領域の前記レジスタ内における第１位置を決定し、決定した前記第１位置と、前記レジスタが配置されるメモリへのアクセス単位のビット幅と、取得した前記ビット幅情報が示す前記第２ビット領域についての第２ビット幅と、に基づいて、前記第２ビット領域の前記レジスタ内における第２位置を決定し、前記レジスタにおいて、決定した前記第１位置に前記第１ビット領域を配置し、決定した前記第２位置に前記第２ビット領域を配置し、前記第１ビット領域と前記第２ビット領域との間の領域を空きビット領域にすることを示すビット配置情報を生成する設計支援方法、および設計支援装置が提案される。
【発明の効果】
【０００９】
本発明の一態様によれば、アクセス効率の高いレジスタのアドレスマップの作成の容易化を図ることができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明にかかる設計支援装置による一動作例を示す説明図である。
【図２】図２は、アクセス単位の例を示す説明図である。
【図３】図３は、バス幅で分割した物理的な単位での配置例と構造体例を示す説明図である。
【図４】図４は、アクセス単位となっていない例とアクセス単位に収まらなかった例を示す説明図である。
【図５】図５は、設計支援装置のハードウェア構成例を示すブロック図である。
【図６】図６は、設計支援装置の機能的構成例を示すブロック図である。
【図７】図７は、記憶部による記憶例を示す説明図である。
【図８】図８は、アクセス単位に基づくビット領域配置例を示す説明図である。
【図９】図９は、バス幅に基づくビット領域配置例を示す説明図である。
【図１０】図１０は、レジスタ配置のルール情報例を示す説明図である。
【図１１】図１１は、レジスタ配置例を示す説明図である。
【図１２】図１２は、レジスタ配置に基づくファームウェアのヘッダ定義例を示す説明図である。
【図１３】図１３は、アドレスマップの比較例を示す説明図である。
【図１４】図１４は、プログラムにおけるレジスタの初期化の比較例を示す説明図である。
【図１５】図１５は、設計支援装置による設計支援処理手順例を示すフローチャートである。
【図１６】図１６は、図１５に示したアドレスマップ生成処理手順例を示すフローチャートである。
【図１７】図１７は、図１６に示したビット領域の第１配置処理手順例を示すフローチャート（その１）である。
【図１８】図１８は、図１６に示したビット領域の第１配置処理手順例を示すフローチャート（その２）である。
【図１９】図１９は、図１６に示したビット領域の第２配置処理手順例を示すフローチャートである。
【図２０】図２０は、図１６に示したレジスタの配置処理手順例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、本発明にかかる設計支援方法、および設計支援装置の実施の形態を詳細に説明する。
【００１２】
図１は、本発明にかかる設計支援装置による一動作例を示す説明図である。設計支援装置１００は、レジスタをメモリのアドレス空間に割り当てることを支援するコンピュータである。
【００１３】
ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｅｄ）装置は、機能ブロック単位の論理情報をハードウェアとして有する。また、ＬＳＩ装置は、ＬＳＩ装置内部あるいは外部のメモリに格納するファームウェアにしたがって、ＬＳＩ装置内部あるいは外部に搭載するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）から各機能ブロックに対する命令を実行することによって動作する。ＣＰＵと各機能ブロックは所定のバス構造によって接続し、各機能ブロックが有するレジスタに対してＣＰＵが所定のアクセス単位でアクセスする。このアクセス単位については、ハードウェアの論理情報におけるレジスタ構成とファームウェアのヘッダ定義の構成とで一致している。上述したように、従来では、アクセス効率の高いレジスタのアドレスマップを作成することが困難である。例えば、設計者が、ビット領域をレジスタに配置した後、レジスタをアドレス空間に割り当てることによってアクセス効率の高いレジスタのアドレスマップを作成するという方法がある。そして、ファームウェアの開発者がアドレスマップに基づいてプログラムでアクセスするためのレジスタ定義をした構造体を作成する。しかしながら、例えば、レジスタのアドレスマップを作成するには、経験や習熟度を要するため、設計に不慣れな設計者にとってはアドレスマップの作成作業自体が困難な作業となる。また、例えば、経験や習熟度を有する設計者であっても、レジスタ数が多いと、アドレスマップの作成作業には多くの作業時間を要する。アクセス効率の低いレジスタ例については図４に示す。
【００１４】
そこで、本実施の形態では、設計支援装置１００は、レジスタにおいて、２つのビット領域の間隔をアクセス単位で決定して該２つのビット領域を配置するとともに、該２つのビット領域間を空き領域とする。これにより、レジスタにおいてビット領域がアクセス単位によってアライメントされ、アクセス効率の高いレジスタマップの作成の容易化を図ることができる。また、設計者によるアドレスマップの作成作業の作業時間の短縮を図ることができる。
【００１５】
図１（１）に示すように、設計支援装置１００は、レジスタに配置する第１ビット領域と、前記レジスタに配置する第１ビット領域と異なる第２ビット領域との各々についてのビット幅を示すビット幅情報１０１を取得する。図１（１）の例では、ビット幅情報１０１は、レジスタごとに、ビット領域を示す識別情報と、ビット領域のビット幅と、を示す。ビット幅情報１０１の例では、レジスタＲＥＧｚには、１０ビット幅のビット領域Ｘと、８ビット幅のビット領域Ｙと、が配置される。ここでは、レジスタをレジスタＲＥＧｚとし、第１ビット領域をビット領域Ｘとし、第２ビット領域をビット領域Ｙとする。
【００１６】
設計支援装置１００は、ビット幅情報１０１が示すビット領域Ｘについての第１ビット幅に基づいて、ビット領域ＸのレジスタＲＥＧｚ内における第１位置Ｐ１を決定する。ここでは、第１ビット幅が１０ビットである。図１（２）に示すように、ここでは、第１位置Ｐ１はビット領域Ｘの最下位ビットの位置であり、第１位置Ｐ１は０番目とする。
【００１７】
設計支援装置１００は、第１位置Ｐ１と、レジスタＲＥＧｚが配置されるメモリへのアクセス単位のビット幅と、ビット領域Ｙについての第２ビット幅と、に基づいて、ビット領域ＹのレジスタＲＥＧｚ内における第２位置Ｐ２を決定する。メモリへのアクセス単位のビット幅は、８ビット幅、１６ビット幅、３２ビット幅などが挙げられる。アクセス単位についての詳細例は図２に示す。例えば、設計支援装置１００は、第２位置Ｐ２を、ビット領域Ｘの最上位ビットの位置以降の位置のうち、アクセス単位のビット幅によって除算できる位置に決定する。図１（３）の例では、第２位置Ｐ２は１６番目とする。
【００１８】
そして、設計支援装置１００は、レジスタＲＥＧｚにおいて、第１位置Ｐ１にビット領域Ｘを配置し、第２位置Ｐ２にビット領域Ｙを配置し、ビット領域Ｘとビット領域Ｙとの間の領域を空きビット領域にすることを示すビット配置情報１０２を生成する。図１（４）に示すように、例えば、レジスタＲＥＧｚにおいて、０〜９番目にビット領域Ｘが配置され、１０〜１５番目に空きビット領域が配置され、１６〜２３番目にビット領域Ｙが配置される。
【００１９】
このように、設計支援装置１００は、レジスタにおいて、２つのビット領域の間隔をアクセス単位で決定して該２つのビット領域を配置するとともに、該２つのビット領域間を空き領域とする。これにより、レジスタにおいてビット領域がアクセス単位によってアライメントされ、アクセス効率の高いレジスタマップの作成の容易化を図ることができる。
【００２０】
図２は、アクセス単位の例を示す説明図である。例えば、開発の対象であるＬＳＩ装置は、機能ブロック単位の論理情報をハードウェアとして有する。また、例えば、ＬＳＩ装置は、ＬＳＩ装置の内部または外部のメモリに格納するファームウェアに従って、ＬＳＩ装置の内部または外部のＣＰＵが各機能ブロックに対する命令を実行することによって動作する。
【００２１】
ＣＰＵと各機能ブロックは、所定のバスによって接続され、ＣＰＵは、所定のバスの構造に応じて各機能ブロックが有するレジスタに対して所定のアクセス単位でアクセスする。図２に示すように、アクセスとしては、例えば、３２ビット単位のワードアクセス、１６ビット単位のハーフワードアクセス、８ビット単位のバイトアクセスなどが挙げられる。
【００２２】
図３は、バス幅で分割した物理的な単位での配置例と構造体例を示す説明図である。図３（１）に示すように、既存のアプリケーションによって４８ビット幅のビット領域Ａが配置されたレジスタがメモリに配置される場合、ビット領域Ａ０とビット領域Ａ１とのように物理的なバス幅の単位によってビット領域Ａが区切られる。
【００２３】
また、図３（２）には、既存のアプリケーションによって１６ビット幅のビット領域Ａと８ビット幅のビット領域Ｂとが繰り返して３個配置されたレジスタ例を示す。図３（２）に示すように、ビット領域Ａ０とビット領域Ｂ０、ビット領域Ａ１とビット領域Ｂ１、ビット領域Ａ２とビット領域Ｂ２のように、物理的なバス幅の単位によって３つのレジスタが生成される。このように、既存のアプリケーションによってレジスタマップが作成されると、論理的に意味を持った単位での配置および構造体ではなく、物理的な単位での配置および構造体になってしまう。
【００２４】
図４は、アクセス単位となっていない例とアクセス単位に収まらなかった例を示す説明図である。図４（１）には、１２ビット幅のビット列Ａ０と１６ビット幅のビット列Ａ１とを含むレジスタについて、空いている記憶領域にビット列Ａ０とビット列Ａ１とが単純に並べて配置される場合を示す。この場合、アクセス単位がハーフワードアクセスであると、ビット列Ａ１はビット幅が１６ビットであるにも関わらず、ビット列Ａ１にアクセスするには、ハーフワードアクセスを２回行わなければならない。そのため、このように配置されると、アクセス効率が悪くなる。
【００２５】
また、図４（２）には、１２ビット幅のビット列Ｂ０〜Ｂ３を含むレジスタについて、空いている記憶領域にビット列Ｂ０〜Ｂ３が下位ビットから順に単純に並べて配置される場合を示す。この場合、ビット列Ｂ２がハードウェアのアクセス単位に収まらないため、ビット列Ｂ２はビット幅が１２ビットであるにも関わらず、ビット列Ｂ２にアクセスするにはワードアクセスを２回行わなければならない。
【００２６】
上述したように、例えば、レジスタのアドレスマップを作成するには、経験や習熟度を要するため、不慣れな設計者であれば、図４（１）や図４（２）に示すように配置してしまう場合がある。また、例えば、経験や習熟度を有する設計者であっても、レジスタ数が多いと、アドレスマップの作成作業には多くの作業時間を要する。
【００２７】
そこで、本実施の形態では、設計支援装置１００は、レジスタにおいて、２つのビット領域の間隔をアクセス単位で決定して該２つのビット領域を配置するとともに、該２つのビット領域間を空き領域とする。これにより、レジスタにおいてビット領域がアクセス単位によってアライメントされ、アクセス効率の高いレジスタマップを容易に設計できる。
【００２８】
（設計支援装置１００のハードウェア構成例）
図５は、設計支援装置のハードウェア構成例を示すブロック図である。図５において、設計支援装置１００は、ＣＰＵ５０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）５０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）５０３と、ディスクドライブ５０４と、ディスク５０５と、を有する。設計支援装置１００は、Ｉ／Ｆ（Ｉｎｔｅｒ／Ｆａｃｅ）５０６と、入力装置５０７と、出力装置５０８と、を有する。また、各部はバス５００によってそれぞれ接続されている。
【００２９】
ここで、ＣＰＵ５０１は、設計支援装置１００の全体の制御を司る。ＲＯＭ５０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ５０３は、ＣＰＵ５０１のワークエリアとして使用される。ディスクドライブ５０４は、ＣＰＵ５０１の制御にしたがってディスク５０５に対するデータのリード／ライトを制御する。ディスク５０５は、ディスクドライブ５０４の制御で書き込まれたデータを記憶する。ディスク５０５としては、磁気ディスク、光ディスクなどが挙げられる。
【００３０】
Ｉ／Ｆ５０６は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワークＮＥＴに接続され、このネットワークＮＥＴを介して他の装置に接続される。そして、Ｉ／Ｆ５０６は、ネットワークＮＥＴと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ５０６には、例えばモデムやＬＡＮアダプタなどを採用することができる。
【００３１】
入力装置５０７は、キーボード、マウス、タッチパネルなど利用者の操作により、各種データの入力を行うインターフェースである。また、入力装置５０７は、カメラから画像や動画を取り込むこともできる。また、入力装置５０７は、マイクから音声を取り込むこともできる。出力装置５０８は、ＣＰＵ５０１の指示により、データを出力するインターフェースである。出力装置５０８には、ディスプレイやプリンタが挙げられる。
【００３２】
（設計支援装置１００の機能的構成例）
図６は、設計支援装置の機能的構成例を示すブロック図である。設計支援装置１００は、レジスタ情報入力受け付け部６０１と、レジスタ情報表示部６０２と、記憶部６０３と、アドレスマップ情報生成部６０４と、仕様書生成部６０５と、論理生成部６０６と、ファームヘッダ生成部６０７と、を有する。レジスタ情報入力受け付け部６０１は、例えば、入力装置５０７などによって実現される。レジスタ情報表示部６０２は、例えば、出力装置５０８などによって実現される。記憶部６０３は、ＲＯＭ５０２、ＲＡＭ５０３、ディスク５０５などによって実現される。
【００３３】
アドレスマップ情報生成部６０４からファームヘッダ生成部６０７までの制御部の処理は、例えば、図５に示すＣＰＵ５０１が記憶部６０３に記憶されたプログラムにコーディングされている。そして、ＣＰＵ５０１が記憶部６０３から該プログラムを読み出して、プログラムにコーディングされている処理を実行する。これにより、制御部の処理が実現される。また、制御部の処理結果は、例えば、記憶部６０３に記憶される。
【００３４】
レジスタ情報入力受け付け部６０１は、レジスタをメモリのアドレス空間に割り当てるための各情報の入力を受け付けて、記憶部６０３に格納する。受け付ける情報の具体例は図７の記憶例に示す。
【００３５】
図７は、記憶部による記憶例を示す説明図である。記憶部６０３は、モジュール情報７０１と、エリア情報７０２と、レジスタ情報７０３と、ビット情報７０４と、ルール情報７０５と、などを有する。モジュール情報７０１からビット情報７０４までがレジスタ情報入力受け付け部６０１によって受け付けた情報である。また、ルール情報７０５は予め記憶された情報であり、ルール情報７０５の詳細例は図１０に示す。
【００３６】
モジュール情報７０１は、対象のＬＳＩ装置内の機能ブロックであるモジュールを識別可能な識別情報を有する。例えば、モジュール情報７０１は、名前のフィールドを有する。名前のフィールドには、モジュールを識別可能な識別情報としてモジュールの名前が設定される。図７の例では、名前として、ＭＯＤＵＬＥ１が設定されてある。
【００３７】
エリア情報７０２は、例えば、モジュール内のエリアを示す情報である。エリア情報７０２は、例えば、名前、繰り返し数、所属モジュールのフィールドを有する。各フィールドに情報が設定されることによってレコード（例えば、レコード７０２−１）として記憶される。名前のフィールドには、エリアを識別可能な識別情報であるエリアの名前が設定される。繰り返し数のフィールドには、同一のレジスタがメモリに配置される数が設定される。所属モジュールのフィールドには、エリアが配置されるモジュールの名前が設定される。図７の例では、名前としてＡＲＥＡ１が設定されてあり、ＡＲＥＡ１は、繰り返しがなく、モジュールＭＯＤＵＬＥ１に属することを示す。
【００３８】
レジスタ情報７０３は、エリア内に設けられるレジスタを示す情報である。レジスタ情報７０３は、名前、繰り返し数、所属エリアのフィールドを有する。各フィールドに情報が設定されることによってレコード（例えば、レコード７０３−１〜７０３−３）として記憶される。名前のフィールドには、レジスタを識別可能な識別情報であるレジスタの名前が設定される。繰り返し数のフィールドには、同一のビット領域がメモリに配置される数が設定される。繰り返し数が２以上であると、レジスタが配列となっている。所属エリアのフィールドには、レジスタが配置されるエリアの名前が設定される。レコード７０３−２を例に挙げると、名前としてＲＥＧ２が設定され、繰り返し数として３が設定されてあり、所属エリアとしてＡＲＥＡ１が設定されてある。
【００３９】
ビット情報７０４は、レジスタごとに、レジスタに配置されるビット領域の各々のビット幅などを示す情報である。ビット情報７０４は、名前、ビット幅、繰り返し数、所属レジスタのフィールドを有する。各フィールドに情報が設定されることによってレコード（例えば、レコード７０４−１〜７０４−６）として記憶される。名前のフィールドには、ビット領域を識別可能な識別情報であるビット領域の名前が設定される。ビット幅のフィールドには、ビット領域のビット幅が設定される。繰り返し数のフィールドには、ビット領域をレジスタに配置する数が設定される。所属レジスタのフィールドには、ビット領域が配置されるレジスタの名前が設定される。レコード７０４−２を例に挙げると、名前としてＣが設定され、ビット幅として１２が設定され、繰り返し数として無しが設定され、所属レジスタとしてＲＥＧ２が設定される。
【００４０】
つぎに、図６の説明に戻って、アドレスマップ情報生成部６０４は、レジスタにおいてアクセス単位に基づくビット領域の配置を行う。アドレスマップ情報生成部６０４は、レジスタに配置される複数のビット領域の各々についてのビット幅を示すビット幅情報を取得する。ビット幅情報は、例えば、ビット情報７０４に含まれる。例えば、アドレスマップ情報生成部６０４は、レジスタ情報入力受け付け部６０１によって受け付けて記憶部６０３に記憶されたモジュール情報７０１とエリア情報７０２とレジスタ情報７０３とビット情報７０４とを取得する。
【００４１】
つぎに、アドレスマップ情報生成部６０４は、取得したビット幅情報が示す第１ビット領域についての第１ビット幅に基づいて、第１ビット領域のレジスタ内における第１位置を決定する。ビット幅情報は、例えば、ビット情報７０４に含まれる。そして、アドレスマップ情報生成部６０４は、第１位置と、レジスタが配置されるメモリへのアクセスのビット幅と、取得したビット幅情報が示す第２ビット領域についての第２ビット幅と、に基づいて、第２ビット領域のレジスタ内における第２位置を決定する。レジスタが配置されるメモリへのアクセスのビット幅は、例えば、メモリとＣＰＵとを接続するバスの幅に基づいて定まる。例えば、ビット幅は、図２に示したアクセス単位である。また、ここでは、図７のレジスタ情報７０３に示したように、レジスタが配置されるのはエリアとしてもよい。
【００４２】
つぎに、アドレスマップ情報生成部６０４は、レジスタにおいて、第１位置に第１ビット領域を配置し、第２位置に第２ビット領域を配置し、第１ビット領域と第２ビット領域との間の領域を空きビット領域にすることを示すビット配置情報を生成する。ここで、第１位置と第２位置との決定およびビット配置情報の生成との詳細について図８を用いて説明する。
【００４３】
図８は、アクセス単位に基づくビット領域配置例を示す説明図である。ここでは、図７のレジスタ情報７０３とビット情報７０４とに示したように、レジスタＲＥＧ１とレジスタＲＥＧ２とレジスタＲＥＧ３の順にビット領域を配置する例を示す。ここでは、説明で用いるために、現在のビット位置をｃｐとし、配置位置をａｐとする。
【００４４】
まず、レジスタＲＥＧ１のビット領域の配置について説明する。レジスタＲＥＧ１は、４８ビットのビット領域Ａが配置される。アドレスマップ情報生成部６０４は、現在のビット位置ｃｐを０に設定する。そして、アドレスマップ情報生成部６０４は、現在のビット位置ｃｐを、ビット領域Ａの最下位ビットとし、「現在のビット位置ｃｐ＋ビット領域Ａのビット幅−１」の位置をビット領域Ａの最上位ビットとして決定する。レジスタＲＥＧ１はビット領域Ａ以外のビット領域がない。そこで、アドレスマップ情報生成部６０４は、レジスタＲＥＧ１において、決定した位置にビット領域Ａを配置したことを示す第１ビット配置情報を生成する。
【００４５】
つぎに、レジスタＲＥＧ２のビット領域の配置について説明する。レジスタＲＥＧ２は、１２ビットのビット領域Ｃと、８ビットのビット領域Ｄと、が配置される。アドレスマップ情報生成部６０４は、現在のビット位置ｃｐを０に設定する。そして、アドレスマップ情報生成部６０４は、現在のビット位置ｃｐを、ビット領域Ｃの最下位ビットに決定し、「現在のビット位置ｃｐ＋ビット領域Ｃのビット幅−１」の位置をビット領域Ｃの最上位ビットに決定する。ここで、アドレスマップ情報生成部６０４は、レジスタＲＥＧ２において、決定した位置にビット領域Ｃを配置したことを示す情報を生成してもよい。
【００４６】
アドレスマップ情報生成部６０４は、現在のビット位置ｃｐを「ビット領域Ｃの最上位ビット＋１」に設定する。そして、アドレスマップ情報生成部６０４は、ビット領域Ｄのビット幅が、アクセス単位に基づくビット幅の複数の範囲のいずれに該当するかを判定する。ここでは、最大のビット幅が６４ビットであると想定し、複数の範囲には、１〜８の第１範囲と、９〜１６の第２範囲と、１７〜３２の第３範囲と、３３〜６４の第４範囲と、がある。第１範囲に該当すると判定された場合、アドレスマップ情報生成部６０４は、配置位置ａｐを現在のビット位置ｃｐと現在のビット位置ｃｐ以降の位置とのうちの８で割って余りがない最小の数値の位置に決定する。第２範囲に該当すると判定された場合、アドレスマップ情報生成部６０４は、配置位置ａｐを現在のビット位置ｃｐと現在のビット位置ｃｐ以降の位置とのうちの１６で割って余りがない最小の数値の位置に決定する。第３範囲に該当すると判定された場合、アドレスマップ情報生成部６０４は、配置位置ａｐを現在のビット位置ｃｐと現在のビット位置ｃｐ以降の位置とのうちの３２で割って余りがない最小の数値の位置に決定する。第４範囲に該当すると判定された場合、アドレスマップ情報生成部６０４は、配置位置ａｐを現在のビット位置ｃｐと現在のビット位置ｃｐ以降の位置とのうちの６４で割って余りがない最小の数値の位置に決定する。
【００４７】
ここでは、ビット領域Ｄのビット幅は８ビットであるため、アドレスマップ情報生成部６０４は、第１範囲であると判定する。そして、現在のビット位置ｃｐは１２であるため、アドレスマップ情報生成部６０４は、ビット領域Ｄの配置位置ａｐを１６に決定する。このようにして、レジスタＲＥＧ２において、ビット領域Ｄに対してアクセス単位によってアライメントが行われる。
【００４８】
そして、アドレスマップ情報生成部６０４は、決定した各位置に、ビット領域Ｃとビット領域Ｄを配置し、現在のビット位置ｃｐと現在のビット位置ｃｐから配置位置ａｐまでの間との領域を空きビット領域にすることを示すビット配置情報を生成する。図８（２）に示すように、レジスタＲＥＧ２において、１２〜１５の間の領域が空きビット領域となる。
【００４９】
つぎに、レジスタＲＥＧ３のビット領域の配置について説明する。レジスタＲＥＧ３は、１０ビットのビット領域Ｅと、８ビットのビット領域Ｆと、２４ビットのビット領域Ｇと、が配置される。アドレスマップ情報生成部６０４は、現在のビット位置ｃｐを０に設定する。そして、アドレスマップ情報生成部６０４は、現在のビット位置ｃｐを、ビット領域Ｅの最下位ビットに決定し、「現在のビット位置ｃｐ＋ビット領域Ｅのビット幅−１」の位置をビット領域Ｅの最上位ビットに決定する。ここで、アドレスマップ情報生成部６０４は、レジスタＲＥＧ３において、決定した位置にビット領域Ｅを配置したことを示す情報を生成してもよい。
【００５０】
アドレスマップ情報生成部６０４は、現在のビット位置ｃｐを「ビット領域Ｅの最上位ビット＋１」に設定する。現在のビット位置ｃｐは１０に設定される。そして、アドレスマップ情報生成部６０４は、ビット領域Ｆのビット幅が、アクセス単位に基づくビット幅の複数の範囲のいずれに該当するかを判定する。ここでは、ビット領域Ｆのビット幅が８であるため、アドレスマップ情報生成部６０４は、第１範囲であると判定する。そして、現在のビット位置ｃｐは１０であるため、アドレスマップ情報生成部６０４は、ビット領域Ｆの配置位置ａｐを１６に決定する。
【００５１】
つぎに、アドレスマップ情報生成部６０４は、現在のビット位置ｃｐを「ビット領域Ｆの最上位ビット＋１」に設定する。現在のビット位置ｃｐは２４に設定される。そして、アドレスマップ情報生成部６０４は、ビット領域Ｇのビット幅が、アクセス単位に基づくビット幅の複数の範囲のいずれに該当するかを判定する。ここでは、ビット領域Ｇのビット幅が２４であるため、アドレスマップ情報生成部６０４は、第３範囲であると判定する。そして、現在のビット位置ｃｐは２４であるため、アドレスマップ情報生成部６０４は、ビット領域Ｇの配置位置ａｐを３２に決定する。
【００５２】
アドレスマップ情報生成部６０４は、決定した各位置にビット領域Ｅからビット領域Ｇを配置し、ビット領域Ｅとビット領域Ｆとの間の領域とビット領域Ｆとビット領域Ｇとの間の領域とを空きビット領域にすることを示す第１ビット配置情報を生成する。図８（３）に示すように、レジスタＲＥＧ３において、１０〜１５の間の領域と２４〜３１の間の領域とが空きビット領域となる。
【００５３】
つぎに、レジスタの各々についてアクセス単位に基づくビット領域の配置が終了すると、アドレスマップ情報生成部６０４は、バス幅に基づくビット領域の配置を行う。アドレスマップ情報生成部６０４は、生成した第１ビット配置情報に基づいて、第１ビット幅と第２ビット幅と第１空きビット領域のビット幅との第１合計値を所定のビット幅によって除算した場合の余りを合計値から減算した値に相当するビット幅を導出する。所定のビット幅は、例えば、メモリとメモリへのアクセス元とを接続するバスのバス幅であり、記憶部６０３などに予め記憶されてある。バス幅は、バスにおいて、一度の伝送で同時に送れるデータ量のことである。アドレスマップ情報生成部６０４は、第１ビット配置情報に基づいて、レジスタにおいて、第２位置と第２ビット幅とに基づく位置に、導出したビット幅の第２空きビット領域を配置する。第２位置と第２ビット幅とに基づく位置とは、第２ビット領域の最上位ビットよりも上位であり、当該最上位ビットの隣のビットである。
【００５４】
例えば、アドレスマップ情報生成部６０４は、第１合計値を所定のビット幅で割った場合に余りがあるか否かを判定する。そして、余りがあると判定された場合、アドレスマップ情報生成部６０４は、レジスタのビット幅がバス幅に基づく値でないと判定する。余りがないと判定された場合は、レジスタのビット幅がバス幅に基づく値であると判定する。そして、アドレスマップ情報生成部６０４は、レジスタにおいて、第１合計値を所定のビット幅によって除算した場合の余りを第１合計値から減算した値を算出する。アドレスマップ情報生成部６０４は、レジスタにおいて、第２位置と第２ビット幅とに基づく位置に、算出した値をビット幅とした第２空きビット領域を配置することを示す第２ビット配置情報を生成する。これにより、決定された位置にビット領域を配置後のレジスタをバス幅によって分割した場合にビット領域が配置されていない領域が空きビット領域となる。
【００５５】
図９は、バス幅に基づくビット領域配置例を示す説明図である。図９の例では、所定のビット幅は３２ビットとする。まず、レジスタＲＥＧ１について説明する。例えば、レジスタＲＥＧ１のビット幅は４８ビットであるため、アドレスマップ情報生成部６０４は、レジスタＲＥＧ１のビット幅を所定のビット幅で除算した場合の余りがあると判定する。図９（１）に示すように、所定のビット幅から余りを減算した値が１６ビットである。そのため、アドレスマップ情報生成部６０４は、レジスタＲＥＧ１において、ビット領域Ａの最上位ビットよりも上位であり、ビット領域Ａの最上位ビットの隣の位置に、１６ビットの空きビット領域を配置することを示す第２ビット配置情報を生成する。
【００５６】
つぎに、レジスタＲＥＧ２について説明する。例えば、レジスタＲＥＧ２のビット幅は２４ビットであるため、アドレスマップ情報生成部６０４は、レジスタＲＥＧ２のビット幅を所定のビット幅で除算した場合の余りがあると判定する。図９（２）に示すように、所定のビット幅から余りを減算した値が８ビットである。そのため、アドレスマップ情報生成部６０４は、レジスタＲＥＧ２において、ビット領域Ｄの最上位ビットよりも上位であり、ビット領域Ｄの最上位ビットの隣の位置に、８ビットの空きビット領域を配置することを示す第２ビット配置情報を生成する。
【００５７】
そして、レジスタＲＥＧ３について説明する。例えば、レジスタＲＥＧ３のビット幅は５６ビットであるため、アドレスマップ情報生成部６０４は、レジスタＲＥＧ３のビット幅を所定のビット幅で除算した場合の余りがあると判定する。図９（３）に示すように、所定のビット幅から余りを減算した値が８ビットである。そのため、アドレスマップ情報生成部６０４は、レジスタＲＥＧ３において、ビット領域Ｇの最上位ビットよりも上位であり、ビット領域Ｇの最上位ビットの隣の位置に、８ビットの空きビット領域を配置することを示す第２ビット配置情報を生成する。
【００５８】
つぎに、バス幅に基づくビット領域配置後のレジスタをメモリのアドレス空間に割り当てる処理について説明する。ここでのメモリとは、実際のメモリのうち、図７のエリア情報７０２が示すエリア内である。アドレスマップ情報生成部６０４は、メモリのアドレス空間のうちのいずれのレジスタも割り当てられていないアドレスの中から、第１合計値と第２空きビット領域のビット幅との第２合計値に基づいて、レジスタを割り当てるアドレスを決定する。アドレスマップ情報生成部６０４は、生成した第２ビット配置情報に基づいて、決定したアドレスにレジスタを割り当てることを示すレジスタ配置情報を生成する。
【００５９】
また、レジスタに同一のビット領域が複数配置される場合、アドレスマップ情報生成部６０４は、割り当てられていないアドレスの中から、同一のビット領域が配置される数と第２合計値とに基づく値に基づいて、レジスタを割り当てるアドレスを決定する。メモリ配置させる数は、図７のレジスタ情報７０３に示した繰り返し数である。そして、アドレスマップ情報生成部６０４は、決定したアドレスに、繰り返し数のレジスタを割り当てることを示すレジスタ配置情報を生成する。
【００６０】
具体的に、例えば、アドレスマップ情報生成部６０４は、第２合計値がいずれのサイズの範囲に該当するかを判定する。サイズの範囲の具体例は図１０に示す。
【００６１】
図１０は、レジスタ配置のルール情報例を示す説明図である。ルール情報７０５は、レジスタのサイズごとに、レジスタを配置するメモリのアドレス値を示す。図１０の例では、レジスタのサイズをバイト単位とし、レジスタのサイズを２進数で表した場合の２進数の桁数によって表される最大の値の倍数となるアドレスを、レジスタが配置される位置となることを示す。例えば、レジスタのサイズが１２バイトであれば、１２を２進数で表すと、“１１００”となり、２進数での桁数は４桁である。４桁で表される最大値は１６であるため、レジスタは、１６の倍数のアドレスに配置される。このようなアドレスに配置することによって、アドレスデコーダの構造を単純化させることが可能となる。つぎに、レジスタＲＥＧ１からレジスタＲＥＧ３がメモリに配置される詳細例を、図１１を用いて説明する。
【００６２】
図１１は、レジスタ配置例を示す説明図である。ここでは、説明上用いる現在のレジスタ位置をｒｐとし、レジスタの配置位置をｒａｐとする。まず、レジスタＲＥＧ１を配置する例について説明する。いずれのレジスタも配置していないため、アドレスマップ情報生成部６０４は、現在のレジスタ位置ｒｐを“００００ｈ”に設定する。レジスタＲＥＧ１のサイズについての第２合計値は２バイトであるため、図１０のルール情報７０５が示すルールに基づいて、アドレスマップ情報生成部６０４は、例えば、レジスタＲＥＧ１を割り当てるレジスタの配置位置ｒａｐを“００００ｈ”に決定する。そして、図１１（１）に示すように、アドレスマップ情報生成部６０４は、レジスタＲＥＧ１を“００００ｈ”に割り当てたことを示すレジスタ配置情報を生成する。そして、アドレスマップ情報生成部６０４は、現在のレジスタ位置ｒｐを“０００８ｈ”に設定する。
【００６３】
つぎに、レジスタＲＥＧ２を配置する例について説明する。レジスタＲＥＧ２は、図７のレジスタ情報７０３に示したように、繰り返し数が３である。そのため、図１１（２）に示すように、アドレスマップ情報生成部６０４は、レジスタＲＥＧ２についての第２合計値は４バイトであるため、３個の繰り返しで、レジスタＲＥＧ２のサイズは１２バイトである。
【００６４】
アドレスマップ情報生成部６０４は、例えば、現在のレジスタ位置ｒｐが“０００８ｈ”であるため、図１０のルール情報７０５が示すルールに基づいて、レジスタＲＥＧ２に割り当てるレジスタの配置位置ｒａｐを“００１０ｈ”に決定する。図１１（２）に示すように、アドレスマップ情報生成部６０４は、３個繰り返したレジスタＲＥＧ２を決定した“００１０ｈ”に割り当てたことを示すレジスタ配置情報を生成する。ここで、生成されるレジスタ配置情報は、例えば、レジスタＲＥＧ１を割り当てたことを示すレジスタ配置情報を含むこととする。また、例えば、レジスタの配置位置ｒａｐが現在のレジスタ位置ｒｐより大きい。そのため、アドレスマップ情報生成部６０４は、メモリにおいて、レジスタの配置位置ｒａｐと現在のレジスタ位置ｒｐとの間のアドレスに対応する領域を空き領域とすることを示すレジスタ配置情報を生成する。また、ここで生成されるレジスタ配置情報は、例えば、レジスタＲＥＧ２およびレジスタＲＥＧ１を割り当てたことを示すレジスタ配置情報を含むこととする。アドレスマップ情報生成部６０４は、現在のレジスタ位置ｒｐを“００１Ｃｈ”に設定する。
【００６５】
そして、レジスタＲＥＧ３を配置する例について説明する。アドレスマップ情報生成部６０４は、現在のレジスタ位置ｒｐが“００１Ｃｈ”であるため、図１０のルール情報７０５が示すルールに基づいて、レジスタの配置位置ｒａｐを“０００８ｈ”に決定する。図１１（３）に示すように、アドレスマップ情報生成部６０４は、レジスタＲＥＧ３を決定した“０００８ｈ”に割り当てたことを示すレジスタ配置情報を生成する。ここで、生成されるレジスタ配置情報は、例えば、レジスタＲＥＧ２およびレジスタＲＥＧ１を割り当てたことを示すレジスタ配置情報を含むこととする。また、アドレスマップ情報生成部６０４は、レジスタの配置位置ｒａｐが現在のレジスタ位置ｒｐより小さいため、空き領域を作成しない。また、現在のレジスタ位置ｒｐは変化せずに、“００１Ｃｈ”のままである。
【００６６】
このようにして、すべてのレジスタについて、アドレス空間への割り当てが終了した際のレジスタ配置情報がアドレスマップ情報１１００である。このように配置することによって、物理的なアクセス単位を保ちつつ、論理的な単位での配置が可能となる。
【００６７】
また、アドレスマップ情報生成部６０４は、メモリ空間上に、レジスタを配置したエリアを配置することを示すエリア配置情報を生成する。アドレスマップ情報生成部６０４は、エリアに対してエリアのサイズによってアライメントを行いながら配置する。エリア配置する処理手順は、レジスタを配置する処理手順と同じであるため、詳細な説明については省略する。
【００６８】
また、レジスタ情報表示部６０２は、生成されたアドレスマップ情報１１００を出力する。例えば、レジスタ情報表示部６０２は、生成されたアドレスマップ情報１１００が示すレジスタのアドレスマップをディスプレイなどの出力装置５０８に表示する。これにより、設計者は、即座にレジスタの配置を確認することができる。
【００６９】
また、仕様書生成部６０５は、アドレスマップ情報１１００に基づいて、機能仕様書を生成して出力する。例えば、出力形式としては、記憶部６０３などへの出力、出力装置５０８への出力などが挙げられる。
【００７０】
また、論理生成部６０６は、アドレスマップ情報１１００に基づいて、ネットリストを生成して出力する。ここで、生成されるネットリストはＲＴＬである。例えば、出力形式としては、記憶部６０３などへの出力、出力装置への出力などが挙げられる。
【００７１】
また、ファームヘッダ生成部６０７は、アドレスマップ情報１１００に基づいて、ファームヘッダ情報を生成して出力する。例えば、出力形式としては、記憶部６０３などへの出力、出力装置への出力などが挙げられる。ファームヘッダ情報の記述例については、図１２に示す。
【００７２】
レジスタ情報表示部６０２と、仕様書生成部６０５と、論理生成部６０６と、ファームヘッダ生成部６０７と、による各処理については、設計者からの入力指示に応じて行われるとしてもよい。
【００７３】
図１２は、レジスタ配置に基づくファームウェアのヘッダ定義例を示す説明図である。図１２に示すように、ファームヘッダ情報１２００には、上から順に、レジスタＲＥＧ１についてのヘッダ１２０１と、レジスタＲＥＧ３についてのヘッダ１２０３と、レジスタＲＥＧ２についてのヘッダ１２０２と、が定義されてある。図１２に示すように、論理的に意味のある単位で各レジスタのビット領域が定義される。
【００７４】
図１３は、アドレスマップの比較例を示す説明図である。図１３（１）の例のように、既存のアプリケーションによってアドレスマップ情報１３００が生成されると、物理的な３２ビットのバス幅単位でレジスタが割り当てられるため、レジスタＲＥＧ１のビット領域Ａがビット領域Ａ１とビット領域Ａ２とに分割される。また、図１３（１）の例のように、アドレスマップ情報１３００において、ビット領域Ｃ０とビット領域Ｄ０とビット領域Ｃ１とが間隔を空けずに配置され、ビット領域Ｄ１とビット領域Ｃ２とビット領域Ｄ２とが間隔を空けずに配置される。また、図１３（１）の例に、アドレスマップ情報１３００において、ビット領域Ｅとビット領域Ｆとが間隔を空けずにレジスタＲＥＧ３に配置される。
【００７５】
これに対して、図１３（２）に示すように、アドレスマップ情報生成部６０４によって生成されたアドレスマップ情報１１００において、レジスタＲＥＧ１には、４８ビットのビット領域Ａが配置される。また、図１３（２）に示すように、アドレスマップ情報１１００において、レジスタＲＥＧ２にはビット領域Ｄがアクセス単位によってアライメントされてある。また、アドレスマップ情報１１００において、レジスタＲＥＧ２には、ビット領域Ｄとビット領域Ｃと空きビット領域とが３個繰り返して配置されてある。また、アドレスマップ情報１１００において、レジスタＲＥＧ２がメモリ空間上にアライメントされてある。
【００７６】
また、図１３（２）に示すように、生成されたアドレスマップにおいて、レジスタＲＥＧ３には、ビット領域Ｆがアクセス単位によってアライメントされてある。
【００７７】
図１４は、プログラムにおけるレジスタの初期化の比較例を示す説明図である。図１４（１）のプログラム１４０１には、１２ビット幅のビット領域と、１６ビット幅のビット領域と、が既存のアプリケーションによって配置されたレジスタの初期化例を示す。図１４（２）のプログラム１４０２には、１２ビット幅のビット領域と、１６ビット幅のビット領域と、が設計支援装置１００によって配置されたレジスタの初期化例を示す。
【００７８】
既存のアプリケーションの場合、アクセス単位でビット領域が配置されていないため、アクセス単位で扱うファームヘッダが作成できない。そのため、プログラム１４０１では、アクセス単位で初期化するように記述できない。一方、設計支援装置１００の場合、アクセス単位でビット領域が配置されるため、アクセス単位で扱うファームヘッダが作成可能である。そのため、プログラム１４０２では、アクセス単位で初期化するように記述できる。
【００７９】
また、従来、バス幅が異なるＣＰＵであると、設計者があらたにビット領域の配置とレジスタの配置とをやり直すため、手間がかかる。一方、本実施の形態では、異なるバス幅についてのレジスタについて同様の処理を行うだけで、簡単にレジスタマップ情報が得られる。
【００８０】
また、従来、いずれかのレジスタについての割当先、またはいずれかのビット領域についての割当先に変更があると、すべてのレジスタについての割当先とビット領域についての割当先とが更新される。これに対して、本実施の形態では、レジスタ情報７０３には、アドレスや未使用の領域などの情報がないため、レジスタの追加などの更新の際に、他のレジスタについて更新が行われなくてよい。このように、設計支援装置１００を含むシステムの反応性がよくなる。
【００８１】
（設計支援装置１００による設計支援処理手順例）
図１５は、設計支援装置による設計支援処理手順例を示すフローチャートである。まず、設計支援装置１００は、各種情報の入力を受け付ける（ステップＳ１５０１）。つぎに、設計支援装置１００は、受け付けた情報を記憶部６０３に格納する（ステップＳ１５０２）。そして、設計支援装置１００は、アドレスマップ生成処理を行う（ステップＳ１５０３）。これにより、アドレスマップ情報１１００が生成される。
【００８２】
設計支援装置１００は、設計者からの指示を判定する（ステップＳ１５０４）。表示指示であると判定された場合（ステップＳ１５０４：表示）、設計支援装置１００は、アドレスマップ情報１１００が示すアドレスマップを表示し（ステップＳ１５０５）、一連の処理を終了する。つぎに、機能仕様書１５００の生成指示であると判定された場合（ステップＳ１５０４：仕様書）、設計支援装置１００は、機能仕様書１５００を生成して出力し（ステップＳ１５０６）、一連の処理を終了する。
【００８３】
そして、ネットリスト１５０１の生成指示であると判定された場合（ステップＳ１５０４：論理）、設計支援装置１００は、ネットリスト１５０１（ＲＴＬ）を生成して出力し（ステップＳ１５０７）、一連の処理を終了する。ファームヘッダ情報１２００の生成指示であると判定された場合（ステップＳ１５０４：ヘッダ）、設計支援装置１００は、ファームヘッダ情報１２００を生成して出力し（ステップＳ１５０８）、一連の処理を終了する。
【００８４】
図１６は、図１５に示したアドレスマップ生成処理手順例を示すフローチャートである。まず、設計支援装置１００は、ビット領域の第１配置処理を行う（ステップＳ１６０１）。そして、設計支援装置１００は、ビット領域の第２配置処理を行う（ステップＳ１６０２）。つぎに、設計支援装置１００は、レジスタの配置処理を行う（ステップＳ１６０３）。そして、設計支援装置１００は、エリアの配置処理を行う（ステップＳ１６０４）。
【００８５】
図１７および図１８は、図１６に示したビット領域の第１配置処理手順例を示すフローチャートである。設計支援装置１００は、レジスタのうち、未選択のレジスタがあるか否かを判断する（ステップＳ１７０１）。未選択のレジスタがあると判断された場合（ステップＳ１７０１：Ｙｅｓ）、設計支援装置１００は、未選択のレジスタから１つのレジスタを選択する（ステップＳ１７０２）。
【００８６】
つぎに、設計支援装置１００は、現在のビット位置を０に設定する（ステップＳ１７０３）。そして、設計支援装置１００は、選択したレジスタに配置されるビット領域のうちの未配置のビット領域から１つのビット領域を選択する（ステップＳ１７０４）。そして、設計支援装置１００は、選択したビット領域のビット幅を確認する（ステップＳ１７０５）。設計支援装置１００は、ビット幅がいずれの範囲に該当するかを判断する（ステップＳ１７０６）。
【００８７】
１〜８ビットであると判断された場合（ステップＳ１７０６：１〜８）、設計支援装置１００は、ビットの配置位置ａｐを現在のビット位置ｃｐから８で割れる位置に決定し（ステップＳ１７０７）、ステップＳ１８０１へ移行する。９〜１６ビットであると判断された場合（ステップＳ１７０６：９〜１６）、設計支援装置１００は、ビットの配置位置ａｐを現在のビット位置ｃｐから１６で割れる位置に決定し（ステップＳ１７０８）、ステップＳ１８０１へ移行する。１７〜３２ビットであると判断された場合（ステップＳ１７０６：１７〜３２）、設計支援装置１００は、ビットの配置位置ａｐを現在のビットから３２で割れる位置に決定し（ステップＳ１７０９）、ステップＳ１８０１へ移行する。３３〜６４ビットであると判断された場合（ステップＳ１７０６：３３〜６４）、設計支援装置１００は、ビットの配置位置ａｐを現在のビットから６４で割れる位置に決定し（ステップＳ１７１０）、ステップＳ１８０１へ移行する。
【００８８】
設計支援装置１００は、現在のビット位置ｃｐとビットの配置位置ａｐとが同じか否かを判断する（ステップＳ１８０１）。現在のビット位置ｃｐとビットの配置位置ａｐとが同じであると判断された場合（ステップＳ１８０１：Ｙｅｓ）、設計支援装置１００は、ステップＳ１８０３へ移行する。現在のビット位置ｃｐとビットの配置位置ａｐとが同じでないと判断された場合（ステップＳ１８０１：Ｎｏ）、設計支援装置１００は、現在のビット位置ｃｐと現在のビット位置ｃｐからビットの配置位置ａｐまでの間とを空き領域に設定する（ステップＳ１８０２）。
【００８９】
つぎに、設計支援装置１００は、ビットの配置位置ａｐにビット領域を配置したビット配置情報を生成する（ステップＳ１８０３）。そして、設計支援装置１００は、現在のビット位置ｃｐをビット領域の先頭の位置＋１に設定する（ステップＳ１８０４）。
【００９０】
設計支援装置１００は、未配置のビット領域がまだあるか否かを判断する（ステップＳ１８０５）。未配置のビット領域があると判断された場合（ステップＳ１８０５：Ｙｅｓ）、設計支援装置１００は、ステップＳ１７０４へ戻る。未配置のビット領域がないと判断された場合（ステップＳ１８０５：Ｎｏ）、設計支援装置１００は、ステップＳ１７０１へ戻る。
【００９１】
ステップＳ１７０１において、未選択のレジスタがないと判断された場合（ステップＳ１７０１：Ｎｏ）、設計支援装置１００は、一連の処理を終了する。
【００９２】
図１９は、図１６に示したビット領域の第２配置処理手順例を示すフローチャートである。設計支援装置１００は、レジスタのうち、未選択のレジスタがあるか否かを判断する（ステップＳ１９０１）。未選択のレジスタがあると判断された場合（ステップＳ１９０１：Ｙｅｓ）、設計支援装置１００は、未選択のレジスタから１つのレジスタを選択する（ステップＳ１９０２）。
【００９３】
つぎに、設計支援装置１００は、ビット領域のビット幅と空きビット領域との合計値をバス幅で除算する（ステップＳ１９０３）。設計支援装置１００は、除算結果に余りがあるか否かを判断する（ステップＳ１９０４）。余りがないと判断された場合（ステップＳ１９０４：Ｎｏ）、設計支援装置１００は、ステップＳ１９０１へ戻る。余りがあると判断された場合（ステップＳ１９０４：Ｙｅｓ）、設計支援装置１００は、合計値から余りを減算した値をビット幅として導出する（ステップＳ１９０５）。設計支援装置１００は、導出したビット幅の空きビット領域を、レジスタの最上位に配置したことを示す第２配置情報を生成し（ステップＳ１９０６）、ステップＳ１９０１へ戻る。
【００９４】
また、ステップＳ１９０１において、未選択のレジスタがないと判断された場合（ステップＳ１９０１：Ｎｏ）、設計支援装置１００は、一連の処理を終了する。
【００９５】
図２０は、図１６に示したレジスタの配置処理手順例を示すフローチャートである。まず、設計支援装置１００は、現在のレジスタ位置ｒｐを“００００ｈ”に設定する（ステップＳ２００１）。つぎに、設計支援装置１００は、エリアに含まれるレジスタのうち、未配置のレジスタがあるか否かを判断する（ステップＳ２００２）。未配置のレジスタがあると判断された場合（ステップＳ２００２：Ｙｅｓ）、設計支援装置１００は、未配置のレジスタから１つのレジスタを選択する（ステップＳ２００３）。
【００９６】
設計支援装置１００は、繰り返し数が２以上であるか否かを判断する（ステップＳ２００４）。繰り返し数が２以上であると判断された場合（ステップＳ２００４：Ｙｅｓ）、設計支援装置１００は、繰り返し数に基づくレジスタのバイト単位のサイズを確認し（ステップＳ２００５）、ステップＳ２００７へ移行する。繰り返し数が２以上でないと判断された場合（ステップＳ２００４：Ｎｏ）、設計支援装置１００は、レジスタのバイト単位のサイズを確認する（ステップＳ２００６）。
【００９７】
つぎに、設計支援装置１００は、レジスタの配置位置ｒａｐを、サイズに応じた倍数の位置であり、かつサイズに応じた領域が空いている位置に決定する（ステップＳ２００７）。設計支援装置１００は、レジスタの配置位置ｒａｐと現在のレジスタ位置ｒｐとが異なるか否かを判断する（ステップＳ２００８）。
【００９８】
異なると判断された場合（ステップＳ２００８：Ｙｅｓ）、設計支援装置１００は、現在のレジスタ位置ｒｐとレジスタの配置位置ｒａｐとの間を空き領域にし、レジスタの配置位置ｒａｐにレジスタを配置することを示すレジスタ配置情報を生成し（ステップＳ２００９）、ステップＳ２０１１へ移行する。同じであると判断された場合（ステップＳ２００８：Ｎｏ）、設計支援装置１００は、レジスタの配置位置ｒａｐにレジスタを配置することを示すレジスタ配置情報を生成し（ステップＳ２０１０）、ステップＳ２０１１へ移行する。
【００９９】
設計支援装置１００は、現在のレジスタ位置ｒｐがレジスタの配置位置ｒａｐよりも大きい、または同じかを判断する（ステップＳ２０１１）。現在のレジスタ位置ｒｐがレジスタの配置位置ｒａｐよりも大きい、または同じであると判断された場合（ステップＳ２０１１：Ｙｅｓ）、設計支援装置１００は、現在のレジスタ位置ｒｐを、レジスタを配置した終了位置＋１に設定し（ステップＳ２０１２）、ステップＳ２００１へ移行する。現在のレジスタ位置ｒｐがレジスタの配置位置ｒａｐ未満であると判断された場合（ステップＳ２０１１：Ｎｏ）、設計支援装置１００は、ステップＳ２００１へ戻る。
【０１００】
また、ステップＳ２００２において、未配置のレジスタがないと判断された場合（ステップＳ２００２：Ｎｏ）、設計支援装置１００は、一連の処理を終了する。
【０１０１】
また、図１６に示したステップＳ１６０４のエリアの配置処理の詳細な手順については、図２０に示したレジスタの配置処理手順と同様であり、レジスタをエリアと読み替えればよい。エリアの配置処理手順については、メモリ空間上にレジスタの配置が完了したエリアを配置する。メモリ空間上にエリアを配置する際にも、エリアのサイズによってアライメントを行いながら配置する。
【０１０２】
以上説明したように、設計支援装置１００は、レジスタにおいて、２つのビット領域の間隔をアクセス単位で決定して該２つのビット領域を配置するとともに、該２つのビット領域間を空きビット領域とする。これにより、レジスタにおいてビット領域がアライメントされるため、アクセス効率の高いレジスタのアドレスマップの作成の容易化を図ることができる。したがって、設計者によるアドレスマップの作成作業の作業時間の短縮を図ることができる。
【０１０３】
また、設計支援装置１００は、２つのビット領域のビット幅と空きビット領域のビット幅との第１合計値をバス幅で割った場合の余りを第１合計値から減算した値に相当するビット幅の空きビット領域をレジスタの上位に配置する。これにより、レジスタに配置される各ビット領域のビット幅の合計値がバス幅の倍数となる。そのため、メモリ空間において、レジスタがバス幅に応じてアライメントされ、アクセス効率の高いレジスタのアドレスマップの作成の容易化を図ることができる。
【０１０４】
また、設計支援装置１００は、メモリのアドレス空間のうちのいずれのレジスタも割り当てられていないアドレスの中から、第１合計値と第２空きビット領域のビット幅との第２合計値に基づいて決定したアドレスにレジスタを割り当てる。これにより、メモリ空間上において、レジスタがレジスタのサイズによってアライメントされるため、アクセス効率の高いレジスタのアドレスマップが作成される。
【０１０５】
また、設計支援装置１００は、メモリのアドレス空間のうちのいずれのレジスタも割り当てられていないアドレスの中から、第２合計値と第１ビット領域および第２ビット領域の繰り返し数とに基づいて決定したアドレスにレジスタを割り当てる。これにより、レジスタがレジスタのサイズによってアライメントされるため、アクセス効率の高いレジスタのアドレスマップが作成される。したがって、レジスタが論理的に意味を持った単位でメモリ空間上に配置された構造体となる。
【０１０６】
なお、本実施の形態で説明した設計支援方法は、予め用意された設計支援プログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本設計支援プログラムは、磁気ディスク、光ディスク、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、設計支援プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１０７】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１０８】
（付記１）コンピュータが、
レジスタに配置する第１ビット領域と、前記レジスタに配置する前記第１ビット領域と異なる第２ビット領域との各々についてのビット幅を示すビット幅情報を取得し、
取得した前記ビット幅情報が示す前記第１ビット領域についての第１ビット幅に基づいて、前記第１ビット領域の前記レジスタ内における第１位置を決定し、
決定した前記第１位置と、前記レジスタが配置されるメモリへのアクセス単位のビット幅と、取得した前記ビット幅情報が示す前記第２ビット領域についての第２ビット幅と、に基づいて、前記第２ビット領域の前記レジスタ内における第２位置を決定し、
前記レジスタにおいて、決定した前記第１位置に前記第１ビット領域を配置し、決定した前記第２位置に前記第２ビット領域を配置し、前記第１ビット領域と前記第２ビット領域との間の領域を第１空きビット領域にすることを示す第１ビット配置情報を生成する、
処理を実行することを特徴とする設計支援方法。
【０１０９】
（付記２）前記コンピュータが、
前記第１ビット配置情報に基づいて、前記第１ビット幅と前記第２ビット幅と前記第１空きビット領域のビット幅とを合計した第１合計値を所定のビット幅によって除算した場合の余りを前記第１合計値から減算した値に相当するビット幅を導出し、
前記第１ビット配置情報に基づいて、前記レジスタにおいて、前記第２位置と前記第２ビット幅とに基づく位置に、導出した前記ビット幅の第２空きビット領域を配置することを示す第２ビット配置情報を生成する、
処理を実行することを特徴とする付記１に記載の設計支援方法。
【０１１０】
（付記３）前記所定のビット幅は、前記メモリと前記メモリへのアクセスのアクセス元とを接続するバスのバス幅であることを特徴とする付記２に記載の設計支援方法。
【０１１１】
（付記４）前記コンピュータが、
前記メモリのアドレス空間のうちのいずれのレジスタも割り当てられていないアドレスの中から、前記第１合計値と前記第２空きビット領域のビット幅との第２合計値に基づいて、前記レジスタを割り当てるアドレスを決定し、
生成した前記第２ビット配置情報に基づいて、決定した前記アドレスに前記レジスタを割り当てることを示すレジスタ配置情報を生成する、
処理を実行することを特徴とする付記２または３に記載の設計支援方法。
【０１１２】
（付記５）前記第１ビット領域と前記第２ビット領域とをレジスタに複数配置させる場合、
前記アドレスを決定する処理では、前記アドレス空間のうちのいずれのレジスタも割り当てられていないアドレスの中から、前記第１ビット領域と前記第２ビット領域とを前記レジスタに配置させる数と前記第２合計値とに基づく値に基づいて、前記レジスタを割り当てるアドレスを決定し、
前記レジスタ配置情報を生成する処理では、前記第２ビット配置情報に基づいて、決定した前記アドレスに、前記第１ビット領域と前記第２ビット領域と前記第１空きビット領域と前記第２空きビット領域とが前記数だけ配置された前記レジスタを割り当てることを示すレジスタ配置情報を生成することを特徴とする付記４に記載の設計支援方法。
【０１１３】
（付記６）レジスタに配置する第１ビット領域と、前記レジスタに配置する前記第１ビット領域と異なる第２ビット領域との各々についてのビット幅を示すビット幅情報を取得し、取得した前記ビット幅情報が示す前記第１ビット領域についての第１ビット幅に基づいて、前記第１ビット領域の前記レジスタ内における第１位置を決定し、決定した前記第１位置と、前記レジスタが配置されるメモリへのアクセス単位のビット幅と、取得した前記ビット幅情報が示す前記第２ビット領域についての第２ビット幅と、に基づいて、前記第２ビット領域の前記レジスタ内における第２位置を決定し、前記レジスタにおいて、決定した前記第１位置に前記第１ビット領域を配置し、決定した前記第２位置に前記第２ビット領域を配置し、前記第１ビット領域と前記第２ビット領域との間の領域を空きビット領域にすることを示すビット配置情報を生成する制御部
を有することを特徴とする設計支援装置。
【０１１４】
（付記７）コンピュータに、
レジスタに配置する第１ビット領域と、前記レジスタに配置する前記第１ビット領域と異なる第２ビット領域との各々についてのビット幅を示すビット幅情報を取得し、
取得した前記ビット幅情報が示す前記第１ビット領域についての第１ビット幅に基づいて、前記第１ビット領域の前記レジスタ内における第１位置を決定し、
決定した前記第１位置と、前記レジスタが配置されるメモリへのアクセス単位のビット幅と、取得した前記ビット幅情報が示す前記第２ビット領域についての第２ビット幅と、に基づいて、前記第２ビット領域の前記レジスタ内における第２位置を決定し、
前記レジスタにおいて、決定した前記第１位置に前記第１ビット領域を配置し、決定した前記第２位置に前記第２ビット領域を配置し、前記第１ビット領域と前記第２ビット領域との間の領域を空きビット領域にすることを示すビット配置情報を生成する、
処理を実行させることを特徴とする設計支援プログラム。
【符号の説明】
【０１１５】
１００  設計支援装置
１０１  ビット幅情報
１０２  ビット配置情報
７０３  レジスタ情報
７０４  ビット情報
７０５  ルール情報
【図１】
2015197750.tif 000003
【図２】
2015197750.tif 000004
【図３】
2015197750.tif 000005
【図４】
2015197750.tif 000006
【図５】
2015197750.tif 000007
【図６】
2015197750.tif 000008
【図７】
2015197750.tif 000009
【図８】
2015197750.tif 000010
【図９】
2015197750.tif 000011
【図１０】
2015197750.tif 000012
【図１１】
2015197750.tif 000013
【図１２】
2015197750.tif 000014
【図１３】
2015197750.tif 000015
【図１４】
2015197750.tif 000016
【図１５】
2015197750.tif 000017
【図１６】
2015197750.tif 000018
【図１７】
2015197750.tif 000019
【図１８】
2015197750.tif 000020
【図１９】
2015197750.tif 000021
【図２０】
2015197750.tif 000022