図面 (/)

技術 システムシミュレーション実行プログラムおよびハードウェア記述変換プログラム

出願人 パナソニック株式会社
発明者 松木敏夫
出願日 2004年5月6日 (16年7ヶ月経過) 出願番号 2004-137107
公開日 2005年11月17日 (15年1ヶ月経過) 公開番号 2005-321848
状態 未査定
技術分野 特別なプログラム実行装置 デバッグ/監視 特殊なプログラム実行装置 CAD
主要キーワード 周期回路 操作情報記録 シミュレーション状態 新製品開発 C言語 共用体 開始アドレスデータ 抑止信号
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2005年11月17日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

課題

ハードウェアシミュレータソフトウェアのシミュレータを協調しながら高速シミュレーションを可能にする。

解決手段

被デバッグソフトウェア102を実行する被デバッグソフトウェア実行部103と、被デバッグソフトウェア実行部103と連携して動作する実行可能なハードウェア記述部104と、シミュレーションに不要なハードウェア要素が指定されたハードウェア要素不活性化箇所情報106をもとにハードウェアのシミュレーションを部分的に抑制させる指示をハードウェア記述部104へ出力するハードウェア要素不活性化指定部105とを備え、ソフトウェアのデバッグに不要なハードウェアのシミュレーションを抑制することで、協調シミュレーション全体の実行速度を上げる。

概要

背景

ハードウェアソフトウェア協調してシミュレーションを行うシミュレーションシステムとして、ハードウェア・ソフトウェア協調シミュレーションが従来知られている。これによれば、実際のハードウェアを使わずに仮想的なハードウェアを使ってソフトウェアのデバッグを行うことによりハードウェアの不具合を早期に発見したり、ソフトウェアのデバッグを行ったり、あるいはシステムの全体の品質完成度短期間に上げたりするという効果が期待できる。

従来、マイコン上で動作するソフトウェアとマイコン周辺のハードウェアの両方を連動させてシミュレーションを行う協調シミュレーションという手法には大別して3つの手法が知られていた。

1つ目はハードウェアの動きをある程度抽象化してソフトウェアの一部として記述し、ソフトウェアと直接的に連結させて実行可能ファイルを作成してからそれを実行するという方法である。

2つ目は、ソフトウェアのシミュレータとハードウェアのシミュレータのそれぞれにインターフェイスを設けて連動させるという方法である。つまり、2つの大きなアプリケーションが連動してシミュレーションを行うことになる。

そして、3つ目は、ソフトウェアのシミュレータとハードウェアのシミュレータを1つのアプリケーションとして統合した上でそれぞれの処理にインターフェイスを設けて連動させるという方法である。
特開2002−244883号公報
特開2001−155047号公報
特開2001−290860号公報
特開平10−74214号公報
特開平10−91480号公報

概要

ハードウェアのシミュレータとソフトウェアのシミュレータを協調しながら高速なシミュレーションを可能にする。被デバッグソフトウェア102を実行する被デバッグソフトウェア実行部103と、被デバッグソフトウェア実行部103と連携して動作する実行可能なハードウェア記述部104と、シミュレーションに不要なハードウェア要素が指定されたハードウェア要素不活性化箇所情報106をもとにハードウェアのシミュレーションを部分的に抑制させる指示をハードウェア記述部104へ出力するハードウェア要素不活性化指定部105とを備え、ソフトウェアのデバッグに不要なハードウェアのシミュレーションを抑制することで、協調シミュレーション全体の実行速度を上げる。

目的

近年、ソフトウェアの規模が大きくなってきており、シミュレーションでソフトウェアのデバッグを行ったりする際にはそのシミュレーション実行速度が非常に重要であり、それをいかに高速にするかが課題である。

効果

実績

技術文献被引用数
0件
牽制数
4件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、コンパイルされたハードウェア記述であってかつそのハードウェア記述に基づいてハードウェアシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述部と、シミュレーションに不要なハードウェア要素が指定されたハードウェア要素不活性化箇所情報をもとにハードウェアのシミュレーションを部分的に抑制させる指示を前記ハードウェア記述部へ出力するハードウェア要素不活性化指定部とを備えるシステムシミュレーション実行プログラム

請求項2

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、シミュレーションに不要なハードウェア要素が指定されたハードウェア要素不活性化箇所情報をもとにハードウェアのシミュレーションを部分的に抑制させる指示を前記ハードウェア記述実行部へ出力するハードウェア要素不活性化指定部とを備えるシステムシミュレーション実行プログラム。

請求項3

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、コンパイルされたハードウェア記述であってかつそのハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述部と、ハードウェア要素間の関連を示すハードウェア記述構造情報と必須ハードウェア要素リストとに基づいてシミュレーションに不要なハードウェア要素を探索する不要ハードウェア要素探索部と、その探索結果をもとにハードウェアのシミュレーションを部分的に抑制させる指示を前記ハードウェア記述部へ出力するハードウェア要素不活性化指定部とを備えるシステムシミュレーション実行プログラム。

請求項4

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、ハードウェア要素間の関連を示すハードウェア記述構造情報と必須ハードウェア要素リストとに基づいてシミュレーションに不要なハードウェア要素を探索する不要ハードウェア要素探索部と、その探索結果をもとにハードウェアのシミュレーションを部分的に抑制させる指示を前記ハードウェア記述実行部へ出力するハードウェア要素不活性化指定部とを備えるシステムシミュレーション実行プログラム。

請求項5

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、コンパイルされたハードウェア記述であってかつそのハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述部と、前記ハードウェア記述部の動作状態監視してハードウェア要素活性状態を取得するためのハードウェア要素活性状態取得部と、前記ハードウェア要素活性状態取得部が取得した結果とハードウェア要素間の関連を示すハードウェア記述構造情報と必須ハードウェア要素リストとに基づいてシミュレーションに不要なハードウェア要素を探索する不要ハードウェア要素探索部と、その探索結果をもとにハードウェアのシミュレーションを部分的に抑制させる指示を前記ハードウェア記述部へ出力するハードウェア要素不活性化指定部とを備えるシミュレーション実行プログラム

請求項6

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、前記ハードウェア記述実行部の動作状態を監視してハードウェア要素活性状態を取得するためのハードウェア要素活性状態取得部と、前記ハードウェア要素活性状態取得部が取得した結果とハードウェア要素間の関連を示すハードウェア記述構造情報と必須ハードウェア要素リストとに基づいてシミュレーションに不要なハードウェア要素を探索する不要ハードウェア要素探索部と、その探索結果をもとにハードウェアのシミュレーションを部分的に抑制させる指示を前記ハードウェア記述実行部へ出力するハードウェア要素不活性化指定部とを備えるシミュレーション実行プログラム。

請求項7

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、コンパイルされたハードウェア記述であってかつそのハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述部と、前記ハードウェア記述部の中のハードウェア要素状態を取得するためのハードウェア要素状態取得部と、前記ハードウェア要素状態取得部が取得した結果に基づいて各ハードウェア要素のシミュレーションを行うかどうかを判定するシミュレーション条件判定部と、前記シミュレーション条件判定部の判定結果をもとにハードウェアのシミュレーションを部分的に抑制させる指示を前記ハードウェア記述部へ出力するハードウェア要素不活性化指定部とを備えるシステムシミュレーション実行プログラム。

請求項8

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、前記ハードウェア記述実行部の中のハードウェア要素状態を取得するためのハードウェア要素状態取得部と、前記ハードウェア要素状態取得部が取得した結果に基づいて各ハードウェア要素のシミュレーションを行うかどうかを判定するシミュレーション条件判定部と、前記シミュレーション条件判定部の判定結果をもとにハードウェアのシミュレーションを部分的に抑制させる指示を前記ハードウェア記述実行部へ出力するハードウェア要素不活性化指定部とを備えるシステムシミュレーション実行プログラム。

請求項9

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、コンパイルされたハードウェア記述であってかつそのハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述部と、前記被デバッグソフトウェア実行部の中のソフトウェア実行状態を取得するためのソフトウェア実行状態取得部と、前記ソフトウェア実行状態取得部が取得した結果に基づいて各ハードウェア要素のシミュレーションを行うかどうかを判定するシミュレーション条件判定部と、前記シミュレーション条件判定部の判定結果をもとにハードウェアのシミュレーションを部分的に抑制させる指示を前記ハードウェア記述部へ出力するハードウェア要素不活性化指定部とを備えるシステムシミュレーション実行プログラム。

請求項10

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、前記被デバッグソフトウェア実行部の中のソフトウェア実行状態を取得するためのソフトウェア実行状態取得部と、前記ソフトウェア実行状態取得部が取得した結果に基づいて各ハードウェア要素のシミュレーションを行うかどうかを判定するシミュレーション条件判定部と、前記シミュレーション条件判定部の判定結果をもとにハードウェアのシミュレーションを部分的に抑制させる指示を前記ハードウェア記述実行部へ出力するハードウェア要素不活性化指定部とを備えるシステムシミュレーション実行プログラム。

請求項11

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、コンパイルされたハードウェア記述であってかつそのハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述部と、前記被デバッグソフトウェア実行部から前記ハードウェア記述部の仮想メモリ空間へのアクセスモニタしそのアクセスの内容に応じてそのアクセスを許可するか否かを判定する条件判定部と、前記条件判定部の判定結果に基づいて前記被デバッグソフトウェア実行部から前記ハードウェア記述部の仮想メモリ空間へのアクセスを実行させるか否かを制御するアクセス制御部とを備えるシステムシミュレーション実行プログラム。

請求項12

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、前記被デバッグソフトウェア実行部から前記ハードウェア記述実行部の仮想メモリ空間へのアクセスをモニタしそのアクセスの内容に応じてそのアクセスを許可するか否かを判定する条件判定部と、前記条件判定部の判定結果に基づいて前記被デバッグソフトウェア実行部から前記ハードウェア記述実行部の仮想メモリ空間へのアクセスを実行させるか否かを制御するアクセス制御部とを備えるシステムシミュレーション実行プログラム。

請求項13

ハードウェア記述の中から周期回路を抽出する周期回路抽出部と、前記周期回路抽出部で抽出された周期回路から周期回路パラメータを算出する周期回路パラメータ算出部と、前記周期回路パラメータ算出部で算出された周期回路パラメータに基づいて前記ハードウェア記述の中の周期回路部分を別の処理へ書き換える周期回路変換部とを備えるハードウェア記述変換プログラム

請求項14

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、前記ハードウェア記述実行部で実行されるハードウェア記述の中から周期回路を抽出する周期回路抽出部と、前記周期回路抽出部で抽出された周期回路から周期回路パラメータを算出する周期回路パラメータ算出部とを備え、前記ハードウェア記述実行部は、前記ハードウェア記述の中の周期回路部分を実行するかわりに、前記周期回路パラメータ算出部で算出された周期回路パラメータに基づいて前記周期回路の特性を実現するシステムシミュレーション実行プログラム。

請求項15

ハードウェア記述の中から組合せ回路を抽出する組合せ回路抽出部と、前記組合せ回路抽出部で抽出された組合せ回路から組合せ回路パラメータを算出する組合せ回路パラメータ算出部と、前記組合せ回路パラメータ算出部で算出された組合せ回路パラメータに基づいて前記ハードウェア記述の中の組合せ回路部分を別の処理へ書き換える組合せ回路変換部とを備えるハードウェア記述変換プログラム。

請求項16

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、前記ハードウェア記述実行部で実行されるハードウェア記述の中から組合せ回路を抽出する組合せ回路抽出部と、前記組合せ回路抽出部で抽出された組合せ回路から組合せ回路パラメータを算出する組合せ回路パラメータ算出部とを備え、前記ハードウェア記述実行部は、前記ハードウェア記述の中の組合せ回路部分を実行するかわりに、組合せ回路パラメータ算出部で算出された組合せ回路パラメータに基づいて前記組合せ回路の特性を実現するシステムシミュレーション実行プログラム。

請求項17

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、コンパイルされたハードウェア記述であってかつそのハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述部と、前記被デバッグソフトウェア実行部から前記ハードウェア記述部の仮想メモリ空間へのアクセスをモニタしそのアクセスの内容に応じてそのアクセスを許可するか否かを判定する条件判定部と、前記条件判定部の判定結果がアクセスを許可する場合に前記被デバッグソフトウェア実行部から前記ハードウェア記述部の仮想メモリ空間へのアクセスを実行させるアクセス制御部と、前記条件判定部の判定結果がアクセスを許可しない場合に前記ハードウェア記述の中の特定のハードウェア要素を直接操作するハードウェア要素操作部とを備えるシステムシミュレーション実行プログラム。

請求項18

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、前記被デバッグソフトウェア実行部から前記ハードウェア記述実行部の仮想メモリ空間へのアクセスをモニタしそのアクセスの内容に応じてそのアクセスを許可するか否かを判定する条件判定部と、前記条件判定部の判定結果がアクセスを許可する場合に前記被デバッグソフトウェア実行部から前記ハードウェア記述実行部の仮想メモリ空間へのアクセスを実行させるアクセス制御部と、前記条件判定部の判定結果がアクセスを許可しない場合に前記ハードウェア記述の中の特定のハードウェア要素を直接操作するハードウェア要素操作部とを備えるシステムシミュレーション実行プログラム。

請求項19

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、コンパイルされたハードウェア記述であってかつそのハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述部と、前記被デバッグソフトウェアの中に記述されているハードウェア操作コマンド解析するハードウェア操作コマンド解析部と、前記ハードウェア操作コマンド解析部の解析結果に基づいて前記ハードウェア記述の中のハードウェア要素を直接操作するハードウェア要素操作部とを備えるシステムシミュレーション実行プログラム。

請求項20

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、前記被デバッグソフトウェアの中に記述されているハードウェア操作コマンドを解析するハードウェア操作コマンド解析部と、前記ハードウェア操作コマンド解析部の解析結果に基づいて前記ハードウェア記述の中のハードウェア要素を直接操作するハードウェア要素操作部とを備えるシステムシミュレーション実行プログラム。

請求項21

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、コンパイルされたハードウェア記述であってかつそのハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述部と、前記ハードウェア記述部の中に記述されている被デバッグソフトウェア実行部操作コマンドを解析し前記被デバッグソフトウェア実行部を操作するソフトウェア操作コマンド解析部とを備えるシステムシミュレーション実行プログラム。

請求項22

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、前記ハードウェア記述の中に記述されている被デバッグソフトウェア実行部操作コマンドを解析し前記被デバッグソフトウェア実行部を操作するソフトウェア操作コマンド解析部とを備えるシステムシミュレーション実行プログラム。

請求項23

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、コンパイルされたハードウェア記述であってかつそのハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述部と、テストスクリプトを実行するテストスクリプト実行部と、前記テストスクリプトに記述されているハードウェア操作コマンドを解析するハードウェア操作コマンド解析部と、前記ハードウェア操作コマンド解析部の解析結果に基づいて前記ハードウェア記述の中のハードウェア要素を直接操作するハードウェア要素操作部と、前記テストスクリプトに記述されている被デバッグソフトウェア実行部操作コマンドを解析し前記被デバッグソフトウェア実行部を操作するソフトウェア操作コマンド解析部とを備えるシステムシミュレーション実行プログラム。

