JP2000035898A - システムシミュレータおよびシステムシミュレーション方法 - Google Patents

システムシミュレータおよびシステムシミュレーション方法

Info

Publication number
JP2000035898A
JP2000035898A JP10202625A JP20262598A JP2000035898A JP 2000035898 A JP2000035898 A JP 2000035898A JP 10202625 A JP10202625 A JP 10202625A JP 20262598 A JP20262598 A JP 20262598A JP 2000035898 A JP2000035898 A JP 2000035898A
Authority
JP
Japan
Prior art keywords
model
hardware
simulation
virtual
function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP10202625A
Other languages
English (en)
Other versions
JP3189793B2 (ja
Inventor
Yutaka Fukushima
裕 福島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP20262598A priority Critical patent/JP3189793B2/ja
Publication of JP2000035898A publication Critical patent/JP2000035898A/ja
Application granted granted Critical
Publication of JP3189793B2 publication Critical patent/JP3189793B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

(57)【要約】 【課題】 マイコンを使用する電子機器のシステムシミ
ュレーションにおいて、検証時間の短縮と検証内容の充
実を図る。 【解決手段】 ハードウェアシミュレータ2は、電子機
器の周辺回路をソフトウェアで模擬するハードウェアモ
デル20と、マイコンシミュレータ1との間で情報授受
の整合をとるシステムI/Fモデル8とから成り、電子
機器のハードウェアをソフトウェアで検証する。マイコ
ンシミュレータ1のCPUモデル1はターゲットプログ
ラムを検証する。このとき、ハードウェア機能関数I/
Fモデル5を介して、仮想モデル7に登録されたハード
ウェアシミュレーションの結果を適時に利用する。機能
関数I/Fモデル5は、CPUモデル42からの機能関
数のうち機能関数選択テーブル3に登録されているもの
については仮想モデル7を利用し、そうでないものにつ
いてはバスI/Fモデル6により情報授受の整合をとっ
てハードウェアシミュレータ2を使用する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マイクロコンピュ
ータを搭載した電子機器のシステムシミュレータおよび
システムシミュレーション方法に関する。
【0002】
【従来の技術】電子機器のセットメーカーは、マイクロ
コンピュータ(以下、マイコンという)を搭載した電子
機器の開発において、新しい機能をセットに盛り込み他
社との差別化を図ろうとすることが多い。このとき、セ
ットメーカーは、開発期間を短縮するためには、新しい
マイコンが完成する前に、電子機器に搭載するかどうか
を検討する必要がある。
【0003】しかしながら、セットメーカーは、新製品
のマイコンのサンプルを入手しなければハードウェアの
開発を開始できない。開発できたとしても、マイコンと
周辺回路とのインタフェース部で不具合が発見され、電
子機器の回路構成を再設計しなければならない場合も多
い。
【0004】また、マイコンと周辺回路を同一チップ上
に組み込んだシステムLSIにおいては、試作したシス
テムLSIを評価してから、不具合を変更して再度試作
したのでは開発期間が非常に延びてしまい。商機を逃し
かねない。また、開発に要する費用も膨大になり、損失
が大きい。
【0005】そこで、ソフトウェアの検証を行うマイコ
ンシミュレータと、ハードウェアを検証するハードウェ
アシミュレータを合体させて(このような合体されたシ
ミュレータをシステムシミュレータという)、シミュレ
ーション装置で動作させ、ハードウェアのプロトタイプ
が出来ていない開発初期の段階からソフトウェアとハー
ドウェアの双方を同時に、しかも短期間に検証と修正を
することが極めて重要になってきた。
【0006】マイコンシミュレータは、電子機器を構成
するマイコンの機能をシミュレーションするCPUモデ
ルシミュレータと、電子機器を機能させるプログラム
(以下、ターゲットプログラムという)を記憶するプロ
グラムメモリとから構成される。このターゲットプログ
ラムをCPUモデルシミュレータ上で実行し、ターゲッ
トプログラムが当初意図した順序で動作するか、あるい
は、プログラムが暴走したり、止まってしまうことがな
いかなどを検証する。
【0007】ハードウェアシミュレータは、CPUの周
辺に接続したメモリやI/Oポート、論理回路(以下、
周辺回路と記す)などが期待通りに動作するか否かを検
証する。この検証を実行するため、ハードウェアを構成
するロジックやトランジスタの接続情報や、これらの駆
動能力、寄生容量、遅延時間など各種のパラメータがハ
ードウェアシミュレータに記憶される。
【0008】ハードウェアシミュレータは、シミュレー
ションするとき、ある周辺回路に所定の信号を入力し、
その信号を接続情報をもとに周辺回路を構成するトラン
ジスタに入力し、その出力を次のトランジスタに入力す
るといった処理を繰り返し、周辺回路からどのような信
号がどのようなタイミングで出力されるかを演算によっ
て求める。
【0009】この演算量は膨大であるため、1つの信号
を1つの周辺回路に入力し、その結果を得るのに数10
〜100msかかる。これに対し、CPUモデルシミュ
レータは、プログラムを1行実行するのに、数10μs
で完了する。このように、ハードウェアシミュレータと
組み合わせてソフトウェアのシミュレーションを実行す
る場合、ハードウェアシミュレータの演算速度でシミュ
レーション時間が決められてしまい、非常に長時間を要
していた。
【0010】例えば、通常のキースキャンは、出力ポー
トからキーマトリクスに信号を出力し、キーマトリクス
からの信号を入力ポートを通して入力することで、押下
されたキーを探す処理である。出力ポートにはキーマト
リクスの行数または列数に相当する回数だけ信号を出力
する必要がある。入力ポートについては、キーマトリク
スの行数または列数を入力ポートの端子数で除算した回
数だけ信号を入力する必要がある。マイコンシミュレー
タとハードウェアシミュレータ間で、1回の入力または
出力処理で、後述のように、4回の通信が必要である。
例えば、キーマトリクスが4行×4列の場合、8回の入
出力を実行しなければならない。従って、1回のキース
キャンあたり、通信回数は8×4=32回である。普通
は、1回のキースキャンでキー押下を検出されることは
なく、エンドレスで繰り返されるため、10回繰り返し
たとしても、320回の通信が発生する。
【0011】実際のキースキャン・プログラムは、チャ
タリング等による誤入力を防止するため、一度のキー押
下を検出するだけではなく、一定時間経過後に再度キー
スキャンを実行し、同じキーが押され続けていることを
確認し、押下されたキーを特定する。この処理をハード
ウェアシミュレータで行うと、前述のように数100回
〜数1000回の通信が必要であり、1つのキー押下を
検出するだけで数分を要することになる。
【0012】このため、従来はプログラムとハードウェ
アの検証を別々に実行したり、周辺回路は実際に組み立
て、これをマイコンシミュレータに接続して検証するな
どしていた。
【0013】
【発明が解決しようとする課題】しかしながら、上述し
た従来のシミュレーション方法のうちの前者では、周辺
回路に係わる命令のシミュレーションが十分に検証でき
ず、電子機器に組み立ててから問題を発見することがあ
った。
【0014】また、後者は、周辺回路を組み立てる工数
や部品代が必要であり、問題が見つかったときは、再度
組み立て直さなければならない。また、周辺回路をIC
に組み込むとタイミングがずれることもあり、IC化し
たときに初めて問題に気付くこともあった。
【0015】本発明の目的は、電子機器を構成するハー
ドウェアの検証を、電子機器に組み込むプログラムの検
証と同時に実行することで、検証時間の短縮と、検証内
容の充実を図ったシステムシミュレータおよびシステム
シミュレーション方法を提供することにある。
【0016】
【課題を解決するための手段】本発明のシステムシミュ
レータは、マイクロコンピュータを使用する電子機器の
プログラムおよびハードウェアをシミュレーション装置
上で一体的に検証するシステムシミュレータにおいて、
前記プログラムに基づいて前記ハードウェアをソフトウ
ェアで検証するハードウェアシミュレータと、前記ハー
ドウェアに係わる前記プログラム命令を前記ハードウェ
アと等価的にソフトウェアで処理する仮想モデルシミュ
レータと、前記ハードウェアシミュレータまたは前記仮
想モデルシミュレータの出力を適時に利用しながら前記
プログラムをソフトウェアで検証するCPUモデルシミ
ュレータとを具備することを特徴とする。
【0017】また、本発明のシステムシミュレーション
方法は、マイクロコンピュータとこれに接続される周辺
回路とを有する電子機器のターゲットプログラムおよび
周辺回路のハードウェアをシミュレーション装置上で一
体的に検証するシステムシミュレーション方法におい
て、前記ハードウェアの接続情報に基づいて周辺回路の
処理をシミュレーションする第1ステップと、前記ハー
ドウェアの論理機能に基づいて周辺回路の処理を等価的
にシミュレーションする第2ステップとを有し、前記第
1または第2ステップのいずれかを選択してマイクロコ
ンピュータの入出力命令をシミュレーションする第3ス
テップとを備えたことを特徴とする。
【0018】
【発明の実施の形態】次に、本発明の実施の形態につい
て説明する。
【0019】本発明のシステムシミュレータは、マイク
ロコンピュータを使用する電子機器のプログラムおよび
ハードウェアをシミュレーション装置上で一体的に検証
するシステムシミュレータにおいて、前記プログラムに
基づいて前記ハードウェアをソフトウェアで検証するハ
ードウェアシミュレータと、該ハードウェアの検証結果
を適時に利用しながら前記プログラムをソフトウェアで
検証するマイコンシミュレータとから成ることを特徴と
する。
【0020】また、本発明のシステムシミュレーション
方法は、マイクロコンピュータを使用する電子機器のプ
ログラムおよびハードウェアをシミュレーション装置上
で一体的に検証するシステムシミュレーション方法にお
いて、該システムシミュレーションの母体装置の読み出
し専用メモリに、前記プログラムを書き込む手順と、前
記母体装置のメモリに、前記プログラムを検証するマイ
コンシミュレーションプログラム,前記プログラムに基
づいて前記ハードウェアを検証するハードウェアシミュ
レーションプログラム,CPU情報,ハードウェア接続
情報,仮想モデル情報,仮想モデル選択情報およびシミ
ュレータ間インタフェース情報を書き込んで該母体装置
をシミュレーション装置化する手順と、前記プログラム
にしたがってシステムシミュレーションを実行する手順
とから成り、前記仮想モデル情報に前記ハードウェアの
検証結果を含ませる手順と、前記ハードウェアの検証の
うち前記仮想モデル選択情報で指定された部分について
は前記マイコンシミュレーションプログラムにより代替
して実行する手順とを有することを特徴とする。
【0021】以下、本発明の実施例について図面を参照
して詳細に説明する。
【0022】[第1実施例] 構成の概要 図1は本発明のシステムシミュレータの第1実施例を示
す機能ブロック図である。本システムシミュレータは、
マイコンシミュレータ1とハードウェアシミュレータ2
とから成る。また、本シミュレータは、シミュレーショ
ンの母体装置となる、例えばワークステーションにロー
ドされて実行されるが、図1におけるユーザインタフェ
ース(GUI)18は、そのようなシミュレーション装
置が提供するユーザインタフェースである。なお、これ
以降、インタフェースはI/Fと記すこととする。
【0023】ハードウェアシミュレータ2は、シミュレ
ーション対象となる電子機器のハードウェアをソフトウ
ェアで実現したハードウェアモデル20を中核とし、本
電子機器を制御するマイクロプロセッサ(以下CPUと
記す)に接続される周辺回路の接続情報や各種パラメー
タなどが記憶されており、入力されたデータに対して、
期待されるデータが、期待されるタイミングで出力され
るか、すなわち、論理的な矛盾や動作タイミングの矛盾
がないかを検証する。さらに、ハードウェアモデル20
は、図3にその具体例を示すように、各周辺回路の機能
記述モデルから構成される。
【0024】マイコンシミュレータ1は、検証するプロ
グラムを1行単位に読み込んで、プログラムの記述や処
理順序に問題ないかを検証し、CPUモデル4,機能関
数I/Fモデル5,バスI/Fモデル6,仮想モデル7
および機能関数選択テーブル3を有する。
【0025】CPUモデル4は、CPUの機能をソフト
ウェアで実現したもので、次の処理を実行する。 ・プログラムカウンタPCで指定されるメモリアドレス
のデータを読み込む。 ・データ(オペレーションコードあるいはオペランド)
を解読する。 ・解読結果に基づきその命令を実行する。 ・周辺回路に関係する命令の場合、機能関数を生成す
る。 ・機能関数I/Fモデル5に機能関数を渡す。
【0026】機能関数I/Fモデル5は、ハードウェア
シミュレータ2を使うか、仮想モデル7を使うか、その
選択を判断し、選択された方に必要な情報を渡し、また
選択された方から必要な情報を得る。得た結果はCPU
モデル4に渡す。なお、仮想モデル7を選択するかどう
かの判断は、機能関数選択テーブル(具体例を図6に示
す)3をもとに行う。機能関数選択テーブル3は、予め
システム開発者が作成し、本システムシミュレーション
装置に組み込んであるものとする。
【0027】仮想モデル7は、本発明の特徴部分の一つ
であり、本実施例では、ハードウェアモデル20を構成
する機能記述モデルのうち、予め設定されたものから成
る。本実施例では、ある周辺回路のハードウェアシミュ
レーションの結果が他の周辺回路のシミュレーションに
影響を及ぼさないものについてのみ仮想モデル7に登録
できる。
【0028】バスI/Fモデル6は、ハードウェアシミ
ュレータ2のシステムI/Fモデル8との間で情報の受
け渡しを行う。すなわち、機能関数I/Fモデル5がC
PUモデル4から受け取った機能関数をもとに、アドレ
ス信号、データ信号、リード/ライト信号などをシステ
ムI/Fモデル8を介してハードウェアモデル20に渡
し、ハードウェアシミュレータ2でシミュレーションし
た結果をシステムI/Fモデル8を介して得る。
【0029】システムI/Fモデル8は、マイコンシミ
ュレータ1のバスI/Fモデル6との間で情報の受け渡
しを行う。バスI/Fモデル6を介して受け取ったアド
レス信号、データ信号、リード/ライト信号などをもと
に、ハードウェアシミュレータ2で演算を実行し、その
結果をバスI/Fモデル6に返す。
【0030】バスI/Fモデル6およびシステムI/F
モデル8は、またマイコンシミュレータ1とハードウェ
アシミュレータ2との間のコード変換をも行う。
【0031】ユーザインタフェース18は、電子機器の
ボタンや表示を画面に表示させて、画面上のボタンをマ
ウス等で押した結果を読み取って、その情報をシミュレ
ーション対象のプログラムに入力したり、プログラムで
処理した結果を画面に表示させたりする。このGUI1
8は、ハードウェアシミュレータ2だけでなく、仮想モ
デル7とも接続されており、双方と情報の授受を行う。
【0032】図2は、本システムシミュレーションを行
うための母体となる装置、例えばワークステーションを
シミュレーション装置化するのに必要なプログラムファ
イルと情報ファイルを示す図である。本ワークステーシ
ョンEWSは、プロセッサS_CPU,読み出し専用メ
モリS_ROM,メモリS_RAM,割込制御装置S_
INT,DMA装置S_DMA,表示装置と接続された
表示制御装置S_DSP,キーボード,マウスと接続さ
れた入力部S_INP,通信端末と接続されたシリアル
入出力装置S_SIOおよびハードディスクS_HDD
などから構成される。
【0033】ハードディスクS_HDDには、マイコン
シミュレータ1が動作するためのマイコンシミュレーシ
ョンプログラム,ハードウェアシミュレータ2が動作す
るためのハードウェアシミュレータプログラム,マイコ
ンの型番やレジスタ等の情報であるCPU情報,ハード
ウェアモデル20についての前述のハードウェア接続情
報,仮想モデル7に移植すべき周辺回路の機能記述モデ
ルについての仮想モデル情報,マイコンシミュレーショ
ン時において仮想モデル7とハードウェアシミュレータ
2のいずれを選択するかの基準となる仮想モデル選択情
報およびマイコンシミュレータ1とハードウェアシミュ
レータ2とで情報の授受を行うときに必要なコード変換
表等のインタフェース情報であるシミュレータ間インタ
フェース情報の各ファイルを格納する。
【0034】これらの各ファイルはメモリS_RAMに
ロードされ、このメモリS_RAM上に図1のマイコン
シミュレータ1およびハードウェアシミュレータ2が仮
想的に形成される。すなわち、CPUモデル4はマイコ
ンシミュレーションプログラムによって動作し、ハード
ウェアシミュレータ2はハードウェアシミュレーション
プログラムによって動作する。また、CPUモデル4と
ハードウェアモデル20は、それぞれCPU情報とハー
ドウェア情報によって構成される。さらに、仮想モデル
7は仮想モデル情報にしたがって形成され、仮想モデル
選択情報は機能関数選択テーブル3の内容となり、バス
I/Fモデル6とシステムI/Fモデル8はシミュレー
タ間インタフェース情報によって構成される。
【0035】なお、マイコンシミュレーションの対象と
なるプログラムは、マイコンシミュレーションプログラ
ムの一部としてメモリS_RAMにロードされる。ま
た、図2の表示装置は、図1のGUI18のLED表示
GUI182やキー入力GUI181を表示し、キーボ
ードやマウスは、表示されたキー入力GUI181のボ
タンを選択することにより、所望の情報をシミュレータ
に供給するためのものである。ここで、LED表示GU
I182は、表示装置の画面上に表示されたランプ画像
であり、点灯したランプ画像と、消灯したランプ画像を
有している。LED表示GUI182は、供給される信
号の状態に応じて、点灯または消灯の画像を表示する。
また、キー入力GUI181は、表示装置の画面上に表
示されたスイッチ画像である。
【0036】なお、上述のワークステーションEWSの
構成要素S_HDD、S_DMAやファイルは、代表的
な一例を示すものであって、用途に応じて適宜追加ある
いは削除しうるものである。
【0037】動作の概要 さて、以上のようにして構成された本シミュレータの動
作の概要について説明する。ハードディスクS_HDD
には、図2の各ファイルが格納されており、また読み出
し専用メモリS_ROMにはシミュレーション対象のプ
ログラム(ターゲットプログラム)が予め書き込まれて
いるものとする。先ず、ワークステーションEWSの電
源を投入して起動後に、上述のマイコンシミュレーショ
ンプログラム,ハードウェアシミュレーションプログラ
ム等をメモリS_RAMにロードしてシミュレーション
装置化する。すると、図1に示したようなマイコンシミ
ュレータ1およびハードウェアシミュレータ2が構成さ
れ、システムシミュレーションの環境が整備されたの
で、いよいよシミュレーションを実行することになる。
【0038】CPUモデル4は、シミュレーション対象
プログラムをプログラムカウンタPCの値にしたがって
順次に読み込む。CPUモデル4が読み出した命令がジ
ャンプ命令BR,BNZ,減算命令SUBのように、周
辺回路に関係がない場合、CPUモデル4内部でシミュ
レーションが実行される。一方、CPUモデル4が読み
出した命令が周辺回路モデルに関係し、仮想モデル7に
登録されていない場合、CPUモデル4は、生成した機
能関数を、バスI/Fモデル6とシステムI/Fモデル
8を介してハードウェアシミュレータ2に渡し、演算処
理が実行され、その結果を得る。そして、ハードウェア
シミュレータ2は、演算を実行し、その結果をマイコン
シミュレータ1に返す。このような命令として、例え
ば、ある周辺回路のハードウェアシミュレーションの結
果が他の周辺回路のシミュレーションに影響を及ぼすよ
うなものを挙げることができる。
【0039】ここで、機能関数とは、マイコンシミュレ
ータ1とハードウェアシミュレータ2とではコード体系
が異なることが少なくないことから、これらのコード体
系にとらわれることなく取り扱えるように設定された中
間的なコードをいう。
【0040】一方、CPUモデル4が読み出した命令が
周辺回路モデルに関係し、仮想モデル7に登録されてい
る場合には、CPUモデル4は、生成された機能関数
を、機能関数I/Fモデル5に渡し、仮想モデル7を参
照し、所望の情報を得る。仮想モデル7は、プログラム
を実行して、その結果を機能関数I/Fモデル5を介し
てCPUモデル4に返す。この場合には、マイコンシミ
ュレータ1は、周辺回路モデルに関わる命令を実行する
のに、ハードウェアシミュレータ2ではなく、仮想モデ
ル7から命令の実行結果を受け取ることになる。
【0041】これにより、マイコンシミュレータ1とハ
ードウェアシミュレータ2との間での情報のやりとりが
低減でき、シミュレータ相互間の情報の受け渡し回数や
待ち合わせ時間を削減できるのである。
【0042】[構成の具体例]次に、本実施例の具体例
としてマイコンを使用した電子手帳のシステムシミュレ
ーションをとり挙げ、より詳細に説明する。
【0043】図3は、この電子手帳の一部分を構成する
ハードウェアモデル20の詳細を示すブロック図であ
り、プログラムを記憶するプログラムメモリモデル1
0,データを記憶するデータメモリモデル11,電子手
帳の時計を模擬する時計モデル17,電子手帳の押ボタ
ン群への入力機能モデルであるキー入力モデル19およ
びGUI18への出力ポートを模擬するI/OポートC
モデル16とで構成される。
【0044】キー入力モデル19は、電子手帳の押ボタ
ン群を模擬した4行4列のキーマトリクスモデル13,
デコーダモデル15への入力信号PB0 ,PB1 を与え
るI/OポートBモデル14,この入力信号を解読し
て、キーマトリクスモデル13の4本の列線のうちのい
ずれか1本の列線を活性化する信号D0 〜D3 を出力す
るデコーダモデル15,キーマトリクスモデル13で押
下された接点を含む行線上の信号PA0 〜PA3 を入力
するI/OポートAモデル12から成る。
【0045】プログラムメモリモデル10,データメモ
リモデル11,I/OポートAモデル12,I/Oポー
トBモデル14,デコーダモデル15,時計モデル17
の各ハードウェアモデル(周辺回路対応のサブモデル)
は、図2に示したハードウェアシミュレーションプログ
ラムおよびハードウェア接続情報に基づいて、演算する
ための回路接続情報と各種パラメータをメモリS_RA
Mに記憶している。また、プログラムメモリモデル10
は、ターゲットプログラムを記憶するテーブル(記憶領
域)を有している。
【0046】また、プログラムメモリモデル10,デー
タメモリモデル11,時計モデル17,I/OポートA
モデル12,I/OポートBモデル14およびI/Oポ
ートCモデル16は、バスBUSを介してシステムI/
Fモデル8と接続される。時計モデル17は、CPUモ
デル4に供給されるクロック信号HCLK(不図示)が
供給され、これを計数した時刻情報を保持している。
【0047】デコーダモデル15からの信号D0 〜D3
およびI/OポートCモデル16からの信号PC0 は、
GUI18へ導かれ、GUI18からの信号PA0 〜P
A3がI/OポートAモデル12へのキーマトリクスモ
デル13側からの入力となる。すなわち、キーマトリク
スモデル13はあくまで仮想的なものであるため、人の
現実の操作はGUI18上で行われる。したがって、デ
コーダモデル15からの信号D0 〜D3 は実際にはGU
I18に入力し、表示装置にマトリクス状に配置された
複数のキースイッチ(キー入力GUI181)が表示さ
れ、人がキーボードまたはマウスでGUI18上のキー
入力GUI181のいずれかを選択することで、キーマ
トリクスモデル13からの信号PA0 〜PA3 となって
I/OポートAモデル12に入力するものである。
【0048】図4は、図3のハードウェアモデル20に
対応する仮想モデル7の詳細な構成例を示し、プログラ
ムメモリモデル10対応の仮想プログラムメモリモデル
V71,時計モデル17対応の仮想時計モデルV72,
I/OポートAモデルとI/OポートBモデル対応の仮
想キー入力モデルV73、およびI/OポートCモデル
対応の仮想LED表示モデルV74から成る。このよう
な仮想モデル7の構成は、図2における仮想モデル情報
ファイルをワークステーションEWSにロードすること
により、実現されるものである。
【0049】本実施例では、前述のように、ある周辺回
路のハードウェアシミュレーションの結果が、他の周辺
回路のシミュレーションに影響を及ぼさないものについ
てのみ仮想モデル7に登録できる。このことから、時計
モデル17とI/OポートCモデル16は、他の周辺回
路とは独立して動作しており、CPUモデル4以外とデ
ータの授受がないので仮想モデル7に登録できるのに対
し、I/OポートBモデル14のシミュレーション結果
は、I/OポートAモデル12に影響を及ぼすので、ど
ちらか一方だけを仮想モデル7に登録することはできな
いのである。
【0050】仮想プログラムメモリモデルV71は、図
5に例示するように、プログラムメモリモデル10に記
憶されたターゲットプログラムの命令コードと同じ命令
コードをテーブル(記憶手段)に予め記憶している。こ
のテーブルには、仮想プログラムメモリモデルV71の
アドレスに対応するシンボルと命令コードに相当する戻
り値とが配置されている。
【0051】仮想時計モデルV72は、CPUモデル4
に供給されるクロックVCLK(不図示)を計数し、時
刻情報を保持している。クロックの計数処理は、予め登
録されたプログラムに従って処理され、マイコンシミュ
レータ1が他の処理を実行中であっても常に実行されて
おり、マイコンを実使用したときに相当する時刻を出力
する。ハードウェアシミュレータ2は、シミュレーショ
ンに時間がかかるため、クロックを計数しきれないが、
マイコンシミュレータ1は、ハードウェアシミュレータ
2により処理速度が速いので、クロックを計数すること
ができる。計数結果は現実の時刻とは違い、進み方が遅
いが、マイコンを実際に動作させたときには現実の時刻
になるように設定されているので、シミュレーション実
行中に実際に使用したときに相当する時刻を知ることが
できる。
【0052】仮想キー入力モデルV73は、キー入力G
UI181のサブルーチンが呼び出されたとき、仮想モ
デル7内に予め登録したキー入力サブルーチンを処理す
ることで、GUI18上で押されたボタンに相当する文
字情報、例えば「0」、「1」、「A」などを得ること
ができる。これに対して、ハードウェアモデル20のデ
コーダモデル15からは、バイナリ形式の[0,1,
0,0]をGUI18のキー入力GUI181に供給
し、キー入力GUI181からは、バイナリ形式の入力
信号PA0 〜PA3 [0,0,1,0]をI/Oポート
A12に受給することで、CPUモデル4はターゲット
プログラム内のキー入力サブルーチンを処理して、どの
ボタンが押されたかを判断する。
【0053】仮想LED表示モデルV74は、供給され
たLMP**をもとに、GUI18のLED表示GUI
182に供給する信号に変換する処理を実行する。例え
ば、「LMP00」が呼び出されたとき、仮想LED表
示モデルV74は「0」を出力し、「LMP01」のと
きには「1」を出力する。
【0054】GUI18のLED表示GUI182は、
LEDが点灯した画像情報と、LEDが消灯した画像情
報とを有しており、仮想LED表示モデルV74の指示
に応じて、いずれか一方の画像情報を選択して表示装置
に表示する。「0」が入力されたときには、LEDが消
灯した画像がLED表示GUI182に表示され、
「1」が入力されたときには、LEDが点灯した画像が
LED表示GUI182に表示される。
【0055】これに対して、CPUモデル4からハード
ウェアモデル20のI/OポートCモデル16にI/O
ポート出力命令が実行され、ポートPC0 が「0」にな
れば、LEDが消灯した画像がLED表示GUI182
に表示され、「1」になれば、LEDが点灯した画像が
LED表示GUI182に表示さる。
【0056】図6は、図1に示した機能関数選択テーブ
ル3の内容例であり、機能関数I/Fモデル5が、仮想
モデル7を選択可能な機能関数とその判断条件を示す。
CPUモデル4から渡された機能関数が次の場合に、機
能関数I/Fモデル5は仮想モデル7を選択する。CP
Uモデル4から渡された機能関数が機能関数選択テーブ
ル3に記述されていなかったり、あるいは、記述されて
いても、判断条件を満たさない場合には、機能関数I/
Fモデル5はハードウェアモデル20を選択して検証す
る。
【0057】図6において、ADRSはCPUモデル4
がアクセスするアドレスを示す信号であり、I/Oはメ
モリを除く周辺回路の入出力命令であることを示す信号
であり、RDは読み出しであることを示す信号であり、
WRは書き込みであることを示す信号である。また、
「READTIME」、「PORTC」、「KEYI
N」は、アドレスを示すラベルである。また、「D*」
は任意のデータを意味し、「TIME」は時計モデル1
7または仮想時計モデルV72から読み出した時刻を意
味する。また、「&」は、条件の論理積、即ち、「&」
の前後に記述された条件が同時に満たされるとき、判定
条件が有効であることを意味する。
【0058】仮想モデル7を選択可能な機能関数とその
判断条件は次の通りである。
【0059】FETCH関数:仮想プログラムメモリ
モデルV71から命令を読み込む関数であり、引数は、
アドレスADRSである。本例では、アドレスADRS
が1000H以上で、2000H未満なら仮想モデル7
を選択可能。
【0060】IORD関数:メモリ以外の周辺回路を
読み出す関数で、引数はアドレスADRSと、I/O
と、RDである。本例では、アドレスADRSが「RE
ADTIME」であるときは、仮想モデル7を選択可
能。
【0061】IOWR関数:メモリ以外の周辺回路に
データを書き込む関数で、引数は、アドレスADRS、
書き込みデータ「D*」、I/O、及びWRである。本
例では、アドレスADRSが「PORTC」で、データ
は任意の値「D*」であれば選択可能。
【0062】CALL関数:特定のサブルーチンを呼
び出したときに生成される関数で、引数はサブルーチン
の先頭アドレスADRSと、時刻TIMEである。本例
では、アドレスADRSがラベルKEYINで、時刻が
05H以上で15H以下の場合は、仮想モデル7を選択
可能。
【0063】図6に示す機能関数選択テーブル3は一つ
の例であって、このテーブルに登録する機能関数は、シ
ミュレーションする対象に応じて適宜書き換えることが
できる。また、引数の条件、およびその組み合わせも適
宜書き換えることができる。例えば、CALL関数にお
いて、時刻TIMEの条件は必須ではない。また、I/
O、RD、WRなども、機能関数名IORD、IOWR
により判断できる場合には無くてもよい。
【0064】図7は、機能関数I/Fモデル5における
仮想関数変換テーブルと、その戻り値を示す。機能関数
I/Fモデル5は、CPUモデル4からは、前述のよう
な理由から機能関数を受け取る。しかし、CPUモデル
4と仮想モデル7とは異なるソフトメーカーで開発され
ることがあり、CPUモデル4が使用している機能関数
コードと、仮想モデル7が使用する仮想関数コードとは
異なることが多い。そこで、CPUモデル4対応のコー
ド(機能関数コード)と仮想モデル7対応のコード(仮
想関数コード)とを本テーブルにより変換することにし
たのである。なお、この仮想関数変換テーブルは、図2
のCPU情報および仮想モデル情報により生成される。
また、図7では、引数[メモリ、I/O]&[RD、W
R]は省略している。
【0065】図8は、プログラムメモリモデル10およ
び仮想プログラムメモリモデルV71のアクセス・アド
レスと、そのアドレスに記憶された命令コード、およ
び、その命令コードの意味を示すニーモニック表示とを
表にしたものである。
【0066】図8のターゲットプログラムリストは、電
子手帳のボタン押下の正当性を検証するものであり、キ
ー入力GUI181に対して、あるボタンが押されれば
LED表示GUI182を点灯表示し、他のボタンが押
されれば、LED表示GUI182を消灯表示するとい
うものである。
【0067】なお、プログラムリスト中、#はイミーデ
ィエト・データ指定、!は絶対アドレス指定、Hは16
進数であることを示す。
【0068】図8に示すターゲット・プログラム・リス
トの1行目「1001」番地の「A201」は、キーセ
ンスを行うために、I/OポートBに「01H」出力す
る命令、2行目「1002」番地の「C501」は、I
/OポートAからデータを入力してレジスタAに格納す
る命令、3行目「1003」番地の「B204」は、レ
ジスタAから「01H」を減算する命令、4行目「10
04」番地の「7406」は、レジスタAが「0H」で
あれば「1006H」番地に分岐する命令、5行目「1
005」番地の「2002」は、無条件で「1002
H」番地に分岐する命令、6行目「1006」番地の
「5AB5」は、時計モデルからデータを読み込んでレ
ジスタAに格納する命令、7行目「1007」番地の
「B310」は、レジスタAから「10H」を減算する
命令、8行目「1008」番地の「740A」は、レジ
スタAが「0H」であれば「100AH」番地に分岐す
る命令、9行目「2006」は、無条件で「1006
H」番地に分岐する命令、10行目「100A」番地の
「C701」は、I/OポートCに「01H」を出力す
る命令、11行目「100B」番地の「5A03」は、
サブルーチン「KEYIN」を呼び出す命令、12行目
「100C」番地の「B2EC」は、レジスタAから
「ECH」を減算する命令、13行目「100D」番地
の「740F」は、レジスタAが「0H」であれば「1
00FH」番地に分岐する命令、14行目「100E」
番地の「200B」は、無条件で「100BH」番地に
分岐する命令、15行目「100F」番地の「C70
0」は、I/OポートCに「00H」を出力する命令で
ある。
【0069】また、17行目の「KEYIN」はラベル
を表し、24行目「301F」番地の「RET」はサブ
ルーチンが呼び出された番地に戻ることを表す。また、
17行目から24行目までのリストは、キー入力のサブ
ルーチンが記述されており、キーマトリクスモデル13
をキースキャンして、押されたキーに対応付けられた文
字コードを戻すものとする。
【0070】図9は、CPUモデル4のシミュレーショ
ンプログラムのフローチャートを示す。
【0071】図9において、ステップS101で、CP
Uモデル4は、プログラムカウンタPCの値を取得す
る。CPUモデル4は、プログラムカウンタPCの値を
取得後、次の取得に備えてプログラムカウンタPCの値
を+1だけインクリメントする。
【0072】ステップS102で、CPUモデル4は、
プログラムカウンタPCで示されるアドレスをアクセス
して、プログラムメモリモデルから命令コードを読み出
すため、機能関数FETCH(PC)を生成する。ここ
で、PCはプログラムカウンタPCの値である。
【0073】ステップS103で、CPUモデル4は、
メモリを含む周辺回路をアクセスして所定の処理を実行
する周辺回路処理サブルーチンを呼び出す。ここでは、
機能関数FETCH(PC)を機能関数I/Fモデル5
に渡して、プログラムメモリモデルから命令コードを読
み出す処理を実行する。
【0074】ステップS104で、CPUモデル4は、
周辺回路処理サブルーチンにより得られた命令コードを
命令レジスタに格納する。
【0075】ステップS105で、CPUモデル4は、
命令レジスタに格納された命令コードを解読する。
【0076】ステップS105で、CPUモデル4は、
解読された命令コードが、ロード命令またはストア命令
であって、周辺回路との入出力(読み書き)が生ずるか
否かを判断する。周辺回路との入出力が生ずる場合には
「Y」へ進み、ステップS107の処理を実行する。周
辺回路との入出力が生じない場合には「N」へ進み、ス
テップS109の処理を実行する。
【0077】ステップS107で、CPUモデル4は、
解読された命令コードに基づき周辺回路に対してデータ
を入力または出力する処理を実行するため、ロード命令
またはストア命令に対応する機能関数を生成する。
【0078】ステップS108で、CPUモデル4は、
メモリを含む周辺回路をアクセスして所定の処理を実行
する周辺回路処理サブルーチンを呼び出す。このとき、
CPUモデル4は、機能関数I/Fモデル5に機能関数
を渡すことにより、周辺回路に対するロード命令または
ストア命令が処理される。このサブルーチンは、ステッ
プS103で呼び出されるサブルーチンと別であっても
よいが、ここでは同一のサブルーチンを呼び出すものと
して説明する。
【0079】ステップS109で、CPUモデル4は、
CPUモデル4内で処理される分岐命令や加減算命令な
どを実行したり、周辺回路処理サブルーチンにより得ら
れたデータを所定のレジスタに格納したりするなどの処
理を実行する。
【0080】ステップS110で、CPUモデル4は、
実行した命令が「BREAK」や「STOP」であれば
「Y」へ進み、シミュレーションの処理を一旦停止した
り終了したりする。そうでなければ「N」へ進み、ステ
ップS101へ戻り、ステップS101からS109の
処理を繰り返す。
【0081】図10は、図9における周辺回路処理サブ
ルーチンS103、S108の詳細フローチャートを示
す。
【0082】図10において、ステップS201で、機
能関数I/Fモデル5は、CPUモデル4から機能関数
を受け取り、この機能関数が機能関数選択テーブル3の
条件を満たすか否かを判断する。即ち、仮想モデル7を
使って検証するか、ハードウェアシミュレータ2を使っ
てシミュレーションするかを判断する。機能関数選択テ
ーブル3の判断条件を満たし、仮想モデル7を使う場合
には、「Y」へ進み、ステップS202を実行する。機
能関数選択テーブル3の判断条件を満たし、仮想モデル
7を使う場合には、「Y」へ進み、ステップS202を
実行する。そうでなければ、「N」へ進み、ステップS
203を処理する。このとき、機能関数I/Fモデル5
は、仮想モデル7、または、バスI/Fモデル6に機能
関数を渡す。
【0083】ステップS202で、仮想モデル7は、機
能関数I/Fモデル5より機能関数を受け取り、後述の
仮想モデル・シミュレーションを実行する。実行後、サ
ブルーチンが呼び出されたステップS103または、S
108の次のステップへ戻る。
【0084】ステップS203で、バスI/Fモデル6
は、機能関数I/Fモデル5より受け取った機能関数
を、ハードウェアシミュレータ2のシミュレーションに
必要な端子信号コード(CS、ADRS、DATAな
ど)に変換し、所定のマシンサイクルでシステムI/F
モデル8に渡す。
【0085】ステップS210で、バスI/Fモデル6
は、端子信号コードをシステムI/Fモデル8に渡すと
き、端子信号コード名称の変換を行ったり、信号授受の
タイミングを調整したりする。一般に、シミュレーショ
ンを実現するソフトウェアは、複数のベンダから供給さ
れることが多く、シミュレータ間のコード体系の違いを
吸収したり、信号授受のタイミングの違いを調整する必
要がある。このような問題がない場合には、ユーザはス
テップ210を省略してもよい。
【0086】ステップ211で、システムI/Fモデル
8は、バスI/Fモデル6から端子信号コードを受け取
り、これをハードウェアシミュレータ2に渡す。
【0087】ステップ209で、ハードウェアシミュレ
ータ2は、受け取った端子信号コードをもとにシミュレ
ーションを実行し、その結果をシステムI/Fモデル8
に渡す。
【0088】ステップ211で、システムI/Fモデル
8は、ハードウェアシミュレータ2からシミュレーショ
ン結果を受け取り、バスI/Fモデル6にこれを渡す。
【0089】ステップS210で、バスI/Fモデル6
は、システムI/Fモデル8からシミュレーション結果
コードを受け取るとき、結果コード名称の変換を行った
り、信号授受のタイミングを調整したりする。
【0090】ステップS203で、バスI/Fモデル6
は、システムI/Fモデル8から受け取った結果コード
を、機能関数I/Fモデル5に渡し、機能関数I/Fモ
デル5はこれをCPUモデル4に渡す。
【0091】以上で、一連の周辺回路処理サブルーチン
を終了し、サブルーチンが呼び出されたステップS10
3または、S108の次のステップへ戻る。
【0092】次に、バスI/Fモデルシミュレーション
S203とシステムI/Fモデルシミュレーション内の
詳細な動作を説明する。
【0093】ステップS204で、バスI/Fモデル6
は、機能関数I/Fモデル5から受け取った機能関数
を、ハードウェアシミュレータ2のシミュレーションに
必要な端子信号コード(CS、ADRS、DATAな
ど)に変換し、所定のマシンサイクルでシステムI/F
モデル8に渡す準備を行う。
【0094】図12に、バスI/Fモデル6がハードウ
ェアシミュレータ2と授受する代表的な端子信号コード
と、その信号変化を表すタイミングチャートを示す。
【0095】図12において、マシンサイクルは、マイ
コンのクロックに相当し、ここでは、4マシンサイクル
で1つのロード命令またはストア命令に基づく端子信号
コードが授受されるものとする。/CSはチップ選択端
子信号,ADRSはアドレス端子信号,/RDはリード
端子信号,/WRはライト端子信号,DATAはデータ
端子信号である。なお、「/」は信号がローレベル
“0”のとき有効であることを意味する。
【0096】マシンサイクルM1の時点では、チップ選
択端子信号/CSと、アドレス端子信号ADRSとが出
力され、マシンサイクルM2では、リード端子信号/R
Dまたはライト端子信号/WRと、データ端子信号DA
TAとが出力される。マシンサイクルM3では、リード
端子信号/RDまたはライト端子信号/WRと、データ
端子信号DATAとが非活性化された信号が出力され
る。マシンサイクルM4では、チップ選択端子信号/C
Sと、アドレス端子信号ADRSとが活性化された信号
が出力され、端子信号の授受が終了する。
【0097】なお、本実施例では、システムI/Fモデ
ル8は、第1〜第4マシンサイクルの端子信号コードの
変化を一括して受け取り、ハードウェアモデルシミュレ
ーションS209を行った結果をバスI/Fモデル6に
返すものとして説明する。従って、読み出しデータDA
TAは第2マシンサイクルでは出力されず、シミュレー
ション結果を返すタイミングで出力される。別の方法と
して、ハードウェアシミュレータ2は、1マシンサイク
ル分の端子信号コードを受け取る毎にハードウェアモデ
ルシミュレーションS209を実行することもできる。
この方法であれば、システムI/Fモデル8は、第2マ
シンサイクルで読み出しデータDATAを出力すること
ができる。
【0098】ステップS205で、バスI/Fモデル6
は、ステップS210を介してシステムI/Fモデル8
に第1マシンサイクルから順番に第4マシンサイクルま
で端子信号コードを出力する。
【0099】ステップS213で、システムI/Fモデ
ル8は、複数の端子信号コードの変化を判断し、変化が
なければ、「N」に進み、ステップS213に戻り変化
を待つ。複数の端子信号コードのうちいずれか1つが変
化すれば、入力データの準備ができたと判断し、「Y」
へ進み、ステップS214に移る。
【0100】ステップS214で、システムI/Fモデ
ル8は、バスI/Fモデル6から1マシンサイクル分の
端子信号コードを受け取る。
【0101】ステップS215で、システムI/Fモデ
ル8は、バスI/Fモデル6から4マシンサイクル分の
端子信号コードの受領が完了したかを判断する。未完了
であれば、「N」へ進み、ステップS212に移り、完
了すれば、「Y」へ進み、ステップS209の処理に移
る。
【0102】ステップS209で、ハードウェアモデル
20は、受領した端子信号コードをもとにハードウェア
モデルシミュレーションを実行し、結果をシステムI/
Fモデル8に返す。
【0103】ステップS212で、システムI/Fモデ
ル8は、ステップS210を介してバスI/Fモデル6
にシミュレーション結果または端子信号コード受領結果
を返す。システムI/Fモデル8は、端子信号コードを
正確に受領すると受信確認信号ACKを返し、正確に受
領できないときは再送信を要求するため受信不能信号N
ACKを返し、ロード命令の実行後でシミュレーション
結果があるときは出力の端子信号コードを返し、ストア
命令の実行後でシミュレーション結果がないときはシミ
ュレーション完了信号DONEを返す。
【0104】ステップS206で、バスI/Fモデル6
は、システムI/Fモデル8から前記端子信号の変化が
あったか否かを判断する。変化がなければ、「N」に進
み、ステップS206に戻り変化を待つ。複数の端子信
号コードのうちいずれか1つが変化すれば、入力データ
の準備ができたと判断し、「Y」へ進み、ステップS2
07に移る。
【0105】ステップS207で、バスI/Fモデル6
は、システムI/Fモデル8から端子信号コードまたは
シミュレーション結果を受け取る。
【0106】ステップS208で、バスI/Fモデル6
は、システムI/Fモデル8から受領したコードをもと
に、4マシンサイクル分の端子信号コードの送信が完了
したか、あるいは、シミュレーションが完了したか否か
を判断する。未完了あるいはNACKであれば、「N」
へ進み、ステップS205に移る。完了すれば、「Y」
へ進み、一連の周辺回路処理サブルーチンを終了し、サ
ブルーチンが呼び出されたステップS103または、S
108の次のステップへ戻る。
【0107】図11は、図10における仮想モデルシミ
ュレーションS202の詳細フローチャートを示す。
【0108】図11において、ステップS301で、仮
想モデル7は、機能関数I/Fモデル5から機能関数を
受け取ると、機能関数を仮想モデル7のコード体系にあ
う仮想関数に変換する(図7)。例えば、FETCH
(m)はMEMmに、IORD(READTIME)は
R_TMに、IOWR(PORTC、n)はLMPn
に、CALL(KETIN)はK_INにそれぞれ変換
される。なお、コード体系が同じであれば、本ステップ
は省略してもよい。
【0109】ステップS302で、仮想モデル7は、仮
想関数がFETCH関数MEMmであるかを判断し、M
EMmであれば、「Y」へ進み、ステップS307へ移
り、MEMmでなければ、「N」へ進み、ステップS3
03へ移る。
【0110】ステップS303で、仮想モデル7は、仮
想関数が時刻読出関数R_TMであるかを判断し、R_
TMであれば、「Y」へ進み、ステップS308へ移
り、R_TMでなければ、「N」へ進み、ステップS3
04へ移る。
【0111】ステップS304で、仮想モデル7は、仮
想関数がキー入力関数K_INであるかを判断し、K_
INであれば、「Y」へ進み、ステップS309へ移
り、K_INでなければ、「N」へ進み、ステップS3
05へ移る。
【0112】ステップS305で、仮想モデル7は、仮
想関数がLED点灯/消灯関数LMPであるかを判断
し、LMPであれば、「Y」へ進み、ステップS310
へ移り、LMPでなければ、「N」へ進み、ステップS
306へ移る。
【0113】ステップS306で、仮想モデル7は、受
領した仮想関数が登録されていない関数であったり、パ
ラメータが違っていたりすると、表示装置にエラーメッ
セージを表示する。
【0114】ステップS307で、仮想モデル7内の仮
想プログラムメモリモデルV71(図4)は、予め登録
されたターゲットプログラムのテーブル(図5)を参照
し、シンボルMEMmに対応する戻り値を読み出し、機
能関数I/Fモデル5に返し、処理を終了する。
【0115】ステップS308で、仮想モデル7内の仮
想時計モデルV72(図4)は、読み出し要求のあった
時点の時刻を戻り値として機能関数I/Fモデル5に返
し、処理を終了する。なお、仮想時計モデルV72は、
予め登録された時計処理プログラムを有しており、この
プログラムに従ってクロック信号VCLKを常に計数
し、時刻情報を生成する。
【0116】ステップS309で、仮想モデル7内の仮
想キー入力モデルV73(図4)は、キー入力GUI1
81に対してキー入力を要求し、押下されたキーの文字
情報を取得し、その文字情報を戻り値として機能関数I
/Fモデル5に返し、処理を終了する。なお、本実施例
では、キー入力GUI181により文字情報を取得する
例を示すが、図2に示すキーボードで押されたキーを検
出し、入力部S_INPを介して押下されたキーの文字
情報を取得するようにしてもよい。
【0117】ステップS310で、仮想モデル7内の仮
想LED表示モデルV74(図4)は、受領した機能関
数I/Fモデル5をもとに、LED表示GUI182に
ランプの点灯画像、または消灯画像を表示させる。例え
ば、仮想関数がLMP00であれば、LED表示GUI
182に「0」を出力して消灯表示にし、LMP01で
あれば、LED表示GUI182に「1」を出力して点
灯表示にする。処理が完了すると、機能関数I/Fモデ
ル5に完了信号DONEを返し、処理を終了する。
【0118】図11に示す上述の処理が終了すると、図
10のステップS202の次のステップ「戻る」に戻
る。
【0119】[動作の詳細]次に、図8に示したターゲ
ットプログラムのリストに基づいて、本電子手帳のシス
テムシミュレーションの動作につき、図5のプログラム
メモリテーブル内のテーブル,図9〜図11のフローチ
ャートおよび図12のタイミングチャートを参照しなが
ら、1つのプログラムステップごとに詳述する。
【0120】《ROMアドレス1001Hの処理》図9
のステップS101で、CPUモデル4は、プログラム
カウンタPCの値「1001H」を取得する。
【0121】ステップS102で、CPUモデル4は、
機能関数FETCH(1001H)を生成し、機能関数
モデル5に渡す。
【0122】ステップS103で、これにより、周辺回
路処理サブルーチンが呼出される。
【0123】図10のステップS201で、機能関数I
/Fモデル5は、機能関数選択テーブル3(図6)に関
数が登録されていて、且つその引数の条件を満たしてい
るか、チェックを行う。今の場合、FETCH関数は登
録されており、アドレスの条件を満たしているので、機
能関数を仮想モデル7渡し、「Y」に進む。
【0124】ステップS202で、仮想モデル7は、仮
想モデルシミュレーションを実行する。
【0125】図11のステップS301で、仮想モデル
7は、機能関数I/Fモデル5より受領した機能関数F
ETCH(1001H)を、仮想関数変換テーブル(図
7)をもとに仮想関数MEM1001に変換しする。
【0126】ステップS302で、仮想モデル7は、変
換した仮想関数がプログラムメモリを読み出すための関
数(MEM関数)かを判断する。今の場合、MEM関数
なので、「Y」へ進む。
【0127】ステップS307で、仮想モデル7は、仮
想プログラムメモリモデルV71(図4)内のテーブル
(図5)を参照し、ラベル「MEM1001」に対応す
る戻り値「A201」を取得し、機能関数I/Fモデル
5にこれを返す。
【0128】図11と図10の処理を終了し、図9に戻
る。
【0129】ステップS104で、機能関数I/Fモデ
ル5は、CPUモデル4に戻り値「A201」を渡すと
ともに、CPUモデル4は、戻り値「A201」を読み
込む。
【0130】ステップS105で、CPUモデル4は、
戻り値「A201」を解析し、「MOV PORTB,
#01H」であると解読する。
【0131】ステップS106で、CPUモデル4は、
解読した命令が周辺回路の読み書きに関するものかを判
断する。今の場合、I/OポートBモデルへのストア命
令であるので、「Y」に進む。
【0132】ステップS107で、CPUモデル4は、
解読した命令に対応する機能関数IOWR(PORT
B,#01H)を生成し、この機能関数を機能関数I/
Fモデル5に渡す。
【0133】ステップS108で、CPUモデル4は、
周辺回路処理サブルーチンの呼出しを実行する。
【0134】図10のステップS201で、機能関数I
/Fモデル5は、仮想モデル7に引数の条件を満たす関
数IOWR(PORTB,#01H)が登録されている
かどうかのチェックを行う。この関数は図6の機能関数
選択テーブル3に登録されていないので、機能関数I/
Fモデル5は、機能関数IOWR(PORTB,#01
H)をバスI/Fモデル6に渡し、「N」に進む。
【0135】ステップS203で、バスI/Fモデル6
は、バスI/Fモデルシミュレーションを開始する。
【0136】ステップS204で、バスI/Fモデル6
は、受領した機能関数IOWR(PORTB,#01
H)をもとに、端子信号コード(図12)に変換し、シ
ステムI/Fモデル8へ出力する準備を行う。ここで、
バスI/Fモデル6は、第1〜第4マシンサイクルM1
〜M4に対応する/CS(チップ選択端子信号),AD
RS(アドレス端子信号),/RD(リード端子信
号),/WR(ライト端子信号)の各信号を生成する。
なお、「/」は信号がローレベル“0”のとき有効であ
ることを意味する。
【0137】ステップS205で、バスI/Fモデル6
は、第1マシンサイクルM1の端子信号を出力する。す
なわち、図12に示すように、マシンサイクルM1の時
点での各端子信号は、次の状態である(図12)。
【0138】・I/OポートBモデル14用のチップ選
択端子信号/CS=0 ・アドレス端子信号ADRS=I/OポートBモデル1
4のアドレス ・データ端子信号DATA=不定 ・リード端子信号/RD=1 ・ライト端子信号/WR=1 ステップS210で、バスI/Fモデル6は、マイコン
シミュレータ1内のCPUモデル4用の端子信号コード
(/CS,ADRS等)から、ハードウェアシミュレー
タ2用の端子信号コード(不図示)に変換し、システム
I/Fモデル8に各端子信号を渡す。これにより、ハー
ドウェアシミュレータ2側の処理に移行する。
【0139】ステップS213で、システムI/Fモデ
ル8は前記端子信号のいずれか1つの信号が変化したか
を常に監視しており、端子信号のいずれかが変化したこ
とを検出すると、入力データの準備が完了したと判断
し、「Y」へ進む。
【0140】ステップS214で、システムI/Fモデ
ル8は、/CS,ADRS,/RD,/WR,DATA
の各端子信号を受け取る。
【0141】ステップS215で、システムI/Fモデ
ル8は、所定のマシンサイクル(4回)に達しているか
否かを判断する。この時点では4回に達していないの
で、「N」へ進む。
【0142】ステップS212で、システムI/Fモデ
ル8は、マシンサイクルM1の情報を正確に受信したこ
とをバスI/Fモデル6に知らせるために、「ACK」
(受信確認)をバスI/Fモデル6に渡す。正確に受信
できなかった場合には、「NACK」(受信不能)を返
し、バスI/Fモデル6に再送を促す。
【0143】ステップS210で、システムI/Fモデ
ル8は、「ACK」データを変換して、バスI/Fモデ
ル6に渡す。これにより、再びマイコンシミュレータ1
側の処理に移る。
【0144】ステップS206で、バスI/Fモデル6
は、端子信号のいずれかが変化したことを検出すると、
入力データの準備が完了したと判断し、「Y」へ進む。
【0145】ステップS207で、バスI/Fモデル6
は、「ACK」を受け取る。
【0146】ステップS208で、バスI/Fモデル6
は、「ACK」受信なので、前端子信号は送信完了と判
断する。現マシンサイクルは「M1」なので、通信は完
了していないと判断し、「N」へ進む。
【0147】ステップS205で、バスI/Fモデル6
はシステムI/Fモデル8にマシンサイクルM2の状態
を渡す。マシンサイクルM2の時点での各端子信号は、
次の状態である(図12)。
【0148】・I/OポートBモデル14用のチップ選
択端子信号/CS=0 ・アドレス端子信号ADRS=I/OポートBのアドレ
ス ・データ端子信号DATA=#01H ・リード端子信号/RD=1 ・ライト端子信号/WR=0(書き込みデータが有効で
あることを示す) 以下、ステップS210→S213→S214→S21
5→S212→S210→S206→S207→S20
8→S205の処理を、ステップS215においてマシ
ンサイクルM4終了を検出するまで繰り返す。
【0149】ステップS215で、システムI/Fモデ
ル8は、規定のマシンサイクルが完了したことを確認す
ると、受信した端子信号コードをハードウェアモデル2
0に渡し、「Y」へ進む。
【0150】ステップS209で、ハードウェアモデル
シミュレーションを実行する。すなわち、図1のI/O
ポートBモデル14は、接続情報に基づき演算を行い、
出力ポートに出力する値として(PB3,PB2,PB
1,PB0)=(0,0,0,1)を得る。このうち
(PB1,PB0)=(0,1)をデコーダモデル15
に渡し、デコーダモデル15は、これをデコードして
(D3,D2,D1,D0)=(0,0,1,0)をキ
ーマトリクスモデル13に出力するとともに、キー入力
GUI181に渡す。
【0151】ステップS212で、ハードウェアモデル
20内のI/OポートBモデル14は、上記シミュレー
ションの完了を知らせるため、シミュレーション完了信
号「DONE」をシステムI/Fモデル8へ渡す。な
お、シミュレーションでエラーが発生した場合には、シ
ミュレーションエラー信号「ERR」を返す。
【0152】ステップS210で、システムI/Fモデ
ル8は「DONE」をデータ変換する。
【0153】ステップS206で、バスI/Fモデル6
は、端子信号の変化を検出し、「Y」へ進む。
【0154】ステップS207で、バスI/Fモデル6
は、「DONE」を受信する。
【0155】ステップS208で、バスI/Fモデル6
は、「DONE」受信により、バスI/Fが完了したと
判断し、機能関数I/Fモデル5を介してCPUモデル
4に、「DONE」を返し、「Y」に進む。
【0156】以上により、図9に戻り、ステップS10
8が終了する。
【0157】図9のステップS109で、CPUモデル
4は、機能関数I/Fモデル5より「DONE」を受領
することで、ストア命令の実行が終了したと検知する。
【0158】ステップS110で、停止要求ではないの
で、「N」へ進み、ステップS101に移る。
【0159】《ROMアドレス1002Hの処理》ステ
ップS101で、CPUモデル4は、プログラムカウン
タの値「1002H」を取得する。以下、1行目と同様
に、ステップS102→S103→201→S202→
S301→S302→S307と進む。
【0160】図9のステップS104で、CPUモデル
4は、戻り値「C501H」(MOV A,PORT
A)を読み込む。
【0161】ステップS105で、命令を解析し、ステ
ップS106で、「Y」へ進む。
【0162】ステップS107で、CPUモデル4は、
解読した命令に対応する機能関数IORD(PORT
A、I/O、RD)を生成し、機能関数I/Fモデル5
に渡す。
【0163】ステップS108で、周辺回路処理サブル
ーチン呼出し図10のステップS201で、この機能関
数IORD(PORTA)は図6の機能関数選択テーブ
ル3に登録されていないので「N」へ進む。
【0164】ステップS204で、バスI/Fモデル6
は、各端子信号を出力する準備をする。
【0165】ステップS205〜S208で、前記動作
を繰り返す。
【0166】ステップS209のシミュレーションの途
中で、シミュレータのオペレータが、図2に示す入力手
段により画面に表示されたキー入力GUI182のキー
ボードの右から2列目の上から3番目(図3)をクリッ
クすることで、キー入力GUI182はその情報をI/
OポートAモデル12の入力端子PA3〜PA0に伝え
る。この結果、I/OポートAモデル12は、(PA
3,PA2,PA1,PA0)=(0,1,0,0)を
得る。
【0167】ステップS212で、I/OポートAモデ
ル12は、シミュレーション結果として「#04H」を
システムI/Fモデル8に渡す。
【0168】ステップS210で、システムI/Fモデ
ル8は「#04H」をデータ変換する。
【0169】ステップS206で、「Y」へ進む。
【0170】ステップS207で、バスI/Fモデル6
は、「#04H」を受領し、機能関数I/Fモデル5に
これを渡す。
【0171】ステップS208で、機能関数I/Fモデ
ル5は、「#04H」をCPUモデル4に渡し、サブル
ーチン処理を終了し、図9のステップ108に戻る。
【0172】図9のステップS109で、CPUモデル
4は、「#04H」をレジスタAに格納する。
【0173】ステップS110で、「N」に進み、ステ
ップS101に戻る。
【0174】《ROMアドレス1003Hの処理》上記
と同様、ステップS101→S102→S103→S2
01→S202→S301→S302→S307→S1
04→S105と進む。
【0175】ステップS106で、解読結果「SUB
A #04H」は、周辺回路読み書きに関係ないので、
機能関数の呼び出しは行われず、「N」へ。
【0176】ステップS109で、CPUモデル4内で
減算命令「(レジスタA)−04H」を実行し、処理結
果をレジスタAに「0H」を格納する。
【0177】ステップS110で、「N」に進み、ステ
ップS101に戻る。
【0178】《ROMアドレス1004Hの処理》3行
目と同様に、ステップS101→S102→S103→
S201→S202→S301→S302→S307→
S104→S105と進む。
【0179】ステップS106で、解読結果「BZ !
1006H」は、周辺回路読み書きに関係ないので、
「N」へ移る。
【0180】ステップS109で、CPUモデル4は、
分岐命令「BZ !1006H」を実行する。ここで
は、条件(レジスタA−04H=0)が成立するので、
1006H番地へジャンプする。すなわち、CPUモデ
ル4は、プログラムカウンタPCに1006Hをセット
する。もし、キー入力がないなど条件が成立しないとき
は、1005H番地の処理が実行されて、1002H番
地へジャンプする。
【0181】《ROMアドレス1006Hの処理》ステ
ップS101で、CPUモデル4は、プログラムカウン
タの値「1006H」を取得し、ステップS102→S
103と進む。
【0182】ステップS104で、前述と同様な動作
で、CPUモデル4は、戻り値:5AB5(MOV
A,READTIME)を取り込む。
【0183】ステップS105で、CPUモデル4は、
戻り値「5AB5H」を解析する。
【0184】ステップS106で、周辺回路に関係のあ
る命令なので、「Y」へ進む。
【0185】ステップS107で、CPUモデル4は、
機能関数IORD(READTIME)を生成し、機能
関数I/Fモデル5に渡す。なお、READTIME
は、I/Oアドレスを示すラベルである。
【0186】ステップS108で、図10のステップS
201に移る。ステップS201で、機能関数I/Fモ
デル5は、機能関数IORD(READTIME)が機
能関数選択テーブル3(図6)の判定条件を満たすの
で、「Y」に進む。
【0187】ステップS202で、仮想モデルシミュレ
ーションを実行する。図11に移る。
【0188】図11のステップS301で、仮想モデル
7は、仮想関数変換テーブル(図7)により、IORD
(READTIME)→R_TMに変換し、仮想時計モ
デルV72(図4)に渡す。
【0189】ステップS302で、仮想関数R_TMは
MEM関数でないため「N」へ進む。
【0190】ステップS303で、「Y」へ進む。
【0191】ステップS308で、仮想モデル7は、仮
想時計モデルV72(図4)より時刻情報を読み出し、
機能関数I/Fモデル5に時刻情報「#10H」を渡
し、機能関数I/Fモデル5は、CPUモデル4に時刻
情報「#10H」を返す。図10のステップS202に
戻り、さらに、図9のステップS108に戻る。
【0192】図9のステップS109で、CPUモデル
4は、時刻情報「#10H」をレジスタAに格納する。
【0193】ステップS110で、「N」に進み、ステ
ップS101に戻る。
【0194】《ROMアドレス1007Hの処理》3行
目および4行目と同様に、CPUモデル4内部で処理は
完了する命令であるから、ステップS101→S102
→S103→S201→S202→S301→S302
→S307→S104→S105→S106→S109
と進み、レジスタAに「0」を格納する。その後、ステ
ップS110→S101に戻る。
【0195】《ROMアドレス1008Hの処理》3行
目,4行目および7行目と同様に、CPUモデル4内部
で処理は完了する命令であるから、ステップS101→
S102→S103→S201→S202→S301→
S302→S307→S104→S105→S106→
S109と進み、ステップS109で、分岐命令を実行
し、「100AH」へジャンプする。
【0196】《ROMアドレス100AHの処理》ステ
ップS101で、PCの値「100AH」を取得し、ス
テップS102→S103→S104→S105→S1
06→S107と進み、CPUモデル4は、機能関数I
OWR(PORTC,#01H)を生成する。
【0197】次に、ステップS108と進み、図10に
移り、ステップS201→S202と進み、図11のス
テップS301で、仮想モデル7は、機能関数IOWR
(PORTC,#01H)を仮想関数LMP01に変換
する。
【0198】ステップS302→S308と移り、ステ
ップS308で、仮想モデル7は、仮想関数変換テーブ
ル(図8)をもとに仮想関数LMP01を「1」に変換
して、仮想LED表示モデルV74(図4)に渡す。仮
想LED表示モデルV74は、LED表示GUI182
に渡し、表示装置(図2)にランプの点灯画像を表示さ
せる。
【0199】図11の処理を終了し、図10ステップS
202に戻り、さらに図9のステップS108に戻る。
【0200】ステップS109→S110と進み、ステ
ップS101に戻る。
【0201】《ROMアドレス100BHの処理》ステ
ップS101で、PCの値「100BH」を取得し、ス
テップS102→S103→S201→S202→S3
01→S302→S307と進み、戻り値「5A03
H」(CALL KEYIN)を得て、ステップS10
3に戻る。
【0202】ステップS104で、CPUモデル4は、
戻り値「5A03H」(CALLKEYIN)を読み込
み、ステップS105→S106→S109と進む。
【0203】ステップS109で、CPUモデル4は、
レジスタA他の内容をスタックに待避し、プログラムカ
ウンタPCにサブルーチンの先頭アドレス3001H
(KEYIN)を設定して、ステップS110を通って
S101に戻る。
【0204】《ROMアドレス3001Hの処理》ステ
ップS101で、PCの値「3001H」を取得し、ス
テップS102→S103→S104と進む。
【0205】ステップS104(命令読込)で、通常の
キースキャン・サブルーチン処理であれば、命令コード
「A201」(図5)を戻り値として読み込む。しか
し、ここでは、図8のアドレス3001H〜301FH
に示すようなキースキャン・サブルーチン処理を仮想モ
デルで置き換えて処理するため、予め、アドレス300
1Hの内容をダミーの入出力命令「CALL(KEYI
N)」に置き換えてあるものとする。あるいは、ラベル
KEYINの示すアドレスを他のアドレスに置き換え
て、そのアドレスにダミーの入出力命令「CALL(K
EYIN)」を書いておいてもよい。
【0206】ステップS105→S106→S107と
進む。
【0207】ステップS107(機能関数生成)で、C
PUモデル4は、機能関数CALL(KEYIN)を生
成し、これを機能関数I/Fモデル5に渡す。
【0208】ステップS108で、周辺回路処理サブル
ーチン呼出しステップS201で、機能関数I/Fモデ
ル5は、機能関数選択テーブル3と比較。登録されてお
り、かつ時刻が「10H」であり、引数の条件を満たす
ので、「Y」に進む。
【0209】ステップS202で、仮想モデルシミュレ
ーションを実行する。
【0210】ステップS301で、機能関数I/Fモデ
ル5は、仮想関数変換テーブル(図7)により、機能関
数CALL(KEYIN)を仮想関数「K_IN」に変
換する。
【0211】ステップS302で、「N」へ ステップS303で、「N」へ ステップS304で、「Y」へ ステップS309で、仮想モデル7は、仮想キー入力モ
デルV73を起動し、キー入力処理を実行。キー入力G
UI181により、あるキーが押下されると、キーの文
字情報を取得。仮想モデル7は、キーの文字情報「#E
CH」を機能関数I/Fモデル5に渡す。
【0212】ステップS109で、機能関数I/Fモデ
ル5は、CPUモデル4に戻り値「#ECH」を返す。
CPUモデル4は、戻り値「#ECH」をレジスタAに
格納する。
【0213】《ROMアドレス100CHの処理》3行
目,4行目,7行目および8行目と同様に、ステップS
109で、CPUモデル4は、レジスタAの値から「E
CH」を減算し、演算結果「0H」をレジスタAに格納
する処理を実行する。CPUモデル4内で処理は完了
し、ステップS101に戻る。
【0214】《ROMアドレス100DHの処理》3行
目,4行目,7行目,8行目,12行目および13行目
と同様に、マイコンシミュレータ1内部で処理は完了
し、「100FH」へジャンプする。
【0215】《ROMアドレス100FHの処理》ステ
ップS101で、PCの値「100FH」を取得し、S
102→S103→S201→S202と進み、戻り値
「C700H」(MOV PORTC,#00H)を取
得する。
【0216】ステップS105→S106→S107と
進み、機能関数IOWR(PORTC,#00H)生成
する。
【0217】ステップS108→S201→S202と
進み、ステップS301で、仮想モデル7は、機能関数
IOWR(PORTC,#00H)を仮想関数LMP0
0に変換する。
【0218】ステップS302→S303→S304→
S305→S310と進む。
【0219】ステップS310で、仮想モデル7内の仮
想LED表示モデルV74は、仮想関数LMP00をも
とに、LED表示GUI182に「0」を出力して図2
の表示装置に消灯画像を表示させる。
【0220】以上で、図3にその具体例を示したハード
ウェアモデル20についての第1実施例の説明を終える
が、図1に示した第1実施例は、図3の電子手帳にとど
まらず、マイコンを使用するなら、その他の電子機器に
ついても適用できるのは言うまでもない。
【0221】本実施例の構成を採用することにより、以
下の効果が得られる。
【0222】第1に、シミュレーションに要する時間を
短縮できる。これは、プログラムメモリモデルやデータ
メモリモデルだけでなく、メモリ以外の周辺回路まで仮
想モデルを使用して入出力処理を実行するため、ハード
ウェアシミュレータ2を使用して周辺回路との読み書き
する場合に比べ、シミュレーション結果を取得するまで
のでの時間を大幅に短縮できる。例えば、ハードウェア
モデルシミュレーションで1マシンサイクルに10ms
かかるとすると、4マシンサイクルには40msかか
る。これに対して、仮想モデルでは、数μsで同等の結
果が得られるので、ロード/ストア命令をシミュレーシ
ョンする時間を約10,000分の1に低減できる。
【0223】第2に、仮想モデル7を使用できる周辺回
路を予め機能関数選択テーブル3に登録しておくことに
より、仮想モデルシミュレータ7かハードウェアシミュ
レータ2のどちらのモデルを使うかが即座に選択でき
る。従って、シミュレーションの初期段階で、ハードウ
ェアモデルの接続や機能が正しく動作することが確認で
きれば、機能関数選択テーブル3の内容を書き換えるだ
けで、仮想モデルを使用して検証ができるようになる。
選択できるアドレスや時間などいろいろな条件を設定で
きるので、用途に応じて仮想モデルを使い分けしやすく
なる。
【0224】第3に、機能関数選択テーブル3には他に
影響を及ぼさない周辺回路モデルのみ登録することとし
たため、仮想モデル7によるシミュレーション結果が他
のハードウェアシミュレーションに影響を及ぼすことが
ない。このため、仮想モデルシミュレータ7を使って
も、ハードウェアシミュレータ2を使っても、同様のシ
ミュレーション結果を得ることができる。
【0225】第4に、ターゲットプログラム内のサブル
ーチン処理を1つの仮想モデルで置き換えて検証できる
ようにしたので、一層処理時間を短縮することができ
る。本実施例では、キー入力サブルーチンを仮想キー入
力モデルに置き換える例を示したが、これに限定される
ものではなく、液晶表示用ドライバ、警告音出力回路、
あるいは、通信装置などを制御するサブルーチンも仮想
モデルに置き換えることができる。例えば、液晶表示用
ドライバを使って文字を表示するためには、文字コード
を文字パターンに変換し、X方向のドライバとY方向の
ドライバにそれぞれ文字パターンデータを所定のタイミ
ングで供給し、液晶表示装置上に表示させることにな
る。これをハードウェアシミュレータ2を使って検証し
ようとすると、非常に複雑で、長いステップのターゲッ
トプログラムを処理することになり、1文字をキー入力
モデルから入力して、この文字データを液晶表示装置に
表示させるだけで数分を要してしまう。この機能を液晶
表示装置と等価な表示ができる仮想モデルで代替えする
ことで、実使用状況と同程度の速度で表示装置に表示さ
せることができる。
【0226】[第2実施例]第1実施例は、ハードウェ
アシミュレーションによって得られる結果と等価な結果
になるような機能を予め仮想モデルに登録しておき、ロ
ード/ストア命令を実行するときに、仮想モデルを使用
することにより、システムシミュレーションの高速化を
図ったものであった。したがって、仮想モデルに登録す
るモデルの種類が多いほど望ましい。しかしながら、1
つの周辺回路のシミュレーション結果が他の周辺回路の
シミュレーションに影響を及ぼす場合には、ハードウェ
アシミュレータで検証した後で、仮想モデルで検証した
り、逆に、仮想モデルで検証した後で、ハードウェアシ
ミュレーションを実行すると、その結果が矛盾すること
になることがある。
【0227】例えば、出力ポートと入力ポートとの間に
スイッチが接続されているとする。出力ポートの値を
「1」として、入力ポートの値を読み取ることで、スイ
ッチがONしているか、OFFしているかが分かる。即
ち、入力ポートの値が「1」であればスイッチはONし
ており、「0」であればOFFしていることが分かる。
【0228】いま、仮想モデルを使用して出力ポートの
値を「1」として、ハードウェアモデルを使って入力ポ
ートの値を読み取るとする。第1実施例あるいは従来の
システムシミュレータでは、仮想モデルとハードウェア
モデルとはなんら関連性がないので、仮想モデルの出力
ポートの値を「1」にしたからといって、ハードウェア
モデルの出力ポートが「1」になっているとは限らな
い。仮に、ハードウェアモデルの出力ポートが「0」に
なっているとすると、たとえスイッチがONしていたと
しても、入力ポートの値は「0」であり、スイッチがO
FFしていると誤判定されてしまうことになる。
【0229】そこで、第1実施例では、上述のような不
具合が生じないようにするため、シミュレータ結果が互
いに関連するモデルは、機能関数選択テーブル(図6)
で選択できないようにしたり、それらをまとめて選択す
るように登録を工夫している。
【0230】第2実施例は、あるモデルのシミュレーシ
ョン結果が他のモデルのシミュレーションに影響を及ぼ
すような場合であっても、正しいシミュレーション結果
が得られるような構成を採ることにより、システムシミ
ュレーションをより高速化したものである。
【0231】図13は、本発明のシステムシミュレータ
の第2実施例の機能ブロック図である。図13を図1と
対比すれば、第2実施例は第1実施例にデータ更新I/
Fモデル9を付加した点が異なっているのがわかる。デ
ータ更新I/Fモデル9は、仮想モデル71のシミュレ
ーション結果をハードウェアモデル21に反映し、また
ハードウェアモデル21のシミュレーション結果を仮想
モデル71に反映させる役割を担う。このような更新機
能を設けることにより、1つの周辺回路のシミュレーシ
ョン結果が他の周辺回路のシミュレーションに影響を及
ぼす場合であっても、仮想モデルミュレーションとハー
ドウェアシミュレーションとの間の矛盾を回避すること
ができるのである。
【0232】第2実施例についても、図2に示したシミ
ュレーション装置のブロック図およびその説明は第1実
施例におけるのと同様に適用できる。したがって、第2
実施例のシステムシミュレータによるシステムシミュレ
ーションを実行するときには、上記シミュレーション装
置の準備と、マイコンシミュレータ1−1およびハード
ウェアシミュレータ2−1のロードが前提となる。
【0233】図14は、第2実施例におけるハードウェ
アモデル21の構成図であり、HPMテーブルH302
付きのプログラムメモリモデルH301と、HDMテー
ブルH304付きのデータメモリモデルH303と、H
IP入力レジスタH310付きの入力ポートモデルH3
09と、HKD出力レジスタH313付きの出力ポート
モデルH311およびデコーダモデルH312とから成
る。
【0234】プログラムメモリモデルH301,データ
メモリモデルH303,入力ポートモデルH309,出
力ポートモデルH311は、システムI/Fモデル8と
接続され、HPMテーブルH302,HDMテーブルH
304,HIP入力レジスタH310,HKD出力レジ
スタH313は、データ更新I/Fモデル9に接続さ
れ、それぞれプログラムメモリモデルH301,データ
メモリモデルH303,入力ポートモデルH309,出
力ポートモデルH311およびデコーダモデルH312
の更新のために使用されるとともに、仮想モデル71の
更新のために出力される。なお、HPMテーブルH30
2は、プログラムメモリの内容に相当し、ROMのよう
にその内容が更新されることがないとわかっている場合
には、データ更新I/Fモデル9と接続しなくてもよ
い。また、入力ポートモデルH309,出力ポートモデ
ルH311およびデコーダモデルH312は、図3にお
けるI/OポートAモデル12,I/OポートBモデル
14およびデコーダモデル15に相当する。
【0235】HPMテーブルH302は、ターゲットプ
ログラムの命令コードを有しており、図5に示すような
シンボルと戻り値とが対になったデータを記憶手段に記
憶している。プログラムメモリモデルH301は、機能
関数I/Fモデル5が出力する機能関数に基づき、所定
のアドレスの命令コードをHPMテーブルH302から
読み出して、機能関数I/Fモデル5を介してCPUモ
デル4に命令コードを返す。
【0236】同様に、HDMテーブルH304は、デー
タメモリのアクセスアドレスと記憶データとが対になっ
たテーブル(記憶手段)を有しており、データメモリモ
デルH303は、機能関数に基づき、所定のアドレスの
記憶データをHDMテーブルH304に書き込んだり、
読み出して、機能関数I/Fモデル5を介してCPUモ
デル4との間でデータの授受を行う。データメモリモデ
ルH303は、テーブルの記憶内容が書き換えられる
と、データ更新I/Fモデル9を介して仮想モデル71
内のVDMテーブルV404の内容を同一にすべく更新
する。
【0237】出力ポートモデルH311は、CPUモデ
ル4から機能関数I/Fモデル5を介して供給されたポ
ート出力信号をデコーダモデルH312に出力し、デコ
ーダモデルH312はポート信号をデコードし、キーマ
トリクスの列数(または行数)に相当する数のデコード
信号を出力する。このデコード信号は、いずれか1つが
「1」で他は「0」の信号であって、「1」になる信号
の位置を順次変えることで、キースキャンを実行する。
HKD出力レジスタH313は、このデコード信号をレ
ジスタ(記憶手段)に保存するとともに、データ更新I
/Fモデル9を介して仮想モデル71内のVKD出力レ
ジスタV410の内容を同一にすべく更新する。また、
このデコード信号は、キー入力GUI181にも供給さ
れる。
【0238】入力ポートモデルH309は、キー入力G
UI181のキーマトリクスと接続され、キー入力GU
I181から入力されたキー入力信号を読み込み、機能
関数I/Fモデル5を介してCPUモデル4に返す。ポ
ート入力は、キーマトリクスの行数(または列数)に相
当する数だけのポートを有し、ポート入力処理は、列数
(または行数)回の入力処理を繰り返す。HKD出力レ
ジスタH313は、キー入力GUI181から入力され
たキー入力信号を一旦レジスタ(記憶手段)に保存する
とともに、データ更新I/Fモデル9を介して仮想モデ
ル71内のVIP入力レジスタV408の内容を同一に
すべく更新する。
【0239】図15は、第2実施例における仮想モデル
71の構成図であり、VPMテーブルV402付きの仮
想プログラムメモリモデルV401,VDMテーブルV
404付きの仮想データメモリモデルV403,VIP
入力レジスタV408付きの仮想入力ポートモデルV4
07およびVKD出力レジスタV410付きの仮想キー
デコーダモデルV409から成る。
【0240】仮想プログラムメモリモデルV401,仮
想データメモリモデルV403,仮想入力ポートモデル
V407,仮想キーデコーダモデルV409は、機能関
数I/Fモデル5と接続され、VPMテーブルV40
2,VDMテーブルV404,VIP入力レジスタV4
08,VKD出力レジスタV410は、データ更新I/
Fモデル9に接続され、それぞれ仮想プログラムメモリ
モデルV401,仮想データメモリモデルV403,仮
想入力ポートモデルV407,仮想キーデコーダモデル
V409の更新のために使用されるとともに、ハードウ
ェアモデル21の更新のために出力される。
【0241】図4における仮想キー入力モデルV73
は、キー入力GUI181から、文字情報を得る機能を
構成していたが、図15における仮想入力ポートモデル
V407および仮想キーデコーダモデルV409は、キ
ーマトリクス部分の入力信号と出力信号のレベル(「ハ
イレベル」または「ロウレベル」)を取り扱う点におい
て、第1実施例の仮想キー入力モデルV73とは大きく
異なる。
【0242】VPMテーブルV402は、ターゲットプ
ログラムの命令コードを有しており、図5に示すような
シンボルと戻り値とが対になったデータをテーブル(記
憶手段)に記憶している。仮想プログラムメモリモデル
V401は、機能関数I/Fモデル5が出力する機能関
数に基づき、所定のアドレスの命令コードをVPMテー
ブルV402から読み出して、機能関数I/Fモデル5
を介してCPUモデル4に命令コードを返す。
【0243】同様に、VDMテーブルV404は、デー
タメモリのアクセスアドレスと記憶データとが対になっ
たテーブル(記憶手段)を有しており、仮想データメモ
リモデルV403は、機能関数に基づき、所定のアドレ
スの記憶データをVDMテーブルV404に書き込んだ
り、読み出して、機能関数I/Fモデル5を介してCP
Uモデル4との間でデータの授受を行う。仮想データメ
モリモデルV403は、テーブルV404の記憶内容が
書き換えられると、データ更新I/Fモデル9を介して
ハードウェアモデル21内のHDMテーブルH304の
内容を同一にすべく更新する。
【0244】仮想キーデコーダモデルV409は、CP
Uモデル4から機能関数I/Fモデル5を介して供給さ
れたポート出力信号をデコーダをデコードし、キーマト
リクスの列数(または行数)に相当する数のデコード信
号を出力する。このデコード信号は、いずれか1つが
「1」で他は「0」の信号であって、「1」になる信号
の位置を順次変えることで、キースキャンを実行する。
VKD出力レジスタV410は、このデコード信号をレ
ジスタ(記憶手段)に保存するとともに、データ更新I
/Fモデル9を介してハードウェアモデル21内のHK
D出力レジスタH313の内容を同一にすべく更新す
る。また、このデコード信号は、キー入力GUI181
にも供給される。
【0245】ハードウェアモデル21は、出力ポートモ
デルH311とデコーダモデルH312との接続情報と
これに入力される端子信号をもとに演算を行い、各内部
回路に信号を伝搬させ、出力端子まで到達させることで
デコード信号を得る。このため、出力ポートモデルH3
11とデコーダモデルH312とは、デコード信号を得
るのに数10〜数100msの時間を要する。これに対
して、仮想モデル71は、出力ポートに出力するデータ
をもとに論理演算するか、変換テーブルによりデコード
信号を得るようにしている。仮想モデル71内の仮想キ
ーデコーダモデルV409は、例えば、ポート出力デー
タ(0,1)をデコード信号(0,0,1,0)に変換
するだけであるので、数μs程度の極めて短時間で結果
を得ることができる。
【0246】仮想入力ポートモデルV407は、キー入
力GUI181のキーマトリクスと接続され、キー入力
GUI181から入力されたキー入力信号を読み込み、
機能関数I/Fモデル5を介してCPUモデル4に返
す。ポート入力は、キーマトリクスの行数(または列
数)に相当する数だけのポートを有し、ポート入力処理
は、列数(または行数)回の入力処理を繰り返す。VI
P入力レジスタV408は、キー入力GUI181から
入力されたキー入力信号を一旦レジスタ(記憶手段)に
保存するとともに、データ更新I/Fモデル9を介して
ハードウェアモデル21内のHIP入力レジスタH31
0の内容を同一にすべく更新する。
【0247】仮想入力ポートモデルV407は、キー入
力信号をそのままCPUモデル4に返すだけなので数μ
sで処理が終わる。これに対して、ハードウェアモデル
21内の入力ポートモデルH309は、接続情報とこれ
に入力される端子信号をもとに演算を行い、各内部回路
に信号を伝搬させ、出力端子まで到達させることでキー
入力信号をCPUモデル4に返すので、処理が終わるの
に数10msもかかる。
【0248】図16は、機能関数選択テーブル31の内
容例であり、機能関数I/Fモデル5が、仮想モデル7
1を選択可能な機能関数とその判断条件を示す。ここ
で、PORTBは、出力ポートモデルH311のI/O
アドレスを表すラベルである。これ以外の本テーブル中
の引数とその意味は図6についての説明がそのまま当て
はまるため説明は省略する。機能関数選択テーブル31
の内容は、ハードウェアシミュレーションの対象を何に
するか、何を仮想モデルで置き換えられるかによって決
まり、常に固定されているものではない。また、機能関
数選択テーブル31には、仮想モデルに登録されていな
い機能関数を登録することはできないが、仮想モデルに
登録されているモデルに対応する機能関数を全て登録す
る必要はない。
【0249】図17は、第2実施例における周辺回路処
理サブルーチンの詳細フローチャートを示し、図9にお
ける周辺回路処理サブルーチンS103,S108によ
って呼び出されるものである。同図中、実線は処理の流
れ、点線はデータの流れを示す。
【0250】第1実施例と同様、CPUモデル4が、命
令コードをフェッチしたり、ロード命令やストア命令な
ど周辺装置との入出力を伴う命令を実行した場合、周辺
回路処理サブルーチンが呼び出される。以下、図13を
参照して、図17の流れを説明する。
【0251】図17において、CPUモデル4が機能関
数I/Fモデル5に機能関数を渡すと、ステップS40
1で、機能関数I/Fモデル5は、機能関数選択テーブ
ル31を参照して、仮想モデルシミュレーション(S4
02)を使うか、ハードウェアシミュレーション(S4
09)を使うか判断する。機能関数I/Fモデル5は、
CPUモデル4から受け取った機能関数が機能関数選択
テーブル31に登録されていて、かつその判断条件を満
たしていれば、「Y」へ進み、仮想モデルシミュレーシ
ョン(S402)を実行し、機能関数が登録されていな
かっり、または判断条件を満たしていなければ、「N」
へ進み、バスI/Fモデルミュレーション(S403)
に移る。
【0252】ステップS402(仮想モデルシミュレー
ション)で、仮想モデル71は、後述の仮想モデルシミ
ュレーションを実行する。実行終了後、ミュレーション
結果を各モデルに付随するファイルやレジスタなどの記
憶手段に保存するとともに、機能関数I/Fモデル5を
介してCPUモデル4にその結果を返す。
【0253】ステップS420(ハードウェアデータ更
新起動)で、仮想モデル71は、仮想モデルシミュレー
ションを実行後、必要に応じてハードウェアデータ更新
起動を行い、ハードウェアモデル21に必要なデータを
供給する。この結果、ハードウェアモデル21は、所定
のファイルやレジスタのデータ更新を行い(S42
3)、仮想モデルシミュレーションの結果をハードウェ
アモデル21に反映する。ここで、プログラムメモリモ
デルH301のように、データ更新する必要がないもの
については、初めから本ステップをスキップするように
してもよい。
【0254】一方、ステップS401において、「N」
に進み、ハードウェアシミュレータ2−1を使う場合に
は、ステップ403に移る。ステップS403(バスI
/Fモデルシミュレーション)で、バスI/Fモデル6
は、機能関数I/Fモデル5から機能関数を受領し、ハ
ードウェアモデルシミュレーションに必要な端子信号に
変換する。なお、バスI/FモデルシミュレーションS
403の詳細は図10におけるバスI/Fモデルシミュ
レーションS203に示すとおりである。また、端子信
号については、第1実施例の図12と同じである。
【0255】ステップS410(シミュレータ間I/F
処理)で、バスI/Fモデル6は、前記端子信号名や数
値、コードなどをハードウェアシミュレータ2−1で使
用する信号端子名や、数値、コードなどに変換したり、
信号授受のタイミングを調整する。なお、マイコンシミ
ュレータ1−1とハードウェアシミュレータ2−1で信
号端子名などのコード体系が同一である場合には、本ス
テップをスキップするようにしてもよい。
【0256】ステップS411(システムI/Fモデル
シミュレーション)で、システムI/Fモデル8は、バ
スI/Fモデル6より、前記端子信号を受領し、ハード
ウェアモデル21に渡す。なお、システムI/Fモデル
シミュレーションS411の詳細は図10におけるシス
テムI/FモデルシミュレーションS211に示すとお
りである。
【0257】ステップS409(ハードウェアシミュレ
ーション)で、ハードウェアモデル21は、入力された
端子信号とハードウェアモデル21の接続情報に基づ
き、モデル内の接続点の状態を演算によって求め、出力
点の状態がどのようになるかを求める。ハードウェアモ
デル21は、このようにして求めた結果を、システムI
/Fモデル8に返す。
【0258】ステップS424(仮想モデル書き替え必
要?)で、ハードウェアモデル21は、機能関数選択テ
ーブル31を参照して、仮想モデル71に付随する所定
のファイルやレジスタのデータ更新を行う必要があるか
否かを判断する。S409で処理したハードウェアシミ
ュレーションが、機能関数選択テーブル31に登録され
ていて、かつ引数が判断条件を満たす場合には、ハード
ウェアモデル21は、「Y」へ進み、ステップS425
の処理に移る。逆に、S409で処理したハードウェア
シミュレーションが、機能関数選択テーブル31に登録
されていないか、または引数が判断条件を満たさない場
合には、ハードウェアモデル21は、「N」へ進み、ス
テップS411の処理に移る。
【0259】仮想モデル71に登録されているサブモデ
ルは、ハードウェアモデル21に必ず存在するので、デ
ータ更新起動(S420)を処理するとき、書き替えの
必要性を判断する必要はなかった。しかし、ハードウェ
アモデル21に登録されているサブモデルは、仮想モデ
ル71に必ずしも存在するとは限らないので、データ更
新起動(S425)を処理する前に、書き替えの必要性
を判断する処理(S424)が必要となる。
【0260】ステップS425(仮想モデルデータ更新
起動)で、ハードウェアモデル21は、ハードウェアモ
デルシミュレーション(S409)の結果を仮想モデル
71に渡し、仮想モデル71は、所定のファイルやレジ
スタのデータ更新を行い、前記結果を反映する。
【0261】ステップS411(システムI/Fモデル
シミュレーション)で、システムI/Fモデル8は、ハ
ードウェアシミュレーション(S409)の結果をステ
ップS410の処理を介してバスI/Fモデル6に返
す。
【0262】ステップS403(バスI/Fモデルシミ
ュレーション)で、バスI/Fモデル6は、ハードウェ
アシミュレーション(S409)の結果を機能関数I/
Fモデル5を介してCPUモデル4に渡す。
【0263】以上の処理が終了すると、本サブルーチン
を呼び出したステップS103またはS108(図9)
に戻る。
【0264】図18は、第2実施例における仮想モデル
シミュレーションS402(図17)の詳細フローチャ
ートを示す。
【0265】図18において、ステップS601で、仮
想モデル71は、機能関数I/Fモデル5から機能関数
を受け取ると、図7と同様、機能関数を仮想モデル71
のコード体系にあうように仮想関数に変換する。例え
ば、命令フェッチ関数FETCH(m)はMEMmに、
データメモリ読み書き関数MEMRW(m)はDME
に、ポートA入力関数IORD(PORTA)はIPT
aに、ポートB出力関数IOWR(PORTB、n)は
KDCnにそれぞれ変換される。なお、コード体系が同
じであれば、本ステップは省略してもよい。
【0266】ステップS602で、仮想モデル71は、
仮想関数がFETCH関数MEMmであるかを判断し、
MEMmであれば、「Y」へ進み、ステップS603へ
移る。MEMmでなければ、「N」へ進み、ステップS
604へ移る。
【0267】ステップS604で、仮想モデル71は、
仮想関数がデータメモリ読み書き関数DMEmであるか
を判断し、DMEmであれば、「Y」へ進み、ステップ
S605へ移る。DMEmでなければ、「N」へ進み、
ステップS610へ移る。
【0268】ステップS610で、仮想モデル71は、
仮想関数がポートA入力関数IPTaであるかを判断
し、IPTaであれば、「Y」へ進み、ステップS61
1へ移る。IPTaでなければ、「N」へ進み、ステッ
プS612へ移る。
【0269】ステップS612で、仮想モデル71は、
仮想関数がポートB出力関数KDCnであるかを判断
し、KDCnであれば、「Y」へ進み、ステップS61
3へ移り、KDCnでなければ、「N」へ進み、ステッ
プS614へ移る。
【0270】ステップS614で、仮想モデル71は、
受領した仮想関数が登録されていない関数であったり、
パラメータが違っていたりすると、表示装置にエラーメ
ッセージを表示する。
【0271】ステップS603で、仮想モデル71内の
仮想プログラムメモリモデルV401(図15)は、テ
ーブルを参照して、m番地の命令コードをCPUモデル
4に返す。テーブルは、図5に示すターゲットプログラ
ムのテーブルに相当し、これを予めVPMテーブルV4
02に登録してある。仮想プログラムメモリモデルV4
01は、仮想関数を示すシンボルMEMmを受け取る
と、このシンポルに対応する戻り値を読み出し、機能関
数I/Fモデル5を介してCPUモデル4に返し、処理
を終了する。
【0272】通常、VPMテーブルV402のプログラ
ム内容は書き替わることがないので、プログラムメモリ
モデルH301のHPMテーブルH302の内容を更新
する必要がない。従って、図17では、ステップS60
3終了後、ステップS420を介さずに仮想モデルシミ
ュレーションS402の処理を終了するようにしてい
る。
【0273】ステップS605で、仮想モデル71内の
仮想データメモリモデルV403(図15)は、CPU
モデル4とデータを授受し、テーブル内の指定の場所に
データを読み書きする。テーブルは、データメモリモデ
ルの記憶容量に相当する行の記憶領域を有し、テーブル
の1つの行はアドレス情報を含むシンボル(DMEm)
と読み書きデータとで構成される。VDMテーブルV4
04には、データメモリモデルの最下位アドレスkから
最上位アドレスlまでのシンボルDMEk〜DMElが
予め付与されている。書き込みの場合、仮想データメモ
リモデルV403は、CPUモデル4から仮想関数「D
EMm,d」を受け取ると、このシンポルに対応する位
置DMEmにデータdを書き込む。読み出しの場合に
は、仮想データメモリモデルV403は、CPUモデル
4からデータ情報を含まない仮想関数「DEMm」を受
け取ると、このシンポルに対応する位置DMEmからデ
ータdを読み出し、このデータdを機能関数I/Fモデ
ル5を介してCPUモデル4に返す。
【0274】ステップS611で、仮想モデル71内の
仮想入力ポートモデルV407(図15)は、キー入力
GUI181から押下されたキーマトリクスの出力レベ
ル情報を取得し、一旦VIP入力レジスタV408に保
存するとともに、その出力レベル情報を戻り値として機
能関数I/Fモデル5を介してCPUモデル4に返し、
処理を終了する。一方、VIP入力レジスタV408の
内容は、ステップS420の処理に渡され、データ更新
I/Fモデル9(図13)はHIP入力レジスタ(図1
4)の内容を更新する。
【0275】ステップS613(データ出力・デコード
処理)で、仮想モデル71内の仮想キーデコーダモデル
V409(図15)は、受領した機能関数IOWR(P
ORTB、D*)をもとに、出力ポートモデルH311
とデコーダモデルH312(図15)と等価な端子出力
レベルが得られるように処理して、この端子出力をキー
入力GUI181に供給する。例えば、ポート端子(P
B1,PB0)にデータ(d1,d0)を出力する場
合、機能関数は、IOWR(PORTB、d1・d0)
で表され、仮想キーデコーダモデルV409は、次の論
理演算を行い、端子出力レベルD3,D2,D1,D0
を得る。
【0276】D3=d1*d0 D2=d1*/d0 D1=/d1*d0 D0=/d1*/d0 ここで、「/」は信号d1またはd0の論理否定(反転
信号)を意味する。
【0277】得られた演算結果は、VKD出力レジスタ
V410に保存されるとともに、VIP入力レジスタV
408の内容は、ステップS420の処理に渡され、デ
ータ更新I/Fモデル9(図13)はHKD出力レジス
タ(図14)の内容を更新する。
【0278】このように、データ出力・デコード処理S
613は、ハードウェアモデルの処理とはことなり、前
記演算によってキー入力GUI181のキーマトリクス
モデルへ供給する端子出力レベルを求めるので、数μs
の短時間で仮想モデルシミュレーション結果を得ること
ができる。
【0279】ステップS420(ハードウェアモデルデ
ータ更新起動)で、仮想モデル71は、各テーブルV4
04、または各レジスタV408,V410の内容を、
データ更新I/Fモデル9(図13)に渡す。データ更
新I/Fモデル9は、ステップS423(図17)のデ
ータ更新を起動し、ハードウェアモデル21内の仮想モ
デルに対応する各テーブルH304、または各レジスタ
H310,H313の内容を更新する。
【0280】以上の仮想モデルシミュレーションS40
2の処理が終了すると、マイコンシミュレータ1−1
は、図17の処理に戻り、ステップS402を終了し
て、更に図9のサブルーチン呼び出し元S103または
S108へ戻る。
【0281】図19は、図17のうち1点鎖線で示され
た部分、即ち、ハードウェアシミュレーションS409
と仮想モデルデータ更新S424,S425の詳細フロ
ーチャートを示す。
【0282】まず、ハードウェアモデル21は、システ
ムI/Fモデル8から端子信号を受け取ると、S801
の処理に移る。
【0283】ステップS801(MEM=0?)で、ハ
ードウェアモデル21(図13)は、端子信号MEMを
確認して、プログラムメモリモデルH301またはデー
タメモリモデルH303の呼び出しか否かを判断する。
端子信号MEMが「0」であれば、ハードウェアモデル
21は、「Y」へ進み、ステップS802の処理に移
り、「1」であれば、「N」へ進み、ステップS804
の処理に移る。
【0284】ステップS802(I/O=0?)で、ハ
ードウェアモデル21(図13)は、端子信号I/Oを
確認して、メモリを除く周辺回路H309,H311
(図14)の呼び出しか否かを判断する。端子信号I/
Oが「0」であれば、ハードウェアモデル21は、
「Y」へ進み、ステップS807の処理に移り、「1」
であれば、「N」へ進み、ステップS809の処理に移
る。
【0285】メモリ関連の処理である場合、ステップS
802の処理に移る。
【0286】ステップS802(0≦ADRS<200
0?)で、ハードウェアモデル21(図13)は、端子
信号ADRSを確認して、アドレス信号が0000H番
地以上で2000H番地未満かを判断する。端子信号A
DRSが前記範囲内であれば、ハードウェアモデル21
は、プログラムメモリモデルH301(図14)の読込
処理であると判断して「Y」へ進み、ステップS810
の処理に移り、範囲外であれば、「N」へ進み、ステッ
プS803の処理に移る。
【0287】ステップS803(ADRS≧2000
?)で、ハードウェアモデル21(図13)は、端子信
号ADRSを確認して、アドレス信号が2000H番地
以上かを判断する。端子信号ADRSが前記範囲内であ
れば、ハードウェアモデル21は、データメモリモデル
H303(図14)の読み書き処理であると判断して
「Y」へ進み、ステップS811の処理に移り、範囲外
であれば、「N」へ進み、ステップS809の処理に移
る。
【0288】メモリ以外の周辺回路関連の処理である場
合、ステップS807の処理に移る。
【0289】ステップS807(IPT?)で、ハード
ウェアモデル21(図13)は、端子信号ADRSを確
認して、アドレス信号がPORTA番地か否かを判断す
る。端子信号ADRSがPORTA番地であれば、ハー
ドウェアモデル21は、入力ポートモデルH309(図
14)の読み込み処理であると判断して「Y」へ進み、
ステップS814の処理に移り、PORTA以外であれ
ば、「N」へ進み、ステップS808の処理に移る。
【0290】ステップS808(OPT?)で、ハード
ウェアモデル21(図13)は、端子信号ADRSを確
認して、アドレス信号がPORTB番地か否かを判断す
る。端子信号ADRSがPORTB番地であれば、ハー
ドウェアモデル21は、出力ポートモデルH309(図
14)の書き込み処理であると判断して「Y」へ進み、
ステップS815の処理に移り、PORTB以外であれ
ば、「N」へ進み、ステップS809の処理に移る。
【0291】ステップS801〜S804、S807,
S808で何れも「N」であった場合、ステップS80
9(エラー処理)で、ハードウェアモデル21(図1
3)は、該当処理が存在しない旨を表示装置(図2)に
表示するとともに、システムI/Fモデル8にエラー信
号「ERR」を渡して、処理を終了する。
【0292】一方、ステップS810(プログラム読込
処理)で、プログラムメモリモデルH301は、HPM
テーブルH302(図14)を参照して、アドレス端子
信号ADRSに対応する命令コードを読み出し、命令コ
ードをシステムI/Fモデル8に返す。ここで、プログ
ラムメモリモデルH301は、接続情報に基づき入力さ
れた端子信号を各接続点に伝搬させ、出力端子の信号レ
ベル(命令コード)を演算処理して求める。このため、
回路規模が大きいほど、演算結果が出るのに時間がかか
る。
【0293】プログラムメモリモデルH301内のHP
MテーブルH302は、シミュレーションの最中に内容
が書き変わることがないので、仮想モデル71のデータ
更新をする必要はなく、S810の処理が終了すると、
図17のステップS409に戻り、S411の処理に移
る。
【0294】ステップS811(データメモリ読み書き
処理)で、データメモリモデルH303は、システムI
/Fモデル8との間で授受する記憶データをHDMテー
ブルH304(図14)に読み書きする。書き込みの場
合、データメモリモデルH303は、アドレス端子信号
ADRS番地とこれに対応する記憶データDATAをシ
ステムI/Fモデル8から受け取り、HDMテーブルH
304内の所定の領域に記憶する。読み出しの場合、デ
ータメモリモデルH303は、アドレス端子信号ADR
S番地をシステムI/Fモデル8から受け取り、HDM
テーブルH304内の所定の領域から記憶データDAT
Aを読み出して、システムI/Fモデル8に返す。ここ
で、データメモリモデルH303は、接続情報に基づき
入力された端子信号を各接続点に伝搬させ、出力端子の
信号レベル(記憶データ)を演算処理して求める。本処
理終了後は、ステップS424に移る。
【0295】ステップS815(データ出力・デコード
処理)で、出力ポートモデルH311(図14)は、シ
ステムI/Fモデル8から、アドレス信号PORTB、
データDATAなどを受け取り、接続情報に基づいて、
ポート出力信号を求める。デコードモデルH312(図
14)は、ポート出力信号を入力信号として、接続情報
に基づいて、デコード出力信号を求める。このデコード
出力信号は、HKD出力レジスタH313に保存される
とともに、キー入力GUI181と、データ更新I/F
モデル9に供給される。この結果、仮想モデル71内の
VKDレジスタV410(図15)の内容もHKD出力
レジスタH313の内容と等価になる。本処理終了後
は、ステップS424に移る。
【0296】ステップS814(ポート入力処理)で、
入力ポートモデルH309(図14)は、キー入力GU
I181からキーマトリクスの出力に相当する信号を受
け取り、HIPレジスタH310(図14)に保存する
とともに、データ更新I/Fモデル9に供給する。この
結果、仮想モデル71内のVIPレジスタV408(図
15)の内容もHIP入力レジスタH310の内容と等
価になる。
【0297】また、HIPレジスタH310の内容は、
CPUモデル4の読み出し命令によって、システムI/
Fモデル8を介してCPUモデル4に返される。この処
理も、上述と同様、接続情報に基づいて行われる。本処
理終了後は、ステップS424に移る。
【0298】ステップS424(仮想モデル書替?)
で、データ更新I/Fモデル9は、機能関数選択テーブ
ル31(図13、図16)を参照して、ハードウェアシ
ミュレーションS409の結果を仮想モデル71に反映
するか否かを判断する。本実施例では、機能関数IOW
R(PORTB,D*,I/O,WR)だけが仮想モデ
ルシミュレーションS402を実行し、データ更新対象
であるので、ステップS815の処理を実行した場合だ
け「Y」に進み、ステップS425の処理に移る。ステ
ップS811,S814の処理を実行した場合は「N」
に進み、ハードウェアモデルシミュレーションを終了す
る。
【0299】ステップS425(仮想モデルデータ更新
起動)で、ハードウェアモデル21は、更新すべきデー
タをデータ更新I/Fモデル9に供給し、これを仮想モ
デル71(図13)に渡す。仮想モデル71は、データ
更新S421(図17)を起動して、所定のテーブルや
レジスタの内容を更新する。
【0300】以上の処理が終了すると、図17のステッ
プS409,S424,S425の処理を終了し、ステ
ップ411の処理に移る。
【0301】図20は、ハードウェアモデルデータ更新
S423(図17)の詳細フローチャートを示す。
【0302】仮想モデルシミュレーションS402(図
17)を実行した結果、ハードウェアモデルデータ更新
起動S420(図18)が処理されると、仮想モデル7
1は、更新すべきデータと、更新先の情報をデータ更新
I/Fモデル9に供給し、図20の開始に移る。
【0303】ステップS501(仮想→ハード・コード
変換)で、データ更新I/Fモデル9は、受領した更新
データをハードウェアモデルシミュレータ2−1(図1
3)内のコード体系に変換する。例えば、仮想データメ
モリモデルV403内のVDMテーブルV404(図1
5)が書き替えられた場合、シンボルDMEm,と更新
データDATAを「C_HDME、DATA」に変換す
る。また、HKD出力レジスタH313(図14)が書
き替えられた場合、デコード出力信号「D3,D2,D
1,D0」を「C_HKDC、D3,D2,D1,D
0」に変換する。
【0304】仮想モデルシミュレータ71とハードウェ
アモデルシミュレータ2−1とでコード体系が同じ場合
には、本ステップを省略してもよい。処理終了後、ステ
ップS503に移る。
【0305】ステップS503(C_HDME?)で、
データ更新I/Fモデル9(図13)は、受領したコー
ドが「C_HDME」であるか否かを判断する。「C_
HDME」であれば「Y」に進み、ステップS509の
処理に移る。「C_HDME」でなければ「N」に進
み、ステップS507の処理に移る。
【0306】ステップS507(C_HKDC?)で、
データ更新I/Fモデル9は、受領したコードが「C_
HKDC」であるか否かを判断する。「C_HKDC」
であれば「Y」に進み、ステップS513の処理に移
る。「C_HKDC」でなければ「N」に進み、ステッ
プS514の処理に移る。
【0307】ステップS514(エラー処理)で、デー
タ更新I/Fモデル9は、受領したコードがいずれにも
該当しない場合には、表示装置(図2)にエラー発生の
表示を行い、処理を終了する。
【0308】ステップS509で、データ更新I/Fモ
デル9は、コード「C_HDME、DATA」を受領す
ると、データメモリモデルH303内のHDMテーブル
H304(図14)を書き替え、処理を終了する。
【0309】ステップS513で、データ更新I/Fモ
デル9は、コード「C_HKDC、D3,D2,D1,
D0」を受領すると、出力ポート・デコーダモデルH3
11、H312内のHKDテーブルH313(図14)
を書き替え、処理を終了する。
【0310】以上の処理が終了すると、図17のステッ
プS420を終了し、図9のステップS103またはS
108に戻る。
【0311】このようにして、仮想モデルシミュレーシ
ョンS402の結果がハードウェアモデル21のテーブ
ルやレジスタに反映される。なお、仮想モデル71を使
用するサブモデルで、データ更新が必要になるものは、
図20に示すデータ更新S423の処理に予め登録して
おく必要がある。また、本実施例のように、仮想モデル
を使わないデータ更新処理、例えばS509を余分に登
録しておくこともできる。この結果、ハードウェアモデ
ルデータ更新処理S423の内容を書き替えることな
く、機能関数選択テーブル31(図13)の内容を書き
替えるだけで、データメモリモデルを仮想モデルシミュ
レーションに切り替えた場合にも即応できるようにな
る。
【0312】図21は、仮想モデルデータ更新S421
(図17)の詳細フローチャートを示す。
【0313】ハードウェアモデルシミュレーションS4
09(図17)を実行した結果、仮想モデルデータ更新
起動S425(図19)が処理されると、ハードウェア
モデル21(図13)は、更新すべきデータと、更新先
の情報をデータ更新I/Fモデル9に供給し、図21の
開始に移る。
【0314】ステップS701(ハード→仮想・コード
変換)で、データ更新I/Fモデル9は、受領した更新
データを仮想モデルシミュレータ71(図13)内のコ
ード体系に変換する。例えば、データメモリモデルH3
03内のHDMテーブルH304(図14)が書き替え
られた場合、アドレス信号ADRSと更新データDAT
Aをシンボル「C_DMEm」と「DATA」に変換す
る。また、VKD出力レジスタV410(図15)が書
き替えられた場合、デコード出力信号「D3,D2,D
1,D0」を「C_KDC、D3,D2,D1,D0」
に変換する。
【0315】仮想モデルシミュレータ71とハードウェ
アモデルシミュレータ2−1とでコード体系が同じ場合
には、本ステップを省略してもよい。処理終了後、ステ
ップS703に移る。
【0316】ステップS703(C_DME?)で、デ
ータ更新I/Fモデル9(図13)は、受領したコード
が「C_DME」であるか否かを判断する。「C_DM
E」であれば「Y」に進み、ステップS710の処理に
移る。「C_DME」でなければ「N」に進み、ステッ
プS707の処理に移る。
【0317】ステップS707(C_KDC?)で、デ
ータ更新I/Fモデル9は、受領したコードが「C_K
DC」であるか否かを判断する。「C_KDC」であれ
ば「Y」に進み、ステップS714の処理に移る。「C
_KDC」でなければ「N」に進み、ステップS708
の処理に移る。
【0318】ステップS708(エラー処理)で、デー
タ更新I/Fモデル9は、受領したコードがいずれにも
該当しない場合には、表示装置(図2)にエラー発生の
表示を行い、処理を終了する。
【0319】ステップS710(VDMテーブル書き替
え処理)で、データ更新I/Fモデル9は、コード「C
_DME、DATA」を受領すると、仮想データメモリ
モデルV403内のVDMテーブルV404(図15)
を書き替え、処理を終了する。
【0320】ステップS714で、データ更新I/Fモ
デル9は、コード「C_KDC、D3,D2,D1,D
0」を受領すると、仮想キーデコーダモデルV409内
のVKDテーブルV410(図15)を書き替え、処理
を終了する。
【0321】以上の処理が終了すると、図17のステッ
プS425を終了し、ステップS411に移る。このよ
うにして、ハードウェアモデルシミュレーションS40
9の結果が仮想モデル71のテーブルやレジスタに反映
される。なお、ハードウェアモデル21を使用するサブ
モデルで、データ更新が必要になるものは、図21に示
すデータ更新S421の処理に予め登録しておく必要が
ある。また、本実施例のように、仮想モデルを使わない
データ更新処理、例えばS710を余分に登録しておく
こともできる。この結果、仮想モデルデータ更新処理S
421の内容を書き替えることなく、機能関数選択テー
ブル31(図13)の内容を書き替えるだけで、仮想デ
ータメモリモデルをハードウェアモデルシミュレーショ
ンに切り替えた場合にも即応できるようになる。
【0322】[ターゲットプログラム例による動作の説
明]図5および図8に示したプログラム例により、図1
7〜図21のフローチャートを使用してその動作につい
て説明する。第2実施例の特徴部分のみの説明に止めて
第1実施例との重複を避けるため、図8のターゲットプ
ログラム・リストの第1行と第2行について説明するこ
ととする。
【0323】第2実施例においても、図9に示したCP
Uモデル4による処理フローはそのまま適用できる。
【0324】さて、先のプログラム例の第1行は、I/
OポートBモデル14がデコーダモデル15に、(PB
1,PB0)=(0,1)を出力し、デコーダモデル1
5はキーマトリクスモデル13に(D3,D2,D1,
D0)=(0,0,1,0)を出力するというものであ
ったが、第2実施例では、これを仮想モデルシミュレー
ションで行い、その結果をハードウェアモデル21に反
映させる。また、先のプログラムの第2行は、キーマト
リクスモデル13の状態(PA3,PA2,PA1,P
A0)=(0,1,0,0)をI/OポートAモデル1
2に取り込むというものであったが、これをハードウェ
アシミュレーションにより行う。以下、各行ごとに詳細
に説明する。
【0325】《ROMアドレス1001Hの処理》図9
のステップS101で、CPUモデル4は、プログラム
カウンタPCの値「1001H」を取得する。
【0326】ステップS102で、CPUモデル4は、
機能関数FETCH(1001H)を生成し、機能関数
I/Fモデル5に渡す。
【0327】ステップS103で、周辺回路処理サブル
ーチンが呼び出される。
【0328】図17のステップS401で、機能関数I
/Fモデル5(図13)は、機能関数選択テーブル31
(図16)に関数が登録されていて、且つその引数の条
件を満たしているか、チェックを行う(図17)。FE
TCH関数は登録されていて、アドレスの条件を満たし
ているので「Y」に進み、機能関数を仮想モデル71に
渡す。
【0329】ステップS402で、仮想モデルシミュレ
ーションS402を実行する。詳細フローチャートを図
18に示す。
【0330】図18のS601で、仮想モデル71は、
機能関数I/Fモデル5から受領した機能関数FETC
H(1001H)を、仮想関数変換テーブル(図7相
当)により、仮想関数「MEM1001」に変換する。
【0331】ステップS602で、仮想モデル71は、
仮想関数「MEM1001」がメモリを読み出すための
関数(MEM関数)か判断する。今の場合、MEM関数
なので「Y」へ進む。
【0332】S603で、仮想モデル71は、仮想プロ
グラムメモリモデルV401内のVPMテーブルV40
2(図15)を参照し、ラベル「MEM1001」に対
応する戻り値「A201」(図5)を取得し、機能関数
I/Fモデル5にこれを返す。なお、この場合は、仮想
モデル7に書き込むわけではないため、ハードウェアデ
ータ更新起動(S420)はバイパスされる。
【0333】以上で、仮想モデルシミュレーションS4
02が終了し、図9に戻る。
【0334】図9のステップS104で、機能関数I/
Fモデル5はCPUモデル4に戻り値「A201」を渡
す。CPUモデル4は、戻り値「A201」を読み込
み、命令レジスタ(不図示)に格納する。
【0335】ステップS105で、CPUモデル4は、
戻り値「A201」を解析し、「MOV PORTB,
#01H」であると解読する。
【0336】ステップS106で、CPUモデル4は、
解読した命令が周辺回路の読み書きに関するものかを判
断し、「Y」に進む。
【0337】ステップS107で、CPUモデル4は、
解読した命令に対応する機能関数IOWR(PORT
B,#01H、I/O、WR)を生成し、機能関数I/
Fモデル5に渡す。
【0338】ステップS108で、周辺回路処理サブル
ーチン呼出す。
【0339】図17のステップS401で、機能関数I
/Fモデル5は、仮想モデル71を呼び出すかどうかの
判断を行う。IOWR関数は、図16の機能関数選択テ
ーブル31に登録されていて、且つその引数の条件を満
たしているので「Y」に進むとともに、機能関数IOW
R(PORTB,#01H)を仮想モデル71に渡す。
【0340】ステップS402で、仮想モデルシミュレ
ーションS402を実行する。
【0341】図18のS601で、仮想モデル715
は、仮想関数変換テーブル(図7相当)により、機能関
数IOWR(PORTB,#01H)を仮想関数KDC
01に変換する。
【0342】ステップS602で、「N」へ進む。
【0343】ステップS604で、「N」へ進む。
【0344】ステップS610で、「N」へ進む。
【0345】ステップS612で、「Y」へ進む。
【0346】ステップS613で、仮想モデル71の仮
想キーデコーダモデルV409(図15)でポート出力
およびデコーダ処理を論理演算により行い、その結果を
VKD出力レジスタV410に保存する。具体的には、
第1実施例と同様に、デコーダ出力(D3,D2,D
1,D0)=(0,0,1,0)となる。これをキー入
力GUI181に出力し、キーマトリクスモデル13の
右から2本目の出力を「1」にする。
【0347】ステップS420で、この場合は、仮想モ
デル71への書き込みを行ったので、ハードウェアモデ
ルデータ更新S423を起動する。
【0348】図20のステップS501で、データ更新
I/Fモデル9は、VKD出力レジスタV410から読
み出した仮想コードKDC(0010)をハードウェア
コード「C_HKDC(0010)」に変換する。
【0349】ステップS503で、「N」へ進む。
【0350】ステップS507で、「Y」へ進む。
【0351】ステップS513で、データ更新I/Fモ
デル9は、ハードウェアモデル21のHKD出力レジス
タH313(図14)のデータを更新する。この結果、
ハードウェアモデル21のデコーダモデル15の出力
(D3,D2,D1,D0)=(0,0,1,0)とな
り、仮想モデル71側と整合することとなる。
【0352】以上で、図20の処理を終了し、更に図1
8の処理を終了し、図9に戻る。
【0353】図9のステップS109で、CPUモデル
4は、機能関数I/Fモデル5からシミュレーション完
了信号「DONE」を受領する。
【0354】ステップS110で、CPUモデルシミュ
レータ4は、「N」へ進み、ステップS101へ戻る。
【0355】以上で、プログラムの第1行目のシミュレ
ーションが終了する。
【0356】《ROMアドレス1002Hの処理》図9
のステップS101〜S106で、PCの値「1002
H」取得から、「MOV A,PORTA」との命令解
読までは、第1行目と同様の手順のため説明は省略す
る。
【0357】ステップS107で、CPUモデル4は、
解読した命令に対応する機能関数IORD(PORT
A,I/O,RD)を生成し、機能関数I/Fモデル5
に渡す。
【0358】ステップS108で、周辺回路処理サブル
ーチンを呼出す。
【0359】図17のステップS401で、この機能関
数IORD(PORTA,I/O,RD)は図16の機
能関数選択テーブル31に登録されていないので「N」
へ進む。
【0360】ステップS403(バスI/Fモデルシミ
ュレーション)で、バスI/Fモデル6(図13)は、
機能関数IORD(PORTA,I/O,RD)を端子
信号「ADRS,/CS,/RD」などに変換する。
【0361】ステップS410(シミュレータ間I/F
処理)で、バスI/Fモデル6(図13)は、端子信号
名をハードウェアシミュレータ2−1対応に変換した
り、データ授受のタイミングを調整する。
【0362】ステップS411(システムI/Fモデル
シミュレーション)で、システムI/Fモデル8は、端
子信号(図12)を受け取る。端子信号の授受動作は第
1実施例と同様であるからその説明は省略する。
【0363】ステップS409で、ハードウェアシミュ
レーションを実行する。
【0364】以下、ハードウェアシミュレーションS4
09の詳細を説明する。
【0365】図19のステップS801で、ハードウェ
アモデル21(図13)は、端子信号MEMが「0」
か、すなわちメモリの読み書きサイクルかを判断し、
「N」へ進む。
【0366】ステップS804で、ハードウェアモデル
21は、端子信号I/Oが「0」か、すなわちメモリ以
外の周辺回路の読み書きサイクルか判断し、「Y」へ進
む。
【0367】ステップS807で、アドレス信号ADR
Sが「PORTA」か判断し、「Y」へ進む。
【0368】ステップS814(ポート入力処理)で、
入力ポートモデルH309は、接続情報に基づき各接続
点のレベルを演算によって求める。いま、キー入力GU
I181のキーマトリクスの右から2番目で上から3番
目のスイッチが押下されているとすると、デコーダ出力
D1は「1」であるので、入力ポートAモデル12の入
力PA2も「1」となる。従って、入力ポートAに(P
A3,PA2,PA1,PA0)=(0,1,0,0)
を得る。入力ポートモデルH309(図14)のデータ
は、HIP入力レジスタ310に記憶される。
【0369】ステップS424(仮想モデル書替?)
で、ハードウェアシミュレーションS409の結果を仮
想モデルに反映するか判断する。PORTA( )は、
図16の機能関数選択テーブル31にないので、「N」
へ進む。
【0370】以上で、図19の処理を終了し、図17の
処理に戻る。
【0371】図17のステップS411(システムI/
Fモデルシミュレーション)で、システムI/Fモデル
8は、HIP入力レジスタ310からシミュレーション
結果を読み出して、端子信号出力(0,1,0,0)即
ち「#04H」を、ステップS410(シミュレータ間
I/F処理)を介してバスI/Fモデル6に渡す。
【0372】ステップS403で、バスI/Fモデル6
は、「#04H」を受領し、機能関数I/Fモデル5に
渡し、更にCPUモデル4に渡す。
【0373】図9のステップS109で、CPUモデル
4は、機能関数I/Fモデル5より受領した「#04
H」をレジスタAに格納する。
【0374】このように、第2実施例によれば、第1実
施例と同様、仮想モデルを使用することで、ハードウェ
アモデルシミュレーションに要する時間を大幅に短縮で
きるとともに、1つの周辺回路のシミュレーション結果
が、他の周辺回路のシミュレーション結果に影響を及ぼ
す場合であっても、仮想モデルのシミュレーション結果
をハードウェアモデルに反映したり、ハードウェアモデ
ルのシミュレーション結果を仮想モデルに反映させるこ
とで、シミュレーション結果に誤検証を生ずることな
く、正確なシミュレーションができるようになる。
【0375】また、第1実施例のように、仮想モデルを
使用できる条件として、1つの周辺回路のシミュレーシ
ョン結果が、他の周辺回路のシミュレーション結果に影
響を及ぼさないという制約がなくなるので、仮想モデル
として登録できるサブモデルの種類を第1実施例に比べ
て増やすことができる。
【0376】また、ハードウェアシミュレータを使用す
る対象を、仮想関数選択テーブルの内容を書き替えるだ
けで、簡単に選択することができる。この結果、問題の
残ったハードウェアモデルだけを集中して検証すること
ができるようになり、短期間でターゲットプログラムや
周辺回路の問題を解決することができる。例えば、キー
入力モデルのいずれかに異常があるが、出力ポート側は
正常に動作していることが確かめられれば、出力ポート
側を仮想モデルに登録することで、デコード出力までの
シミュレーション時間を短縮し、入力ポート側を重点的
に検証することができる。
【0377】[第3実施例]第1実施例および第2実施
例では、ハードウェアシミュレーションはマイコンシミ
ュレータからの周辺回路処理ルーチンとして位置付けさ
れ、IORD,IOWR等入出力に関する機能関数によ
り呼出されていた。しかしながら、例えば通信回線から
のデータ受信等外部要因による事象を受け入れる電子機
器もあり得る。第3実施例は、このような電子機器に対
して有効なシステムシミュレーションを実行できるシス
テムシミュレータおよびシステムシミュレーション方法
を提供するものである。すなわち、ハードウェアモデル
の外部端子を監視し、状況変化をキャッチするとハード
ウェアシミュレーションを起動する。このときのハード
ウェアシミュレーションは周辺回路処理サブルーチンに
おけるハードウェアシミュレーションに対する割り込み
として優先的に扱われる。ハードウェアシミュレーショ
ンの結果は、必要に応じて仮想モデルの更新に反映さ
れ、以後仮想モデルシミュレーションによって代替でき
るような構成とすることにより、システムシミュレーシ
ョンの高速化を図るのである。
【0378】図22は、本発明のシステムシミュレータ
の第3実施例の機能ブロック図である。図22と図13
を対比すれば、第3実施例は第2実施例におけるハード
ウェアシミュレータ2−1に割込I/Fモデル24とバ
ス要求I/Fモデル25とを付加した点が異なっている
のがわかる。また、シミュレーション装置のSIO端子
23およびシリアル入出力I/FモデルS_SIO(図
2)を顕示した。割込I/Fモデル24とバス要求I/
Fモデル25はCPUモデル42と接続されてシミュレ
ータ間I/Fモデルを構成するが、それらの接続端子信
号はターゲットプログラムに基づく信号変化とは無関係
に変化するため、バスI/Fモデル6およびシステムI
/Fモデル8とは別個に設けたものである。
【0379】割込I/Fモデル24は、ハードウェアモ
デル22からの割込み要求信号をCPUモデル42に伝
えたり、CPUモデル42からハードウェアモデル22
側に割込み許可信号を伝えたりする。
【0380】バス要求I/Fモデル25は、ハードウェ
アモデル22からのバス開放要求信号をCPUモデル4
2に伝えたり、CPUモデル42からハードウェアモデ
ル22側にバス使用許可信号を伝える。
【0381】シリアル入出力I/FモデルS_SIO
は、SIO端子23から入力される信号を復調して仮想
モデル72あるいは所定の記憶領域S_RAM(図2)
に渡し、また仮想モデル72あるいは所定の記憶領域S
_RAMから入力される信号を変調してSIO端子23
に出力する。
【0382】第3実施例においても、図2に示したシミ
ュレーション装置のブロック図およびその説明は第1実
施例および第2実施例と同様に適用できる。さらに、こ
れまでの実施例では使用されることがなかった割込制御
装置S_INT,DMA装置S_DMAおよびシリアル
入出力I/FモデルS_SIOが有用になる。
【0383】図23は第3実施例におけるハードウェア
モデル22の構成図であり、図14に示した第2実施例
におけるハードウェアモデル21に対して、HDA設定
レジスタH306付きDMAモデルH305、およびH
SI設定レジスタH308付きSIOモデルH307が
付加されている。DMAモデルH305,SIOモデル
H307は、システムI/Fモデル8と接続されるとと
もに、それぞれバス要求I/Fモデル25,割込I/F
モデル24と接続される。また、HDA設定レジスタH
306,HSI設定レジスタH308は、データ更新I
/Fモデル9と接続され、それぞれDMAモデルH30
5,SIOモデルH307の更新のために使用されると
ともに、仮想モデル72の更新のために出力される。
【0384】SIOモデルH307は、SIO端子23
と接続され、SIO端子23は図示しない通信端末と接
続され、通信データを授受する。SIOモデルH307
は、通信端末から1バイト分のデータを受信すると、割
込み要求信号を割込みI/Fモデル24を介してCPU
モデル42に出力する。さらに、受信データをデータメ
モリモデルH303にDMA転送するため、DMAモデ
ルH305にデータ転送要求信号DRQを出力する。D
MAモデルH305にデータ転送要求信号DRQが受け
付けられると、SIOモデルH307は、1バイトの受
信データをDMAモデルH305に出力する。これらの
処理はいずれも、入力端子に所定の端子信号を与え、接
続情報に基づき各接続点および出力端子の信号レベルを
演算により求めることにより行われる。
【0385】HSI設定レジスタH308には、CPU
モデル42のストア命令により通信速度やパリティなど
のパラメータを設定することができる。
【0386】DMAモデルH305は、CPUモデル4
2を介さずにデータ転送を可能にするもので、データメ
モリモデルH303の所定の領域の記憶内容を他の領域
に転送したり、SIOモデルH307との間でデータ転
送を行う。本実施例では、SIOモデルH307で受信
したデータをデータメモリモデルH303に転送する場
合を例に説明する。
【0387】DMAモデルH305は、SIOモデルH
307からデータ転送要求信号DRQを受け付けると、
CPUモデル42にバス開放要求信号をバス要求I/F
モデル25を介してCPUモデル42に出力する。CP
Uモデル42は、バス開放要求信号HRQを受け付ける
と、バス使用許可信号HLDAをバス要求I/Fモデル
25を介してDMAモデルH305に返すとともに、バ
スを開放する。DMAモデルH305は、バス使用許可
信号HLDAを確認すると、SIOモデルH307にデ
ータ転送許可信号DACKを返す。SIOモデルH30
7は、データ転送許可信号DACKを確認すると、1バ
イトの受信データをDMAモデルH305に出力する。
DMAモデルH305は受信データを一旦DHA設定レ
ジスタH306に格納した後、データメモリモデルH3
03の所定のアドレスに受信データを書き込む。以上の
処理を繰り返し、DMA転送が終了すると、DMAモデ
ルH305は、バス開放要求信号を非活性化してバス要
求I/Fモデル25を介してCPUモデル42に出力す
る。CPUモデル42は、非活性化したバス開放要求信
号HRQを確認すると、非活性化したバス使用許可信号
HLDAをバス要求I/Fモデル25を介してDMAモ
デルH305に返すとともに、バス使用権を復活する。
以上の処理は接続方法と端子信号をもとに演算されて、
所定の結果を得る。
【0388】図24は、第3実施例における仮想モデル
72の構成図であり、図15に示した第2実施例におけ
る仮想モデル71に対して、VRTテーブルV406付
き仮想通信モデルV405が付加されている点が異な
る。
【0389】仮想通信モデルV405は、図23におけ
るDMAモデルH305およびSIOモデルH307に
対応し、またVRTテーブルV406は図23における
HDA設定レジスタH306およびHSI設定レジスタ
H308に対応する。
【0390】仮想通信モデルV405は、SIO端子2
3を介して受信した信号を復調して、データメモリモデ
ルのHDMテーブルH304またはVDMテーブルV4
04に記憶させたり、データメモリモデルのHDMテー
ブルH304またはVDMテーブルV404の記憶内容
を変調してSIO端子23を介して送信できればよい。
例えば、通信相手側の変調する前の文字データを直接仮
想データメモリV403に書き込むようにしてもよい
し、あるいは、別に構成したモデム(MODEM)で受
信・復調した文字データを図2に示すS_DMAを利用
して仮想データメモリV403にDMA転送するように
してもよい。本実施例では、シミュレーション装置が有
するS_SIOとS_DMAを使用して、所定の記憶領
域HDMテーブルH304またはVDMテーブルV40
4に転送する例を説明する。
【0391】VRTテーブルV406には、SIOモデ
ルの通信速度や通信モード、パリティなどの通信パラメ
ータと、DMAの転送元アドレスや転送先アドレスと、
割込み制御装置S_INTの割込みベクタなどを設定す
る。
【0392】シリアル入出力I/F装置S_SIOは、
SIO端子23と接続され、通信相手側と通信データを
授受する。また、シリアル入出力I/F装置S_SIO
は、CPUモデル42のストア命令により仮想通信モデ
ルV405を介して、通信速度や通信モード、パリティ
などが設定される。シリアル入出力I/F装置S_SI
Oが1バイト分の通信データを受信すると、シリアル入
出力I/F装置S_SIOは割込み制御装置S_INT
(図2)に割込み要求信号を出力する。割込み処理が起
動されると、DMA装置S_DMAは、シリアル入出力
I/F装置S_SIOから通信データを読み込んで、メ
モリS_RAM内に形成された所定の記憶領域VDMテ
ーブルV404にDMA転送を開始する。
【0393】DMA転送が終了すると、VDMテーブル
V404の内容は、ハードウェアモデル22に渡され、
データ更新処理によりHDMテーブルH304の内容が
更新される。
【0394】第2実施例では、図14と図15とを見比
べれば明らかなように、ハードウェアモデルを構成する
各モデルと、仮想モデルを構成する各モデルとは1:1
対応の関係にあるが、第1,第3実施例では、上述のよ
うに2:1対応の関係にある。即ち、ハードウェアモデ
ルを構成する複数のサブモデルをまとめた機能を1つの
仮想モデルで実現することができる。
【0395】図25は、機能関数選択テーブル32の内
容例であり、第1実施例および第2実施例における機能
関数選択テーブル3,31の内容(図6,図16)と対
比すると、フラグが設けられている点に特徴がある。シ
ミュレータ操作者が、図示しない編集装置を使って、こ
のフラグを書き替えることができる。フラグが「1」で
あって引数の条件に合えば、仮想モデルを選択すること
ができ、「0」であれば、仮想モデルを選択することが
できない。
【0396】このように、フラグを書き替えるだけで、
仮想モデルを使うか否かを決定することができるので、
第1や第2実施例のように機能関数選択テーブル全体を
書き替える場合に比べ、ハードウェアモデルと仮想モデ
ルの選択の設定が容易にできるようになる。
【0397】図25(A)は、ハードウェアモデル22
でSIO,DMA転送を行う場合、図25(B)は、仮
想モデル72で受信したシリアルデータを受信し、ハー
ドウェアモデル22のデータを更新する場合の機能関数
選択テーブル32の内容例を示す。
【0398】ここで、第3実施例における、CPUモデ
ルシミュレーション,周辺回路処理サブルーチンおよび
ハードウェアモデルシミュレーションの特徴部分につい
て、図27,図28および図29により説明し、以下の
動作説明の流れを円滑にする。
【0399】先ず、図27のCPUモデルシミュレーシ
ョンのフローチャートを参照すると、本フローチャート
は、図9のフローチャートに、割込み要求の有無をチェ
ックするステップ(S361),バス開放要求の有無を
チェックするステップ(S362),割込みに関するス
テップ(S367,S368)およびバス開放に関する
ステップ(S363〜S366)が付加されている。
【0400】割込み要求の有無やバス開放要求の有無
は、CPUモデル42が割込み端子,バス要求端子に割
込み要求信号や,バス開放要求信号が入力されているか
否かを確認することにより検知する。本例では、説明を
簡単にするために、スタート直後に、このような確認す
るステップS361,S362を設けたが、実際には、
CPUモデルシミュレーションの処理とは独立して、割
込み的に要求を受け付けるようにしている。
【0401】ステップS361(割込み要求有?)で、
ハードウェアモデル22のいずれかのサブモデルが割込
み要求信号を発生し、割込みI/Fモデル24を介して
CPUモデル42に入力されたか否かを判断する。割込
み要求信号が有効であれば「Y」に進み、ステップ36
7の処理に移る。割込み要求信号が有効でなければ
「N」に進み、ステップ362の処理に移る。
【0402】ステップS367(割込み受付可?)で、
CPUモデル42は、割込み要求が受付可能かどうかチ
ェックし、受付可能であれば、「Y」へ進み、ステップ
S368で所定の割込み処理を行う。本例では、説明を
簡単にするために、SIOモデルH307だけから割込
みがかかり、DMAモデルH305を起動する例を説明
するが、実際には、割込み要求は多くの周辺回路から発
せられるので、割込みコントローラ(図2の割込制御装
置S_INTに相当)を設けて、割込み要求の調停をす
ることもある。割込みコントローラは、CPUモデル4
2に対して割込み要求と、優先順位の高い方の割込みベ
クタ(どこから割込み要求があって、どの割込み処理を
するかを指示するもの)を出力する。CPUモデル42
が割込みベクタに対応する割込み処理を実行する。割込
み処理は、割込みベクタに対応する割込み処理が記述さ
れたアドレスをプログラムカウンタPCにセットして、
図27の流れ図を呼び出すことで、再帰的に処理され
る。
【0403】ステップS362(バス開放要求有?)
で、バス開放要求信号(HRQ:ホールドリクエスト)
が入力された場合、CPUモデル42はそれが受付可能
かどうかをチェックし、受付可能であれば、「Y」に進
み、ステップS363の処理に移る。受付不可能であれ
ば、「N」に進み、ステップS101の処理に移る。
【0404】ステップS364(バス使用許可)で、C
PUモデル42は、以下のようにバスを開放する処理を
行う。本例では、説明を簡単にするために、DMAモデ
ルH305だけからバス要求がかかり、DMAモデルH
305がバスを占有する例を説明するが、実際には、バ
ス要求は多くの周辺回路から発せられるので、バスアー
ビタ(不図示)を設けて、バス要求の調停をすることも
ある。
【0405】CPUモデル42は、バス要求を受け付け
ると、バス使用許可信号(HLDA:ホールド AC
K)をバス要求I/Fモデルを介してDMAモデルH3
05に返す。
【0406】ステップS365(バス開放)で、CPU
モデル42は、バスを開放して、バス使用権をDMAモ
デルH305に渡す。通常、CPUモデル42がバスを
開放すると、CPUモデルは何も処理できなくなる。
【0407】ステップS366(バス開放?)で、CP
Uモデル42は、バス開放要求信号が非活性化するのを
待つ。即ち、DMAモデルH305がDMA処理中で、
バス開放要求信号が活性化している間は、「N」に進
み、非活性化したことを検出すると、「Y」に進み、ス
テップS110に移る。
【0408】ステップS110(ブレーク?)で、処理
停止または中断の命令でなければ、CPUモデル42は
「N」へ進み、ステップS361〜S109の処理を繰
り返す。処理停止または中断の命令であれば、、CPU
モデル42は「Y」へ進み、処理を中断または終了す
る。
【0409】図28は、第3実施例における周辺回路処
理サブルーチンのフローチャートを示し、図29は、図
28のステップS413(CPU特殊端子入出力)の詳
細フローチャートを示すものである。
【0410】次に、図28と図29を参照すると、本フ
ローチャートは、図17のシステムI/Fモデルシミュ
レーションS411を詳細化するとともに、図17のフ
ローチャートに、「外部端子変化?」(S216),
「割込み要求有り?」(S432),「割込み要求信号
出力」(S433),「バス要求有?」(S417),
「バスホールド出力」(S418)および「ホールドア
クノリッジ」(S419)を追加したことがわかる。
【0411】ステップS431(仮想モデル呼出し?)
で、マイコンシミュレータ1−2(図22)は、機能関
数選択テーブル32を参照して、仮想モデルシミュレー
タ72、またはハードウェアシミュレータ2−2のいず
れを使用するかを判断する。第1、第2実施例では、機
能関数選択テーブルに検証すべき機能関数が登録されて
いるか、登録されていれば引数条件を満たしているかを
判断して、いずれかのシミュレータ1−2,2−2を選
択していた。本実施例においては、機能関数選択テーブ
ル32内にフラグを設け、フラグの有無で、シミュレー
タ1−2,2−2のいずれを選択するか判断するように
した。
【0412】具体的には、マイコンシミュレータ1−2
は、検証すべき機能関数のフラグが「1」で、引数条件
を満たしていれば、「Y」へ進み、仮想モデルシミュレ
ータ72を使用し、ステップS422(仮想モデルシミ
ュレーション)を実行する。逆に、フラグが「0」であ
れば無条件に「N」に進み、ハードウェアシミュレータ
2−2は、ステップ412(ハードウェアモデルシミュ
レーション)を実行すべく処理を進める。即ち、ステッ
プS403(バスI/Fモデルシミュレーション)で、
バスI/Fモデル6(図22)は、機能関数I/Fモデ
ル5から機能関数を受け取り、端子信号に変換し、ステ
ップS410(シミュレータ間I/Fモデルシミュレー
ション)でシミュレータ間コード変換を行い、システム
I/Fモデル8に端子信号を供給する。ステップS41
1(システムI/Fモデルシミュレーション)で、シス
テムI/Fモデル8は、端子信号を受け取り、これをハ
ードウェアモデル22に渡す。
【0413】ステップS212〜S215およびステッ
プS216がI/FモデルシミュレーションS411を
構成する。ステップS212〜S215は、第1実施例
の図10と同様に動作する。
【0414】ステップS216(外部端子変化?)で、
ハードウェアモデル22は、ハードウェアモデル22に
接続された外部端子(SIO端子23など)の状態を定
期的に確認し、変化があれば、ハードウェアモデルシミ
ュレーションS412内の所定のサブモデルシミュレー
ションを起動する。例えば、ハードウェアモデル22
(図23)は、SIOモデルH307のSIO端子23
からの入力信号の状態を定期的に確認し、変化があれ
ば、SIOモデルH307のシミュレーションを起動す
る。
【0415】なお、図28において、端子信号変化(S
213)を先に検出し、「システムI/F完了?」(S
215)で全端子信号の受信が完了しない間は、CPU
モデル42からの信号受信を優先させ、「外部端子変化
?」(S216)の処理をマスクするようにしてもよ
い。
【0416】このように、第2実施例では、CPUモデ
ル42から発せられる端子信号だけに応じてハードウェ
アシミュレータ2−1を起動するようにしていたのに対
し、本例では、このように、外部端子が変化したかをチ
ェックし、変化したらハードウェアシミュレーションを
開始するようにした。
【0417】ステップS412(ハードウェアモデルシ
ミュレーション)の結果、割込要求信号やバス要求信号
などCPU特殊端子信号が活性化した場合には、ハード
ウェアシミュレータ2−2は、ステップS413(CP
U特殊端子入出力)を処理する。非活性のままであれ
ば、ステップ424,S425で仮想モデルデータ更新
の処理に移る。
【0418】ステップS413の具体的な処理の流れを
図29を参照して説明する。
【0419】ステップS432(割込み要求信号有り
?)で、ハードウェアモデルシミュレーション(S41
2)の結果、ハードウェアモデル22(図22)は、割
込要求信号IRQが活性化したかどうかを判断する。I
RQが活性化していれば、「Y」へ進み、ステップS4
23の処理に移り、IRQが非活性のままであれば、
「N」へ進み、ステップS417の処理に移る。
【0420】ステップS423で、ハードウェアモデル
22内のSIOモデルH307(図23)は、割込みI
/Fモデル24経由でCPUモデル42に対して割込み
要求信号IRQを出力する。
【0421】ステップS417(バス要求有り?)で、
ハードウェアモデル22(図22)は、ハードウェアモ
デルシミュレーション(S412)の結果、バス要求信
号HRQが活性化したかどうかを判断する。HRQが活
性化していれば、「Y」へ進み、ステップS418の処
理に移り、HRQが非活性のままであれば、「N」へ進
み、ステップS424の処理に移る。
【0422】ステップS418(バス開放要求出力)
で、ハードウェアモデル22内のDMAモデルH305
(図23)は、バス要求I/Fモデル25経由でCPU
モデル42に対してバス開放要求信号HRQを出力す
る。
【0423】図27のステップS362で、CPUモデ
ル42は、バス開放要求信号HRQが活性化したことを
検出すると、S363→S364→S365と進み、バ
ス使用権を放棄するとともに、バス使用許可信号HLD
Aを活性化して、バス要求I/Fモデル25経由でDM
AモデルH305に返す。
【0424】ステップS419で、DMAモデルH30
5(図23)は、バス要求I/Fモデル25経由でCP
Uモデル42からバス使用許可信号HLDAを受領した
か否かを判断する。HLDAを受領しなければ、「N」
へ進み、ステップS419に留まる。HLDAを受領す
れば、バス使用権を取得して「Y」へ進み、ステップS
412に戻り、DMAモデルH305のシミュレーショ
ンを開始する。
【0425】ステップS412で、DMAモデルH30
5のシミュレーションが終了すると、DMAモデルH3
05は、バス開放要求信号HRQを非活性化した信号を
出力するとともに、バスを開放する。以後、S432→
S417→S418と進む。
【0426】ステップS418(バス開放要求出力)
で、ハードウェアモデル22内のDMAモデルH305
(図23)は、バス要求I/Fモデル25経由でCPU
モデル42に対して、非活性化したバス開放要求信号H
RQを出力する。
【0427】図27のステップS366で、CPUモデ
ル42は、バス開放要求信号HRQが非活性化したこと
を検出すると、バス使用権を取得するとともに、バス使
用許可信号HLDAを非活性化して、バス要求I/Fモ
デル25経由でDMAモデルH305に返す。
【0428】図29のステップS419で、DMAモデ
ルH305(図23)は、バス要求I/Fモデル25経
由でCPUモデル42から、非活性化したバス使用許可
信号HLDAを受領したか否かを判断する。HLDAを
受領しなければ、「N」へ進み、ステップS419に留
まる。非活性化したHLDAを受領すれば、「Y」へ進
み、ステップS412に戻る。
【0429】ステップS432,S417でいずれも
「N」であったとき、ハードウェアモデル22は、ステ
ップS424に進む。
【0430】ステップS424(仮想モデルデータ更新
要?)で、ハードウェアモデル22は、ハードウェアモ
デルシミュレーション(S412)の結果が仮想モデル
72に関係しているか否かを機能関数選択テーブル32
のフラグを参照して判断する。ハードウェアモデル22
は、ハードウェアモデルシミュレーション(S412)
に対応する機能関数が機能関数選択テーブル32に登録
されていて、かつその引数条件を満たし、フラグが
「1」であれば、「Y」へ進み、ステップS425の処
理に移る。対応する機能関数のフラグが「0」であれ
ば、引数条件に関係なく「N」へ進み、ステップS21
2の処理に移る。
【0431】ステップS425,S421の処理は第2
実施例と同じであり、説明を省略する。
【0432】ステップS403,S420,S421
は、第2実施例の図17と同じであり、また、ステップ
S205〜S208は、第1実施例の図10と同じであ
り、説明を省略する。
【0433】次に、第3実施例の動作を、図26に示す
ターゲットプログラムを例にとり、図27〜図33のフ
ローチャートおよび図34のタイミングチャートを用い
て説明する。以下の説明は、重複を回避するため、第1
実施例および第2実施例について行ったようなプログラ
ム1行ごとに詳述することはせず、より要約的なものに
止める。
【0434】本プログラムは、SIO端子23で受信し
たデータをRAMにDMA転送するというものである。
第1のケースとして、ハードウェアシミュレータ2−2
によって行う場合と、第2のケースとして、仮想モデル
72を用いて行う場合とについて述べる。
【0435】[第1のケース:ハードウェアシミュレー
タ2−2] 《ターゲットプログラムT301:SIO初期設定の処
理》図26において、先ずCPUモデル42は、ハード
ウェアモデル22のSIOモデルH307(図23)に
通信速度,パリティ有無,受信モード等を設定する。こ
の設定は、先の実施例と同様に、アドレスとしてSIO
モデルH307を指定したMOV命令(図8)により行
えばよい。
【0436】《ターゲットプログラムT302:DMA
初期設定の処理》CPUモデル42は、同様にして、D
MAモデルH305(図23)に、使用するチャネル番
号,転送モード,アドレス増/減の別や、DMA転送元
およびDMA転送先(データメモリモデル)の各開始ア
ドレスと終了アドレス等を設定する。
【0437】《ターゲットプログラムT303:SIO
割込み許可》CPUモデル42は、SIOモデルH30
7に割込みの許可を与える。SIOモデルH307(図
23)は、SIO端子23に入力されるスタートビット
が変化したか否かを検出する処理を開始する。
【0438】以上の処理T301,T302およびT3
03は、図27において、S361とS362では
「N」であるから、ステップS101〜S110を3回
繰返すことにより実行される。そして、ステップS12
3およびS128では、図28の周辺回路処理サブルー
チンが起動されるが、ステップS216(外部端子変化
?),S432(割込み要求有り?)およびS417
(バス要求有り?)では、いずれも「N」であるから、
図17と同一の処理ルートを辿ることになる。
【0439】《ターゲットプログラムT304:割込み
発生》CPUモデル42は、T303以降の図示しない
処理を継続して実行する。
【0440】ここで、SIO端子23に調歩同期式によ
り通信データが入力されたとする。
【0441】時刻t0(図30)のステップS216
(図28の外部端子変化?)で、SIOモデルH307
は、SIO端子23が「1」から「0」に変化するとス
タートビットであると判断する。SIOモデルH307
は、このスタートビットを検出すると(図30
(b))、「Y」へ進み、ハードウェアモデルシミュレ
ーション(S412)を起動する。ここで、時刻t1〜
t9のステップS412で、SIOモデルH307は、
SIO端子23より1ビットずつ通信データを受信す
る。ここで、受信データ(D7−D0)は、「0100
0001」,すなわち「41H」であり、文字コード
「A」に相当する。
【0442】時刻t10のステップS412で、SIO
モデルH307は、1バイト(8ビット)分のデータを
受信し、ストップビットを検出すると、割込I/Fモデ
ル24に割込み要求信号IRQを出力するとともに(図
30(d))、DMAモデルH305(図23)にデー
タ転送要求信号DRQを出力する(図30(e))。
【0443】ステップS432(割込み要求有り?)
で、ハードウェアモデル22は、この割込み要求を検知
すると、ステップS433で割込I/Fモデル24を介
してCPUモデル42に割込み要求信号IRQを出力す
る。
【0444】ステップS361(図27,割込み要求有
り?)で、CPUモデル42は、割込み要求信号IRQ
を検出すると「Y」へ進む。
【0445】ステップS367(割込み受付可?)で、
CPUモデル42は、割込み受付が可能かを確認する。
今回の割込み要求より優先順位の高い割込み処理を実行
中であれば、受付不可として「N」へ進む。ここでは、
割込み要求の受付が可能であるとして、「Y」へ進む。
【0446】ステップS368(割込み処理)で、CP
Uモデル42は、定められた割込み処理ルーチンを呼び
出す。ここで、割込み処理ルーチンは、DMAモデルH
305に対して、チャネル0のDMAを許可する命令で
あるり、アドレス1900H番地以降に記述してあると
する。
【0447】CPUモデル42は、プログラムカウンタ
に1900Hを格納して、図27に示すCPUモデルシ
ミュレーションを再帰的に呼び出す。ステップS361
→S362→S101→S102→S123→S104
→S105→S106→S107→S128と処理が進
む。
【0448】時刻t11〜t14の周辺回路処理サブル
ーチン(図28)において、ステップS431→S40
3→S410→S411→S412の順に処理が行わ
れ、1900H番地の命令に対応する端子信号I/O,
/WR,/CS0,ADRS,DATAなどがハードウ
ェアモデル22に供給される(図30(h)〜
(o))。
【0449】時刻t14のステップ412で、DMAモ
デルH305は、DMA転送が可能になる。以上で、1
900H番地の処理が終了し、ステップS413→S4
24→S411と進み、ハードウェアシミュレーション
完了信号「DONE」を、S410→S403→S10
9(図27)の順にCPUモデル42に返す。これによ
り、CPUモデル42は、開始に戻り、次のシミュレー
ション待ちとなる。
【0450】一方、ハードウェアシミュレータ2−2
は、ステップS213→S216と進む。
【0451】時刻t15のステップS216(外部端子
変化?)で、ハードウェアシミュレータ2−2は、SI
OモデルH307(図23)からのデータ転送要求信号
DRQを検知すると、ハードウェアモデルシミュレーシ
ョン(S412)のDMAモデルH305処理を起動
し、DMAモデルH305は、バス解放要求信号(HR
Q)を活性化する(図30(f))。以後、ステップS
432→S417→S418(図29)と進む。
【0452】時刻t15のステップS418(バス開放
要求)で、DMAモデルH305は、バス要求I/Fモ
デル25を介してCPUモデル42にバス解放要求信号
HRQを出力して、ステップS419に移り、CPUモ
デル42からバス使用許可信号HLDAが活性化するの
を待つ。
【0453】時刻t15のステップS362(図27、
バス解放要求有?)で、CPUモデル42は、HRQ信
号が活性化していることを検出すると、「Y」へ進む。
【0454】ステップS363(バス解放受付可?)
で、CPUモデル42は、今回のバス解放要求より優先
順位の高い処理を実行中であれば、受付不可として
「N」へ進む。ここでは、バス解放要求の受付が可能で
あるとして、「Y」へ進む。
【0455】時刻t16のステップS364(バス使用
許可)で、CPUモデル42は、バス使用許可信号(H
LDA:ホールドアクノリッジ)をバス要求I/Fモデ
ル25経由でDMAモデルH305に供給する(図30
(g))。
【0456】ステップS365(バス解放)で、CPU
モデル42は、バスの解放を行い、ステップS366
(バス開放)で、DMAモデルH305がバスを開放す
るのを待つ。
【0457】一方、ステップS419(バス使用許可
?)で、DMAモデルH305は、バス使用許可信号H
LDAを検知すると、「Y」へ進み、ステップS412
に移る。
【0458】時刻t17のステップ412で、DMAモ
デルH305は、バス使用権を取得し、DMA転送処理
を開始する。
【0459】まず、DMAモデルH305は、端子信号
I/O,/CS1,ADRS(SIO)がSIOモデル
H307に供給される(図30(h)(l)(n))。
【0460】時刻t18で、DMAモデルH305は、
端子信号/RDを活性化し(図30(j))、SIOモ
デルH307よりDATA「A」を読み込む(図30
(o))。また、SIOモデルH307は、データの読
み出しを検知すると、データ転送要求信号を非活性化す
る(図30(e))。
【0461】時刻t19,t20で、DMAモデルH3
05は、端子信号を元に戻し、SIOモデルH307か
らの読み出しサイクルを終了する。
【0462】時刻t21で、DMAモデルH305は、
端子信号/MEM,/CS2,ADRS(2200H)
をデータメモリモデルH303に供給する(図30
(h)(m)(n))。
【0463】時刻t22で、DMAモデルH305は、
端子信号/WRを活性化し(図30(j))、データメ
モリモデルH302の2200H番地にDATA「A」
を書き込む(図30(o))。
【0464】時刻t23,t24で、DMAモデルH3
05は、端子信号を元に戻し、データメモリモデルH3
03への書き込みサイクルを終了する。
【0465】このように、時刻t25〜t35の間もS
IO→DMA→メモリの順にデータが転送され、通信デ
ータが終了するまで、繰り返えされる。
【0466】今の場合、SIOモデルH307は、受信
したデータ「A」,「B」を読み込み、このデータをデ
ータメモリモデルH303に順次DMA転送する。DM
AモデルH305は、HDMAテーブルH304の22
00,2201番地にそれぞれ「A」,「B」を記憶す
る。
【0467】時刻t36のステップS412(図29)
で、DMAモデルH305は、DMA転送が終了する
と、バス開放要求信号HRQを非活性化する。以降、ス
テップS432→S417→S418(図29)と進
む。
【0468】ステップS418(バス開放要求出力)
で、DMAモデルH305は、バス解放要求信号(HR
Q)を非活性化する(図30(f))。DMAモデルH
305は、バス要求I/Fモデル25を介してCPUモ
デル42にバス解放要求信号HRQを出力して、ステッ
プS419に移り、CPUモデル42からバス使用許可
信号HLDAが非活性化するのを待つ。
【0469】一方、時刻t37のステップS366(図
27、バス解放?)で、CPUモデル42は、HRQ信
号が非活性化していることを検出すると、バス使用許可
信号HLDAを非活性化して、バス要求I/Fモデル2
5経由でDMAモデルH305に供給する(図30
(g))。その後、CPUモデル42は、ステップS1
10で「Y」へ進み、開始に戻る。
【0470】一方、ステップS419(バス使用許可
?)で、DMAモデルH305は、非活性化したバス使
用許可信号HLDAを検知すると、「Y」へ進み、ステ
ップS412に移る。以上で、DMA転送は終了し、ス
テップS412→S432→S417→S424に進
む。
【0471】ステップS424(仮想モデルデータ更新
要?)で、ハードウェアモデル2−2は、ハードウェア
モデルシミュレーションS412の結果、仮想モデル7
2側のデータ更新が必要か否かを判断する。ハードウェ
アモデル2−2は、データメモリモデルH303のHD
Mテーブルの内容が書き変わったことを検知し、かつ、
機能関数選択テーブル32(図25(A))のフラグが
「1」であることを確認し、「Y」に進む。
【0472】ステップS425(仮想モデルデータ更新
起動)で、ハードウェアモデル2−2は、HDMテーブ
ルH304の2200,2201番地に記憶した
「A」,「B」を、仮想モデル42に渡す。
【0473】ステップS421(図28)で、仮想モデ
ル72は、受領した更新データを仮想データメモリモデ
ルV403に付属するVDMテーブルV404の220
0,2201番地に書き込む。
【0474】ステップS212で、ハードウェアシミュ
レータ2−2は、DMAモデルH305のDMA転送処
理が完了したことを示す「DONE」をステップS41
0→S403→S128経由でCPUモデル42に返
す。
【0475】この後、ハードウェアシミュレータ2−2
は、ステップS411でアイドリング状態、即ち、ステ
ップS213(端子信号変化?)またはS216(外部
端子変化)のいずれかが「Y」になるのを待つ。
【0476】《ターゲットプログラムT311:データ
メモリモデル読み出し》CPUモデル42は、仮想モデ
ル72の仮想データメモリモデルV403(図24)の
2200番地からデータ“A”を読み出す。
【0477】《ターゲットプログラムT312:データ
判断》CPUモデル42は、読み出したデータが「A」
(41Hとする)であるか否かを判断する。「A」であ
れば、「Y」へ進み、T313の処理に移る。「A」で
なければ、「N」へ進み、T314の処理に移る。
【0478】《ターゲットプログラムT313:ポート
出力「1」》CPUモデル42は、読み出したデータが
「A」であれば、出力ポートに「1」を出力し、正確に
受信できたことを表示する。
【0479】《ターゲットプログラムT314:ポート
出力「0」》CPUモデル42は、読み出したデータが
「A」以外であれば、出力ポートに「0」を出力し、正
確に受信できなかったことを表示する。
【0480】以上で、図26のターゲットプログラムに
よる動作説明を終える。
【0481】このように、ハードウェアシミュレータ2
−2を使ってDMA転送を行い、データメモリモデルH
303の記憶内容を書き替えても、データ更新機能によ
り、仮想モデル72側の記憶内容も同時に更新されるの
で、その後のターゲーットプログラムで、仮想モデル7
2側の仮想データメモリモデルV403から記憶内容を
読み出しても、正しい処理が実行できる。
【0482】つまり、DMA転送などCPUモデル42
が関知しない状態で、ハードウェアモデル22のデータ
メモリモデルH303が書き替えられても、仮想モデル
72側の仮想データメモリモデルV403も同時に更新
するようにしたので、DMA転送直後のT311(図2
6)で仮想データメモリモデルV403を読み出して
も、ターゲットプログラムT312で判断を誤ることな
く正常に処理される。
【0483】また、シミュレーションの処理を仮想モデ
ル72で行うか、ハードウェアシミュレータ2−2で行
うかを判断テーブル内に設けたフラグにより切り替える
ようにした。このため、シミュレータ装置の操作者は、
テーブルの内容(機能関数や判断条件)を書き換えるこ
となく、フラグの書き換えだけで仮想モデル7とハード
ウェアモデル22の選択が容易に行える。従って、操作
者は、システムシミュレーションの最中に、シミュレー
ションの用途に応じて適宜フラグを書き替え、問題のあ
るハードウェアモデル22だけを集中して検証すること
ができるようになる。問題が解決したハードウェアモデ
ル22内のサブモデルは、仮想モデル72に置き換えて
シミュレーションすることができるので、検証に要する
時間を大幅に短縮できる。
【0484】さらに、外部端子の変化をチェックする手
段を設けたので、CPUモデル42の端子信号の変化だ
けでなく、外部端子の信号変化をトリガとして、ハード
ウェアシミュレータ2−2を起動することができる。こ
の結果、SIOのような通信モデルがシミュレーション
できるようになった。
【0485】また、ハードウェアシミュレータ2−2側
に、割込みI/Fモデル24やバス要求I/Fモデル2
5を設けたので、マイコンシミュレータ1側の動作状態
に関わらず、要求信号を渡すことができる。その結果、
DMAやSIOのシミュレーションが可能になった。
【0486】[第2のケース:仮想モデルシミュレータ
72によるDMA転送の動作説明]次に、仮想モデルの
仮想通信モデルV405を使って、SIOデータを受信
する例を説明する。この動作の概要は次のようである。
すなわち、仮想通信モデルV405は、シリアル入出力
S_SIOから受信データを得る。このデータは仮想デ
ータメモリモデルV403のデータテーブルVDMテー
ブルV404に書き込まれる。これと同時に、ハードウ
ェアモデル22のデータメモリモデルH303のデータ
テーブルHDMテーブルH304のデータも更新され
る。次に、ハードウェアモデル22のデータメモリモデ
ルH303のデータテーブルHDMテーブルH304か
らデータを読み出す。
【0487】以下、図26のターゲットプログラムに沿
って説明する。
【0488】《ターゲットプログラムT301:SIO
初期設定の処理》CPUモデル42は、仮想通信モデル
V405内のVRTテーブルV406に諸条件を設定す
る。設定内容はハードウェアシミュレータ2−2による
場合と同じである。この設定は、仮想通信モデルV40
5に記述されたプログラムに従って、シミュレーション
装置のシリアル入出力I/FモデルS_SIO(図2)
に対して行われ、その後、データ更新(図28、S42
3)によりSIOモデルH307内のHSI設定レジス
タH308にも書き込まれる。
【0489】《ターゲットプログラムT302:DMA
初期設定》CPUモデル42は、仮想通信モデルV40
5内のVRTテーブルV406に諸条件を設定する。こ
の設定内容もハードウェアシミュレータ201による場
合と同じである。この設定は、通信モデルV405に記
述されたプログラムに従って、シミュレーション装置の
DMA装置S_DMA(図2)に対して行われ、その
後、データ更新(図28、S423)によりDMAモデ
ルH305内のHSI設定レジスタH306にも書き込
まれる。
【0490】《ターゲットプログラムT303:SIO
割込み許可》CPUモデル42は、仮想通信モデルV4
05内のVRTテーブルV406に割込みの許可を設定
する。この設定は、通信モデルV405に記述されたプ
ログラムに従って、シミュレーション装置のDMA装置
S_DMA(図2)に対して設定されるが、DMAモデ
ルH305には、書き込まれないようにする。これは、
仮想モデル72とハードウェアシミュレータ2−2が同
時に通信データを受信することがないようにするためで
ある。
【0491】《ターゲットプログラムT304:割込み
発生》シリアル入出力I/FモデルS_SIO(図2)
は、通信データの最初の1バイトを受信し終わると、割
込み制御装置S_INT(図2)に対して、割込み要求
を行う。割込み制御装置S_INTは、プロセッサS_
CPUに対して割り込み要求を行い、割込み処理が記述
されたアドレスを渡す。プロセッサS_CPUは、定め
られた割込み処理ルーチンを呼び出す。ここで、割込み
処理ルーチンは、DMA装置S_DMAに対して、チャ
ネル0のDMAを許可する命令であるとする。
【0492】《ターゲットプログラムT321:DMA
許可》図27で、ステップS361→S362→S10
1→…→S128と進み、CPUモデル42は、仮想通
信モデルV405のVRTテーブルV406(図24)
にDMA許可を設定するとともに、仮想通信モデルV4
05は、記述されたプログラムに従って、DMA装置S
_DMA(図2)にチャネル0のDMAを許可する。
【0493】以後のSIOデータ受信とDMA転送の処
理は、仮想モデルシミュレーションS422やハードウ
ェアモデルシミュレーションS412(図28)に係わ
らず行われる。即ち、DMA装置S_DMA(図2)
は、シリアル入出力I/FモデルS_SIOから受信デ
ータ「A」、「B」を読み出し、仮想データメモリモデ
ルV403内のVDMテーブルV404の所定の領域
(2200H,2201番地)に対応するメモリS_R
AMの領域にDMA転送する。
【0494】《ターゲットプログラムT322:DAM
終了?》ステップS422(図28、仮想モデルシミュ
レーション)で、仮想通信モデルV405(図24)
は、DMA転送が終了したことを検知すると、ステップ
S420の処理に移る。
【0495】ステップS422(ハードウェアデータ更
新起動)で、仮想モデル72は、ハードウェアモデル2
2に仮想データメモリモデルV403内のVDMテーブ
ルV404の更新データ「2200,A」、「220
1,B」を渡す。
【0496】ステップS423(データ更新)で、ハー
ドウェアモデル22は、受領した更新データ「A」、
「B」をデータメモリモデルH303内のHDMテーブ
ルH304の2200H,2201H番地に書き込む。
【0497】以上で、図28の周辺回路処理サブルーチ
ンを終了し、図27のステップS128に戻り、S10
9→S110と進み、開始に戻る。
【0498】以上で、割込み処理ルーチンを終了し、割
込みが発生したターゲットプログラムのステップに戻
る。
【0499】《ターゲットプログラムT311:データ
メモリモデル読み出し》CPUモデル42は、ハードウ
ェアモデル22のデータメモリモデルH303(図2
3)の2200番地からデータ“A”を読み出す。
【0500】《ターゲットプログラムT312:データ
判断》CPUモデル42は、読み出したデータが「A」
(41Hとする)であるか否かを判断する。「A」であ
れば、「Y」へ進み、T313の処理に移る。「A」で
なければ、「N」へ進み、T314の処理に移る。
【0501】《ターゲットプログラムT313:ポート
出力「1」》CPUモデル42は、読み出したデータが
「A」であれば、出力ポートに「1」を出力し、正確に
受信できたことを表示する。
【0502】《ターゲットプログラムT314:ポート
出力「0」》CPUモデル42は、読み出したデータが
「A」以外であれば、出力ポートに「0」を出力し、正
確に受信できなかったことを表示する。
【0503】以上で、図26のターゲットプログラムの
検証を終了する。
【0504】ハードウェアシミュレータ2−2によれ
ば、図34のタイミングチャートから明らかなように、
SIO端子23に1バイトのデータが入力され、DMA
転送によりデータメモリモデルH303に書き込みが終
了するまでに30クロック(図30(a)マシンサイク
ル)程度必要となるが、ハードウェアシミュレータ2−
2では、シミュレーションの規模が大きいので、1クロ
ック分を演算するのに、約10mSを要する。したがっ
て、1バイト受信には、300mSもの時間が必要とな
ることになる。このため、SIOモデルH307のデー
タ転送をハードウェアモデル22では、3bps程度の
通信速度はシミュレーションできるが、最近の96Kb
ps等の高速モデムを、実使用状態でシミュレーション
することは不可能である。
【0505】これに対し、仮想通信モデルV405を使
用することで、高速モデムであっても、リアルタイムに
シミュレーションすることが可能になる。
【0506】また、仮想通信モデルV405で受信した
データは、ハードウェアモデル22にも書き込まれるの
で、ターゲットプログラムのT311,T312(図2
6)をハードウェアモデル22で実行しても、正しい処
理が実行される。
【0507】ハードウェアシミュレータ201で、1
度、SIOモデルH307やDMAモデルH305が正
しく動作することが確認できれば、その後はハードウェ
アシミュレーションをする必要はなく、これ以降は、機
能関数選択テーブル(図25)のフラグを「0」→
「1」に書き替えるだけで、仮想通信モデルV405を
使ってターゲットプログラムを検証することができるの
で、上述の効果を得ることができるようになる。
【0508】なお、第1〜第3実施例では、仮想モデル
をマイコンシミュレータの一部として説明したが、これ
に限定されるもにではなく、ハードウェアシミュレータ
側に設けてもよいし、マイコンシミュレータやハードウ
ェアシミュレータとは別に構成してもよい。
【0509】また、仮想モデルやハードウェアモデルを
構成する周辺回路、あるいは、機能関数、機能関数選択
テーブルなどは、第1〜第3実施例に限定されるもにで
はなく、電子機器を構成する周辺回路によって適宜変更
しうるものである。
【0510】また、シミュレーションを実行するとき
に、周辺回路の入出力状態をログファイルに記録してお
き、次にシミュレーションするときに、ログファイルの
内容を仮想モデルやハードウェアモデルの入出力情報と
して供給することで、シミュレーションに要する時間を
短縮することができる。
【0511】
【発明の効果】本発明によれば、電子機器を構成するハ
ードウェアの検証を、電子機器に組み込むプログラムの
検証と同時に実行し、かつハードウェアの検証をマイコ
ンシミュレーションで代替する比重を高めたことによ
り、検証時間の短縮と、検証内容の充実を実現できると
いう効果がある。
【0512】より具体的な効果については、各実施例の
説明の末尾に記載したので重複を回避するため省略す
る。
【図面の簡単な説明】
【図1】本発明の第1実施例のシステムシミュレータの
機能ブロック図
【図2】本発明のシステムシミュレーションの母体装置
たるシミュレーション装置のブロック図
【図3】図1におけるハードウェアモデル20の構成例
を示すブロック図
【図4】図3のハードウェアモデル20に対応する仮想
モデル7の構成図
【図5】図1における仮想プログラムメモリモデルV7
1内のテーブル例を示す表
【図6】図1における機能関数選択テーブル3の例を示
す表
【図7】図1における機能関数I/Fモデル5における
仮想関数変換テーブルとその戻り値を示す表
【図8】本発明の第1実施例および第2実施例における
ターゲットプログラムのリスト例を示す表
【図9】本発明の第1実施例および第2実施例における
CPUモデルシミュレーションのフローチャート
【図10】図9における周辺回路処理サブルーチンS1
03,S108のフローチャート
【図11】図10における仮想モデルシミュレーション
S202のフローチャート
【図12】図1におけるバスI/Fモデル6がハードウ
ェアシミュレータ2にデータを書き込むときのタイミン
グチャート
【図13】本発明の第2実施例のシステムシミュレータ
2−1の機能ブロック図
【図14】図13におけるハードウェアモデル21の構
成図
【図15】図13における仮想モデル71の構成図
【図16】図13における機能関数選択テーブル31の
例を示す表
【図17】第2実施例における周辺回路処理サブルーチ
ンの詳細フローチャート。実線は処理の流れ、点線はデ
ータの流れを示す。
【図18】第2実施例における仮想モデルシミュレーシ
ョンの詳細フローチャート
【図19】図17のうち1点鎖線で示された部分のフロ
ーチャート
【図20】図17におけるデータ更新S423のフロー
チャート
【図21】図17におけるデータ更新S421のフロー
チャート
【図22】本発明の第3実施例のシステムシミュレータ
2−2の機能ブロック図
【図23】図22におけるハードウェアモデル22の構
成図
【図24】図22における仮想モデル72の構成図
【図25】図22における機能関数選択テーブル32の
例を示す表
【図26】第3実施例におけるターゲットプログラムの
フローチャート
【図27】第3実施例におけるCPUモデルシミュレー
ションのフローチャート
【図28】第3実施例における周辺回路処理サブルーチ
ンS123,S128間のフローチャート
【図29】第3実施例において外部端子変化により起動
されるハードウェアシミュレーションのフローチャート
【図30】第3実施例におけるシリアル入出力およびD
MA転送時のタイミングチャート
【符号の説明】
1 マイコンシミュレータ 2,2−1,2−2 ハードウェアシミュレータ 3,31,32 機能関数選択テーブル 4 CPUモデル 5 機能関数I/Fモデル 6 バスI/Fモデル 7,70,72 仮想モデル 8 システムI/Fモデル 9 データ更新I/Fモデル 10,H301 プログラムメモリモデル 11,H303 データメモリモデル 12 I/OポートAモデル 13 キーマトリクスモデル 14 I/OポートBモデル 15,H312 デコーダモデル 16 I/OポートCモデル 17 時計モデル 18 GUI 19 キー入力モデル 20,21,22 ハードウェアモデル 23 SIO端子 24 割込I/Fモデル 25 バス要求I/Fモデル 181 キー入力GUI 182 LED表示GUI PC プログラムカウンタ S_CPU プロセッサ S_RAM メモリ S_ROM 読み出し専用メモリ S_INT 割込制御装置 S_DMA DMA制御装置 S_DSP 表示制御装置 S_INP 入力部 S_SIO シリアル入出力装置 S_HDD ハードディスク EWS ワークステーション V71,V401 仮想プログラムメモリモデル V72 仮想時計モデル V73 仮想キー入力モデル V74 仮想LED表示モデル V402,H302 VPMテーブル V403 仮想データメモリモデル V404,H304 VDMテーブル V405 仮想通信モデル V406 VRTテーブル V407 仮想入力ポートモデル V408 VIP入力レジスタ V409 仮想キーデコーダモデル V410 VKD出力レジスタ H305 DMAモデル H306 HDA設定レジスタ H307 SIOモデル H308 HSI設定レジスタ H309 入力ポートモデル H310 HIP設定レジスタ H311 出力ポートモデル H313 HKD出力レジスタ

Claims (41)

    【特許請求の範囲】
  1. 【請求項1】マイクロコンピュータを使用する電子機器
    のプログラムおよびハードウェアをシミュレーション装
    置上で一体的に検証するシステムシミュレータにおい
    て、 前記プログラムに基づいて前記ハードウェアをソフトウ
    ェアで検証するハードウェアシミュレータと、 前記ハードウェアに係わる前記プログラム命令を前記ハ
    ードウェアと等価的にソフトウェアで処理する仮想モデ
    ルシミュレータと、 前記ハードウェアシミュレータまたは前記仮想モデルシ
    ミュレータの出力を適時に利用しながら前記プログラム
    をソフトウェアで検証するCPUモデルシミュレータと
    を具備することを特徴とするシステムシミュレータ。
  2. 【請求項2】前記CPUモデルシミュレータは、CPU
    インタフェースモデルを介して前記ハードウェアシミュ
    レータまたは前記仮想モデルシミュレータのいずれかと
    接続されることを特徴とする請求項1記載のシステムシ
    ミュレータ。
  3. 【請求項3】前記CPUモデルシミュレータは、前記電
    子機器を構成する周辺回路に対する入出力命令を機能関
    数に変換して出力する手段を設けたことを特徴とする請
    求項1または請求項2に記載のシステムシミュレータ。
  4. 【請求項4】前記CPUインタフェースモデルは、前記
    ハードウェアシミュレータまたは前記仮想モデルシミュ
    レータの一方を選択して前記CPUモデルシミュレータ
    と接続する機能関数インタフェースモデルと、 前記仮想モデルシミュレータを選択するための条件を規
    定したシミュレータ選択テーブルとを有することを特徴
    とする請求項1〜請求項3のいずれかに記載のシステム
    シミュレータ。
  5. 【請求項5】前記ハードウェアシミュレータは、前記電
    子機器を構成する周辺回路対応のサブモデルを含み前記
    ハードウェアの検証を実行するハードウェアモデルと、 該ハードウェアシミュレータと前記CPUモデルシミュ
    レータとの間の情報授受の整合をとるシステムインタフ
    ェースモデルとを有することを特徴とする請求項1〜請
    求項3のいずれかに記載のシステムシミュレータ。
  6. 【請求項6】前記CPUインタフェースモデルは、前記
    機能関数インタフェースモデルと前記システムインタフ
    ェースモデルとの間の整合をとるバスインタフェースモ
    デルを有することを特徴とする請求項5に記載のシステ
    ムシミュレータ。
  7. 【請求項7】前記電子機器を構成する周辺回路対応のサ
    ブモデルは、前記周辺回路の接続情報を有していること
    を特徴とする請求項5に記載のシステムシミュレータ。
  8. 【請求項8】前記電子機器を構成する周辺回路対応のサ
    ブモデルは、前記プログラム・コード、または前記プロ
    グラムの処理結果、またはメモリモデルの記憶情報を保
    持する記憶手段を有していることを特徴とする請求項5
    に記載のシステムシミュレータ。
  9. 【請求項9】前記仮想モデルシミュレータは、前記電子
    機器を構成する周辺回路に対応する命令の実行結果と等
    価な機能を実行する複数の仮想サブモデルを有すること
    を特徴とする請求項1〜請求項3のいずれかに記載のシ
    ステムシミュレータ。
  10. 【請求項10】前記仮想サブモデルは、前記プログラム
    ・コード、または前記プログラムの処理結果、またはメ
    モリモデルの記憶情報を保持する記憶手段を有すること
    を特徴とする請求項9に記載のシステムシミュレータ。
  11. 【請求項11】前記仮想サブモデルは、複数の前記サブ
    モデルに係わる前記プログラムを構成するサブルーチン
    の機能を代行する手段で構成されることを特徴とする請
    求項9または請求項10に記載のシステムシミュレー
    タ。
  12. 【請求項12】前記仮想サブモデルは、前記サブモデル
    に係わる前記プログラムを前記サブモデルと等価な処理
    をする周辺装置で処理する手段で構成されることを特徴
    とする請求項9または請求項10に記載のシステムシミ
    ュレータ。
  13. 【請求項13】前記仮想モデルシミュレータは、シミュ
    レーション結果に基づき、該当する前記サブモデルの記
    憶手段の記憶内容を更新することを特徴とする請求項9
    〜請求項12のいずれかに記載のシステムシミュレー
    タ。
  14. 【請求項14】前記ハードウェアモデルシミュレータ
    は、シミュレーション結果に基づき、該当する前記仮想
    サブモデルの記憶手段の記憶内容を更新する手段を有す
    ることを特徴とする請求項9〜請求項12のいずれかに
    記載のシステムシミュレータ。
  15. 【請求項15】前記ハードウェアシミュレータは、前記
    ハードウェアモデルからの割込み要求信号を前記CPU
    モデルに伝える割込インタフェースモデルを有し、前記
    ハードウェアの検証を前記プログラムの検証より優先し
    て行うようにしたことを特徴とする請求項1〜請求項1
    4のいずれかに記載のシステムシミュレータ。
  16. 【請求項16】前記ハードウェアシミュレータ、前記ハ
    ードウェアモデルからのバス解放要求信号を前記CPU
    モデルに伝え、前記CPUモデルからのバス使用許可信
    号を前記ハードウェアモデルに伝えるバス要求インタフ
    ェースモデルを有し、前記プログラムの検証を中断する
    ようにしたことを特徴とする請求項1〜請求項15のい
    ずれかに記載のシステムシミュレータ。
  17. 【請求項17】前記ハードウェアモデルと前記仮想モデ
    ルとの対応は、各モデルを構成するサブモデル間で1:
    N(Nは2以上の整数)であることを特徴とする請求項
    1〜請求項16のいずれかに記載のシステムシミュレー
    タ。
  18. 【請求項18】前記ハードウェアモデルまたは前記仮想
    モデルは、各モデルに所定のデータを与えたり、シミュ
    レーション結果を表示するユーザーインタフェースと接
    続されたことを特徴とする請求項1〜請求項17のいず
    れかに記載のシステムシミュレータ。
  19. 【請求項19】マイクロコンピュータとこれに接続され
    る周辺回路とを有する電子機器のターゲットプログラム
    および周辺回路のハードウェアをシミュレーション装置
    上で一体的に検証するシステムシミュレーション方法に
    おいて、 前記ハードウェアの接続情報に基づいて周辺回路の処理
    をシミュレーションする第1ステップと、 前記ハードウェアの論理機能に基づいて周辺回路の処理
    を等価的にシミュレーションする第2ステップとを有
    し、 前記第1または第2ステップのいずれかを選択してマイ
    クロコンピュータの入出力命令をシミュレーションする
    第3ステップとを備えたことを特徴とするシステムシミ
    ュレーション方法。
  20. 【請求項20】マイクロコンピュータとこれに接続され
    る周辺回路とを有する電子機器のターゲットプログラム
    および周辺回路のハードウェアをシミュレーション装置
    上で一体的に検証するシステムシミュレーション方法に
    おいて、 前記周辺回路の接続情報に基づいて周辺回路の処理をシ
    ミュレーションする第1ステップと、 前記周辺回路の機能と等価な機能を有する周辺装置を使
    用して周辺回路の処理結果を得る第2ステップとを有
    し、 前記第1または第2ステップのいずれかを選択してマイ
    クロコンピュータの入出力命令をシミュレーションする
    第3ステップとを備えたことを特徴とするシステムシミ
    ュレーション方法。
  21. 【請求項21】前記第1または第2ステップのいずれか
    を選択する前記第3ステップは、シミュレーション選択
    テーブルに基づいて行われ、前記シミュレーション選択
    テーブルの選択条件を満たすとき第2ステップを選択
    し、満たさないとき前記第1ステップを選択するように
    したことを特徴とする請求項19または請求項20に記
    載のシステムシミュレーション方法。
  22. 【請求項22】前記第1または第2ステップのいずれか
    を選択する前記第3ステップは、シミュレーション選択
    テーブルに基づいて行われ、 前記シミュレーション選択テーブルにフラグが付加さ
    れ、前記フラグが第1の状態であって前記選択テーブル
    の選択条件を満たすとき前記第2ステップを選択し、前
    記フラグが第2の状態であるとき前記第1ステップを選
    択することを特徴とする請求項19または請求項20に
    記載のシステムシミュレーション方法。
  23. 【請求項23】前記第1及び第2ステップの処理結果を
    第1及び第2の記憶領域にそれぞれ記憶するステップを
    有し、 第1ステップを実行した後に、第1ステップの処理結果
    で第2の記憶領域を更新するステップと、 第2ステップを実行した後に、第2ステップの処理結果
    で第1の記憶領域を更新するステップとを備えたことを
    特徴とする請求項19または請求項20に記載のシステ
    ムシミュレーション方法。
  24. 【請求項24】マイクロコンピュータとこれに接続され
    る周辺回路とを備えた電子機器のターゲットプログラム
    および周辺回路のハードウェアをシミュレーション装置
    上で一体的に検証するシステムシミュレーション方法に
    おいて、 前記マイクロコンピュータが前記周辺回路との入出力命
    令を検出するステップと、 前記入出力命令に対応する機能関数を生成するステップ
    と、 前記機能関数に応答し、前記ハードウェアの接続情報に
    基づいて前記周辺回路の処理をシミュレーションするハ
    ードウェアモデルシミュレーションと、 前記ハードウェアの論理機能に基づいて前記周辺回路の
    処理を等価的にシミュレーションする仮想モデルシミュ
    レーションとを有し、 前記機能関数に基づき前記ハードウェアモデルシミュレ
    ーションまたは前記仮想モデルシミュレーションのいず
    れかを選択して前記入出力命令に対するシミュレーショ
    ン結果を求めるステップを備えたことを特徴とするシス
    テムシミュレーション方法。
  25. 【請求項25】前記ハードウェアモデルシミュレーショ
    ンまたは前記仮想モデルシミュレーションを選択する処
    理は、前記仮想モデルシミュレーションで処理可能な前
    記機能関数名と、前記機能関数の選択条件が登録された
    シミュレーション選択テーブルにより行われることを特
    徴とする請求項24に記載のシステムシミュレーション
    方法。
  26. 【請求項26】前記ハードウェアモデルシミュレーショ
    ンまたは前記仮想モデルシミュレーションを選択する処
    理は、前記ハードウェアモデルシミュレーションで処理
    可能な前記機能関数名と、前記機能関数の選択条件と、
    フラグとが登録されたシミュレーション選択テーブルに
    により行われることを特徴とする請求項24に記載のシ
    ステムシミュレーション方法。
  27. 【請求項27】前記仮想モデルシミュレーションへ前記
    ハードウェアモデルシミュレーションの初期状態と等価
    な状態を登録する処理はシステムシミュレーション開始
    前に行われていることを特徴とする請求項24〜請求項
    26のいずれかに記載のシステムシミュレーション方
    法。
  28. 【請求項28】前記仮想モデルシミュレーションへ前記
    ハードウェアモデルの検証結果を登録する処理は前記シ
    ステムシミュレーションの進行につれて更新されること
    を特徴とする請求項24〜請求項27のいずれかに記載
    のシステムシミュレーション方法。
  29. 【請求項29】前記更新は、前記仮想モデルに付属して
    設けられたテーブルまたはレジスタへの書き込みによっ
    て行うことを特徴とする請求項28に記載のシステムシ
    ミュレーション方法。
  30. 【請求項30】前記システムシミュレーションの進行に
    つれて前記仮想モデルシミュレーションの結果が登録さ
    れ、その登録内容が前記ハードウェアモデルシミュレー
    ションに反映されることを特徴とする請求項24〜請求
    項28のいずれかに記載のシステムシミュレーション方
    法。
  31. 【請求項31】前記更新は、前記ハードウェアモデルに
    付属して設けられたテーブルまたはレジスタへの書き込
    みによって行うことを特徴とする請求項30に記載のシ
    ステムシミュレーション方法。
  32. 【請求項32】前記周辺回路の検証は、前記マイクロコ
    ンピュータのシミュレーションにおける周辺回路処理サ
    ブルーチンとして行われることを特徴とする請求項24
    に記載のシステムシミュレーション方法。
  33. 【請求項33】前記ハードウェアモデルシミュレション
    の結果をもとに割込み要求を検出するステップと、 割込インタフェースモデルを介して前記マイクロコンピ
    ュータのモデルに割込み要求信号を伝えるステップと、 前記ターゲットプログラムに記述され、前記割込み要求
    信号によって起動される割込み処理によりハードウェア
    の検証を行うようにしたことを特徴とする請求項24〜
    請求項32のいずれかに記載のシステムシミュレーショ
    ン方法。
  34. 【請求項34】前記ハードウェアモデルシミュレーショ
    ンの結果をもとにバス解放要求を検出するステップと、 バス解放要求インタフェースモデルを介して前記マイク
    ロコンピュータのモデルにバス解放要求信号を伝えるス
    テップと、 バス解放要求インタフェースモデルを介して前記ハード
    ウェアモデルにバス使用許可信号を伝えるステップと、 前記マイクロコンピュータモデルの検証を停止させて前
    記ハードウェアの検証を行うようにしたことを特徴とす
    る請求項24〜請求項32のいずれかに記載のシステム
    シミュレーション方法。
  35. 【請求項35】前記割込み要求信号は前記周辺回路を構
    成するシリアル入出力インタフェース対応のサブモデル
    から出力され、また前記バス要求信号は前記周辺回路を
    構成するDMA制御装置対応のサブモデルから出力され
    ることを特徴とする請求項34に記載のシステムシミュ
    レーション方法。
  36. 【請求項36】前記周辺回路の検証は、前記割込み要求
    信号発生の要因となる事象の発生により起動される前記
    ハードウェアモデルシミュレーションによって行われる
    ことを特徴とする請求項34または請求項35に記載の
    システムシミュレーション方法。
  37. 【請求項37】前記割込み要求信号は前記シミュレーシ
    ョン装置の外部端子への通信データの受信により発生す
    ることを特徴とする請求項36に記載のシステムシミュ
    レーション方法。
  38. 【請求項38】前記ハードウェアの検証が、前記シミュ
    レーション装置の外部端子で受信した通信データのデー
    タメモリへのDMA転送であることを特徴とする請求項
    13〜請求項16のいずれかに記載のシステムシミュレ
    ーション方法。
  39. 【請求項39】マイクロコンピュータとこれに接続され
    る周辺回路とを有する電子機器のターゲットプログラム
    および周辺回路のハードウェアをシミュレーション装置
    上で一体的に検証するシステムシミュレーション方法に
    おいて、 前記ターゲットプログラムはサブルーチン処理を有し、 前記サブルーチン処理を該サブルーチンによって得られ
    る結果と等価な結果が得られる仮想モデルシミュレーシ
    ョンで置き換えて処理することを特徴とするシステムシ
    ミュレーション方法。
  40. 【請求項40】マイクロコンピュータを使用する電子機
    器のプログラムおよびハードウェアをシミュレーション
    装置上で一体的に検証するシステムシミュレーション方
    法において、該システムシミュレーションの母体装置の
    読み出し専用メモリに、前記プログラムを書き込む手順
    と、前記母体装置のメモリに、前記プログラムを検証す
    るマイコンシミュレーションプログラム,前記プログラ
    ムに基づいて前記ハードウェアを検証するハードウェア
    モデルシミュレーションプログラム,CPU情報,ハー
    ドウェア接続情報,仮想モデル情報,仮想モデル選択情
    報およびシミュレータ間インタフェース情報を書き込ん
    で該母体装置をシミュレーション装置化する手順と、前
    記プログラムにしたがってシステムシミュレーションを
    実行する手順とから成り、前記仮想モデル情報に前記ハ
    ードウェアの検証結果を含ませる手順と、前記ハードウ
    ェアの検証のうち前記仮想モデル選択情報で指定された
    部分については前記マイコンシミュレーションプログラ
    ムにより代替して実行する手順とを有することを特徴と
    するシステムシミュレーション方法。
  41. 【請求項41】請求項19〜請求項40のいずれかに記
    載のシステムシミュレーション方法を実行するプログラ
    ムを記録したコンピュータ読み込み可能なシステムシミ
    ュレーション記録媒体。
JP20262598A 1998-07-17 1998-07-17 システムシミュレータおよびシステムシミュレーション方法 Expired - Fee Related JP3189793B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP20262598A JP3189793B2 (ja) 1998-07-17 1998-07-17 システムシミュレータおよびシステムシミュレーション方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP20262598A JP3189793B2 (ja) 1998-07-17 1998-07-17 システムシミュレータおよびシステムシミュレーション方法

Publications (2)

Publication Number Publication Date
JP2000035898A true JP2000035898A (ja) 2000-02-02
JP3189793B2 JP3189793B2 (ja) 2001-07-16

Family

ID=16460465

Family Applications (1)

Application Number Title Priority Date Filing Date
JP20262598A Expired - Fee Related JP3189793B2 (ja) 1998-07-17 1998-07-17 システムシミュレータおよびシステムシミュレーション方法

Country Status (1)

Country Link
JP (1) JP3189793B2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008070368A (ja) * 2006-09-11 2008-03-27 Dspace Digital Signal Processing & Control Engineering Gmbh 電子制御システムをテストする方法
JP2008287308A (ja) * 2007-05-15 2008-11-27 Toshiba Corp ブリッジプログラム、ブリッジ方法、シミュレータ
JP2009217531A (ja) * 2008-03-11 2009-09-24 Fujitsu Ltd 仮想ソフトウェア生成装置
JP2015170081A (ja) * 2014-03-06 2015-09-28 三菱電機株式会社 シミュレーション装置及びシミュレーションプログラム
KR101621841B1 (ko) 2014-12-18 2016-05-17 한국과학기술원 Hla/rti 기반 혼합회로 시뮬레이션 시스템 및 방법
KR101629725B1 (ko) * 2015-01-05 2016-06-13 한국과학기술원 프레임워크 기반의 혼합회로 시뮬레이션 시스템 및 방법
CN112328460A (zh) * 2020-10-20 2021-02-05 北京爱芯科技有限公司 总线性能仿真方法及装置、存储介质及电子设备

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008070368A (ja) * 2006-09-11 2008-03-27 Dspace Digital Signal Processing & Control Engineering Gmbh 電子制御システムをテストする方法
JP2008287308A (ja) * 2007-05-15 2008-11-27 Toshiba Corp ブリッジプログラム、ブリッジ方法、シミュレータ
JP2009217531A (ja) * 2008-03-11 2009-09-24 Fujitsu Ltd 仮想ソフトウェア生成装置
JP2015170081A (ja) * 2014-03-06 2015-09-28 三菱電機株式会社 シミュレーション装置及びシミュレーションプログラム
KR101621841B1 (ko) 2014-12-18 2016-05-17 한국과학기술원 Hla/rti 기반 혼합회로 시뮬레이션 시스템 및 방법
KR101629725B1 (ko) * 2015-01-05 2016-06-13 한국과학기술원 프레임워크 기반의 혼합회로 시뮬레이션 시스템 및 방법
CN112328460A (zh) * 2020-10-20 2021-02-05 北京爱芯科技有限公司 总线性能仿真方法及装置、存储介质及电子设备

Also Published As

Publication number Publication date
JP3189793B2 (ja) 2001-07-16

Similar Documents

Publication Publication Date Title
US6421793B1 (en) System and method for automated testing of electronic devices
JPS5975347A (ja) 論理回路のシミユレ−シヨン装置
JP3189793B2 (ja) システムシミュレータおよびシステムシミュレーション方法
US20010027387A1 (en) Debugging supporting apparatus, debugging supporting method and recording medium readable by computer with its programs recorded thereon
KR20190078681A (ko) 인공신경망 학습/시뮬레이션 시스템 및 방법
Pi Camera module
JP2861962B2 (ja) コンピュータプログラムのシミュレーション装置および方法
US8914274B1 (en) Method and system for instruction set simulation with concurrent attachment of multiple debuggers
JPS58178408A (ja) 模擬実行機能を備えたプログラマブル・コントロ−ラ
JPH09173641A (ja) 内蔵時計を用いたゲームプログラムの時間制御デバッグ方法および装置
KR100974934B1 (ko) 가상 시뮬레이션 시스템 및 하드웨어 제어 프로그램 구현방법
JPH0934918A (ja) デジタル回路をシミュレートする方法および装置
JP3137094B2 (ja) シミュレーション方法、シミュレーション装置及びその記録媒体
JPS5860361A (ja) オンラインデバッグ方法
JPH02284205A (ja) Pcのシミュレーション方式
JP2001209555A (ja) 入出力エミュレーション装置、入出力装置のエミュレーション方法および入出力装置エミュレーションプログラムを記録した記録媒体
JPH02224141A (ja) 論理シミュレーション方式
JP2005234703A (ja) 電子機器開発支援装置、電子機器開発支援方法及び電子機器開発支援プログラム
JPH10260865A (ja) シミュレーションシステム
JPS6091455A (ja) 論理回路のシミユレ−シヨン方式
JPH10240504A (ja) 通信プログラムの作成方法
CN109865290A (zh) 角色控制方法、装置、计算机设备及可读存储介质
JPS62162107A (ja) プログラマブルコントロ−ラにおけるプログラム変更方法
JPH08161006A (ja) プログラム制御装置
JPH07152794A (ja) 論理シミュレータ

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees