(57)【要約】      （修正有）【課題】レジスタを容易に設計可能なレジスタ設計支援装置、プログラム及び記録媒体を提供する。【解決手段】レジスタ設計支援装置１は、複数の機能レジスタを含むレジスタの設計を支援する。レジスタ設計支援装置は、設計者により設計された複数の機能レジスタごとの仕様を示すレジスタ一覧に基づいて、複数の機能レジスタの配置を決定するレジスタマッピング部と、レジスタの共通設計を示すジェネレート設計と、複数の機能レジスタの配置と、レジスタ一覧とに基づいて、レジスタの仕様を示すレジスタ仕様と、レジスタの回路構成を示すレジスタ構成とを生成するレジスタ設計部と、を備える。【選択図】図２
2019200609.tif 000002
【特許請求の範囲】
【請求項１】
複数の機能レジスタを含むレジスタの設計を支援するレジスタ設計支援装置であって、
設計者により設計された前記機能レジスタごとの仕様を示すレジスタ一覧に基づいて、複数の前記機能レジスタの配置を決定するレジスタマッピング部と、
前記レジスタの共通設計を示すジェネレート設計と、複数の前記機能レジスタの配置と、前記レジスタ一覧と、に基づいて、前記レジスタの仕様を示すレジスタ仕様と、前記レジスタの回路構成を示すレジスタ構成と、を生成するレジスタ設計部と、
を備えるレジスタ設計支援装置。
【請求項２】
前記レジスタ一覧は、前記各機能レジスタの、モジュール名、機能レジスタ名、ビット数、ＣＰＵ（Central Processing Unit）Ｒ／Ｗ属性、初期値、機能Ｒ／Ｗ属性、フリップフロップ回路の有無、ＣＰＵのクリア仕様、ＣＰＵリードオンリービット数、割り込みマスクレジスタ名、マッピングモード、エンディアン、及びワード名の少なくとも１つを示す
請求項１に記載のレジスタ設計支援装置。
【請求項３】
前記マッピングモードは、ビット単位、バイト単位、又はワード単位で設計される
請求項２に記載のレジスタ設計支援装置。
【請求項４】
前記レジスタ一覧は、複数の前記機能レジスタを配列表現した配列レジスタの仕様を示し、
前記レジスタマッピング部は、前記配列レジスタを前記機能レジスタごとに展開して前記レジスタ仕様を生成する
請求項１から請求項３までのいずれか１項に記載のレジスタ設計支援装置。
【請求項５】
複数の機能レジスタを含むレジスタの設計を支援するためのプログラムであって、
設計者により設計された前記機能レジスタごとの仕様を示すレジスタ一覧に基づいて、複数の前記機能レジスタの配置を決定するレジスタマッピングステップと、
前記レジスタの共通設計を示すジェネレート設計と、複数の前記機能レジスタの配置と、前記レジスタ一覧と、に基づいて、前記レジスタの仕様を示すレジスタ仕様と、前記レジスタの回路構成を示すレジスタ構成と、を生成するレジスタ設計ステップと、
をコンピュータに実行させるためのプログラム。
【請求項６】
複数の機能レジスタを含むレジスタの設計を支援するためのプログラムを記憶した記録媒体であって、
設計者により設計された前記機能レジスタごとの仕様を示すレジスタ一覧に基づいて、複数の前記機能レジスタの配置を決定するレジスタマッピングステップと、
前記レジスタの共通設計を示すジェネレート設計と、複数の前記機能レジスタの配置と、前記レジスタ一覧と、に基づいて、前記レジスタの仕様を示すレジスタ仕様と、前記レジスタの回路構成を示すレジスタ構成と、を生成するレジスタ設計ステップと、
をコンピュータに実行させるためのプログラムを記憶した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レジスタ設計支援装置、プログラム、及び記録媒体に関する。
【背景技術】
【０００２】
ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などのデジタル回路は、ＣＰＵ（Central Processing Unit）から受け付けた設定や命令に従って動作する場合が多い。このような場合、ＡＳＩＣやＦＰＧＡにはレジスタと呼ばれる記憶回路が搭載される。ＡＳＩＣやＦＰＧＡに搭載されるレジスタは、「ＯＮ／ＯＦＦのモード」や「カウンタの初期値」といった機能ごとに仕様を設計された後、機能に応じたレジスタごとにビット（アドレス）を割り当てられる。このように、機能ごとのレジスタにビットを割り当てることをレジスタマッピングと称する。
【０００３】
レジスタマッピングが完了すると、機能ごとのレジスタの仕様及びビットに基づいて、レジスタが設計される。レジスタマッピングやレジスタの設計は、レジスタの機能やビットに応じて異なる複数の要求を同時に満たすように行われるため、煩雑である。そこで、機能ごとに設計された仕様に基づいて、自動的にレジスタマッピングやレジスタの設計を行う方法が提案されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来の方法では、レジスタの仕様の設計方法やビットの割り当て方法が複雑であったため、レジスタの設計に誤りが生じやすいという問題があった。
【０００５】
本発明は、上記の課題に鑑みてなされたものであり、レジスタを容易に設計可能なレジスタ設計支援装置、プログラム、及び記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００６】
一実施形態に係るレジスタ設計支援装置は、複数の機能レジスタを含むレジスタの設計を支援するレジスタ設計支援装置であって、設計者により設計された前記機能レジスタごとの仕様を示すレジスタ一覧に基づいて、複数の前記機能レジスタの配置を決定するレジスタマッピング部と、前記レジスタの共通設計を示すジェネレート設計と、複数の前記機能レジスタの配置と、前記レジスタ一覧と、に基づいて、前記レジスタの仕様を示すレジスタ仕様と、前記レジスタの回路構成を示すレジスタ構成と、を生成するレジスタ設計部と、を備える。
【発明の効果】
【０００７】
本発明の各実施形態によれば、レジスタを容易に設計可能なレジスタ設計支援装置、プログラム、及び記録媒体を提供することができる。
【図面の簡単な説明】
【０００８】
【図１】レジスタ設計支援装置のハードウェア構成の一例を示す図。
【図２】レジスタ設計支援装置の機能構成の一例を示す図。
【図３】ジェネレート設計の一例を示す図。
【図４】レジスタ一覧の一例を示す図。
【図５】レジスタ仕様の一例を示す図。
【図６】レジスタ構成の一例を示す図。
【図７】レジスタ設計支援装置の動作の一例を示すフローチャート。
【図８】レジスタマッピング方法の一例を示すフローチャート。
【図９】展開された図４の「table[0-1][0-2]」レジスタの仕様を示す図。
【図１０】レジスタ一覧の概要を示す図。
【発明を実施するための形態】
【０００９】
以下、本発明の各実施形態について、添付の図面を参照しながら説明する。なお、各実施形態に係る明細書及び図面の記載に関して、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重畳した説明を省略する。
【００１０】
一実施形態に係るレジスタ設計支援装置１について、図１〜図１０を参照して説明する。本実施形態に係るレジスタ設計支援装置１は、レジスタの設計者が設計した仕様に基づいて、レジスタを設計するコンピュータである。レジスタ設計支援装置１は、例えば、サーバ、ＰＣ（Personal Computer）、又はタブレット端末であるが、これに限られない。まず、レジスタ設計支援装置１のハードウェア構成について説明する。
【００１１】
図１は、本実施形態に係るレジスタ設計支援装置１のハードウェア構成の一例を示す図である。図１のレジスタ設計支援装置１は、ＣＰＵ１０１と、ＲＯＭ（Read Only Memory）１０２と、ＲＡＭ（Random Access Memory）１０３と、ＨＤＤ（Hard Disk Drive）１０４と、入力装置１０５と、表示装置１０６と、通信インタフェース１０７と、バス１０８と、を備える。
【００１２】
ＣＰＵ１０１は、プログラムを実行することにより、レジスタ設計支援装置１の各構成を制御し、レジスタ設計支援装置１の機能を実現する。ＣＰＵ１０１が実行するプログラムは、ＣＤ（Compact Disk）、ＤＶＤ、フラッシュメモリなどの、コンピュータ読み取り可能な任意の記録媒体に記録され得る。
【００１３】
ＲＯＭ１０２は、ＣＰＵ１０１が実行するプログラムや各種のデータを記憶する。
【００１４】
ＲＡＭ１０３は、ＣＰＵ１０１に作業領域を提供する。
【００１５】
ＨＤＤ１０４は、ＣＰＵ１０１が実行するプログラムや各種のデータを記憶する記録媒体である。レジスタ設計支援装置１は、ＨＤＤ１０４と共に、又はＨＤＤ１０４の代わりにＳＳＤ（Solid State Drive）を備えてもよい。
【００１６】
入力装置１０５は、ユーザの操作に応じた情報をレジスタ設計支援装置１に入力する。入力装置１０５は、例えば、タッチパネル、キーボード、マウス、又はハードウェアボタンであるが、これに限られない。
【００１７】
表示装置１０６は、ユーザの操作に応じた画面を表示する。表示装置１０６は、液晶ディスプレイ、又は有機ＥＬ（Electro Luminescence）ディスプレイであるが、これに限られない。レジスタ設計支援装置１は、タッチパネルと表示装置１０６が一体化された操作パネルを備えてもよい。
【００１８】
通信インタフェース１０７は、レジスタ設計支援装置１をインターネットやＬＡＮ（Local Area Network）などのネットワークに接続し、ネットワーク上の外部装置との通信を制御する。レジスタ設計支援装置１は、通信インタフェース１０７を介して、外部装置と通信する。
【００１９】
バス１０８は、ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、ＨＤＤ１０４、入力装置１０５、表示装置１０６、及び通信インタフェース１０７を相互に接続する。
【００２０】
なお、図１の例では、レジスタ設計支援装置１が１つのコンピュータにより構成される場合を想定しているが、レジスタ設計支援装置１は、ネットワークを介して接続された複数のコンピュータにより実現されてもよい。
【００２１】
次に、レジスタ設計支援装置１の機能構成について説明する。図２は、レジスタ設計支援装置１の機能構成の一例を示す図である。図２のレジスタ設計支援装置１は、ジェネレート設計記憶部１１と、レジスタ一覧記憶部１２と、レジスタマッピング部１３と、レジスタ設計部１４と、レジスタ仕様記憶部１５と、レジスタ構成記憶部１６と、を備える。レジスタマッピング部１３及びレジスタ設計部１４は、ＣＰＵ１０１がプログラムを実行することにより実現される。また、ジェネレート設計記憶部１１、レジスタ一覧記憶部１２、レジスタ仕様記憶部１５、及びレジスタ構成記憶部１６は、ＨＤＤ１０４やＳＳＤなどの記録媒体上に設けられる。
【００２２】
ジェネレート設計記憶部１１は、ジェネレート設計を記憶する。ジェネレート設計は、レジスタの共通仕様の設計を示すデータである。ジェネレート設計は、設計者により用意され、例えば、Ｕｎｉｘコマンドの引数としてジェネレート設計記憶部１１に保存される。
【００２３】
図３は、ジェネレート設計の一例を示す図である。図３の例では、ジェネレート設計がＵｎｉｘコマンドのコマンド引数として設計された場合を想定している。図３における「regmap」はジェネレート設計のファイル名であり、「regmap_sor.csv」はレジスタ一覧のファイル名である。レジスタ一覧については後述する。
【００２４】
図３の例では、ＣＰＵクロック名（cpuclk）は「clk_cpu」、ＣＰＵリセット名（cpurst）は「rst_cpu_n」、機能クロック名（clk）は「clk_func」、機能リセット名（rst）は「rst_func_n」に設計されている。ＣＰＵクロック名はＣＰＵが同期するＣＰＵクロックの名称であり、機能クロック名はレジスタの外部の機能モジュールが同期する機能クロックの名称である。レジスタは、ＣＰＵクロックに同期して動作するため、ＣＰＵクロック名と機能クロック名が異なる場合、すなわち、機能クロックがＣＰＵクロックと異なるクロックである場合、外部の機能モジュールと非同期で動作することになる。
【００２５】
なお、ジェネレート設計は、図３の例に限られず、設計者により任意に設計可能である。ジェネレート設計には、上記の共通仕様の一部が含まれてもよいし、上記以外の共通仕様が含まれてもよい。
【００２６】
レジスタ一覧記憶部１２は、レジスタ一覧を記憶する。レジスタ一覧は、設計者により機能ごとに設計されたレジスタの仕様の一覧を示すデータである。以下、レジスタ全体を単にレジスタと称し、レジスタが有する各機能に対応するレジスタ部分を、機能レジスタと称する。レジスタ一覧は、各機能レジスタの仕様の一覧に相当する。レジスタ一覧は、設計者により用意され、例えば、ＣＳＶファイルとしてレジスタ一覧記憶部１２に保存される。
【００２７】
図４は、レジスタ一覧の一例を示す図である。図４の例では、機能レジスタの仕様として、レジスタモジュール名、機能レジスタ名、ビット数、ＣＰＵＲ／Ｗ属性、初期値、機能Ｒ／Ｗ属性、ＦＦ（フリップフロップ）回路の有無、ＣＰＵのクリア仕様、ＣＰＵリードオンリービット数、割り込みマスクレジスタ名、マッピングモード、エンディアン、及びワード名を示している。
【００２８】
レジスタモジュール名（CSGroup）は、機能レジスタが含まれるレジスタモジュールの名称である。図４の例では、レジスタモジュール名はいずれも「func_a」に設計されている。これは、図４の機能レジスタが、レジスタモジュール名が「func_a」であるレジスタモジュールに含まれることを示している。このように、レジスタモジュール名を設計することにより、レジスタが複数のレジスタモジュールを有する場合、レジスタモジュールごとに機能レジスタの仕様を設計することができる。なお、レジスタが有するレジスタモジュールの数は任意に設計可能である。以下、レジスタモジュール名が「Ｘ」であるレジスタモジュールを「Ｘ」モジュールと称する。
【００２９】
機能レジスタ名（RegName）は、機能レジスタの名称である。図４の例では、機能レジスタ名として、「en」、「mode」、及び「str_addr」などが設計されている。レジスタ又はモジュールが有する機能レジスタの数は任意に設計可能である。また、図４の「table[0-1][0-2]」のように、機能レジスタ名を配列表現することも可能である。以下、機能レジスタ名が「Ｘ」である機能レジスタを、「Ｘ」レジスタと称する。また、機能レジスタ名が配列表現された機能レジスタを、配列レジスタと称する。
【００３０】
ビット数（Bit）は、機能レジスタのビット数である。図４の例では、空欄は１ビットに相当する。例えば、「en」レジスタのビット数は空欄であり、「mode」レジスタのビット数は[3:0]である。これは、「en」レジスタが１ビットであり、「mode」レジスタが４ビットであることを示している。
【００３１】
ＣＰＵＲ／Ｗ属性（CPU_RW）は、ＣＰＵに対するＲｅａｄ／Ｗｒｉｔｅ属性である。ＣＰＵＲ／Ｗ属性は、「RW」、「R」、及び「SRAM（Static RAM）」などに設計される。「SRAM」は、レジスタの外部に設置するＳＲＡＭに保存領域を確保することを示す。
【００３２】
初期値（Init）は、機能レジスタのリセット後の値である。図４の例では、「en」レジスタの初期値は「0」、「str_addr」レジスタの初期値は「32'h1000」に設計されている。これは、「en」レジスタは、リセット後に全てのビットが０になることを示し、「str_addr」レジスタはリセット後に値が「32'h1000」になることを示している。
【００３３】
機能Ｒ／Ｗ属性は、レジスタ外の機能モジュールに対するＲｅａｄ／Ｗｒｉｔｅ属性である。機能Ｒ／Ｗ属性（MD_RW）は、「RW」、「R」、及び「−」などに設計される。「−」は、機能レジスタが割り込みマスクレジスタであることを示す。
【００３４】
ＦＦ回路の有無（2FF）は、機能レジスタがＦＦ回路を有するか否かを示す。ＦＦ回路の有無は、有り又は無しに設計される。図４の例では、空欄がなしに相当し、「O」が有りに相当する。
【００３５】
ＣＰＵのクリア仕様（CPU_Clear）は、「0」又は「1」に設計される。「0」は、機能レジスタに対してＣＰＵから０しか書き込めないことを示し、「1」は機能レジスタに対してＣＰＵから１しか書き込めないことを示す。図４の例では、空欄が「1」に相当する。
【００３６】
ＣＰＵリードオンリービット数（CPU_RO_Bit）は、機能レジスタにおける、ＣＰＵＲ／Ｗ属性が「R」であるレジスタ部分のビット数である。ＣＰＵリードオンリービット数は、ＣＰＵＲ／Ｗ属性が「RW」に設計されたレジスタに対して設計される。このように、ＣＰＵＲ／Ｗ属性とは別に、ＣＰＵリードオンリービット数を設計することにより、機能レジスタの一部のＣＰＵＲ／Ｗ属性を、「R」に設計することができる。図４の例では、「str_addr」レジスタのＣＰＵリードオンリービット数が[2:0]に設計されている。これは、３２ビットの「str_addr」レジスタのうち、３ビットだけが、ＣＰＵＲ／Ｗ属性が「R」であることを示している。
【００３７】
割り込みマスクレジスタ名（INT）は、割り込みレジスタとして利用する割り込みマスクレジスタの名称である。図４の例では、「err_intfct」レジスタの割り込みマスクレジスタ名が「err_intmsk」に設計されている。これは、「err_intfct」レジスタの割り込みレジスタとして、「err_intmsk」レジスタが利用されることを示している。
【００３８】
マッピングモード（MappingMode）は、機能レジスタのレジスタマッピング方法である。より詳細には、マッピングモードは、隣接する機能レジスタに対する、当該機能レジスタの配置である。機能レジスタの配置は、ビット単位、バイト単位、又はワード単位で設計できる。図４の例では、マッピングモードとして、「WBB」、「WBW」、「BBB」、及び「8B8」が設計されている。マッピングモードの１文字目は前方に配置された機能レジスタに対する配置を示し、３文字目は後方に配置された機能レジスタに対する配置を示す。２文字目は配列レジスタのマッピングモードを示す文字であり、配列レジスタ以外については特に意味がない。「W」は配置をワード単位でずらすことを示し、「B」は配置を１バイト（８ビット）単位でずらすことを示し、「8」は８ビット桁上がりさせる、すなわち、配置を１ビット単位でずらすことを示す。
【００３９】
エンディアン（BigAssignFlag）は、レジスタマッピングを行う際の機能レジスタの配置を示す。エンディアンは、最上位ビットから配置するビッグエンディアン、又は最下位ビットから配置するスモールエンディアンに設計される。図４の例では、空欄がスモールエンディアンに相当し、「O」がビッグエンディアンに相当する。
【００４０】
ワード名（WDName）は、機能レジスタが配置されたワードの名称である。図４の例では、ワード名として、「setup」、「start」、及び「state」などが設計されている。ワード名が空欄である場合、ワード名として機能レジスタ名が利用される。以下、ワード名が「Ｘ」であるワードを、「Ｘ」ワードと称する。
【００４１】
なお、レジスタ一覧は、図４の例に限られず、設計者により任意に設計可能である。レジスタ一覧には、上記の仕様の一部が含まれてもよいし、上記以外の仕様が含まれてもよい。
【００４２】
レジスタマッピング部１３は、ジェネレート設計及びレジスタ一覧に基づいて、レジスタマッピングを行う。すなわち、レジスタマッピング部１３は、各機能レジスタに対してレジスタ上のビットを割り当て、各機能レジスタの配置を決定する。レジスタマッピング方法について、詳しくは後述する。
【００４３】
レジスタ設計部１４は、ジェネレート設計と、レジスタマッピング部１３により割り当てられた各機能レジスタのビット（各機能レジスタの配置）と、に基づいて、レジスタを設計する。具体的には、レジスタ設計部１４は、レジスタ仕様及びレジスタ構成を生成する。
【００４４】
レジスタ仕様は、レジスタの仕様と、レジスタのビットと、を対応付けたデータである。言い換えると、レジスタ仕様は、レジスタの仕様をビットごとに示すデータに相当する。
【００４５】
図５は、レジスタ仕様の一例を示す図である。図５のレジスタ仕様は、図４のレジスタ一覧に対応する。図５の例では、レジスタの各ワードに、ワード名が割り当てられ、各ビットに機能レジスタ名、初期値、及びＣＰＵＲ／Ｗ属性が割り当てられている。言い換えると、各機能レジスタの機能レジスタ名、初期値、及びＣＰＵＲ／Ｗ属性が、レジスタの各ビットに割り当てられている。
【００４６】
例えば、図５の１行目のワードにはワード名として「setup0」が割り当てられ、「setup0」ワードのビット８〜１１には、機能レジスタ名、初期値、及びＣＰＵＲ／Ｗ属性として、「mode」、「0」、及び「RW」がそれぞれ割り当てられている。また、２行目のワードにはワード名として「setup1」が割り当てられ、「setup1」ワードのビット０〜３１には、機能レジスタ名及び初期値として、「str_addr」及び「32h'h000_1000」がそれぞれ割り当てられている。さらに、「setup1」ワードのビット０〜２及びビット３〜３１には、ＣＰＵＲ／Ｗ属性として、「R」、「RW」がそれぞれ割り当てられている。これは、図４のレジスタ一覧において、「str_addr」レジスタのＣＰＵＲ／Ｗ属性が「RW」に設計され、ＣＰＵリードオンリービット数が３ビットに設計されているためである。
【００４７】
レジスタ設計部１４は、レジスタ一覧と、レジスタマッピング部１３により割り当てられた各機能レジスタのビットと、に基づいて、図５のようなレジスタ仕様を生成することができる。
【００４８】
レジスタ構成は、レジスタの回路構成を示すデータである。レジスタ構成は、ＶｅｒｉｌｏｇＨＤＬなどのハードウェア記述言語のファイルとして生成される。
【００４９】
図６は、レジスタ構成の一例を示す図である。図６のレジスタ構成は、図３のジェネレート設計及び図４のレジスタ一覧に対応する。図６におけるＣＰＵＩ／Ｆは、レジスタをＣＰＵに接続するためのＩ／Ｆである。また、ＦｕｎｃｔｉｏｎＣｏｒｅＩ／Ｆは、レジスタを、外部の機能モジュールに接続するためのＩ／Ｆである。
【００５０】
図６に示すように、「state」レジスタは、ＣＰＵへの読み出し経路は有するものの、ＣＰＵからの書き込み経路を有しない。これは、図４のレジスタ一覧に示すように、「state」レジスタのＣＰＵＲ／Ｗ属性が「R」に設計されているためである。
【００５１】
これに対して、「en」レジスタ、「mode」レジスタ、「str_addr」レジスタ、「kick」レジスタ、「err_intmask」レジスタ、及び「err_intfct」レジスタは、ＣＰＵへの読み出し経路及びＣＰＵからの書き込み経路をいずれも有する。これは、図４のレジスタ一覧に示すように、これらの機能レジスタのＣＰＵＲ／Ｗ属性が「RW」に設計されているためである。
【００５２】
また、図６に示すように、「en」レジスタ、「mode」レジスタ、及び「str_addr」レジスタは、機能モジュール（又は）への読み出し経路を有するが、機能モジュールからの書き込み経路を有しない。これは、図４のレジスタ一覧に示すように、これらの機能レジスタの機能Ｒ／Ｗ属性が「R」に設計されているためである。
【００５３】
これに対して、「kick」レジスタ、「state」レジスタ、及び「err_intfct」レジスタは、機能モジュールへの読み出し経路及び機能モジュールからの書き込み経路をいずれも有する。これは、図４のレジスタ一覧に示すように、これらの機能レジスタの機能Ｒ／Ｗ属性が「RW」に設計されているためである。なお、図３のジェネレート設計に示すように、レジスタは機能モジュールと非同期で動作する。このため、機能モジュールから機能レジスタへの書き込み経路上には、図６に示すように、レジスタと機能モジュールとの動作タイミングのずれを吸収する非同期吸収回路が設けられる。また、図４のレジスタ一覧に示すように、「kick」レジスタは、ＦＦ回路の有無を有りに設計されているため、図６に示すように、「kick」レジスタから機能モジュールへの読み出し経路上にはＦＦ回路が設けられている。
【００５４】
また、図６に示すように、「err_intmask」レジスタは、機能モジュールへの読み出し経路及び機能モジュールからの書き込み経路をいずれも有しない。これは、図４のレジスタ一覧に示すように、「err_intfct」レジスタの割り込みマスクレジスタ名が「err_intmsk」に設計されているためである。すなわち、「err_intmask」レジスタは、「err_intfct」レジスタの割り込みレジスタとして利用するために用意された割り込みマスクレジスタであるためである。図６に示すように、「err_intmask」レジスタの出力側には、「err_intfct」レジスタへ割り込みを出力するための経路が設けられる。
【００５５】
レジスタ設計部１４は、ジェネレート設計と、レジスタ一覧と、に基づいて、図５のようなレジスタ構成を生成することができる。
【００５６】
レジスタ仕様記憶部１５は、レジスタ設計部１４が生成したレジスタ仕様を記憶する。
【００５７】
レジスタ構成記憶部１６は、レジスタ設計部１４が生成したレジスタ構成を記憶する。
【００５８】
次に、本実施形態に係るレジスタ設計支援装置１の動作について説明する。図７は、レジスタ設計支援装置１の動作の一例を示すフローチャートである。動作の開始時点で、図３のジェネレート設計及び図４のレジスタ一覧が、ジェネレート設計記憶部１１及びレジスタ一覧記憶部１２にそれぞれ保存済みであるものとする。レジスタ設計支援装置１は、ユーザにより設計開始を指示されると、以下の動作を実行する。
【００５９】
まず、レジスタマッピング部１３及びレジスタ設計部１４が、ジェネレート設計記憶部１１及びレジスタ一覧記憶部１２から、ジェネレート設計及びレジスタ一覧をそれぞれ読み出す（ステップＳ１０１）。
【００６０】
次に、レジスタマッピング部１３が、ジェネレート設計及びレジスタ一覧に基づいて、レジスタマッピングを行う（ステップＳ１０２）。レジスタマッピング方法について、詳しくは後述する。レジスタマッピング部１３は、各機能レジスタに割り当てたビットをレジスタ設計部１４に通知する。
【００６１】
レジスタ設計部１４は、各機能レジスタに割り当てられたビットを通知されると、当該ビットと、レジスタ一覧と、に基づいて、レジスタ仕様を生成する（ステップＳ１０３）。レジスタ設計部１４は、生成したレジスタ仕様をレジスタ仕様記憶部１５に保存する。
【００６２】
また、レジスタ設計部１４は、ジェネレート設計と、レジスタ一覧と、に基づいて、レジスタ構成を生成する（ステップＳ１０４）。レジスタ設計部１４は、生成したレジスタ構成をレジスタ構成記憶部１６に保存する。
【００６３】
以上の動作により、レジスタ設計支援装置１は、ジェネレート設計及びレジスタ一覧に基づいて、レジスタを設計（レジスタ仕様及びレジスタ構成を生成）することができる。
【００６４】
次に、レジスタマッピング方法について説明する。図８は、レジスタマッピング方法の一例を示すフローチャートである。図８のフローチャートは、図７のステップＳ１０２の内部処理に相当する。
【００６５】
まず、レジスタマッピング部１３は、レジスタ一覧に含まれる機能レジスタの中から、１の機能レジスタを選択する（ステップＳ２０１）。レジスタマッピング部１３は、レジスタにおける前方（アドレスが小さい方）に配置する機能レジスタから順に選択すればよい。図４の例では、上の行に対応する機能レジスタほど前方に配置されるものとする。ここでは、「en」レジスタが選択される。
【００６６】
次に、レジスタマッピング部１３は、選択した機能レジスタが配列レジスタであるか確認する（ステップＳ２０２）。レジスタマッピング部１３は、選択した機能レジスタの機能レジスタ名を確認することにより、当該機能レジスタが配列レジスタであるか確認できる。機能レジスタが配列レジスタである場合（ステップＳ２０２：ＹＥＳ）、処理はステップＳ２０３に進み、機能レジスタが配列レジスタでない場合（ステップＳ２０２：ＮＯ）、処理はステップＳ２０５に進む。「en」レジスタは配列レジスタではないため（ステップＳ２０２：ＮＯ）、処理はステップＳ２０５に進む。
【００６７】
ステップＳ２０５において、レジスタマッピング部１３は、選択した機能レジスタのマッピングモード及びエンディアンを確認する（ステップＳ２０４）。「en」レジスタのマッピングモード及びエンディアンは、「WBB」及びスモールエンディアンである。
【００６８】
また、レジスタマッピング部１３は、選択した機能レジスタの前方に配置された機能レジスタのビットを確認する（ステップＳ２０６）。「en」レジスタは先頭の機能レジスタであるため、その前方には機能レジスタが配置されていない。
【００６９】
レジスタマッピング部１３は、前方の機能レジスタのビットを確認すると、選択した機能レジスタのマッピングモード及びエンディアンと、選択した機能レジスタの前方に配置された機能レジスタのビットと、に基づいて、選択した機能レジスタの先頭ビットを決定する（ステップＳ２０７）。具体的には、レジスタマッピング部１３は、前方のレジスタのビットから、マッピングモード及びエンディアンに応じてずらしたビットを、先頭ビットとして決定する。「en」レジスタの先頭ビットは、先頭のワードである「setup0」ワードのビット０に決定される。
【００７０】
また、レジスタマッピング部１３は、選択した機能レジスタのビット数を確認する（ステップＳ２０８）。「en」レジスタのビット数は１ビットである。
【００７１】
レジスタマッピング部１３は、選択した機能レジスタのビット数を確認すると、先頭ビットを含むビット数分のビットを、当該機能レジスタのビットとして割り当てる（ステップＳ２０９）。「en」レジスタには「setup0」ワードのビット０が割り当てられる。レジスタマッピング部１３は、機能レジスタのビット数が１ワードより大きい場合には、当該機能レジスタを複数のワードに分割してビットを割り当てればよい。
【００７２】
その後、レジスタマッピング部１３は、レジスタ一覧に含まれる機能レジスタの全てが選択されたか確認する（ステップＳ２１０）。未選択の機能レジスタがある場合（ステップＳ２１０：ＮＯ）、レジスタマッピング部１３は、次の機能レジスタを選択する（ステップＳ２０１）。「en」レジスタの次には、「mode」レジスタが選択される。
【００７３】
以降、「mode」レジスタ、「str_addr」レジスタ、「kick」レジスタ、「state」レジスタ、「err_intmsk」レジスタ、及び「err_intfct」レジスタに、ステップＳ２０１〜Ｓ２０９の処理がそれぞれ実行される。その後、レジスタマッピング部１３が配列レジスタである「table[0-1][0-2]」レジスタを選択すると（ステップＳ２０１，Ｓ２０２：ＹＥＳ）、処理はステップＳ２０３に進む。
【００７４】
ステップＳ２０３において、レジスタマッピング部１３は、選択した配列レジスタを展開する。配列レジスタを展開するとは、レジスタ一覧に含まれる配列レジスタの仕様を、配列レジスタに含まれる各要素（各機能レジスタ）の仕様として展開することをいう。展開された各機能レジスタの機能レジスタ名は、配列レジスタの機能レジスタ名に、配列における当該機能レジスタの位置に応じた添え字を付したものとなる。配列レジスタのマッピングモードは、１文字目が先頭の機能レジスタのマッピングモードの１文字目に対応し、３文字目が後尾の機能レジスタの３文字目に対応し、２文字目が各機能レジスタのその他のマッピングモードに対応する。展開された各機能レジスタの他の仕様は、配列レジスタの仕様と一致する。
【００７５】
図９は、展開された図４の「table[0-1][0-2]」レジスタの仕様を示す図である。図９に示すように、「table[0-1][0-2]」レジスタの仕様は、「table00」レジスタから「table12」レジスタまでの６つの機能レジスタ（以下「table」レジスタと総称する。）の仕様として展開される。「table」レジスタの仕様は、マッピングモードを除き、「table[0-1][0-2]」レジスタの仕様と同様である。また、「table[0-1][0-2]」レジスタにおける先頭の機能レジスタである「table00」レジスタのマッピングモードは「8BB」に設計され、「table[0-1][0-2]」レジスタにおける後尾の機能レジスタである「table12」レジスタのマッピングモードは「BB8」に設計され、他の「table」レジスタのマッピングモードは「BBB」に設計される。
【００７６】
レジスタマッピング部１３は、配列レジスタを展開すると、展開された機能レジスタの中から、１の機能レジスタを選択する（ステップＳ２０４）。レジスタマッピング部１３は、レジスタにおける前方に配置する機能レジスタから順に選択すればよい。図９の例では、「table00」レジスタが選択される。その後、レジスタマッピング部１３は、選択した「table00」レジスタについて、ステップＳ２０５〜Ｓ２０９の処理を実行する。
【００７７】
以降、展開された各「table」レジスタに、ステップＳ２０１〜Ｓ２０９の処理がそれぞれ実行される。そして、全ての機能レジスタの選択が終了すると（ステップＳ２１０：ＹＥＳ）、レジスタマッピングが終了する。以上の処理により、図４のレジスタ一覧に基づいて、図５に示すように各機能レジスタにビットが割り当てられる。
【００７８】
以上説明した通り、本実施形態によれば、図４のレジスタ一覧のような簡単なフォーマットにより、各機能レジスタの各種の仕様を設計することができる。また、レジスタ一覧に基づいて、各機能レジスタを自動的にレジスタマッピングすることができる。さらに、レジスタ一覧に基づいて、配列レジスタの仕様をまとめて設計することができる。したがって、設計者は、本実施形態に係るレジスタ設計支援装置１を利用することにより、レジスタを容易に設計することができる。
【００７９】
なお、上述の通り、レジスタは、複数のレジスタモジュールを有してもよい。図１０は、レジスタ一覧の概要を示す図である。図１０の例では、レジスタは、「func_a」モジュール、「func_b」モジュール、及び「func_c」モジュールを有する。図１０の例では省略されているが、各レジスタモジュールには、図４の例のように各機能レジスタの仕様が設計される。
【００８０】
このようなレジスタ一覧をレジスタ設計支援装置１に入力することにより、レジスタモジュールごとのレジスタ仕様及びレジスタ構成が生成される。各レジスタモジュールの相対的な配置は、レジスタ設計支援装置１より上位のアドレスデコーダにより設計することができる。このように、レジスタモジュールごとにレジスタ仕様及びレジスタ構成を生成することにより、全体の構成を維持したまま、レジスタモジュールごとの仕様変更が可能となるため、ＡＳＩＣやＦＰＧＡにおけるパーシャルリコンフィグ（一部のレジスタモジュールの変更）を容易に行うことができる。
【００８１】
なお、上記実施形態に挙げた構成等に、その他の要素との組み合わせなど、ここで示した構成に本発明が限定されるものではない。これらの点に関しては、本発明の趣旨を逸脱しない範囲で変更可能であり、その応用形態に応じて適切に定めることができる。
【符号の説明】
【００８２】
１：レジスタ設計支援装置
１１：ジェネレート設計記憶部
１２：レジスタ一覧記憶部
１３：レジスタマッピング部
１４：レジスタ設計部
１５：レジスタ仕様記憶部
１６：レジスタ構成記憶部
【先行技術文献】
【特許文献】
【００８３】
【特許文献１】特開２００５−３２７１９２号公報
【図１】
2019200609.tif 000003
【図２】
2019200609.tif 000004
【図３】
2019200609.tif 000005
【図４】
2019200609.tif 000006
【図５】
2019200609.tif 000007
【図６】
2019200609.tif 000008
【図７】
2019200609.tif 000009
【図８】
2019200609.tif 000010
【図９】
2019200609.tif 000011
【図１０】
2019200609.tif 000012