IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社リコーの特許一覧

特許7077762レジスタ設計支援装置、プログラム、及び記録媒体
<>
  • 特許-レジスタ設計支援装置、プログラム、及び記録媒体 図1
  • 特許-レジスタ設計支援装置、プログラム、及び記録媒体 図2
  • 特許-レジスタ設計支援装置、プログラム、及び記録媒体 図3
  • 特許-レジスタ設計支援装置、プログラム、及び記録媒体 図4
  • 特許-レジスタ設計支援装置、プログラム、及び記録媒体 図5
  • 特許-レジスタ設計支援装置、プログラム、及び記録媒体 図6
  • 特許-レジスタ設計支援装置、プログラム、及び記録媒体 図7
  • 特許-レジスタ設計支援装置、プログラム、及び記録媒体 図8
  • 特許-レジスタ設計支援装置、プログラム、及び記録媒体 図9
  • 特許-レジスタ設計支援装置、プログラム、及び記録媒体 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-23
(45)【発行日】2022-05-31
(54)【発明の名称】レジスタ設計支援装置、プログラム、及び記録媒体
(51)【国際特許分類】
   G06F 30/32 20200101AFI20220524BHJP
【FI】
G06F30/32
【請求項の数】 9
(21)【出願番号】P 2018094835
(22)【出願日】2018-05-16
(65)【公開番号】P2019200609
(43)【公開日】2019-11-21
【審査請求日】2021-02-08
(73)【特許権者】
【識別番号】000006747
【氏名又は名称】株式会社リコー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】篠岡 忍
【審査官】堀井 啓明
(56)【参考文献】
【文献】特開2015-197750(JP,A)
【文献】米国特許第05995736(US,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 30/00-30/398
(57)【特許請求の範囲】
【請求項1】
複数の機能レジスタを含むレジスタの設計を支援するレジスタ設計支援装置であって、
設計者により設計された前記機能レジスタごとの仕様を示すレジスタ一覧に基づいて、複数の前記機能レジスタの配置を決定するレジスタマッピング部と、
前記レジスタの共通設計を示すジェネレート設計と、複数の前記機能レジスタの配置と、前記レジスタ一覧と、に基づいて、前記レジスタの仕様を示すレジスタ仕様と、前記レジスタの回路構成を示すレジスタ構成と、を生成するレジスタ設計部と、
を備え
前記レジスタ一覧は、複数の前記機能レジスタを配列表現した配列レジスタの仕様を示す情報を含み、
前記レジスタマッピング部は、前記配列レジスタを前記機能レジスタごとに展開して前記レジスタ仕様を生成する
レジスタ設計支援装置。
【請求項2】
前記レジスタ一覧は、前記各機能レジスタの、モジュール名、機能レジスタ名、ビット数、CPUに対するR/W属性、初期値、レジスタ外の機能モジュールに対するR/W属性、フリップフロップ回路の有無、CPUのクリア仕様、CPUリードオンリービット数、割り込みマスクレジスタ名、マッピングモード、エンディアン、及びワード名の少なくとも1つを示す情報を含む
請求項1に記載のレジスタ設計支援装置。
【請求項3】
前記マッピングモードは、ビット単位、バイト単位、又はワード単位で設計される
請求項2に記載のレジスタ設計支援装置。
【請求項4】
複数の機能レジスタを含むレジスタの設計を支援するレジスタ設計支援装置であって、
設計者により設計された前記機能レジスタごとの仕様を示すレジスタ一覧に基づいて、複数の前記機能レジスタの配置を決定するレジスタマッピング部と、
前記レジスタの共通設計を示すジェネレート設計と、複数の前記機能レジスタの配置と、前記レジスタ一覧と、に基づいて、前記レジスタの仕様を示すレジスタ仕様と、前記レジスタの回路構成を示すレジスタ構成と、を生成するレジスタ設計部と、
を備え
前記レジスタ一覧は、前記各機能レジスタの、CPUに対するR/W属性およびレジスタ外の機能モジュールに対するR/W属性を示す情報を含む
レジスタ設計支援装置。
【請求項5】
さらに、前記レジスタ一覧は、前記各機能レジスタの、モジュール名、機能レジスタ名、ビット数、初期値、フリップフロップ回路の有無、CPUのクリア仕様、CPUリードオンリービット数、割り込みマスクレジスタ名、マッピングモード、エンディアン、及びワード名の少なくとも1つを示す情報を含む
請求項4に記載のレジスタ設計支援装置。
【請求項6】
複数の機能レジスタを含むレジスタの設計を支援するためにコンピュータに実行させるプログラムであって、
設計者により設計された前記機能レジスタごとの仕様を示すレジスタ一覧に基づいて、複数の前記機能レジスタの配置を決定するレジスタマッピングステップと、
前記レジスタの共通設計を示すジェネレート設計と、複数の前記機能レジスタの配置と、前記レジスタ一覧と、に基づいて、前記レジスタの仕様を示すレジスタ仕様と、前記レジスタの回路構成を示すレジスタ構成と、を生成するレジスタ設計ステップと、を備え、
前記レジスタ一覧は、複数の前記機能レジスタを配列表現した配列レジスタの仕様を示す情報を含み、
前記レジスタマッピングステップは、前記配列レジスタを前記機能レジスタごとに展開して前記レジスタ仕様を生成する
プログラム。
【請求項7】
複数の機能レジスタを含むレジスタの設計を支援するためにコンピュータに実行させるプログラムであって、
設計者により設計された前記機能レジスタごとの仕様を示すレジスタ一覧に基づいて、複数の前記機能レジスタの配置を決定するレジスタマッピングステップと、
前記レジスタの共通設計を示すジェネレート設計と、複数の前記機能レジスタの配置と、前記レジスタ一覧と、に基づいて、前記レジスタの仕様を示すレジスタ仕様と、前記レジスタの回路構成を示すレジスタ構成と、を生成するレジスタ設計ステップと、を備え、
前記レジスタ一覧は、前記各機能レジスタの、CPUに対するR/W属性およびレジスタ外の機能モジュールに対するR/W属性を示す情報を含む
プログラム。
【請求項8】
複数の機能レジスタを含むレジスタの設計を支援するためにコンピュータに実行させるプログラムを記憶した記録媒体であって、
設計者により設計された前記機能レジスタごとの仕様を示すレジスタ一覧に基づいて、複数の前記機能レジスタの配置を決定するレジスタマッピングステップと、
前記レジスタの共通設計を示すジェネレート設計と、複数の前記機能レジスタの配置と、前記レジスタ一覧と、に基づいて、前記レジスタの仕様を示すレジスタ仕様と、前記レジスタの回路構成を示すレジスタ構成と、を生成するレジスタ設計ステップと、を備え、
前記レジスタ一覧は、複数の前記機能レジスタを配列表現した配列レジスタの仕様を示す情報を含み、
前記レジスタマッピングステップは、前記配列レジスタを前記機能レジスタごとに展開して前記レジスタ仕様を生成する
プログラムを記憶した記録媒体。
【請求項9】
複数の機能レジスタを含むレジスタの設計を支援するためにコンピュータに実行させるプログラムを記憶した記録媒体であって、
設計者により設計された前記機能レジスタごとの仕様を示すレジスタ一覧に基づいて、複数の前記機能レジスタの配置を決定するレジスタマッピングステップと、
前記レジスタの共通設計を示すジェネレート設計と、複数の前記機能レジスタの配置と、前記レジスタ一覧と、に基づいて、前記レジスタの仕様を示すレジスタ仕様と、前記レジスタの回路構成を示すレジスタ構成と、を生成するレジスタ設計ステップと、を備え、
前記レジスタ一覧は、前記各機能レジスタの、CPUに対するR/W属性およびレジスタ外の機能モジュールに対するR/W属性を示す情報を含む
プログラムを記憶した記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、レジスタ設計支援装置、プログラム、及び記録媒体に関する。
【背景技術】
【0002】
ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのデジタル回路は、CPU(Central Processing Unit)から受け付けた設定や命令に従って動作する場合が多い。このような場合、ASICやFPGAにはレジスタと呼ばれる記憶回路が搭載される。ASICやFPGAに搭載されるレジスタは、「ON/OFFのモード」や「カウンタの初期値」といった機能ごとに仕様を設計された後、機能に応じたレジスタごとにビット(アドレス)を割り当てられる。このように、機能ごとのレジスタにビットを割り当てることをレジスタマッピングと称する。
【0003】
レジスタマッピングが完了すると、機能ごとのレジスタの仕様及びビットに基づいて、レジスタが設計される。レジスタマッピングやレジスタの設計は、レジスタの機能やビットに応じて異なる複数の要求を同時に満たすように行われるため、煩雑である。そこで、機能ごとに設計された仕様に基づいて、自動的にレジスタマッピングやレジスタの設計を行う方法が提案されている。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記従来の方法では、レジスタの仕様の設計方法やビットの割り当て方法が複雑であったため、レジスタの設計に誤りが生じやすいという問題があった。
【0005】
本発明は、上記の課題に鑑みてなされたものであり、レジスタを容易に設計可能なレジスタ設計支援装置、プログラム、及び記録媒体を提供することを目的とする。
【課題を解決するための手段】
【0006】
一実施形態に係るレジスタ設計支援装置は、複数の機能レジスタを含むレジスタの設計を支援するレジスタ設計支援装置であって、設計者により設計された前記機能レジスタごとの仕様を示すレジスタ一覧に基づいて、複数の前記機能レジスタの配置を決定するレジスタマッピング部と、前記レジスタの共通設計を示すジェネレート設計と、複数の前記機能レジスタの配置と、前記レジスタ一覧と、に基づいて、前記レジスタの仕様を示すレジスタ仕様と、前記レジスタの回路構成を示すレジスタ構成と、を生成するレジスタ設計部と、を備え、前記レジスタ一覧は、複数の前記機能レジスタを配列表現した配列レジスタの仕様を示す情報を含み、前記レジスタマッピング部は、前記配列レジスタを前記機能レジスタごとに展開して前記レジスタ仕様を生成する。
【発明の効果】
【0007】
本発明の各実施形態によれば、レジスタを容易に設計可能なレジスタ設計支援装置、プログラム、及び記録媒体を提供することができる。
【図面の簡単な説明】
【0008】
図1】レジスタ設計支援装置のハードウェア構成の一例を示す図。
図2】レジスタ設計支援装置の機能構成の一例を示す図。
図3】ジェネレート設計の一例を示す図。
図4】レジスタ一覧の一例を示す図。
図5】レジスタ仕様の一例を示す図。
図6】レジスタ構成の一例を示す図。
図7】レジスタ設計支援装置の動作の一例を示すフローチャート。
図8】レジスタマッピング方法の一例を示すフローチャート。
図9】展開された図4の「table[0-1][0-2]」レジスタの仕様を示す図。
図10】レジスタ一覧の概要を示す図。
【発明を実施するための形態】
【0009】
以下、本発明の各実施形態について、添付の図面を参照しながら説明する。なお、各実施形態に係る明細書及び図面の記載に関して、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重畳した説明を省略する。
【0010】
一実施形態に係るレジスタ設計支援装置1について、図1図10を参照して説明する。本実施形態に係るレジスタ設計支援装置1は、レジスタの設計者が設計した仕様に基づいて、レジスタを設計するコンピュータである。レジスタ設計支援装置1は、例えば、サーバ、PC(Personal Computer)、又はタブレット端末であるが、これに限られない。まず、レジスタ設計支援装置1のハードウェア構成について説明する。
【0011】
図1は、本実施形態に係るレジスタ設計支援装置1のハードウェア構成の一例を示す図である。図1のレジスタ設計支援装置1は、CPU101と、ROM(Read Only Memory)102と、RAM(Random Access Memory)103と、HDD(Hard Disk Drive)104と、入力装置105と、表示装置106と、通信インタフェース107と、バス108と、を備える。
【0012】
CPU101は、プログラムを実行することにより、レジスタ設計支援装置1の各構成を制御し、レジスタ設計支援装置1の機能を実現する。CPU101が実行するプログラムは、CD(Compact Disk)、DVD、フラッシュメモリなどの、コンピュータ読み取り可能な任意の記録媒体に記録され得る。
【0013】
ROM102は、CPU101が実行するプログラムや各種のデータを記憶する。
【0014】
RAM103は、CPU101に作業領域を提供する。
【0015】
HDD104は、CPU101が実行するプログラムや各種のデータを記憶する記録媒体である。レジスタ設計支援装置1は、HDD104と共に、又はHDD104の代わりにSSD(Solid State Drive)を備えてもよい。
【0016】
入力装置105は、ユーザの操作に応じた情報をレジスタ設計支援装置1に入力する。入力装置105は、例えば、タッチパネル、キーボード、マウス、又はハードウェアボタンであるが、これに限られない。
【0017】
表示装置106は、ユーザの操作に応じた画面を表示する。表示装置106は、液晶ディスプレイ、又は有機EL(Electro Luminescence)ディスプレイであるが、これに限られない。レジスタ設計支援装置1は、タッチパネルと表示装置106が一体化された操作パネルを備えてもよい。
【0018】
通信インタフェース107は、レジスタ設計支援装置1をインターネットやLAN(Local Area Network)などのネットワークに接続し、ネットワーク上の外部装置との通信を制御する。レジスタ設計支援装置1は、通信インタフェース107を介して、外部装置と通信する。
【0019】
バス108は、CPU101、ROM102、RAM103、HDD104、入力装置105、表示装置106、及び通信インタフェース107を相互に接続する。
【0020】
なお、図1の例では、レジスタ設計支援装置1が1つのコンピュータにより構成される場合を想定しているが、レジスタ設計支援装置1は、ネットワークを介して接続された複数のコンピュータにより実現されてもよい。
【0021】
次に、レジスタ設計支援装置1の機能構成について説明する。図2は、レジスタ設計支援装置1の機能構成の一例を示す図である。図2のレジスタ設計支援装置1は、ジェネレート設計記憶部11と、レジスタ一覧記憶部12と、レジスタマッピング部13と、レジスタ設計部14と、レジスタ仕様記憶部15と、レジスタ構成記憶部16と、を備える。レジスタマッピング部13及びレジスタ設計部14は、CPU101がプログラムを実行することにより実現される。また、ジェネレート設計記憶部11、レジスタ一覧記憶部12、レジスタ仕様記憶部15、及びレジスタ構成記憶部16は、HDD104やSSDなどの記録媒体上に設けられる。
【0022】
ジェネレート設計記憶部11は、ジェネレート設計を記憶する。ジェネレート設計は、レジスタの共通仕様の設計を示すデータである。ジェネレート設計は、設計者により用意され、例えば、Unixコマンドの引数としてジェネレート設計記憶部11に保存される。
【0023】
図3は、ジェネレート設計の一例を示す図である。図3の例では、ジェネレート設計がUnixコマンドのコマンド引数として設計された場合を想定している。図3における「regmap」はジェネレート設計のファイル名であり、「regmap_sor.csv」はレジスタ一覧のファイル名である。レジスタ一覧については後述する。
【0024】
図3の例では、CPUクロック名(cpuclk)は「clk_cpu」、CPUリセット名(cpurst)は「rst_cpu_n」、機能クロック名(clk)は「clk_func」、機能リセット名(rst)は「rst_func_n」に設計されている。CPUクロック名はCPUが同期するCPUクロックの名称であり、機能クロック名はレジスタの外部の機能モジュールが同期する機能クロックの名称である。レジスタは、CPUクロックに同期して動作するため、CPUクロック名と機能クロック名が異なる場合、すなわち、機能クロックがCPUクロックと異なるクロックである場合、外部の機能モジュールと非同期で動作することになる。
【0025】
なお、ジェネレート設計は、図3の例に限られず、設計者により任意に設計可能である。ジェネレート設計には、上記の共通仕様の一部が含まれてもよいし、上記以外の共通仕様が含まれてもよい。
【0026】
レジスタ一覧記憶部12は、レジスタ一覧を記憶する。レジスタ一覧は、設計者により機能ごとに設計されたレジスタの仕様の一覧を示すデータである。以下、レジスタ全体を単にレジスタと称し、レジスタが有する各機能に対応するレジスタ部分を、機能レジスタと称する。レジスタ一覧は、各機能レジスタの仕様の一覧に相当する。レジスタ一覧は、設計者により用意され、例えば、CSVファイルとしてレジスタ一覧記憶部12に保存される。
【0027】
図4は、レジスタ一覧の一例を示す図である。図4の例では、機能レジスタの仕様として、レジスタモジュール名、機能レジスタ名、ビット数、CPUR/W属性、初期値、機能R/W属性、FF(フリップフロップ)回路の有無、CPUのクリア仕様、CPUリードオンリービット数、割り込みマスクレジスタ名、マッピングモード、エンディアン、及びワード名を示している。
【0028】
レジスタモジュール名(CSGroup)は、機能レジスタが含まれるレジスタモジュールの名称である。図4の例では、レジスタモジュール名はいずれも「func_a」に設計されている。これは、図4の機能レジスタが、レジスタモジュール名が「func_a」であるレジスタモジュールに含まれることを示している。このように、レジスタモジュール名を設計することにより、レジスタが複数のレジスタモジュールを有する場合、レジスタモジュールごとに機能レジスタの仕様を設計することができる。なお、レジスタが有するレジスタモジュールの数は任意に設計可能である。以下、レジスタモジュール名が「X」であるレジスタモジュールを「X」モジュールと称する。
【0029】
機能レジスタ名(RegName)は、機能レジスタの名称である。図4の例では、機能レジスタ名として、「en」、「mode」、及び「str_addr」などが設計されている。レジスタ又はモジュールが有する機能レジスタの数は任意に設計可能である。また、図4の「table[0-1][0-2]」のように、機能レジスタ名を配列表現することも可能である。以下、機能レジスタ名が「X」である機能レジスタを、「X」レジスタと称する。また、機能レジスタ名が配列表現された機能レジスタを、配列レジスタと称する。
【0030】
ビット数(Bit)は、機能レジスタのビット数である。図4の例では、空欄は1ビットに相当する。例えば、「en」レジスタのビット数は空欄であり、「mode」レジスタのビット数は[3:0]である。これは、「en」レジスタが1ビットであり、「mode」レジスタが4ビットであることを示している。
【0031】
CPUR/W属性(CPU_RW)は、CPUに対するRead/Write属性である。CPUR/W属性は、「RW」、「R」、及び「SRAM(Static RAM)」などに設計される。「SRAM」は、レジスタの外部に設置するSRAMに保存領域を確保することを示す。
【0032】
初期値(Init)は、機能レジスタのリセット後の値である。図4の例では、「en」レジスタの初期値は「0」、「str_addr」レジスタの初期値は「32'h1000」に設計されている。これは、「en」レジスタは、リセット後に全てのビットが0になることを示し、「str_addr」レジスタはリセット後に値が「32'h1000」になることを示している。
【0033】
機能R/W属性は、レジスタ外の機能モジュールに対するRead/Write属性である。機能R/W属性(MD_RW)は、「RW」、「R」、及び「-」などに設計される。「-」は、機能レジスタが割り込みマスクレジスタであることを示す。
【0034】
FF回路の有無(2FF)は、機能レジスタがFF回路を有するか否かを示す。FF回路の有無は、有り又は無しに設計される。図4の例では、空欄がなしに相当し、「O」が有りに相当する。
【0035】
CPUのクリア仕様(CPU_Clear)は、「0」又は「1」に設計される。「0」は、機能レジスタに対してCPUから0しか書き込めないことを示し、「1」は機能レジスタに対してCPUから1しか書き込めないことを示す。図4の例では、空欄が「1」に相当する。
【0036】
CPUリードオンリービット数(CPU_RO_Bit)は、機能レジスタにおける、CPUR/W属性が「R」であるレジスタ部分のビット数である。CPUリードオンリービット数は、CPUR/W属性が「RW」に設計されたレジスタに対して設計される。このように、CPUR/W属性とは別に、CPUリードオンリービット数を設計することにより、機能レジスタの一部のCPUR/W属性を、「R」に設計することができる。図4の例では、「str_addr」レジスタのCPUリードオンリービット数が[2:0]に設計されている。これは、32ビットの「str_addr」レジスタのうち、3ビットだけが、CPUR/W属性が「R」であることを示している。
【0037】
割り込みマスクレジスタ名(INT)は、割り込みレジスタとして利用する割り込みマスクレジスタの名称である。図4の例では、「err_intfct」レジスタの割り込みマスクレジスタ名が「err_intmsk」に設計されている。これは、「err_intfct」レジスタの割り込みレジスタとして、「err_intmsk」レジスタが利用されることを示している。
【0038】
マッピングモード(MappingMode)は、機能レジスタのレジスタマッピング方法である。より詳細には、マッピングモードは、隣接する機能レジスタに対する、当該機能レジスタの配置である。機能レジスタの配置は、ビット単位、バイト単位、又はワード単位で設計できる。図4の例では、マッピングモードとして、「WBB」、「WBW」、「BBB」、及び「8B8」が設計されている。マッピングモードの1文字目は前方に配置された機能レジスタに対する配置を示し、3文字目は後方に配置された機能レジスタに対する配置を示す。2文字目は配列レジスタのマッピングモードを示す文字であり、配列レジスタ以外については特に意味がない。「W」は配置をワード単位でずらすことを示し、「B」は配置を1バイト(8ビット)単位でずらすことを示し、「8」は8ビット桁上がりさせる、すなわち、配置を1ビット単位でずらすことを示す。
【0039】
エンディアン(BigAssignFlag)は、レジスタマッピングを行う際の機能レジスタの配置を示す。エンディアンは、最上位ビットから配置するビッグエンディアン、又は最下位ビットから配置するスモールエンディアンに設計される。図4の例では、空欄がスモールエンディアンに相当し、「O」がビッグエンディアンに相当する。
【0040】
ワード名(WDName)は、機能レジスタが配置されたワードの名称である。図4の例では、ワード名として、「setup」、「start」、及び「state」などが設計されている。ワード名が空欄である場合、ワード名として機能レジスタ名が利用される。以下、ワード名が「X」であるワードを、「X」ワードと称する。
【0041】
なお、レジスタ一覧は、図4の例に限られず、設計者により任意に設計可能である。レジスタ一覧には、上記の仕様の一部が含まれてもよいし、上記以外の仕様が含まれてもよい。
【0042】
レジスタマッピング部13は、ジェネレート設計及びレジスタ一覧に基づいて、レジスタマッピングを行う。すなわち、レジスタマッピング部13は、各機能レジスタに対してレジスタ上のビットを割り当て、各機能レジスタの配置を決定する。レジスタマッピング方法について、詳しくは後述する。
【0043】
レジスタ設計部14は、ジェネレート設計と、レジスタマッピング部13により割り当てられた各機能レジスタのビット(各機能レジスタの配置)と、に基づいて、レジスタを設計する。具体的には、レジスタ設計部14は、レジスタ仕様及びレジスタ構成を生成する。
【0044】
レジスタ仕様は、レジスタの仕様と、レジスタのビットと、を対応付けたデータである。言い換えると、レジスタ仕様は、レジスタの仕様をビットごとに示すデータに相当する。
【0045】
図5は、レジスタ仕様の一例を示す図である。図5のレジスタ仕様は、図4のレジスタ一覧に対応する。図5の例では、レジスタの各ワードに、ワード名が割り当てられ、各ビットに機能レジスタ名、初期値、及びCPUR/W属性が割り当てられている。言い換えると、各機能レジスタの機能レジスタ名、初期値、及びCPUR/W属性が、レジスタの各ビットに割り当てられている。
【0046】
例えば、図5の1行目のワードにはワード名として「setup0」が割り当てられ、「setup0」ワードのビット8~11には、機能レジスタ名、初期値、及びCPUR/W属性として、「mode」、「0」、及び「RW」がそれぞれ割り当てられている。また、2行目のワードにはワード名として「setup1」が割り当てられ、「setup1」ワードのビット0~31には、機能レジスタ名及び初期値として、「str_addr」及び「32h'h000_1000」がそれぞれ割り当てられている。さらに、「setup1」ワードのビット0~2及びビット3~31には、CPUR/W属性として、「R」、「RW」がそれぞれ割り当てられている。これは、図4のレジスタ一覧において、「str_addr」レジスタのCPUR/W属性が「RW」に設計され、CPUリードオンリービット数が3ビットに設計されているためである。
【0047】
レジスタ設計部14は、レジスタ一覧と、レジスタマッピング部13により割り当てられた各機能レジスタのビットと、に基づいて、図5のようなレジスタ仕様を生成することができる。
【0048】
レジスタ構成は、レジスタの回路構成を示すデータである。レジスタ構成は、VerilogHDLなどのハードウェア記述言語のファイルとして生成される。
【0049】
図6は、レジスタ構成の一例を示す図である。図6のレジスタ構成は、図3のジェネレート設計及び図4のレジスタ一覧に対応する。図6におけるCPUI/Fは、レジスタをCPUに接続するためのI/Fである。また、FunctionCoreI/Fは、レジスタを、外部の機能モジュールに接続するためのI/Fである。
【0050】
図6に示すように、「state」レジスタは、CPUへの読み出し経路は有するものの、CPUからの書き込み経路を有しない。これは、図4のレジスタ一覧に示すように、「state」レジスタのCPUR/W属性が「R」に設計されているためである。
【0051】
これに対して、「en」レジスタ、「mode」レジスタ、「str_addr」レジスタ、「kick」レジスタ、「err_intmask」レジスタ、及び「err_intfct」レジスタは、CPUへの読み出し経路及びCPUからの書き込み経路をいずれも有する。これは、図4のレジスタ一覧に示すように、これらの機能レジスタのCPUR/W属性が「RW」に設計されているためである。
【0052】
また、図6に示すように、「en」レジスタ、「mode」レジスタ、及び「str_addr」レジスタは、機能モジュール(又は)への読み出し経路を有するが、機能モジュールからの書き込み経路を有しない。これは、図4のレジスタ一覧に示すように、これらの機能レジスタの機能R/W属性が「R」に設計されているためである。
【0053】
これに対して、「kick」レジスタ、「state」レジスタ、及び「err_intfct」レジスタは、機能モジュールへの読み出し経路及び機能モジュールからの書き込み経路をいずれも有する。これは、図4のレジスタ一覧に示すように、これらの機能レジスタの機能R/W属性が「RW」に設計されているためである。なお、図3のジェネレート設計に示すように、レジスタは機能モジュールと非同期で動作する。このため、機能モジュールから機能レジスタへの書き込み経路上には、図6に示すように、レジスタと機能モジュールとの動作タイミングのずれを吸収する非同期吸収回路が設けられる。また、図4のレジスタ一覧に示すように、「kick」レジスタは、FF回路の有無を有りに設計されているため、図6に示すように、「kick」レジスタから機能モジュールへの読み出し経路上にはFF回路が設けられている。
【0054】
また、図6に示すように、「err_intmask」レジスタは、機能モジュールへの読み出し経路及び機能モジュールからの書き込み経路をいずれも有しない。これは、図4のレジスタ一覧に示すように、「err_intfct」レジスタの割り込みマスクレジスタ名が「err_intmsk」に設計されているためである。すなわち、「err_intmask」レジスタは、「err_intfct」レジスタの割り込みレジスタとして利用するために用意された割り込みマスクレジスタであるためである。図6に示すように、「err_intmask」レジスタの出力側には、「err_intfct」レジスタへ割り込みを出力するための経路が設けられる。
【0055】
レジスタ設計部14は、ジェネレート設計と、レジスタ一覧と、に基づいて、図5のようなレジスタ構成を生成することができる。
【0056】
レジスタ仕様記憶部15は、レジスタ設計部14が生成したレジスタ仕様を記憶する。
【0057】
レジスタ構成記憶部16は、レジスタ設計部14が生成したレジスタ構成を記憶する。
【0058】
次に、本実施形態に係るレジスタ設計支援装置1の動作について説明する。図7は、レジスタ設計支援装置1の動作の一例を示すフローチャートである。動作の開始時点で、図3のジェネレート設計及び図4のレジスタ一覧が、ジェネレート設計記憶部11及びレジスタ一覧記憶部12にそれぞれ保存済みであるものとする。レジスタ設計支援装置1は、ユーザにより設計開始を指示されると、以下の動作を実行する。
【0059】
まず、レジスタマッピング部13及びレジスタ設計部14が、ジェネレート設計記憶部11及びレジスタ一覧記憶部12から、ジェネレート設計及びレジスタ一覧をそれぞれ読み出す(ステップS101)。
【0060】
次に、レジスタマッピング部13が、ジェネレート設計及びレジスタ一覧に基づいて、レジスタマッピングを行う(ステップS102)。レジスタマッピング方法について、詳しくは後述する。レジスタマッピング部13は、各機能レジスタに割り当てたビットをレジスタ設計部14に通知する。
【0061】
レジスタ設計部14は、各機能レジスタに割り当てられたビットを通知されると、当該ビットと、レジスタ一覧と、に基づいて、レジスタ仕様を生成する(ステップS103)。レジスタ設計部14は、生成したレジスタ仕様をレジスタ仕様記憶部15に保存する。
【0062】
また、レジスタ設計部14は、ジェネレート設計と、レジスタ一覧と、に基づいて、レジスタ構成を生成する(ステップS104)。レジスタ設計部14は、生成したレジスタ構成をレジスタ構成記憶部16に保存する。
【0063】
以上の動作により、レジスタ設計支援装置1は、ジェネレート設計及びレジスタ一覧に基づいて、レジスタを設計(レジスタ仕様及びレジスタ構成を生成)することができる。
【0064】
次に、レジスタマッピング方法について説明する。図8は、レジスタマッピング方法の一例を示すフローチャートである。図8のフローチャートは、図7のステップS102の内部処理に相当する。
【0065】
まず、レジスタマッピング部13は、レジスタ一覧に含まれる機能レジスタの中から、1の機能レジスタを選択する(ステップS201)。レジスタマッピング部13は、レジスタにおける前方(アドレスが小さい方)に配置する機能レジスタから順に選択すればよい。図4の例では、上の行に対応する機能レジスタほど前方に配置されるものとする。ここでは、「en」レジスタが選択される。
【0066】
次に、レジスタマッピング部13は、選択した機能レジスタが配列レジスタであるか確認する(ステップS202)。レジスタマッピング部13は、選択した機能レジスタの機能レジスタ名を確認することにより、当該機能レジスタが配列レジスタであるか確認できる。機能レジスタが配列レジスタである場合(ステップS202:YES)、処理はステップS203に進み、機能レジスタが配列レジスタでない場合(ステップS202:NO)、処理はステップS205に進む。「en」レジスタは配列レジスタではないため(ステップS202:NO)、処理はステップS205に進む。
【0067】
ステップS205において、レジスタマッピング部13は、選択した機能レジスタのマッピングモード及びエンディアンを確認する(ステップS204)。「en」レジスタのマッピングモード及びエンディアンは、「WBB」及びスモールエンディアンである。
【0068】
また、レジスタマッピング部13は、選択した機能レジスタの前方に配置された機能レジスタのビットを確認する(ステップS206)。「en」レジスタは先頭の機能レジスタであるため、その前方には機能レジスタが配置されていない。
【0069】
レジスタマッピング部13は、前方の機能レジスタのビットを確認すると、選択した機能レジスタのマッピングモード及びエンディアンと、選択した機能レジスタの前方に配置された機能レジスタのビットと、に基づいて、選択した機能レジスタの先頭ビットを決定する(ステップS207)。具体的には、レジスタマッピング部13は、前方のレジスタのビットから、マッピングモード及びエンディアンに応じてずらしたビットを、先頭ビットとして決定する。「en」レジスタの先頭ビットは、先頭のワードである「setup0」ワードのビット0に決定される。
【0070】
また、レジスタマッピング部13は、選択した機能レジスタのビット数を確認する(ステップS208)。「en」レジスタのビット数は1ビットである。
【0071】
レジスタマッピング部13は、選択した機能レジスタのビット数を確認すると、先頭ビットを含むビット数分のビットを、当該機能レジスタのビットとして割り当てる(ステップS209)。「en」レジスタには「setup0」ワードのビット0が割り当てられる。レジスタマッピング部13は、機能レジスタのビット数が1ワードより大きい場合には、当該機能レジスタを複数のワードに分割してビットを割り当てればよい。
【0072】
その後、レジスタマッピング部13は、レジスタ一覧に含まれる機能レジスタの全てが選択されたか確認する(ステップS210)。未選択の機能レジスタがある場合(ステップS210:NO)、レジスタマッピング部13は、次の機能レジスタを選択する(ステップS201)。「en」レジスタの次には、「mode」レジスタが選択される。
【0073】
以降、「mode」レジスタ、「str_addr」レジスタ、「kick」レジスタ、「state」レジスタ、「err_intmsk」レジスタ、及び「err_intfct」レジスタに、ステップS201~S209の処理がそれぞれ実行される。その後、レジスタマッピング部13が配列レジスタである「table[0-1][0-2]」レジスタを選択すると(ステップS201,S202:YES)、処理はステップS203に進む。
【0074】
ステップS203において、レジスタマッピング部13は、選択した配列レジスタを展開する。配列レジスタを展開するとは、レジスタ一覧に含まれる配列レジスタの仕様を、配列レジスタに含まれる各要素(各機能レジスタ)の仕様として展開することをいう。展開された各機能レジスタの機能レジスタ名は、配列レジスタの機能レジスタ名に、配列における当該機能レジスタの位置に応じた添え字を付したものとなる。配列レジスタのマッピングモードは、1文字目が先頭の機能レジスタのマッピングモードの1文字目に対応し、3文字目が後尾の機能レジスタの3文字目に対応し、2文字目が各機能レジスタのその他のマッピングモードに対応する。展開された各機能レジスタの他の仕様は、配列レジスタの仕様と一致する。
【0075】
図9は、展開された図4の「table[0-1][0-2]」レジスタの仕様を示す図である。図9に示すように、「table[0-1][0-2]」レジスタの仕様は、「table00」レジスタから「table12」レジスタまでの6つの機能レジスタ(以下「table」レジスタと総称する。)の仕様として展開される。「table」レジスタの仕様は、マッピングモードを除き、「table[0-1][0-2]」レジスタの仕様と同様である。また、「table[0-1][0-2]」レジスタにおける先頭の機能レジスタである「table00」レジスタのマッピングモードは「8BB」に設計され、「table[0-1][0-2]」レジスタにおける後尾の機能レジスタである「table12」レジスタのマッピングモードは「BB8」に設計され、他の「table」レジスタのマッピングモードは「BBB」に設計される。
【0076】
レジスタマッピング部13は、配列レジスタを展開すると、展開された機能レジスタの中から、1の機能レジスタを選択する(ステップS204)。レジスタマッピング部13は、レジスタにおける前方に配置する機能レジスタから順に選択すればよい。図9の例では、「table00」レジスタが選択される。その後、レジスタマッピング部13は、選択した「table00」レジスタについて、ステップS205~S209の処理を実行する。
【0077】
以降、展開された各「table」レジスタに、ステップS201~S209の処理がそれぞれ実行される。そして、全ての機能レジスタの選択が終了すると(ステップS210:YES)、レジスタマッピングが終了する。以上の処理により、図4のレジスタ一覧に基づいて、図5に示すように各機能レジスタにビットが割り当てられる。
【0078】
以上説明した通り、本実施形態によれば、図4のレジスタ一覧のような簡単なフォーマットにより、各機能レジスタの各種の仕様を設計することができる。また、レジスタ一覧に基づいて、各機能レジスタを自動的にレジスタマッピングすることができる。さらに、レジスタ一覧に基づいて、配列レジスタの仕様をまとめて設計することができる。したがって、設計者は、本実施形態に係るレジスタ設計支援装置1を利用することにより、レジスタを容易に設計することができる。
【0079】
なお、上述の通り、レジスタは、複数のレジスタモジュールを有してもよい。図10は、レジスタ一覧の概要を示す図である。図10の例では、レジスタは、「func_a」モジュール、「func_b」モジュール、及び「func_c」モジュールを有する。図10の例では省略されているが、各レジスタモジュールには、図4の例のように各機能レジスタの仕様が設計される。
【0080】
このようなレジスタ一覧をレジスタ設計支援装置1に入力することにより、レジスタモジュールごとのレジスタ仕様及びレジスタ構成が生成される。各レジスタモジュールの相対的な配置は、レジスタ設計支援装置1より上位のアドレスデコーダにより設計することができる。このように、レジスタモジュールごとにレジスタ仕様及びレジスタ構成を生成することにより、全体の構成を維持したまま、レジスタモジュールごとの仕様変更が可能となるため、ASICやFPGAにおけるパーシャルリコンフィグ(一部のレジスタモジュールの変更)を容易に行うことができる。
【0081】
なお、上記実施形態に挙げた構成等に、その他の要素との組み合わせなど、ここで示した構成に本発明が限定されるものではない。これらの点に関しては、本発明の趣旨を逸脱しない範囲で変更可能であり、その応用形態に応じて適切に定めることができる。
【符号の説明】
【0082】
1:レジスタ設計支援装置
11:ジェネレート設計記憶部
12:レジスタ一覧記憶部
13:レジスタマッピング部
14:レジスタ設計部
15:レジスタ仕様記憶部
16:レジスタ構成記憶部
【先行技術文献】
【特許文献】
【0083】
【文献】特開2005-327192号公報
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10