請求項24

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、テストスクリプトを実行するテストスクリプト実行部と、前記テストスクリプトに記述されているハードウェア操作コマンドを解析するハードウェア操作コマンド解析部と、前記ハードウェア操作コマンド解析部の解析結果に基づいて前記ハードウェア記述の中のハードウェア要素を直接操作するハードウェア要素操作部と、前記テストスクリプトに記述されている被デバッグソフトウェア実行部操作コマンドを解析し前記被デバッグソフトウェア実行部を操作するソフトウェア操作コマンド解析部とを備えるシステムシミュレーション実行プログラム。

請求項25

ハードウェア記述の中から過去に抽象化作業が完了している部分と同等部分を抽出する既抽象化部抽出部と、前記ハードウェア記述の中の前記既抽象化部抽出部による抽出部分を前記過去に抽象化作業が完了している抽象化された記述に置き換えるハードウェア記述置換え部とを備えるハードウェア記述変換プログラム。

請求項26

被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに前記被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、前記ハードウェア記述実行部で実行されるハードウェア記述の中から過去に抽象化作業が完了している部分と同等部分を抽出する既抽象化部抽出部とを備え、前記ハードウェア記述実行部は、前記ハードウェア記述の中の前記過去に抽象化作業が完了している部分と同等部分を実行するかわりに、前記過去に抽象化作業が完了している抽象化された記述を実行するシステムシミュレーション実行プログラム。

請求項27

相互に関連しながら並行的に動作する複数のシミュレーション実行部と、前記シミュレーション実行部からアクセスされるイベント予約登録部と、前記イベント予約登録部に設定されたイベントタイミングに応じてシミュレーションの動きを変更させるシミュレーション実行指示部と、シミュレーション実行状況を記録したものを用いて特定の時点の状態にシミュレーション状態復元させるシミュレーション状態復元部とを備え、一の前記シミュレーション実行部は他の前記シミュレーション実行部に関係するイベントを認識したときにイベントタイミングを前記イベント予約登録部に設定するシステムシミュレーション実行プログラム。

技術分野

0001

本発明は、ハードウェアソフトウェア協調してシミュレーションを行うシステムシミュレーションに係わり、特にソフトウェアデバッグが容易に実行できるシステムシミュレーション実行プログラムとシステムシミュレーション上で使用されるハードウェア記述変換プログラムに関する。

背景技術

0002

ハードウェアとソフトウェアを協調してシミュレーションを行うシミュレーションシステムとして、ハードウェア・ソフトウェア協調シミュレーションが従来知られている。これによれば、実際のハードウェアを使わずに仮想的なハードウェアを使ってソフトウェアのデバッグを行うことによりハードウェアの不具合を早期に発見したり、ソフトウェアのデバッグを行ったり、あるいはシステムの全体の品質完成度短期間に上げたりするという効果が期待できる。

0003

従来、マイコン上で動作するソフトウェアとマイコン周辺のハードウェアの両方を連動させてシミュレーションを行う協調シミュレーションという手法には大別して3つの手法が知られていた。

0004

1つ目はハードウェアの動きをある程度抽象化してソフトウェアの一部として記述し、ソフトウェアと直接的に連結させて実行可能ファイルを作成してからそれを実行するという方法である。

0005

2つ目は、ソフトウェアのシミュレータとハードウェアのシミュレータのそれぞれにインターフェイスを設けて連動させるという方法である。つまり、2つの大きなアプリケーションが連動してシミュレーションを行うことになる。

0006

そして、3つ目は、ソフトウェアのシミュレータとハードウェアのシミュレータを1つのアプリケーションとして統合した上でそれぞれの処理にインターフェイスを設けて連動させるという方法である。
特開2002−244883号公報
特開2001−155047号公報
特開2001−290860号公報
特開平10−74214号公報
特開平10−91480号公報

発明が解決しようとする課題

0007

近年、ソフトウェアの規模が大きくなってきており、シミュレーションでソフトウェアのデバッグを行ったりする際にはそのシミュレーション実行速度が非常に重要であり、それをいかに高速にするかが課題である。

0008

前述した1つ目の、ハードウェアの動きをある程度抽象化してソフトウェアとして記述し、ソフトウェアと連結させて実行可能ファイルを作成してからそれを実行するという方法の場合、シミュレータとしての実行速度は高速であるが、ハードウェアの動きを抽象化する工数が大きいという問題や、ハードウェアの実際の動きとは大きく異なった抽象化をしてしまったりするという問題があった。しかし、現状ではシミュレーション速度が高速という理由からこの方法が最もよく利用されている。

0009

また、2つ目の、ソフトウェアのシミュレータとハードウェアのシミュレータの2つの別々のシミュレータを連携させてシミュレーションを行う方法では、ハードウェアの抽象化という作業がなくなるので最初の方法での問題は解決される。しかし、シミュレーションしようとするハードウェアの大規模化にともないハードウェアのシミュレーションが非常に低速となってしまい、ソフトウェアデバッグに耐えないものになってきている。さらに、協調シミュレーションの中ではハードウェアシミュレータソフトウェアシミュレータ同時並行して動作したり、お互いの情報をやり取りすることが頻繁に発生したりするため、やり取りするたびに時間がかかってしまい、さらにシミュレーションが遅くなるという問題もあった。

0010

また、3つ目の、ソフトウェアのシミュレータとハードウェアのシミュレータを1つのアプリケーションに統合した上でそれぞれのシミュレーション実行部にインターフェイスを設けて連動させるという方法の場合、ハードウェアとソフトウェアのシミュレータ相互のやり取りについては1つのアプリケーションの中で行うので高速にやり取りすることはできるようになる。しかし、ハードウェアシミュレータ単体で動作させるだけでも実際のハードウェアと比べてはるかに遅いという問題があり、さらにソフトウェアのシミュレータと連携させるともっと遅くなる。

0011

本発明の目的は、実際の半導体デバイス設計で利用するレベルのハードウェア記述を使ったハードウェアのシミュレーションとソフトウェアのシミュレーションの協調シミュレーションでありながら高速にシミュレーションできるようにすることである。

課題を解決するための手段

0012

本発明ではハードウェアのシミュレータの動作を高速化するために、ソフトウェアのデバッグに不要なハードウェア部分を特定してその部分だけシミュレーションを抑制したり、あるいは、ハードウェアやソフトウェアのシミュレーションの状態が特定の状態になったときに特定の一部のハードウェアのシミュレーションを抑止あるいは実行したり、あるいは、被デバッグソフトウェアの記述の中にハードウェアの内部のノード直接操作する処理を記述できるようにして一部のハードウェアのシミュレーションを抑制したり、あるいは、ハードウェアの記述の中でソフトウェアのシミュレータの操作を記述することができるようにすることでソフトウェアの処理の一部のシミュレーションを省略させてシミュレーション時間を短縮したり、あるいは、ハードウェアの記述の抽象化を図ってハードウェアのシミュレーション時間の短縮をしたりすることができる。さらに、本発明では既に抽象化したハードウェア記述を含んだファイル開発者修正した場合、既に行った抽象化の結果を再利用することにより抽象化時間を省きトータル開発工数の削減を図ることもできる。

0013

まず、第1の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、コンパイルされたハードウェア記述であってかつそのハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述部と、シミュレーションに不要なハードウェア要素が指定されたハードウェア要素不活性化箇所情報をもとにハードウェアのシミュレーションを部分的に抑制させる指示をハードウェア記述部へ出力するハードウェア要素不活性化指定部とを備える。

0014

第2の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、シミュレーションに不要なハードウェア要素が指定されたハードウェア要素不活性化箇所情報をもとにハードウェアのシミュレーションを部分的に抑制させる指示をハードウェア記述実行部へ出力するハードウェア要素不活性化指定部とを備える。

0015

第3の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、コンパイルされたハードウェア記述であってかつそのハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述部と、ハードウェア要素間の関連を示すハードウェア記述構造情報と必須ハードウェア要素リストとに基づいてシミュレーションに不要なハードウェア要素を探索する不要ハードウェア要素探索部と、その探索結果をもとにハードウェアのシミュレーションを部分的に抑制させる指示をハードウェア記述部へ出力するハードウェア要素不活性化指定部とを備える。

0016

第4の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、ハードウェア要素間の関連を示すハードウェア記述構造情報と必須ハードウェア要素リストとに基づいてシミュレーションに不要なハードウェア要素を探索する不要ハードウェア要素探索部と、その探索結果をもとにハードウェアのシミュレーションを部分的に抑制させる指示をハードウェア記述実行部へ出力するハードウェア要素不活性化指定部とを備える。

0017

第5の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、コンパイルされたハードウェア記述であってかつそのハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述部と、ハードウェア記述部の動作状態監視してハードウェア要素活性状態を取得するためのハードウェア要素活性状態取得部と、ハードウェア要素活性状態取得部が取得した結果とハードウェア要素間の関連を示すハードウェア記述構造情報と必須ハードウェア要素リストとに基づいてシミュレーションに不要なハードウェア要素を探索する不要ハードウェア要素探索部と、その探索結果をもとにハードウェアのシミュレーションを部分的に抑制させる指示をハードウェア記述部へ出力するハードウェア要素不活性化指定部とを備える。

0018

第6の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、ハードウェア記述実行部の動作状態を監視してハードウェア要素活性状態を取得するためのハードウェア要素活性状態取得部と、ハードウェア要素活性状態取得部が取得した結果とハードウェア要素間の関連を示すハードウェア記述構造情報と必須ハードウェア要素リストとに基づいてシミュレーションに不要なハードウェア要素を探索する不要ハードウェア要素探索部と、その探索結果をもとにハードウェアのシミュレーションを部分的に抑制させる指示をハードウェア記述実行部へ出力するハードウェア要素不活性化指定部とを備える。

0019

上記第1〜第6の発明によれば、ソフトウェアのデバッグには関係のないハードウェア要素をシミュレーションに不要なハードウェア要素として特定し、その部分のハードウェアのシミュレーションを抑止してシミュレーション全体の速度を高速化することができる。

0020

第7の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、コンパイルされたハードウェア記述であってかつそのハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述部と、ハードウェア記述部の中のハードウェア要素状態を取得するためのハードウェア要素状態取得部と、ハードウェア要素状態取得部が取得した結果に基づいて各ハードウェア要素のシミュレーションを行うかどうかを判定するシミュレーション条件判定部と、シミュレーション条件判定部の判定結果をもとにハードウェアのシミュレーションを部分的に抑制させる指示をハードウェア記述部へ出力するハードウェア要素不活性化指定部とを備える。

0021

第8の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、ハードウェア記述実行部の中のハードウェア要素状態を取得するためのハードウェア要素状態取得部と、ハードウェア要素状態取得部が取得した結果に基づいて各ハードウェア要素のシミュレーションを行うかどうかを判定するシミュレーション条件判定部と、シミュレーション条件判定部の判定結果をもとにハードウェアのシミュレーションを部分的に抑制させる指示をハードウェア記述実行部へ出力するハードウェア要素不活性化指定部とを備える。

0022

上記第7、第8の発明によれば、ハードウェア要素状態に応じて一部のハードウェアのシミュレーションを抑止してシミュレーション全体の速度を高速化することができる。

0023

第9の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、コンパイルされたハードウェア記述であってかつそのハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述部と、被デバッグソフトウェア実行部の中のソフトウェア実行状態を取得するためのソフトウェア実行状態取得部と、ソフトウェア実行状態取得部が取得した結果に基づいて各ハードウェア要素のシミュレーションを行うかどうかを判定するシミュレーション条件判定部と、シミュレーション条件判定部の判定結果をもとにハードウェアのシミュレーションを部分的に抑制させる指示をハードウェア記述部へ出力するハードウェア要素不活性化指定部とを備える。

0024

第10の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、被デバッグソフトウェア実行部の中のソフトウェア実行状態を取得するためのソフトウェア実行状態取得部と、ソフトウェア実行状態取得部が取得した結果に基づいて各ハードウェア要素のシミュレーションを行うかどうかを判定するシミュレーション条件判定部と、シミュレーション条件判定部の判定結果をもとにハードウェアのシミュレーションを部分的に抑制させる指示をハードウェア記述実行部へ出力するハードウェア要素不活性化指定部とを備える。

0025

上記第9、第10の発明によれば、ソフトウェアの状態に応じて一部のハードウェアのシミュレーションを抑止してシミュレーション全体の速度を高速化することができる。

0026

第11の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、コンパイルされたハードウェア記述であってかつそのハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述部と、被デバッグソフトウェア実行部からハードウェア記述部の仮想メモリ空間へのアクセスモニタしそのアクセスの内容に応じてそのアクセスを許可するか否かを判定する条件判定部と、条件判定部の判定結果に基づいて被デバッグソフトウェア実行部からハードウェア記述部の仮想メモリ空間へのアクセスを実行させるか否かを制御するアクセス制御部とを備える。

0027

第12の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、被デバッグソフトウェア実行部からハードウェア記述実行部の仮想メモリ空間へのアクセスをモニタしそのアクセスの内容に応じてそのアクセスを許可するか否かを判定する条件判定部と、条件判定部の判定結果に基づいて被デバッグソフトウェア実行部からハードウェア記述実行部の仮想メモリ空間へのアクセスを実行させるか否かを制御するアクセス制御部とを備える。

0028

上記第11、第12の発明によれば、ソフトウェア側からハードウェアへのアクセスの中のデバッグに不要なアクセスを中止することによりシミュレーションを抑止してシミュレーション全体の速度を高速化することができる。

0029

第13の発明のハードウェア記述変換プログラムは、ハードウェア記述の中から周期回路を抽出する周期回路抽出部と、周期回路抽出部で抽出された周期回路から周期回路パラメータを算出する周期回路パラメータ算出部と、周期回路パラメータ算出部で算出された周期回路パラメータに基づいてハードウェア記述の中の周期回路部分を別の処理へ書き換える周期回路変換部とを備える。

0030

第14の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、ハードウェア記述実行部で実行されるハードウェア記述の中から周期回路を抽出する周期回路抽出部と、周期回路抽出部で抽出された周期回路から周期回路パラメータを算出する周期回路パラメータ算出部とを備え、ハードウェア記述実行部は、ハードウェア記述の中の周期回路部分を実行するかわりに、周期回路パラメータ算出部で算出された周期回路パラメータに基づいて周期回路の特性を実現する。

0031

上記第13、第14の発明によれば、ハードウェアのシミュレーションをする際に、周期回路のシミュレーション記述を簡略化して実行することによりシミュレーション全体の速度を高速化することができる。

0032

第15の発明のハードウェア記述変換プログラムは、ハードウェア記述の中から組合せ回路を抽出する組合せ回路抽出部と、組合せ回路抽出部で抽出された組合せ回路から組合せ回路パラメータを算出する組合せ回路パラメータ算出部と、組合せ回路パラメータ算出部で算出された組合せ回路パラメータに基づいてハードウェア記述の中の組合せ回路部分を別の処理へ書き換える組合せ回路変換部とを備えるハードウェア記述変換プログラム。

0033

第16の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、ハードウェア記述実行部で実行されるハードウェア記述の中から組合せ回路を抽出する組合せ回路抽出部と、組合せ回路抽出部で抽出された組合せ回路から組合せ回路パラメータを算出する組合せ回路パラメータ算出部とを備え、ハードウェア記述実行部は、ハードウェア記述の中の組合せ回路部分を実行するかわりに、組合せ回路パラメータ算出部で算出された組合せ回路パラメータに基づいて組合せ回路の特性を実現する。

