[go: up one dir, main page]

JP2008287462A - エミュレータ及びエミュレーション方法 - Google Patents

エミュレータ及びエミュレーション方法 Download PDF

Info

Publication number
JP2008287462A
JP2008287462A JP2007131336A JP2007131336A JP2008287462A JP 2008287462 A JP2008287462 A JP 2008287462A JP 2007131336 A JP2007131336 A JP 2007131336A JP 2007131336 A JP2007131336 A JP 2007131336A JP 2008287462 A JP2008287462 A JP 2008287462A
Authority
JP
Japan
Prior art keywords
clock
delay
cpu core
peripheral
voltage
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.)
Pending
Application number
JP2007131336A
Other languages
English (en)
Inventor
Tetsushi Uemura
哲史 植村
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 Electronics Corp
Original Assignee
NEC Electronics 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 Electronics Corp filed Critical NEC Electronics Corp
Priority to JP2007131336A priority Critical patent/JP2008287462A/ja
Publication of JP2008287462A publication Critical patent/JP2008287462A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

【課題】1周期以上の遅延があっても正しい遅延量を設定してエミュレーションすることができるエミュレータ及びエミュレーション方法を提供すること。
【解決手段】エミュレータ310は、ユーザ電圧に応じて予め求められた遅延値が設定値として格納されたテーブルブロック314と、テーブルブロック314を参照し、ソースクロック400に対しスキュー調整値により遅延を設定して遅延クロックを生成するスキュー調整用ブロック311と、定電圧で動作するCPUエバチップ318と、ユーザ電圧で動作し、CPUエバチップ318と共にプログラムを実行する周辺エバチップ313とを有し、スキュー調整用ブロック311により、CPUエバチップ318、周辺エバチップ313にユーザ電圧に応じた遅延のCPUコアクロック401、周辺エバクロック402を供給することで両者の同期を取りながらエミュレーションを実行する。
【選択図】図2

Description

