図1は,本実施の形態におけるスキュー調整回路を有する集積回路装置を示す図である。図1には,LSIの出力部分の回路が示されている。図1において,複数のデータ信号Data#1〜Data#Nが,クロックCLKに応答して複数のフリップフロップFF#1〜FF#Nにラッチされる。ラッチされた複数のデータ信号は,出力バッファOB_1〜OB_Nを介して,出力データ信号O_Data#1〜O_Data#Nとして外部の他のLSIにまたは内部の他のマクロに出力される。
データ信号Data#1〜Data#Nが,複数のフリップフロップと出力バッファとの間の信号配線をそれぞれ伝播する。そして,データ信号が出力バッファに入力すると,データ信号のLレベルからHレベルへの変化(Rise)またはHレベルからLレベルへの変化(Fall)に応答して,出力バッファが出力端子を駆動する。その時,出力バッファOB_1〜OB_Nに接続されている電源VDDやグランドVSSには駆動電流が流れる。
各出力バッファOB_1〜OB_Nに供給されるデータ信号の変化のタイミングが一致する場合,複数の出力バッファが同時に駆動動作を行う。その場合,データ信号の変化が全て同じまたは多数のデータ信号の変化が同じ場合,出力バッファの同時駆動動作により,電源VDDやグランドVSSに大電流が流れ,電源ノイズまたはグランドノイズを発生する。
そこで,図1では,スキュー調整回路10が,各信号配線を伝播してきたデータ信号の変化の数やタイミングを監視し,検出した信号変化本数やタイミングに応じて,各信号配線の遅延量を決定する。そして,出力バッファOB_1〜OB_Nの直前に設けられた遅延回路DL_1〜DL_Nの遅延量を,その決定した遅延量に設定して,複数の出力バッファOB_1〜OB_Nでの駆動動作のタイミングができるだけ一致しないようにする。
また,スキュー調整回路10は,LSIの動作状態,(プロセス条件,電圧条件,温度条
件)の変化を監視し,その動作状態に応じて最適な遅延量を決定する。また,この遅延量
は,出力データ信号O_Data#1〜O_Data#Nを入力する他のLSIのACスペック,例えばセットアップタイムなどに適合した遅延量が選ばれる。出力データ信号O_Data#1〜O_Data#Nを入力する他のマクロについても,同様にそのACスペックに適合させることもできる。
図2は,図1のスキュー調整回路10によるスキュー調整の概略を示す信号波形図である。図1において,クロックCLKに応答して,複数のフリップフロップFF#1〜FF#Nがデータ信号Data#1〜Data#Nをラッチする。図2の例では,このラッチタイミングが一致している。スキュー調整回路は,フリップフロップFF#1〜FF#Nの出力の変化を監視し,図2に示されるように全てのまたは多くの信号配線において信号変化が検出された場合は,遅延回路の遅延量Delay#1〜Delay#Nを適切に制御して,出力バッファOB_1〜OB_Nに入力するデータ信号FF#1_Q〜FF#N_Qに適切なスキューを発生させる。
このように,スキュー調整回路10は,信号配線に設けた遅延回路の遅延量を調整することにより,伝搬してきたデータ信号のタイミングをずらして適切なスキューを持たせる。その結果,出力バッファによる同時スイッチング動作による同時スイッチングノイズを抑制する。
[第1の実施の形態]
図3は,第1の実施の形態におけるスキュー調整回路を示す図である。図3には,LSI
の出力部の構成が示され,2本のデータ信号Data_A,Data_Bを基準クロックRef_CLKに応答してラッチする最終段フリップフロップ1と,そのフリップフロップ1の出力端子Qにそれぞれ接続された2本の信号線SL_A〜SL_Bと,信号線をそれぞれ伝搬する信号SG_A〜SG_Bを入力し外部の他のLSIにまたはLSI内部の他のマクロに出力する出力バッファOB_A〜OB_Bとを有する。図中,出力バッファOB_A〜OB_Bには,信号を出力するバッファ回路に加えて,信号を入力する入力バッファも示されている。つまり,図中に示されたOB_A〜OB_Bは入出力バッファである。
スキュー調整回路10において,2本の信号線SL_A〜SL_Bには,出力バッファOB_A〜OB_Bの直前に遅延回路DL_A〜DL_Bが設けられている。前述のとおり,この遅延回路の遅延量を調整することで,信号線SL_A〜SL_Bを伝搬する信号SG_A〜SG_Bに適切なスキューを発生させる。それにより,出力バッファでのスイッチングタイミングをずらして同時スイッチングによるノイズの発生を抑制する。
制御イネーブル信号Cnt_ENは,図示しない回路により生成されるが,スキュー調整回路のシステムのイニシャライズ動作において,安定したシステムクロックが入力され安定した内部の基準クロックRef_CLKが生成されると,制御イネーブル信号Cnt_ENはHレベルになる。この制御イネーブル信号Cnt_EN=Hに応答して,スキュー調整回路10のスキュー調整動作が始まる。
制御イネーブル信号Cnt_ENは,上位のシステムからイネーブル状態(Hレベル)とデセーブル状態(Lレベル)に制御されるよう構成することができる。このような構成にすることで,電源起動時などのイニシャライズ動作後に自動的にスキュー調整回路を動作させてスキュー調整した後に,スキュー調整回路の動作を停止させることができる。また,LSIの温度が上昇したときに制御イネーブル信号Cnt_ENをイネーブル状態に制御して,スキュー調整を行い,その後でセーブル状態に制御することもできる。このようにスキュー調整回路の動作と停止を制御することで無駄な消費電流の発生を回避することができる。
スキュー調整回路10は,2本の信号線を伝搬する信号SG_A〜SG_BのLレベルからHレベルへのレベル変化(Rise)またはHレベルからLレベルへのレベル変化(Fall)における信号間のスキューを監視する信号変化監視回路25を有する。この信号間のスキューが小さいとまたはゼロだと,出力バッファでの同時スイッチングによる電源ノイズやグランドノイズの原因となる。
信号変化監視回路25は,第1,第2の信号線SL_A,SL_Bを伝搬する第1,第2の信号SG_A, SG_Bを,データおよびクロックのいずれかに選択するセレクタ26と,前記セレクタ26が出力するデータ及びクロックの間のスキューを測定するスキュー測定回路28とを有する。後述するスキュー測定回路の構成は,データよりクロックが早いことを前提にしてスキューを測定する。したがって,スキュー測定回路28は,第1,第2の信号の一方をデータとして他方をクロックとしてスキューを測定し,何らかのスキューが検出された場合は,そのスキューの値に加えて第1,第2の信号の他方が早いことも検出する。スキュー測定回路は,第1,第2の信号の一方をデータとし他方をクロックとしてスキューを測定し,スキューが検出されない場合は,前記セレクタに前記第1,第2の信号の一方をクロックとして他方をデータとして出力させ,再度スキューを測定する。
スキュー調整回路10は,さらに遅延調整回路35を有し,その遅延調整回路35は,スキュー測定回路28が測定した第1及び第2の信号間のスキュー(測定スキュー)に基づいて,前記第1,第2の遅延回路DL_A,DL_Bの遅延量を決定し,第1,第2の遅延回路DL_A,DL_Bにその決定した遅延量を設定する。第1の実施の形態における遅延調整回路35は,スキュー調整対象の信号線SL_A,SL_Bを伝搬する第1,第2の信号SG_A,SG_Bに対する目標スキューを格納するROM45を参照し,その読み出した目標スキューとスキュー測定回路28が測定した測定スキューとの差分を,遅延回路DL_A,DL_Bの遅延量として決定し,それら遅延回路にその決定した遅延量を設定する。
図33は,図3のスキュー調整回路の変型例を示す図である。この変型例では,データData_A,Data_Bと同様に,データData_Xを最終段フリップフロップ1が基準クロックRef_CLKに同期して取り込み,データData_A,Data_Bの信号線SL_A,SL_Bと同じ長さの信号線を伝搬させて信号変化関し回路25に入力している。データData_Xを取り込む基準クロックRef_CLKのタイミングと,最終段フリップフロップ1から信号変化監視回路25までの信号線とが異なるが,データData_A,Data_Bと同等のスキューを測定することができる。このようにスキュー測定精度は,図3よりも劣るが,データData_Xを2つのフリップフロップでラッチしているので,信号変化監視回路25には,2つの信号がスキューを持つ同じ立ち上がりエッジで入力する。そのため,スキュー測定はデータData_A,Data_Bを利用する場合よりも容易になる。
図4は,信号変化監視回路25内のセレクタ26を示す図である。セレクタ26は,スキュー調整対象の1対の信号線SL_A,SL_Bの信号のいずれか一方をデータに他方をクロックに選択してスキュー測定回路28に出力する。スキュー測定回路28がデータがクロックより早いなどの理由で適切にスキューを検出できない場合は,セレクタ26は,上記信号線SL_A,SL_Bの信号を入れ替えて,上記一方をクロックに他方をデータに選択してスキュー測定回路28に出力する。その場合,入れ替えたことを示すセカンドフラグ2nd_Flagを「1」にして,スキュー測定回路28に通知する。これによりスキュー測定回路28は,セカンドフラグ2nd_Flagを参照することで,第1,第2の信号SG_A,SG_Bのいずれがデータとしてまたはクロックとして出力されたかを判別することができる。
セレクタ26は,セカンドフラグ2nd_Flagに基づいて信号線SL_A,SL_Bの信号SG_A,SG_Bのいずれか一方をデータ277に選択し,いずれか他方をクロック278に選択するセレクタ261,262を有する。さらに,セレクタ26は,信号SG_A,SG_Bが共に「0」(Lレベル)を検出するアンドゲート263と,制御イネーブル信号Cnt_ENが「1」(Hレベル)になった後基準クロックRef_CLKに応答して,両信号SG_A,SG_Bが共に立ち上がることを検出し,同時立ち上がり検出信号S_ENを「1」にする同時立ち上がり検出回路267を有する。また,セカンドフラグ2nd_Flagとリニューフラグrenew_Flagを生成するフラグ生成回路268と,1回目のスキュー測定時と2回目のスキュー測定時に同時立ち上がり検出信号S_ENに基づいてリニューイネーブル信号renew_ENを生成するANDゲート274,275,ORゲート276とを有する。また遅延調整回路35から,スキューの測定結果dcba_reg(a)と,更新完了信号renew_compとが供給され,これらの信号に基づいて1回目のスキュー測定と2回目のスキュー測定に対応した制御信号renew_EN,2nd_Flag,renew_Flagが生成される。これらの具体的な動作は,後に詳述する。
図5は,信号変化監視回路25内のスキュー測定回路28を示す図である。図5(A)に示されるとおり,スキュー測定回路28は,データ277よりクロック278が早いタイミングを有することを前提にして両信号間のスキューを測定する。
図5(B)はスキュー測定回路28を示し,図5(C)はその回路の動作を示す信号波形を示す。スキュー測定回路28は,データ277をそれぞれのデータ入力端子Dに入力する複数のラッチ回路281〜284と,クロック278を遅延させながらラッチ回路のクロック端子に入力するクロック供給回路285とを有する。クロック供給回路285は,複数のバッファを有し,各ノードの信号X,Y,Zがラッチ回路282,283,284のクロック端子に入力される。
図5(C)に示されるとおり,両信号SG_A,SG_Bのいずれかであるクロック278とデータ277間のスキューは,ラッチ回路281〜284のデータ出力Qが出力する測定スキューデータ286(dcba)として出力される。図5(C)の例では,測定スキューデータdcba=1100である。この測定スキューデータdcbaは,ゼロが多いほどスキュー値が大きいことを意味する。したがって,測定スキューデータdcba=1100のときのほうが,dcba=1000の時よりもスキュー値が小さくなっている。このように測定スキューデータdcbaの大小関係が,スキュー値の大小関係と逆になっていることは,後述する遅延調整回路において留意されるべきである。
図6は,スキュー調整回路10内の遅延調整回路35を示す図である。測定スキューデータdcbaを保持する測定スキュー保持レジスタ351,352と,目標スキュー値格納ROM45から読み出した目標スキュー値と,測定スキュー保持レジスタ352の測定スキュー値とを比較し,それらの差分を検出するスキュー比較回路355と,検出された差分が遅延として設定される遅延設定レジスタ362とを有する。この遅延設定レジスタ362に設定された遅延量に基づいて,遅延回路DL_A,DL_Bは両信号SG_A,SG_Bを遅延させて,適切なスキューを発生させる。また,遅延調整回路35は,リニューイネーブル信号renew_ENに応答してタイミング信号を生成するタイミング生成回路353と,目標スキュー値ROM45へのアドレスを管理するアドレス管理テーブル363と,読み出しデータR_dataをラッチするラッチ回路354とを有する。また,スキュー比較回路355内の差分検出は,排他的論理和回路357と差分カウンタ358とで行われる。
図7は,目標スキュー値ROM45の構成を示す図である。アドレスは,同時動作する信号グループであってスキュー調整対象の信号グループGrと,信号対の組み合わせとであり,それに対応するデータは,目標スキュー値である。この目標スキュー値は,測定スキューデータと同様の形式であり,図5のスキュー測定回路が出力する形式のデータn−dcbaである。したがって,測定スキュー値とその測定スキューデータdcbaと同様に,目標スキュー値とROM内の目標スキューデータn-dcbaとは大小関係が逆になる。
図8は,本実施の形態における測定スキューデータと目標スキューデータとの関係を示す図である。前述のとおり,スキュー測定回路28が出力する測定スキューデータdcbaの値は,測定スキューの大小関係とは逆の関係になる。同様に,ROM45から出力される目標スキューデータdcbaの値も,目標スキューの大小関係とは逆の関係になる。図8に示される例では,測定スキューデータdcba=1000に対して,目標スキューデータdcba=1100である。図8中の波形から理解できるとおり,測定スキューよりも目標スキューのほうが小さい。ただし,データ同士の比較では測定スキューデータdcba=1000<目標スキューデータdcba=1100となっている。
図9は,スキュー調整回路の動作フローチャートの図である。この動作フローチャートにしたがって図4〜図6のスキュー調整動作の概略を説明する。まず,スキュー調整回路のシステムのイニシャライズ動作において,安定したシステムクロックが入力され安定した内部の基準クロックRef_CLKが生成されると,制御イネーブル信号Cnt_ENはHレベルになる(S10)。この制御イネーブル信号Cnt_EN=Hに応答して,スキュー調整回路10のスキュー調整動作が始まる。
セレクタ26は,1回目のスキュー測定か否かに応じて,1回目であれば信号SG_Aをデータに信号SG_Bをクロックに設定する(S14)。また,2回目であれば信号SG_Aをクロックに信号SG_Bをデータに設定する(S16)。具体的には,1回目であればセカンドフラグ2nd_Flag=0となり,図4のセレクタ261,262が信号SG_Aをデータ277に信号SG_Bをクロック278にそれぞれ選択する。2回目であればセカンドフラグ2nd_Flag=1となり,上記と逆の選択をする。
同時立ち上がり検出回路267が,信号SG_AとSG_Bの立ち上がり変化を検出すると,同時立ち上がり検出信号S_ENを「1」にする(S18)。すなわち,アンドゲート263が両信号SG_AとSG_BのLレベルを検出し,ラッチ回路264が基準クロックRef_CLKに応答してそれをラッチし,その後アンドゲート265が両信号SG_AとSG_BのHレベルを検出するとラッチ回路266が次の基準クロックRef_CLKに応答してそれをラッチし,同時立ち上がり検出信号S_EN=1になる。
前回のスキュー調整が完了した時点で,更新完了信号renew_comp=1によりセカンドフラグ2nd_Flag=0,リニューフラグrenew_Flag=0にリセットされている。そして,1回目のスキュー測定の場合,既にスキュー測定回路28が測定した測定スキューデータdcbaを格納する測定スキュー保持レジスタ351の保持データdcba_regの最下位データdcba_reg(a)がdcba_reg(a)=0であれば,アンドゲート274がS_EN=1に応答してリニューイネーブル信号renew_EN=1にする。または,2回目のスキュー測定の場合,保持データdcba_reg(a)に係わらずアンドゲート275がS_EN=1に応答してリニューイネーブル信号renew_EN=1にする。
図9にもどり,スキュー測定回路28により検出される測定スキューデータdcba=1111の場合は(S20),2回目のスキュー測定に移行する(S22)。1回目の測定で測定スキューデータdcba≠1111の場合,または2回目のスキュー測定時であれば,測定スキューデータdcbaがリニューイネーブル信号renew_EN=1に応答して測定スキュー保持レジスタ352がそのデータを保持する。
1回目,2回目のスキュー測定においてリニューイネーブル信号renew_EN=1になると,図6の遅延調整回路35が動作を開始し,スキュー比較回路355が,ROM45から読み出した目標スキュー値と保持している測定スキュー値とを比較し,その差分を演算する(S28)。さらに,スキュー比較回路355内の判別ユニット359が,セカンドフラグ2nd_Flagと比較結果S356とに基づいて,セレクタ360,361の選択信号を生成する。また,XOR357と差分カウンタ358が測定スキューデータと目標スキューデータの「0」の数の差をカウントし,差分値を求める。この差分値S358は,セレクタ360,361を介して,遅延設定レジスタ362に遅延回路の遅延量に対応するタップ値として設定される(S30)。
遅延設定レジスタ362は,リニューイネーブル信号renew_EN=1に応答してリセットされ,インバータ363の出力である基準クロックRef_CLKの180°位相のタイミングで,差分値がセットされる。
判別ユニット359の論理値表が図6中に示されている。これによれば,1回目のスキュー測定時において(2nd_Flag=0),測定スキューデータdcba<目標スキューデータdcbaの場合,つまり測定スキュー>目標スキューの場合は,図8の場合であり,タイミングが早い信号SG_B側に差分を遅延量として設定し,タイミングが遅い信号SG_A側には遅延量ゼロに設定する。不等号が逆の場合は,上記と逆に,タイミングが早い信号SG_B側に遅延量ゼロを設定し,タイミングが遅い信号SG_A側に差分量を遅延量として設定する。2回目のスキュー測定時においては(2nd_Flag=1),信号SG_A,SG_Bが逆の関係になる。
図10は,スキュー調整回路の動作例を示すタイミングチャート図である。この動作例では,最初のスキュー調整では1回目のスキュー測定でスキューが測定されて遅延回路の遅延量が設定され,次のスキュー調整では1回目のスキュー測定ではスキューが測定できず(dcba=1111)2回目のスキュー測定でスキューが測定される。
時間t0では既にイニシャライズが完了し,制御イネーブル信号cnt_EN=1になっている。また,前回の遅延量設定完了に伴い更新完了信号renew_comp=1によりセレクタ回路26内のラッチ回路272,273はリセットされ,2nd_Flag=0,renew_Flag=0になっている。
時間t1でデータ信号A,Bが共に立ち上がると,同時立ち上がり検出回路267でLL_Flag=1になり,時間t2で基準クロックRef_CLKの立ち上がりに応答して同時イネーブル信号S_EN=1になる。スキュー測定回路28は常時2つの信号のスキュー差を測定しており,時間t2で保持されているデータは,測定スキューデータdcba_reg=1100,dcba_reg(a)=0であるので,アンドゲート274によりリニューイネーブル信号renew_EN=1になる。dcba_reg(a)=0は信号BがAより早いタイミングであることを意味し,1回目の測定が適切に行われたことを意味する。
そして,時間t3で,このrenew_EN=1に応答して,測定スキュー保持レジスタ352がdcba_reg=1100をラッチし,同時にフラグ生成回路268内のアンドゲート270の出力=1によりラッチ回路273がリニューフラグrenew_Flag=1にする。
図6の遅延調整回路35内のタイミング生成回路353では,リニューフラグrenew_Flag=1により,時間t5でROM45に出力イネーブル信号xOE=0が生成され,アドレス管理テーブル363から信号A,Bの組み合わせを示すアドレスが出力され,時間t7にてROM45内の目標スキューデータR_dataが読み出される。
その後は,遅延調整回路35内のスキュー比較回路355が比較動作と差分カウント動作を行い,更新完了信号renew_comp=1のタイミングで,遅延設定レジスタ362に差分に対応する遅延量が判別ユニットの判別信号に応じて設定される。これにより,最初のスキュー調整が完了する。
次に,時間t10での信号A,Bの立ち上がりを検出し,時間t11で同時立ち上がり検出
信号S_EN=1となる。しかし,最初のスキュー調整中を示すリニューフラグrenew_Flag=1により,セレクタ内のアンドゲート274,275はリニューイネーブル信号renew_ENを「1」にしない。
次の,時間t13で信号A,Bの立ち上がりを検出し,時間t14で同時立ち上がり検出信号S_EN=1となり1回目のスキュー測定が行われるが,測定スキューデータdcba_reg(a)=1であるため,セレクタのアンドゲート274の出力は「0」のままでリニューイネーブル信号renew_ENを「1」にしない。そして,時間t15で測定スキューデータdcba_reg(a)=1により基準クロックRef_CLKに応答して,セレクタ26のアンドゲート269によりラッチ回路272が「1」をロードしてセカンドフラグ2nd_Flag=1にする。これで2回目のスキュー測定が始まる。
時間t18で信号A,Bの立ち上がりを検出し,時間t19で同時立ち上がり検出信号S_EN=1となり,セレクタ26のアンドゲート275によりリニューイネーブル信号renew_EN=1になり,アンドゲート271とラッチ回路273により時間t20の次の基準クロックRef_CLKに応答してリニューフラグrenew_Flag=1になる。これにより,遅延制御回路35は,2回目の測定スキューデータと,ROM45から読み出した目標スキューデータとに基づいて,遅延量を設定する。この遅延量の設定動作は,前述したのと同じである。
図11は,遅延回路と,そのタップ値と遅延量との関係とを示す図である。遅延回路DL_#は,入力するデータ信号Dataを遅延させる複数のバッファからなるバッファ群313と,バッファ群313内の複数のノードを設定コードS_CODEに基づいて選択するセレクタ315とを有する。図11中には,セレクタのタップ値と設定コードS_CODEとの対応表が示され,設定コードS_CODEが小さいほど,つまりタップ値が小さいほど,遅延回路DL_#により挿入される遅延量が小さく,逆の場合は遅延量が多くなる。8つの遅延回路DL_0〜DL_7に対する各4ビットの設定コードS_CODE が,図6の遅延量設定レジスタ361に設定される。
本実施の形態においては,信号線SL_A,SL_Bの信号の同時変化を検出した場合,その信号のスキューを測定し,各信号線に設けた遅延回路の遅延量を調整して信号間のスキューを適切に調整し,出力バッファによる同時スイッチングを抑制する。ただし,この遅延量は,出力バッファの出力を供給される他のLSIやマクロの入力回路のACスペックに適合した許容遅延量を超えることは許されない。したがって,遅延量ROM内に設定された遅延量は,このACスペックに適合した許容遅延量未満に設定されている。
図12は,許容遅延量を説明する図である。図中,LSIの内部の基準クロックRef_CLKと,複数のLSIに対するシステムクロックS_CLKとが示されている。これらのクロックは,同期したクロックであり同じ周期Tを有するが,図示されるとおり両クロック間には所定の位相差dTが存在する場合がある。
図3において,LSIの出力段では,基準クロックRef_CLKに応答して最終段フリップフロップ1がデータ信号をラッチする。そして,信号線SLと出力バッファOBを経て,データ信号が後段の他のLSIまたは他のマクロに出力される。後段の他のLSIまたは他のマクロの入力回路は,システムクロックS_CLKの立ち上がりエッジで入力信号を取り込むが,入力回路にはセットアップタイムTsとホールドタイムThがACスペックとして決められている。
図12中には,データAとデータBについて,最終段フリップフロップからの出力遅延と出力バッファの遅延の和TOxと,セットアップタイムTsを満たす許容遅延値が示されている。出力側での遅延値TOxは,プロセス条件や温度条件,電源電圧などによりばらつきが発生するので,最大値と最小値が存在する。したがって,データA,Bについてそれぞれ遅延値TOxが最大の場合と最少の場合とが示されている。
セットアップタイムTsを満たす許容される遅延値は,データA,Bそれぞれ次の通りである。
データA=T-T0a_max-Ts+dT
データB=T-T0b_max-Ts+dT
そして,データBの遅延値TOxのほうが大きいので,データBの許容遅延値のほうが小さい。よって,このデータBの許容遅延値未満の遅延量が遅延量ROM45に設定される。その結果,スキュー調整された出力信号が,後段のLSIやマクロの入力回路にそのセットアップタイムTsを満たすタイミングで供給されることが保証される。
上記のスキュー測定回路28は,2つの信号SG_A,SG_Bのいずれかをクロック,いずれかをデータに選択してスキューを測定するが,スキュー測定回路28内に図5に示したスキュー測定回路を2組設けることで,2つの信号SG_A,SG_Bのいずれが早いタイミングであっても,両信号間のスキューを同時に測定することができる。その場合は,両スキュー測定回路の測定結果dcbaを参照すれば,いずれの信号のタイミングが早いかも検出可能である。本実施の形態のスキュー調整回路はそのように2組のスキュー測定回路を有してもよい。
[第1の実施の形態(2)]
図13は,第1の実施の形態におけるスキュー調整回路の第1の変型例を示す図である。図3のスキュー調整回路10との相違点は,動作状態監視回路50を有することと,目標スキュー値ROM45が,スキュー調整対象信号グループGrとスキュー調整対象信号対に加えて,動作状態監視回路50が検出する動作速度とに対応する目標スキュー値を格納していることである。遅延回路DL_A,DL_Bは図11と同じであり,セレクタ26は図4と同じであり,スキュー測定回路28は図5と同じであり,遅延調整回路35も図6と同じである。ただし,遅延調整回路35内のアドレス管理テーブル363は,動作状態監視回路50からの動作速度もアドレスに加える。
この変型例では,動作状態監視回路50が,動作状態(プロセス条件,温度条件,電圧条件のばらつき)によって生じるLSI内のゲートの速度変化を監視し,その速度が高速の場合の動作状態信号Fastと,典型的な場合の動作状態信号Typicalと,低速の場合の動作状態信号Slowとを出力する。そして,この動作速度に対応して,ROM45は目標スキュー値を格納しているので,動作状態に適した遅延量を遅延回路に設定することができる。
具体的には,典型的な速度の場合の遅延量に比べると,高速の場合は遅延回路DL内の遅延量をより多くし,つまり遅延バッファの数を増やし,絶対的な遅延時間,つまり絶対的なスキューの大きさを典型的な速度の場合と同等にする。逆に,低速の場合は遅延回路DL内の遅延量をより少なくして,つまり遅延バッファの数を減らし,絶対的な遅延時間,つまり絶対的なスキューの大きさを典型的な速度の場合と同等にする。
動作速度が高速になったり低速になったりとばらつく原因は,第1にデバイス製造時の狙い値に対して生じる製造ばらつきなどのプロセス条件,,第2に電源電圧が高いか低いか,第3に温度が高いか低いかなどである。前述のとおり,遅延回路の遅延量は,同時スイッチングノイズ低減のための適切なスキューを与える値であって,許容遅延量未満の値に設定される必要がある。したがって,動作速度のばらつきに対応して,遅延回路の遅延バッファの数を変更することが望ましい。
図14は,動作状態監視回路50の一例を示す図である。動作状態監視回路は,位相0°のクロックCLK0を遅延して位相90°のクロックCLK90を出力する遅延回路501と,2つのクロックCLK0,CLK90の位相差を検出し,その位相差が90°になるように遅延回路の遅延制御信号507を生成する遅延制御回路503とを有する。遅延回路501は,例えば図11に示した遅延回路と同等の構成である。したがって,遅延制御信号507は,LSIのゲート速度が高速であればより多くのバッファを伝搬した信号を選択する制御信号になり,低速であればより少ないバッファを伝搬した信号を選択する制御信号になる。図14の例では,この遅延制御信号507がデコーダ505でデコードされ,3種類の動作状態信号Fast,Typical,Slowに変換される。
図6の遅延調整回路35に示されるとおり,本実施の形態では,動作状態監視回路50が出力する動作状態信号がアドレス管理テーブル363にも出力される。遅延調整回路35は,ROM45を参照する時のアドレスとして,スキュー調整対象信号グループGrとスキュー調整対象信号対に加えて,動作状態信号Fast,Typical,Slowを使用する。
図15は,目標スキュー値ROM45の具体例を示す図である。このROM45の場合,アドレスとしてスキュー調整対象信号グループGrとスキュー調整対象信号対に加えて,動作状態信号Fast,Typical,Slowを有する。そして,データとしては信号対の目標となる目標スキューデータn-dcbaである。つまり,図7のデータが,動作状態信号Fast,Typical,Slowそれぞれに対して格納されている。
ただし,図15に示されるとおり,動作状態が高速Fastの場合の目標スキューデータは,典型速度Typicalの場合よりも「0」が多く設定され,低速Slowの場合の目標スキューデータは,典型速度Typicalの場合よりも「0」が少なく設定されている。つまり,絶対的な目標スキューは動作速度にかかわらずほぼ一定になるようにされている。この遅延量ROM45を参照することで,動作状態に対応した適切な目標スキューデータを,遅延調整回路に読み出すことができる。
ROM45は,書換可能なメモリであってもよい。書換可能なメモリであれば,最適な目
標スキュー値をそのLSIの動作環境,例えば出力信号を入力する他のLSIのACスペックなど,に対応して書き換えることができ,最適なスキュー調整が可能である。
[第1の実施の形態(3)]
図16は,第1の実施の形態におけるスキュー調整回路の第2の変型例を示す図である。スキュー調整回路10は,図3と同様に,セレクタ26とスキュー測定回路28を有する信号変化監視回路25と,遅延調整回路37と,遅延回路DL_A,DL_Bとを有する。信号変化監視回路25のセレクタ26とスキュー測定回路28は図4,5の構成と同じであり,遅延回路も図11と同じである。
ただし,図3と異なり,測定スキューに応じた調整すべき遅延量が,LSIの外部に設けられたRAM75に格納され,そのRAM75内の調整すべき遅延量の設定は,外部のCPUによって行われる。それに伴って,この第2の変型例の遅延調整回路37は,図6の構成ではなく,図17の構成を有する。また,外部のCPUバスとのインターフェースをとるCPUインターフェース62が設けられ,遅延調整回路37とCPUとのインターフェース動作が行われる。
なお,CPUは,RAM75に適宜最適な遅延量をダウンロードする。このようにRAM75の遅延量を書換可能にすることで,例えば,出力バッファから出力される信号を入力する他のLSIや他のマクロのACスペックに適合した遅延量を動的に設定することができる。
また,RAM75やCPUは,共通のLSI内に設けられていても良い。つまり,LSIがシステムLSIの場合,そのLSI内にはCPUやRAMが設けられているので,それらを利用しても良い。
図17は,第1の実施の形態の第2の変型例における遅延調整回路を示す図である。遅延調整回路37は,測定スキューレジスタ370と,遅延設定値レジスタ371と,遅延設定レジスタ373とを有する。測定スキューレジスタ370には,セレクタ26から供給されるリニューイネーブル信号renew_EN=1がスキュー有効ビットとして保持され,セカンドフラグ2nd_Flagが判定モード信号として保持され,スキュー測定回路28から出力される測定スキューデータが保持される。これらが保持されたときにスキュー有効ビットが有効「1」にされる。
CPUは,測定スキューレジスタ370内のスキュー有効ビットを監視し,有効「1」になった時に,判定モード信号と測定スキューデータとをアドレスにして,RAM75から信号A,Bに対する調整遅延データを読み出し,遅延設定値レジスタ371に格納し,遅延切替ビットを「1」にする。この遅延切替ビット「1」に応答して,遅延設定レジスタ373は,信号Aに対する遅延設定値と信号Bに対する遅延設定値とを,基準クロックRef_CLKの反転タイミングに応答して取り込む。その結果,遅延回路DL_A,DL_Bにその遅延設定値が設定される。また,遅延切替ビット「1」に応答して,測定スキューレジスタ370内のスキュー有効ビットは「0」にクリアされる。
図18は,調整すべき遅延量を格納するRAM75の構成例を示す図である。RAM75のアドレスは,グループGrと,信号組み合わせ情報と,測定スキューデータと,判定モード(1回目または2回目)と,設定すべき信号(設定信号)である。それに対して,データには,設定信号に設定すべき遅延量を示す遅延設定値が格納されている。図中,表の右側に遅延設定値による遅延調整される波形が示されている。
この遅延設定値は,測定スキューデータに対応して,目標スキューを発生させるために遅延回路DL_A,DL_Bで調整すべき遅延量に対応し,RAM75内のデータは,図11の遅延回路の設定コードS_CODEである。図11に示されるとおり,設定コードS_CODEが小さいほど挿入すべき遅延量が小さい。したがって,RAM75内の遅延設定値は,前述の測定スキューデータと目標スキューデータとの差分に対応する。また,遅延設定値は,判定モードが1回目(1st)か2回目(2nd)かによって,挿入すべき信号がA,B逆になる。
図19,図20は,調整すべき遅延設定値について説明する図である。図19には,スキュー測定回路28に対応して,測定スキューと目標スキューとを示す信号A,Bの波形が示されている。測定スキューデータdcba=1000に対して,目標スキューデータdcba=1100である。したがって,この目標スキューを実現するためには,信号B側に遅延量「1」を挿入し,信号A側には遅延量ゼロでよいことが理解できる。図18のRAM75のデータは,この目標スキューを実現するために必要な遅延量が信号A,Bそれぞれに対して設定すべき遅延回路の設定コードS_CODEである。
図20には,RAM75の具体例と遅延回路28の遅延設定値とが示されている。図19
に示したような測定スキューと目標スキューの場合は,信号A側には遅延量ゼロ,信号B側には遅延量「1」が挿入されるべきである。よって,RAM75の判定モード「1st」に信号Aに対しては遅延設定値「0000」が,信号Bに対して遅延設定値「0001」が格納されている。その結果,信号A側の遅延回路28には遅延設定値「0000」に対応するタップが選択され,信号B側の遅延回路28には遅延設定値「0001」に対応するタップが選択される。信号B側を遅延量「1」だけ遅延させることにより,信号A,B間のスキューは目標スキューと等しくなる。
図18に戻り,判定モード「1st」側には,測定スキューデータdcba=1000の場合に加えて,dcba=1100,dcba=1110の場合の遅延設定値も示されている。測定スキューデータdcba=1100の場合は,信号A,B間には目標スキューが発生しているので,設定すべき遅延設定値は共にゼロである。また,測定スキューデータdcba=1110の場合は,信号Aに挿入すべき遅延量「1」が信号Bに挿入すべき遅延量「0」がそれぞれ遅延設定値として格納されている。判定モード「2nd」の場合は,上記の判定モード「1st」とは信号A,Bが逆の関係になる。
[第1の実施の形態(4)]
図21は,第1の実施の形態におけるスキュー調整回路の第3の変型例を示す図である。図16のスキュー調整回路10との相違点は,動作状態監視回路50を有することと,RAM75がスキュー調整対象信号グループGrとスキュー調整対象信号対に加えて,動作状態監視回路50が検出する動作速度に対応する調整すべき遅延設定値を格納していることである。遅延回路DL_A,DL_Bは図11と同じであり,セレクタ26は図4と同じであり,スキュー測定回路28は図5と同じであり,遅延調整回路37も図17と同じである。
図17に示した遅延調整回路37は,動作状態監視回路50からの動作状態信号を測定スキューレジスタ370に格納する。そして,CPUは,この動作状態信号に基づいて,RAM75内の遅延設定値を読み出し遅延設定値レジスタ371に格納する。なお,CPUが,判定モードと測定スキューデータとに応じた遅延設定値をRAM75から読み出すのは,前述したとおりである。
図22は,RAM75の具体例を示す図である。この具体例には,図18のメモリ構成例
に示した遅延設定値が,動作状態信号Fast, Typical, Slowに対応して格納されている。しかも,動作状態がSlowの場合に比較して,Typical, Fastの場合の遅延設定値はそれぞれ2倍,3倍などになっている。それにより,動作状態にかかわらず,信号A,Bに同じ長さの目標スキューを生成させることができる。
[第2の実施の形態]
図23は,第2の実施の形態におけるスキュー調整回路の図である。第2の実施の形態のスキュー調整回路は,N本の信号線SL_A〜SL_Nの信号のスキューを測定し,目標のスキューになるように各信号線に設けた遅延回路DL_A〜DL_Nの遅延量を調整する。
そのために,スキュー調整回路10は,セレクタ26とスキュー測定回路28を,信号線SL_AとSL_B間,SL_AとSL_C間,さらにSL_Aとそれ以外の信号SL_K(K=D〜N)間のスキューを測定するためにN-1個有する。そして,遅延調整回路38は,調整対象の信号組み合わせに対応する目標スキューをROM45から読み出して,測定スキューと目標スキューとから遅延設定値を演算する遅延設定値演算回路381を有する。さらに,遅延調整回路38は,N本の信号間の目標スキューをROM45から順次読み出すために,アクセス競合が起きないようにラウンドロビン方式での読み出し制御をするROMアクセス競合制御回路382を有する。
いま仮に,4本の信号線SL_A,B,C,Dに対してスキュー調整する場合を例にして説明する。信号線が4本であるので,セレクタ26,スキュー測定回路28は,3セット必要になる。それぞれのセレクタ26,スキュー測定回路28は,信号A,B間,信号A,C間,信号A,D間のスキューを測定する。遅延調整回路38内の遅延設定値演算回路381は,その測定スキューからどの信号が最も遅いタイミングであるかを特定する。これは,信号A,B間,信号A,C間,信号A,D間の測定スキューとそれが1回目か2回目の判定かの情報から簡単に特定できる。
ROM45には,4つの信号A,B,C,Dに対する目標スキューのデータが格納されている。ただし,目標スキューデータは,信号Aが最も早い場合,信号Bが最も早い場合,信号Cが最も早い場合,信号Dが最も早い場合それぞれの目標スキューデータである。そこで,遅延設定値演算回路381が,測定スキューから検出した最も遅いタイミングの信号を最も早くする目標スキューデータをROM45から読み出す。そして,遅延設定値演算回路381は,信号A,B間,信号A,C間,信号A,D間の測定スキューから得られた信号A,B,C,Dのタイミング関係を,ROM45から読み出した目標スキューに調整するために必要な各信号の遅延量を演算し,その調整すべき遅延量を遅延設定値として各遅延回路の遅延設定レジスタ(図17の373)に設定する。
図24は,ROM45の具体例を示す図である。このROM45のアドレスは,同時動作する信号グループGrと,信号組み合わせと,測定スキューから検出された最も遅い信号(最遅)である。一方,ROM45のデータは,最も遅い信号を最も早いタイミングにする各信号間の目標スキューである。図24には,最も遅い信号Aについてのみ示されているが,実際のデータは,最も遅い信号となるA,B,C,Dの4つの場合それぞれに対して,各信号間の目標スキューを持つ必要がある。
図25は,本実施の形態における遅延設定値演算回路381の演算1を示す図である。演算1は,判定モードと測定スキューとから4本の信号線の信号の順番を検出する。4本の信号の順番は,理論的には24通り存在するが,図35には16通りが示されている。例えば,(a)は判定モードが1st-1st-1stの場合であり,この場合は信号Aが一番遅いことが検出できる。さらに,測定スキューを比較することにより,他の信号B,C,Dの順番がそれぞれ検出できる。(b)(c)(d)の場合も同様である。
図26,図27,図28は,本実施の形態における遅延設定値演算回路381の演算2を示す図である。演算2は,測定結果から検出した最も遅い信号を最も早くする目標スキューにするための,各信号に挿入すべき遅延量を演算する。測定スキューから4つの信号のタイミング関係が分かっているので,その4つの信号のうち最も遅い信号を,目標スキューでは最も早い信号にするようにする。この場合,最も遅かった信号には調整遅延量はゼロが設定され,残りの信号には目標スキューになるように必要な調整遅延量が簡単に演算できる。
図26,図27,図28には,その演算例が示されている。図26の(1)は信号Aが最も遅い場合の各信号の遅延設定値を求める演算式を示す。(1)の右側に測定スキュー結果に基づく信号波形と,目標スキューに基づく信号波形とが示されている。この場合は,信号Aは設定遅延値ゼロである。信号Bには,AB間の測定スキューの「0」の数(遅延量)と,AB間の目標スキューの「0」の数とを加算した遅延量を設定遅延値とする。信号Cには,AC間の測定スキューの「0」の数(遅延量)と,AC間の目標スキューの「0」の数とを加算した遅延量を設定遅延値とする。信号Dには,AD間の測定スキューの「0」の数(遅延量)と,AD間の目標スキューの「0」の数とを加算した遅延量を設定遅延値とする。
図27の(2)は信号Bが最も遅い場合の遅延設定値の演算例である。信号Bは設定遅延値ゼロである。そして,残りの信号A,C,Dに設定すべき遅延値は,図中の演算式により求めることができる。
まず信号Aは,AB間の測定スキューの「0」の数に,AB間の目標スキューの「0」の数を加算した遅延量を設定遅延値とする。信号Cは,信号A,Cのスキュー関係によって,2種類の演算式を使い分ける必要がある。信号Cより信号Aが遅い場合には,AB間の測定スキューの「0」の数に,AC間の測定スキューの「0」の数を加算し,さらにBC間の目標スキューの「0」の数を加算した遅延量を設定遅延値とする。逆に信号Cより信号Aが早い場合には,AB間の測定スキューの「0」の数から,AC間の測定スキューの「0」の数を減算し,BC間の目標スキューの「0」の数を加算した遅延量を設定遅延値とする。信号Dも同様に,信号A,Dのスキュー関係によって,2種類の演算式を使い分ける必要がある。信号Dより信号Aが遅い場合には,AB間の測定スキューの「0」の数に,AD間の測定スキューの「0」の数を加算し,さらにBD間の目標スキューの「0」の数を加算した遅延量を設定遅延値とする。逆に信号Dより信号Aが早い場合には,AB間の測定スキューの「0」の数から,AD間の測定スキューの「0」の数を減算し,BD間の目標スキューの「0」の数を加算した遅延量を設定遅延値とする。
図28の(3)の信号Cが最も遅い場合と(4)の信号Dが最も遅い場合も,図27の(2)と同様の演算式により設定すべき遅延値を求めることができる。
[第2の実施の形態(2)]
図29は,第2の実施の形態におけるスキュー調整回路の第1の変型例を示す図である。図23のスキュー調整回路10との相違点は,動作状態監視回路50を有することと,目標スキュー値ROM45がスキュー調整対象信号グループGrと最も遅い信号と信号組み合わせに加えて,動作状態監視回路50が検出する動作速度とに対応する目標スキュー値を格納していることである。遅延回路は図11と同じであり,セレクタ26は図4と同じであり,スキュー測定回路28は図5と同じであり,遅延調整回路38も図23,25,26と同じである。
図30は,目標スキュー値ROM45の具体例の図である。このROM45は,図24のアドレスに加えて,動作状態信号Fast, Typical, Slowが追加されている。動作状態に対する目標スキューの設定は,図15と同様に,動作状態Slowのほうが目標スキューのゼロの数が少なく,動作状態Fastのほうが目標スキューのゼロの数が多い。
[第2の実施の形態(3)]
図31は,第2の実施の形態におけるスキュー調整回路の第2の変型例を示す図である。このスキュー調整回路10では,LSI外部またはLSI内部のRAMのデータをCPUが読み出して,CPUインターフェース62を介して遅延調整回路39内の目標スキューレジスタ383に格納する。また,スキュー測定回路28により測定されたスキューと判別モードのデータは,測定スキューレジスタ384に格納される。これらのレジスタ383,384は,データの組み合わせの数N-1個だけ設けられる。
セレクタ26とスキュー測定回路28からはN-1通りの判定モードと測定スキューが測定スキューレジスタ384に格納される。格納されると図17のようにそのレジスタ内のスキュー有効ビットが「1」に設定される。CPUは,このスキュー有効ビットを常時監視し,スキュー有効ビットが「1」になると,遅延設定値演算回路381の演算1により検出された最も遅い信号に対応する目標スキューのデータを,RAM45から読み出し,目標スキューレジスタ383に格納し,図17のように遅延切替オンビットを「1」に設定する。
遅延設定値演算回路381は,この遅延切替オンビットが「1」に設定されると,測定スキューと判定モードとから得られる現在の信号A,B,C,Dのスキュー関係を,目標スキューによる信号A,B,C,Dのスキュー関係にするために必要な各信号の設定遅延値を演算する。そして,演算された設定遅延値が,各遅延回路に属する遅延設定レジスタに設定される。この設定がされると,スキュー有効ビットが「0」にリセットされる。
[第2の実施の形態(4)]
図32は,第2の実施の形態におけるスキュー調整回路の第3の変型例を示す図である。このスキュー調整回路10は,図31と異なるところは,動作状態監視回路50を有し,それに伴いRAM45に動作状態に対応する目標スキューが格納されていることである。
それ以外の構成と動作は,図31の第2の変型例と同じである。
以上,第2の実施の形態によれば,スキュー調整対象のN本の信号線の信号に対し,N-1の組み合わせのスキューを測定し,メモリ内の目標スキューになるように各信号線に挿入すべき遅延量を演算で求めて,N本の信号線の信号変化に目標スキューを生成させることができる。それにより,出力バッファが同時にスイッチングした時に発生する同時スイッチングノイズを低減することができる。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
第1及び第2の信号をそれぞれ伝播する第1及び第2の信号線と,前記第1及び第2の信号線を伝播する第1及び第2の信号がそれぞれ入力される第1及び第2のバッファ回路とを有する集積回路に設けられるスキュー調整回路であって,
前記第1及び第2のバッファ回路の前段にそれぞれ設けられた第1及び第2の遅延回路と,
前記第1及び第2の信号の間のスキューを測定するスキュー測定回路と,
前記スキュー測定回路が測定した測定スキューに基づいて前記第1,第2の遅延回路の遅延量を決定し,当該決定した遅延量を前記第1,第2の遅延回路に設定する遅延調整回路とを有するスキュー調整回路。
(付記2)
付記1において,
前記遅延調整回路は,前記第1及び第2の信号の間の目標スキューと前記測定スキューの差分を,前記第1または第2の遅延回路の遅延量に決定するスキュー調整回路。
(付記3)
付記1または2において,
さらに,前記第1及び第2の信号間の目標スキューを格納するメモリを有し,
前記遅延調整回路は,前記メモリを参照して前記目標スキューを読み出し,前記測定スキューと前記目標スキューとの差分を,前記第1または第2の遅延回路の遅延量に決定するスキュー調整回路。
(付記4)
付記1または2において,
前記遅延調整回路は,前記測定スキューと前記第1,第2の信号のうちいずれが早いかのデータとに対応して,前記第1及び第2の信号間の目標スキューを生成する設定遅延量を格納するメモリを参照し,前記メモリから読み出した前記設定遅延量を前記第1,第2の遅延回路に設定するスキュー調整回路。
(付記5)
付記1または2において,
前記スキュー測定回路は,前記第1,第2の信号のいずれか一方をデータとして入力する複数のラッチ回路と,前記第1,第2の信号のいずれか他方を遅延させながらクロックとして前記複数のラッチ回路に入力するクロック供給回路とを有し,
さらに,前記第1,第2の信号を前記データ及びクロックに選択して前記スキュー測定回路に出力するセレクタを有するスキュー調整回路。
(付記6)
付記5において,
前記セレクタは,前記第1,第2の信号をそれぞれ前記データ及びクロックに選択して前記スキュー測定回路に出力したときに,前記スキュー測定回路が前記データ入力のほうが前記クロック入力より早いことを検出した場合は,前記第1,第2の信号をそれぞれ前記クロック及びデータに選択して前記スキュー測定回路に出力するスキュー調整回路。
(付記7)
第1〜第Nの信号をそれぞれ伝播する第1〜第Nの信号線と,前記第1〜第Nの信号線を
伝播する第1〜第Nの信号がそれぞれ入力される第1〜第Nのバッファ回路とを有する集積回路に設けられるスキュー調整回路であって,
前記第1〜第Nのバッファ回路の前段にそれぞれ設けられた第1〜第Nの遅延回路と,
前記第1及び第2の信号間〜第1及び第Nの信号の間のスキューをそれぞれ測定するスキュー測定回路と,
前記スキュー測定回路が測定した測定スキューに基づいて前記第1〜第Nの遅延回路の遅延量を決定し,当該決定した遅延量を前記第1〜第Nの遅延回路に設定する遅延調整回路とを有するスキュー調整回路。
(付記8)
付記7において,
前記遅延調整回路は,前記測定スキューから前記第1〜第Nの信号のうち最も遅いタイミングの信号を検出し,当該検出した最も遅いタイミングの信号を最も早いタイミングにする目標スキューにするように前記第1〜第Nの遅延回路に設定すべき遅延量を決定するスキュー調整回路。
(付記9)
付記8において,
さらに,前記第1〜第Nの信号それぞれに対応して,当該信号を最も早いタイミングにする目標スキューを格納するメモリを有し,
前記遅延調整回路は,前記メモリを参照して,前記検出した最も遅いタイミングの信号に対応する目標スキューを読み出すスキュー調整回路。
(付記10)
付記9において,
前記メモリは,書き換え可能メモリであるスキュー調整回路。
(付記11)
付記1,2,7,8のいずれかにおいて,
さらに,前記集積回路装置内のゲートの動作状態を監視する動作状態監視回路を有し,
前記遅延調整回路は,前記動作状態監視回路が検出した動作状態に応じて前記遅延量を決定するスキュー調整回路。
(付記12)
付記1〜11のいずれかにおいて,
前記監視回路と遅延調整回路の動作イネーブルと動作デセーブルを制御する制御イネーブル信号を有し,当該制御イネーブル信号に応じて前記監視回路と遅延調整回路の動作開始と動作停止とが制御されるスキュー調整回路。
(付記13)
付記4または5において,
前記メモリは書き換え可能であり,前記目標スキューまたは設定遅延量が書き換えされるスキュー調整回路。
(付記14)
第1及び第2の信号をそれぞれ伝播する第1及び第2の信号線と,前記第1及び第2の信号線を伝播する第1及び第2の信号がそれぞれ入力される第1及び第2のバッファ回路と,第3の信号がそれぞれ入力される第3及び第4のバッファ回路と,前記第3及び第4のバッファ回路に入力された第3の信号を伝搬し前記第1及び第2の信号線と同じ長さの第3及び第4の信号線とを有する集積回路に設けられるスキュー調整回路であって,
前記第1及び第2のバッファ回路の前段にそれぞれ設けられた第1及び第2の遅延回路と,
前記第3及び第4の信号線を伝搬してきた前記第3の信号の間のスキューを測定するスキュー測定回路と,
前記スキュー測定回路が測定した測定スキューに基づいて前記第1,第2の遅延回路の遅延量を決定し,当該決定した遅延量を前記第1,第2の遅延回路に設定する遅延調整回路とを有するスキュー調整回路。
(付記15)
第1及び第2の信号をそれぞれ伝播する第1及び第2の信号線と,前記第1及び第2の信号線を伝播する第1及び第2の信号がそれぞれ入力される第1及び第2のバッファ回路とを有する集積回路のスキュー調整方法であって,
前記第1及び第2の信号の間のスキューを測定し,
前記測定した測定スキューに基づいて,前記第1及び第2のバッファ回路の前段にそれぞれ設けられた第1及び第2の遅延回路の遅延量を決定し,当該決定した遅延量を前記第1,第2の遅延回路に設定するスキュー調整方法。
(付記16)
付記15において,
前記第1及び第2の信号の間の目標スキューと前記測定スキューの差分を,前記第1または第2の遅延回路の遅延量に決定するスキュー調整方法。
(付記17)
第1〜第Nの信号をそれぞれ伝播する第1〜第Nの信号線と,前記第1〜第Nの信号線を伝播する第1〜第Nの信号がそれぞれ入力される第1〜第Nのバッファ回路とを有する集積回路に設けられるスキュー調整方法であって,
前記第1及び第2の信号間〜第1及び第Nの信号の間のスキューをそれぞれ測定し,
前記測定した測定スキューに基づいて,前記第1〜第Nのバッファ回路の前段にそれぞれ設けられた第1〜第Nの遅延回路の遅延量を決定し,当該決定した遅延量を前記第1〜第Nの遅延回路に設定するスキュー調整方法。
(付記18)
付記17において,
前記測定スキューから前記第1〜第Nの信号のうち最も遅いタイミングの信号を検出し,当該検出した最も遅いタイミングの信号を最も早いタイミングにする目標スキューにするように前記第1〜第Nの遅延回路に設定すべき遅延量を決定するスキュー調整方法。