0034

上記第15、第16の発明によれば、ハードウェアのシミュレーションをする際に、組合せ回路のシミュレーション記述を簡略化して実行することによりシミュレーション全体の速度を高速化することができる。

0035

第17の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、コンパイルされたハードウェア記述であってかつそのハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述部と、被デバッグソフトウェア実行部からハードウェア記述部の仮想メモリ空間へのアクセスをモニタしそのアクセスの内容に応じてそのアクセスを許可するか否かを判定する条件判定部と、条件判定部の判定結果がアクセスを許可する場合に被デバッグソフトウェア実行部からハードウェア記述部の仮想メモリ空間へのアクセスを実行させるアクセス制御部と、条件判定部の判定結果がアクセスを許可しない場合にハードウェア記述の中の特定のハードウェア要素を直接操作するハードウェア要素操作部とを備える。

0036

第18の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、被デバッグソフトウェア実行部からハードウェア記述実行部の仮想メモリ空間へのアクセスをモニタしそのアクセスの内容に応じてそのアクセスを許可するか否かを判定する条件判定部と、条件判定部の判定結果がアクセスを許可する場合に被デバッグソフトウェア実行部からハードウェア記述実行部の仮想メモリ空間へのアクセスを実行させるアクセス制御部と、条件判定部の判定結果がアクセスを許可しない場合にハードウェア記述の中の特定のハードウェア要素を直接操作するハードウェア要素操作部とを備える。

0037

上記第17、第18の発明によれば、条件判定部による判定の結果、ソフトウェア側からハードウェアへのアクセスが不許可の場合に、ソフトウェア側からハードウェアの外部バス信号などを操作する代わりに、ソフトウェア側からハードウェアの回路内部の要素を直接操作することでそこへ至るハードウェア要素のシミュレーションを不要にし、シミュレーション全体の速度を高速化することができる。

0038

第19の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、コンパイルされたハードウェア記述であってかつそのハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述部と、被デバッグソフトウェアの中に記述されているハードウェア操作コマンド解析するハードウェア操作コマンド解析部と、ハードウェア操作コマンド解析部の解析結果に基づいてハードウェア記述の中のハードウェア要素を直接操作するハードウェア要素操作部とを備える。

0039

第20の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、被デバッグソフトウェアの中に記述されているハードウェア操作コマンドを解析するハードウェア操作コマンド解析部と、ハードウェア操作コマンド解析部の解析結果に基づいてハードウェア記述の中のハードウェア要素を直接操作するハードウェア要素操作部とを備える。

0040

上記第19、第20の発明によれば、ソフトウェア側からハードウェアの回路内部の要素を直接操作することでそこへ至るハードウェア要素のシミュレーションを不要にし、シミュレーション全体の速度を高速化することができる。

0041

第21の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、コンパイルされたハードウェア記述であってかつそのハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述部と、ハードウェア記述部の中に記述されている被デバッグソフトウェア実行部操作コマンドを解析し被デバッグソフトウェア実行部を操作するソフトウェア操作コマンド解析部とを備える。

0042

第22の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、ハードウェア記述の中に記述されている被デバッグソフトウェア実行部操作コマンドを解析し被デバッグソフトウェア実行部を操作するソフトウェア操作コマンド解析部とを備える。

0043

上記第21、第22の発明によれば、ハードウェア側からソフトウェアのシミュレータの内部を直接操作することでハードウェア要素のシミュレーションやソフトウェアのシミュレーションの一部を省略し、シミュレーション全体の速度を高速化することができる。

0044

第23の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、コンパイルされたハードウェア記述であってかつそのハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述部と、テストスクリプトを実行するテストスクリプト実行部と、テストスクリプトに記述されているハードウェア操作コマンドを解析するハードウェア操作コマンド解析部と、ハードウェア操作コマンド解析部の解析結果に基づいてハードウェア記述の中のハードウェア要素を直接操作するハードウェア要素操作部と、テストスクリプトに記述されている被デバッグソフトウェア実行部操作コマンドを解析し被デバッグソフトウェア実行部を操作するソフトウェア操作コマンド解析部とを備える。

0045

第24の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、テストスクリプトを実行するテストスクリプト実行部と、テストスクリプトに記述されているハードウェア操作コマンドを解析するハードウェア操作コマンド解析部と、ハードウェア操作コマンド解析部の解析結果に基づいてハードウェア記述の中のハードウェア要素を直接操作するハードウェア要素操作部と、テストスクリプトに記述されている被デバッグソフトウェア実行部操作コマンドを解析し被デバッグソフトウェア実行部を操作するソフトウェア操作コマンド解析部とを備える。

0046

上記第23、第24の発明によれば、ソフトウェアのシミュレータとハードウェアのシミュレータを連携させてシミュレーションによる自動テストを行う際に、テストスクリプトからソフトウェアのシミュレータの内部やハードウェアのシミュレータの内部を直接操作することでハードウェア要素のシミュレーションやソフトウェアのシミュレーションの一部を省略し、シミュレーション全体の速度を高速化することができる。

0047

第25の発明のハードウェア記述変換プログラムは、ハードウェア記述の中から過去に抽象化作業が完了している部分と同等部分を抽出する既抽象化部抽出部と、ハードウェア記述の中の既抽象化部抽出部による抽出部分を過去に抽象化作業が完了している抽象化された記述に置き換えるハードウェア記述置換え部とを備える。

0048

第26の発明のシステムシミュレーション実行プログラムは、被デバッグソフトウェアを実行する被デバッグソフトウェア実行部と、ハードウェア記述に基づいてハードウェアのシミュレーションを実行するとともに被デバッグソフトウェア実行部と連携して動作するハードウェア記述実行部と、ハードウェア記述実行部で実行されるハードウェア記述の中から過去に抽象化作業が完了している部分と同等部分を抽出する既抽象化部抽出部とを備え、ハードウェア記述実行部は、ハードウェア記述の中の過去に抽象化作業が完了している部分と同等部分を実行するかわりに、過去に抽象化作業が完了している抽象化された記述を実行する。

0049

上記第25、第26の発明によれば、過去に行われた抽象化の結果を利用することにより、抽象化作業を行うことなく速やかにシミュレーションを行うことが可能となる。また、抽象化された記述を実行することによりシミュレーション全体の速度を高速化することができる。

0050

第27の発明のシステムシミュレーション実行プログラムは、相互に関連しながら並行的に動作する複数のシミュレーション実行部と、シミュレーション実行部からアクセスされるイベント予約登録部と、イベント予約登録部に設定されたイベントタイミングに応じてシミュレーションの動きを変更させるシミュレーション実行指示部と、シミュレーション実行状況を記録したものを用いて特定の時点の状態にシミュレーション状態復元させるシミュレーション状態復元部とを備え、一のシミュレーション実行部は他のシミュレーション実行部に関係するイベントを認識したときにイベントタイミングをイベント予約登録部に設定する。

0051

上記第27の発明によれば、例えば2つのシミュレーション実行部が連携して並列に動作する場合、お互いに関係するイベントが発生する時間までそれぞれ独立してシミュレーションを実行し、そのシミュレーションの中であらかじめ特定したイベントの発生時間までに他方のシミュレーションの動きに関わるイベントが発生してしまった場合、双方のシミュレーションの状態をそのイベントが発生したシミュレーション時間におけるシミュレーション状態まで復元するという仕組みにすることで、シミュレーション実行部が同期を取るために頻繁に切り替わることによるオーバヘッドを削減し、シミュレーションを高速化することができる。

発明の効果

0052

近年、システムの複雑化や大規模化が著しく、ソフトウェアのデバッグ工数や検証工数の増大が経営圧迫するほどになっている。また、ソフトウェアのデバッグや検証に用いるハードウェアを必要なタイミングで入手することもますます困難となっている。

0053

本発明によって、ハードウェアとソフトウェアを高速に協調してシミュレーションすることが可能となり、実際のハードウェアが出来上がる前にハードウェアとソフトウェアの相互関係によって発生する複雑な問題を効率よく解決することができる。これにより、新製品開発の期間短縮やコスト削減に貢献することができる。

発明を実施するための最良の形態

0054

以下、本発明の各実施の形態を図面に基づいて説明する。

0055

(実施の形態1)
図1は第1の発明に対応する実施の形態1にかかるシステムシミュレーション実行プログラムを示す。実施の形態1は、ソフトウェアのシミュレータとハードウェアのシミュレータを連携させてシミュレーションする際に、ソフトウェアのデバッグには関係のないハードウェアのシミュレーションを抑止してシミュレーション全体の速度を高速化するものである。たとえば、図28のようにソフトウェア2801とハードウェア2802が接続されており、ハードウェア2802の内部にモジュールM1からM7が図のような関係で接続されているシステムをシミュレーションする場合、ソフトウェア2801の動作に変化を及ぼす可能性のあるモジュールはM1、M2、M3、M6、M7であり、M4やM5のモジュールはソフトウェアの動作には影響を及ぼさない。したがって、ハードウェア2802をシミュレーションする際にソフトウェアのデバッグを行うという観点からは無駄であるM4とM5のモジュールをシミュレーションしなければその分だけ全体のシミュレーション実行速度が向上する。

0056

図1の被デバッグソフトウェア実行部103は被デバッグソフトウェア102を読み込んでそれを実行する。被デバッグソフトウェア実行部103はマイコンの命令をひとつひとつ実行する命令セットシミュレーションISSであってもよいし、あるいは、被デバッグソフトウェア102を中間言語に変換したものを実行するタイプのものでもよい。被デバッグソフトウェア実行部103と実行可能なハードウェア記述部104は連携して動作してソフトウェアとハードウェアを合わせたシミュレーションが可能になっている。実行可能なハードウェア記述部104は、C言語やC++言語などのプログラム言語、あるいは、SystemCやSpecCなどのシステム記述言語、あるいは、VHDLやVerilogHDLなどのハードウェア記述言語を用いてハードウェアの動作を記述したソースコードパソコンワークステーションなどのホストコンピュータ上で実行できるようにコンパイルしたものである。ハードウェア要素不活性化指定部105はハードウェア要素不活性化箇所情報106を読み込んでハードウェア記述部104に対してどの部分のシミュレーションを抑制するかを伝えるものである。ここで、ハードウェア要素とは信号線や回路のノードと呼ばれるものを指すことが多いが、場合によってはモジュールや関数もハードウェア要素として扱う。また、ここで活性化とは信号線や回路のノードが操作されてその状態が変化することを指す。

0057

次に、実施の形態1の動作について説明する。
図29は実行可能なハードウェア記述部104の中でハードウェア要素を不活性化するための処理フローである。ハードウェアのシミュレーションは信号線や回路のノードに対して信号値を設定する処理を頻繁に行っている。コンパイル済の実行可能なハードウェア記述部の場合、ハードウェア記述の中から信号値を設定するために信号設定用の関数を呼びだすため、その関数の先頭でS402の処理を行い、信号値設定を行うかどうか判断させる。抑止信号名リスト2901はハードウェア要素不活性化指定部105によって設定されたデータ列である。ハードウェアのシミュレータでは信号の変化に反応しながらシミュレーションが行われるので、信号値の設定を行ったり行わなかったりして信号変化を制御することによりシミュレーションを抑制できる。

0058

同様に、シミュレータによってはハードウェアの並列性を実現するために、モジュール関数スレッド化して時分割的に実行する場合があり、そのモジュール関数単位でシミュレーションを抑止することも有効である。そこでS404のような並列実行処理のループの中でS406のように抑止モジュールかどうかの判断を行い、抑止ならばモジュール関数を呼び出さないようにすることで、シミュレーションを抑制する。抑止モジュール名リスト2903はハードウェア要素不活性化指定部105によって設定されたデータ列である。

0059

図30はハードウェア要素不活性化箇所情報106の例である。不活性化させたい信号名やノード名、モジュール関数名を指定するものである。また、ハードウェア記述のソースコードの行単位で指定することもできるが、この場合、ハードウェア要素不活性化指定部105は実行可能なハードウェア記述部104のシンボル情報を用いてどの処理を不活性するかを特定し、かつ、実行可能なハードウェア記述部104において、行単位でシミュレーションを制御できるようなコードにあらかじめコンパイルする。

0060

ハードウェア要素不活性化箇所情報106はテキストデータで開発者が記述すればよいが、設定用GUIを通じてハードウェア要素不活性化箇所を指定し、その情報をバイナリ形式で保存したりしてもよい。

0061

ハードウェア要素不活性化指定部105はハードウェア要素不活性化箇所情報106から実行可能なハードウェア記述部104のAPIを通じて抑止信号名リスト2901や抑止モジュール名リスト2903を設定する。

0062

(実施の形態2)
図2は第2の発明に対応する実施の形態2にかかるシステムシミュレーション実行プログラムを示す。実施の形態2は実施の形態1と同様に、ソフトウェアのシミュレータとハードウェアのシミュレータを連携させてシミュレーションする際に、ソフトウェアのデバッグには関係のないハードウェアのシミュレーションを抑止してシミュレーション全体の速度を高速化するものである。実施の形態1との違いは図1の実行可能なハードウェア記述部104が図2のハードウェア記述実行部202になっていることである。ハードウェア記述実行部202はハードウェア記述201を読み込んでその記述内容を実行するもので、一般的にはインタープリタが用いられ、最初に中間言語に変換してからその中間言語を実行することが多いが、実行時に部分的にコンパイルするジャストインタイムコンパイラ方式を採用してもよく、あるいは、ハードウェア記述内容をシミュレータが実行しやすいデータに変換し、それを参照しながら実行してもよい。

0063

ハードウェア記述201の中の被デバッグソフトウェア102のデバッグに不要な部分のシミュレーションを抑制することによってシミュレーションの高速化を図り、ソフトウェアのデバッグを効率よく行うことが可能となる。

0064

(実施の形態3)
図3は第3の発明に対応する実施の形態3にかかるシステムシミュレーション実行プログラムを示す。実施の形態3は、ソフトウェアのシミュレータとハードウェアのシミュレータを連携させてシミュレーションする際に、ソフトウェアのデバッグには関係のないハードウェア部分を自動的に決定して、その部分のシミュレーションを抑止してシミュレーション全体の速度を高速化するものである。たとえば、図31のようにソフトウェア3101がハードウェア3102にアクセスしているシステムをシミュレーションするとする。ここでは、ハードウェア3102の回路内部にN1からN16のノードがあるという前提で説明する。また、矢印の方向で出力側と入力側を表している。ソフトウェア3101はN1に対してノードの設定操作を行い、ノードN16からデータとしてのノード状態を取得するものとする。また、ノード14はLSIの外部端子であり、外部端子の操作をN15によって行っているものとする。ソフトウェアのデバッグにはノードN16の適切な反応が必要であり、ノードN16はソフトウェアからのノードN1へのアクセスによって変化する可能性がある。したがって、N1からN16までのパスのシミュレーションが重要になってくる。一方、N6やN7、N8、N11、N12などのノードのシミュレーションはソフトウェアのデバッグには関係がないために、シミュレーションを省略してもよい。

0065