本発明は、マイコン用インサーキットエミュレータ及びエミュレーション方法に関し、特に、電圧変動による同期調整を図ったエミュレータ及びエミュレーション方法に関する。
高機能なエミュレータは、CPU(Central Processing Unit)にソフトウェアをデバッグするために必要な多くの機能を有する。多くの機能とは、例えばプログラムを任意の箇所で停止させるブレーク機能、プログラム実行の軌跡をたどるためのトレース機能、実行中のメモリ内容を監視するリアルタイムRAM(Random Access Memory)モニタ機能などであり、これらは、本来のCPUに多くの付加回路が接続されて実現されている(以下、このような機能を有するCPUをCPUコアという。)。
このため高機能なエミュレータは、1個のLSIチップ上にCPUコアと、タイマー、時計及び割り込み機能を有する部分等の周辺機能を搭載することができず、CPUコアを有するLSI(以下CPUエバチップという。)、周辺機能を有するLSI(以下、周辺エバチップという。)に分割し、2つをプリント基板などで配線することでエミュレータを実現している。
近年、エミュレーションする製品(マイコン)の動作スピードの高速化、及び動作電源電圧範囲の拡張により、動作時に電源電圧、動作周波数を変更することが要求されてきている。実際のデバイスでは、CPUコアとメモリなどのインターフェースはレギュレータの固定電圧で動作していて、IOバッファはユーザ電圧により変動する。エミュレータでも、CPUエバチップとメモリ、及びホストマシンとのインターフェースは、固定電圧で動作させる必要がある。
またユーザーシステムに接続される周辺エバチップは、電源電圧、動作スピード、及び入出力タイミングをエミュレーションするために、実際のデバイスのIOバッファと同じようにユーザーシステムの仕様電源電圧に追従することが要求されている。そのためCPUエバチップと周辺エバチップの動作電圧が異なることや、基板での遅延によって2つのチップの動作にずれが発生してしまうため、CPUエバチップと周辺エバチップの動作クロックのスキュー(遅延)を調整することにより正しく動作するようにする必要がある。
そこで、このようなCPUコアと周辺エバチップのクロックのスキュー調整の方法が特許文献1に記載されている。図13(a)は特許文献1に記載のエミュレーション回路である。図13(a)に示すように、エミュレーションチップ620は、マイクロコンピュータ610とエミュレータであるホストマシン630のインターフェースを行なうチップである。ここで図13(a)に示すエミュレーションチップ(以下、CPUエバチップという。)620は上述のCPUコアに相当する。また、マイクロコンピュータ610は、上述の周辺エバチップに相当する。
エミュレーションチップ(CPUエバチップ)620は、発振回路621、タイミングジェネレータ622、データバスラッチ623、及び比較回路624で構成される。ホストマシン630はCPUエバチップ620と接続されている。マイクロコンピュータ(周辺エバチップ)610は、タイミングジェネレータ611、及び出力回路612で構成される。
CPUエバチップ620の発振回路621の出力は電圧レベル変換回路650を介して、マイクロコンピュータ610のタイミングジェネレータ611と、遅延回路660へ接続される。遅延回路660の出力は、CPUエバチップ620のタイミングジェネレータ622の入力に接続される。マイクロコンピュータ610のタイミングジェネレータ611の出力は、マイクロコンピュータ610の出力回路612の入力に接続されている。マイクロコンピュータ610の出力回路612の出力は、電圧レベル変換回路650を介して、CPUエバチップ620のデータバスラッチ623のバスに接続されている。CPUエバチップ620のデータバスラッチ623はCPUエバチップ620のクロックジェネレータ622からのクロックを入力として、メモリ640へデータを出力する。
CPUエバチップ620の比較回路624は、一方の入力がCPUエバチップ620のタイミングジェネレータ622の出力と接続され、他方の入力が電圧レベル変換回路650を介してマイクロコンピュータ610のタイミングジェネレータ611の出力と接続されている。比較回路624の出力は外部でモニタされ、そのモニタ結果から、遅延回路660の遅延量を設定する構成になっている。
次に、この特許文献1に記載のエミュレーション回路の動作について説明する。比較回路624は、クロック804とクロック805とを比較する。クロック804は、発振回路621の出力であるクロック800を遅延回路660において遅延させ、これをタイミングジェネレータ622の入力として生成したクロックである。クロック805は、発振回路621のクロック800が電圧レベル変換回路650を通ることで遅延された信号801をマイクロコンピュータ610のタイミングジェネレータ611に入力し、生成したクロックを、電圧変換回路650を介してCPUエバチップ620に入力した信号である。比較回路624の比較出力信号806に基づいて、遅延回路660の遅延量を設定することにより、CPUエバチップ620のタイミングジェネレータ622がデータバスラッチ623に出力するストローブ信号803と、データバス信号700が電圧レベル変換回路650を通り、データバスラッチ623に入力されたデータバス信号701との同期をとることができる。
図13(b)は図13(a)に示すエミュレーション回路の動作を示すタイミングチャートである。クロック800は発振回路621から生成されるクロック信号である。クロック801はクロック800に対して、クロック800を受けて、電圧レベル変換回路650を通ることで生じる遅延、及び配線遅延による遅れt1を生じている。
マイクロコンピュータ610ではクロック801を用いてタイミングジェネレータ611でクロック805とストローブ信号802を生成する。CPUエバチップ620ではデータバスラッチ623において、マイクロコンピュータ610が出力するデータバス信号700が電圧レベル変換回路650を通ったデータバス信号701をストローブ信号803でラッチし、メモリ640へ書き込む。
このとき、CPUエバチップ620が得るデータバス信号701は電圧レベル変換回路650の遅延及び配線遅延によりt3だけ、データバス信号700より遅れている。一方、CPUエバチップ620ではクロック800から遅延回路660により遅延された信号からタイミングジェネレータ622により基本クロック804とストローブ信号803を生成する。ここで、CPUエバチップ620が、マイクロコンピュータ610からのデータバス信号701を確実に取り込むためには、前記クロック801が発振回路から生成されたクロック800から、電圧レベル変換回路650を通ることによる遅延、及び配線遅延による遅れt1と、データバス信号701が電圧レベル変換回路650を通ることによる遅延及び配線遅延によりデータバス信号700に対しての遅れt3の合計時間だけ、遅延回路660により、発振回路621から生成されるクロック800からストローブ信号803を遅らせることにより可能となる。
その遅延回路660の遅延量を決めるために、マイクロコンピュータ610のクロック805と遅延回路660を通ったクロック804を比較回路624で比較し、その出力信号806のハイレベルの時間が遅延量t1と遅延量t3の合計時間から遅延回路660により遅らせた時間の差(これを遅延量をt2とする)と考えられるため、信号806をモニタしてハイレベルの期間がなくなるよう、すなわち遅延量t2が零になるように調整すれば、正しい遅延量を設定することができる。これにより、CPUエバチップ620のタイミングジェネレータ622がデータバスラッチ623に出力するストローブ信号803と、マイクロコンピュータ610のタイミングジェネレータ611の出力ストローブ信号802が出力回路612を介して出力されるデータバス信号700が、電圧レベル変換回路650を通り、データバスラッチ623に入力されるデータバス信号701との同期をとることができる。
特開平06−161808号公報
しかしながら、この特許文献1の方法では、比較回路624により位相を比較することにより遅延量を設定しているため、正常に動作する範囲は1周期以内となる。このために、電圧が大きく変化し、クロックのスキューの変動幅が1周期以上になったときに、1周期以上の変動に対しては検出できないという問題点がある。
図14(a)に示す例は、クロック804に対して、実際には遅延T4のクロック805がとなり、クロック804の1周期以上の遅延となった場合を示す。この場合、特許文献1に記載の方法では、実際の遅延とは異なる遅延T5の遅延量を設定してしまう。正しい遅延T4を設定した場合は、ラッチAのタイミングでデータバス701をラッチし、正しいDataAをラッチすることになるが、間違った遅延T5ではラッチBのタイミングでデータバス701をラッチしてしまい、正しいデータをラッチすることができない。
また、このように1周期以上の遅延がある場合に、動作周波数をモードの切り替えにより変更になった場合は図14(b)のように、高周波数のときは実際とは異なる遅延量T6を設定しており、低周波数に切り替えると遅延量T7へ大幅に遅延量が増え、調整までの時間がかかることなどで、さらなる誤動作を起こす可能性がある。
さらに、この特許文献1では動作クロックのタイミングを合わせるために比較回路624の出力比較信号806をモニタし調整するようにしているが、クロック遅延調整用の基板上の経路と本来の同期を取りたい、データバスラッチ623の入力までの経路は完全に同じわけではないので、基板上の遅延を調整することができないという問題点がある。
本発明に係るエミュレータは、マイクロコンピュータのCPU機能を実現するCPUコア部と周辺機能を実現する周辺部とを備えた前記マイクロコンピュータの動作を実現するエミュレータであって、クロックジェネレータから出力されるソースクロックを入力して、前記CPUコア部に供給される第1の動作クロックと前記周辺部に供給される第2の動作クロックとを生成するスキュー調整部と、前記周辺部に供給されるユーザ電圧に応じて求められ、前記第1又は前記第2の動作クロックに付加される遅延量を決定するための設定値が格納された設定値テーブルとを有し、前記スキュー調整部は、前記設定値に基づいて前記第1の動作クロックと前記第2の動作クロック間のスキューを調整するものである。
本発明に係るエミュレーション方法は、マイクロコンピュータのCPU機能を実現するCPUコア部及び周辺機能を実現する周辺部と、該周辺部に供給されるユーザ電圧に応じて予め求められ前記CPUコア部に供給される第1の動作クロック又は前記周辺部に供給される第2の動作クロックに付加される遅延量を決定するための設定値が格納された設定値テーブルとによって、前記マイクロコンピュータの動作をエミュレーションするエミュレーション方法であって、前記ユーザ電圧を測定し、前記測定した結果に基づいて、前記設定値テーブルから所定の設定値を選択し、前記選択した所定の設定値に基づいて、前記第1の動作クロックと前記第2の動作クロック間のスキューを調整するものである。
本発明においては、ユーザ電圧に応じて予め求められた遅延値が設定値として格納された設定値テーブルを有し、この設定値テーブルを参照して第1及び第2の動作クロックを生成するので、正しい遅延量の第1及び第2の動作クロックを生成してCPUコア部及び周辺部の同期を取ることができる。
本発明においては、1周期以上の遅延があっても正しい遅延量を設定してエミュレーションすることができるエミュレータ及びエミュレーション方法を提供することができる。
実施の形態1.
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。図1はインサーキットエミュレータのシステム全体を示す図である。図1に示すように、インサーキットエミュレータ310はユーザのターゲットシステム開発やマイコンに組み込むソフトのデバッグを目的とし、ユーザのターゲットに乗せる実際のマイコンと同じ動きをし、さらにホストマシン1から、ブレークやトレースなどのデバッグ機能の操作を可能にした装置である。
本実施の形態におけるエミュレータ310は、マイクロコンピュータのCPU機能を実現するCPUコア312と周辺機能を実現する周辺エバチップ313とを備えたマイクロコンピュータの動作を実現するエミュレータであり、クロックジェネレータ317から出力されるソースクロックを入力して、CPUコア312に供給される第1の動作クロック401と周辺エバチップ313に供給される第2の動作クロック402とを生成するスキュー調整用ブロック311と、周辺エバチップ313に供給されるユーザ電源の電圧値(ユーザ電圧)に応じて求められ、CPUコアクロック401又は周辺エバクロック402に付加される遅延量を決定するための設定値が格納されたテーブルブロックとを有する。そして、スキュー調整用ブロック311は、設定値に基づいてCPUコアクロック401と周辺エバクロック402間のスキューを調整する。
具体的には次のように構成される。すなわち、エミュレータ310は、実際のマイコンのCPU機能にデバッグ機能をプラスしたCPUコア312を有するLSIのCPUエバチップ318と、実際のマイコンの周辺機能を有する周辺エバチップ313と、その他ホストコントロールMCU2、エミュレーションメモリ3、レベルシフタ4、クロックジェネレータ317、及びターゲットI/F6、ホストインターフェース(不図示)を有している。
ユーザ電源は、ユーザターゲットボード5からターゲットI/F6を介して供給される。ユーザターゲットボード5と直接接続される周辺エバチップ313はユーザターゲットボード5から供給されるユーザ電源に追従して動作しており、エミュレーションメモリ3やホストコントロールMCU2、クロックジェネレータ317、及びCPUエバチップ318は外部AC電源から供給される3.3V固定で動作している。レベルシフタ4は、CPUエバチップ318側のレベルシフタの入出力端子の駆動電源に3.3V電源を使用し、周辺エバチップ313側のレベルシフタの入出力端子の駆動電源にユーザ電源を使用している。
エミュレーションメモリ3は、CPUエバチップ318が実行するユーザプログラムや実行結果等を格納する。クロックジェネレータ317はソースクロック400を生成する。CPUエバチップ318は、CPUコア312及びスキュー調整用ブロック311を有し、ホストコントロールMCUはユーザ電圧測定ブロック315及びテーブルブロック314を有する。
テーブルブロック314は、ユーザ電圧に応じて予め求められた遅延値が設定値として格納された設定値テーブルとして機能する。スキュー調整用ブロック311は、テーブルブロック314を参照し、クロックジェネレータ317が生成するソースクロック400に対し、テーブルブロック314に格納されたスキュー調整値(設定値)により遅延を設定して第1の動作クロック及び第2の動作クロックとなるCPUコアクロック401及び周辺エバクロック402を生成するスキュー調整部として機能する。
CPUエバチップ318は定電圧で動作するチップであり、そのCPUコア312は、CPUにソフトウェアをデバッグするために必要な、例えばプログラムを任意の箇所で停止させるブレーク機能、プログラム実行の軌跡をたどるためのトレース機能、実行中のメモリ内容を監視するリアルタイムRAMモニタ機能などの多くの機能が付加されたものである。ユーザ電圧測定ブロック315は、ユーザ電圧405に基づきユーザ電圧をデコードし、スキュー調整用ブロック311は、このデコード値に応じてテーブルブロック314から設定値を読み出す。周辺エバチップ313は、ユーザ電圧で動作し、CPUエバチップ318と共にプログラムを実行するチップであり、CPUコア312と周辺エバチップ313とは相互にバス320で接続されている。
本実施の形態においては、最適なスキュー調整値のテーブルを作成してテーブルブロック314に記録しておき、テーブルブロック314からスキューの調整値を設定する。テーブルブロック314に書き込むスキュー設定値は1周期以上の値とすることも可能であるので、実際と異なる遅延量を設定することがない。なお、ここでのテーブルブロック314とは、FLASH、EEPROM等を含む不揮発性のメモリ全般を示すが以下では代表してROMともいう。テーブルブロック314からのスキュー調整値の設定を行うタイミングは、ユーザの使用電圧をモニタしユーザの使用電圧の変動に追従してテーブルブロック314から選択して設定する。すなわち、エミュレータ310は、スキュー調整ブロック311により、CPUエバチップ318及び/又は周辺エバチップ313にそれぞれの動作電圧に応じた遅延値のCPUコアクロック401、周辺エバクロック402を供給することで両者の同期を取りながらエミュレーションを実行する。
図2は本実施の形態1にかかるエミュレータ310の各機能を示すブロックである。ユーザ電源電圧供給部316からの動作電圧を受けて動作するエミュレータ310はクロックジェネレータ317と、クロックジェネレータ317が生成するソースクロック400を入力とするスキュー調整用ブロック311と、ユーザ電圧405の電圧を測定するユーザ電圧測定ブロック315と、その測定した電圧値をアドレス値にデコードするデコーダ362と、そのアドレス出力404が供給されるテーブルブロック314と、スキュー調整用ブロック311が生成したCPUコアクロック401及び周辺エバクロック402がそれぞれ供給されるCPUコア312及び周辺エバチップ313とを有する。
次にこのエミュレータ310の動作について説明する。ユーザ電源電圧供給部316の電圧をユーザ電圧測定ブロック315において測定を行う。ユーザ電圧測定ブロック315は、電圧値が変化した場合にテーブルブロック314に対してデコーダ362でデコードしたアドレス出力を行う。テーブルブロック314はそのアドレス出力に対応したスキュー設定値をスキュー調整用ブロック311に出力する。
スキュー調整用ブロック311はクロックジェネレータ317からのソースクロック400とテーブルブロック314からのスキュー調整値設定信号403により、ソースクロック400に対して適切な遅延値を与えたクロックを生成し、CPUコア312にはCPUコアクロック401を周辺エバチップ313には周辺エバクロック402を供給する。このことによりCPUコアと周辺エバチップは、ユーザ電圧に対応した、同期の取れた動作が可能になる。
ここで、スキュー調整値(設定値)とは、CPUコア312と、周辺エバチップ313の動作のずれによる誤動作を補正するために、CPUコア312の動作クロック又は周辺エバチップ313の動作クロックに付加する遅延のことである。
図3はユーザ電圧測定ブロック315からデコーダ362よりアドレスを出力するまでの一般的な回路構成を示す図である。本例では、ユーザ電圧測定ブロック315が電圧測定結果を8ビット精度でデコーダ362に供給する例を示す。デコーダ362の内部では、それぞれの電圧範囲の比較値とユーザ電圧測定結果とをそれぞれ比較した結果から、その電圧範囲に相当するアドレスを出力する。本例では、比較回路511〜514の4つを具備し、比較する電圧範囲をそれぞれ5V以上、4V<電圧<5V、3V<電圧<4V、2.5V<電圧<3V、2.5V以下に電圧範囲を分けている。例えば3.54Vが電圧測定結果として供給された場合、5V以上を検出する比較回路511、4〜5Vを検出する比較器512は"1"を出力し、3〜4Vを検出する比較回路513、2.5V未満を検出する比較回路514は"0"を出力する。これらの入力を受けてアドレス値に変換して出力する変換部511は、アドレス出力404として"0002H"を出力する。
次に、スキュー調整用テーブルの作成方法について説明する。本実施の形態においては、任意の動作範囲の電圧において遅延値を変化させ、CPUコア312(CPUエバチップ318)及び周辺エバチップ313が正常に動作するか否かをテストし、正常に動作する範囲の遅延値の中でもっともマージンが大きい値をスキュー調整値とし、各ユーザ電圧に対するスキュー調整値を求めてスキュー調整用テーブルを作成する。
図4はスキュー調整用テーブルの作成方法を示すフローチャートである。スキュー調整用テーブルは、テーブルブロック314の中に格納される。先ず、初期電圧値を設定する(ステップS1)。たとえば、5V、4V、3V、2Vと電圧を変化させる場合に最初にテストを行う電圧を5Vとしていれば、ここでの初期電圧値は5Vである。
ステップS2以降は、個々のエミュレータ製品毎に出荷検査工程等で行なう工程で、これによりその製品固有のスキュー調整値を調整することができる。先ず、初期スキュー調整値を設定する(ステップS2)。ステップS2の初期スキュー調整値は、1番最初の1台については設定できる最小値とする。2台目以降は、1台目のステップS3のテスト結果を基準とすることにより、すべての範囲でスキュー幅を変化させて確認せずに、最適値が得られそうな限定した範囲としてテストすることができる。
例えば、−12nsから+16nsまでスキューを変えてテストする場合、1台目は、−12ns〜+16nsまでスキューを変えてテストする必要があるが、1台目のテストをパスした範囲が、図5に示すように−3ns〜+13nsであある場合、2台目以降の初期スキュー調整値は−12nsから始めずに、例えば−5ns等とすることができる。
次に、設定した電圧値及びスキュー調整値においてテストを行う。ここでのテストの対象はエミュレータ310自身であり、CPUエバチップ318及び周辺エバチップ313が正常に動作するか否か(OKかNGか)を電圧値とスキュー調整値毎にテストし、結果を記録する(ステップS3)。記録はテストプログラムの中でホストマシン1に、結果を記録するテスト結果のテンポラリファイルを作成してそこへ記録する等すればよい。
テストでは、例えば、CPUコア312と周辺エバチップ313の2チップ間のバス320を動作させるプログラムを動かし期待値との比較を行なう。また、割り込みやメモリアクセスなど実際に機能を動かし動作に問題がないかを確認する。
次に、すべてのスキュー調整値に対してテストを実行したか否かを判定する(ステップS4)。なお、全てのスキュー調整値は、2台目以降は限定された範囲のすべてのスキュー設定値となる。全てのスキュー調整値についてテストを行ってない場合は、スキュー調整値を変化させ(ステップS5)、ステップS3に戻る。
全てのスキュー調整値についてテストを行った場合は、テスト結果を記録したファイルから、テストをパスしたスキュー設定値の中央値を一番マージンが大きくなるスキュー調整値として求める。図5(a)、図5(b)の結果例のようにそれぞれの電圧範囲で、パスしたスキュー調整値の中央値を一番マージンがあるスキュー調整値として求める。そして、そのスキュー調整値をその測定電圧値でのスキュー調整値として、ホストマシンに別途テンポラリファイルを作成して記録する。(ステップS6)。
そして、すべての測定電圧値に対してテストを行ったかどうか判定し(ステップS7)、行ってない場合は電圧値を変化させ(ステップS8)ステップS2に戻る。全ての電圧値に対してテストを行なった場合は、ホストマシン1からエミュレータ310上のテーブルブロックへ各電圧ごとのスキューを最適にするスキュー調整値を書き込み(ステップS9)、終了する。このように、任意の動作範囲の電圧において遅延値を変化させ、CPUエバチップ318及び周辺エバチップ313が正常に動作するか否かをテストして設定値テーブルを生成し、この設定値テーブルを参照してクロックを生成するため正しい遅延値のクロックでエミュレーションを実行することができる。
図5(a)及び図5(b)は、個体差によるバラつきがあった場合の結果例を示す。図5 (a)は、100MHzで測定した第1の例である。スキュー調整値は、テーブルのデータ格納可能範囲と、本実施の形態にかかるエミュレータ310において、必要とする実際のスキュー調整値の精度を考慮し、係数を変更することが可能である。
本例においてはスキュー設定値の+1と実際のスキュー調整値の+1nsとが対応している。図5(a)において、例えば、5.0−5.5Vでは、パスするスキュー調整値は−3nsから+6nsの間なので、一番マージンが大きい+1nsのスキュー調整値を最適値とする。また、1.5−2.0Vでは+7nsが最適値となる。100MHzでの測定であるので1周期は10nsであるが、この第1の例においては1周期以上の遅延はなく、上述の特許文献1の位相比較回路でも動作可能である。
図5(b)は、同じく100MHzで測定した第2の例である。本例は、個体差によるバラつきが大きかった場合の結果例であり、遅延量が1周期以上となるため、上述の特許文献1に記載の手法では調整することができない。この第2の例においては、例えば5.0−5.5Vの最適値は−4nsであり、1.5‐2.0Vの最適値は+11nsとなる。すなわち、その差が15nsであり、10ns(1周期)以上になっているが、本実施の形態ではテーブルブロック314にスキュー最適値を格納するので、1周期以上の設定も可能である。よって、上述したように、1周期以上の設定ができないことによるアクセスタイミングのずれを解決することができる。また、図5(a)、図5(b)の例のように個体差がある場合でも、それぞれの個体差に応じた改善を図ることができる。
図6は図1のテーブルブロック314に格納されるテーブルの例を示す図である。図6(a)に図5(b)のスキュー調整値結果の一覧を示す。すなわち、図6(a)は、図5(b)のスキュー調整用テーブル作成のための結果におけるユーザ電圧範囲とその際のスキューの最適な設定値との対応表である。ここではスキュー設定値の+1と実際のスキュー調整値の+1nsとが対応している。
図6(a)に図2に示すテーブルブロック314に実際に載せるスキュー調整値テーブルであって、上述の第2の例に対応したものを示している。テーブル形式については、図6(b)に示すように、ユーザの電圧範囲が5.0V以上にあるときは、テーブルブロック(ROM)のアドレス"0000H"のデータをスキュー設定値とするというような関連付けをした設定テーブルとしている。また設定値については16ビットで上位8ビットに−値を、下位8ビットに+値を格納するようにしている。スキュー設定値を読み出す処理が、テーブルブロック(ROM)の直接アドレスに対応させているため、素早くかつ容易にアクセスができるという効果も奏する。
次にスキュー調整用ブロックの詳細について説明する。図7はスキュー調整用ブロックの詳細を示すブロック図である。スキュー調整用ブロック311は、スキュー設定値分離回路350、スキュー設定値選択回路351、第1CPUコアレジスタ332、第2CPUコアレジスタ333、CPUコアクロック切替回路336、CPUコアクロック切替信号生成回路334、CPUコアレジスタクリア回路335、第1CPUコアクロック選択回路330、及び第2CPUコアクロック選択回路331を有する。更に、第1周辺エバチップレジスタ342、第2周辺エバチップレジスタ343、周辺エバクロック切替回路346、周辺エバクロック切替信号生成回路344、周辺エバチップレジスタクリア回路345、第1周辺エバクロック選択回路340、第2周辺エバクロック選択回路341、及び遅延ゲート321〜324を有する。
ここで、本実施の形態においては、例えば、予め所定の遅延量を有する遅延ゲートを、所望の段数接続し、所望の遅延量のCPUコアクロック401、周辺エバクロック402を生成する。従って図7に示す例においては、遅延ゲートは4つのみ図示しているが、これに限るものではなく、上述の図5に示す場合であれば、−12ns乃至+16ns遅延させたクロックを生成するための段数の遅延ゲートが必要となる。また、製造ばらつき等の影響を考慮し、生成できる遅延量がある程度マージンを有するようにしてもよい。
スキュー設定値分離回路350において、スキュー調整値設定信号403を正負信号と絶対値信号に分ける。スキュー設定値選択回路351はスキュー設定値分離回路350の正負信号と絶対値信号を受けて、正負信号が負の場合には第2CPUコアレジスタ333に絶対値信号を、正の場合には第2周辺エバチップレジスタ343に絶対値信号を送る。また絶対値信号を送っていない他方レジスタには、"1"を送るように動作する。
第2CPUコアレジスタ333はスキュー設定値選択回路351からのデータを格納する。第1CPUコアレジスタ332は第2CPUコアレジスタ333のデータを受け取り格納する。ソースクロック400とそれに直列に接続された遅延ゲート321、322、323、324のそれぞれからの出力は第1CPUコアクロック選択回路330と第2CPUコアクロック選択回路331に入力される。第1CPUコアクロック選択回路330には他にVDDが入力として、第2CPUコアクロック選択回路331には他にGNDが接続されている
第1CPUコアレジスタ332の格納データは、CPUコアクロック選択回路330の信号切替信号として入力され、第2CPUコアレジスタ333の格納データは第2CPUコアクロック選択回路331の信号切替信号として入力される。第1CPUコアクロック選択回路330と第2CPUコアクロック選択回路331の出力は、CPUコアレジスタクリア回路335のそれぞれの入力となり、そのCPUコアレジスタクリア回路335の出力は、第1CPUコアレジスタ332のクリア信号となる。
第1CPUコアクロック選択回路330と第2CPUコアクロック選択回路331の出力は、CPUコアクロック切替回路336に入力される。第1CPUコアレジスタ332の出力は、CPUコアクロック切替信号生成回路334に入力され、CPUコアクロック切替信号生成回路334の出力はCPUコアクロック切替回路336のクロック切替信号となり、そのCPUコアクロック切替回路336の出力はCPUコアクロック401となる。
第2周辺エバチップレジスタ343はスキュー設定値選択回路351からのデータを格納する。第1周辺エバチップレジスタ342は第2周辺エバチップレジスタ343のデータを受け取り格納する。ソースクロック400とそれに直列に接続された遅延ゲート321、322、323、324のそれぞれからの出力は第1周辺エバクロック選択回路340と第2周辺エバクロック選択回路341に入力される。第1周辺エバクロック選択回路340には他にVDDが入力として、第2周辺エバクロック選択回路341には他にGNDが接続されている
第1周辺エバチップレジスタ342の格納データは、第1周辺エバクロック選択回路340の信号切替信号として入力され、第2周辺エバチップレジスタ343の格納データは第2周辺エバクロック選択回路341の信号切替信号として入力される。
第1周辺エバクロック選択回路340と第2周辺エバクロック選択回路341の出力は、周辺エバチップレジスタクリア回路345のそれぞれの入力となり、その周辺エバチップレジスタクリア回路345の出力は、第1周辺エバチップレジスタ342のクリア信号となる。第1周辺エバクロック選択回路340と第2周辺エバクロック選択回路341の出力は、周辺エバクロック切替回路346の入力に接続されている。
第1周辺エバチップレジスタ342の出力は、周辺エバクロック切替信号生成回路344に入力され、周辺エバクロック切替信号生成回路344の出力は周辺エバクロック切替回路346の切替信号となり、その周辺エバクロック切替回路346の出力は周辺エバクロック402となる。
図8は図7のスキュー調整用ブロック311でのクロックの切り替えのタイミングチャートを示す。ここではCPUコアクロック401が時刻T102において遅延ゲート322の出力から、遅延ゲート324の出力に切り替わる例を示す。例えば、CPUコア312よりも、周辺エバチップ313の動作電圧が大幅に低い場合、CPUコア312の方が速く動作するため、CPUコア312の動作クロックに遅延ゲート322で遅延を付加することにより周辺エバチップ313との動作タイミングを合わせる。そして、この状態から、周辺エバチップ313の電圧がさらに下がることで、CPUコア312の動作クロックにより大きな遅延となる遅延ゲート324に切り替えることでCPUコア312の動作と周辺エバチップ313の同期を合わせる例である。
スキュー調整値設定信号403の変化により、スキュー設定値分離回路350とスキュー設定値選択回路351が動作し、CPUコアクロックの切替信号であるスキュー設定値を第2CPUコアレジスタ333に与える。そして、時刻T100において、スキュー調整値設定信号403から得られた第2CPUコアレジスタ333の格納データは0010H(遅延信号411選択信号)であり、遅延信号411を選択しているため、第2CPUコアクロック選択回路331の出力は遅延信号411が出力されている。
第1CPUコアレジスタ332のデータはCPUコアレジスタクリア回路335により、クリアされているため0000Hが出力され、第1CPUコアクロック選択回路330の出力は0000H選択時のVDDが出力され、出力信号423としてHiが出力されている。
第1CPUコアレジスタ332は0000Hのため、CPUコアクロック切替信号生成回路334はLowとなり、第2CPUコアクロック選択回路331が選択され、CPUコアクロック401には遅延信号411が出力されている。
時刻T101において、第2CPUコアレジスタ333のデータは0101H(遅延信号413の選択信号)に変化する。第2CPUコアレジスタ333の前のデータである0010H(遅延信号411の選択信号)は第1CPUコアレジスタ332へ転送される。そのため、第2CPUコアクロック選択回路331は遅延信号413を出力し、第1CPUコアクロック選択回路330は遅延信号411を出力する。
CPUコアクロック切替信号生成回路334は第1CPUコアレジスタ332が0ではないため、Hi出力となり、CPUコアクロック切替回路336は第1CPUコアクロック選択回路330の出力信号423を選択し、出力の遅延信号411がCPUコアクロック401に出力される。
時刻T102において、第1CPUコアクロック選択回路330と第2CPUコアクロック選択回路331の出力信号である遅延信号411と遅延信号413が共に同一論理レベルであるLowのタイミングで、CPUコアレジスタクリア回路335の出力がHiとなり、第1CPUコアレジスタ332のデータがクリアされる。そのためCPUコアクロック切替信号生成回路334がLowになり、CPUコアクロック切替回路336が出力信号を遅延信号411から、遅延信号413へ切り替えることにより、CPUコアクロックは遅延信号413となる。
以上述べたように、ここでは、時刻T101のタイミングでスキュー設定値信号403が変化するが、CPUコアクロック401の切り替えは時刻T102で行なう。このように、CPUコアクロック401の切り替えの前後の信号が共にLow位相となるようなタイミングで信号を切り替える。すなわち、時刻T102前のタイミングで第1CPUコアクロック選択回路330のクロック信号423はLowレベルであり、時刻T102後のタイミングで第2CPUコアクロック選択回路331のクロック信号424はLowレベルであり、時刻T102の前後において、切り替えるクロック信号423、424は共にLowレベルとなっている。このことにより、スキュー切替信号のタイミングに関わらず、変化前後の信号の変化タイミングに同期して、実際の信号を切り替えるため、動作クロックのひげの発生を防止することができ、誤動作を防ぐことができる。
次に、図9はCPUコアクロック401側を遅延させている状況から、周辺エバクロック402側に遅延が入るようにクロックを切り替える時のタイミングチャートを示す。ここではCPUコアクロック401が時刻T202において最初の遅延ゲート322の出力から、遅延なしのスルー出力に切り替わり、周辺エバクロック402が時刻T203において遅延なしのスルー出力から、遅延ゲート323の出力に切り替わる例を示す。
これは、例えば、CPUコア312よりも周辺エバチップ313の動作電圧が低く、CPUコア312の方が速く動作するため、CPUコア312の動作クロックに遅延ゲート322で遅延を付加することにより周辺エバチップ313との動作タイミングを合わせている状態から、周辺エバチップ313の電圧がCPUコア312の電圧よりも上がることで、CPUコア312の動作クロックに遅延が不要になり遅延なしのスルー出力に切り替え、逆に周辺エバチップ313の動作クロックに遅延が必要になり、遅延なしのスルー出力から遅延ゲート323に切り替えることでCPUコア312の動作と周辺エバチップ313の動作を合わせる場合などである。
スキュー調整値設定信号403の変化により、スキュー設定値分離回路350とスキュー設定値選択回路351が動作し、CPUコアクロック切替信号421となるスキュー設定値を第2CPUコアレジスタ333に与え、また、周辺エバクロック切替信号422に当たるスキュー設定値を周辺エバコアレジスタ343に与える。
そして、時間T200においては、スキュー調整値設定信号403が第2CPUコアレジスタ333のデータは0010H(遅延信号411の選択信号)であり、遅延信号411を選択しているため、第2CPUコアクロック選択回路331の出力は遅延信号411が出力されている。
また、第2周辺エバコアレジスタ343のデータは0001H(ソースクロック400の選択信号)であり、遅延なしのソースクロック400を選択しているため、第2周辺エバクロック選択回路341の出力はソースクロック400が出力されている。第1CPUコアレジスタ332のデータはCPUコアレジスタクリア回路335により、クリアされているため0000Hが出力され、第1CPUコアクロック選択回路330の出力は0000H選択時のVDDとなり、出力信号423としてHi出力されている。
第1CPUコアレジスタ332は0000Hのため、CPUコアクロック切替信号生成回路334は、Lowとなり、第2CPUコアクロック選択回路331が選択され、CPUコアクロック401には遅延信号411が出力されている。また、第1周辺エバチップレジスタ342のデータは周辺エバチップレジスタクリア回路345により、クリアされているため0000Hが出力され、第1周辺エバクロック選択回路340の出力は0000H選択時のVDDとなり、信号ライン433にHi出力されている。
第1周辺エバチップレジスタ342は0000Hのため、周辺エバクロック切替信号生成回路344はLowとなり、第2周辺エバクロック回路341が選択され、周辺エバクロック402には、遅延なしのソースクロック400が出力されている。
時間T201において、第2CPUコアレジスタ333のデータは0001H(ソースクロック400の選択信号)に変化する。第2CPUコアレジスタ333の前のデータである0010H(遅延信号411の選択信号)は第1CPUコアレジスタ332へ転送される。そのため、第2CPUコアクロック選択回路331は遅延なしのソースクロック400を出力し、第1CPUコアクロック選択回路330は遅延信号411を出力する。CPUコアクロック切替信号生成回路334は第1CPUコアレジスタ332が0ではないためHi出力となり、CPUコアクロック切替回路336は第1CPUコアクロック選択回路330の出力信号423を選択し、遅延信号411がCPUコアクロック401として出力される。
次に、時刻T201において、第2周辺エバチップレジスタ343のデータは0011H(遅延信号412の選択信号)に変化する。第2周辺エバチップレジスタ343の前のデータである0001H(ソースクロック400の選択信号)は第1周辺エバチップレジスタ342へ転送される。そのため、第2周辺エバクロック選択回路341は遅延信号412を出力し、第1周辺エバクロック選択回路340は遅延なしソースクロック400を出力する。
周辺エバクロック切替信号生成回路344は第1周辺エバチップレジスタ342が0ではないためHi出力となり、周辺エバクロック切替回路346は第1周辺エバクロック選択回路340の出力信号433のラインを選択し、遅延なしソースクロック400が周辺エバクロック402として出力される。
そして、時刻T202において、第1CPUコアクロック選択回路330及び第2CPUコアクロック選択回路331の出力信号であるそれぞれ遅延信号411及びソースクロック400が共にLowのタイミングで、CPUコアレジスタクリア回路335の出力がHiとなり、第1CPUコアレジスタ332のデータがクリアされる。そのためCPUコアクロック切替信号生成回路334がLowになり、CPUコアクロック切替回路336が出力信号を遅延信号411から、遅延なしソースクロック400へ切り替えることにより、CPUコアクロックはソースクロック400となる。
また、時刻T203において、第1周辺エバクロック選択回路340及び第2周辺エバクロック選択回路341の出力信号であるそれぞれ遅延信号412及びソースクロック400が共にLowのタイミングで、周辺エバチップレジスタクリア回路345の出力がHiとなり、第1周辺エバチップレジスタ342のデータがクリアされる。そのため周辺エバクロック切替信号生成回路344がLowになり、周辺エバクロック切替回路346が出力信号を遅延なしソースクロック400から、遅延信号412へ切り替えることにより、周辺エバクロックは遅延信号412となる。
以上述べたように、ここでは時刻T201のタイミングでスキュー設定値信号403が変化するが、CPUコアクロック401の信号の切り替えは切り替え前後の信号が共に同一論理レベルであるLow位相のタイミングT202により信号を変化させる。すなわち、CPUコアクロック401は、時刻T202までは遅延ゲート322の出力411を選択し、時刻T202にソースクロック400を選択するため、時刻T202の前後でいずれもLowレベルとなっている。同様に周辺エバクロック402は時刻T203のタイミングで信号を切り替えるが、切り替え前後の信号が共に同一論理レベルであるLow位相のタイミング(T203)にて信号を変化させる。すなわち、時刻T202までは、ソースクロック400を選択し、T202のタイミングで遅延ゲート323の出力412を選択することで、周辺エバクロック402は、T202のタイミング前後でいずれもLowレベルとなる。このことにより、スキュー切替信号のタイミングに関わらず、変化前後の信号の変化タイミングに同期して、実際の信号を切り替えるため、動作クロックにひげの発生を防止することができ、誤動作を防止することができる。
従来ではクロックの位相比較で調整値を求めていたため、高周波数で電圧変動幅が広くなった場合に遅延がクロックの周期以上になると適切な遅延量とすることができなくなっていたが、本実施の形態においては予め、動作電圧毎に、CPUエバチップ318及び周辺エバチップ313が最適に動くスキュー調整値をテーブルで保持しているためクロック周期以上の遅延であっても調整可能である。このため動作周波数が変動するシステムでも、1周期以上のクロックスキューを検出し設定できるため、周辺エバチップ313とCPUエバチップ318間で入出力するデータのタイミングが一致し、誤動作することがない。
さらに、本実施の形態においては実際のタイミングスキューを設定電圧毎に組み込んで動作を行うため、従来のように基板上にクロックの経路の違いによる基板上の遅延調整の誤差が生じることがないため、より誤動作の生じないシステムが構築することができる。
実施の形態2.
次に、本発明の実施の形態2について説明する。実施の形態1のユーザ電圧測定ブロック315を、マイコン(MCU)360のAD機能(AD変換器361)で実現することも可能である。図10は、本実施の形態にかかるエミュレータを示すブロック図である。エミュレータ310は、MCU360を有し、テーブルブロック314はMCU360のROMを使用する。このMCU360はエミュレータ310上に実装しているメインボードとホストマシンのI/Fのコントロール用マイコンを使用することができる。本実施の形態は、MCU360のAD機能が余っている場合に有効である。
この場合、マイコンのテーブルブロック(ROM)314にスキュー調整用のテーブルを書き込んでおいて、AD変換器361でユーザ電圧をモニタする。テーブルからのスキュー設定値を元に、スキュー調整用ブロック311で周辺エバチップ313とCPUコア312の動作クロックを調整する。
MCU360のプログラムの中で、動作電圧をAD変換する機能を常に動作させ、AD変換終了割り込みの度に定期的にテーブルブロック314へ、また、そのアドレスについては、電圧範囲A(3.0V−2.0V)に対応するアドレスをテーブルブロックの0003H番地に、電圧範囲B(5.5V以上)を対応するアドレスをテーブルブロックの0000H番地にというように予め決めておく。
本実施の形態においても実施の形態1と同様の効果を奏する。実施の形態1における電圧測定ブロックとテーブルブロックを、エミュレータ310とホストマシンのI/Fのコントロール用MCU360で余ったROM、AD変換器、Port又は外部拡張機能で実現することにより、コスト削減を図ることができる。
さらに、基板上の構成がシンプルになる。さらにまた、MCU360が搭載されていて、そのAD機能が余っていた場合、新たな資源を追加することなく本実施の形態にかかるエミュレータを実現することができる。たとえば図1の全体構成図のようにエミュレータ310とホストマシン1間の通信をコントロールするマイコンがあり、かつそのマイコンの機能が余っている場合は、本実施の形態2で必要なMCU360を兼用して使用できるため、新たなマイコンを実装せずにすみ、コストの削減につながる。
実施の形態3.
次に、本発明の実施の形態3について説明する。本実施の形態においては、実施の形態1における電圧測定ブロックを、コンパレータ(アナログIC)を設けて実現する。図11は、実施の形態3にかかるエミュレータを示すブロック図である。実施の形態1でのユーザ電圧測定ブロック315を図11のコンパレータ部363に置き換えてもよい。図12にコンパレータ部363の詳細を示す。スキュー調整を切り替える基準電圧値毎にコンパレータ501〜504を設け、それぞれのコンパレータ501〜504に基準電圧を期待値として、ユーザ電圧を比較対象電圧として入力する。そして、コンパレータ501〜504の出力をデコーダ505に接続する。
各コンパレータ501〜504で基準電圧と比較対象のユーザ電圧と比較して出力される"High"または"LOW"の出力結果をデコーダ505にて、ROMのアドレスにデコードする。デコーダ505以下の動きについては、実施の形態1と同様で、予め求めてテーブルブロック314に格納してあるスキュー調整用テーブルから、スキュー調整値をコンパレータ部363から出力されるアドレスにより選択することで、ユーザの電圧に合ったスキューで動作させることができる。
本実施の形態においても、実施の形態1と同様の効果を奏する。さらにコンパレータ部363を使用することにより、電圧検出のスピードがあがり、ユーザの動作によりリアルタイム追従した設定を行うことができる。また、マイコンのAD変換速度min6μSに対して、コンパレータ部363の変換速度は0.3μs〜1μsなのでより、コンパレータ部363を採用した方が電圧変動により速く反応することができる。
以上、説明したように、CPUエバチップ318が一定電圧で動作しており、周辺エバチップ313の動作電圧が変動する複数チップ構成で、チップ毎にクロックスキューを調整したクロックによって、各チップのプログラムの実行とチップ間データの入出力を行なうエミュレータに対して、次の利点がある。
すなわち、第1に1つの製品で広範囲な電圧範囲でのスキューを調整できるため、ユーザの使用電圧範囲ごとにエミュレータを提供する必要がなくなり、1つのエミュレータで広範囲な電圧範囲に対応できるようになる。
第2に、動作電圧に応じた最適なスキュー調整値を自動的に設定できるため、ユーザは、使用環境を意識することなく、最適なスキューで使用できる。
第3に電圧変動によって、1周期以上のスキューのずれが発生する場合でも正しくスキュー調整することができる。
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
本発明の実施の形態1にかかるインサーキットエミュレータのシステム全体を示す図である。 本発明の実施の形態1にかかるエミュレータ310の各機能を示すブロックである。 ユーザ電圧測定ブロックからデコーダよりアドレスを出力するまでの一般的な回路構成を示す図である。 本発明の実施の形態1にかかるスキュー調整用テーブルの作成方法を示すフローチャートである。 (a)及び(b)は、個体差によるスキュー調整値にバラつきがあった場合の結果例を示す。 本発明の実施の形態1にかかるテーブルブロックに格納されるテーブルの例を示す図である。 本発明の実施の形態1にかかるスキュー調整用ブロックの詳細を示すブロック図である。 図7のスキュー調整用ブロックでのクロックの切り替えのタイミングチャートを示す。 CPUコアクロック側を遅延させている状況から、周辺エバクロック側に遅延が入るようにクロックを切り替える時のタイミングチャートを示す図である。 本発明の実施の形態2にかかるエミュレータを示すブロック図である。 本発明の実施の形態3にかかるエミュレータを示すブロック図である。 本発明の実施の形態3にかかるコンパレータ部の詳細を示す図である。 (a)は特許文献1に記載のエミュレーション回路、(b)は(a)に示すエミュレーション回路の動作を示すタイミングチャートである。 特許文献1の問題点を説明する図である。
符号の説明
2 ホストコントロールMCU
3 エミュレーションメモリ
4 レベルシフタ
5 ユーザターゲットボード
6 ターゲットI/F
310 エミュレータ
311 スキュー調整用ブロック
312 エバチップ
312 CPUコア
313 周辺エバチップ
314 テーブルブロック
315 ユーザ電圧測定ブロック
316 ユーザ電源電圧供給部
317 クロックジェネレータ
318 CPUエバチップ
320 バス
321〜324 遅延ゲート
330 第1CPUコアクロック選択回路
331 第2CPUコアクロック選択回路
332 第1CPUコアレジスタ
333 第2CPUコアレジスタ
334 CPUコアクロック切替信号生成回路
335 CPUコアレジスタクリア回路
336 CPUコアクロック切替回路
336 コアチップクロック切替回路
340 周辺エバクロック選択回路
340 第1周辺エバクロック選択回路
341 第2周辺エバクロック選択回路
342 第1周辺エバチップレジスタ
343 第2周辺エバチップレジスタ
344 周辺エバクロック切替信号生成回路
345 周辺エバチップレジスタクリア回路
346 周辺エバクロック切替回路
350 スキュー設定値分離回路
351 スキュー設定値選択回路
361 AD変換器
362 デコーダ
363 コンパレータ部
400 ソースクロック
401 CPUコアクロック
402 周辺エバクロック
402 周辺エバクロック
403 スキュー調整値設定信号
404 アドレス出力
405 ユーザ電圧
410〜413 遅延信号
410〜413 遅延ゲート
421 CPUコアクロック切替信号
422 周辺エバクロック切替信号
423 出力信号
501〜504 コンパレータ
505 デコーダ
511〜514 比較回路

