(57)【特許請求の範囲】
【請求項１】
複数の信号をそれぞれ伝播する複数の信号線と，
前記複数の信号線を伝播する複数の信号がそれぞれ入力される複数のバッファ回路と，
前記複数のバッファ回路の前段にそれぞれ設けられた複数の遅延回路と，
監視期間内において信号変化が生じた前記信号線の数である信号変化本数を検出する監視回路と，
前記信号変化本数に応じた複数種類の遅延量を記憶する遅延量メモリと，
前記遅延量メモリを参照し，前記信号変化本数に応じて前記遅延量メモリ内の前記複数種類の遅延量から前記複数の遅延回路の遅延量を決定し前記複数の遅延回路に設定する遅延調整回路とを有する集積回路装置。
【請求項２】
請求項１において，
前記遅延調整回路は，前記信号変化本数が第１の数の場合に前記複数の遅延回路の遅延量をＮ種類の遅延量に決定し，前記第１の数より多い第２の数の場合に前記複数の遅延回路の遅延量を前記Ｎより多いＭ種類の遅延量に決定する集積回路装置。
【請求項３】
複数の信号をそれぞれ伝播する複数の信号線と，
前記複数の信号線を伝播する複数の信号がそれぞれ入力される複数のバッファ回路と，
前記複数のバッファ回路の前段にそれぞれ設けられた複数の遅延回路と，
前記複数の信号線の監視期間内での第１レベルから第２レベルへの第１信号変化の本数を検出する複数の第１信号変化検出回路と，前記複数の信号線の前記監視期間内での前記第２レベルから前記第１レベルへの第２信号変化の本数を検出する複数の第２信号変化検出回路と，前記第１信号変化の本数と第２信号変化の本数とを比較する信号変化本数比較回路とを有する監視回路と，
前記第１及び第２信号変化の本数に応じた複数種類の遅延量を記憶する遅延量メモリと，
前記遅延量メモリを参照し，前記第１または第２信号変化の本数のうち多いほうの多数信号変化本数に応じて前記遅延量メモリ内の前記複数種類の遅延量から前記複数の遅延回路の遅延量を決定し前記複数の遅延回路に設定する遅延調整回路と，を有する集積回路装置。
【請求項４】
請求項３において，
前記遅延調整回路は，前記多数信号変化本数が，第１の数の場合に前記複数の遅延回路の遅延量をＮ種類の遅延量に決定し，前記第１の数より多い第２の数の場合に前記複数の遅延回路の遅延量を前記Ｎより多いＭ種類の遅延量に決定する集積回路装置。
【請求項５】
請求項１または３において，
前記遅延量メモリは，書換可能なメモリであり，前記遅延量が書き換えられる集積回路装置。
【請求項６】
請求項１または３において，
前記遅延量メモリ内の前記遅延量は，前記集積回路装置の複数のバッファ回路の出力を入力する他の集積回路装置のセットアップタイムの仕様に適合する遅延量である集積回路装置。
【請求項７】
請求項１，２，３，４のいずれかにおいて，
さらに，前記集積回路装置内のゲートの動作状態を監視する動作状態監視回路を有し，
前記遅延調整回路は，前記動作状態監視回路が検出した動作状態に応じて前記遅延量を決定する集積回路装置。
【請求項８】
複数の信号をそれぞれ伝播する複数の信号線と，
前記複数の信号線を伝播する複数の信号がそれぞれ入力される複数のバッファ回路と，
前記複数のバッファ回路の前段にそれぞれ設けられた複数の遅延回路と，を有する集積回路装置のスキュー調整方法であって，
監視期間内において信号変化が生じた前記信号線の数である信号変化本数を検出し，
前記信号変化本数に応じた複数種類の遅延量を記憶する遅延量メモリを参照し，前記信号変化本数に応じて前記遅延量メモリ内の前記複数種類の遅延量から前記複数の遅延回路の遅延量を決定し，前記決定した遅延量に前記複数の遅延回路の遅延量を調整する集積回路装置のスキュー調整方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，スキュー調整回路およびスキュー調整方法に関する。
【背景技術】
【０００２】
集積回路装置（ＬＳＩ）は，複数の信号を外部のＬＳＩにまたは内部の他のマクロに出力する出力バッファを有する。例えば，複数ビットのデータバスの信号線は，基準クロックに応答してフリップフロップなどの複数のラッチ回路にラッチされ，ラッチ回路の出力がそれぞれ対応する出力バッファを経由して出力される。複数の信号が同時にＬレベルからＨレベルに変化すると，複数の出力バッファの電源配線に大きな電流が流れ電源ノイズを発生する。逆に，複数の信号が同時にＨレベルからＬレベルに変化すると，複数の出力バッファのグランド配線に大きな電流が流れグランドノイズを発生する。このようなノイズは同時スイッチングノイズ（ＳＳＮ：Simultaneous Switching Noise）と称され，特に，駆動能力が大きい複数の出力バッファが同時に同じ方向にスイッチングした時に大きなノイズになる。
【０００３】
このような同時スイッチングノイズを抑制する方法が，特許文献１，２，３に記載されている。いずれも，複数の信号にあらかじめ決められた遅延を加えて複数の信号にスキューを発生させ同時スイッチングを抑制しようとしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１２９６０１号公報
【特許文献２】特開２００４−３３４２７１号公報
【特許文献３】特開平９−１８１５９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら，複数の信号の出力のタイミングは様々な要因で変化するので，あらかじめ決められた遅延を加えるだけでは同時スイッチングによるノイズを適切に抑制できない場合がある。
【０００６】
たとえば，ＬＳＩの動作環境によってＬＳＩ内の動作速度が異なり内部の信号のタイミングが異なるので，出力信号に固定的な遅延回路を挿入する方法では適切に同時スイッチングノイズを低減できない場合がある。また，ＬＳＩの出力信号を受信する外部のＬＳＩにおけるＡＣスペック，例えば入力のセットアップタイムとホールドタイムなど，は，ＬＳＩによって異なるが，出力信号に固定的な遅延を挿入する方法では，そのＡＣスペックを満足できない場合がある。
【０００７】
そこで，本発明の目的は，ＬＳＩの動作状態などに適合したスキューを複数の信号に与えることができるスキュー調整回路を提供することにある。
【課題を解決するための手段】
【０００８】
スキュー調整回路の第１の側面は，集積回路装置内に設けられ，複数の信号をそれぞれ伝播する複数の信号線と，
前記複数の信号線を伝播する複数の信号がそれぞれ入力される複数のバッファ回路と，
前記複数のバッファ回路の前段にそれぞれ設けられた複数の遅延回路と，
前記複数の信号線の信号変化を監視する監視回路と，
前記監視回路の監視結果出力に基づいて前記複数の遅延回路の遅延量を決定し前記複数の遅延回路に設定する遅延調整回路とを含み，
前記監視回路は，監視期間内において信号変化が生じた信号線の数である信号変化本数を前記監視結果として検出し，
前記遅延調整回路は，前記信号変化本数に基づいて前記遅延量を決定する。
【発明の効果】
【０００９】
第１の側面によれば，複数の信号線で発生した信号変化本数に応じて各信号線の信号を遅延させて適切なスキューを発生させるので，同時スイッチングノイズを適切に抑制することができる。
【図面の簡単な説明】
【００１０】
【図１】本実施の形態におけるスキュー調整回路を有する集積回路装置を示す図である。
【図２】図１のスキュー調整回路１０によるスキュー調整の概略を示す信号波形図である。
【図３】第１の実施の形態におけるスキュー調整回路を示す図である。
【図４】同時変化監視回路を示す図である。
【図５】遅延調整回路３０を示す図である。
【図６】同時変化監視回路２０と図５にて後述する遅延調整回路３０の動作のタイムチャート図である。
【図７】遅延回路と，そのタップ値と遅延量との関係とを示す図である。
【図８】遅延量ROMのフォーマットを示す図である。
【図９】遅延量ROMの具体例を示す図である。
【図１０】遅延回路に設定する遅延量とスキューとを示す図である。
【図１１】許容遅延量を説明する図である。
【図１２】第１の実施の形態におけるスキュー調整回路の変型例を示す図である。
【図１３】動作状態監視回路５０の一例を示す図である。
【図１４】遅延量ROMの具体例を示す図である。
【図１５】第１の実施の形態におけるスキュー調整回路の第２の変型例を示す図である。
【図１６】第２の変型例における遅延調整回路を示す図である。
【図１７】第１の実施の形態におけるスキュー調整回路の第３の変型例の図である。
【図１８】第２の実施の形態におけるスキュー調整回路の図である。
【図１９】Rise/Fall変化監視回路６０を示す図である。
【図２０】遅延量ROM４０のフォーマットを示す図である。
【図２１】遅延量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#0〜Data#7を基準クロックRef_CLKに応答してラッチする最終段フリップフロップ１と，そのフリップフロップ１の出力端子に接続された８本の信号線SL_0〜SL_7と，信号線をそれぞれ伝搬する信号SG_0〜SG_7を入力し外部の他のLSIにまたは内部の他のマクロに出力する出力バッファOB_0〜OB_7とを有する。図中，出力バッファOB_0〜OB7には，信号を出力するバッファ回路に加えて，信号を入力する入力バッファも示されている。つまり，図中に示されたOB_0〜OB_7は入出力バッファである。
【００１９】
スキュー調整回路１０は，８本の信号線SL_0〜SL_7には，出力バッファOB_0〜OB_7の直前に遅延回路DL_0〜DL_7が設けられている。前述のとおり，この遅延回路の遅延量を調整することで，信号線SL_0〜SL_7を伝搬する信号SG_0〜SG_7に適切なスキューを発生させる。それにより，出力バッファでのスイッチングタイミングをずらして同時スイッチングによるノイズの発生を抑制する。
【００２０】
スキュー調整回路１０は，８本の信号線を伝搬する信号SG_0〜SG_7のLレベルからHレベルへのレベル変化（Rise）及びHレベルからLレベルへのレベル変化（Fall）が，所定の監視期間内に生じているかを監視する監視回路２０を有する。この監視期間は，信号の同時変化と見なせる程度に短い期間であるので，この監視期間内に信号レベルの変化が生じた信号線は同時変化したとみなされる。このように同時変化と見なせる程度に短い期間内に信号レベルの変化が生じた信号線が複数存在すると，出力バッファでの同時スイッチングによる電源ノイズやグランドノイズの原因となる。
【００２１】
スキュー調整回路１０は，さらに，同時変化監視回路２０が検出した短期間の間に信号レベルが変化した信号線の数（信号変化本数）に応じて，遅延回路DL_0〜DL_7に設定する遅延量を決定する遅延調整回路３０を有する。遅延調整回路３０は，信号変化本数に対応して信号間に適切なスキューを発生させる遅延量を格納した遅延量メモリ（ROM）４０を参照して，遅延量を決定し，その遅延量を遅延回路DL_0〜DL_7に設定する。
【００２２】
図４は，同時変化監視回路を示す図である。同時変化回路２０は，８本の信号線SL_0〜SL_7の信号の変化をそれぞれ検出する信号変化検出回路201_0〜201_7を有する。この信号変化検出回路201_0は，基準クロックRef_CLKに応答して信号線SL_0〜SL_7の信号をラッチするレジスタSR#0と，信号線の信号とレジスタSR#0の出力との排他的論理和を演算するXOR回路とを有する。信号線の信号がLレベルからHレベルに変化したとき，その直後の基準クロックRef_CLKに応答して，XOR回路が信号の変化から基準クロックまでのパルス幅を有する検出パルスを生成する。信号線の信号がHレベルからLレベルに変化したときも同様に，XOR回路が検出パルスを生成する。
【００２３】
この制御イネーブル信号Cnt_ENは，図示しない回路により生成されるが，スキュー調整回路のシステムのイニシャライズ動作において，安定したシステムクロックが入力され安定した内部の基準クロックRef_CLKが生成されると，制御イネーブル信号Cnt_ENはHレベルになる。この制御イネーブル信号Cnt_EN=Hに応答して，スキュー調整回路１０のスキュー調整動作が始まる。そして，タイミング生成カウンタ２０３は，制御イネーブル信号Cnt_EN=Hに応答して，４ビットのカウント値Countを基準クロックに同期してインクリメントする動作を繰り返す。このタイミング生成カウンタ２０３の出力のカウント値Countが後述するとおり，スキュー調整回路１０内の動作タイミングを制御する。
【００２４】
制御イネーブル信号Cnt_ENは，上位のシステムからイネーブル状態（Hレベル）とデセーブル状態（Lレベル）に制御されるよう構成することができる。このような構成にすることで，電源起動時などのイニシャライズ動作後に自動的にスキュー調整回路を動作させてスキュー調整した後に，スキュー調整回路の動作を停止させることができる。また，LSIの温度が上昇したときに制御イネーブル信号Cnt_ENをイネーブル状態に制御して，スキュー調整を行い，その後でセーブル状態に制御することもできる。このようにスキュー調整回路の動作と停止を制御することで無駄な消費電流の発生を回避することができる。
【００２５】
図６は，同時変化監視回路２０と後述する遅延調整回路３０（図５）の動作のタイムチャート図である。このタイムチャートを参照しながら同時変化監視回路の構成と動作を説明する。
【００２６】
監視結果保持レジスタMoni_R#0〜Moni_R#7は，タイミング生成カウンタ２０３が出力するカウント値Countが０になったときに，XOR回路の信号変化検出パルスをラッチする。さらに，セレクタ２０５は，カウント値Countが１〜８になるタイミングに対応して，監視結果保持レジスタMoni_R#0〜Moni_R#7を順に選択してパラレル・シリアル変換し，同時変化本数カウンタ２０７は，セレクタの出力の変化イネーブル信号chg_en＝１をカウントし，カウントした変化本数を遅延調整回路３０に出力する。この同時変化本数カウンタ２０７は，カウント値Count=0の時にリセットされ，その後カウントを開始し，基準クロックRef_CLKに応答してセレクタからの変化イネーブル信号 chg_en＝１をカウントする。図６では，タイミングカウント値Count=8のタイミングで変化本数カウンタのカウント値は「５」になっている。
【００２７】
つまり，同時変化監視回路２０では，信号変化検出回路201_0〜201_7が，基準クロックRef_CLKの１周期である監視期間内で同時に発生する信号変化を検出し，カウント値Count=0のタイミングでその検出した信号変化が監視結果保持レジスタMoni_R#0〜Moni_R#7にラッチされ，次のカウント値Count=1〜8でカウンタ２０７がその信号変化をカウントする。検出する信号変化は，LレベルからHレベルの変化とHレベルからLレベルの変化の両方である。したがって，同時変化監視回路２０は，基準クロックRef_CLKの１６サイクルに１回の間隔で信号の同時変化を検出し，その信号変化本数を出力する。
【００２８】
図５は，遅延調整回路３０を示す図である。図５に示された遅延調整回路３０は，同時変化監視回路２０が検出した信号変化本数をカウント値Count=10でラッチする変化本数保持レジスタ３０１と，カウント値Count=15で変化本数保持レジスタ３０１が保持する現同時変化本数を旧同時変化本数としてラッチする設定状態保持レジスタ３０３とを有する。さらに，遅延調整回路３０は，変化本数比較回路３０５を有し，その回路には，カウント値Count=11で設定状態保持レジスタ３０３の旧同時変化本数と変化本数保持レジスタ３０１の現同時変化本数とを比較する変化本数比較器３０７と，カウント値Count=14で遅延ＲＯＭ４０から読み出した遅延量R-dataに対応する設定タップ情報をラッチする設定タップ情報レジスタ３０９とを有する。また，カウント値Count=15で設定タップ情報レジスタ３０９のタップ情報をラッチするタップ設定レジスタ３１１を有し，このタップ設定レジスタ３１１に設定されたタップ値が遅延回路DL_0〜DL_7に設定される。各レジスタ３０１，３０３，３０９と比較器３０７には基準クロックRef_CLKが供給され，そのクロックの立ち上がりエッジに同期してそれぞれラッチまたは比較する。インバータ３１０により，タップ設定レジスタ３１１は，基準クロックRef_CLKの立ち下がりエッジに同期して設定タップ情報レジスタ３０９の設定値をラッチする。
【００２９】
図５の遅延調整回路３０は後述する別の実施の形態において，Rise/Fall変化監視回路６０からの変化本数と比較結果を入力し，比較結果に基づいて所定の遅延調整を行う。本実施の形態では，比較結果は利用されない。
【００３０】
図５の遅延調整回路３０の動作は，図６のタイムチャートに示されるように以下の通りである。図４の同時変化監視回路２０は，カウント値Count=8で同時変化本数を検出し，遅延調整回路３０に出力する。図６では同時変化本数は「５」である。そして，カウント値Count=10でその同時変化本数が変化本数保持レジスタ３０１に現同時変化本数として格納される。そして，カウント値Count=11で，変化本数比較器３０７が設定状態保持レジスタ３０３が保持する旧同時変化本数（図６では「２」）と現同時変化本数（図６では「５」）とを比較する。比較結果が等しくない場合（比較≠）は，同時変化本数に変化が生じたことになるので，変化本数比較器３０７が遅延量ROM４０に読み出し命令Readを出力する。この読み出し動作のアドレスは，現同時変化本数のデータ（図６では「５」）である。また，比較結果が等しい場合は，ROMへのリードは行われずに，タップ設定レジスタ３１１のタップ値の更新は行われない。
【００３１】
遅延量ROM４０には，後述するとおり，同時変化本数に対応して各信号線に加えるべき遅延量データが，遅延回路DL_0〜DL_7へのタップ値として格納されている。したがって，遅延量ROM４０から読み出される読み出しデータR_dataは，遅延量に対応したタップ値であり，カウント値Count=14で設定タップ情報レジスタ３０９に格納される。そして，カウント値Count=15で，設定状態保持レジスタ３０３内の旧同時変化本数が現同時変化本数で更新されるとともに，タップ設定レジスタ３１１が設定タップ情報レジスタ３０９に格納されているタップ値で更新される。タップ設定レジスタ３１１の更新は基準クロックRef_CLKの立ち下りエッジがインバータ３１０により立ち上がりエッジに反転されたことに応答して行われ，設定状態保持レジスタ３０３の更新はRef_CLKの立ち上がりエッジに応答して行われる。
【００３２】
このように，タイミング生成カウンタ２０３の４ビットのカウント値Countにしたがって，カウント値の１６カウントサイクルで，同時変化本数の検出と，旧同時変化本数と現同時変化本数との比較と，比較結果が等しくない場合の遅延ROM４０へのタップ値の読み出しと，タップ設定レジスタ３１１への設定とが繰り返される。したがって，検出した同時変化本数が変化した場合に，その同時変化本数に対応する遅延量が遅延回路DL_0〜DL_7に設定される。
【００３３】
図７は，遅延回路と，そのタップ値と遅延量との関係とを示す図である。遅延回路DL_#は，入力するデータ信号Dataを遅延させる複数のバッファからなるバッファ群３１３と，バッファ群３１３内の複数のノードを設定コードS_CODEに基づいて選択するセレクタ３１５とを有する。図７中には，セレクタのタップ値と設定コードS_CODEとの対応表が示され，設定コードS_CODEが小さいほど，つまりタップ値が小さいほど，遅延回路DL_#により挿入される遅延量が小さく，逆の場合は遅延量が多くなる。８つの遅延回路DL_0〜DL_7に対する各４ビットの設定コードS_CODEが，図５のタップ設定レジスタ３１１に設定される。したがって，遅延量ROM４０には，この設定コードS_CODEが同時変化本数に対応して格納されている。
【００３４】
図８は，遅延量ROMのフォーマットを示す図である。アドレスは，同時変化監視グループGrと，動作状態と，同時変化本数とを有し，それに対するデータは，遅延回路のタップ設定値（各遅延回路の設定コードS_CODE）である。３２ビットのタップ設定値は，８本の信号線の遅延回路に設定する各４ビットの設定コードである。ここに示したフォーマットは，後述する実施の形態にも対応しており，本実施の形態ではアドレス情報は同時変化本数のみである。
【００３５】
ここで，同時変化監視グループとは，同時変化を監視する対象の信号グループであり，本実施の形態では８本の信号線SL_0〜SL_7が１つのグループGr=0に対応する。例えば，データバスが３２ビットの場合は，３２本の信号線が８本ずつ４グループに分けられ，各グループの８本の信号線に対して，前述の同時変化本数が監視される。そして，各グループの８本の信号線に対して遅延量が設定される。
【００３６】
図９は，遅延量ROMの具体例を示す図である。この例では，アドレスはグループGr=0〜ｘと同時変化本数（０〜２本，３〜５本，６〜８本）とを有し，データは各遅延回路の遅延量に対応する３２ビットのタップ設定値（各遅延回路の設定コードS_CODE）である。
【００３７】
一例として，グループGr=0について説明すると，同時変化本数が０〜２本の場合は，タップ設定値は全て「0x0」（遅延量ゼロ）である。一方，同時変化本数が３〜５本の場合は，タップ設定値は「0x0」と「0x4」の２種類であり，データ信号Data#0〜Data#7に対して偶数番目のデータ信号線の遅延回路には「0x0」（遅延量ゼロ），奇数番目のデータ信号線の遅延回路には「0x4」（遅延量４／１６）が設定される。さらに，同時変化本数が６〜８本の場合は，タップ設定値は「0x0」「0x2」「0x4」「0x6」の４種類であり，データ信号Data#0〜#4と，データ信号Data#5〜#7にそれら４種類のタップ設定値が設定される。つまり，８本の信号線を４グループに分けて，それぞれのグループの信号線の遅延回路に異なる遅延量を設定する。
【００３８】
図１０は，遅延回路に設定する遅延量とスキューとを示す図である。図９のタップ設定値により設定された遅延回路とスキュー調整された信号波形が示されている。
【００３９】
（１）同時変化本数が０〜２本の場合は，８つの遅延回路は遅延量０に設定される。同時変化本数が少ないので，同時スイッチングノイズが小さいとみなせるので，信号間にスキューを発生させる必要性は少ないからである。
【００４０】
（２）同時変化本数が３〜５本の場合は，データ信号Data#0〜Data#7に対して偶数番目のデータ信号線の遅延回路には「0x0」（遅延量ゼロ），奇数番目のデータ信号線の遅延回路には「0x4」（遅延量４／１６）が設定される。つまり，同時変化本数が比較的多いので，データ信号線を２つのグループに分けて，一方に遅延量ゼロ，他方に遅延量４を設定して，図示されるようにスキューを発生させている。これにより，同時変化した信号線による出力バッファでのスイッチング動作が，全て一致する確率を低減することができる。
【００４１】
（３）同時変化本数が６〜８本と最も多い場合は，データ信号線が２本ずつ４グループに分けられ，各グループに遅延量ゼロ，遅延量２，遅延量４，遅延量６が設定され，図示されるようなスキューを発生させている。同時変化本数が多い場合は，このように多くのグループ毎に遅延量を異ならせて同時変化の確率を抑制することが望ましい。
【００４２】
図１０の遅延量は一例であり，同時変化本数の違いをもっと細かくして，各同時変化本数に対して異なる遅延量を設定するようにしてもよい。たとえば，同時変化本数が８本の場合には８本の信号線の遅延量を全て異ならせるようにしてもよい。
【００４３】
図８，９，１０に示したとおり，本実施の形態においては，信号線の信号の同時変化を検出した場合，各信号線に設けた遅延回路の遅延量を調整して信号間のスキューを適切に調整し，出力バッファによる同時スイッチングを抑制する。ただし，この遅延量は，出力バッファの出力を供給される他の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それぞれ次の通りである。
DataA=T-Toa_max-Ts+dT
DataB=T-Tob_max-Ts+dT
そして，データBの遅延値TOxのほうが大きいので，データBの許容遅延値のほうが小さい。よって，このデータＢの許容遅延値未満の遅延量が遅延量ROM４０に設定される。その結果，スキュー調整された出力信号が，後段のLSIやマクロの入力回路にそのセットアップタイムTsを満たすタイミングで供給されることが保証される。
【００４８】
［第１の実施の形態（２）］
図１２は，第１の実施の形態におけるスキュー調整回路の変型例を示す図である。図３のスキュー調整回路１０との相違点は，動作状態監視回路５０を有することと，遅延量ROM４０が同時変化本数と動作状態監視回路が検出する動作速度とに対応する遅延量を格納していることである。遅延回路DL_0〜DL_7は，図７と同じであり，同時変化監視回路２０は，図４と同じである。
【００４９】
この変型例では，動作状態監視回路５０が，動作状態（プロセス条件，温度条件，電圧条件のばらつき）によって生じるLSI内のゲートの速度変化を監視し，その速度が高速の場合の動作状態信号Fastと，典型的な場合の動作状態信号Typicalと，低速の場合の動作状態信号Slowとを出力する。そして，この速度に対応して，遅延ROM４０はスキュー調整用の遅延量を格納し，動作状態に適した遅延量を遅延回路に設定することができる。
【００５０】
具体的には，速度が典型的な場合の遅延量に比べると，高速の場合は遅延回路DL内の遅延量をより多くし，つまり遅延バッファの数を増やし，絶対的な遅延時間，つまり絶対的なスキューの大きさを典型的な速度の場合と同等にする。逆に，低速の場合は遅延回路DL内の遅延量をより少なくして，つまり遅延バッファの数を減らし，絶対的な遅延時間，つまり絶対的なスキューの大きさを典型的な速度の場合と同等にする。
【００５１】
動作速度が高速になったり低速になったりとばらつく原因は，第１にデバイス製造時の狙い値に対して生じる製造ばらつきなどのプロセス条件，，第２に電源電圧が高いか低いか，第３に温度が高いか低いかなどである。前述のとおり，遅延回路の遅延量は，同時スイッチングノイズ低減のための適切なスキューを与える値であって，許容遅延量未満の値に設定される必要がある。したがって，動作速度のばらつきに対応して，遅延回路の遅延バッファの数を変更することが望ましい。
【００５２】
図１３は，動作状態監視回路５０の一例を示す図である。動作状態監視回路は，位相０°のクロックCLK0を遅延して位相９０°のクロックCLK90を出力する遅延回路５０１と，２つのクロックCLK0,CLK90の位相差を検出し，その位相差が９０°になるように遅延回路の遅延制御信号５０７を生成する遅延制御回路５０３とを有する。遅延回路５０１は，例えば図７に示した遅延回路と同等の構成である。したがって，遅延制御信号５０７は，LSIのゲート速度が高速であればより多くのバッファを伝搬した信号を選択する制御信号になり，低速であればより少ないバッファを伝搬した信号を選択する制御信号になる。図１３の例では，この遅延制御信号５０７がデコーダ５０５でデコードされ，３種類の動作状態信号Fast，Typical，Slowに変換される。
【００５３】
図５の遅延調整回路３０に示されるとおり，本実施の形態では，動作状態監視回路５０が出力する動作状態信号が動作状態レジスタ３１３にラッチされる。ラッチタイミングは制御イネーブル信号Cnt_ENがHになった後の適切なタイミングであればよい。例えば，タイミングカウント値Count=11でラッチすることで，同時変化本数比較器３０７の比較動作タイミングに同期させることができる。遅延調整回路３０は，遅延量ROM４０を参照する時のアドレスとして，同時変化本数に加えて動作状態信号を使用する。
【００５４】
図１４は，遅延量ROMの具体例を示す図である。このROMの場合，アドレスとして同時変化監視グループGrと同時変化本数とに加えて，動作状態を有する。そして，データとしては８つの遅延回路に設定する４ビット×８＝３２ビットのタップ設定値である。図９のROMと比較すると，動作状態がアドレスに追加され，データとして，３つの動作状態それぞれに対応して図９のタップ設定値が格納される。同時変化本数に対応するタップ設定値は図９と同様であり，それにより設定される遅延回路と信号に加えられたスキューは，図１０と同様である。
【００５５】
ただし，図１４に示されるとおり，動作状態が高速Fastの場合のタップ設定値は，典型速度Typicalの場合よりも大きく設定され，低速Slowの場合のタップ設定値は，典型速度Typicalの場合よりも小さく設定されている。
【００５６】
この遅延量ROM４０を参照することで，動作状態に対応し，且つ同時変化本数に対応した適切な遅延量を，遅延回路DL_0〜DL_7に設定することができる。
【００５７】
遅延量ROM４０は，書換可能なメモリであってもよい。書換可能なメモリであれば，最適な遅延量をそのLSIの動作環境，例えば出力信号を入力する他のLSIのACスペックなど，に対応して書き換えることができ，最適なスキュー調整が可能である。
【００５８】
［第１の実施の形態（３）］
図１５は，第１の実施の形態におけるスキュー調整回路の第２の変型例を示す図である。スキュー調整回路１０は，図３と同様に，同時変化監視回路２０と，遅延調整回路３０と，遅延回路DL_0〜DL_7を有する。同時変化監視回路２０は図４の構成と同じであり，遅延回路も図７と同じである。
【００５９】
ただし，図３と異なり，遅延量を格納したメモリは，LSIの外部に設けられたRAM７０に格納され，遅延回路のタップ設定は，外部のCPUによって行われる。それに伴って，この第２の変型例の遅延調整回路３０は，図５の構成ではなく，図１６の構成を有する。また，外部のCPUバスとのインターフェースをとるCPUインターフェース６２が設けられ，遅延調整回路３０とCPUとのインターフェース動作が行われる。
【００６０】
なお，CPUは，RAM７０により適宜最適な遅延量をダウンロードする。このようにRAM７０の遅延量を書換可能にすることで，例えば，出力バッファから出力される信号を入力する他のLSIや他のマクロのACスペックに適合した遅延量を動的に設定することができる。
【００６１】
また，RAM７０やCPUは，共通のLSI内に設けられていても良い。つまり，LSIがシステムLSIの場合，そのLSI内にはCPUやRAMが設けられているので，それらを利用しても良い。
【００６２】
図１６は，第２の変型例における遅延調整回路を示す図である。遅延調整回路３０は，同時変化監視回路２０が出力する４ビットの変化本数データをタイミングカウント値Count=10のタイミングでラッチする変化本数レジスタ３１５と，RAM７０からの遅延量に対応するタップ値をCPUインターフェース６２を介して格納する遅延設定レジスタ３１７と，遅延設定レジスタ３１７に格納されたタップ値をインバータ３１０(基準クロックRef_CLKの立ち下りエッジ)に応答して格納するタップ設定レジスタ３１１とを有する。同時変化監視回路２０の構成は，図４と同じである。
【００６３】
同時変化監視回路２０は，図４と図６で説明したとおり，タイミングカウント値Count=8で同時変化本数を出力する。図１６の遅延調整回路３０内の変化本数レジスタ３１５は，タイミングカウント値Count=10で，変化本数データを取り込み，取り込むと変化本数有効ビットを有効「１」にする。
【００６４】
CPUは，CPUインターフェース６２を介してこの変化本数有効ビットを定期的にチェックし，この有効ビットが有効「１」になると，変化本数レジスタ３１５から変化本数データを読み出す。CPUは，この変化本数データをアドレスとして，遅延量RAM７０内に格納されている遅延量に対応するタップ値（３２ビットの各遅延回路の設定コードS_CODE）を読み出し，遅延設定レジスタ３１７にCPUインターフェース６２を介して書き込み，書き込みが終了すると，遅延設定レジスタ内のタップ切替オンビットを有効「１」にする。
【００６５】
このタップ切替オンビットが有効「１」になると，タップ設定レジスタ３１１は，基準クロックRef_CLKの立ち下がりエッジに応答して，遅延設定レジスタ３１７内の設定コードをラッチし，遅延回路DL_0〜DL_7の遅延量の設定が完了する。それと共に，タップ切替オンビットが有効「１」になると，変化本数レジスタ３１５の変化本数有効ビットがクリア「０」される。また，遅延量の設定が完了するとタップ切替オンビットも「０」にクリアされる。その後，CPUはこの有効ビットがクリア「０」である限り，タップ設定値をメモリから読み出して設定することはしない。
【００６６】
RAM７０の構成例は，図９と同じである。つまり，アドレスは，同時変化本数監視グループGrと同時変化本数を有し，それに対応して，データとしてタップ値（３２ビットの各遅延回路の設定コードS_CODE）が格納されている。
【００６７】
このように，RAM７０がCPUにより制御されるメモリであり，出力バッファからの出力信号が供給される他のLSIや他のマクロのACスペックに適合した遅延量のデータが，CPUにより適宜ダウンロードされる。したがって，同時変化本数に対応する遅延回路へのタップ値の設定タイミングは，タイミングカウント値Countではなく，CPUにより制御される。
【００６８】
［第１の実施の形態（４）］
図１７は，第１の実施の形態におけるスキュー調整回路の第３の変型例の図である。この第３の変型例は，図１５の第２の変型例と異なり，スキュー調整回路１０が動作状態監視回路５０を有する。同時変化監視回路２０は図４と同じであり，遅延回路DL_0〜DL_7は図７と同じである。
【００６９】
遅延調整回路３０は，図１６に示される通りであり，第２の変型例と異なり，動作状態監視回路５０からの動作状態信号がタイミングカウント値Count=10で変化本数レジスタ３１５にラッチされる。そして，CPUは変化本数有効ビットが有効「１」になると，同時変化本数と動作状態信号とをアドレスにして，遅延量RAM７０内の遅延量に対するタップ値を読み出し，遅延設定レジスタ３１７に設定する。その後の動作は，第２の変型例と同じである。
【００７０】
遅延量RAM７０の構成例は，図１４と同じであり，アドレスに同時変化本数監視グループGrと同時変化本数に加えて，動作状態データがある。したがって，３つの動作状態に対応して別々に遅延量が格納されている。
【００７１】
以上の通り，第１の実施の形態では，スキュー調整回路は，同時変化本数を監視する例えば８本の信号線の監視期間内における同時変化の本数を監視し，同時変化本数が多くなればなるほど，８本の信号線をより多くのグループに分割し，それぞれに異なる遅延量を設定する。これにより，同時変化による同時スイッチングノイズを抑制することができる。
【００７２】
［第２の実施の形態］
第１の実施の形態では，複数の信号線の信号変化について立ち上がり（Rise）か立ち下がりか（Fall）かにかかわらず，その同時変化本数を監視し，変化本数に応じた遅延量を各信号線に与えている。しかし，同時に変化する場合でも，立ち上がりでは電源ノイズが発生し，立ち下がりではグランドノイズが発生する。したがって，８本の信号線が全て同時に信号変化を起こしても，立ち上がりが１本，立ち下がりが６本の場合は，同時スイッチングノイズとしては変化本数が多いグランドノイズが問題になるので，立ち下がりが発生した６本の信号線に対してスキュー調整すれば足りることになる。また，LSIは電源ノイズに強い耐性を有する場合もあれば，グランドノイズに強い耐性を有する場合もある。したがって，同時変化が立ち上がり側か立ち下がり側かに応じて，遅延量をその耐性の程度に応じて適切に選択することが望ましい場合がある。
【００７３】
第２の実施の形態では，スキュー調整回路が，Rise/Fall変化監視回路を有し，同時立ち上がり変化の本数と同時立ち下がり変化の本数とを検出し，その検出結果に応じて最適な遅延量を決定する。
【００７４】
図１８は，第２の実施の形態におけるスキュー調整回路の図である。スキュー調整回路１０は，Rise/Fall変化監視回路６０と，遅延調整回路３０と，遅延量ROM４０とを有する。さらに，スキュー調整回路１０は，複数の信号線SL_0〜SL_7にそれぞれ遅延回路DL_0〜DL_7を有し，遅延調整回路３０によりそれぞれの遅延量が設定される。
【００７５】
Rise/Fall変化監視回路６０は，８本の信号線SL_0〜SL_7の同時立ち上がり変化と立ち下がり変化を監視し，立ち上がりと立ち下がりのうち変化本数が多い方を，同時変化本数として，立ち上がり又は立ち下がりデータとともに遅延調整回路３０に供給する。そして，遅延調整回路３０は，その同時変化本数と，立ち上がり又は立ち下がりデータをアドレスにして遅延量ROM４０から遅延量に対応するタップ値（設定コード）を読み出し，遅延回路の遅延量としてそのタップ値を設定する。
【００７６】
図１９は，Rise/Fall変化監視回路６０を示す図である。Rise変化監視回路６１０は，基準クロックの１周期に対応する監視期間中に８本の信号線に発生した立ち上がり変化を検出し，その数をカウントする。そのために，８本の信号線SL_0〜SL_7それぞれに対して，立ち上がり変化検出回路611_0〜611_7をそれぞれ有する。
【００７７】
この立ち上がり変化検出回路611_0は，基準クロックRef_CLKに応答して信号線の信号をラッチするレジスタSR#0と，信号線の信号とレジスタSR#0の反転出力とのANDを演算するANDゲートとを有する。信号線SL_0〜SL_7の信号がLレベルからHレベルに変化したとき，その後の基準クロックRef_CLKに応答して，ANDゲートが信号の変化から基準クロックまでのパルス幅を有する立ち上がり検出パルスを生成する。
【００７８】
監視結果保持レジスタMoni_R#0〜Moni_R#7は，タイミング生成カウンタ６１３が出力するカウント値Countが０になったときに，ANDゲートの検出パルスをラッチする。さらに，セレクタ６１５は，カウント値Countが１〜８になるタイミングに対応して，監視結果保持レジスタMoni_R#0〜Moni_R#7を順に選択し，Rise変化本数カウンタ６１７は，セレクタの出力の立ち上がりイネーブル信号Rise_en＝１をカウントし，カウントした変化本数を変化本数比較器６２０に出力する。このRise変化本数カウンタ６１７は，カウント値Count=0の時にリセットされ，その後カウントを開始し，基準クロックRef_CLKに応答して立ち上がりイネーブル信号Rise_en＝１をカウントする。
【００７９】
一方，Fall変化監視回路６２０は，監視期間中に８本の信号線に発生した立ち下がり変化を検出し，その数をカウントする。そのために，８本の信号線SL_0〜SL_7それぞれに対して，立ち下がり変化検出回路621_0〜621_7をそれぞれ有する。
【００８０】
この立ち下がり変化検出回路621_0は，基準クロックRef_CLKに応答して信号線の信号をラッチするレジスタSR#0と，信号線の信号の反転信号とレジスタSR#0の非反転出力とのANDを演算するANDゲートとを有する。信号線の信号がHレベルからLレベルに変化したとき，その後の基準クロックRef_CLKに応答して，ANDゲートが信号の変化から基準クロックまでのパルス幅を有する立ち下がり検出パルスを生成する。
【００８１】
残りの構成は，Rise変化監視回路６１０と同様であり，カウント値Count=0で監視結果保持レジスタMoni_R#0〜#7が立ち下がり変化をラッチし，カウント値Count=1〜８でセレクタ６２５がパラレル・シリアル変換し，Fall変化本数カウンタ６２７がカウントする。
【００８２】
変化本数比較回路６２０は，カウント値Count=9のタイミングでRise変化本数とFall変化本数とを比較し，多い方の変化本数と，どちらが多いかを示す比較結果とを遅延調整回路３０に出力する。
【００８３】
このように，Rise/Fall変化監視回路６０は，タイミング生成カウンタ６１３が生成するカウント値Countの１６サイクルに１回，８本の信号線のRise変化本数とFall変化本数を検出し，そのうち多い方の変化本数とRise/Fallの多い方の比較結果とを出力する。
【００８４】
図１８の遅延調整回路３０は，図５に示される。図５において，Rise/Fall変化監視回路６０からの変化本数と比較結果とが遅延調整回路３０に供給されるので，それらがカウント値Count=10のタイミングで変化本数保持レジスタ３０１に保持される。その後の変化本数比較器３０７での比較動作，遅延量ROM４０への読み出し動作，設定タップ情報レジスタ３０９への読み出しデータの設定動作，タップ設定レジスタ３１１への更新動作は，図５の動作と同じである。
【００８５】
図２０は，遅延量ROM４０のフォーマットを示す図である。遅延量ROMのアドレスは，同時変化監視対象グループGrと変化本数に加えて，比較結果（RiseまたはFall）を有する。そして，それらのアドレスに対応する遅延回路のタップ設定値（３２ビットの設定コード）がデータとして格納される。つまり，同時変化本数に応じたタップ設定値が，同時変化した信号が立ち上がりの場合（Rise）と立ち下がりの場合（Fall）とに応じて，それぞれ遅延量ROM内に格納されている。
【００８６】
図２１は，遅延量ROM４０の具体例を示す図である。図９に示した遅延量ROMの具体例と比較すると理解できるとおり，図２１のROMは，アドレスとして，同時変化監視対象グループGrと同時変化本数に加えて，比較結果が立ち上がり（Rise）の場合と，立ち下がり（Fall）の場合とについてそれぞれ遅延量に対応するタップ設定値（３２ビットの設定コード）を格納している。図２１のデータ例によれば，立ち上がり（Rise）と立ち下がり（Fall）とでは同じタップ設定値になっているが，例えば，立ち上がり側のタップ設定値をより大きな遅延量に設定してもよい。
【００８７】
この遅延量ROM４０に格納されている同時変化本数に対応する遅延量は，図９と同じであり，変化本数が多いほうの立ち上がりまたは立ち下がりの同時変化本数に応じて，図１０に示したようなスキューが発生するように遅延量が設定される。つまり，立ち上がりと立ち下がりとで対応する適切な遅延量が設定可能である。また，遅延量は，図１１に示したように許容遅延量未満に設定されている。
【００８８】
したがって，遅延調整回路３０は，グループGrと同時変化本数と比較結果をアドレスとして，遅延量ROM４０から遅延回路のタップ設定値を読み出し，設定タップ情報レジスタ３０９に設定する。そして，カウント値Count=15のタイミングで，設定されたタップ値がタップ設定レジスタ３１１に，基準クロックRef_CLKの立ち下がりエッジに同期して更新される。
【００８９】
第２の実施の形態では，第１の実施の形態と異なり，立ち上がりまたは立ち下がりの同時変化本数に応じて遅延回路の遅延量を設定している。したがって，立ち上がり及び立ち下がり両方の同時変化本数の場合よりも，検出される同時変化本数は少なくなる。よって，その同時変化本数に対応して最小限の必要なスキュー調整だけをすればよい。また，立ち上がりと立ち下がりとに応じて，それぞれに最適な遅延量を設定することができる。
【００９０】
［第２の実施の形態（２）］
図２２は，第２の実施の形態におけるスキュー調整回路の第１の変形例を示す図である。このスキュー調整回路１０は，図１８の構成に加えて，動作状態監視回路５０を有する。そして，Rise/Fall変化監視回路６０は図１９に示した回路であり，遅延調整回路３０は図５に示した回路である。また，動作状態監視回路５０は，図１３に示した回路である。
【００９１】
図２３は，遅延量ROM４０の具体例を示す図である。この遅延量ROM４０は，図２１と異なり，動作状態監視回路５０が出力する動作状態信号がアドレスに含まれている。それ以外は，図２１と同じである。動作状態信号がFastの場合のタップ設定値は，より大きな遅延量が設定できる値になっていて，逆に動作状態信号がSlowの場合のタップ設定値は，より小さな遅延量が設定できる値になっている。この動作状態信号に対する遅延量の設定は，図１４のROMの遅延量と同じである。
【００９２】
また，図２３の例では，RiseとFallに対応する遅延量は同じになっているが，LSIの特性に応じてそれらの遅延量を異ならせればなお好ましい。
【００９３】
［第２の実施の形態（３）］
図２４は，第２の実施の形態におけるスキュー調整回路の第２の変形例を示す図である。このスキュー調整回路１０は，LSIの外部の遅延量RAM７０を参照して遅延量を設定する。そして，LSI外部のCPUが，遅延量RAM７０から遅延量を読み出して遅延回路のタップ設定値を設定する。また，CPUは，出力バッファの出力信号を入力する他のLSIまたLSI内の他のマクロのACスペックに対応した遅延量を適宜ダウンロードしてRAM７０内に格納する。
【００９４】
そして，Rise/Fall変化監視回路６０は図１９に示した回路であり，遅延調整回路３０は図１６に示した回路である。また，遅延量RAM７０の具体例は，図２１の具体例と同じである。
【００９５】
遅延調整回路３０に対するCPUによる遅延回路のタップ設定動作は，図１６で説明したとおりである。
【００９６】
［第２の実施の形態（４）］
図２５は，第２の実施の形態におけるスキュー調整回路の第３の変形例を示す図である。このスキュー調整回路１０は，図２４の構成に加えて，動作状態監視回路５０を有する。そして，Rise/Fall変化監視回路６０は図１９に示した回路であり，遅延調整回路３０は図１６に示した回路であり，遅延量RAM７０の具体例は図２３と同じである。また，動作状態監視回路５０は，図１３に示した回路である。
【００９７】
以上説明したとおり，第２の実施の形態のスキュー調整回路によれば，信号線の信号の同時変化本数を立ち上がりと立ち下がりとで区別して監視し，より多い同時変化本数の情報にしたがって，遅延量を設定する。よって，より精度の高い監視結果に基づいてより適切な遅延量の設定が可能になる。また，立ち上がりと立ち下がりとでそれぞれ適切な遅延量を設定することもできる。
【００９８】
以上の実施の形態をまとめると，次の付記のとおりである。
【００９９】
（付記１）
集積回路装置内に設けられ，複数の信号をそれぞれ伝播する複数の信号線と，
前記複数の信号線を伝播する複数の信号がそれぞれ入力される複数のバッファ回路と，
前記複数のバッファ回路の前段にそれぞれ設けられた複数の遅延回路と，
前記複数の信号線の信号変化を監視する監視回路と，
前記監視回路の監視結果出力に基づいて前記複数の遅延回路の遅延量を決定し前記複数の遅延回路に設定する遅延調整回路とを含み，
前記監視回路は，監視期間内において信号変化が生じた信号線の数である信号変化本数を前記監視結果として検出し，
前記遅延調整回路は，前記信号変化本数に基づいて前記遅延量を決定するスキュー調整回路。
【０１００】
（付記２）
付記１において，
前記遅延調整回路は，前記信号変化本数が第１の数の場合に前記複数の遅延回路の遅延量をＮ種類の遅延量に決定し，前記第１の数より多い第２の数の場合に前記複数の遅延回路の遅延量を前記Ｎより多いＭ種類の遅延量に決定するスキュー調整回路。
【０１０１】
（付記３）
付記１または２において，
前記監視回路は，前記複数の信号線の信号変化をそれぞれ検出する複数の信号変化検出回路と，前記複数の信号変化検出回路の信号変化をカウントして前記信号変化本数を出力するカウンタとを含むスキュー調整回路。
【０１０２】
（付記４）
付記１または２において，
前記監視回路は，前記監視期間内における前記信号変化本数の検出を周期的に繰り返して行い，
前記遅延調整回路は，前記監視回路が検出した信号変化本数が異なる周期間で変化した場合に，前記遅延量を新たに決定し前記複数の遅延回路に設定するスキュー調整回路。
【０１０３】
（付記５）
付記１または２において，
前記監視回路は，前記監視期間内における前記信号変化本数の検出を周期的に繰り返して行い，
前記遅延調整回路は，前記監視回路による前記信号変化本数の検出に応答して，前記遅延量を新たに決定し前記複数の遅延回路に設定するスキュー調整回路。
【０１０４】
（付記６）
付記１において，
前記監視回路は，
前記複数の信号線の第１レベルから第２レベルへの第１信号変化をそれぞれ検出する複数の第１信号変化検出回路と，前記複数の信号線の前記第２レベルから前記第１レベルへの第２信号変化をそれぞれ検出する複数の第２信号変化検出回路と，前記第１信号変化の数と第２信号変化の数とを比較する信号変化本数比較回路とを有し，
前記遅延調整回路は，前記第１または第２信号変化の数のうち多いほうの多数信号変化本数に基づいて前記遅延量を決定するスキュー調整回路。
【０１０５】
（付記７）
付記６において，
前記遅延調整回路は，前記多数信号変化本数に加えて前記第１，第２信号変化のうちより多い側の変化データに基づいても前記遅延量を決定するスキュー調整回路。
【０１０６】
（付記８）
付記６または７において，
前記遅延調整回路は，前記多数信号変化本数が，第１の数の場合に前記複数の遅延回路の遅延量をＮ種類の遅延量に決定し，前記第１の数より多い第２の数の場合に前記複数の遅延回路の遅延量を前記Ｎより多いＭ種類の遅延量に決定するスキュー調整回路。
【０１０７】
（付記９）
付記６乃至８のいずれかにおいて，
前記監視回路は，前記監視期間内における前記第１，第２の信号変化の数の検出を周期的に繰り返して行い，
前記遅延調整回路は，前記監視回路が検出した前記多数信号変化本数が，異なる周期間で変化した場合に，前記遅延量を新たに決定し前記複数の遅延回路に設定するスキュー調整回路。
【０１０８】
（付記１０）
付記６乃至８のいずれかにおいて，
前記監視回路は，前記監視期間内における前記第１，第２の信号変化の数の検出を周期的に繰り返して行い，
前記遅延調整回路は，前記監視回路による前記多数信号変化本数の検出に応答して，前記遅延量を新たに決定し前記複数の遅延回路に設定するスキュー調整回路。
【０１０９】
（付記１１）
付記１または２において，
さらに，前記信号変化本数に応じた遅延量を記憶する遅延量メモリを有し，
前記遅延調整回路は，前記遅延量メモリを参照して前記遅延量を決定するスキュー調整回路。
【０１１０】
（付記１２）
付記６乃至８のいずれかにおいて，
さらに，前記第１及び第２の信号変化の数に応じた遅延量を記憶する遅延量メモリを有し，
前記遅延調整回路は，前記遅延量メモリを参照して前記遅延量を決定するスキュー調整回路。
【０１１１】
（付記１３）
付記１１または１２において，
前記遅延量メモリは，書換可能なメモリであり，前記遅延量が書き換えられるスキュー調整回路。
【０１１２】
（付記１４）
付記１１または１２において，
前記遅延量メモリ内の前記遅延量は，前記集積回路装置の複数のバッファ回路の出力を入力する他の集積回路装置のセットアップタイムの仕様に適合する遅延量であるスキュー調整回路。
【０１１３】
（付記１５）
付記１，２，６，７，８のいずれかにおいて，
さらに，前記集積回路装置内のゲートの動作状態を監視する動作状態監視回路を有し，
前記遅延調整回路は，前記動作状態監視回路が検出した動作状態に応じて前記遅延量を決定するスキュー調整回路。
【０１１４】
（付記１６）
付記１〜１５のいずれかにおいて，
前記監視回路と遅延調整回路の動作イネーブルと動作デセーブルを制御する制御イネーブル信号を有し，当該制御イネーブル信号に応じて前記監視回路と遅延調整回路の動作開始と動作停止とが制御されるスキュー調整回路。
【０１１５】
（付記１７）
集積回路装置内に設けられた複数の信号線であって，複数のバッファ回路に信号をそれぞれ伝搬する複数の信号線のうち，監視期間内において信号変化が生じた信号線の数である信号変化本数を検出し，
前記信号変化本数に基づいて，前記複数のバッファ回路の前段にそれぞれ設けられた複数の遅延回路の遅延量を決定し，前記決定した遅延量に前記複数の遅延回路の遅延量を調整するスキュー調整方法。
【０１１６】
（付記１８）
付記１７において，
前記信号変化本数が第１の数の場合に前記複数の遅延回路の遅延量をＮ種類の遅延量に決定し，前記第１の数より多い第２の数の場合に前記複数の遅延回路の遅延量を前記Ｎより多いＭ種類の遅延量に決定するスキュー調整回路方法。
【符号の説明】
【０１１７】
１０：スキュー調整回路                    ２０：同時変化監視回路
３０：遅延調整回路                        ４０：遅延量ROM
DL_0〜DL_7:遅延回路                       OB_0〜OB_7：出力バッファ
SL_0〜SL_7：信号線                        SG_0〜SG_7：信号
【図１】
0005533424.tif 000002
【図２】
0005533424.tif 000003
【図３】
0005533424.tif 000004
【図４】
0005533424.tif 000005
【図５】
0005533424.tif 000006
【図６】
0005533424.tif 000007
【図７】
0005533424.tif 000008
【図８】
0005533424.tif 000009
【図９】
0005533424.tif 000010
【図１０】
0005533424.tif 000011
【図１１】
0005533424.tif 000012
【図１２】
0005533424.tif 000013
【図１３】
0005533424.tif 000014
【図１４】
0005533424.tif 000015
【図１５】
0005533424.tif 000016
【図１６】
0005533424.tif 000017
【図１７】
0005533424.tif 000018
【図１８】
0005533424.tif 000019
【図１９】
0005533424.tif 000020
【図２０】
0005533424.tif 000021
【図２１】
0005533424.tif 000022
【図２２】
0005533424.tif 000023
【図２３】
0005533424.tif 000024
【図２４】
0005533424.tif 000025
【図２５】
0005533424.tif 000026