動的電圧・周波数制御(Dynamic Voltage and Frequency Scaling : DVFS)技術について説明する。DVFSでは、半導体装置内が複数のブロックに分けられる。そして各ブロックの処理負荷に応じて、ブロックごとに最適な電圧を供給し、ブロックごとに必要十分な動作周波数で動作させる。これにより、動的に電源電圧と動作周波数を最適化することができるため、消費エネルギーを削減することが可能となる。
図1を用いて、DVFSでの電源電圧および動作周波数の切替の具体例を説明する。半導体装置60は、ビデオコーデックや静止画コーデックを搭載するLSIである。半導体装置60の内部は、第1ブロックBK1と第2ブロックBK2とに分けられている。第1ブロックBK1には不図示の電源供給部から電源電圧VDD1が供給され、第2ブロックBK2には不図示の電源供給部から電源電圧VDD2が供給される。本実施例では、電源電圧VDD1が1.0(V)であり、電源電圧VDD2が1.0(V)から1.2(V)の範囲内で可変制御される場合を説明する。また第2ブロックBK2の動作周波数fは、電源電圧VDD2の値に応じて可変に制御される。
半導体装置60の第2ブロックBK2では、(1)HD解像度(High Density Resolution)を H264規格で 録画・視聴するアプリケーション、(2)SD解像度(Standard Density Resolution)を Mpeg2規格で録画・視聴するアプリケーション、(3)静止画画像をデコードし視聴するアプリケーション、の3つのアプリケーションの何れかが動作する。ここで(2)のSD解像度では、720×480のピクセル数のピクセル数を有し、処理するデータ量が(3)よりも多くなる。また(1)のHD解像度では、1920×1080のピクセル数を有し、処理するデータ量が(2)よりも多くなる。また(1)のH264規格は、(2)のMpeg2規格に比して、データ圧縮率は高いがより複雑な処理が必要とされる。よって、(3)から(1)に行くに従って、処理するデータ量が増加し、またコーデックの処理の複雑度も高くなる。そして(3)から(1)に行くに従って、第2ブロックBK2はより高速な動作が必要となる。
よって図1に示すように、第2ブロックBK2において(1)のアプリケーションを動作させる場合には、動作周波数f=162(MHz)、電源電圧VDD2=1.2(V)とされ、高スピード状態とされる。また(2)のアプリケーションを動作させる場合には、動作周波数f=81(MHz)、電源電圧VDD2=1.1(V)とされ、中スピード状態とされる。また(3)のアプリケーションを動作させる場合には、動作周波数f=54(MHz)、電源電圧VDD2=1.0(V)とされ、低スピード状態とされる。これにより、第2ブロックBK2で動作されるアプリケーションの種類に応じて、第2ブロックBK2の動作周波数fおよび電源電圧VDD2を最適化することができる。よって半導体装置60の低消費電力化を図ることが可能となる。
本実施形態に係る半導体装置1の回路図を、図2に示す。半導体装置1は、第1ブロックBK1と第2ブロックBK2とを備える。第1ブロックBK1には電源電圧VDD1が供給され、第2ブロックBK2には電源電圧VDD2が供給される。半導体装置1は、制御回路2、クロック遅延調整回路3、モニタ回路4、PLL回路5、内部接続回路6、第1ブロック内部回路7、第2ブロック内部回路8を備える。制御回路2、モニタ回路4、内部接続回路6は、第1ブロックBK1および第2ブロックBK2にまたがって備えられる。またクロック遅延調整回路3、PLL回路5、第1ブロック内部回路7は第1ブロックBK1に備えられる。また第2ブロック内部回路8は第2ブロックBK2に備えられる。
PLL回路5からはクロックCLK1が出力される。制御回路2にはバッファ段を介してクロックCLK1が入力されると共に、信号mon12、mon21が入力される。また制御回路2から出力される制御信号SIG1_1、SIG1_2、SIG2_1、SIG2_2はモニタ回路4へ入力される。クロック遅延調整回路3にはクロックCLK1および設定信号D1ないしD8が入力され、クロックCLK2が出力される。また第1ブロック内部回路7にはバッファ段を介してクロックCLK1が入力される。第2ブロック内部回路8にはバッファ段を介してクロックCLK2が入力される。内部接続回路6にはバッファ段を介して、クロックCLK1およびCLK2が入力される。
図3に、制御回路2の詳細回路図を示す。制御回路2は、第1制御信号生成部11、第2制御信号生成部12、判定結果保持部14、コード変換部15、クロック遅延テストコード生成部16、セレクタ17、クロック遅延設定保持部18、第3制御信号生成部20、第4制御信号生成部10を備える。第2制御信号生成部12は第2ブロックBK2に備えられる。またモニタ回路4は第1ブロックBK1と第2ブロックBK2とをまたぐように備えられる。その他の回路は第1ブロックBK1に備えられる。第4制御信号生成部10にはスタート信号STSおよびクロックCLK1が入力され、パルス信号SIG00が出力される。第1制御信号生成部11にはクロックCLK1およびパルス信号SIG00が入力され、制御信号SIG1_1ないしSIG1_4が出力される。第2制御信号生成部12にはクロックCLK2およびパルス信号SIG00が入力され、制御信号SIG2_1およびSIG2_2が出力される。
判定結果保持部14には信号mon12およびmon21、制御信号SIG1_3およびSIG1_4が入力され、判定信号J1ないしJ8が出力される。コード変換部15には判定信号J1ないしJ8が入力され、コード信号C1ないしC8が出力される。またクロック遅延テストコード生成部16にはクロックCLK1が入力され、テストコード信号T1ないしT8が出力される。第3制御信号生成部20には不図示のCPUからモード切替信号MSが入力され、またクロックCLK1が入力される。モード切替信号MSは、第2ブロックBK2の動作モード変更や動作環境変化に応じてスキュー調整動作を選択する信号である。第3制御信号生成部20からはコードセット信号CDSおよびスタート信号STSが出力される。セレクタ17にはコード信号C1ないしC8、テストコード信号T1ないしT8、モード切替信号MSが入力され、セレクタ信号B1ないしB8が出力される。クロック遅延設定保持部18にはセレクタ信号B1ないしB8が入力され、設定信号D1ないしD8が出力される。
図4に、第4制御信号生成部10、第1制御信号生成部11および第2制御信号生成部12の詳細回路図を示す。第4制御信号生成部10はDフリップフロップである。D端子にはスタート信号STSが入力され、クロック端子にはクロックCLK1が入力され、Q端子からはパルス信号SIG00が出力される。
第1制御信号生成部11はフリップフロップFF11ないしFF14、インバータINV1を備える。インバータINV1にはクロックCLK1が入力され、逆相クロック/CLK1が出力される。フリップフロップFF11ないしFF14のクロック端子には、逆相クロック/CLK1が共通に入力される。またフリップフロップFF11のD端子には、第4制御信号生成部10のQ端子が接続され、パルス信号SIG00が入力される。フリップフロップFF11ないしFF14は、前段のフリップフロップのQ端子が次段のD端子に接続されるように、互いに直列接続される。フリップフロップFF11ないしFF14のQ端子からは、制御信号SIG1_1ないしSIG1_4が各々出力される。よってフリップフロップFF11ないしFF14によりシフトレジスタが構成される。
第2制御信号生成部12はフリップフロップFF21およびFF22、インバータINV2を備える。インバータINV2にはクロックCLK2が入力され、逆相クロック/CLK2が出力される。フリップフロップFF21およびFF22のクロック端子には、逆相クロック/CLK2が共通に入力される。またフリップフロップFF21のD端子には、第4制御信号生成部10のQ端子が接続され、パルス信号SIG00が入力される。フリップフロップFF21およびFF22は、前段のフリップフロップのQ端子が次段のD端子に接続されるように、互いに直列接続される。フリップフロップFF21およびFF22のQ端子からは、制御信号SIG2_1およびSIG2_2が各々出力される。よってフリップフロップFF21およびFF22によりシフトレジスタが構成される。
図5に、モニタ回路4の詳細回路図を示す。モニタ回路4はフリップフロップFF1ないしFF4、オアゲート41および42、クロック生成回路43および44、セレクタ45および46、エクスクルーシブオアゲート47および48を備える。オアゲート41、クロック生成回路43、フリップフロップFF1およびFF3、セレクタ45、エクスクルーシブオアゲート47および48は、第1ブロックBK1に備えられる。その他の回路は第2ブロックBK2に備えられる。
オアゲート41には制御信号SIG1_1およびSIG1_2が入力される。クロック生成回路43のEN端子にはオアゲート41の出力端子が接続され、クロック端子にはクロックCLK1が入力される。クロック生成回路43からはクロックFFCK1が出力される。同様にして、オアゲート42には制御信号SIG2_1およびSIG2_2が入力される。クロック生成回路44のEN端子にはオアゲート42の出力端子が接続され、クロック端子にはクロックCLK2が入力される。クロック生成回路44からはクロックFFCK2が出力される。
フリップフロップFF1のD端子には制御信号SIG1_2が入力され、クロック端子にはクロックFFCK1が入力され、Q端子からはデータFF1Qが出力される。セレクタ46の端子46Aには接地電圧が入力され、端子46BにはデータFF1Qが入力される。またセレクタ46には制御信号SIG2_2が入力される。セレクタ46からはデータFF2Dが出力される。フリップフロップFF2のD端子にはデータFF2Dが入力され、クロック端子にはクロックFFCK2が入力され、Q端子からはデータFF2Qが出力される。
フリップフロップFF4のD端子には制御信号SIG2_2が入力され、クロック端子にはクロックFFCK2が入力され、Q端子からはデータFF4Qが出力される。セレクタ45の端子45Aには接地電圧が入力され、端子45BにはデータFF4Qが入力される。またセレクタ45には制御信号SIG1_2が入力される。セレクタ45からはデータFF3Dが出力される。フリップフロップFF3のD端子にはデータFF3Dが入力され、クロック端子にはクロックFFCK1が入力され、Q端子からはデータFF3Qが出力される。
エクスクルーシブオアゲート48にはデータFF1QおよびFF2Qが入力され、信号mon12が出力される。またエクスクルーシブオアゲート47にはデータFF3QおよびFF4Qが入力され、信号mon21が出力される。
図6に、判定結果保持部14の詳細回路図を示す。判定結果保持部14はシフトレジスタ50、フリップフロップFF5およびFF6、アンドゲート51、クロック生成回路53および54を備える。クロック生成回路53のEN端子には制御信号SIG1_3が入力され、クロック端子にはクロックCLK1が入力される。クロック生成回路53からはパルス信号PS3が出力される。シフトレジスタ50はフリップフロップFF7_1ないしFF7_8を備える。フリップフロップFF5のD端子には信号mon12が入力され、クロック端子にはパルス信号PS3が入力され、Q端子からはデータFF5Qが出力される。フリップフロップFF6のD端子には信号mon21が入力され、クロック端子にはパルス信号PS3が入力され、Q端子からはデータFF6Qが出力される。アンドゲート51にはデータFF5QおよびFF6Qが入力され、ジャッジ信号JDが出力される。
クロック生成回路54のEN端子には制御信号SIG1_4が入力され、クロック端子にはクロックCLK1が入力される。クロック生成回路54からはパルス信号PS4が出力される。フリップフロップFF7_1ないしFF7_8のクロック端子には、パルス信号PS4が共通に入力される。フリップフロップFF7_1のD端子にはジャッジ信号JDが入力される。フリップフロップFF7_1ないしFF7_8は、前段のフリップフロップのQ端子が次段のD端子に接続されるように、互いに直列接続される。フリップフロップFF7_1ないしFF7_8のQ端子からは、判定信号J1ないしJ8が各々出力される。
図7に、第3制御信号生成部20の詳細回路図を示す。第3制御信号生成部20は、リングカウンタ61、フリップフロップFF49およびFF50、インバータINV4、ノアゲートNR43、オアゲートOR42を備える。フリップフロップFF49のクロック端子にはクロックCLK1が入力され、D端子にはインバータINV4で反転されたモード切替信号MSが入力され、逆相モード切替信号xMSが出力される。ノアゲートNR43には逆相モード切替信号xMSおよびモード切替信号MSが入力され、信号Mendが出力される。フリップフロップFF50のクロック端子にはクロックCLK1が入力され、D端子には信号Mendが入力される。オアゲートOR42の入力端子にはフリップフロップFF50の出力端子およびフリップフロップFF41の出力端子が接続される。そしてオアゲートOR42からはコードセット信号CDSが出力される。
リングカウンタ61のアンドゲートAD41には、モード切替信号MSおよび逆相モード切替信号xMSが入力され、パルス信号Msetが出力される。アンドゲートAD42には、モード切替信号MSおよびパルス信号M8が入力され、パルス信号Mfbが出力される。オアゲートOR41にはパルス信号Msetおよびパルス信号Mfbが入力され、パルス信号M0が出力される。フリップフロップFF41ないしFF48によりシフトレジスタが構成される。フリップフロップFF41ないしFF48のクロック端子には、クロックCLK1が共通に入力される。またフリップフロップFF41のD端子にはパルス信号M0が入力される。フリップフロップFF41ないしFF48は、前段のフリップフロップのQ端子が次段のD端子に接続されるように、互いに直列接続される。フリップフロップFF41ないしFF48のQ端子からは、パルス信号M1ないしM8が各々出力される。またパルス信号M2はスタート信号STSとされる。
図8に、クロック遅延設定保持部18の詳細回路図を示す。クロック遅延設定保持部18は、フリップフロップFF8_1ないしFF8_8を備える。フリップフロップFF8_1ないしFF8_8の各D端子には、セレクタ信号B1ないしB8が各々入力される。フリップフロップFF8_1ないしFF8_8のクロック端子には、コードセット信号CDSが共通に入力される。フリップフロップFF8_1ないしFF8_8の各Q端子からは、設定信号D1ないしD8が各々出力される。
図9に、クロック遅延調整回路3の詳細回路図を示す。クロック遅延調整回路3はインバータINV3、ナンドゲートND1ないしND8、遅延タップTP1ないしTP8を備える。インバータINV1にはクロックCLK1が入力され、逆相クロック/CLK1が出力される。ナンドゲートND1ないしND8の一方の入力端子には、逆相クロック/CLK1が共通に入力される。またナンドゲートND1ないしND8の他方の入力端子には、設定信号D1ないしD8が各々入力される。
遅延タップTP1はナンドゲートND11およびND12を備える。ナンドゲートND11には電源電圧VccとナンドゲートND1の出力信号が入力される。またナンドゲートND12には電源電圧VccとナンドゲートND11の出力信号が入力される。ナンドゲートND12の出力端子は、遅延タップTP2に接続される。ナンドゲートND11およびND12は、入力端子の一方がハイレベルに固定されるため、インバータの2段直列接続が構成され、遅延段の動作を行う。なお遅延タップTP2ないしTP8も同様の構成を備えるため、ここでは詳細な説明は省略する。そして遅延タップTP8からはクロックCLK2が出力される。
半導体装置1でのスキュー調整動作の概略を説明する。第2ブロックBK2に供給される電源電圧VDD2が変化すると、クロックCLK2の第2ブロックBK2内での伝搬遅延も変化する。よってクロックCLK1とクロックCLK2との間のスキューも変化する。スキューが大きくなると、第1ブロックBK1と第2ブロックBK2との間でのデータの受け渡しにおいて、クロックスキューによるタイミングエラーが発生する。
そこで第1ブロックBK1と第2ブロックBK2とをまたぐようにモニタ回路4を置き、モニタ回路4において第1ブロックBK1と第2ブロックBK2との間のデータ受け渡しが正常に行われるか否かの判定を行う。このときクロック遅延調整回路3において、クロックCLK2のCLK1に対する遅延量を、予め定めた8段階に変化させる。そして8段階の遅延量を有するクロックCLK2のそれぞれにおいて、モニタ回路4におけるデータ受け渡しが正常に行われるか否かがテストされる。そして8段階の遅延量の中から、モニタ回路4でのデータ受け渡しが正常に行われる1の遅延量を選択する。これにより、クロックスキューによるタイミングエラーの発生を防止することができる。
半導体装置1の詳細な動作を、図10のフローチャートを用いて説明する。S1(ステップ、以下Sと略する)においては、通常動作が行われている。このとき不図示のCPUは、ローレベルのモード切替信号MSを出力する。セレクタ17(図3)は、ローレベルのモード切替信号MSに応じてコード信号C1ないしC8を選択した上で、セレクタ信号B1ないしB8としてクロック遅延設定保持部18へ出力する。
S2においてモード変更が行われる。図11のタイミングチャートを用いて説明する。時刻t41において、不図示のCPUから、第2ブロックBK2のモード変更に応じてハイレベルのモード切替信号MSが入力される。モード変更では、第2ブロックBK2での処理負荷量に合わせて、第2ブロックBK2の動作周波数および電源電圧VDD2が変更される。またハイレベルのモード切替信号MSが入力されることに応じて、半導体装置1の動作が通常動作からクロックスキュー調整動作へ切り替えられる。クロックスキュー調整動作では、セレクタ17(図3)は、ハイレベルのモード切替信号MSに応じてテストコード信号T1ないしT8を選択した上で、セレクタ信号B1ないしB8としてクロック遅延設定保持部18へ出力する。
またクロックスキュー調整動作へ切り替えられることに応じて、第3制御信号生成部20からコードセット信号CDSおよびスタート信号STSが出力される。第3制御信号生成部20の動作を、図12のタイミングチャートを用いて説明する。モード切替信号MSの立ち上がりエッジに応じて、パルス信号Msetが出力される(矢印A51)。リングカウンタ61にパルス信号Msetが入力され、パルス信号M0が生成される(矢印A52)。パルス信号M0は、クロックCLK1の1クロックごとに、パルス信号M8までシフトする。そしてパルス信号M1に応じてコードセット信号CDSが出力される(矢印A53)。またパルス信号M2はスタート信号STSとして出力される。そしてパルス信号M0がパルス信号M8までシフトすると、一つの判定期間JT1が終了する。
パルス信号M0がパルス信号M8までシフトした時刻t51の時点においてモード切替信号MSがハイレベルであるため、パルス信号Mfbによってパルス信号M0がハイレベルとされる(矢印A54)。よってパルス信号M8がリングカウンタ61にフィードバックされることでリングカウンタ動作が行われる。そして次の判定期間JT2が開始される。以後、上記動作が、判定期間JT8まで繰り返される。そして判定期間JT8の時刻t52において、モード切替信号MSがローレベルに遷移すると、アンドゲートAD42によってパルス信号M8が遮断され、パルス信号Mfbはローレベルのままとなり、リングカウンタ動作が終了する。これにより、パルス信号M1からのコードセット信号CDSの生成とパルス信号M2からのスタート信号STSの生成が終了する。これに並行して、判定期間JT8の時刻t52において、モード切替信号MSがローレベルに遷移すると、パルス信号Mendが発生する。このパルス信号Mend発生に応じて、コードセット信号CDSが生成される。このパルス信号Mend発生に応じて生成されたコードセット信号CDSによって、コード変換部15の出力J1ないしJ8がクロック遅延設定保持部18に取り込まれる。
これにより第3制御信号生成部20は、モード切替信号MSがハイレベルの期間において、クロックCLK1の8クロック周期ごとにコードセット信号CDSおよびスタート信号STSを出力する動作を行う。ここでコードセット信号CDSは、クロックCLK2に付与される遅延量を切り替えるためのトリガ信号である。またスタート信号STSは、スキュー試験を開始するためのトリガ信号である。そして第3制御信号生成部20により、判定期間JT1ないしJT8が定められる。
判定期間JT1の詳細動作について、図11のタイミングチャートを用いて説明する。判定期間JT1は、さらに、期間CT11(コードセット)、期間CT12(プリペア)、期間CT13(スタート)、期間CT14(セット)、期間CT15(テスト)、期間CT16(チェック)、期間CT17(ジャッジ)、期間CT18(エンド)の8つの期間を備える。これら8つの期間は、CLK1の1クロック周期ごとに切り替えられる。
S3(図10)において、クロックCLK2の遅延量の調整が行われる。遅延量の調整は、期間CT11において行われる。期間CT11の前半部では、クロック遅延テストコード生成部16(図3)からはテストコード信号T[8:1]=”00000001”が出力されている。出力されたテストコード信号T[8:1]=”00000001”はセレクタ17へ入力される。セレクタ17は、ハイレベルのモード切替信号MSに応じて選択したテストコード信号T[8:1]=”00000001”を、セレクタ信号B[8:1]=”00000001”としてクロック遅延設定保持部18へ出力する。
クロック遅延設定保持部18のフリップフロップFF8_1ないしFF8_8(図8)は、コードセット信号CDSに応じて、セレクタ信号B[8:1]=”00000001”の各々をラッチする(図11、矢印A61)。ラッチされたセレクタ信号は、設定信号D[8:1]=”00000001”としてクロック遅延調整回路3へ出力される。また期間CT11の後半部では、コードセット信号CDSに応じてテストコード信号T[8:1]=”00000001”が1インクリメントされ、T[8:1]=”00000010”とされる。
クロック遅延調整回路3(図9)では、設定信号D[8:1]=”00000001”に応じて、ナンドゲートND2ないしND8の出力はハイレベルで固定され、ナンドゲートND1のみが動作状態とされる。よってインバータINV3からナンドゲートND1、遅延タップTP1ないしTP8を経由する遅延経路が形成される。よって逆相クロック/CLK1に、遅延タップTP1ないしTP8の8段分の遅延が与えられた信号が、クロックCLK2とされる。すなわちクロックCLK2に最大の遅延時間が与えられる。そしてクロックCLK1に対するCLK2の立ち上がりエッジの位置は、図13のエッジE1の位置になる。
次に図11の期間CT12において、プリペアが行われる。プリペアでは、ハイレベルのスタート信号STSが第4制御信号生成部10に入力される。
S4(図10)において、第1ブロックBK1と第2ブロックBK2との間のデータ受け渡しが正常に行われるか否かが判定される。S4は、判定期間CT13ないしCT17によって構成される。
期間CT13(図11)において、スタートが行われる。スタートでは、第4制御信号生成部10から、ハイレベルのパルス信号SIG00が出力される(矢印A62)。パルス信号SIG00は第1制御信号生成部11のフリップフロップFF11(図4)に入力される。第1制御信号生成部11では、逆相クロック/CLK1の立ち上がりエッジに応じて、ハイレベルのパルス信号が制御信号SIG1_1ないしSIG1_4にシフトする(図11、領域R1)。
期間CT14(セット)、期間CT15(テスト)、期間CT16(チェック)においては、モニタ回路4および判定結果保持部14においてデータ受け渡しが正常に行われるか否かが判定される。具体的には、フリップフロップFF1からFF2への第1データ伝送路DP1でのデータ受け渡しと、フリップフロップFF4からFF3への第2データ伝送路DP2でのデータ受け渡しとが共に正常に行われるか否かが判定される。
クロックCLK2のエッジの位置が図13のエッジE1の位置にある場合の、モニタ回路4における判定動作を説明する。この場合は、クロックCLK1よりもCLK2の方が遅い場合である。よって、クロックCLK1からCLK2への乗り継ぎパスでデータの受け渡しが正常に行われるか否かが重要となる。言い換えると、データ受信に必要なホールド時間にマージンがあるか否かが重要となる。
図14を用いて、期間CT14ないしCT16における詳細な動作を説明する。期間CT14においてセットが行われる。セットでは、信号SIG1_1がハイレベルとされる。また、モニタ回路4内のフリップフロップFF1ないしFF4の出力信号が全てローレベルにセットされる。具体的には、図14において、ハイレベルの信号SIG1_1に応じてクロックFFCK1が出力される。そしてクロックFFCK1の立ち上がりエッジに応じて、データFF1Qがローレベルにセットされる(図14、矢印A11)。
期間CT15においてテストが行われる。テストでは、信号SIG1_2がハイレベルとされる。そして、第1データ伝送路DP1および第2データ伝送路DP2でのデータ受け渡しが試験される。具体的には、図14において、信号SIG2_2がハイレベルとなることに応じて、セレクタ46は端子46B(図5)を選択する。よってデータFF1QがデータFF2Dとして出力される(矢印A12)。クロックFFCK1の2つ目の立ち上がりエッジに応じて、ハイレベルの信号SIG1_2がフリップフロップFF1に取り込まれ、データFF1Qがハイレベルにされる(矢印A13)。そしてフリップフロップFF1からFF2への第1データ伝送路DP1でのデータ受け渡しが行われる。クロックFFCK2の2つ目の立ち上がりエッジに応じて、データFF2DがフリップフロップFF2に取り込まれ、データFF2Qがハイレベルにされる(矢印A14)。このときスキューが大きいため、時刻t11におけるフリップフロップFF1のローレベルのデータFF1Qが、フリップフロップFF2に正確に受け渡しできていない。よって、クロックCLK1からCLK2への乗り継ぎパスでデータ受け渡しが正常に行われないことが検出される。
エクスクルーシブオアゲート48からは、ハイレベルのデータFF1QとハイレベルのデータFF2Qに応じて、データ受け渡しが正常に行われなかった旨を報知するローレベルの信号mon12が出力される(図14、矢印A15)。
期間CT16においてチェックが行われる。チェックでは、信号SIG1_3がハイレベルとされる。判定結果保持部14のクロック生成回路53(図6)からは、ハイレベルの信号SIG1_3に応じてパルス信号PS3が出力される。パルス信号PS3の立ち上がりエッジに応じて、ローレベルの信号mon12がフリップフロップFF5に取り込まれ、データFF5Qがローレベルにされる(図14、矢印A17)。
図11に戻り、期間CT17においてジャッジが行われる。ジャッジでは、信号SIG1_4がハイレベルとされる。判定結果保持部14(図6)では、フリップフロップFF5は信号mon12を保持し、フリップフロップFF6は信号mon21を保持する。判定結果保持部14のクロック生成回路54からは、ハイレベルの制御信号SIG1_4に応じて、ハイレベルのパルス信号PS4が生成される。アンドゲート51からは、信号mon12とmon21とのアンド結果であるローレベルのジャッジ信号JDが出力される。ジャッジ信号JDがローレベルのときは、第1データ伝送路DP1または第2データ伝送路DP2の少なくとも何れか一方において、データ受け渡しが正常に行われなかったことを表している。ジャッジ信号JDはパルス信号PS4に応じてフリップフロップFF7_1にラッチされる。
S5(図10)において、判定期間JT1ないしJT8の全期間でスキュー判定が行われたか否かが判断される。S5は、期間CT18のエンドのステートで行われる。エンドのステートにおいて、モード切替信号MSがハイレベルの場合には、全ての判定期間においてスキュー判定が行われていないと判断され、S3へ戻る。一方、モード切替信号MSがローレベルの場合には、全ての判定期間においてスキュー判定が完了したと判断され、S6へ進む。本実施形態では、時刻t42においてモード切替信号MSがハイレベルであるため、S3へ戻る。そして次の判定期間JT2が行われる。
判定期間JT2の期間CT21では、クロックCLK2に付与される遅延時間が遅延タップの1タップ分減少される。具体的には、コードセット信号CDSに応じて、設定信号D[8:1]=”00000001”がD[8:1]=”00000010”に切り替えられる(矢印A63)。よって、逆相クロック/CLK1に、遅延タップTP2ないしTP8の7段分の遅延が与えられた信号が、クロックCLK2とされる。
以後、S3およびS4が、判定期間JT1ないしJT8の8つの期間分繰り返される。これにより、クロックCLK2に付与される遅延時間が、遅延タップ8段分から遅延タップ1段分まで1段分づつ減少される。そして8段階の遅延量を有するクロックCLK2のそれぞれにおいて、モニタ回路4におけるデータ受け渡しが正常に行われるか否かがテストされる。よって図13において、クロックCLK2のエッジE1からE8までにおけるデータ受け渡しが順次テストされる。
また図13のエッジE5における、スキュー判定の動作を説明する。この場合は、クロックCLK1とCLK2とのスキューが合っている場合である。図15を用いて、モニタ回路4における、第1ブロックBK1のフリップフロップFF1から第2ブロックBK2のフリップフロップFF2へのデータ受け渡しの詳細動作を説明する。期間CT14においてセットが行われる。クロックFFCK1の立ち上がりエッジに応じて、データFF1Qがローレベルにセットされる(矢印A21)。
期間CT15においてテストが行われる。クロックFFCK1の2つ目の立ち上がりエッジに応じて、ハイレベルの信号SIG1_2がフリップフロップFF1に取り込まれ、データFF1Qがハイレベルにされる(矢印A23)。そして第1データ伝送路DP1でのデータ受け渡しが行われる。クロックFFCK2の2つ目の立ち上がりエッジに応じて、データFF2DがフリップフロップFF2に取り込まれ、データFF2Qがローレベルにされる(矢印A24)。このときスキューが合っているため、時刻t21におけるフリップフロップFF1のローレベルのデータFF1Qが、フリップフロップFF2に正確に受け渡しされる。よって、クロックCLK1からCLK2への乗り継ぎパスでデータ受け渡しが正常に行われることが検出される。エクスクルーシブオアゲート48からは、データ受け渡しが正常に行われた旨を報知するハイレベルの信号mon12が出力される(矢印A25)。
期間TCT16においてチェックが行われる。ハイレベルの信号mon12がフリップフロップFF5(図6)に取り込まれ、データFF5Qがハイレベルにされる(矢印A27)。
また図16を用いて、モニタ回路4における、第2ブロックBK2のフリップフロップFF4から第1ブロックBK1のフリップフロップFF3へのデータ受け渡しの詳細動作を説明する。期間CT14においてセットが行われる。クロックFFCK2の立ち上がりエッジに応じて、データFF4Qがローレベルにセットされる(矢印A31)。期間CT15においてテスト期間が行われる。第2データ伝送路DP2でのデータ受け渡しが行われる。クロックFFCK1の2つ目の立ち上がりエッジに応じて、データFF3DがフリップフロップFF3に取り込まれ、データFF3Qがローレベルにされる(矢印A34)。このときスキューが合っているため、時刻t31におけるフリップフロップFF4のローレベルのデータFF4Qが、フリップフロップFF3に正確に受け渡しされる。よって、クロックCLK2からCLK1への乗り継ぎパスでデータ受け渡しが正常に行われることが検出される。エクスクルーシブオアゲート47からは、ハイレベルのデータFF4QとローレベルのデータFF3Qに応じて、データ受け渡しが正常に行われた旨を報知するハイレベルの信号mon21が出力される(矢印A35)。期間CT16においてチェックが行われる。ハイレベルの信号mon21がフリップフロップFF6(図6)に取り込まれ、データFF6Qがハイレベルにされる(矢印A37)。
アンドゲート51からは、信号mon12とmon21とのアンド結果であるハイレベルのジャッジ信号JDが出力される。ジャッジ信号JDがハイレベルのときは、第1データ伝送路DP1および第2データ伝送路DP2の両方において、データ受け渡しが正常に行われたことを表している。
クロックスキュー調整モードの終了動作について説明する。図11の判定期間JT8の期間CT88(エンド)において、モード切替信号MSがローレベルとされる(時刻t43)。よって全ての判定期間においてスキュー判定が完了したと判断され、S6へ進む。このとき判定結果保持部14には、クロックCLK2の8段階の全ての遅延量に対するスキュー試験結果が保持されている。本実施形態では、図13の領域R3に示すように、エッジE4ないしE6のみにおいてジャッジ信号JDがハイレベルとなるため、判定結果保持部14には、判定信号J[8:1]=”00111000”が保持されている。
S6では、コード変換部15(図3)において、判定結果保持部14から出力される判定信号J1ないしJ8が、クロックCLK2の遅延設定値を定めるコード信号C1ないしC8に変換される。この変換動作では、判定信号J1ないしJ8のうちでハイレベルの信号が複数ある場合に、何れか1つの信号が選択される。このとき判定信号J1ないしJ8のうちで、ハイレベルの信号が連続する場合には、その中央に位置する信号が選択されることで、遅延設定値のマージンが確保される。本実施形態では判定信号J[8:1]=”00111000”であり、判定信号J4ないしJ6が連続してハイレベルである。よって中央に位置する判定信号J5が選択される。そしてコード変換部15からは、コード信号C[8:1]=”00010000”が出力される。そしてS7に進む。
S7では、クロックスキュー調整モードから通常モードへ切り替わる。この切替は、時刻t43においてモード切替信号MSがローレベルとされることで行われる。セレクタ17は、ローレベルのモード切替信号MSに応じて、コード変換部15の出力をクロック遅延設定保持部18に接続する。よってコード信号C[8:1]=”00010000”がセレクタ信号B[8:1]=”00010000”として選択された上で、クロック遅延設定保持部18に入力される。クロック遅延設定保持部18はセレクタ信号B[8:1]=”00010000”を設定信号D[8:1]=”00010000”としてクロック遅延調整回路3へ出力する(矢印A64)。クロック遅延調整回路3では、設定信号D[8:1]=”00010000”に応じて、クロックCLK2に遅延タップTP5ないしTP8の4段分の遅延が与えられる。これによりクロックCLK1に対するCLK2の立ち上がりエッジの位置は、図13のエッジE5の位置になる。よってクロックスキューが最適に調整される。
以上詳細に説明したとおり、本実施形態に係る半導体装置1では、電源電圧VDD2の値が変更されることに応じて、クロック遅延調整回路3がクロックCLK1とクロックCLK2との間のスキュー量を調整する。よって電源電圧VDD2が変更される場合においても、モニタ回路4でタイミングエラーが発生しない値にスキュー量を保つ事が可能となる。よって電源電圧VDD2の変更の影響を排除することができるため、半導体装置1の安定した動作を確保することができる。
また本実施形態に係る半導体装置1では、第1ブロックBK1と第2ブロックBK2との間でのデータ受け渡しの成否を、モニタ回路4において検出している。よって温度変化などによりスキュー量が変化する場合にも、当該スキュー量の変化をモニタ回路4によって検出することができる。そして検出結果に応じて、スキュー量をタイミングエラーが発生しない値に設定する事が可能となる。よって温度変化等の外乱の影響を排除することができるため、半導体装置1の安定動作を確保することができる。
またデータ受け渡し時にタイミングエラーが発生しないようにスキュー量を調整する際に、スキュー量の検出結果に基づいて調整を行う場合には、間接的にタイミングエラーを検出することになる。よって検出結果に誤差が存在する。しかし本実施形態に係る半導体装置1によれば、モニタ回路4でのデータ受け渡しの成否結果に基づいて調整を行うため、直接的にタイミングエラーを検出している。よってより正確な検出結果が得られるため、より高精度にスキュー量の調整を行うことが可能となる。
尚、本発明は前記実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内で種々の改良、変形が可能であることは言うまでもない。本実施形態では、クロックCLK2に付与される全ての遅延時間の各々についてスキュー試験を行い、全試験が終了した後に最適な遅延時間を決定するとしたが、この形態に限られない。一つ前のスキュー試験結果に応じて、次のスキュー試験においてクロックCLK2に付与する遅延時間を決定する形態であってもよい。例えば図13において、ますエッジE3でのスキュー試験が行われ、ジャッジ信号JDが0(NG)の結果が得られる。そしてこの結果に基づいてエッジE4を選択する。次にエッジE4でのスキュー試験を行い、得られたジャッジ信号JD=1(OK)の結果に基づいてエッジE5を選択する。次にエッジE5でのスキュー試験を行い、得られたジャッジ信号JD=1(OK)の結果に基づいてエッジE6を選択する。次にエッジE6でのスキュー試験を行い、得られたジャッジ信号JD=1(OK)の結果に基づいてエッジE7を選択する。次にエッジE7でのスキュー試験を行い、得られたジャッジ信号JD=0(NG)の結果に基づいて試験を終了する。そして、中央値であるエッジE5を、最適な遅延時間が与えられたエッジとして選択する。これにより、試験時間を短縮することが可能となる。
また本実施形態では、モード切替信号MSが入力されることに応じて、通常動作からクロックスキュー調整動作へ切り替えられ、スキュー調整が行われるとしたが、この形態に限られない。定期的に通常動作からクロックスキュー調整動作へ切り替えられるとしてもよいことは言うまでもない。これにより、温度変化等によりスキューが経時変化する場合においても、当該経時変化に追従してスキュー調整を行うことができる。よってより高精度にスキュー量の調整を行うことが可能となる。
また本実施形態では、電源電圧VDD1およびVDD2は、半導体装置1の外部に存在する電源供給部から供給されるとしたが、この形態に限られない。半導体装置1の内部に電源供給部を備える形態としてもよいことは言うまでもない。
また本実施形態では、クロック遅延調整回路3が遅延タップTP1ないしTP8を備えることで、クロックCLK2に付与される遅延時間が8段階に調整される場合を説明したが、この形態に限られない。遅延時間の調整段数は任意の段数でよいことは言うまでもない。遅延時間の調整段数を多くするほど遅延時間の微調整が可能となるため、より高精度にスキュー量の調整を行うことが可能となる。
なお、クロックCLK1は第1クロックの一例、クロックCLK2は第2クロックの一例、電源電圧VDD2は可変電源電圧の一例、モード切替信号MSはスキュー調整動作選択信号の一例、クロック遅延調整回路3は調整回路のそれぞれ一例である。
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
第1クロックで動作する第1ブロックと、
可変に制御される可変電源電圧が供給され第2クロックで動作する第2ブロックとを備える半導体装置において、
前記第1クロックおよび前記第2クロックに基づいて、前記第1ブロックと前記第2ブロックとの間でデータ受け渡しが正常に行われるか否かを検出するモニタ回路と、
スキュー調整動作選択信号に応じて、前記モニタ回路での前記データの受け渡しが正常に行われるように前記第1クロックと前記第2クロックとの間のスキュー量を調整する調整回路と
を備えることを特徴とする半導体装置。
(付記2)
前記調整回路は、
調整を行う旨の信号が定期的に入力されることに応じて、前記スキュー量の調整を行う
ことを特徴とする付記1に記載の半導体装置。
(付記3)
前記調整回路は、前記第1クロックに対して前記モニタ回路の検出結果に応じた遅延時間を付与したクロックを前記第2クロックとして出力する
ことを特徴とする付記1または付記2に記載の半導体装置。
(付記4)
前記調整回路は接続段数が可変に制御される複数の遅延段を備え、前記モニタ回路の検出結果に応じて前記接続段数を制御する
ことを特徴とする付記1ないし3に記載の半導体装置。
(付記5)
前記モニタ回路は、
前記第1ブロックから前記第1クロックに基づいて出力された前記データが前記第2ブロックにおいて前記第2クロックに基づいて正常に受信されたか否かを検出する第1データ伝送路と、
前記第2ブロックから前記第2クロックに基づいて出力された前記データが前記第1ブロックにおいて前記第1クロックに基づいて正常に受信されたか否かを検出する第2データ伝送路と
を備えることを特徴とする付記1に記載の半導体装置。
(付記6)
前記第1データ伝送路は、
前記第1ブロックに備えられ、前記第1クロックに応じてデータを出力する第1フリップフロップと、
前記第2ブロックに備えられ、前記第2クロックに応じて前記第1フリップフロップの出力データを受け渡しする第2フリップフロップとを備え、
前記第2データ伝送路は、
前記第2ブロックに備えられ、前記第2クロックに応じてデータを出力する第3フリップフロップと、
前記第1ブロックに備えられ、前記第1クロックに応じて前記第3フリップフロップの出力データを受け渡しする第4フリップフロップと
を備えることを特徴とする付記5に記載の半導体装置。
(付記7)
第1電源電圧が供給され第1クロックで動作する第1ブロックと、
可変に制御される可変電源電圧が供給され第2クロックで動作する第2ブロックとを備える半導体装置の制御方法において、
前記第1ブロックと前記第2ブロックとの間のデータ受け渡しが正常に行われるか否かを検出するモニタ回路と、
前記モニタ回路の検出結果に応じて前記第1クロックと前記第2クロックとの間のスキュー量を調整する調整回路と
を備えることを特徴とする半導体装置の制御方法。
(付記8)
第1クロックで動作する第1ブロックと、
可変に制御される可変電源電圧が供給され第2クロックで動作する第2ブロックとを備える電子機器において、
前記第1クロックおよび前記第2クロックに基づいて、前記第1ブロックと前記第2ブロックとの間でデータ受け渡しが正常に行われるか否かを検出するモニタ回路と、
スキュー調整動作選択信号に応じて、前記モニタ回路での前記データの受け渡しが正常に行われるように前記第1クロックと前記第2クロックとの間のスキュー量を調整する調整回路と
を備えることを特徴とする電子機器。