Claims (10)

  1. マイクロコンピュータのCPU機能を実現するCPUコア部と周辺機能を実現する周辺部とを備えた前記マイクロコンピュータの動作を実現するエミュレータであって、
    クロックジェネレータから出力されるソースクロックを入力して、前記CPUコア部に供給される第1の動作クロックと前記周辺部に供給される第2の動作クロックとを生成するスキュー調整部と、
    前記周辺部に供給されるユーザ電圧に応じて求められ、前記第1又は前記第2の動作クロックに付加される遅延量を決定するための設定値が格納された設定値テーブルとを有し、
    前記スキュー調整部は、前記設定値に基づいて前記第1の動作クロックと前記第2の動作クロック間のスキューを調整するエミュレータ。
  2. スキュー調整部は、前記ソースクロック及び複数の遅延量が異なる遅延クロックを切替選択して前記第1及び前記第2の動作クロックを生成するものであって、切り替え前後のクロックが同一論理レベルとなるタイミングで前記ソースクロック又は前記遅延クロックを選択する
    ことを特徴とする請求項1記載のエミュレータ。
  3. ユーザ電圧測定部を有し、
    前記スキュー調整部は、前記ユーザ電圧測定部の測定結果に基づき前記設定値テーブルの前記設定値を選択する
    ことを特徴とする請求項1又は2記載のエミュレータ。
  4. 前記ユーザ電圧測定部は、ユーザ電圧をアナログ−ディジタル変換するAD変換器である
    ことを特徴とする請求項3記載のエミュレータ。
  5. 前記ユーザ電圧測定部は、複数の基準電圧値と前記ユーザ電圧を比較するコンパレータであって、前記ユーザ電圧の電圧範囲を測定する
    ことを特徴とする請求項3記載のエミュレータ。
  6. 前記設定値テーブルは、ユーザ電圧範囲と、それに対する設定値とからなるテーブルである
    ことを特徴とする請求項1乃至5のいずれか1項記載のエミュレータ。
  7. 前記設定値テーブルは、任意の電圧において遅延値を変化させて動作させることにより、前記CPUコア部及び前記周辺部が正常に動作するか否かを判定して求めたものである
    ことを特徴とする請求項1乃至6のいずれか1項記載のエミュレータ。
  8. 前記設定値は、前記正常に動作する範囲の遅延値の中で最もマージンが大きい値である
    ことを特徴とする請求項7項記載のエミュレータ。
  9. 前記CPUコア部及び前記周辺部はそれぞれ異なるチップから構成される
    ことを特徴とする請求項1乃至8のいずれか1項記載のエミュレータ。
  10. マイクロコンピュータのCPU機能を実現するCPUコア部及び周辺機能を実現する周辺部と、該周辺部に供給されるユーザ電圧に応じて予め求められ前記CPUコア部に供給される第1の動作クロック又は前記周辺部に供給される第2の動作クロックに付加される遅延量を決定するための設定値が格納された設定値テーブルとによって、前記マイクロコンピュータの動作をエミュレーションするエミュレーション方法であって、
    前記ユーザ電圧を測定し、
    前記測定した結果に基づいて、前記設定値テーブルから所定の設定値を選択し、
    前記選択した所定の設定値に基づいて、前記第1の動作クロックと前記第2の動作クロック間のスキューを調整するエミュレーション方法。
