(57)【特許請求の範囲】
【請求項１】
第１及び第２の信号をそれぞれ伝播する第１及び第２の信号線と，
前記第１及び第２の信号線を伝播する第１及び第２の信号がそれぞれ入力される第１及び第２のバッファ回路と，
前記第１及び第２のバッファ回路の前段にそれぞれ設けられた第１及び第２の遅延回路と，
前記第１及び第２の遅延回路にそれぞれ入力される前記第１及び第２の信号の間のスキューを測定するスキュー測定回路と，
前記スキュー測定回路によって測定された測定スキューと，前記第１及び第２の信号間の同時スイッチングノイズを抑制するような目標スキューとの差分である遅延量であり，且つ前記第１及び第２のバッファの出力を受信する回路のセットアップタイムとホールドタイムの規格を満たすことができる遅延量以内の遅延量を，前記第１及び第２の遅延回路のいずれか一方に設定する遅延調整回路とを有する集積回路。
【請求項２】
請求項１において，
さらに，前記第１及び第２の信号間の目標スキューを格納するメモリを有し，
前記遅延調整回路は，前記メモリを参照して前記目標スキューを読み出し，前記測定スキューと前記目標スキューとの差分を，前記第１または第２の遅延回路の遅延量に決定する集積回路。
【請求項３】
請求項１において，
前記遅延調整回路は，前記測定スキューと前記第１，第２の信号のうちいずれが早いかのデータとに対応して，前記第１及び第２の信号間の目標スキューを生成する設定遅延量を格納するメモリを参照し，前記メモリから読み出した前記設定遅延量を前記第１，第２の遅延回路に設定する集積回路。
【請求項４】
請求項１において，
前記スキュー測定回路は，前記第１，第２の信号のいずれか一方をデータとして入力する複数のラッチ回路と，前記第１，第２の信号のいずれか他方を遅延させながらクロックとして前記複数のラッチ回路に入力するクロック供給回路とを有し，
さらに，前記第１，第２の信号を前記データ及びクロックに選択して前記スキュー測定回路に出力するセレクタを有する集積回路。
【請求項５】
第１〜第Nの信号をそれぞれ伝播する第１〜第Nの信号線と，
前記第１〜第Nの信号線を伝播する第１〜第Nの信号がそれぞれ入力される第１〜第Nのバッファ回路と，
前記第１〜第Nのバッファ回路の前段にそれぞれ設けられた第１〜第Nの遅延回路と，
前記第１〜第Nの遅延回路にそれぞれ入力される前記第１及び第２の信号間〜第１及び第Nの信号間のスキューをそれぞれ測定するスキュー測定回路と，
前記スキュー測定回路によって測定された測定スキューと，前記第１及び第２の信号間〜第１及び第Nの信号間の同時スイッチングノイズを抑制するような目標スキューとの差分である遅延量であり，且つ前記第１〜第Nのバッファの出力を受信する回路のセットアップタイムとホールドタイムの規格を満たすことができる遅延量以内の遅延量を，前記第１及び第２の遅延回路〜第１及び第Nの遅延回路それぞれのいずれか一方に設定する遅延調整回路とを有する集積回路。
【請求項６】
請求項５において，
前記遅延調整回路は，前記測定スキューから前記第１〜第Nの信号のうち最も遅いタイミングの信号を検出し，当該検出した最も遅いタイミングの信号を最も早いタイミングにする目標スキューにするように前記第１〜第Nの遅延回路に設定すべき遅延量を決定する集積回路。
【請求項７】
請求項６において，
さらに，前記第１〜第Nの信号それぞれに対応して，当該信号を最も早いタイミングにする目標スキューを格納するメモリを有し，
前記遅延調整回路は，前記メモリを参照して，前記検出した最も遅いタイミングの信号に対応する目標スキューを読み出す集積回路。
【請求項８】
請求項１，５，６のいずれかにおいて，
さらに，前記集積回路装置内のゲートの動作状態を監視する動作状態監視回路を有し，
前記遅延調整回路は，前記動作状態監視回路が検出した動作状態に応じて前記遅延量を決定する集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，スキュー調整回路に関する。
【背景技術】
【０００２】
集積回路装置（ＬＳＩ）は，複数の信号を外部のＬＳＩにまたは内部の他のマクロに出力する出力バッファを有する。例えば，複数ビットのデータバスの信号線は，基準クロックに応答してフリップフロップなどの複数のラッチ回路にラッチされ，ラッチ回路の出力がそれぞれ対応する出力バッファを経由して出力される。複数の信号が同時にＬレベルからＨレベルに変化すると，複数の出力バッファの電源配線に大きな電流が流れ電源ノイズを発生する。逆に，複数の信号が同時にＨレベルからＬレベルに変化すると，複数の出力バッファのグランド配線に大きな電流が流れグランドノイズを発生する。このようなノイズは同時スイッチングノイズ（ＳＳＮ：Simultaneous Switching Noise）と称され，特に，駆動能力が大きい複数の出力バッファが同時に同じ方向にスイッチングした時に大きなノイズになる。
【０００３】
このような同時スイッチングノイズを抑制する方法が，特許文献１，２，３に記載されている。いずれも，複数の信号にあらかじめ決められた遅延を加えて複数の信号にスキューを発生させ同時スイッチングを抑制しようとしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１２９６０１号公報
【特許文献２】特開２００４−３３４２７１号公報
【特許文献３】特開平９−１８１５９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら，複数の信号の出力のタイミングは様々な要因で変化するので，あらかじめ決められた遅延を加えるだけでは同時スイッチングによるノイズを適切に抑制できない場合がある。
【０００６】
たとえば，ＬＳＩの動作環境によってＬＳＩ内の動作速度が異なり内部の信号のタイミングが異なるので，出力信号に固定的な遅延回路を挿入する方法では適切に同時スイッチングノイズを低減できない場合がある。また，ＬＳＩの出力信号を受信する外部のＬＳＩにおけるＡＣスペック，例えば入力のセットアップタイムとホールドタイムなど，は，ＬＳＩによって異なるが，出力信号に固定的な遅延を挿入する方法では，そのＡＣスペックを満足できない場合がある。
【０００７】
そこで，本発明の目的は，ＬＳＩの動作状態などに適合したスキューを複数の信号に与えることができるスキュー調整回路を提供することにある。
【課題を解決するための手段】
【０００８】
スキュー調整回路の第１の側面は，第１及び第２の信号をそれぞれ伝播する第１及び第２の信号線と，前記第１及び第２の信号線を伝播する第１及び第２の信号がそれぞれ入力される第１及び第２のバッファ回路とを有する集積回路に設けられるスキュー調整回路であって，
前記第１及び第２のバッファ回路の前段にそれぞれ設けられた第１及び第２の遅延回路と，
前記第１及び第２の信号の間のスキューを測定するスキュー測定回路と，
前記スキュー測定回路が測定した測定スキューに基づいて前記第１，第２の遅延回路の遅延量を決定し，当該決定した遅延量を前記第１，第２の遅延回路に設定する遅延調整回路とを有する。
【発明の効果】
【０００９】
第１の側面によれば，複数の信号線で発生したスキューを測定し，その測定スキューに基づき決定した遅延量で各信号線の信号を遅延させて目標とする適切なスキューを発生させるので，同時スイッチングノイズを適切に抑制することができる。
【図面の簡単な説明】
【００１０】
【図１】本実施の形態におけるスキュー調整回路を有する集積回路装置を示す図である。
【図２】図１のスキュー調整回路１０によるスキュー調整の概略を示す信号波形図である。
【図３】第１の実施の形態におけるスキュー調整回路を示す図である。
【図４】信号変化監視回路２５内のセレクタ２６を示す図である。
【図５】信号変化監視回路２５内のスキュー測定回路２８を示す図である。
【図６】スキュー調整回路１０内の遅延調整回路３５を示す図である。
【図７】目標スキュー値ROM４５の構成を示す図である。
【図８】本実施の形態における測定スキューデータと目標スキューデータとの関係を示す図である。
【図９】スキュー調整回路の動作フローチャートの図である。
【図１０】スキュー調整回路の動作例を示すタイミングチャート図である。
【図１１】遅延回路と，そのタップ値と遅延量との関係とを示す図である。
【図１２】許容遅延量を説明する図である。
【図１３】第１の実施の形態におけるスキュー調整回路の第１の変型例を示す図である。
【図１４】動作状態監視回路５０の一例を示す図である。
【図１５】目標スキュー値ROMの具体例を示す図である。
【図１６】第１の実施の形態におけるスキュー調整回路の第２の変型例を示す図である。
【図１７】第１の実施の形態の第２の変型例における遅延調整回路を示す図である
【図１８】RAM７５の構成例を示す図である。
【図１９】調整すべき遅延設定値について説明する図である。
【図２０】調整すべき遅延設定値について説明する図である。
【図２１】第１の実施の形態におけるスキュー調整回路の第３の変型例を示す図である。
【図２２】RAM７５の具体例を示す図である。
【図２３】第２の実施の形態におけるスキュー調整回路の図である。
【図２４】遅延量ROM４５の具体例を示す図である。
【図２５】本実施の形態における遅延設定値演算回路３８１の演算１を示す図である。
【図２６】本実施の形態における遅延設定値演算回路３８１の演算２を示す図である。
【図２７】本実施の形態における遅延設定値演算回路３８１の演算２を示す図である。
【図２８】本実施の形態における遅延設定値演算回路３８１の演算２を示す図である。
【図２９】第２の実施の形態におけるスキュー調整回路の第１の変形例を示す図である。
【図３０】遅延量ROM４５の具体例を示す図である。
【図３１】第２の実施の形態におけるスキュー調整回路の第２の変形例を示す図である。
【図３２】第２の実施の形態におけるスキュー調整回路の第３の変形例を示す図である。
【図３３】図３のスキュー調整回路の変型例を示す図である。
【発明を実施するための形態】
【００１１】
図１は，本実施の形態におけるスキュー調整回路を有する集積回路装置を示す図である。図１には，ＬＳＩの出力部分の回路が示されている。図１において，複数のデータ信号Data#1〜Data#Nが，クロックCLKに応答して複数のフリップフロップFF#1〜FF#Nにラッチされる。ラッチされた複数のデータ信号は，出力バッファOB_1〜OB_Nを介して，出力データ信号O_Data#1〜O_Data#Nとして外部の他のＬＳＩにまたは内部の他のマクロに出力される。
【００１２】
データ信号Data#1〜Data#Nが，複数のフリップフロップと出力バッファとの間の信号配線をそれぞれ伝播する。そして，データ信号が出力バッファに入力すると，データ信号のLレベルからHレベルへの変化（Rise）またはHレベルからLレベルへの変化（Fall）に応答して，出力バッファが出力端子を駆動する。その時，出力バッファOB_1〜OB_Nに接続されている電源VDDやグランドVSSには駆動電流が流れる。
【００１３】
各出力バッファOB_1〜OB_Nに供給されるデータ信号の変化のタイミングが一致する場合，複数の出力バッファが同時に駆動動作を行う。その場合，データ信号の変化が全て同じまたは多数のデータ信号の変化が同じ場合，出力バッファの同時駆動動作により，電源VDDやグランドVSSに大電流が流れ，電源ノイズまたはグランドノイズを発生する。
【００１４】
そこで，図１では，スキュー調整回路１０が，各信号配線を伝播してきたデータ信号の変化の数やタイミングを監視し，検出した信号変化本数やタイミングに応じて，各信号配線の遅延量を決定する。そして，出力バッファOB_1〜OB_Nの直前に設けられた遅延回路DL_1〜DL_Nの遅延量を，その決定した遅延量に設定して，複数の出力バッファOB_1〜OB_Nでの駆動動作のタイミングができるだけ一致しないようにする。
【００１５】
また，スキュー調整回路１０は，LSIの動作状態，（プロセス条件，電圧条件，温度条件)の変化を監視し，その動作状態に応じて最適な遅延量を決定する。また，この遅延量は，出力データ信号O_Data#1〜O_Data#Nを入力する他のLSIのACスペック，例えばセットアップタイムなどに適合した遅延量が選ばれる。出力データ信号O_Data#1〜O_Data#Nを入力する他のマクロについても，同様にそのACスペックに適合させることもできる。
【００１６】
図２は，図１のスキュー調整回路１０によるスキュー調整の概略を示す信号波形図である。図１において，クロックCLKに応答して，複数のフリップフロップFF#1〜FF#Nがデータ信号Data#1〜Data#Nをラッチする。図２の例では，このラッチタイミングが一致している。スキュー調整回路は，フリップフロップFF#1〜FF#Nの出力の変化を監視し，図２に示されるように全てのまたは多くの信号配線において信号変化が検出された場合は，遅延回路の遅延量Delay#1〜Delay#Nを適切に制御して，出力バッファOB_1〜OB_Nに入力するデータ信号FF#1_Q〜FF#N_Qに適切なスキューを発生させる。
【００１７】
このように，スキュー調整回路１０は，信号配線に設けた遅延回路の遅延量を調整することにより，伝搬してきたデータ信号のタイミングをずらして適切なスキューを持たせる。その結果，出力バッファによる同時スイッチング動作による同時スイッチングノイズを抑制する。
【００１８】
［第１の実施の形態］
図３は，第１の実施の形態におけるスキュー調整回路を示す図である。図３には，LSIの出力部の構成が示され，２本のデータ信号Data_A，Data_Bを基準クロックRef_CLKに応答してラッチする最終段フリップフロップ１と，そのフリップフロップ１の出力端子Qにそれぞれ接続された２本の信号線SL_A〜SL_Bと，信号線をそれぞれ伝搬する信号SG_A〜SG_Bを入力し外部の他のLSIにまたはLSI内部の他のマクロに出力する出力バッファOB_A〜OB_Bとを有する。図中，出力バッファOB_A〜OB_Bには，信号を出力するバッファ回路に加えて，信号を入力する入力バッファも示されている。つまり，図中に示されたOB_A〜OB_Bは入出力バッファである。
【００１９】
スキュー調整回路１０において，２本の信号線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に応答して，スキュー調整回路１０のスキュー調整動作が始まる。
【００２１】
制御イネーブル信号Cnt_ENは，上位のシステムからイネーブル状態（Hレベル）とデセーブル状態（Lレベル）に制御されるよう構成することができる。このような構成にすることで，電源起動時などのイニシャライズ動作後に自動的にスキュー調整回路を動作させてスキュー調整した後に，スキュー調整回路の動作を停止させることができる。また，LSIの温度が上昇したときに制御イネーブル信号Cnt_ENをイネーブル状態に制御して，スキュー調整を行い，その後でセーブル状態に制御することもできる。このようにスキュー調整回路の動作と停止を制御することで無駄な消費電流の発生を回避することができる。
【００２２】
スキュー調整回路１０は，２本の信号線を伝搬する信号SG_A〜SG_BのLレベルからHレベルへのレベル変化（Rise）またはHレベルからLレベルへのレベル変化（Fall）における信号間のスキューを監視する信号変化監視回路２５を有する。この信号間のスキューが小さいとまたはゼロだと，出力バッファでの同時スイッチングによる電源ノイズやグランドノイズの原因となる。
【００２３】
信号変化監視回路２５は，第１，第２の信号線SL_A，SL_Bを伝搬する第１，第２の信号SG_A, SG_Bを，データおよびクロックのいずれかに選択するセレクタ２６と，前記セレクタ２６が出力するデータ及びクロックの間のスキューを測定するスキュー測定回路２８とを有する。後述するスキュー測定回路の構成は，データよりクロックが早いことを前提にしてスキューを測定する。したがって，スキュー測定回路２８は，第１，第２の信号の一方をデータとして他方をクロックとしてスキューを測定し，何らかのスキューが検出された場合は，そのスキューの値に加えて第１，第２の信号の他方が早いことも検出する。スキュー測定回路は，第１，第２の信号の一方をデータとし他方をクロックとしてスキューを測定し，スキューが検出されない場合は，前記セレクタに前記第１，第２の信号の一方をクロックとして他方をデータとして出力させ，再度スキューを測定する。
【００２４】
スキュー調整回路１０は，さらに遅延調整回路３５を有し，その遅延調整回路３５は，スキュー測定回路２８が測定した第１及び第２の信号間のスキュー（測定スキュー）に基づいて，前記第１，第２の遅延回路DL_A，DL_Bの遅延量を決定し，第１，第２の遅延回路DL_A，DL_Bにその決定した遅延量を設定する。第１の実施の形態における遅延調整回路３５は，スキュー調整対象の信号線SL_A，SL_Bを伝搬する第１，第２の信号SG_A,SG_Bに対する目標スキューを格納するROM４５を参照し，その読み出した目標スキューとスキュー測定回路２８が測定した測定スキューとの差分を，遅延回路DL_A,DL_Bの遅延量として決定し，それら遅延回路にその決定した遅延量を設定する。
【００２５】
図３３は，図３のスキュー調整回路の変型例を示す図である。この変型例では，データData_A，Data_Bと同様に，データData_Xを最終段フリップフロップ１が基準クロックRef_CLKに同期して取り込み，データData_A，Data_Bの信号線SL_A,SL_Bと同じ長さの信号線を伝搬させて信号変化関し回路２５に入力している。データData_Xを取り込む基準クロックRef_CLKのタイミングと，最終段フリップフロップ１から信号変化監視回路２５までの信号線とが異なるが，データData_A,Data_Bと同等のスキューを測定することができる。このようにスキュー測定精度は，図３よりも劣るが，データData_Xを２つのフリップフロップでラッチしているので，信号変化監視回路２５には，２つの信号がスキューを持つ同じ立ち上がりエッジで入力する。そのため，スキュー測定はデータData_A,Data_Bを利用する場合よりも容易になる。
【００２６】
図４は，信号変化監視回路２５内のセレクタ２６を示す図である。セレクタ２６は，スキュー調整対象の１対の信号線SL_A,SL_Bの信号のいずれか一方をデータに他方をクロックに選択してスキュー測定回路２８に出力する。スキュー測定回路２８がデータがクロックより早いなどの理由で適切にスキューを検出できない場合は，セレクタ２６は，上記信号線SL_A,SL_Bの信号を入れ替えて，上記一方をクロックに他方をデータに選択してスキュー測定回路２８に出力する。その場合，入れ替えたことを示すセカンドフラグ2nd_Flagを「１」にして，スキュー測定回路２８に通知する。これによりスキュー測定回路２８は，セカンドフラグ2nd_Flagを参照することで，第１，第２の信号SG_A,SG_Bのいずれがデータとしてまたはクロックとして出力されたかを判別することができる。
【００２７】
セレクタ２６は，セカンドフラグ2nd_Flagに基づいて信号線SL_A,SL_Bの信号SG_A,SG_Bのいずれか一方をデータ２７７に選択し，いずれか他方をクロック２７８に選択するセレクタ２６１，２６２を有する。さらに，セレクタ２６は，信号SG_A,SG_Bが共に「０」（Lレベル）を検出するアンドゲート２６３と，制御イネーブル信号Cnt_ENが「１」（Hレベル）になった後基準クロックRef_CLKに応答して，両信号SG_A,SG_Bが共に立ち上がることを検出し，同時立ち上がり検出信号S_ENを「１」にする同時立ち上がり検出回路２６７を有する。また，セカンドフラグ2nd_Flagとリニューフラグrenew_Flagを生成するフラグ生成回路２６８と，１回目のスキュー測定時と２回目のスキュー測定時に同時立ち上がり検出信号S_ENに基づいてリニューイネーブル信号renew_ENを生成するANDゲート２７４，２７５，ORゲート２７６とを有する。また遅延調整回路３５から，スキューの測定結果dcba_reg(a)と，更新完了信号renew_compとが供給され，これらの信号に基づいて１回目のスキュー測定と２回目のスキュー測定に対応した制御信号renew_EN，2nd_Flag，renew_Flagが生成される。これらの具体的な動作は，後に詳述する。
【００２８】
図５は，信号変化監視回路２５内のスキュー測定回路２８を示す図である。図５（Ａ）に示されるとおり，スキュー測定回路２８は，データ２７７よりクロック２７８が早いタイミングを有することを前提にして両信号間のスキューを測定する。
【００２９】
図５（Ｂ）はスキュー測定回路２８を示し，図５（Ｃ）はその回路の動作を示す信号波形を示す。スキュー測定回路２８は，データ２７７をそれぞれのデータ入力端子Ｄに入力する複数のラッチ回路２８１〜２８４と，クロック２７８を遅延させながらラッチ回路のクロック端子に入力するクロック供給回路２８５とを有する。クロック供給回路２８５は，複数のバッファを有し，各ノードの信号Ｘ，Ｙ，Ｚがラッチ回路２８２，２８３，２８４のクロック端子に入力される。
【００３０】
図５（Ｃ）に示されるとおり，両信号SG_A，SG_Bのいずれかであるクロック２７８とデータ２７７間のスキューは，ラッチ回路２８１〜２８４のデータ出力Qが出力する測定スキューデータ２８６（dcba）として出力される。図５（Ｃ）の例では，測定スキューデータdcba=1100である。この測定スキューデータdcbaは，ゼロが多いほどスキュー値が大きいことを意味する。したがって，測定スキューデータdcba＝1100のときのほうが，dcba=1000の時よりもスキュー値が小さくなっている。このように測定スキューデータdcbaの大小関係が，スキュー値の大小関係と逆になっていることは，後述する遅延調整回路において留意されるべきである。
【００３１】
図６は，スキュー調整回路１０内の遅延調整回路３５を示す図である。測定スキューデータdcbaを保持する測定スキュー保持レジスタ３５１，３５２と，目標スキュー値格納ROM４５から読み出した目標スキュー値と，測定スキュー保持レジスタ３５２の測定スキュー値とを比較し，それらの差分を検出するスキュー比較回路３５５と，検出された差分が遅延として設定される遅延設定レジスタ３６２とを有する。この遅延設定レジスタ３６２に設定された遅延量に基づいて，遅延回路DL_A,DL_Bは両信号SG_A,SG_Bを遅延させて，適切なスキューを発生させる。また，遅延調整回路３５は，リニューイネーブル信号renew_ENに応答してタイミング信号を生成するタイミング生成回路３５３と，目標スキュー値ROM４５へのアドレスを管理するアドレス管理テーブル３６３と，読み出しデータR_dataをラッチするラッチ回路３５４とを有する。また，スキュー比較回路３５５内の差分検出は，排他的論理和回路３５７と差分カウンタ３５８とで行われる。
【００３２】
図７は，目標スキュー値ROM４５の構成を示す図である。アドレスは，同時動作する信号グループであってスキュー調整対象の信号グループGrと，信号対の組み合わせとであり，それに対応するデータは，目標スキュー値である。この目標スキュー値は，測定スキューデータと同様の形式であり，図５のスキュー測定回路が出力する形式のデータn−dcbaである。したがって，測定スキュー値とその測定スキューデータdcbaと同様に，目標スキュー値とROM内の目標スキューデータn-dcbaとは大小関係が逆になる。
【００３３】
図８は，本実施の形態における測定スキューデータと目標スキューデータとの関係を示す図である。前述のとおり，スキュー測定回路２８が出力する測定スキューデータdcbaの値は，測定スキューの大小関係とは逆の関係になる。同様に，ROM４５から出力される目標スキューデータdcbaの値も，目標スキューの大小関係とは逆の関係になる。図８に示される例では，測定スキューデータdcba＝1000に対して，目標スキューデータdcba=1100である。図８中の波形から理解できるとおり，測定スキューよりも目標スキューのほうが小さい。ただし，データ同士の比較では測定スキューデータdcba＝1000＜目標スキューデータdcba=1100となっている。
【００３４】
図９は，スキュー調整回路の動作フローチャートの図である。この動作フローチャートにしたがって図４〜図６のスキュー調整動作の概略を説明する。まず，スキュー調整回路のシステムのイニシャライズ動作において，安定したシステムクロックが入力され安定した内部の基準クロックRef_CLKが生成されると，制御イネーブル信号Cnt_ENはHレベルになる（S10）。この制御イネーブル信号Cnt_EN=Hに応答して，スキュー調整回路１０のスキュー調整動作が始まる。
【００３５】
セレクタ２６は，１回目のスキュー測定か否かに応じて，１回目であれば信号SG_Aをデータに信号SG_Bをクロックに設定する（S14）。また，２回目であれば信号SG_Aをクロックに信号SG_Bをデータに設定する（S16）。具体的には，１回目であればセカンドフラグ2nd_Flag＝０となり，図４のセレクタ２６１，２６２が信号SG_Aをデータ２７７に信号SG_Bをクロック２７８にそれぞれ選択する。２回目であればセカンドフラグ2nd_Flag＝１となり，上記と逆の選択をする。
【００３６】
同時立ち上がり検出回路２６７が，信号SG_AとSG_Bの立ち上がり変化を検出すると，同時立ち上がり検出信号S_ENを「１」にする（S18）。すなわち，アンドゲート２６３が両信号SG_AとSG_BのLレベルを検出し，ラッチ回路２６４が基準クロックRef_CLKに応答してそれをラッチし，その後アンドゲート２６５が両信号SG_AとSG_BのHレベルを検出するとラッチ回路２６６が次の基準クロックRef_CLKに応答してそれをラッチし，同時立ち上がり検出信号S_EN＝１になる。
【００３７】
前回のスキュー調整が完了した時点で，更新完了信号renew_comp＝１によりセカンドフラグ2nd_Flag＝０，リニューフラグrenew＿Flag＝０にリセットされている。そして，１回目のスキュー測定の場合，既にスキュー測定回路２８が測定した測定スキューデータdcbaを格納する測定スキュー保持レジスタ３５１の保持データdcba_regの最下位データdcba_reg(a)がdcba_reg(a)＝０であれば，アンドゲート２７４がS_EN=1に応答してリニューイネーブル信号renew_EN＝１にする。または，２回目のスキュー測定の場合，保持データdcba_reg(a)に係わらずアンドゲート２７５がS_EN=1に応答してリニューイネーブル信号renew_EN＝１にする。
【００３８】
図９にもどり，スキュー測定回路２８により検出される測定スキューデータdcba=1111の場合は（S20），２回目のスキュー測定に移行する（S22）。１回目の測定で測定スキューデータdcba≠1111の場合，または２回目のスキュー測定時であれば，測定スキューデータdcbaがリニューイネーブル信号renew_EN＝１に応答して測定スキュー保持レジスタ３５２がそのデータを保持する。
【００３９】
１回目，２回目のスキュー測定においてリニューイネーブル信号renew_EN＝１になると，図６の遅延調整回路３５が動作を開始し，スキュー比較回路３５５が，ROM４５から読み出した目標スキュー値と保持している測定スキュー値とを比較し，その差分を演算する（S28）。さらに，スキュー比較回路３５５内の判別ユニット３５９が，セカンドフラグ2nd_Flagと比較結果S356とに基づいて，セレクタ３６０，３６１の選択信号を生成する。また，XOR３５７と差分カウンタ３５８が測定スキューデータと目標スキューデータの「０」の数の差をカウントし，差分値を求める。この差分値S358は，セレクタ３６０，３６１を介して，遅延設定レジスタ３６２に遅延回路の遅延量に対応するタップ値として設定される（S30）。
【００４０】
遅延設定レジスタ３６２は，リニューイネーブル信号renew_EN＝１に応答してリセットされ，インバータ３６３の出力である基準クロックRef_CLKの１８０°位相のタイミングで，差分値がセットされる。
【００４１】
判別ユニット３５９の論理値表が図６中に示されている。これによれば，１回目のスキュー測定時において（2nd_Flag=0），測定スキューデータdcba＜目標スキューデータdcbaの場合，つまり測定スキュー＞目標スキューの場合は，図８の場合であり，タイミングが早い信号SG_B側に差分を遅延量として設定し，タイミングが遅い信号SG_A側には遅延量ゼロに設定する。不等号が逆の場合は，上記と逆に，タイミングが早い信号SG_B側に遅延量ゼロを設定し，タイミングが遅い信号SG_A側に差分量を遅延量として設定する。２回目のスキュー測定時においては（2nd_Flag=1），信号SG_A,SG_Bが逆の関係になる。
【００４２】
図１０は，スキュー調整回路の動作例を示すタイミングチャート図である。この動作例では，最初のスキュー調整では１回目のスキュー測定でスキューが測定されて遅延回路の遅延量が設定され，次のスキュー調整では１回目のスキュー測定ではスキューが測定できず(dcba=1111)２回目のスキュー測定でスキューが測定される。
【００４３】
時間ｔ０では既にイニシャライズが完了し，制御イネーブル信号cnt_EN＝１になっている。また，前回の遅延量設定完了に伴い更新完了信号renew_comp＝１によりセレクタ回路２６内のラッチ回路２７２，２７３はリセットされ，2nd_Flag=0，renew_Flag=0になっている。
【００４４】
時間ｔ１でデータ信号A,Bが共に立ち上がると，同時立ち上がり検出回路２６７でLL_Flag=1になり，時間ｔ２で基準クロックRef_CLKの立ち上がりに応答して同時イネーブル信号S_EN＝１になる。スキュー測定回路２８は常時２つの信号のスキュー差を測定しており，時間ｔ２で保持されているデータは，測定スキューデータdcba_reg=1100，dcba_reg(a)＝０であるので，アンドゲート２７４によりリニューイネーブル信号renew_EN＝１になる。dcba_reg(a)＝０は信号BがAより早いタイミングであることを意味し，１回目の測定が適切に行われたことを意味する。
【００４５】
そして，時間ｔ３で，このrenew_EN＝１に応答して，測定スキュー保持レジスタ３５２がdcba_reg=1100をラッチし，同時にフラグ生成回路２６８内のアンドゲート２７０の出力＝１によりラッチ回路２７３がリニューフラグrenew_Flag=1にする。
【００４６】
図６の遅延調整回路３５内のタイミング生成回路３５３では，リニューフラグrenew_Flag=1により，時間ｔ５でROM４５に出力イネーブル信号xOE=0が生成され，アドレス管理テーブル３６３から信号A,Bの組み合わせを示すアドレスが出力され，時間ｔ７にてROM４５内の目標スキューデータR_dataが読み出される。
【００４７】
その後は，遅延調整回路３５内のスキュー比較回路３５５が比較動作と差分カウント動作を行い，更新完了信号renew_comp＝１のタイミングで，遅延設定レジスタ３６２に差分に対応する遅延量が判別ユニットの判別信号に応じて設定される。これにより，最初のスキュー調整が完了する。
【００４８】
次に，時間t1０での信号A,Bの立ち上がりを検出し，時間ｔ１１で同時立ち上がり検出信号S_EN=1となる。しかし，最初のスキュー調整中を示すリニューフラグrenew_Flag=1により，セレクタ内のアンドゲート２７４，２７５はリニューイネーブル信号renew_ENを「１」にしない。
【００４９】
次の，時間ｔ１３で信号A,Bの立ち上がりを検出し，時間ｔ１４で同時立ち上がり検出信号S_EN=1となり１回目のスキュー測定が行われるが，測定スキューデータdcba_reg(a)=1であるため，セレクタのアンドゲート２７４の出力は「０」のままでリニューイネーブル信号renew_ENを「１」にしない。そして，時間ｔ１５で測定スキューデータdcba_reg(a)=1により基準クロックRef_CLKに応答して，セレクタ２６のアンドゲート２６９によりラッチ回路２７２が「１」をロードしてセカンドフラグ2nd_Flag＝１にする。これで２回目のスキュー測定が始まる。
【００５０】
時間ｔ１８で信号A,Bの立ち上がりを検出し，時間ｔ１９で同時立ち上がり検出信号S_EN=1となり，セレクタ２６のアンドゲート２７５によりリニューイネーブル信号renew_EN＝１になり，アンドゲート２７１とラッチ回路２７３により時間ｔ２０の次の基準クロックRef_CLKに応答してリニューフラグrenew_Flag=1になる。これにより，遅延制御回路３５は，２回目の測定スキューデータと，ROM４５から読み出した目標スキューデータとに基づいて，遅延量を設定する。この遅延量の設定動作は，前述したのと同じである。
【００５１】
図１１は，遅延回路と，そのタップ値と遅延量との関係とを示す図である。遅延回路DL_#は，入力するデータ信号Dataを遅延させる複数のバッファからなるバッファ群３１３と，バッファ群３１３内の複数のノードを設定コードS_CODEに基づいて選択するセレクタ３１５とを有する。図１１中には，セレクタのタップ値と設定コードS_CODEとの対応表が示され，設定コードS_CODEが小さいほど，つまりタップ値が小さいほど，遅延回路DL_#により挿入される遅延量が小さく，逆の場合は遅延量が多くなる。８つの遅延回路DL_0〜DL_7に対する各４ビットの設定コード S_CODE が，図６の遅延量設定レジスタ３６１に設定される。
【００５２】
本実施の形態においては，信号線SL_A,SL_Bの信号の同時変化を検出した場合，その信号のスキューを測定し，各信号線に設けた遅延回路の遅延量を調整して信号間のスキューを適切に調整し，出力バッファによる同時スイッチングを抑制する。ただし，この遅延量は，出力バッファの出力を供給される他のLSIやマクロの入力回路のACスペックに適合した許容遅延量を超えることは許されない。したがって，遅延量ROM内に設定された遅延量は，このACスペックに適合した許容遅延量未満に設定されている。
【００５３】
図１２は，許容遅延量を説明する図である。図中，LSIの内部の基準クロックRef_CLKと，複数のLSIに対するシステムクロックS_CLKとが示されている。これらのクロックは，  同期したクロックであり  同じ周期Tを有するが，図示されるとおり両クロック間には所定の位相差ｄTが存在する場合がある。
【００５４】
図３において，LSIの出力段では，基準クロックRef_CLKに応答して最終段フリップフロップ１がデータ信号をラッチする。そして，信号線SLと出力バッファOBを経て，データ信号が後段の他のLSIまたは他のマクロに出力される。後段の他のLSIまたは他のマクロの入力回路は，システムクロックS_CLKの立ち上がりエッジで入力信号を取り込むが，入力回路にはセットアップタイムTsとホールドタイムThがACスペックとして決められている。
【００５５】
図１２中には，データ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の許容遅延値未満の遅延量が遅延量ROM４５に設定される。その結果，スキュー調整された出力信号が，後段のLSIやマクロの入力回路にそのセットアップタイムTsを満たすタイミングで供給されることが保証される。
【００５７】
上記のスキュー測定回路２８は，２つの信号SG_A,SG_Bのいずれかをクロック，いずれかをデータに選択してスキューを測定するが，スキュー測定回路２８内に図５に示したスキュー測定回路を２組設けることで，２つの信号SG_A,SG_Bのいずれが早いタイミングであっても，両信号間のスキューを同時に測定することができる。その場合は，両スキュー測定回路の測定結果dcbaを参照すれば，いずれの信号のタイミングが早いかも検出可能である。本実施の形態のスキュー調整回路はそのように２組のスキュー測定回路を有してもよい。
【００５８】
［第１の実施の形態（２）］
図１３は，第１の実施の形態におけるスキュー調整回路の第１の変型例を示す図である。図３のスキュー調整回路１０との相違点は，動作状態監視回路５０を有することと，目標スキュー値ROM４５が，スキュー調整対象信号グループGrとスキュー調整対象信号対に加えて，動作状態監視回路５０が検出する動作速度とに対応する目標スキュー値を格納していることである。遅延回路DL_A，DL_Bは図１１と同じであり，セレクタ２６は図４と同じであり，スキュー測定回路２８は図５と同じであり，遅延調整回路３５も図６と同じである。ただし，遅延調整回路３５内のアドレス管理テーブル３６３は，動作状態監視回路５０からの動作速度もアドレスに加える。
【００５９】
この変型例では，動作状態監視回路５０が，動作状態（プロセス条件，温度条件，電圧条件のばらつき）によって生じるLSI内のゲートの速度変化を監視し，その速度が高速の場合の動作状態信号Fastと，典型的な場合の動作状態信号Typicalと，低速の場合の動作状態信号Slowとを出力する。そして，この動作速度に対応して，ROM４５は目標スキュー値を格納しているので，動作状態に適した遅延量を遅延回路に設定することができる。
【００６０】
具体的には，典型的な速度の場合の遅延量に比べると，高速の場合は遅延回路DL内の遅延量をより多くし，つまり遅延バッファの数を増やし，絶対的な遅延時間，つまり絶対的なスキューの大きさを典型的な速度の場合と同等にする。逆に，低速の場合は遅延回路DL内の遅延量をより少なくして，つまり遅延バッファの数を減らし，絶対的な遅延時間，つまり絶対的なスキューの大きさを典型的な速度の場合と同等にする。
【００６１】
動作速度が高速になったり低速になったりとばらつく原因は，第１にデバイス製造時の狙い値に対して生じる製造ばらつきなどのプロセス条件，，第２に電源電圧が高いか低いか，第３に温度が高いか低いかなどである。前述のとおり，遅延回路の遅延量は，同時スイッチングノイズ低減のための適切なスキューを与える値であって，許容遅延量未満の値に設定される必要がある。したがって，動作速度のばらつきに対応して，遅延回路の遅延バッファの数を変更することが望ましい。
【００６２】
図１４は，動作状態監視回路５０の一例を示す図である。動作状態監視回路は，位相０°のクロックCLK0を遅延して位相９０°のクロックCLK90を出力する遅延回路５０１と，２つのクロックCLK0,CLK90の位相差を検出し，その位相差が９０°になるように遅延回路の遅延制御信号５０７を生成する遅延制御回路５０３とを有する。遅延回路５０１は，例えば図１１に示した遅延回路と同等の構成である。したがって，遅延制御信号５０７は，LSIのゲート速度が高速であればより多くのバッファを伝搬した信号を選択する制御信号になり，低速であればより少ないバッファを伝搬した信号を選択する制御信号になる。図１４の例では，この遅延制御信号５０７がデコーダ５０５でデコードされ，３種類の動作状態信号Fast，Typical，Slowに変換される。
【００６３】
図６の遅延調整回路３５に示されるとおり，本実施の形態では，動作状態監視回路５０が出力する動作状態信号がアドレス管理テーブル３６３にも出力される。遅延調整回路３５は，ROM４５を参照する時のアドレスとして，スキュー調整対象信号グループGrとスキュー調整対象信号対に加えて，動作状態信号Fast，Typical，Slowを使用する。
【００６４】
図１５は，目標スキュー値ROM４５の具体例を示す図である。このROM４５の場合，アドレスとしてスキュー調整対象信号グループGrとスキュー調整対象信号対に加えて，動作状態信号Fast，Typical，Slowを有する。そして，データとしては信号対の目標となる目標スキューデータn-dcbaである。つまり，図７のデータが，動作状態信号Fast，Typical，Slowそれぞれに対して格納されている。
【００６５】
ただし，図１５に示されるとおり，動作状態が高速Fastの場合の目標スキューデータは，典型速度Typicalの場合よりも「０」が多く設定され，低速Slowの場合の目標スキューデータは，典型速度Typicalの場合よりも「０」が少なく設定されている。つまり，絶対的な目標スキューは動作速度にかかわらずほぼ一定になるようにされている。この遅延量ROM４５を参照することで，動作状態に対応した適切な目標スキューデータを，遅延調整回路に読み出すことができる。
【００６６】
ROM４５は，書換可能なメモリであってもよい。書換可能なメモリであれば，最適な目標スキュー値をそのLSIの動作環境，例えば出力信号を入力する他のLSIのACスペックなど，に対応して書き換えることができ，最適なスキュー調整が可能である。
【００６７】
［第１の実施の形態（３）］
図１６は，第１の実施の形態におけるスキュー調整回路の第２の変型例を示す図である。スキュー調整回路１０は，図３と同様に，セレクタ２６とスキュー測定回路２８を有する信号変化監視回路２５と，遅延調整回路３７と，遅延回路DL_A，DL_Bとを有する。信号変化監視回路２５のセレクタ２６とスキュー測定回路２８は図４，５の構成と同じであり，遅延回路も図１１と同じである。
【００６８】
ただし，図３と異なり，測定スキューに応じた調整すべき遅延量が，LSIの外部に設けられたRAM７５に格納され，そのRAM７５内の調整すべき遅延量の設定は，外部のCPUによって行われる。それに伴って，この第２の変型例の遅延調整回路３７は，図６の構成ではなく，図１７の構成を有する。また，外部のCPUバスとのインターフェースをとるCPUインターフェース６２が設けられ，遅延調整回路３７とCPUとのインターフェース動作が行われる。
【００６９】
なお，CPUは，RAM７５に適宜最適な遅延量をダウンロードする。このようにRAM７５の遅延量を書換可能にすることで，例えば，出力バッファから出力される信号を入力する他のLSIや他のマクロのACスペックに適合した遅延量を動的に設定することができる。
【００７０】
また，RAM７５やCPUは，共通のLSI内に設けられていても良い。つまり，LSIがシステムLSIの場合，そのLSI内にはCPUやRAMが設けられているので，それらを利用しても良い。
【００７１】
図１７は，第１の実施の形態の第２の変型例における遅延調整回路を示す図である。遅延調整回路３７は，測定スキューレジスタ３７０と，遅延設定値レジスタ３７１と，遅延設定レジスタ３７３とを有する。測定スキューレジスタ３７０には，セレクタ２６から供給されるリニューイネーブル信号renew_EN＝１がスキュー有効ビットとして保持され，セカンドフラグ2nd_Flagが判定モード信号として保持され，スキュー測定回路２８から出力される測定スキューデータが保持される。これらが保持されたときにスキュー有効ビットが有効「１」にされる。
【００７２】
CPUは，測定スキューレジスタ３７０内のスキュー有効ビットを監視し，有効「１」になった時に，判定モード信号と測定スキューデータとをアドレスにして，RAM７５から信号A,Bに対する調整遅延データを読み出し，遅延設定値レジスタ３７１に格納し，遅延切替ビットを「１」にする。この遅延切替ビット「１」に応答して，遅延設定レジスタ３７３は，信号Aに対する遅延設定値と信号Bに対する遅延設定値とを，基準クロックRef_CLKの反転タイミングに応答して取り込む。その結果，遅延回路DL_A,DL_Bにその遅延設定値が設定される。また，遅延切替ビット「１」に応答して，測定スキューレジスタ３７０内のスキュー有効ビットは「０」にクリアされる。
【００７３】
図１８は，調整すべき遅延量を格納するRAM７５の構成例を示す図である。RAM７５のアドレスは，グループGrと，信号組み合わせ情報と，測定スキューデータと，判定モード（１回目または２回目）と，設定すべき信号（設定信号）である。それに対して，データには，設定信号に設定すべき遅延量を示す遅延設定値が格納されている。図中，表の右側に遅延設定値による遅延調整される波形が示されている。
【００７４】
この遅延設定値は，測定スキューデータに対応して，目標スキューを発生させるために遅延回路DL_A,DL_Bで調整すべき遅延量に対応し，RAM７５内のデータは，図１１の遅延回路の設定コードS_CODEである。図１１に示されるとおり，設定コードS_CODEが小さいほど挿入すべき遅延量が小さい。したがって，RAM７５内の遅延設定値は，前述の測定スキューデータと目標スキューデータとの差分に対応する。また，遅延設定値は，判定モードが１回目（1st）か２回目（2nd）かによって，挿入すべき信号がA,B逆になる。
【００７５】
図１９，図２０は，調整すべき遅延設定値について説明する図である。図１９には，スキュー測定回路２８に対応して，測定スキューと目標スキューとを示す信号A,Bの波形が示されている。測定スキューデータdcba=1000に対して，目標スキューデータdcba=1100である。したがって，この目標スキューを実現するためには，信号B側に遅延量「１」を挿入し，信号A側には遅延量ゼロでよいことが理解できる。図１８のRAM７５のデータは，この目標スキューを実現するために必要な遅延量が信号A,Bそれぞれに対して設定すべき遅延回路の設定コードS_CODEである。
【００７６】
図２０には，RAM７５の具体例と遅延回路２８の遅延設定値とが示されている。図１９に示したような測定スキューと目標スキューの場合は，信号A側には遅延量ゼロ，信号B側には遅延量「１」が挿入されるべきである。よって，RAM７５の判定モード「1st」に信号Aに対しては遅延設定値「0000」が，信号Bに対して遅延設定値「0001」が格納されている。その結果，信号A側の遅延回路２８には遅延設定値「0000」に対応するタップが選択され，信号B側の遅延回路２８には遅延設定値「0001」に対応するタップが選択される。信号B側を遅延量「１」だけ遅延させることにより，信号A,B間のスキューは目標スキューと等しくなる。
【００７７】
図１８に戻り，判定モード「1st」側には，測定スキューデータdcba=1000の場合に加えて，dcba=1100，dcba=1110の場合の遅延設定値も示されている。測定スキューデータdcba=1100の場合は，信号A，B間には目標スキューが発生しているので，設定すべき遅延設定値は共にゼロである。また，測定スキューデータdcba=1110の場合は，信号Aに挿入すべき遅延量「１」が信号Bに挿入すべき遅延量「０」がそれぞれ遅延設定値として格納されている。判定モード「2nd」の場合は，上記の判定モード「1st」とは信号A,Bが逆の関係になる。
【００７８】
［第１の実施の形態（４）］
図２１は，第１の実施の形態におけるスキュー調整回路の第３の変型例を示す図である。図１６のスキュー調整回路１０との相違点は，動作状態監視回路５０を有することと，RAM７５がスキュー調整対象信号グループGrとスキュー調整対象信号対に加えて，動作状態監視回路５０が検出する動作速度に対応する調整すべき遅延設定値を格納していることである。遅延回路DL_A，DL_Bは図１１と同じであり，セレクタ２６は図４と同じであり，スキュー測定回路２８は図５と同じであり，遅延調整回路３７も図１７と同じである。
【００７９】
図１７に示した遅延調整回路３７は，動作状態監視回路５０からの動作状態信号を測定スキューレジスタ３７０に格納する。そして，CPUは，この動作状態信号に基づいて，RAM７５内の遅延設定値を読み出し遅延設定値レジスタ３７１に格納する。なお，CPUが，判定モードと測定スキューデータとに応じた遅延設定値をRAM７５から読み出すのは，前述したとおりである。
【００８０】
図２２は，RAM７５の具体例を示す図である。この具体例には，図１８のメモリ構成例に示した遅延設定値が，動作状態信号Fast, Typical, Slowに対応して格納されている。しかも，動作状態がSlowの場合に比較して，Typical, Fastの場合の遅延設定値はそれぞれ２倍，３倍などになっている。それにより，動作状態にかかわらず，信号A，Bに同じ長さの目標スキューを生成させることができる。
【００８１】
［第２の実施の形態］
図２３は，第２の実施の形態におけるスキュー調整回路の図である。第２の実施の形態のスキュー調整回路は，N本の信号線SL_A〜SL_Nの信号のスキューを測定し，目標のスキューになるように各信号線に設けた遅延回路DL_A〜DL_Nの遅延量を調整する。
【００８２】
そのために，スキュー調整回路１０は，セレクタ２６とスキュー測定回路２８を，信号線SL_AとSL_B間，SL_AとSL_C間，さらにSL_Aとそれ以外の信号SL_K（K=D〜N）間のスキューを測定するためにN-1個有する。そして，遅延調整回路３８は，調整対象の信号組み合わせに対応する目標スキューをROM４５から読み出して，測定スキューと目標スキューとから遅延設定値を演算する遅延設定値演算回路３８１を有する。さらに，遅延調整回路３８は，N本の信号間の目標スキューをROM４５から順次読み出すために，アクセス競合が起きないようにラウンドロビン方式での読み出し制御をするROMアクセス競合制御回路３８２を有する。
【００８３】
いま仮に，４本の信号線SL_A,B,C,Dに対してスキュー調整する場合を例にして説明する。信号線が４本であるので，セレクタ２６，スキュー測定回路２８は，３セット必要になる。それぞれのセレクタ２６，スキュー測定回路２８は，信号A,B間，信号A,C間，信号A,D間のスキューを測定する。遅延調整回路３８内の遅延設定値演算回路３８１は，その測定スキューからどの信号が最も遅いタイミングであるかを特定する。これは，信号A,B間，信号A,C間，信号A,D間の測定スキューとそれが１回目か２回目の判定かの情報から簡単に特定できる。
【００８４】
ROM４５には，４つの信号A,B,C,Dに対する目標スキューのデータが格納されている。ただし，目標スキューデータは，信号Aが最も早い場合，信号Bが最も早い場合，信号Cが最も早い場合，信号Dが最も早い場合それぞれの目標スキューデータである。そこで，遅延設定値演算回路３８１が，測定スキューから検出した最も遅いタイミングの信号を最も早くする目標スキューデータをROM４５から読み出す。そして，遅延設定値演算回路３８１は，信号A,B間，信号A,C間，信号A,D間の測定スキューから得られた信号A,B,C,Dのタイミング関係を，ROM４５から読み出した目標スキューに調整するために必要な各信号の遅延量を演算し，その調整すべき遅延量を遅延設定値として各遅延回路の遅延設定レジスタ（図１７の３７３）に設定する。
【００８５】
図２４は，ROM４５の具体例を示す図である。このROM４５のアドレスは，同時動作する信号グループGrと，信号組み合わせと，測定スキューから検出された最も遅い信号（最遅）である。一方，ROM４５のデータは，最も遅い信号を最も早いタイミングにする各信号間の目標スキューである。図２４には，最も遅い信号Aについてのみ示されているが，実際のデータは，最も遅い信号となるA,B,C,Dの４つの場合それぞれに対して，各信号間の目標スキューを持つ必要がある。
【００８６】
図２５は，本実施の形態における遅延設定値演算回路３８１の演算１を示す図である。演算１は，判定モードと測定スキューとから４本の信号線の信号の順番を検出する。４本の信号の順番は，理論的には２４通り存在するが，図３５には１６通りが示されている。例えば，（ａ）は判定モードが1st-1st-1stの場合であり，この場合は信号Aが一番遅いことが検出できる。さらに，測定スキューを比較することにより，他の信号B,C,Dの順番がそれぞれ検出できる。（ｂ）（ｃ）（ｄ）の場合も同様である。
【００８７】
図２６，図２７，図２８は，本実施の形態における遅延設定値演算回路３８１の演算２を示す図である。演算２は，測定結果から検出した最も遅い信号を最も早くする目標スキューにするための，各信号に挿入すべき遅延量を演算する。測定スキューから４つの信号のタイミング関係が分かっているので，その４つの信号のうち最も遅い信号を，目標スキューでは最も早い信号にするようにする。この場合，最も遅かった信号には調整遅延量はゼロが設定され，残りの信号には目標スキューになるように必要な調整遅延量が簡単に演算できる。
【００８８】
図２６，図２７，図２８には，その演算例が示されている。図２６の（１）は信号Aが最も遅い場合の各信号の遅延設定値を求める演算式を示す。（１）の右側に測定スキュー結果に基づく信号波形と，目標スキューに基づく信号波形とが示されている。この場合は，信号Aは設定遅延値ゼロである。信号Bには，AB間の測定スキューの「０」の数（遅延量）と，AB間の目標スキューの「０」の数とを加算した遅延量を設定遅延値とする。信号Cには，AC間の測定スキューの「０」の数（遅延量）と，AC間の目標スキューの「０」の数とを加算した遅延量を設定遅延値とする。信号Dには，AD間の測定スキューの「０」の数（遅延量）と，AD間の目標スキューの「０」の数とを加算した遅延量を設定遅延値とする。
【００８９】
図２７の（２）は信号Bが最も遅い場合の遅延設定値の演算例である。信号Bは設定遅延値ゼロである。そして，残りの信号A,C,Dに設定すべき遅延値は，図中の演算式により求めることができる。
【００９０】
まず信号Aは，AB間の測定スキューの「０」の数に，AB間の目標スキューの「０」の数を加算した遅延量を設定遅延値とする。信号Cは，信号A,Cのスキュー関係によって，２種類の演算式を使い分ける必要がある。信号Cより信号Aが遅い場合には，AB間の測定スキューの「０」の数に，AC間の測定スキューの「０」の数を加算し，さらにBC間の目標スキューの「０」の数を加算した遅延量を設定遅延値とする。逆に信号Cより信号Aが早い場合には，AB間の測定スキューの「０」の数から，AC間の測定スキューの「０」の数を減算し，BC間の目標スキューの「０」の数を加算した遅延量を設定遅延値とする。信号Dも同様に，信号A,Dのスキュー関係によって，２種類の演算式を使い分ける必要がある。信号Dより信号Aが遅い場合には，AB間の測定スキューの「０」の数に，AD間の測定スキューの「０」の数を加算し，さらにBD間の目標スキューの「０」の数を加算した遅延量を設定遅延値とする。逆に信号Dより信号Aが早い場合には，AB間の測定スキューの「０」の数から，AD間の測定スキューの「０」の数を減算し，BD間の目標スキューの「０」の数を加算した遅延量を設定遅延値とする。
【００９１】
図２８の（３）の信号Cが最も遅い場合と（４）の信号Dが最も遅い場合も，図２７の（２）と同様の演算式により設定すべき遅延値を求めることができる。
【００９２】
［第２の実施の形態（２）］
図２９は，第２の実施の形態におけるスキュー調整回路の第１の変型例を示す図である。図２３のスキュー調整回路１０との相違点は，動作状態監視回路５０を有することと，目標スキュー値ROM４５がスキュー調整対象信号グループGrと最も遅い信号と信号組み合わせに加えて，動作状態監視回路５０が検出する動作速度とに対応する目標スキュー値を格納していることである。遅延回路は図１１と同じであり，セレクタ２６は図４と同じであり，スキュー測定回路２８は図５と同じであり，遅延調整回路３８も図２３，２５，２６と同じである。
【００９３】
図３０は，目標スキュー値ROM４５の具体例の図である。このROM４５は，図２４のアドレスに加えて，動作状態信号Fast, Typical, Slowが追加されている。動作状態に対する目標スキューの設定は，図１５と同様に，動作状態Slowのほうが目標スキューのゼロの数が少なく，動作状態Fastのほうが目標スキューのゼロの数が多い。
【００９４】
［第２の実施の形態（３）］
図３１は，第２の実施の形態におけるスキュー調整回路の第２の変型例を示す図である。このスキュー調整回路１０では，LSI外部またはLSI内部のRAMのデータをCPUが読み出して，CPUインターフェース６２を介して遅延調整回路３９内の目標スキューレジスタ３８３に格納する。また，スキュー測定回路２８により測定されたスキューと判別モードのデータは，測定スキューレジスタ３８４に格納される。これらのレジスタ３８３，３８４は，データの組み合わせの数N-1個だけ設けられる。
【００９５】
セレクタ２６とスキュー測定回路２８からはN-1通りの判定モードと測定スキューが測定スキューレジスタ３８４に格納される。格納されると図１７のようにそのレジスタ内のスキュー有効ビットが「１」に設定される。CPUは，このスキュー有効ビットを常時監視し，スキュー有効ビットが「１」になると，遅延設定値演算回路３８１の演算１により検出された最も遅い信号に対応する目標スキューのデータを，RAM４５から読み出し，目標スキューレジスタ３８３に格納し，図１７のように遅延切替オンビットを「１」に設定する。
【００９６】
遅延設定値演算回路３８１は，この遅延切替オンビットが「１」に設定されると，測定スキューと判定モードとから得られる現在の信号A,B,C,Dのスキュー関係を，目標スキューによる信号A,B,C,Dのスキュー関係にするために必要な各信号の設定遅延値を演算する。そして，演算された設定遅延値が，各遅延回路に属する遅延設定レジスタに設定される。この設定がされると，スキュー有効ビットが「０」にリセットされる。
【００９７】
［第２の実施の形態（４）］
図３２は，第２の実施の形態におけるスキュー調整回路の第３の変型例を示す図である。このスキュー調整回路１０は，図３１と異なるところは，動作状態監視回路５０を有し，それに伴いRAM４５に動作状態に対応する目標スキューが格納されていることである。それ以外の構成と動作は，図３１の第２の変型例と同じである。
【００９８】
以上，第２の実施の形態によれば，スキュー調整対象のN本の信号線の信号に対し，N-1の組み合わせのスキューを測定し，メモリ内の目標スキューになるように各信号線に挿入すべき遅延量を演算で求めて，N本の信号線の信号変化に目標スキューを生成させることができる。それにより，出力バッファが同時にスイッチングした時に発生する同時スイッチングノイズを低減することができる。
【００９９】
以上の実施の形態をまとめると，次の付記のとおりである。
【０１００】
（付記１）
第１及び第２の信号をそれぞれ伝播する第１及び第２の信号線と，前記第１及び第２の信号線を伝播する第１及び第２の信号がそれぞれ入力される第１及び第２のバッファ回路とを有する集積回路に設けられるスキュー調整回路であって，
前記第１及び第２のバッファ回路の前段にそれぞれ設けられた第１及び第２の遅延回路と，
前記第１及び第２の信号の間のスキューを測定するスキュー測定回路と，
前記スキュー測定回路が測定した測定スキューに基づいて前記第１，第２の遅延回路の遅延量を決定し，当該決定した遅延量を前記第１，第２の遅延回路に設定する遅延調整回路とを有するスキュー調整回路。
【０１０１】
（付記２）
付記１において，
前記遅延調整回路は，前記第１及び第２の信号の間の目標スキューと前記測定スキューの差分を，前記第１または第２の遅延回路の遅延量に決定するスキュー調整回路。
【０１０２】
（付記３）
付記１または２において，
さらに，前記第１及び第２の信号間の目標スキューを格納するメモリを有し，
前記遅延調整回路は，前記メモリを参照して前記目標スキューを読み出し，前記測定スキューと前記目標スキューとの差分を，前記第１または第２の遅延回路の遅延量に決定するスキュー調整回路。
【０１０３】
（付記４）
付記１または２において，
前記遅延調整回路は，前記測定スキューと前記第１，第２の信号のうちいずれが早いかのデータとに対応して，前記第１及び第２の信号間の目標スキューを生成する設定遅延量を格納するメモリを参照し，前記メモリから読み出した前記設定遅延量を前記第１，第２の遅延回路に設定するスキュー調整回路。
【０１０４】
（付記５）
付記１または２において，
前記スキュー測定回路は，前記第１，第２の信号のいずれか一方をデータとして入力する複数のラッチ回路と，前記第１，第２の信号のいずれか他方を遅延させながらクロックとして前記複数のラッチ回路に入力するクロック供給回路とを有し，
さらに，前記第１，第２の信号を前記データ及びクロックに選択して前記スキュー測定回路に出力するセレクタを有するスキュー調整回路。
【０１０５】
（付記６）
付記５において，
前記セレクタは，前記第１，第２の信号をそれぞれ前記データ及びクロックに選択して前記スキュー測定回路に出力したときに，前記スキュー測定回路が前記データ入力のほうが前記クロック入力より早いことを検出した場合は，前記第１，第２の信号をそれぞれ前記クロック及びデータに選択して前記スキュー測定回路に出力するスキュー調整回路。
【０１０６】
（付記７）
第１〜第Nの信号をそれぞれ伝播する第１〜第Nの信号線と，前記第１〜第Nの信号線を伝播する第１〜第Nの信号がそれぞれ入力される第１〜第Nのバッファ回路とを有する集積回路に設けられるスキュー調整回路であって，
前記第１〜第Nのバッファ回路の前段にそれぞれ設けられた第１〜第Nの遅延回路と，
前記第１及び第２の信号間〜第１及び第Nの信号の間のスキューをそれぞれ測定するスキュー測定回路と，
前記スキュー測定回路が測定した測定スキューに基づいて前記第１〜第Nの遅延回路の遅延量を決定し，当該決定した遅延量を前記第１〜第Nの遅延回路に設定する遅延調整回路とを有するスキュー調整回路。
【０１０７】
（付記８）
付記７において，
前記遅延調整回路は，前記測定スキューから前記第１〜第Nの信号のうち最も遅いタイミングの信号を検出し，当該検出した最も遅いタイミングの信号を最も早いタイミングにする目標スキューにするように前記第１〜第Nの遅延回路に設定すべき遅延量を決定するスキュー調整回路。
【０１０８】
（付記９）
付記８において，
さらに，前記第１〜第Nの信号それぞれに対応して，当該信号を最も早いタイミングにする目標スキューを格納するメモリを有し，
前記遅延調整回路は，前記メモリを参照して，前記検出した最も遅いタイミングの信号に対応する目標スキューを読み出すスキュー調整回路。
【０１０９】
（付記１０）
付記９において，
前記メモリは，書き換え可能メモリであるスキュー調整回路。
【０１１０】
（付記１１）
付記１，２，７，８のいずれかにおいて，
さらに，前記集積回路装置内のゲートの動作状態を監視する動作状態監視回路を有し，
前記遅延調整回路は，前記動作状態監視回路が検出した動作状態に応じて前記遅延量を決定するスキュー調整回路。
【０１１１】
（付記１２）
付記１〜１１のいずれかにおいて，
前記監視回路と遅延調整回路の動作イネーブルと動作デセーブルを制御する制御イネーブル信号を有し，当該制御イネーブル信号に応じて前記監視回路と遅延調整回路の動作開始と動作停止とが制御されるスキュー調整回路。
【０１１２】
（付記１３）
付記４または５において，
前記メモリは書き換え可能であり，前記目標スキューまたは設定遅延量が書き換えされるスキュー調整回路。
【０１１３】
（付記１４）
第１及び第２の信号をそれぞれ伝播する第１及び第２の信号線と，前記第１及び第２の信号線を伝播する第１及び第２の信号がそれぞれ入力される第１及び第２のバッファ回路と，第３の信号がそれぞれ入力される第３及び第４のバッファ回路と，前記第３及び第４のバッファ回路に入力された第３の信号を伝搬し前記第１及び第２の信号線と同じ長さの第３及び第４の信号線とを有する集積回路に設けられるスキュー調整回路であって，
前記第１及び第２のバッファ回路の前段にそれぞれ設けられた第１及び第２の遅延回路と，
前記第３及び第４の信号線を伝搬してきた前記第３の信号の間のスキューを測定するスキュー測定回路と，
前記スキュー測定回路が測定した測定スキューに基づいて前記第１，第２の遅延回路の遅延量を決定し，当該決定した遅延量を前記第１，第２の遅延回路に設定する遅延調整回路とを有するスキュー調整回路。
【０１１４】
（付記１５）
第１及び第２の信号をそれぞれ伝播する第１及び第２の信号線と，前記第１及び第２の信号線を伝播する第１及び第２の信号がそれぞれ入力される第１及び第２のバッファ回路とを有する集積回路のスキュー調整方法であって，
前記第１及び第２の信号の間のスキューを測定し，
前記測定した測定スキューに基づいて，前記第１及び第２のバッファ回路の前段にそれぞれ設けられた第１及び第２の遅延回路の遅延量を決定し，当該決定した遅延量を前記第１，第２の遅延回路に設定するスキュー調整方法。
【０１１５】
（付記１６）
付記１５において，
前記第１及び第２の信号の間の目標スキューと前記測定スキューの差分を，前記第１または第２の遅延回路の遅延量に決定するスキュー調整方法。
【０１１６】
（付記１７）
第１〜第Nの信号をそれぞれ伝播する第１〜第Nの信号線と，前記第１〜第Nの信号線を伝播する第１〜第Nの信号がそれぞれ入力される第１〜第Nのバッファ回路とを有する集積回路に設けられるスキュー調整方法であって，
前記第１及び第２の信号間〜第１及び第Nの信号の間のスキューをそれぞれ測定し，
前記測定した測定スキューに基づいて，前記第１〜第Nのバッファ回路の前段にそれぞれ設けられた第１〜第Nの遅延回路の遅延量を決定し，当該決定した遅延量を前記第１〜第Nの遅延回路に設定するスキュー調整方法。
【０１１７】
（付記１８）
付記１７において，
前記測定スキューから前記第１〜第Nの信号のうち最も遅いタイミングの信号を検出し，当該検出した最も遅いタイミングの信号を最も早いタイミングにする目標スキューにするように前記第１〜第Nの遅延回路に設定すべき遅延量を決定するスキュー調整方法。
【符号の説明】
【０１１８】
１０：スキュー調整回路                ２５：信号変化監視回路  
３５，３７：遅延調整回路              ４５：遅延量ROM
DL_0〜DL_7:遅延回路                   OB_0〜OB_7：出力バッファ
SL_0〜SL_7：信号線                    SG_0〜SG_7：信号
【図１】
0005549474.tif 000002
【図２】
0005549474.tif 000003
【図３】
0005549474.tif 000004
【図４】
0005549474.tif 000005
【図５】
0005549474.tif 000006
【図６】
0005549474.tif 000007
【図７】
0005549474.tif 000008
【図８】
0005549474.tif 000009
【図９】
0005549474.tif 000010
【図１０】
0005549474.tif 000011
【図１１】
0005549474.tif 000012
【図１２】
0005549474.tif 000013
【図１３】
0005549474.tif 000014
【図１４】
0005549474.tif 000015
【図１５】
0005549474.tif 000016
【図１６】
0005549474.tif 000017
【図１７】
0005549474.tif 000018
【図１８】
0005549474.tif 000019
【図１９】
0005549474.tif 000020
【図２０】
0005549474.tif 000021
【図２１】
0005549474.tif 000022
【図２２】
0005549474.tif 000023
【図２３】
0005549474.tif 000024
【図２４】
0005549474.tif 000025
【図２５】
0005549474.tif 000026
【図２６】
0005549474.tif 000027
【図２７】
0005549474.tif 000028
【図２８】
0005549474.tif 000029
【図２９】
0005549474.tif 000030
【図３０】
0005549474.tif 000031
【図３１】
0005549474.tif 000032
【図３２】
0005549474.tif 000033
【図３３】
0005549474.tif 000034