図3の被デバッグソフトウェア実行部103は被デバッグソフトウェア102を読み込んでそれを実行する。被デバッグソフトウェア実行部103はマイコンの命令をひとつひとつ実行する命令セットシミュレーションISSであってもよいし、あるいは、被デバッグソフトウェア102を中間言語に変換したものを実行するタイプのものでもよい。被デバッグソフトウェア実行部103と実行可能なハードウェア記述部104は連携して動作してソフトウェアとハードウェアを合わせたシミュレーションが可能になっている。実行可能なハードウェア記述部104は、C言語やC++言語などのプログラム言語、あるいは、SystemCやSpecCなどのシステム記述言語、あるいは、VHDLやVerilogHDLなどのハードウェア記述言語を用いてハードウェアの動作を記述したソースコードをパソコンやワークステーションなどのホストコンピュータ上で実行できるようにコンパイルしたものである。

0066

ハードウェア記述構造情報301はハードウェア記述部104で表されているハードウェア要素間の関連を表現したものであり、ハードウェア記述部104のソースコードを構文解析して得たり、あるいはハードウェア記述部104の中にハードウェア要素間の関連を取得する部分があれば、そこから抽出したりして得た情報である。

0067

必須ハードウェア要素リスト303は図31の中のノードN1やN16、N14のようなハードウェアの外部インターフェイスとなるハードウェア要素であり、シミュレーションを行う人がそれを指定したり、あるいは、ハードウェア記述部104のソースコードの中にディレクティブと呼ばれるマーキングをつけておき、ツールなどで自動的にそれを収集したりして作るものである。

0068

不要ハードウェア要素探索部302はハードウェア記述構造情報301や必須ハードウェア要素リスト303を使ってシミュレーションに不要な部分を特定する。図32図33がその処理フローである。図32は不要ハードウェア要素探索処理の概略フローである。最初にS501でソフトウェアのデバッグに有効なハードウェアの回路内部のパスやハードウェア要素を探索する。次に、S502でそれ以外のハードウェア要素をシミュレーション不要の要素とする。図33のS600が有効パスの探索のフローである。必須ハードウェア要素リスト303の中には図31のノードN1やN14のような必須入力ハードウェア要素と、ノードN16のような必須出力ハードウェア要素がリストとして記録されている。S600ではその中の必須出力ハードウェア要素に対して処理を行ってゆく。必須ハードウェア要素リスト303から取り出した必須出力ハードウェア要素をS602で基点要素とし、S603で入力ハードウェア要素の探索を行ってゆく。S604は基点要素から必須入力ハードウェア要素を探索するフローである。このフローでは基点要素に対して出力している要素を遡ってゆき、必須入力ハードウェア要素を探し出す。必須入力ハードウェア要素が見つかれば、それまでのパス上にあるハードウェア要素は有効であり、かつ、それより先のハードウェア要素も有効な要素として記録する。この情報を図3のハードウェア要素不活性化指定部105に伝え、ハードウェア要素不活性化指定部105はハードウェア記述部104のAPIを介してシミュレーションを抑制し、シミュレーション速度の高速化を図る。ハードウェア要素不活性化指定部105は実施の形態1のハードウェア要素不活性化指定部105と同様のものである。

0069

(実施の形態4)
図4は第4の発明に対応する実施の形態4にかかるシステムシミュレーション実行プログラムを示す。実施の形態4は実施の形態3と同様に、ソフトウェアのシミュレータとハードウェアのシミュレータを連携させてシミュレーションする際に、ソフトウェアのデバッグには関係のないハードウェア部分を自動的に決定して、その部分のシミュレーションを抑止してシミュレーション全体の速度を高速化するものである。実施の形態3との違いは、実施の形態2のようにハードウェア記述されたコードをハードウェア記述実行部が実行する点にある。

0070

図4の被デバッグソフトウェア実行部103は被デバッグソフトウェア102を読み込んでそれを実行する。被デバッグソフトウェア実行部103はマイコンの命令をひとつひとつ実行する命令セットシミュレーションISSであってもよいし、あるいは、被デバッグソフトウェア102を中間言語に変換したものを実行するタイプのものでもよい。被デバッグソフトウェア実行部103とハードウェア記述実行部202は連携して動作してソフトウェアとハードウェアを合わせたシミュレーションが可能になっている。ハードウェア記述実行部202はハードウェア記述201を読み込んでその記述内容を実行するもので、一般的にはインタープリタが用いられ、最初に中間言語に変換してからその中間言語を実行することが多いが、実行時に部分的にコンパイルするジャストインタイムコンパイラ方式を採用してもよく、あるいは、ハードウェア記述内容をシミュレータが実行しやすいデータに変換し、それを参照しながら実行してもよい。

0071

ハードウェア記述構造情報301は、実施の形態3と同様にハードウェア記述201で表されているハードウェア要素間の関連を表現したものであり、ハードウェア記述201のソースコードを構文解析して得たり、あるいはハードウェア記述201の中にハードウェア要素間の関連を取得する部分があれば、そこから抽出したりして得た情報である。

0072

不要ハードウェア要素探索部302は、実施の形態3と同様にハードウェア記述構造情報301や必須ハードウェア要素リスト303を使ってシミュレーションに不要な部分を特定する。この情報をハードウェア要素不活性化指定部105に伝え、ハードウェア要素不活性化指定部105はハードウェア記述実行部202のAPIを介してシミュレーションを抑制し、シミュレーション速度の高速化を図る。ハードウェア要素不活性化指定部105は、実施の形態2のハードウェア要素不活性化指定部105と同様のものである。

0073

(実施の形態5)
図5は第5の発明に対応する実施の形態5にかかるシステムシミュレーション実行プログラムを示す。実施の形態5は実施の形態3と同様に、ソフトウェアのシミュレータとハードウェアのシミュレータを連携させてシミュレーションする際に、ソフトウェアのデバッグには関係のないハードウェア部分を自動的に決定して、その部分のシミュレーションを抑止してシミュレーション全体の速度を高速化するものである。実施の形態3との違いは一度ハードウェアのシミュレーションを行い、その際のハードウェア要素の活性状態の記録から、ソフトウェアデバッグにとって真に不要な要素を実施の形態3よりも多く発見し、よりシミュレーション速度を高速にするものである。

0074

たとえば、図34のようにソフトウェア3401がハードウェア3402にアクセスしているシステムをシミュレーションするとする。ここでは、ハードウェア3402の回路内部にN1からN16のノードがあるという前提で説明する。また、矢印の方向で出力側と入力側を表している。ソフトウェア3401はN1に対してノードの設定操作を行い、ノードN16からデータとしてのノード状態を取得するものとする。また、ノード14はLSIの外部端子であり、外部端子の操作をN15によって行っているものとする。ソフトウェアのデバッグにはノードN16の適切な反応が必要であり、ノードN16はソフトウェアからのノードN1へのアクセスによって変化する可能性がある。したがって、N1からN16までのパスのシミュレーションが重要になってくる。一方、N6やN12などのノードのシミュレーションはソフトウェアのデバッグには関係がないために、シミュレーションを省略してもよい。実施の形態3ではN10もN16に出力しているノードであるため必要なハードウェア要素として判断していたが、もしもN10が過去に実施したシミュレーションの過程で何らかの要因により一度も変化しなかった場合、それにつながるN9のノードのシミュレーションもソフトウェアデバッグには不要であると判断できる。このように、一度シミュレーションを行い、その結果から実施の形態3よりもより多くの不要ハードウェア要素を発見し、それを次のシミュレーションで抑止することでシミュレーション速度を上げることができる。

0075

図5の被デバッグソフトウェア実行部103は被デバッグソフトウェア102を読み込んでそれを実行する。被デバッグソフトウェア実行部103はマイコンの命令をひとつひとつ実行する命令セットシミュレーションISSであってもよいし、あるいは、被デバッグソフトウェア102を中間言語に変換したものを実行するタイプのものでもよい。被デバッグソフトウェア実行部103と実行可能なハードウェア記述部104は連携して動作してソフトウェアとハードウェアを合わせたシミュレーションが可能になっている。実行可能なハードウェア記述部104は、C言語やC++言語などのプログラム言語、あるいは、SystemCやSpecCなどのシステム記述言語、あるいは、VHDLやVerilogHDLなどのハードウェア記述言語を用いてハードウェアの動作を記述したソースコードをパソコンやワークステーションなどのホストコンピュータ上で実行できるようにコンパイルしたものである。

0076

ハードウェア要素活性状態取得部501はハードウェア記述部104からの状態設定呼び出しに応じてハードウェア要素活性状態をハードウェア要素活性化履歴記録502に記録する。ここで活性化とは信号線や回路のノードが操作されてその状態が変化することを指し、活性状態とはそれらが変化した状態を指している。図35はハードウェア記述部104でハードウェア要素活性状態取得部501を呼び出す部分を示したものである。ハードウェア記述部104はハードウェアをシミュレーションするものであるため、回路内の信号線に対して値を設定したり、回路を見かけ上平行して動作させるなどのためにモジュール関数などを呼び出したりする。それらの処理S701やS704の直後のS702やS705でハードウェア要素活性状態取得部501を呼び出す。図36はハードウェア要素活性状態取得部501のハードウェア要素活性化状態設定処理の処理フローを示したものである。ハードウェア要素活性化履歴記録502はハードウェア記述部104内の各ハードウェア要素が1度でも操作されたかどうかを記録するものであるため、ハードウェア要素活性状態取得部501ではその判定を行い、初めての操作のときのみハードウェア要素活性化履歴記録502へその状態を記録する。図37はハードウェア要素活性化履歴記録502の例である。これはC言語の共用体型のデータにした場合のものである。ひとつのデータには活性化データタイプと活性化データ名があり、活性化データタイプの内容に応じて活性化データ名のフォーマットが変化する。実際にはデータの検索性を上げるために、ハッシュテーブルを用いるなど、データの持ち方はもっと複雑なものになる。

0077

ハードウェア記述構造情報301は、実施の形態3と同様にハードウェア記述部104で表されているハードウェア要素間の関連を表現したものであり、ハードウェア記述部104のソースコードを構文解析して得たり、あるいはハードウェア記述部104の中にハードウェア要素間の関連を取得する部分があれば、そこから抽出したりして得た情報である。

0078

必須ハードウェア要素リスト303は、実施の形態3と同様に図34の中のノードN1やN16、N14のようなハードウェアの外部インターフェイスとなるハードウェア要素であり、シミュレーションを行う人がそれを指定したり、あるいは、ハードウェア記述部104のソースコードの中にディレクティブと呼ばれるマーキングをつけておき、ツールなどで自動的にそれを収集したりして作るものである。

0079

不要ハードウェア要素探索部503はハードウェア記述構造情報301や必須ハードウェア要素リスト303を使ってシミュレーションに不要な部分を特定する。実施の形態3の不要ハードウェア要素探索部302と同様のフローであるが、ハードウェア要素活性化履歴記録502を反映させるために基点要素から必須入力ハードウェア要素を探索するフローが若干変更されている。図38にそのフローを示す。S906の処理によって活性化された記録のないハードウェア要素の場合、次の接続を探索する。

0080

探索された不要ハードウェア要素の情報を図5のハードウェア要素不活性化指定部105に伝え、ハードウェア要素不活性化指定部105はハードウェア記述部104のAPIを介してシミュレーションを抑制し、シミュレーション速度の高速化を図る。ハードウェア要素不活性化指定部105は、実施の形態1のハードウェア要素不活性化指定部105と同様のものである。

0081

(実施の形態6)
図6は第6の発明に対応する実施の形態6にかかるシステムシミュレーション実行プログラムを示す。実施の形態6は実施の形態5と同様に、ソフトウェアのシミュレータとハードウェアのシミュレータを連携させてシミュレーションする際に、ソフトウェアのデバッグには関係のないハードウェア部分を自動的に決定して、その部分のシミュレーションを抑止してシミュレーション全体の速度を高速化するものである。実施の形態5との違いは、実施の形態2のようにハードウェア記述されたコードをハードウェア記述実行部が実行する点にある。

0082

図6の被デバッグソフトウェア実行部103は被デバッグソフトウェア102を読み込んでそれを実行する。被デバッグソフトウェア実行部103はマイコンの命令をひとつひとつ実行する命令セットシミュレーションISSであってもよいし、あるいは、被デバッグソフトウェア102を中間言語に変換したものを実行するタイプのものでもよい。被デバッグソフトウェア実行部103とハードウェア記述実行部202は連携して動作してソフトウェアとハードウェアを合わせたシミュレーションが可能になっている。ハードウェア記述実行部202はハードウェア記述201を読み込んでその記述内容を実行するもので、一般的にはインタープリタが用いられ、最初に中間言語に変換してからその中間言語を実行することが多いが、実行時に部分的にコンパイルするジャストインタイムコンパイラ方式を採用してもよく、あるいは、ハードウェア記述内容をシミュレータが実行しやすいデータに変換し、それを参照しながら実行してもよい。

0083

さらに、ハードウェア記述実行部202はハードウェアをシミュレーションするものであるため、実施の形態5のハードウェア記述部104と同様に図35のように、回路内の信号線に対して値を設定したり、回路を見かけ上平行して動作させるなどのためにモジュール関数などを呼び出したりする。それらの処理S701やS704の直後のS702やS705でハードウェア要素活性状態取得部501を呼び出す。このハードウェア記述実行部202からの状態設定呼び出しに応じてハードウェア要素活性状態取得部501は、実施の形態5と同様にハードウェア要素活性状態をハードウェア要素活性化履歴記録502に記録する。

0084

ハードウェア記述構造情報301は、実施の形態5と同様にハードウェア記述201で表されているハードウェア要素間の関連を表現したものであり、ハードウェア記述201のソースコードを構文解析して得たり、あるいはハードウェア記述201の中にハードウェア要素間の関連を取得する部分があれば、そこから抽出したりして得た情報である。

0085

不要ハードウェア要素探索部503は、実施の形態5と同様にハードウェア要素活性化履歴記録部502やハードウェア記述構造情報301、必須ハードウェア要素リスト303を使ってシミュレーションに不要な部分を特定する。この情報をハードウェア要素不活性化指定部105に伝え、ハードウェア要素不活性化指定部105はハードウェア記述実行部202のAPIを介してシミュレーションを抑制し、シミュレーション速度の高速化を図る。ハードウェア要素不活性化指定部105は、実施の形態2のハードウェア要素不活性化指定部105と同様のものである。

0086

(実施の形態7)
図7は第7の発明に対応する実施の形態7にかかるシステムシミュレーション実行プログラムを示す。実施の形態7は、ソフトウェアのシミュレータとハードウェアのシミュレータを連携させてシミュレーションする際に、ハードウェアの状態に応じてハードウェア記述の中の一部のシミュレーションを抑止してシミュレーション全体の速度を高速化するものである。たとえば、ある機能の有効フラグがOFFを示しているときは、それに関連する機能全体のシミュレーションを停止するというものである。

0087

図7の被デバッグソフトウェア実行部103は被デバッグソフトウェア102を読み込んでそれを実行する。被デバッグソフトウェア実行部103はマイコンの命令をひとつひとつ実行する命令セットシミュレーションISSであってもよいし、あるいは、被デバッグソフトウェア102を中間言語に変換したものを実行するタイプのものでもよい。被デバッグソフトウェア実行部103と実行可能なハードウェア記述部104は連携して動作してソフトウェアとハードウェアを合わせたシミュレーションが可能になっている。実行可能なハードウェア記述部104は、C言語やC++言語などのプログラム言語、あるいは、SystemCやSpecCなどのシステム記述言語、あるいは、VHDLやVerilogHDLなどのハードウェア記述言語を用いてハードウェアの動作を記述したソースコードをパソコンやワークステーションなどのホストコンピュータ上で実行できるようにコンパイルしたものである。

0088

シミュレーション条件判定はハードウェア要素の変化のタイミングで行うため、ハードウェア記述部104は図39のように信号を操作したり、モジュール関数を呼び出したりする際にハードウェア要素状態取得部701のAPIを呼び出す。ハードウェア要素状態取得部701はハードウェア記述部104からの状態設定呼び出しに応じてシミュレーション条件判定部702を呼び出すとともに、条件判定に必要な情報をハードウェア記述部104から取得してくる。シミュレーション条件判定に用いる条件はシミュレーション条件記録部703に用意されている。図40がシミュレーション条件記録部703の例である。シミュレーション条件記録部703が人間に理解できるような形態で記録されている場合、信号名やノード名がシンボルという英数字で記述されていることがあるので、ハードウェア要素状態取得部701はハードウェア記述シンボル情報704で実際の回路のどの部分にあたるのかの解決を図る。

0089

ハードウェア要素状態取得部701に呼び出されたシミュレーション条件判定部702はシミュレーション条件記録部703の条件を満たしているかどうか判断し、ハードウェア要素の中でシミュレーションを抑止したり、抑止を解除したりするものをハードウェア要素不活性化指定部105に伝える。ハードウェア要素不活性化指定部105は、実施の形態1のハードウェア要素不活性化指定部105と同様のものである。

0090

この実施の形態7についてさらに詳しく説明する。図40のシミュレーション条件記録部703に記録された条件タイプデータは次の条件データに格納されているデータの種類を示すものである。たとえば、条件タイプが「信号状態」であるならば、条件データには「信号名+比較値」が格納されていることを示している。「信号名+比較値」は“SignalA”、“1”、という具合である。条件タイプが「信号変化」ならば、「信号名+変化のタイプ」が格納されていることを示している。「信号名+変化のタイプ」は“SignalB”、“0"という具合で、この場合数字の0はハイレベルからローレベルへの変化を示し、数字が1ならばローレベルからハイレベルへの変化を示す。同様に不活性化要素タイプは次の不活性化要素名の種類を示す。不活性化要素タイプが「信号」ならば不活性化要素名には信号名が格納されている。不活性化要素タイプが「モジュール関数」ならば、モジュール関数名が格納されている。このようなデータの保持はプログラム言語の機能の一つである共用体で実現する。

0091

次に判定の方法を説明すると、たとえば、条件タイプデータが「信号状態」で条件データに“SignalA”、“1”、不活性化要素タイプデータが「信号名」で不活性化要素名に“SignalB”が格納されているとするならば、ハードウェア要素状態取得部701がSignalAの状態を取得し、それが1になっている期間SignalBのシミュレーションを抑止するようにハードウェア要素不活性化指定部105を呼び出す。もう少し具体的に説明すると、ハードウェア要素状態取得部701はどのような条件で判定するかをあらかじめ取得しておき、トリガ対象となる、たとえば“SignalA”に変化があればシミュレーション条件判定部702を信号名とその状態を持って呼び出す。ちなみに、ここで、信号名のかわりにあらかじめ付与したIDを使って呼び出す方が処理時間を短くすることができる。呼び出されたシミュレーション条件判定部702はシミュレーション条件記録部703の内容と照らし合わせて、指定された条件となったかどうかを判定し、指定された条件に合致すると判定されたならば、ハードウェア要素不活性化指定部105に、たとえば信号“SignalB”のシミュレーション停止を指示する。

0092

(実施の形態8)
図8は第8の発明に対応する実施の形態8にかかるシステムシミュレーション実行プログラムを示す。実施の形態8は実施の形態7と同様に、ソフトウェアのシミュレータとハードウェアのシミュレータを連携させてシミュレーションする際に、ハードウェアの状態に応じてハードウェア記述の中の一部のシミュレーションを抑止してシミュレーション全体の速度を高速化するものである。実施の形態7との違いは実施の形態2のようにハードウェア記述されたコードをハードウェア記述実行部が実行する点にある。

0093

図8の被デバッグソフトウェア実行部103は被デバッグソフトウェア102を読み込んでそれを実行する。被デバッグソフトウェア実行部103はマイコンの命令をひとつひとつ実行する命令セットシミュレーションISSであってもよいし、あるいは、被デバッグソフトウェア102を中間言語に変換したものを実行するタイプのものでもよい。被デバッグソフトウェア実行部103とハードウェア記述実行部202は連携して動作してソフトウェアとハードウェアを合わせたシミュレーションが可能になっている。ハードウェア記述実行部202はハードウェア記述201を読み込んでその記述内容を実行するもので、一般的にはインタープリタが用いられ、最初に中間言語に変換してからその中間言語を実行することが多いが、実行時に部分的にコンパイルするジャストインタイムコンパイラ方式を採用してもよく、あるいは、ハードウェア記述内容をシミュレータが実行しやすいデータに変換し、それを参照しながら実行してもよい。

0094

シミュレーション条件判定はハードウェア要素の変化のタイミングで行うため、ハードウェア記述実行部202は図39のように信号を操作したり、モジュール関数を呼び出したりする際にハードウェア要素状態取得部701のAPIを呼び出す。ハードウェア要素状態取得部701はハードウェア記述部104からの状態設定呼び出しに応じてシミュレーション条件判定部702を呼び出すとともに、条件判定に必要な情報をハードウェア記述実行部202から取得してくる。シミュレーション条件判定に用いる条件はシミュレーション条件記録部703に用意されている。図40がシミュレーション条件記録部703の例である。シミュレーション条件記録部703が人間に理解できるような形態で記録されている場合、信号名やノード名がシンボルという英数字で記述されていることがあるので、ハードウェア要素状態取得部701はハードウェア記述実行部202などから必要な情報を取得して実際の回路のどの部分にあたるのかの解決を図る。

0095

ハードウェア要素状態取得部701に呼び出されたシミュレーション条件判定部702はシミュレーション条件記録部703の条件を満たしているかどうか判断し、ハードウェア要素の中でシミュレーションを抑止したり、抑止を解除したりするものをハードウェア要素不活性化指定部105に伝える。ハードウェア要素不活性化指定部105は実施の形態2のハードウェア要素不活性化指定部105と同様のものである。

0096

(実施の形態9)
図9は第9の発明に対応する実施の形態9にかかるシステムシミュレーション実行プログラムを示す。実施の形態9は、ソフトウェアのシミュレータとハードウェアのシミュレータを連携させてシミュレーションする際に、ソフトウェアの状態に応じてハードウェア記述の中の一部のシミュレーションを抑止してシミュレーション全体の速度を高速化するものである。たとえば、被デバッグソフトウェアの中で扱っているある変数が指定された範囲の値ならば、指定されたハードウェアの一部分のシミュレーションを停止するというものである。これにより、ソフトウェアデバッグに必要なハードウェア要素のみをシミュレーションすることができ、シミュレーション速度を改善し、デバッグ効率を上げることができる。

0097

図9の被デバッグソフトウェア実行部103は被デバッグソフトウェア102を読み込んでそれを実行する。被デバッグソフトウェア実行部103はマイコンの命令をひとつひとつ実行する命令セットシミュレーションISSであってもよいし、あるいは、被デバッグソフトウェア102を中間言語に変換したものを実行するタイプのものでもよい。被デバッグソフトウェア実行部103と実行可能なハードウェア記述部104は連携して動作してソフトウェアとハードウェアを合わせたシミュレーションが可能になっている。実行可能なハードウェア記述部104は、C言語やC++言語などのプログラム言語、あるいは、SystemCやSpecCなどのシステム記述言語、あるいは、VHDLやVerilogHDLなどのハードウェア記述言語を用いてハードウェアの動作を記述したソースコードをパソコンやワークステーションなどのホストコンピュータ上で実行できるようにコンパイルしたものである。

0098

被デバッグソフトウェア実行部103は仮想的なマイコンのメモリアクセスレジスタアクセスのタイミングなどでソフトウェア実行状態取得部901を呼び出す。ソフトウェア実行状態取得部901はシミュレーション条件判定部902が必要とするデータを被デバッグソフトウェア実行部103から取得する。シミュレーション条件記録部703が人間に理解できるような形態で記録されている場合、変数名などがシンボルという英数字で表現されていることがあるので、ソフトウェア実行状態取得部901は被デバッグソフトウェア実行部103などからシンボルに関する情報などの必要な情報を取得してソフトウェアの中のどの変数を指すのかの解決を図る。

0099

ソフトウェア実行状態取得部901に呼び出されたシミュレーション条件判定部902はシミュレーション条件記録部703の条件を満たしているかどうか判断し、ハードウェア要素の中でシミュレーションを抑止したり、抑止を解除したりするものをハードウェア要素不活性化指定部105に伝える。ハードウェア要素不活性化指定部105は、実施の形態1のハードウェア要素不活性化指定部105と同様のものである。

0100

この実施の形態9についてさらに詳しく説明する。シミュレーション条件記録部703の内部は実施の形態7とほぼ同じであるが、図40の例と異なる箇所としては、条件タイプデータの“信号状態”や“信号変化”、“モジュール実行”が、条件データの“信号名+比較値”や“信号名+変化のタイプ”、“モジュール名”がなくなり、そのかわりにたとえば条件タイプデータとして“変数状態”や“データアクセス”、“関数呼び出し”が、条件データとして“変数名+比較値”や“開始アドレス終了アドレス”、“関数名"などが加わる。

0101

また、ソフトウェア実行状態取得部901は、条件タイプが“変数状態"ならば、その変数の格納箇所や変数のサイズをデバッグ情報などで解決し、被デバッグソフトウェア実行部103がそのアドレスにアクセスしたときに、アクセスしたデータ内容を取得し、それをシミュレーション条件判定部902へ変数名と共に渡します。条件タイプが”関数名“ならば、被デバッグソフトウェア実行部103が関数をアクセスしたときにアクセスした関数名をシミュレーション条件判定部902へ渡します。なお、関数名のやりとりを行うかわりにあらかじめ定めたIDでやり取りした方が処理速度を向上させることができる。シミュレーション条件判定部902は渡された情報やシミュレーション条件記録部703の内容をもとに判定を行い、不活性化要素タイプや不活性化要素名を使ってハードウェア要素不活性化指定部105に不活性化したい箇所の情報を渡す。

0102

(実施の形態10)
図10は第10の発明に対応する実施の形態10にかかるシステムシミュレーション実行プログラムを示す。実施の形態10は実施の形態9と同様に、ソフトウェアのシミュレータとハードウェアのシミュレータを連携させてシミュレーションする際に、ソフトウェアの状態に応じてハードウェア記述中の一部のシミュレーションを抑止してシミュレーション全体の速度を高速化するものである。実施の形態9との違いは、実施の形態2のようにハードウェア記述されたコードをハードウェア記述実行部が実行する点にある。

0103

図10の被デバッグソフトウェア実行部103は被デバッグソフトウェア102を読み込んでそれを実行する。被デバッグソフトウェア実行部103はマイコンの命令をひとつひとつ実行する命令セットシミュレーションISSであってもよいし、あるいは、被デバッグソフトウェア102を中間言語に変換したものを実行するタイプのものでもよい。被デバッグソフトウェア実行部103とハードウェア記述実行部202は連携して動作してソフトウェアとハードウェアを合わせたシミュレーションが可能になっている。ハードウェア記述実行部202はハードウェア記述201を読み込んでその記述内容を実行するもので、一般的にはインタープリタが用いられ、最初に中間言語に変換してからその中間言語を実行することが多いが、実行時に部分的にコンパイルするジャストインタイムコンパイラ方式を採用してもよく、あるいは、ハードウェア記述内容をシミュレータが実行しやすいデータに変換し、それを参照しながら実行してもよい。

0104

被デバッグソフトウェア実行部103は仮想的なマイコンのメモリアクセスやレジスタアクセスのタイミングなどでソフトウェア実行状態取得部901を呼び出す。ソフトウェア実行状態取得部901はシミュレーション条件判定部902が必要とするデータを被デバッグソフトウェア実行部103から取得する。シミュレーション条件記録部703が人間に理解できるような形態で記録されている場合、変数などがシンボルという英数字で表現されていることがあるので、ソフトウェア実行状態取得部901は被デバッグソフトウェア実行部103などからシンボルに関する情報などの必要な情報を取得してソフトウェアの中のどれを指すのかの解決を図る。

0105

ソフトウェア実行状態取得部901に呼び出されたシミュレーション条件判定部902はシミュレーション条件記録部703の条件を満たしているかどうか判断し、ハードウェア要素の中でシミュレーションを抑止したり、抑止を解除したりするものをハードウェア要素不活性化指定部105に伝える。ハードウェア要素不活性化指定部105は、実施の形態2のハードウェア要素不活性化指定部105と同様のものである。

0106

(実施の形態11)
図11は第11の発明に対応する実施の形態11にかかるシステムシミュレーション実行プログラムを示す。実施の形態11は、ソフトウェアのシミュレータとハードウェアのシミュレータを連携させてシミュレーションする際に、ソフトウェア側からハードウェアへのアクセスの中のデバッグに不要なアクセスを中止することによりシミュレーションを抑止してシミュレーション全体の速度を高速化し、ソフトウェアのデバッグの効率を上げようとするものである。

0107

図11の被デバッグソフトウェア実行部103は被デバッグソフトウェア102を読み込んでそれを実行する。被デバッグソフトウェア実行部103はマイコンの命令をひとつひとつ実行する命令セットシミュレーションISSであってもよいし、あるいは、被デバッグソフトウェア102を中間言語に変換したものを実行するタイプのものでもよい。実行可能なハードウェア記述部104は、C言語やC++言語などのプログラム言語、あるいは、SystemCやSpecCなどのシステム記述言語、あるいは、VHDLやVerilogHDLなどのハードウェア記述言語を用いてハードウェアの動作を記述したソースコードをパソコンやワークステーションなどのホストコンピュータ上で実行できるようにコンパイルしたものである。

0108

被デバッグソフトウェア実行部103はハードウェア内部のレジスタを操作するなどの際に条件判定部1102を呼び出す。条件判定部1102はアクセス制御アドレス記録部1103からアクセスを許可したり不許可にしたりする条件を取得し、図42のようなフローで判定を行う。図41がアクセス制御アドレス記録部1103のデータの例である。アクセス制御アドレス記録部1103が人間に理解できるような形態で記録されている場合、アドレス値などをシンボルという英数字で表現することがあるので、条件判定部1102は被デバッグソフトウェア実行部103などからシンボルに関する情報などの必要な情報を取得してそのシンボルが具体的にどのような数値になるのかの解決を図る。条件判定部1102でアクセス許可が決定された場合、アクセス制御部1101で図43のようなフローで実行可能なハードウェア記述部104のアドレスバス信号データバス信号などを操作してハードウェアへアクセスする。

0109