JP2007131336A 2007-05-17 2007-05-17 エミュレータ及びエミュレーション方法 Pending JP2008287462A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007131336A JP2008287462A (ja) 2007-05-17 2007-05-17 エミュレータ及びエミュレーション方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007131336A JP2008287462A (ja) 2007-05-17 2007-05-17 エミュレータ及びエミュレーション方法

Publications (1)

Publication Number Publication Date
JP2008287462A true JP2008287462A (ja) 2008-11-27

Family

ID=40147122

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007131336A Pending JP2008287462A (ja) 2007-05-17 2007-05-17 エミュレータ及びエミュレーション方法

Country Status (1)

Country Link
JP (1) JP2008287462A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011136212A1 (ja) * 2010-04-27 2011-11-03 日本電気株式会社 論理回路エミュレータ及び論理回路エミュレータの制御方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6357809B2 (ja) * 1980-07-11 1988-11-14 Hitachi Ltd
JPH06161808A (ja) * 1992-11-26 1994-06-10 Nec Corp エミュレーション回路
JPH06265597A (ja) * 1993-03-11 1994-09-22 Hitachi Ltd 半導体集積回路の試験装置
JPH09304482A (ja) * 1996-05-21 1997-11-28 Hitachi Ltd Ic試験装置
JPH10340204A (ja) * 1997-06-09 1998-12-22 Nec Corp エミュレーション用マイクロコンピュータ及びインサーキットエミュレータ
JP2000131390A (ja) * 1998-10-29 2000-05-12 Advantest Corp Ic試験装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6357809B2 (ja) * 1980-07-11 1988-11-14 Hitachi Ltd
JPH06161808A (ja) * 1992-11-26 1994-06-10 Nec Corp エミュレーション回路
JPH06265597A (ja) * 1993-03-11 1994-09-22 Hitachi Ltd 半導体集積回路の試験装置
JPH09304482A (ja) * 1996-05-21 1997-11-28 Hitachi Ltd Ic試験装置
JPH10340204A (ja) * 1997-06-09 1998-12-22 Nec Corp エミュレーション用マイクロコンピュータ及びインサーキットエミュレータ
JP2000131390A (ja) * 1998-10-29 2000-05-12 Advantest Corp Ic試験装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011136212A1 (ja) * 2010-04-27 2011-11-03 日本電気株式会社 論理回路エミュレータ及び論理回路エミュレータの制御方法
JP5884729B2 (ja) * 2010-04-27 2016-03-15 日本電気株式会社 論理回路エミュレータ及び論理回路エミュレータの制御方法
US9639639B2 (en) 2010-04-27 2017-05-02 Nec Corporation Logic circuit emulator and control method therefor

