(57)【要約】【課題】プログラムに応じて最適なハードウエア資源を設計することが可能な設計装置を提供する。【解決手段】プログラムの内容に応じて、演算回路を構成する回路素子群を減少させる方向に演算回路の設計情報を最適化する最適化手段（ＭＰＵ２１）と、記憶回路の回路素子群をランダムゲート回路の設計情報として生成する生成手段（ＭＰＵ２１）と、最適化手段によって得られた設計情報と、生成手段によって得られた設計情報とを合成する合成手段（ＭＰＵ２１）と、を有する。【選択図】図１
2009199113.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを格納するための記憶回路と、前記プログラムを実行する演算回路とを有する
情報処理装置を設計する設計装置において、
前記プログラムの内容に応じて、前記演算回路を構成する回路素子群を減少させる方向
に前記演算回路の設計情報を最適化する最適化手段と、
前記記憶回路の回路素子群をランダムゲート回路の設計情報として生成する生成手段と
、
前記最適化手段によって得られた設計情報と、前記生成手段によって得られた設計情報
とを合成する合成手段と、
を有することを特徴とする設計装置。
【請求項２】
請求項１記載の設計装置において、
前記最適化手段は、前記プログラムに出現しない命令に関する設計情報を除外すること
により最適化を行うことを特徴とする設計装置。
【請求項３】
請求項１記載の設計装置において、
前記最適化手段は、前記プログラムで使用されていないレジスタに関する設計情報を除
外することにより最適化を行うことを特徴とする設計装置。
【請求項４】
請求項１記載の設計装置において、
前記最適化手段は、前記プログラムのサイズに基づいて、命令を構成するオペランドの
アドレス値のビット数を削減することにより最適化を行うことを特徴とする設計装置。
【請求項５】
請求項１乃至４のいずれか１項に記載の設計装置において、
前記合成手段は、ユーザによって作成されたユーザモジュールに関する回路情報も併せ
て合成することを特徴とする設計装置。
【請求項６】
請求項１乃至５のいずれか１項に記載の設計装置において、
前記合成手段によって得られた設計情報に基づいて、論理シミュレーションを実行する
ことにより、前記演算装置に関するハードウエアと前記プログラムのデバッグを同時に行
うデバッグ手段を有することを特徴とする設計装置。
【請求項７】
請求項６記載の設計装置において、
前記合成手段によって合成された設計情報を、回路素子群の接続関係を示すネットリス
トに変換する変換手段を有し、
前記デバッグ手段は、前記ネットリストに基づいて、論理シミュレーションを実行する
ことにより、前記演算装置に関するハードウエアと前記プログラムのデバッグを同時に行
うことを特徴とする設計装置。
【請求項８】
プログラムを格納するための記憶回路と、前記プログラムを実行する演算回路とを有する
情報処理装置を設計する設計装置による設計方法において、
前記プログラムの内容に応じて、前記演算回路を構成する回路素子群を減少させる方向
に前記演算回路の設計情報を最適化する最適化ステップと、
前記記憶回路の回路素子群をランダムゲート回路の設計情報として生成する生成ステッ
プと、
前記最適化ステップによって得られた設計情報と、前記生成ステップによって得られた
設計情報とを合成する合成ステップと、
を有することを特徴とする設計装置による設計方法。
【請求項９】
プログラムを格納するための記憶回路と、前記プログラムを実行する演算回路とを有する
情報処理装置を設計する設計処理をコンピュータに機能させる設計プログラムにおいて、
前記プログラムの内容に応じて、前記演算回路を構成する回路素子群を減少させる方向
に前記演算回路の設計情報を最適化する最適化手段、
前記記憶回路の回路素子群をランダムゲート回路の設計情報として生成する生成手段、
前記最適化手段によって得られた設計情報と、前記生成手段によって得られた設計情報
とを合成する合成手段、
として機能させることを特徴とするコンピュータ読み取り可能な設計プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
設計装置、設計装置による設計方法、および、設計プログラムに係り、特に、所定のプ
ログラムに対応するコアを設計するための技術に関する。
【背景技術】
【０００２】
特許文献１には、ＣＰＵやＤＳＰ等のプロセッサとともに、ユーザが独自に設計したユ
ーザ独自回路を１チップに集積する処理装置であって、フルカスタム設計により最適設計
されているプロセッサコアに変更を加えることなく、ユーザが独自の命令を定義すること
が可能な技術が開示されている。
【特許文献１】特開平１０−１４３３６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、特許文献１の技術は、汎用設計されたＣＰＵに対して、新たな命令を追加す
る場合、すなわち、機能を拡張する場合に関する技術である。ところで、汎用設計された
ＣＰＵによって、特定のプログラムを実行する場合、所与の機能群が最適であるとは言い
難く、不要な機能も多く存在する。そのような場合、ハードウエア資源が無駄になる場合
があるという問題点がある。
そこで、本発明の目的は、プログラムに応じて最適なハードウエア資源を設計すること
が可能な設計装置、設計装置による設計方法、および、設計プログラムを提供することに
ある。
【課題を解決するための手段】
【０００４】
上記課題を解決するため、本発明の第１態様は、プログラムを格納するための記憶回路
と、前記プログラムを実行する演算回路とを有する情報処理装置を設計する設計装置にお
いて、前記プログラムの内容に応じて、前記演算回路を構成する回路素子群を減少させる
方向に前記演算回路の設計情報を最適化する最適化手段と、前記記憶回路の回路素子群を
ランダムゲート回路の設計情報として生成する生成手段と、前記最適化手段によって得ら
れた設計情報と、前記生成手段によって得られた設計情報とを合成する合成手段と、を有
することを特徴としている。
上記構成によれば、プログラムの内容に応じて、演算回路を構成する回路素子群を減少
させる方向に演算回路の設計情報を最適化し、記憶回路の回路素子群をランダムゲート回
路の設計情報として生成し、これらの設計情報を合成する。この結果、プログラムに応じ
て最適なハードウエア資源を設計することが可能となる。
【０００５】
また、本発明の第２態様は、第１態様において、前記最適化手段は、前記プログラムに
出現しない命令に関する設計情報を除外することにより最適化を行うことを特徴としてい
る。
上記構成によれば、プログラムに出現しない命令に関する設計情報が除外される。この
ため、プログラムに出現しない命令に関する機能を設計情報から除外できるので、プログ
ラムに応じて回路規模を縮小することができる。
【０００６】
また、本発明の第３態様は、第１態様において、前記最適化手段は、前記プログラムで
使用されていないレジスタに関する設計情報を除外することにより最適化を行うことを特
徴としている。
上記構成によれば、プログラムに出現しないレジスタに関する設計情報が除外される。
このため、プログラム中に出現しないレジスタおよびそれに関連する回路が除外されるの
で、プログラムに応じて回路規模を縮小することができる。
【０００７】
また、本発明の第４態様は、第１態様において、前記最適化手段は、前記プログラムの
サイズに基づいて、命令を構成するオペランドのアドレス値のビット数を削減することに
より最適化を行うことを特徴としている。
上記構成によれば、プログラムのサイズに基づいて、オペランドのアドレス値のビット
数が削減される。このため、プログラムのサイズが小さい場合には、オペランドのアドレ
スビット数が削減され、全体として命令のビット数が減少するので、プログラムにおうじ
て回路規模を縮小することができる。
【０００８】
また、本発明の第５態様は、第１乃至４態様において、前記合成手段は、ユーザによっ
て作成されたユーザモジュールに関する回路情報も併せて合成することを特徴としている
。
上記構成によれば、ユーザモジュールに関する設計情報も併せて合成される。このため
、ユーザが必要な機能を任意に追加することができる。
【０００９】
また、本発明の第６態様は、１乃至５の態様において、前記合成手段によって得られた
設計情報に基づいて、論理シミュレーションを実行することにより、前記演算装置に関す
るハードウエアと前記プログラムのデバッグを同時に行うデバッグ手段を有することを特
徴としている。
上記構成によれば、合成された設計情報に基づいて論理シミュレーションが行われ、デ
バッグが実行される。このため、ハードウエアとソフトウエアのデバッグを同時に行うこ
とができるので、設計の工数を減らすことができる。
【００１０】
また、本発明の第７態様は、第６態様において、前記合成手段によって合成された設計
情報を、回路素子群の接続関係を示すネットリストに変換する変換手段を有し、前記デバ
ッグ手段は、前記ネットリストに基づいて、論理シミュレーションを実行することにより
、前記演算装置に関するハードウエアと前記プログラムのデバッグを同時に行うことを特
徴としている。
上記構成によれば、合成された設計情報をネットリストに変換し、ネットリストに基づ
いて論理シミュレーションを実行する。このため、ハードウエアとソフトウエアのネット
リストに関するデバッグを同時に行うことができるので、設計の工数を減らすことができ
る。
【００１１】
また、本発明の第８態様は、プログラムを格納するための記憶回路と、前記プログラム
を実行する演算回路とを有する情報処理装置を設計する設計装置による設計方法において
、前記プログラムの内容に応じて、前記演算回路を構成する回路素子群を減少させる方向
に前記演算回路の設計情報を最適化する最適化ステップと、前記記憶回路の回路素子群を
ランダムゲート回路の設計情報として生成する生成ステップと、前記最適化ステップによ
って得られた設計情報と、前記生成ステップによって得られた設計情報とを合成する合成
ステップと、を有することを特徴としている。
上記設計方法によれば、プログラムの内容に応じて、演算回路を構成する回路素子群を
減少させる方向に演算回路の設計情報を最適化し、記憶回路の回路素子群をランダムゲー
ト回路の設計情報として生成し、これらの設計情報を合成する。この結果、プログラムに
応じて最適なハードウエア資源を設計することが可能となる。
【００１２】
また、本発明の第９態様は、プログラムを格納するための記憶回路と、前記プログラム
を実行する演算回路とを有する情報処理装置を設計する設計処理をコンピュータに機能さ
せる設計プログラムにおいて、前記プログラムの内容に応じて、前記演算回路を構成する
回路素子群を減少させる方向に前記演算回路の設計情報を最適化する最適化手段、前記記
憶回路の回路素子群をランダムゲート回路の設計情報として生成する生成手段、前記最適
化手段によって得られた設計情報と、前記生成手段によって得られた設計情報とを合成す
る合成手段、として機能させることを特徴としている。
上記設計プログラムによれば、プログラムの内容に応じて、演算回路を構成する回路素
子群を減少させる方向に演算回路の設計情報を最適化し、記憶回路の回路素子群をランダ
ムゲート回路の設計情報として生成し、これらの設計情報を合成する。この結果、プログ
ラムに応じて最適なハードウエア資源を設計することが可能となる。
なお、この制御プログラムは、フレキシブルディスクやハードディスク装置等の磁気的
記録媒体、ＭＯ等の光磁気記録媒体、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ±Ｒ、ＤＶＤ±ＲＷ
、ＤＶＤ−ＲＡＭ等の光学式記録媒体、半導体記憶デバイスを用いた記憶装置等の各種記
録媒体に、コンピュータによって読み取り可能な形式で記録された形態としてもよい。
【発明を実施するための最良の形態】
【００１３】
次に図面を参照して本発明の好適な実施の形態について説明する。
図１は、第１実施形態の設計装置の概要構成ブロック図である。
設計装置１０は、大別すると、各種情報処理を行う設計装置本体１１と、各種情報を表
示する表示装置１２と、ユーザが各種操作を行うキーボード、マウスなどの操作部１３と
、後述する処理を実現するための設計プログラムを記憶した外部記憶装置１４と、ソース
プログラムを格納する外部記憶媒体１５と、外部記憶媒体１５に記憶されているソースコ
ードを読み出すことが可能な媒体リード／ライト装置１６と、を備えている。
ここで、外部記憶媒体１５としては、ＰＲＯＭ（Programmable Read Only Memory）な
どの半導体メモリ、半導体メモリカード、光ディスク、磁気ディスクなどが挙げられる。
設計装置本体１１は、コンピュータとして構成されており、各種処理を行うＭＰＵ（Ma
in Processing Unit）２１と、制御プログラムを含む各種データを記憶するＲＯＭ２２と
、各種データを一時的に記憶するＲＡＭ（Random Access Memory）２３と、を備え、各部
は、バス２４を介して接続されている。
【００１４】
図２は、図１に示す設計装置によって設計されたネットリストに基づいて製造された情
報処理装置３０の構成例を示す図である。図２の例では、情報処理装置３０は、例えば、
ワンチップのマイクロコンピュータとして構成され、ＣＰＵ（Central Processing Unit
）３１、ランダムゲート回路３２、レジスタ群３３、周辺回路３４、および、Ｉ／Ｏ（In
put Output）回路３５を有している。ここで、ＣＰＵ３１は、ランダムゲート回路３２に
格納されているプログラムおよびデータに基づいて、各種情報処理を実行するとともに、
装置の各部を制御する。ランダムゲート回路３２は、論理素子の組み合わせによって構成
され、入力の値によってその時点における出力が定まる論理回路である。すなわち、ラン
ダムゲート回路３２は、通常のＲＯＭのように、内部状態を記憶する機能を有し、入力と
内部状態の双方により、その出力が定まる順序回路ではなく、ある入力が与えられたとき
に、当該入力のみに依存して定まる出力が与えられる回路である。したがって、ランダム
ゲート回路３２は、通常のＲＯＭのように、マトリクス状に配置された記憶素子としての
セルを有しておらず、論理素子の組み合わせによって構成される。
【００１５】
レジスタ群３３は、複数のレジスタによって構成され、ＣＰＵ３１によって実行される
プログラムおよびデータを一時的に格納するメモリとして機能する。周辺回路３４は、割
り込み回路、タイマ回路、ＤＭＡ（Direct Memory Access）回路を有している。割り込み
回路は、例えば、タイマ回路、ＤＭＡ回路、または、Ｉ／Ｏ回路３５を介して接続された
外部機器に起因する割り込みを発生し、ＣＰＵ３１に通知する。タイマ回路は、例えば、
日時情報を生成してＣＰＵ３１に供給する。ＤＭＡ回路は、ＣＰＵ３１を介さずに、レジ
スタ群３３のレジスタ間で情報を転送したり、Ｉ／Ｏ回路３５に接続された外部機器とレ
ジスタ群３３との間で情報を転送したりする回路である。Ｉ／Ｏ回路３５は、図示せぬ外
部機器との間で情報を授受する際の制御を行う回路である。なお、周辺回路３４として、
これ以外の回路（例えば、コプロセッサ（Co-Processor））を有していてもよい。あるい
は、周辺回路３４自体を有しない構成としてもよい。すなわち、周辺回路３４は必須の構
成要素ではない。
【００１６】
ここで、具体的な説明に先立ち、本発明の動作原理について説明する。
従来において、情報処理装置を設計する際には、ＣＰＵ３１としては予め定められた回
路を用い、これにユーザが必要なハードウエアモジュールを追加することによりハードウ
エアを設計する。しかし、このような従来の方法では、ＣＰＵ３１として予め定められた
回路を使用することから、実装されるプログラムによっては（特に、小規模なプログラム
の場合には）不要な回路構成が存在する場合がある。
そこで、本発明の第１実施形態では、プログラムに基づいて、ＣＰＵ３１が有する命令
仕様を最適化し、最適化された命令仕様に基づいて、ＣＰＵ３１等のコア部のＲＴＬ（Re
gister Transfer Level）記述を最適化する。なお、ＲＴＬ記述とは、集積回路設計にお
いて同期デジタル回路を記述する手法の一種であり、回路の動作をハードウェアレジスタ
（フリップフロップなど）とブール論理回路の間の信号の流れ（データ転送）として記述
する。また、プログラムについては、論理素子の組み合わせ回路としてのランダムゲート
回路に変換するためのＲＴＬ記述に変換する。そして、このようにして得られたコア部の
ＲＴＬ記述と、プログラムのＲＴＬ記述と、ユーザが生成したユーザモジュールのＲＴＬ
記述とを合成し、回路部品の接続関係を記述したネットリストを生成する。このようにし
て生成されたネットリストに基づいて、図２に示す情報処理装置３０を製造する。
このような方法によれば、プログラムに基づいて、命令仕様が最適化されることから、
例えば、不要な命令が削除されることに伴って、オペコードを識別するためのビット数を
短縮することができるため、不要な回路構成を排除することにより、回路規模を縮小する
ことができる。その結果、製造コストを削減し、また、情報処理装置３０の動作速度を向
上させるとともに、消費電力を削減できる。
【００１７】
つぎに、第１実施形態の詳細な動作について説明する。図３は、設計装置１０における
情報処理装置３０の設計の流れを示す図である。また、図４は、設計装置１０において実
行される処理のフローチャートである。なお、図３に示す機能ブロックおよび図４に示す
各処理ステップは、図１に示す設計装置のハードウエアとしてのＭＰＵ２１、ＲＯＭ２２
、および、ＲＡＭ２３と、外部記憶装置１４に記憶されているソフトウエアとしてのプロ
グラムが協働することにより実現される。
処理が開始されると、まず、ソースプログラム４０に対する解析が行われる（ステップ
Ｓ１）。図５は、ソースプログラム４０の一例を示している。図５の例では、ラベル「Ｓ
ＴＡＲＴ」およびラベル「ＥＮＤ」の間にプログラムが記述されている。ここで、「ａｎ
ｄ  ｒ０，ｒ１」は、レジスタｒ０の値とレジスタｒ１の値の論理積を演算し、演算結果
をレジスタｒ１に格納する命令である。「ａｄｄ  ｒ０，ｒ２」は、レジスタｒ０の値と
レジスタｒ１の値を加算し、演算結果をレジスタｒ２に代入する命令である。「ｌｄ  ｒ
３，ｒ０」は、レジスタｒ０にレジスタｒ３の値によって示されるアドレスに格納されて
いる値を代入する命令である。「ｘｏｒ  ｒ３，ｒ５」は、レジスタｒ３の値とレジスタ
ｒ５の値の排他的論理和を演算し、演算結果をレジスタｒ５に格納する命令である。「ｓ
ｕｂ  ｒ３，ｒ０」は、レジスタｒ３の値からレジスタｒ０の値を減算し、演算結果をレ
ジスタｒ０に代入する命令である。「ｊｚ  ＬＡＢＥＬ」は、直前の演算により、ゼロフ
ラグが立った場合には、「ＬＡＢＥＬ」に分岐する条件分岐命令である。「ｌｄ  ｒ４，
ｒ３」は、レジスタｒ３にレジスタｒ４の値によって示されるアドレスに格納されている
値を代入する命令である。「ｏｒ  ｒ４，ｒ５」は、レジスタｒ４の値とレジスタｒ５の
値の論理和を演算し、演算結果をレジスタｒ５に格納する命令である。「ｓｔ  ｒ５，ｒ
４」は、レジスタｒ４の値によって示されるアドレスに、レジスタｒ５に格納されている
値を代入する命令である。「ｊｍｐ  ＥＮＤ」は、ラベル「ＥＮＤ」に無条件にジャンプ
する命令である。
【００１８】
ステップＳ１の処理では、図５に示すようなソースプログラム４０を参照し、ソースプ
ログラム４０に含まれている命令の種類、使用されているレジスタの種類、および、ソー
スプログラムのプログラム長等が解析される。
【００１９】
ステップＳ２では、ステップＳ１の解析結果に基づいて、命令仕様４１に含まれている
オペコード識別ビット数の最適化が実行される。図６は、命令仕様４１の一例を示してい
る。図６に示すように、各命令は、オペコード（命令の種類を指定する情報）と、オペラ
ンド（命令の対象を示す情報）とによって構成されている。例えば、ｌｄ命令は、１６ビ
ット中、第１２ビット〜第１５ビット（ＭＳＢ）がオペコードであり、第０ビット（ＬＳ
Ｂ）〜第７ビットがオペランドであり、第８ビット〜第１１ビットは不使用とされている
。また、ｊｍｐ命令は、１６ビット中、第１２ビット〜第１５ビットがオペコードであり
、第０ビット〜第１１ビットは、オペランドである。また、ｎｏｐ命令（ノーオペレーシ
ョン命令）は、オペランドが存在せず、第１２ビット〜第１５ビットがオペコードである
。なお、最適化前の命令仕様４１をまとめると、命令（オペコード＋オペランド）のビッ
ト幅は１６ビットであり、命令種別数は１０種類であり、オペコードは上位４ビットであ
り、汎用レジスタ数は１６種類であり、プログラムアドレス空間（ｊｍｐ，ｊｚ命令で使
用）は１２ビットであり、レジスタ−メモリ間のデータ移動（ｌｄ，ｓｔによる移動）の
アドレス指定は、レジスタ値による指定とされている。
【００２０】
ステップＳ２では、ソースプログラム４０において出現しない命令を命令仕様４１から
除外し、それに伴ってオペコード識別ビット数を削減する。例えば、図６に示す命令仕様
４１において、「ｏｒ」、「ｊｚ」、および、「ｎｏｐ」がソースプログラム４０中に出
現しない場合には、これらを命令仕様４１から除外する。その結果、命令の数は、７種類
となるので、オペコードを識別するための識別ビット数（オペコード識別ビット数）は、
３ビットで表現可能となる。この結果、命令仕様４１は、図７に示すように最適化される
。すなわち、図７の例では、オペコードは第１２ビット〜第１４ビット（ＭＳＢ）の３ビ
ットとされ、命令のトータルのビット数は１５ビットとされている。また、オペコードと
して、新たな識別コードが各命令に対して付与されている。
【００２１】
ステップＳ３では、ステップＳ１の解析結果に基づいて、命令仕様４１に含まれている
レジスタ識別ビット数の最適化が実行される。例えば、ソースプログラム中で、全１６種
類のレジスタのうち、８種類のレジスタしか使用されていない場合には、レジスタを識別
するコード（レジスタコード）のビット数（レジスタ識別ビット数）は、３ビットで十分
であるので、レジスタ識別ビット数を図６に示す４ビットから３ビットに減少させる最適
化を実行する。その結果、命令仕様４１は、図８に示すように最適化される。すなわち、
図８の例では、「ｓｒｃ」（ソース）および「ｄｓｔ」（デスティネーション）で示され
るレジスタ識別ビットが、４ビットから３ビットにそれぞれ削減されている。なお、「ｊ
ｍｐ」および「ｊｚ」が存在することから、オペランド自体の長さは、１２ビットで不変
とされている。
【００２２】
ステップＳ４では、ステップＳ１の解析結果に基づいて、命令仕様４１に含まれている
プログラムアドレス空間のアドレス指定を行うアドレス指定ビット数の最適化が実行され
る。例えば、プログラムのサイズが２５６ステップ以下である場合には、８ビット（０〜
２５５の値を表現可能なビット数）で全プログラムのアドレス空間の指定が可能となる。
その結果、命令仕様４１は、図９に示すように最適化される。すなわち、図９の例では、
「ｊｍｐ」および「ｊｚ」のアドレス指定ビット数は、１２ビットから８ビットに減少さ
れている。また、その結果として、オペランドが１２ビットから８ビットに減少されるた
め、命令自体のビット数が１６ビットから１２ビットに縮小されている。
【００２３】
以上のステップＳ１〜Ｓ４の処理（請求項中「最適化手段」に対応）によって、命令仕
様４１が最適化され、最適化後命令仕様４３が生成されることになる。
【００２４】
ステップＳ５では、ステップＳ１〜Ｓ４の処理によって生成された最適化後命令仕様４
３に基づいて、コア部ＲＴＬ４２を最適化する処理を実行する。より詳細には、以下の処
理を実行する。
（Ａ１）命令デコーダを、最適化後命令仕様４３に応じて変更する。すなわち、命令数が
減少している場合（図７の場合）には、除外された命令を命令デコーダの処理対象から外
す。また、命令のビット数が減少している場合（図７、図９の場合）には、デコーダへの
入力ビット数を減少させる。
（Ａ２）命令数が減少された場合（図７の場合）には、除外された命令に対応する記述を
削除する。
（Ａ３）レジスタ数が減少された場合（図８の場合）には、減少された数に応じてレジス
タを削除する。
（Ａ４）アドレス指定ビット数が減少された場合（図９の場合）には、ＰＣ（プログラム
カウンタ）のビット幅を、プログラムサイズに応じて削減する。例えば、アドレス指定ビ
ット数が８ビットになった場合には、ＰＣのビット幅を８ビットとする。
以上の処理により、コア部ＲＴＬ４２が最適化され、コア部最適化後ＲＴＬ４４が生成
される。
【００２５】
ステップＳ６（請求項中「生成手段」に対応）では、ソースプログラム４０を、ＲＴＬ
記述に変換する処理を実行する。図１０は、図５に示すソースプログラムをＲＴＬ記述に
変換した例を示す図である。この例では、「ｒｏｍａｄｒｓ」の入力に対して、「ｒｏｍ
ｏｕｔ」を出力するランダムゲートとして記述されている。より詳細には、「ｒｏｍａｄ
ｒｓ」の値に応じて、０〜１０に記述された「ＲＯＭＯＵＴＳ」の値が選択されて出力さ
れる。例えば、「ｒｏｍａｄｒｓ」の値が“０”である場合には、１６ビットの情報であ
る「０１０１＿ｘｘｘｘ＿００００＿０００１」が出力される。なお、ｃａｓｅ文の最後
に記述されているように、デフォルト（ｄｅｆａｕｌｔ）値は、「００００＿００００＿
００００＿００００」とされている。図１０の例は、図５に示すソースプログラムを、図
６に示す最適化前の命令仕様４１に基づいてＲＴＬに変換しているが、図７〜図９に示す
ように、命令仕様が最適化された場合には、最適化後命令仕様４３に基づいて、ＲＴＬ記
述の内容が変更される。例えば、図９の場合では、冒頭の「０：」に対応する情報（「ａ
ｎｄ  ｒ０，ｒ１」に対応する情報）は、「０１０１＿００００＿０００１」に変更され
る。また、図１０の例では、ビット中に「ｘ」が含まれており、当該「ｘ」はドントケア
ビットとして、処理がなされる。なお、当該「ｘ」をユーザが「０」または「１」の何れ
かに設定することも可能である。
【００２６】
ステップＳ７（請求項中「合成手段」および「変換手段」に対応）では、コア部最適化
後ＲＴＬ４４、プログラム部ＲＴＬ４５、および、ユーザモジュールＲＴＬ４６を合成す
る。ここで、ユーザモジュールＲＴＬ４６は、ユーザによって生成された回路のモジュー
ルである。このようにして合成されたＲＴＬ記述は、ネットリスト４７に変換される。そ
して、このようにして生成されたネットリスト４７に基づいて、図２に示すような情報処
理装置３０が製造される。ここで、ネットリストとは、回路を構成する素子同士の接続関
係を示す情報である。
【００２７】
以上のようにして製造された情報処理装置３０は、ソースプログラム４０に基づいて、
命令仕様４１が最適化されているとともに、コア部ＲＴＬ４２が最適化されている。この
ため、最適化によって命令のビット数が減少した場合には、デコーダが処理対象とする命
令の数が減少することから、デコーダの構成を簡略化し、回路規模を縮小することができ
る。また、レジスタ数が減少された場合には、それに応じて回路規模を縮小することがで
きる。また、アドレス指定ビット数が減少された場合には、プログラムカウンタのビット
幅を減少し、回路規模を縮小することができる。さらに、回路規模の縮小に応じて、消費
電力の削減が可能となるとともに、処理速度を向上することが可能になる。
【００２８】
つぎに、本発明の第２実施形態について説明する。図１１は、本発明の第２実施形態の
処理の流れを説明する図である。なお、この図において、図３と対応する部分には同一の
符合を付してその説明を省略する。図１１の例では、図３の場合と比較して、論理シミュ
レータ４８（請求項中「デバッグ手段」に対応）およびデバッガ４９（請求項中「デバッ
グ手段」に対応）が追加されている。それ以外の処理の流れは、図３の場合と同様である
。以下では、相違部分について主に説明をする。
ここで、論理シミュレータ４８は、設計した論理回路の論理機能やタイミングを検証す
るための機能ブロックである。すなわち、論理シミュレータ４８は、ネットリスト４７を
入力し、これに検証用のパターン（シミュレーション・パターン）を加えて、その応答を
観測する。また、論理シミュレータ４８は、入力信号や応答信号をグラフィカルに見るた
めの、波形ビューアを有している。さらに、論理シミュレータ４８は、論理素子によって
構成されるネットリスト４７のみならず、コア部最適化後ＲＴＬ４４、プログラム部ＲＴ
Ｌ４５、および、ユーザモジュールＲＴＬ４６等のＲＴＬについても論理的なシミュレー
ションが可能となっている。
デバッガ４９は、論理シミュレータ４８からソースプログラム４０のデバッグに必要な
情報（プログラムカウンタ値、各レジスタ値等）を取得し、表示し、あるいは、書き換え
ることにより、デバッグを行うための機能ブロックである。
【００２９】
図１１の例では、図３の場合と同様に、ソースプログラム４０に基づいて、命令仕様４
１およびコア部ＲＴＬ４２の最適化が実行され、最適化後命令仕様４３、コア部最適化後
ＲＴＬ４４が生成される。また、ソースプログラム４０は、最適化後命令仕様４３に基づ
いてプログラム部ＲＴＬ４５に変換される。そして、コア部最適化後ＲＴＬ４４、プログ
ラム部ＲＴＬ４５、および、ユーザモジュールＲＴＬ４６は合成され、ネットリスト４７
が生成される。
【００３０】
論理シミュレータ４８およびデバッガ４９は、このようにして生成されたＲＴＬおよび
ネットリストに基づいて論理シミュレーションを実行し、ハードウエアとソースプログラ
ムに関するシミュレーションおよびデバッグを行う。なお、シミュレーションおよびデバ
ッグの詳細については以下に説明する。
【００３１】
まず、論理シミュレータ４８は、合成された、コア部最適化後ＲＴＬ４４、プログラム
部ＲＴＬ４５、および、ユーザモジュールＲＴＬ４６に基づいて、論理シミュレーション
を実行し、プログラムとハードウエアの双方のシミュレーションを実行する。すなわち、
ＲＴＬ記述化された（ハードウエア化された）プログラム部ＲＴＬ４５と、コア部最適化
後ＲＴＬ４４およびユーザモジュールＲＴＬ４６の全てを同時に論理シミュレーションで
きることから、ソフトウエアとハードウエアを同時にシミュレーションすることができる
。
デバッガ４９は、最適化後命令仕様４３と、ソースプログラム４０からＲＴＬへの変更
時の情報を用いて、論理シミュレータ４８からプログラムデバッグに必要な情報（プログ
ラムカウンタ値、各レジスタ値等）を取り出し、表示し、あるいは、書き換えることによ
り、デバッグを行う。これにより、ソフトウエアとハードウエアのデバッグを同時に行う
ことができる。そして、このような論理シミュレーションにより、論理的な記述の誤りを
訂正することができる。
【００３２】
以上のようにして、ＲＴＬに対するデバッグが終了すると、続いて、論理シミュレータ
４８は、ＲＴＬが合成されて生成されたネットリスト４７に対しても論理シミュレーショ
ンを実行する。ネットリスト４７に対する論理シミュレーションでは、ネットリスト４７
に対して検証用のパターンを入力信号として与え、それに対する出力信号である応答信号
を波形ビューワ等によって観察することにより、デバッグを行う。前述したように、ネッ
トリスト４７には、ハードウエアとソフトウエアの双方に対応する情報が含まれているの
で、ネットリスト４７のデバッグを行うことにより、ハードウエアのソフトウエアの双方
のデバッグを同時に実行することができる。
【００３３】
なお、デバッガ４９は、論理シミュレータ４８と一体であっても、別の機能ブロック（
プログラム）として構成されてもよい。別の機能ブロックとして構成する場合には、シミ
ュレーション中に、論理シミュレータ４８の内部の情報を読み書きするためのインタフェ
ースが論理シミュレータ４８に備わっている必要がある。また、デバッガ４９のインタフ
ェースの形態は、ソースプログラム４０を作成する際に使用するソフトウエアデバッガと
同様のユーザインタフェースを採用することにより、ソフトウエア開発者の利便性を向上
させることができる。
【００３４】
以上に説明したように、本発明の第２実施形態によれば、ソースプログラム４０をラン
ダムゲートとして構成することにより、ソースプログラム４０とハードウエア（ＲＴＬお
よびネットリスト）とを同時にデバッグできるので、デバッグのための準備作業（例えば
、ハードウエアシミュレータおよびテストプログラムの開発等の作業）を軽減することが
できる。また、これらを同時にデバッグできるようにすることにより、デバッグ自体の効
率を向上させることができる。
比較のために、従来における設計およびデバッグの手順について説明する。従来におい
ては、まず、設計されたハードウエアの仕様に基づいて、プログラムを作成する。そして
、ハードウエアと、ソフトウエアのそれぞれについて、デバッグを行う。なお、その際、
ハードウエアが完成していない場合には、ハードウエアのシミュレータを用いてソフトウ
エアのデバッグを行う。また、ハードウエアのシミュレータを用いてプログラムのデバッ
グを行う場合、実際のハードウエアと同一の動作をするシミュレータを作成することが困
難であるため、シミュレータ自体の動作の検証を行う必要が生じる。また、ハードウエア
自体のデバッグを行う際には、ハードウエアのデバッグ用のプログラムを別途開発する必
要が生じ、工数が増加するとともに、テスト漏れが生じる可能性がある。さらに、実際の
製品においてバグ（不具合）が生じた場合には、ソフトウエアによるバグなのか、ハード
ウエアによるバグなのかを検証する必要が生じる。
一方、本発明の第２実施形態では、ソフトウエアとハードウエアのデバッグを同時に実
行することができるので、ソフトウエアとハードウエアについて個別にデバッグを行った
り、ハードウエアのシミュレータの検証を行ったり、ハードウエアのデバッグ用のプログ
ラムを別途開発したりする手間を省略することができる。
【００３５】
なお、上述した実施の形態は、あくまでも本発明の一態様を示すものであり、本発明の
範囲内で任意に変形および応用が可能であることは勿論である。
例えば、以上の実施の形態では、およびコア部最適化後ＲＴＬ４４およびプログラム部
ＲＴＬ４５に対してユーザモジュールＲＴＬ４６を合成するようにしたが、ユーザモジュ
ールＲＴＬ４６は、用いないようにしてもよい。
【００３６】
また、図６に示す命令仕様は一例であって、これ以外の命令仕様を用いるようにしても
よい。さらに、図６に示す命令仕様では、オペコードは４ビットの固定長としたが、これ
以外のビット長であったり、可変長としたりしてもよい。
【００３７】
また、以上の実施の形態では、ソースプログラム４０をＲＴＬ記述に変換し、ランダム
ゲート回路３２として構成するようにしたが、ソースプログラム４０を通常のＲＯＭに格
納するようにしてもよい。そのような場合でも、コアの回路規模を縮小することが可能と
なる。
【図面の簡単な説明】
【００３８】
【図１】実施形態の設計装置の概要構成ブロック図である。
【図２】実施形態の情報処理装置の概略構成ブロック図である。
【図３】設計処理の機能説明図である。
【図４】設計処理の処理フローチャートである。
【図５】ソースプログラムの一例の説明図である。
【図６】命令仕様の一例を示す図である。
【図７】最適化後の命令仕様の一例である。
【図８】最適化後の命令仕様の他の一例である。
【図９】最適化後の命令仕様の更に他の一例である。
【図１０】図５に示すソースプログラムのＲＴＬ記述の一例である。
【図１１】第２実施形態の設計処理の機能説明図である。
【符号の説明】
【００３９】
１０…設計装置、１１…設計装置本体、１２…表示装置、１３…操作部、１４…外部記
憶装置、１５…外部記憶媒体、１６…媒体リードライト装置、２１…ＭＰＵ、２２…ＲＯ
Ｍ、２３…ＲＡＭ、２４…バス、３０…情報処理装置、３１…ＣＰＵ、３２…ランダムゲ
ート回路、３３…レジスタ群、３４…周辺回路、３５…Ｉ／Ｏ回路。
【図１】
2009199113.tif 000003
【図２】
2009199113.tif 000004
【図３】
2009199113.tif 000005
【図４】
2009199113.tif 000006
【図５】
2009199113.tif 000007
【図６】
2009199113.tif 000008
【図７】
2009199113.tif 000009
【図８】
2009199113.tif 000010
【図９】
2009199113.tif 000011
【図１０】
2009199113.tif 000012
【図１１】
2009199113.tif 000013