もう少し詳しく説明する。たとえば、アクセス制御アドレス記録部1103に、開始アドレスデータとして100番地が、終了アドレスデータとして200番地が、アクセスタイプとしてライトが、制御方法として不許可が記述されているものとすると、被デバッグソフトウェア実行部103がハードウェア記述部104をアクセスしようとしたときに、たとえば110番地にデータをライトしようとしたときにそのアドレスが条件判定部1102に伝えられ、条件判定部1102はアクセス制御アドレス記録部1103の内容に照らし合わせて条件を満たしているかどうかを判定する。上記の例では条件を満たしているので条件判定部1102はアクセス制御部1101に不許可を通知し、アクセス制御部1101ではそれを受けて110番地へのアクセスを無視し、ハードウェア記述部104へのアクセスを行わないようにする。

0110

(実施の形態12)
図12は第12の発明に対応する実施の形態12にかかるシステムシミュレーション実行プログラムを示す。実施の形態12は実施の形態11と同様に、ソフトウェアのシミュレータとハードウェアのシミュレータを連携させてシミュレーションする際に、ソフトウェア側からハードウェアへのアクセスの中のデバッグに不要なアクセスを中止することによりシミュレーションを抑止してシミュレーション全体の速度を高速化し、ソフトウェアのデバッグの効率を上げようとするものである。実施の形態11との違いは、実施の形態2のようにハードウェア記述されたコードをハードウェア記述実行部が実行する点にある。

0111

図12の被デバッグソフトウェア実行部103は被デバッグソフトウェア102を読み込んでそれを実行する。被デバッグソフトウェア実行部103はマイコンの命令をひとつひとつ実行する命令セットシミュレーションISSであってもよいし、あるいは、被デバッグソフトウェア102を中間言語に変換したものを実行するタイプのものでもよい。ハードウェア記述実行部202は同様にハードウェア記述201を読み込んでその記述内容を実行するもので、一般的にはインタープリタが用いられ、最初に中間言語に変換してからその中間言語を実行することが多いが、実行時に部分的にコンパイルするジャストインタイムコンパイラ方式を採用してもよく、あるいは、ハードウェア記述内容をシミュレータが実行しやすいデータに変換し、それを参照しながら実行してもよい。

0112

被デバッグソフトウェア実行部103はハードウェア内部のレジスタを操作するなどの際に条件判定部1102を呼び出す。条件判定部1102はアクセス制御アドレス記録部1103からアクセスを許可したり不許可にしたりする条件を取得し、図42のようなフローで判定を行う。図41がアクセス制御アドレス記録部1103のデータの例である。アクセス制御アドレス記録部1103が人間に理解できるような形態で記録されている場合、アドレス値などがシンボルという英数字で表現されることがあるので、条件判定部1102は被デバッグソフトウェア実行部103などからシンボルに関する情報などの必要な情報を取得してシンボルが具体的にどのような数値になるのかの解決を図る。条件判定部1102でアクセス許可が決定された場合、アクセス制御部1101で図43のようなフローで実行可能なハードウェア記述実行部202のアドレスバス信号やデータバス信号などを操作してハードウェアへアクセスする。

0113

(実施の形態13)
図13は第13の発明に対応する実施の形態13にかかるハードウェア記述変換プログラムを示す。実施の形態13は、ハードウェアのシミュレーションをする際に、周期回路のシミュレーション記述を簡略化することによりシミュレーション全体の速度を高速化しようとするものである。ソフトウェアのシミュレーションと連携してシミュレーションすることにより、シミュレータを使ったソフトウェアの効率良いデバッグが可能となる。

0114

例えば、図44のP300のようなVerilogHDLで記述されたカウンタ回路があるとする。この回路は8ビット周期カウンタであり、カウンタ値が100になったときだけ「repeat#signal」が1になる。このような記述ではクロック立ち上がるごとにL08行目から始まるモジュールが評価され、カウンタ値が1ずつカウントアップするので非常に時間のかかるシミュレーションとなる。そこで、クロックの周期が決まっているという前提を考慮して、「repeat#signal」が周期的に変化するようにP301のように書き換える。この記述の場合、信号の変化だけで回路記述が評価され、かつ、カウンタのカウントアップも行われないので高速なシミュレーションが可能となる。

0115

図13のハードウェア記述1301が元の記述であり、ハードウェア記述変換プログラム1302を経由することで、高速なシミュレーションができるハードウェア記述1306が生成される。ハードウェア記述変換プログラム1302の中にはハードウェア記述1301の中の周期回路を抽出する周期回路抽出部1303があり、周期回路抽出後、周期回路の周期時間を算出する周期回路パラメータ算出部1304がある。これらの処理のあとに、周期回路変換部1305でハードウェア記述1301の内容を修正してハードウェア記述1306を作り出す。

0116

図45に周期回路抽出部1303でのカウンタ回路探索処理を示す。カウンタの場合、回路要素に対して加算する箇所があるので、それを含むモジュールを探索する。カウンタを含むモジュールが発見できたならば、一般にカウンタ回路にはクリアなどの初期化処理も含まれているので、その処理も抽出する。また、カウンタの周期を後で算出するためにカウンタクロックの信号名も抽出する。カウンタの動作をONしたりOFFしたりする機能があればその条件式も抽出する。

0117

図46に周期回路抽出部1303の中の周期信号探索処理のフローを示す。一般に、周期的な動作をする信号はカウンタ値の一定の数値で反応するように記述されていることが多いため、カウンタ値と比較処理をしている部分を抽出する。

0118

図47に周期回路パラメータ算出部1304のフローを示す。カウンタクロックの周期やカウンタのビット幅からカウンタの周期を求める。カウンタ値の比較値から周期信号の周期を求める。

0119

図48に周期回路変換部1305の周期回路変換処理のフローを示す。最初にハードウェア記述1301の中のカウンタ回路の式やモジュールを削除し、さらに、周期信号を作っている式も削除する。その後で、元の回路記述と同じ仕様の周期信号が得られるように代わりの式とそれを含むモジュールを作って挿入する。

0120

(実施の形態14)
図14は第14の発明に対応する実施の形態14にかかるシステムシミュレーション実行プログラムを示す。実施の形態14は実施の形態13と同様に、ハードウェアのシミュレーションをする際に、周期回路のシミュレーション記述を簡略化することによりシミュレーション全体の速度を高速化しようとするものである。実施の形態13との違いはハードウェア記述をソースコードレベルで高速化の変換をしてからコンパイルするのではなく、ハードウェア記述されたコードを直接ハードウェア記述実行部が実行する点にある。さらに、ハードウェア記述どおりに実行するのではなく、高速化したい周期回路を実行する代わりに周期回路を用いて作り出される周期信号の仕様を満たす動作だけを行う。

0121

図14の周期回路抽出部1401や周期回路パラメータ算出部1402は実施の形態13のものと同じである。これらで得られた情報をハードウェア記述実行部1303へ渡す。ハードウェア記述実行部1303はハードウェア記述201を解析してから実行するが、抽出された周期回路を実行しようとする際に、その記述の実行を止めて、その代わりに周期信号の変化を起こすようにする。一般的にハードウェア記述実行部では、イベントの予約として将来発生する信号の変化を登録する機構があるので、それを使って周期信号の動きを実現する。これにより、カウンタ回路を元の記述のままシミュレーションをすることなく、簡便なシミュレーションの処理で同様の効果を得ることができ、シミュレーション速度を上げることができる。

0122

(実施の形態15)
図15は第15の発明に対応する実施の形態15にかかるハードウェア記述変換プログラムを示す。実施の形態15は、ハードウェアのシミュレーションをする際に、組合せ回路のシミュレーション記述を簡略化することによりシミュレーション全体の速度を高速化しようとするものである。ソフトウェアのシミュレーションと連携してシミュレーションすることにより、シミュレータを使ったソフトウェアの効率良いデバッグが可能となる。

0123

例えば、図49のP400のようなVerilogHDLで記述された組合せ回路があるとする。この回路は3つの入力信号を相互に演算処理をしてゆくものだが、それぞれの処理に少しずつ異なる遅延時間が入っているので、入力信号の変化によっては出力波形が複雑に変化する可能性がある。また、このように遅延時間を多く含む回路をシミュレーションを行うと細かな信号変化が数多く発生し非常に時間のかかるシミュレーションとなる。一方、ソフトウェアのデバッグのためのハードウェアのシミュレーションを行う場合、厳密な信号変化は必要とされないことも多い。そこで、P401のように書き換えることで出力信号に至る中間の信号のシミュレーションを省略することができ、シミュレーションの高速化を図ることができる。この例では入力信号の変化が出力に伝わる時間がもっとも長いものは入力信号「in#C」に関わるものなので、40+50+30=120の遅延時間で出力信号「out#X」が変化する。

0124

図15のハードウェア記述1301が元の記述であり、ハードウェア記述変換プログラム1302を経由することで、高速なシミュレーションができる変更後のハードウェア記述1306が生成される。ハードウェア記述変換プログラム1302の中にはハードウェア記述1301の中の組合せ回路を抽出する組合せ回路抽出部1501があり、組合せ回路抽出後、組合せ回路の遅延時間を算出する組合せ回路パラメータ算出部1502がある。これらの処理のあとに、組合せ回路変換部1503でハードウェア記述1301の内容を修正してハードウェア記述1306を作り出す。

0125

図50に組合せ回路抽出部1501での組合せ回路探索フローを示す。すべてのモジュールを探索し、代入文を抽出してゆく。

0126

図51に組合せ回路パラメータ算出部1502の中の組合せ回路パラメータ算出処理のフローを示す。組合せ回路抽出部1501で得られた代入文をスコープ注意しながら右辺展開してゆく。展開の際に最大遅延時間を求めながら処理する。展開の最後に代入文の最大遅延時間を記録する。

0127

図52に組合せ回路変換部1503の組合せ回路変換処理のフローを示す。最初にハードウェア記述1301の中の組合せ回路の代入文を削除する。その後で、遅延時間のついた展開後の代入文を挿入する。

0128

(実施の形態16)
図16は第16の発明に対応する実施の形態16にかかるシステムシミュレーション実行プログラムを示す。実施の形態16は実施の形態15と同様に、ハードウェアのシミュレーションをする際に、組合せ回路のシミュレーション記述を簡略化することによりシミュレーション全体の速度を高速化しようとするものである。実施の形態15との違いはハードウェア記述をソースコードレベルで高速化の変換をしてからコンパイルするのではなく、ハードウェア記述されたコードを直接ハードウェア記述実行部が実行する点にある。さらに、ハードウェア記述どおりに実行するのではなく、簡略化した組合せ回路を実行する。

0129

図16の組合せ回路抽出部1501や組合せ回路パラメータ算出部1502は実施の形態15のものと同じである。これらで得られた情報をハードウェア記述実行部1603へ渡す。ハードウェア記述実行部1603はハードウェア記述201を解析してから実行するが、抽出された組合せ回路を実行しようとする際に、その記述の実行を止めて、その代わりに簡略化した組み合わせ回路を実行するようにする。一般的にハードウェア記述実行部では、イベントの予約として将来発生する信号の変化を登録する機構があるので、それを使って組合せ回路が代入する信号の動きを実現する。これにより、元の記述のままシミュレーションをすることなく、簡便なシミュレーションの処理でほぼ同様の効果を得ることができ、シミュレーション速度を上げることができる。

0130

(実施の形態17)
図17は第17の発明に対応する実施の形態17にかかるシステムシミュレーション実行プログラムを示す。実施の形態17は、ソフトウェアのシミュレータとハードウェアのシミュレータを連携させてシミュレーションする際に、ソフトウェア側からハードウェアの外部バス信号などを操作する代わりにソフトウェア側からハードウェアの回路内部の要素を直接操作することでそこへ至るハードウェア要素のシミュレーションを不要にし、これによりシミュレーション全体の速度を高速化してソフトウェアのデバッグの効率を上げようとするものである。

0131

図17の被デバッグソフトウェア実行部103は被デバッグソフトウェア102を読み込んでそれを実行する。被デバッグソフトウェア実行部103はマイコンの命令をひとつひとつ実行する命令セットシミュレーションISSであってもよいし、あるいは、被デバッグソフトウェア102を中間言語に変換したものを実行するタイプのものでもよい。実行可能なハードウェア記述部104は、C言語やC++言語などのプログラム言語、あるいは、SystemCやSpecCなどのシステム記述言語、あるいは、VHDLやVerilogHDLなどのハードウェア記述言語を用いてハードウェアの動作を記述したソースコードをパソコンやワークステーションなどのホストコンピュータ上で実行できるようにコンパイルしたものである。

0132

被デバッグソフトウェア実行部103はハードウェア内部のレジスタを操作するなどの際に条件判定部1102を呼び出す。条件判定部1102はハードウェア要素操作情報記録部1701からハードウェアのバスへのアクセスを許可したり不許可にしたりする条件を取得し、図53のようなフローで判定を行う。図54がハードウェア要素操作情報記録部1701のデータの例であり、この中には判定に使われるバスアクセスの条件やハードウェアのバスのアクセスの代わりに行うハードウェア要素操作の情報などが含まれる。ハードウェア要素操作情報記録部1701のデータ内容が人間に理解できるような形態で記録されている場合、アドレス値がシンボルという英数字で表現されていることがあり、条件判定部1102は被デバッグソフトウェア実行部103やあるいは被デバッグソフトウェアのシンボル情報1703などからシンボルに関する情報などの必要な情報を取得してシンボルが具体的にどのような数値を指すのかの解決を図る。条件判定部1102でアクセス許可が決定された場合、アクセス制御部1101で図55のようなフローで実行可能なハードウェア記述部104のアドレスバス信号やデータバス信号などを操作してハードウェアへアクセスする。一方、条件判定部1102でアクセス不許可が決定された場合、ハードウェアのバスのアクセスに代わって、ハードウェア要素操作部1702がハードウェア記述部104の中のハードウェア要素を図56のようなフローを使って直接操作する。どの要素を操作するかはハードウェア要素操作情報記録部1701に書かれているが、そのデータ内容が人間に理解できるような形態で記録されている場合、信号名やノード名がシンボルという英数字で表現されていることがあり、ハードウェア要素操作部1702はハードウェア記述107をコンパイルした際などに得られるハードウェア記述シンボル情報704などからシンボルに関する情報などの必要な情報を取得してシンボルが回路のどの部分を指すのかの解決を図る。

0133

もう少し詳しく説明する。たとえば、ハードウェア要素操作情報記録部1701に、開始アドレスデータとして200番地、アクセスタイプデータとしてライト、操作するノードのファイル名としてHardware.v、操作するノードのノード名としてmodule1.register1というものが設定されているものとすると、被デバッグソフトウェア実行部103がハードウェア記述部104に対して200番地にアクセスしたときに、条件判定部1102はそれを検出し、アクセス制御部1101に対してアクセス不許可を通知する。さらに、ハードウェア要素操作部1702に対して、module1.register1へ200番地に書き込もうとしたデータをセットする。実際のハードウェアの記述をそのままシミュレーションするとソフトウェア側からmodule1.register1のノードにデータをセットするまでに多くのノードが動作しなければならずシミュレーション時間を必要としてしまうが、この方法では直接module1.register1を操作するので、途中のシミュレーションを省略でき、その分高速になる。このハードウェア要素操作情報記録部1701ではソフトウェア実行部103からのアクセスサイズとノードのサイズが同じということを前提としているが、ソフトウェア実行部103からのアクセスデータのビットとハードウェアのノードとの関連付けができるようにすると利用範囲が広くなる。

0134