Similar Documents

Publication Publication Date Title
US8937496B1 (en) Clock monitor
US8402314B2 (en) Debug registers for halting processor cores after reset or power off
CN105159374B (zh) 面向超宽电压的在线监测单元及监测窗口自适应调节系统
US9503058B1 (en) Relaxation oscillator
JP6424271B2 (ja) 半導体装置
US8008967B2 (en) Power supply voltage adjusting device
EP3664298B1 (en) Power management system for integrated circuits
KR100462177B1 (ko) 주변 장치의 동작 상태를 실시간으로 백업할 수 있는엠베디드 컨트롤러
TW201617780A (zh) 用於追蹤電力領域狀態之電力追蹤埠
US8036874B2 (en) Software executing device and co-operation method
JP2008059300A (ja) マイクロコンピュータ
US8131906B2 (en) Voltage indicator signal generation system and method
US10288496B1 (en) Ring oscillator for temperature or voltage sensing
Nunez-Yanez et al. Run-time power and performance scaling with CPU-FPGA hybrids
JP2008287462A (ja) エミュレータ及びエミュレーション方法
US10127126B2 (en) Rapid system debugging using finite state machines
US8949756B2 (en) Debug access with programmable return clock
US8120983B2 (en) Semiconductor device having plurality of operation modes
US20050192791A1 (en) Method for emulating an integrated circuit and semiconductor chip for practicing the method
CN102693197B (zh) 内存控制器读选通使能微调寄存器的最小单元计算方法
US8560907B1 (en) Debugging external interface
Moore et al. Intra-operation Dynamic Voltage Scaling
JP2001319494A (ja) メモリ回路用の組込み自己試験装置
TWI857557B (zh) 資料接收方法
JP2007047008A (ja) 半導体試験装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100416

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120501

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120619

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20121016