また、ハードウェア要素操作部1702の動作を示す図56では、ハードウェア要素操作情報記録部1701のアクセスタイプがライトのときのフローを示しており、リードのときはS2202の内容に代えて「ハードウェア記述部のAPIを呼び出して指定されたハードウェア要素の値を取得する」という内容になる。アクセスタイプがライトのときのS2202に記載された「指定された値」というのは、条件判定部1102が被デバッグソフトウェア実行部103から受け取ったデータであり、図54のハードウェア要素操作情報記録部1701に示された「操作するノードのノード名」のところに、被デバッグソフトウェア実行部103から受け取ったデータを設定する。アクセスタイプがリードのときはハードウェア要素操作情報記録部1701に示された「操作するノードのノード名」のところからノードの状態を取得し、被デバッグソフトウェア実行部103へその状態をリードデータとして返す。

0135

(実施の形態18)
図18は第18の発明に対応する実施の形態18にかかるシステムシミュレーション実行プログラムを示す。実施の形態18は、実施の形態17と同様にソフトウェア側からハードウェアの外部バス信号などを操作する代わりにソフトウェア側からハードウェアの回路内部の要素を直接操作することでそこへ至るハードウェア要素のシミュレーションを不要にし、これによりシミュレーション全体の速度を高速化してソフトウェアのデバッグの効率を上げようとするものである。実施の形態17との違いは、実施の形態2のようにハードウェア記述されたコードをハードウェア記述実行部が実行する点にある。

0136

図18の被デバッグソフトウェア実行部103は被デバッグソフトウェア102を読み込んでそれを実行する。被デバッグソフトウェア実行部103はマイコンの命令をひとつひとつ実行する命令セットシミュレーションISSであってもよいし、あるいは、被デバッグソフトウェア102を中間言語に変換したものを実行するタイプのものでもよい。ハードウェア記述実行部202はハードウェア記述201を読み込んでその記述内容を実行するもので、一般的にはインタープリタが用いられ、最初に中間言語に変換してからその中間言語を実行することが多いが、実行時に部分的にコンパイルするジャストインタイムコンパイラ方式を採用してもよく、あるいは、ハードウェア記述内容をシミュレータが実行しやすいデータに変換し、それを参照しながら実行してもよい。

0137

被デバッグソフトウェア実行部103はハードウェア内部のレジスタを操作するなどの際に条件判定部1102を呼び出す。条件判定部1102はハードウェア要素操作情報記録部1701からハードウェアのバスへのアクセスを許可したり不許可にしたりする条件を取得し、判定を行う。ハードウェア要素操作情報記録部1801のデータ内容が人間に理解できるような形態で記録されている場合、条件判定部1102は被デバッグソフトウェア実行部103やあるいは被デバッグソフトウェアのシンボル情報1703などからシンボルに関する情報などの必要な情報を取得して解決を図る。条件判定部1102でアクセス許可が決定された場合、アクセス制御部1101でハードウェア記述実行部202のアドレスバス信号やデータバス信号などを操作してハードウェアへアクセスする。一方、条件判定部1102でアクセス不許可が決定された場合、ハードウェアのバスのアクセスに代わって、ハードウェア要素操作部1802がハードウェア記述実行部202の中のハードウェア要素を直接操作する。どの要素を操作するかはハードウェア要素操作情報記録部1801に書かれているが、そのデータ内容が人間に理解できるような形態で記録されている場合、ハードウェア要素操作部1802はハードウェア記述実行部202などからシンボルに関する情報などの必要な情報を取得して解決を図る。

0138

(実施の形態19)
図19は第19の発明に対応する実施の形態19にかかるシステムシミュレーション実行プログラムを示す。実施の形態19は、ソフトウェアのシミュレータとハードウェアのシミュレータを連携させてシミュレーションする際に、ソフトウェア側からハードウェアの回路内部の要素を直接操作することでそこへ至るハードウェア要素のシミュレーションを不要にし、これによりシミュレーション全体の速度を高速化してソフトウェアのデバッグの効率を上げようとするものである。たとえば、図57に示すように、実際のソースコードではL09行目のようにマイコンのメモリ空間へ直接アクセスするがシミュレーションでのデバッグのときはL07行目のようにハードウェアのシミュレータの内部の信号に直接数値を設定する。シミュレーションでマイコンのメモリ空間へ直接アクセスすると、たとえハードウェアの中の一部の回路にアクセスするだけでも、マイコンのデータバスなどに接続されている多くのハードウェア要素のシミュレーションが行われることになりその時間が無駄となる。そこで図57のようにハードウェアの内部を直接操作することで無駄なシミュレーションが行われなくなりシミュレーションを高速化することができる。また本発明はハードウェアの操作の処理をソフトウェアのソースコードの中に簡単に記述できる。

0139

図19の被デバッグソフトウェア実行部103は被デバッグソフトウェア102を読み込んでそれを実行する。被デバッグソフトウェア実行部103はマイコンの命令をひとつひとつ実行する命令セットシミュレーションISSであってもよいし、あるいは、被デバッグソフトウェア102を中間言語に変換したものを実行するタイプのものでもよい。実行可能なハードウェア記述部104は、C言語やC++言語などのプログラム言語、あるいは、SystemCやSpecCなどのシステム記述言語、あるいは、VHDLやVerilogHDLなどのハードウェア記述言語を用いてハードウェアの動作を記述したソースコードをパソコンやワークステーションなどのホストコンピュータ上で実行できるようにコンパイルしたものである。

0140

被デバッグソフトウェア実行部103の中のソフトウェア実行処理のフローは図58のようになっている。通常はS2306のように命令を次々と実行していくが、関数呼び出しの命令がある場合、その関数呼び出しがハードウェア操作用の関数かどうかを判断し、それがハードウェア操作用の関数であれば、その関数呼び出しの際に付加された引数の内容を取得し、図19のハードウェア操作コマンド解析部1901を呼び出す。

0141

ハードウェア操作コマンド解析部1901では図59のようなフローで処理を行う。最初に、被デバッグソフトウェア実行部103で得られたハードウェア操作コマンドの文字列からコマンドの種類やそのコマンドのパラメータを分解して取得する。次に、ハードウェア操作コマンド解析部1901は解析したコマンドに応じてハードウェア要素操作部1702を呼び出し、ハードウェア要素操作部1702はハードウェア記述部104の中のハードウェア要素を直接操作する。どの要素を操作するかはハードウェア操作コマンド解析部1901で解析したコマンドパラメータに書かれているが、そのデータ内容が人間に理解できるような形態で記録されている場合、信号名やノード名などがシンボルで表現されていることがあり、ハードウェア要素操作部1702はハードウェア記述部104をコンパイルした際などに得られるハードウェア記述シンボル情報704などからシンボルに関する情報などの必要な情報を取得してシンボルが回路のどの部分を指すのかの解決を図る。

0142

(実施の形態20)
図20は第20の発明に対応する実施の形態20にかかるシステムシミュレーション実行プログラムを示す。実施の形態20は、実施の形態19と同様にソフトウェアのシミュレータとハードウェアのシミュレータを連携させてシミュレーションする際に、ソフトウェア側からハードウェアの回路内部の要素を直接操作することでそこへ至るハードウェア要素のシミュレーションを不要にし、これによりシミュレーション全体の速度を高速化してソフトウェアのデバッグの効率を上げようとするものである。実施の形態19との違いは、実施の形態2のようにハードウェア記述されたコードをハードウェア記述実行部が実行する点にある。

0143

図20の被デバッグソフトウェア実行部103は被デバッグソフトウェア102を読み込んでそれを実行する。被デバッグソフトウェア実行部103はマイコンの命令をひとつひとつ実行する命令セットシミュレーションISSであってもよいし、あるいは、被デバッグソフトウェア102を中間言語に変換したものを実行するタイプのものでもよい。ハードウェア記述実行部202はハードウェア記述201を読み込んでその記述内容を実行するもので、一般的にはインタープリタが用いられ、最初に中間言語に変換してからその中間言語を実行することが多いが、実行時に部分的にコンパイルするジャストインタイムコンパイラ方式を採用してもよく、あるいは、ハードウェア記述内容をシミュレータが実行しやすいデータに変換し、それを参照しながら実行してもよい。

0144

被デバッグソフトウェア実行部103の中のソフトウェア実行処理のフローは図58のようになっている。通常はS2306のように命令を次々と実行していくが、関数呼び出しの命令がある場合、その関数呼び出しがハードウェア操作用の関数かどうかを判断し、それがハードウェア操作用の関数であれば、その関数呼び出しの際に付加された引数を取得し、図20のハードウェア操作コマンド解析部1901を呼び出す。

0145

ハードウェア操作コマンド解析部1901では図59のようなフローで処理を行う。最初に、被デバッグソフトウェア実行部103で得られたハードウェア操作コマンドの文字列からコマンドの種類やそのコマンドのパラメータを分解して取得する。次に、ハードウェア操作コマンド解析部1901は解析したコマンドに応じてハードウェア要素操作部1802を呼び出し、ハードウェア要素操作部1802はハードウェア記述部104の中のハードウェア要素を直接操作する。どの要素を操作するかはハードウェア操作コマンド解析部1901で解析したコマンドパラメータに書かれているが、そのデータ内容が人間に理解できるような形態で記録されている場合、信号名やノード名がシンボルという英数字で表現されることがあり、ハードウェア要素操作部1802はハードウェア記述実行部202などからシンボルに関する情報などの必要な情報を取得してシンボルが回路のどの部分を指すのかの解決を図る。

0146

(実施の形態21)
図21は第21の発明に対応する実施の形態21にかかるシステムシミュレーション実行プログラムを示す。実施の形態21は、ソフトウェアのシミュレータとハードウェアのシミュレータを連携させてシミュレーションする際に、ハードウェア側からソフトウェアのシミュレータの内部を直接操作することでハードウェア要素のシミュレーションやソフトウェアのシミュレーションの一部を省略し、これによりシミュレーション全体の速度を高速化してソフトウェアのデバッグの効率を上げようとするものである。たとえば、ハードウェアのシミュレータ側からソフトウェア側に対して割込みを発生させ、ソフトウェア側が割込み処理を行い、変数の内容をセットするという処理があるとすると、最終目的が変数の内容のセットであるから、ハードウェアの記述の中でソフトウェアの変数の設定ができれば、途中の処理のシミュレーションを省くことができる。図60がVerilogHDLによる記述例であり、L14行目がソフトウェアのシミュレータを操作する部分である。本発明によってハードウェア記述内に簡単にソフトウェアのシミュレータの操作コマンドを記述でき、効率の良いソフトウェアのデバッグが可能となる。

0147

図21の被デバッグソフトウェア実行部103は被デバッグソフトウェア102を読み込んでそれを実行する。被デバッグソフトウェア実行部103はマイコンの命令をひとつひとつ実行する命令セットシミュレーションISSであってもよいし、あるいは、被デバッグソフトウェア102を中間言語に変換したものを実行するタイプのものでもよい。実行可能なハードウェア記述部104は、C言語やC++言語などのプログラム言語、あるいは、SystemCやSpecCなどのシステム記述言語、あるいは、VHDLやVerilogHDLなどのハードウェア記述言語を用いてハードウェアの動作を記述したソースコードをパソコンやワークステーションなどのホストコンピュータ上で実行できるようにコンパイルしたものである。

0148

実行可能なハードウェア記述部104でソフトウェア操作をする関数を呼び出したときに、そのパラメータを伴ってソフトウェア操作コマンド解析部2101を呼び出す。ソフトウェア操作コマンド解析部2101では図61のフローのように、コマンド文字列を解析し、コマンドの種類やパラメータを抽出して被デバッグソフトウェア実行部103を呼び出す。ソフトウェア操作コマンド解析部2101で抽出したコマンドパラメータが人間に理解できるような形態で書かれている場合、変数やアドレス値などがシンボルという英数字で表現されることがあり、被デバッグソフトウェア実行部103は被デバッグソフトウェア102をコンパイルした際などに得られるソフトウェアのシンボル情報1703などからシンボルに関する情報などの必要な情報を取得してシンボルが何を指すのかの解決を図る。

0149

(実施の形態22)
図22は第22の発明に対応する実施の形態22にかかるシステムシミュレーション実行プログラムを示す。実施の形態22は、実施の形態21と同様にソフトウェアのシミュレータとハードウェアのシミュレータを連携させてシミュレーションする際に、ハードウェア側からソフトウェアのシミュレータの内部を直接操作することでハードウェア要素のシミュレーションやソフトウェアのシミュレーションの一部を省略し、これによりシミュレーション全体の速度を高速化してソフトウェアのデバッグの効率を上げようとするものである。実施の形態21との違いは、実施の形態2のようにハードウェア記述されたコードをハードウェア記述実行部が実行する点にある。

0150

図22の被デバッグソフトウェア実行部103は被デバッグソフトウェア102を読み込んでそれを実行する。被デバッグソフトウェア実行部103はマイコンの命令をひとつひとつ実行する命令セットシミュレーションISSであってもよいし、あるいは、被デバッグソフトウェア102を中間言語に変換したものを実行するタイプのものでもよい。ハードウェア記述実行部202はハードウェア記述201を読み込んでその記述内容を実行するもので、一般的にはインタープリタが用いられ、最初に中間言語に変換してからその中間言語を実行することが多いが、実行時に部分的にコンパイルするジャストインタイムコンパイラ方式を採用してもよく、あるいは、ハードウェア記述内容をシミュレータが実行しやすいデータに変換し、それを参照しながら実行してもよい。

0151

ハードウェア記述実行部202でソフトウェア操作をする関数を呼び出したときに、そのパラメータを伴ってソフトウェア操作コマンド解析部2101を呼び出す。ソフトウェア操作コマンド解析部2101では図61のフローのように、コマンド文字列を解析し、コマンドの種類やパラメータを抽出して被デバッグソフトウェア実行部103を呼び出す。ソフトウェア操作コマンド解析部2101で抽出したコマンドパラメータが人間に理解できるような形態で書かれている場合、変数名やアドレス値などがシンボルという英数字で表現されることがあり、被デバッグソフトウェア実行部103は被デバッグソフトウェア102をコンパイルした際などに得られるソフトウェアのシンボル情報1703などからシンボルに関する情報などの必要な情報を取得してシンボルが何を指すのかの解決を図る。

0152

(実施の形態23)
図23は第23の発明に対応する実施の形態23にかかるシステムシミュレーション実行プログラムを示す。実施の形態23は、ソフトウェアのシミュレータとハードウェアのシミュレータを連携させてシミュレーションによる自動テストを行う際に、テストスクリプトからソフトウェアのシミュレータの内部やハードウェアのシミュレータの内部を直接操作することでハードウェア要素のシミュレーションやソフトウェアのシミュレーションの一部を省略し、これによりシミュレーション全体の速度を高速化して自動テストの効率を上げようとするものである。たとえば、ハードウェアやソフトウェアを特定の状態に設定したい場合、ハードウェアの外部信号の操作だけでその状態まで移行するには多くのシミュレーション時間を要する可能性がある。そこで、たとえば図62のようにハードウェアのシミュレータやソフトウェアのシミュレータ内部の状態をテストスクリプトで直接操作することで、すばやくテストに必要な状態を作り出し、システムの検証時間を短縮させる。

0153

図23の被デバッグソフトウェア実行部103は被デバッグソフトウェア102を読み込んでそれを実行する。被デバッグソフトウェア実行部103はマイコンの命令をひとつひとつ実行する命令セットシミュレーションISSであってもよいし、あるいは、被デバッグソフトウェア102を中間言語に変換したものを実行するタイプのものでもよい。実行可能なハードウェア記述部104は、C言語やC++言語などのプログラム言語、あるいは、SystemCやSpecCなどのシステム記述言語、あるいは、VHDLやVerilogHDLなどのハードウェア記述言語を用いてハードウェアの動作を記述したソースコードをパソコンやワークステーションなどのホストコンピュータ上で実行できるようにコンパイルしたものである。

0154

テストスクリプト実行部2301はテストスクリプト2302を読み込んでそれを実行する。テストスクリプトの実行直前にテストスクリプトをコンパイルし、コンパイルしたものを実行してもよい。テストスクリプト実行部2301では図63のフローのように、テストスクリプトのコマンドがハードウェア操作コマンドかソフトウェア操作コマンドかを判別し、それに応じてハードウェア操作コマンド解析部1901かソフトウェア操作コマンド解析部2101を呼び出す。

0155

ハードウェア操作コマンド解析部1901は実施の形態19と同様にコマンドを解析し、ハードウェア要素操作部1702を呼び出し、ハードウェア要素操作部1702はハードウェア記述部104のAPIを呼び出してハードウェアのシミュレーションを制御する。

0156

ソフトウェア操作コマンド解析部2101は実施の形態21と同様にコマンドを解析し、ソフトウェア実行部103を呼び出してソフトウェアのシミュレーションを制御する。

0157

(実施の形態24)
図24は第24の発明に対応する実施の形態24にかかるシステムシミュレーション実行プログラムを示す。実施の形態24は実施の形態23と同様にソフトウェアのシミュレータとハードウェアのシミュレータを連携させてシミュレーションによる自動テストを行う際に、テストスクリプトからソフトウェアのシミュレータの内部やハードウェアのシミュレータの内部を直接操作することでハードウェア要素のシミュレーションやソフトウェアのシミュレーションの一部を省略し、これによりシミュレーション全体の速度を高速化して自動テストの効率を上げようとするものである。実施の形態23との違いは実施の形態2のようにハードウェア記述されたコードをハードウェア記述実行部が実行する点にある。

0158

図24の被デバッグソフトウェア実行部103は被デバッグソフトウェア102を読み込んでそれを実行する。被デバッグソフトウェア実行部103はマイコンの命令をひとつひとつ実行する命令セットシミュレーションISSであってもよいし、あるいは、被デバッグソフトウェア102を中間言語に変換したものを実行するタイプのものでもよい。ハードウェア記述実行部202はハードウェア記述201を読み込んでその記述内容を実行するもので、一般的にはインタープリタが用いられ、最初に中間言語に変換してからその中間言語を実行することが多いが、実行時に部分的にコンパイルするジャストインタイムコンパイラ方式を採用してもよく、あるいは、ハードウェア記述内容をシミュレータが実行しやすいデータに変換し、それを参照しながら実行してもよい。

0159

テストスクリプト実行部2301はテストスクリプト2302を読み込んでそれを実行する。テストスクリプトの実行直前にテストスクリプトをコンパイルし、コンパイルされたものを実行してもよい。テストスクリプト実行部2301では図63のフローのように、テストスクリプトのコマンドがハードウェア操作コマンドかソフトウェア操作コマンドかを判別し、それに応じてハードウェア操作コマンド解析部1901かソフトウェア操作コマンド解析部2101を呼び出す。

0160

ハードウェア操作コマンド解析部1901は実施の形態20と同様にコマンドを解析し、ハードウェア要素操作部1802を呼び出し、ハードウェア要素操作部1802はハードウェア記述実行部202のAPIを呼び出してハードウェアのシミュレーションを制御する。

0161

ソフトウェア操作コマンド解析部2101は実施の形態22と同様にコマンドを解析し、ソフトウェア実行部103を呼び出してソフトウェアのシミュレーションを制御する。

0162

(実施の形態25)
図25は第25の発明に対応する実施の形態25にかかるハードウェア記述変換プログラムを示す。実施の形態25は、ハードウェア記述を修正した際に、修正前のハードウェア記述に対して高速化のために行った抽象化処理を修正後のハードウェア記述に反映させるためのプログラムである。これにより、時間のかかる抽象化処理を必要最小限にとどめることができ、シミュレータを使った効率良いデバッグが可能となる。

0163

図25新ハードウェア記述2501が何らかの理由で修正した後のハードウェア記述であり、その他に修正前のハードウェア記述に対して行った抽象化に関する情報として抽象化済みハードウェア記述2502と図64のような抽象化箇所記録2503がある。抽象化済みハードウェア記述2502にはたとえば図44のP301のL08行目からL26行目までが記録される。

0164

ハードウェア記述変換プログラム2504を経由することで、高速なシミュレーションができる変更後のハードウェア記述1306が生成される。ハードウェア記述変換プログラム2504の中にはハードウェア記述2501の中の既抽象化箇所を抽出する既抽象化部抽出部2505がある。この処理のあとに、ハードウェア記述置換え部2506で新ハードウェア記述2501の内容を修正してハードウェア記述1306を作り出す。

0165

まず、既抽象化部抽出部2505は図65のようなフローで抽象化箇所記録2503の情報を用いて新ハードウェア記述2501の中から既に抽象化されている部分を探し出し、抽象化部抽出記録2507へ記録する。

0166

次に、ハードウェア記述置換え部2506は図66に示すように新ハードウェア記述2501の内容をコピーし、その中の抽象化される前のコードを抽象化部抽出記録2507を使って削除した後に、抽象化済みハードウェア記述2502の内容を取得し、変更後ハードウェア記述1305へ挿入する。

0167

このようにして、既に行われた抽象化の結果を利用することにより、抽象化作業を行うことなく速やかにシミュレーションを行うことが可能となる。

0168

(実施の形態26)
図26は第26の発明に対応する実施の形態26にかかるシステムシミュレーション実行プログラムを示す。実施の形態26は実施の形態25と同様にハードウェア記述を修正した際に、修正前のハードウェア記述に対して高速化のために行った抽象化結果を使ってハードウェア記述を実行し、抽象化作業を省略して効率よくデバッグを行うことができるものである。実施の形態25との違いはハードウェア記述をソースコードレベルで高速化のための変換をしてからコンパイルするのではなく、ハードウェア記述されたコードを直接ハードウェア記述実行部が実行する点にある。さらに、ハードウェア記述どおりに実行するのではなく、抽象化した回路を実行する。

0169

図26の新ハードウェア記述2501が何らかの理由により修正した後のハードウェア記述であり、その他に修正前のハードウェア記述に対して行った抽象化に関する情報として抽象化済みハードウェア記述2502と図64のような抽象化箇所記録2503がある。抽象化済みハードウェア記述2502にはたとえば図44のP301のL08行目からL26行目までが記録される。あるいは、ハードウェア記述実行部2601が実行しやすいデータ形式で記録していてもよい。

0170

まず、既抽象化部抽出部2505は図65のようなフローで抽象化箇所記録2503の情報を用いて新ハードウェア記述2501の中から既に抽象化されている部分を探し出し、抽象化部抽出記録2507へ記録する。

0171

次に、ハードウェア記述実行部2601は図67に示すフローのように新ハードウェア記述2501の内容を実行する。実行の際に、抽象化部抽出記録2507をもとに過去に抽象化されたハードウェア記述かどうかを判定し、過去に抽象化されたものであれば、抽象化されたものを実行する。

0172

このようにして、既に行われた抽象化の結果を利用することにより、抽象化作業を行うことなく速やかにシミュレーションを行うことが可能となる。

0173

(実施の形態27)
図27は第27の発明に対応する実施の形態27にかかるシミュレーションシステム実行プログラムを示す。実施の形態27は、2つのシミュレータが連携して並列に動作する場合、お互いに関係するイベントが発生する時間までそれぞれ独立してシミュレーションを実行し、そのシミュレーションの中であらかじめ特定したイベントの発生時間までに他方のシミュレーションの動きに関わるイベントが発生してしまった場合、双方のシミュレーションの状態をそのイベントが発生したシミュレーション時間におけるシミュレーション状態まで復元するという仕組みにすることで、シミュレーション実行部が同期を取るために頻繁に切り替わることによるオーバヘッドを削減し、シミュレーションを高速化することが可能となるものである。

0174

図27のシミュレーション実行部A2701とシミュレーション実行部B2702は連携し、かつ、並列実行するものである。一般的には短いサイクルで相互に実行を切り替えることで同期をとってゆくが、本発明ではそれよりも長い時間間隔で切り替えたり、イベントの発生のタイミングで切り替えたりする。シミュレーション実行部2701、2702はそれぞれ、他方のシミュレーション実行に関係するイベントが発生することを認識したときは、そのイベントをイベント予約登録部2703へ登録し、イベント予約登録部2703は図68のようなイベント予約情報2704を登録する。

0175

シミュレーション実行指示部2705は図70のフローのように、イベント予約情報2704の中のもっとも近い将来に発生するイベントの情報を取得して、そのイベントが発生したシミュレーション時間までシミュレーションを独立して進めるようにシミュレーション実行部A2701とシミュレーション実行部B2702へ指示する。ただし、その間隔があまり大きいと、シミュレーション時間を戻して復元しなければならない事態が発生したときのペナルティが大きくなるので、図69のようなシミュレーション切り替え時間間隔情報2710の情報に基づいて、間隔が大きすぎないように調整する。

0176

シミュレーション実行部2701、2702は図71のフローのように動作する。シミュレーション実行の内容は実行履歴記録部2706や2707へ図72のような内容で記録する。シミュレーション実行部がシミュレーション実行中に他方のシミュレーション実行部に関わるイベントが発生したとき、それがシミュレーション実行指示部2705に指示された時間よりも近いのであれば、それをシミュレーション実行指示部2705へ伝え、シミュレーション実行指示部2705はシミュレーション状態復元部A2708あるいはシミュレーション状態復元部B2709に対してシミュレーション状態を復元するように指示し、復元後にシミュレーションを継続して実行するように指示する。

0177

本発明にかかるシミュレーションシステムは、ハードウェアのシミュレータとソフトウェアのシミュレータを協調しながら高速にシミュレーションできるものであり、マイクロプロセッサを使用する各種電子機器のハードウェアやソフトウェア開発に有用である。また、マイクロプロセッサ自身の開発やマイクロプロセッサに接続される周辺LSIの開発においても有用である。

図面の簡単な説明

0178

本発明の実施の形態1におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態2におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態3におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態4におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態5におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態6におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態7におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態8におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態9におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態10におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態11におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態12におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態13におけるハードウェア記述変換プログラムの例を示す図
本発明の実施の形態14におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態15におけるハードウェア記述変換プログラムの例を示す図
本発明の実施の形態16におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態17におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態18におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態19におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態20におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態21におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態22におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態23におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態24におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態25におけるハードウェア記述変換プログラムの例を示す図
本発明の実施の形態26におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態27におけるシステムシミュレーション実行プログラムの例を示す図
本発明の実施の形態1のハードウェア構成の例を示す図
本発明の実施の形態1のハードウェア記述部のフローを示す図
本発明の実施の形態1のハードウェア要素不活性化箇所情報の例を示す図
本発明の実施の形態3のハードウェア構成の例を示す図
本発明の実施の形態3の不要ハードウェア要素探索部のフローを示す図
本発明の実施の形態3の不要ハードウェア要素探索部のフローを示す図
本発明の実施の形態5のハードウェア構成の例を示す図
本発明の実施の形態5のハードウェア記述部のフローを示す図
本発明の実施の形態5のハードウェア要素活性状態取得部のフローを示す図
本発明の実施の形態5のハードウェア要素活性化履歴記録の例を示す図
本発明の実施の形態5の不要ハードウェア要素探索部のフローを示す図
本発明の実施の形態7のハードウェア記述部のフローを示す図
本発明の実施の形態7のシミュレーション条件記録部の例を示す図
本発明の実施の形態11のアクセス制御アドレス記録部の例を示す図
本発明の実施の形態11の条件判定部のフローを示す図
本発明の実施の形態11のアクセス制御部のフローを示す図
本発明の実施の形態13のコード例を示す図
本発明の実施の形態13の周期回路抽出部のフローを示す図
本発明の実施の形態13の周期回路抽出部のフローを示す図
本発明の実施の形態13の周期回路パラメータ算出部のフローを示す図
本発明の実施の形態13の周期回路変換部のフローを示す図
本発明の実施の形態15のコード例を示す図
本発明の実施の形態15の組合せ回路抽出部のフローを示す図
本発明の実施の形態15の組合せ回路パラメータ算出部のフローを示す図
本発明の実施の形態15の組合せ回路変換部のフローを示す図
本発明の実施の形態17の条件判定部のフローを示す図
本発明の実施の形態17のハードウェア要素操作情報記録部の例を示す図
本発明の実施の形態17のアクセス制御部のフローを示す図
本発明の実施の形態17のハードウェア要素操作部のフローを示す図
本発明の実施の形態19のコード例を示す図
本発明の実施の形態19の被デバッグソフトウェア実行部のフローを示す図
本発明の実施の形態19のハードウェア操作コマンド解析部のフローを示す図
本発明の実施の形態21のコード例を示す図
本発明の実施の形態21のソフトウェア操作コマンド解析部のフローを示す図
本発明の実施の形態23のコード例を示す図
本発明の実施の形態23のテストスクリプト実行部のフローを示す図
本発明の実施の形態25の抽象化箇所記録の例を示す図
本発明の実施の形態25の既抽象化部抽出部のフローを示す図
本発明の実施の形態25のハードウェア記述置換え部のフローを示す図
本発明の実施の形態26のハードウェア記述実行部のフローを示す図
本発明の実施の形態27のイベント予約情報の例を示す図
本発明の実施の形態27の切り替え時間間隔情報の例を示す図
本発明の実施の形態27のシミュレーション実行指示部のフローを示す図
本発明の実施の形態27のシミュレーション実行部のフローを示す図
本発明の実施の形態27の実行履歴記録の例を示す図

符号の説明

0179

101システムシミュレーション実行プログラム
102被デバッグソフトウェア
103 被デバッグソフトウェア実行部
104 実行可能なハードウェア記述部
105ハードウェア要素不活性化指定部
107 ハードウェア記述
108コンパイラ
201 ハードウェア記述
202 ハードウェア記述実行部
302 不要ハードウェア要素探索部
501 ハードウェア要素活性状態取得部
702シミュレーション条件判定部
901ソフトウェア実行状態取得部
1101アクセス制御部
1102条件判定部
1302 ハードウェア記述変換プログラム
1303周期回路抽出部
1304 周期回路パラメータ抽出
1305 周期回路変換部
1306 変更後ハードウェア記述
1307 コンパイラ
1501組合せ回路抽出部
1502 組合せ回路パラメータ算出部
1503 組合せ回路変換部
1701 ハードウェア要素操作情報記録部
1702 ハードウェア要素操作部
1901ハードウェア操作コマンド解析部
2101ソフトウェア操作コマンド解析部
2301テストスクリプト実行部
2504 ハードウェア記述変換プログラム
2505 既抽象化部抽出部
2506 ハードウェア記述置換え部

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