(57)【要約】【課題】クロックのデューティ比の悪化を抑制する。【解決手段】バッファ部３ａが、入力クロックを受け取り、入力クロックの波形整形を行うことにより、出力クロックを出力し、測定部３ｂが、その出力クロックの第１の電位レベルの第１のパルス幅と第２の電位レベルの第２のパルス幅とを測定し、調整部３ｃが測定部３ｂでの測定結果に基づき、バッファ部３ａの駆動能力を変化させることにより、第１のパルス幅と第２のパルス幅の比を調整する。【選択図】図１
2014216875.tif 000002
【特許請求の範囲】
【請求項１】
入力クロックを受け取り、前記入力クロックの波形整形を行うことにより、出力クロックを出力するバッファ部と、
前記出力クロックの第１の電位レベルの第１のパルス幅と第２の電位レベルの第２のパルス幅とを測定する測定部と、
前記測定部での測定結果に基づき、前記バッファ部の駆動能力を変化させることにより、前記第１のパルス幅と前記第２のパルス幅の比を調整する調整部と、
を有することを特徴とするバッファ回路。
【請求項２】
前記バッファ部は、複数の第１極性のトランジスタと複数の第２極性のトランジスタとを有し、
前記調整部は、前記測定結果に基づき、前記複数の第１極性のトランジスタと前記複数の第２極性のトランジスタのうち、活性化させる第１極性のトランジスタと第２極性のトランジスタの数を制御することで、前記バッファ部の駆動能力を変化させる、ことを特徴とする請求項１に記載のバッファ回路。
【請求項３】
前記測定部は、
前記出力クロックの前記第１の電位レベルから前記第２の電位レベルへの遷移タイミングに同期して動作する第１フリップフロップ及び第２フリップフロップと、
前記出力クロックの前記第２の電位レベルから前記第１の電位レベルへの遷移タイミングに同期して動作する第３フリップフロップ及び第４フリップフロップと、
前記第１フリップフロップ及び前記第３フリップフロップの出力値を遅延する直列に接続された複数の遅延素子と、前記複数の遅延素子のうち使用する遅延素子を選択するセレクタを備えた遅延調整回路と、を有し、
前記第１フリップフロップの出力値を前記第４フリップフロップで取り込める前記遅延素子による遅延量の境界値に基づき前記第１のパルス幅を測定し、
前記第３フリップフロップの出力値を前記第２フリップフロップで取り込める前記遅延素子による遅延量の境界値に基づき前記第２のパルス幅を測定する、
ことを特徴とする請求項１または２に記載のバッファ回路。
【請求項４】
前記測定部は、
前記出力クロックを受け取り、前記出力クロックの前記第１のパルス幅と前記第２のパルス幅の比に応じた電圧値を出力するフィルタを有し、
前記調整部は、前記電圧値と、目標とする前記第１のパルス幅と前記第２のパルス幅の比に応じた前記電圧値の理想値との比較結果に基づいて、前記バッファ部の駆動能力を変化させる、
ことを特徴とする請求項１または２に記載のバッファ回路。
【請求項５】
前記バッファ回路は、クロックに同期して動作する回路部に前記出力クロックを供給するクロック経路に含まれる、
ことを特徴とする請求項１乃至４の何れか一項に記載のバッファ回路。
【請求項６】
クロックに同期して動作する回路部と、
前記回路部に前記クロックを供給するクロック経路に含まれるバッファ回路と、を有し、
前記バッファ回路は、
入力クロックを受け取り、前記入力クロックの波形整形を行うことにより、出力クロックを出力するバッファ部と、
前記出力クロックの第１の電位レベルの第１のパルス幅と第２の電位レベルの第２のパルス幅とを測定する測定部と、
前記測定部での測定結果に基づき、前記バッファ部の駆動能力を変化させることにより、前記第１のパルス幅と前記第２のパルス幅の比を調整する調整部と、
を有することを特徴とする半導体集積回路。
【請求項７】
前記バッファ回路の前記調整部が前記バッファ部の駆動能力を調整するか否かを制御する制御回路を有することを特徴とする請求項６に記載の半導体集積回路。
【請求項８】
前記バッファ部は、複数の第１極性のトランジスタと複数の第２極性のトランジスタとを有し、
前記調整部は、前記測定結果に基づき、前記複数の第１極性のトランジスタと前記複数の第２極性のトランジスタのうち、活性化させる第１極性のトランジスタと第２極性のトランジスタの数を制御することで、前記バッファ部の駆動能力を変化させる、ことを特徴とする請求項６に記載の半導体集積回路。
【請求項９】
前記測定部は、
前記出力クロックの前記第１の電位レベルから前記第２の電位レベルへの遷移タイミングに同期して動作する第１フリップフロップ及び第２フリップフロップと、
前記出力クロックの前記第２の電位レベルから前記第１の電位レベルへの遷移タイミングに同期して動作する第３フリップフロップ及び第４フリップフロップと、
前記第１フリップフロップ及び前記第３フリップフロップの出力値を遅延する直列に接続された複数の遅延素子と、前記複数の遅延素子のうち使用する遅延素子を選択するセレクタを備えた遅延調整回路と、を有し、
前記第１フリップフロップの出力値を前記第４フリップフロップで取り込める前記遅延素子による遅延量の境界値に基づき前記第１のパルス幅を測定し、
前記第３フリップフロップの出力値を前記第２フリップフロップで取り込める前記遅延素子による遅延量の境界値に基づき前記第２のパルス幅を測定する、
ことを特徴とする請求項６に記載の半導体集積回路。
【請求項１０】
前記測定部は、
前記出力クロックを受け取り、前記出力クロックの前記第１のパルス幅と前記第２のパルス幅の比に応じた電圧値を出力するフィルタを有し、
前記調整部は、前記電圧値と、目標とする前記第１のパルス幅と前記第２のパルス幅の比に応じた前記電圧値の理想値との比較結果に基づいて、前記バッファ部の駆動能力を変化させる、
ことを特徴とする請求項６に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッファ回路及び半導体集積回路に関する。
【背景技術】
【０００２】
半導体集積回路や半導体集積回路を含むシステムにおいて、たとえば、ＰＬＬ（Phase Locked Loop）回路などのクロック生成回路で生成されたクロックは、クロックの立ち上がりまたは立ち下がりタイミングに同期して演算などの動作を行う回路に供給される。その際、たとえば、クロック生成回路から離れた位置にある回路には、複数段のバッファ回路（クロックバッファと呼ばれる）を含むクロック経路を介してクロックが供給される。
【０００３】
なお、従来、ＰＬＬなどから発生されるクロックのデューティ比を５０：５０に補正する技術や、クロックを受ける回路の規模や特性に応じてデューティ比を変える技術があった。なお、デューティ比が５０：５０とは、１周期のクロックにおいて、Ｈ（High）レベルのパルス幅が占めるパーセンテージが５０％、Ｌ（Low）レベルのパルス幅が占めるパーセンテージが５０％であることを示す。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−１５９６１３号公報
【特許文献２】特開２００４−３４８５７３号公報
【特許文献３】特開２００５−２９４９４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、クロック経路のバッファ回路内に含まれるトランジスタの特性のばらつきにより、クロックを用いて動作する回路に到達する際には、クロックのデューティ比が意図したものと異なってしまい、回路が適切に動作しなくなる可能性があった。
【課題を解決するための手段】
【０００６】
発明の一観点によれば、以下のようなバッファ回路が提供される。バッファ回路は、入力クロックを受け取り、前記入力クロックの波形整形を行うことにより、出力クロックを出力するバッファ部と、前記出力クロックの第１の電位レベルの第１のパルス幅と第２の電位レベルの第２のパルス幅とを測定する測定部と、前記測定部での測定結果に基づき、前記バッファ部の駆動能力を変化させることにより、前記第１のパルス幅と前記第２のパルス幅の比を調整する調整部と、を有する。
【０００７】
また、発明の一観点によれば、クロックに同期して動作する回路部と、前記回路部に前記クロックを供給するクロック経路に含まれるバッファ回路と、を有し、前記バッファ回路は、入力クロックを受け取り、前記入力クロックの波形整形を行うことにより、出力クロックを出力するバッファ部と、前記出力クロックの第１の電位レベルの第１のパルス幅と第２の電位レベルの第２のパルス幅とを測定する測定部と、前記測定部での測定結果に基づき、前記バッファ部の駆動能力を変化させることにより、前記第１のパルス幅と前記第２のパルス幅の比を調整する調整部と、を有する半導体集積回路が提供される。
【発明の効果】
【０００８】
開示のバッファ回路及び半導体集積回路によれば、クロックのデューティ比の悪化を抑制できる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施の形態の半導体集積回路及びバッファ回路の一例を示す図である。
【図２】第２の実施の形態の半導体集積回路の一例を示す図である。
【図３】第２の実施の形態のバッファ回路の一例を示す図である。
【図４】第２の実施のバッファ回路の動作の一例を示すフローチャートである。
【図５】クロックのＨレベルのパルス幅の測定例を示すタイミングチャートである。
【図６】クロックのＬレベルのパルス幅の測定例を示すタイミングチャートである。
【図７】調整部の動作を記述したコードの一例を示す図である。
【図８】本実施の形態の半導体集積回路及びバッファ回路を用いたことによる効果の一例を示す図である。
【図９】第３の実施の形態のバッファ回路の一例を示す図である。
【図１０】第３の実施のバッファ回路の動作の一例を示すフローチャートである。
【図１１】クロックのパルス幅の測定及び調整例を示すタイミングチャートである。
【図１２】調整部の動作を記述したコードの一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
（第１の実施の形態）
以下に示す半導体集積回路及びバッファ回路は、クロック経路に含まれるバッファ回路内のトランジスタの特性のばらつきにより、クロックのデューティ比が悪化すること（意図したものと異なってしまうこと）を防止するものである。トランジスタの特性のばらつきとは、たとえば、バッファ回路に含まれるｐチャネル型ＭＯＳＦＥＴ（Metal-Oxide Semiconductor Field Effect Transistor）（以下ｐＭＯＳと略す）とｎチャネル型ＭＯＳＦＥＴ（以下ｎＭＯＳと略す）の抵抗比のばらつきなどがある。
【００１１】
クロックのデューティ比の悪化はクロックが高周波数化するほど顕著となるが、本実施の形態の半導体集積回路及びバッファ回路はそのような場合でも、伝搬するクロックのデューティ比の悪化を抑制できるようにしたものである。
【００１２】
図１は、第１の実施の形態の半導体集積回路及びバッファ回路の一例を示す図である。
半導体集積回路１は、クロック生成回路２、バッファ回路３−１，３−２，…，３−ｎ、回路部４、制御回路５を有する。
【００１３】
クロック生成回路２は、半導体集積回路１内で使用するクロックを生成する。クロック生成回路２は、たとえば、外部からの基準クロックをもとに内部クロックを生成するＰＬＬ回路またはＤＬＬ（Delay Locked Loop）回路などである。なお、クロック生成回路２は、半導体集積回路１の外部にあってもよい。
【００１４】
バッファ回路３−１〜３−ｎは、クロック生成回路２と回路部４との間のクロック経路に直列に複数段設けられており、入力されるクロックの波形整形を行う。
回路部４は、クロックの立ち上がりタイミングまたは立ち下がりタイミングに応じて所定の動作を行う。回路部４としては、たとえば、高速インターフェース回路、ＤＤＲ  ＳＤＲＡＭ（Double-Data-Rate Synchronous Dynamic Random Access Memory）などがあるが、これらに限定されるものではないことは言うまでもない。
【００１５】
制御回路５は、バッファ回路３−１〜３−ｎなどの制御を行う。
バッファ回路３−１は、バッファ部３ａ、測定部３ｂ、調整部３ｃを有する。
バッファ部３ａは、クロックを入力し、クロックの波形整形を行う。図１の例では、バッファ部３ａは、インバータＩＮＶ、トランジスタｔａ１，ｔａ２，…，ｔａｎ、ｔｂ１，ｔｂ２，…，ｔｂｎ、ｔｃ１，ｔｃ２，…，ｔｃｎ、ｔｄ１，ｔｄ２，…，ｔｄｎを有している。トランジスタｔａ１〜ｔａｎ，ｔｂ１〜ｔｂｎは、ｐＭＯＳである。トランジスタｔｃ１〜ｔｃｎ、ｔｄ１〜ｔｄｎは、ｎＭＯＳである。
【００１６】
トランジスタｔａ１〜ｔａｎのソースには電源電圧が印加されており、ドレインは、トランジスタｔｂ１〜ｔｂｎのソースに接続されている。トランジスタｔｂ１〜ｔｂｎのドレインは、後段のバッファ回路３−２及びトランジスタｔｃ１〜ｔｃｎのドレインに接続されている。トランジスタｔｃ１〜ｔｃｎのソースは、トランジスタｔｄ１〜ｔｄｎのドレインに接続されており、トランジスタｔｄ１〜ｔｄｎのソースは接地されている。
【００１７】
また、トランジスタｔａ１〜ｔａｎ，ｔｄ１〜ｔｄｎのゲートは、調整部３ｃに接続されており、トランジスタｔｂ１〜ｔｂｎ，ｔｃ１〜ｔｃｎのゲートはインバータＩＮＶの出力端子に接続されている。
【００１８】
このようなバッファ部３ａでは、調整部３ｃからの制御信号により、トランジスタｔａ１〜ｔａｎ，ｔｄ１〜ｔｄｎが個別にオンまたはオフされる。これによって、トランジスタｔａ１〜ｔａｎ，ｔｄ１〜ｔｄｎに接続されるトランジスタｔｂ１〜ｔｂｎ，ｔｃ１〜ｔｃｎが個別に活性化するか非活性化するかが選択される。トランジスタｔｂ１〜ｔｂｎ，ｔｃ１〜ｔｃｎのうち、活性化させるｎＭＯＳとｐＭＯＳの組により、インバータとしての機能が行われる。
【００１９】
なお、図１の例において、インバータＩＮＶについても、上記と同様に、活性化または非活性化が選択される複数のトランジスタを有していてもよい。
測定部３ｂは、バッファ部３ａから出力される出力クロックのＨレベルのパルス幅と、Ｌレベルのパルス幅とを測定し、測定結果を調整部３ｃに通知する。
【００２０】
調整部３ｃは、測定部３ｂでの測定結果に基づき、バッファ部３ａの駆動能力を変化させて、クロックのＨレベルのパルス幅と、Ｌレベルのパルス幅の比（つまりデューティ比）を調整する。たとえば、調整部３ｃは、測定部３ｂでの測定結果に基づき、ｐＭＯＳであるトランジスタｔｂ１〜ｔｂｎと、ｎＭＯＳであるトランジスタｔｃ１〜ｔｃｎのうち、活性化させるｐＭＯＳとｎＭＯＳを選択することで、バッファ部３ａの駆動能力を変化させる。
【００２１】
次に、第１の実施の形態の半導体集積回路１の動作の一例を説明する。なお、以下の説明では、他のバッファ回路３−２〜３−ｎについてもバッファ回路３−１と同様の回路を有しているものとして説明するが、バッファ回路３−１〜３−ｎのうち、少なくとも何れか１つが図１に示したようなバッファ回路３−１の各要素を有していてもよい。
【００２２】
制御回路５は、バッファ回路３−１〜３−ｎの調整部３ｃがバッファ部３ａの駆動能力を調整するか否かを制御する。制御回路５から、バッファ回路３−１〜３−ｎの調整部３ｃに対して、バッファ部３ａの駆動能力の調整を指示する旨の信号が供給されると、調整部３ｃは、トランジスタｔｂ１〜ｔｂｎ，ｔｃ１〜ｔｃｎのうち、任意のｐＭＯＳとｎＭＯＳの組を活性化させる。
【００２３】
バッファ部３ａは、入力されたクロックＣＫ１を、インバータＩＮＶと、トランジスタｔｂ１〜ｔｂｎ，ｔｃ１〜ｔｃｎのうち、活性化されているｐＭＯＳとｎＭＯＳの組によるインバータとで、波形整形を行う。このとき、バッファ部３ａの出力クロックは、たとえば、図１に示すような波形のクロックＣＫ２であったとする。このクロックＣＫ２は、Ｈレベルのパルス幅が、Ｌレベルのパルス幅よりも短くなっている。
【００２４】
測定部３ｂは、クロックＣＫ２のＨレベルのパルス幅と、Ｌレベルのパルス幅とを測定し、測定結果を調整部３ｃに通知する。詳細は後述するが、調整部３ｃは、たとえば、デューティ比を５０：５０にする場合、制御信号により、トランジスタｔａ１〜ｔａｎ，ｔｄ１〜ｔｄｎを制御して、活性化させるｐＭＯＳとｎＭＯＳの組み合わせを変える。そして、調整部３ｃは、そのときの測定結果を測定部３ｂから受け、デューティ比が最も５０：５０に近くなるｐＭＯＳとｎＭＯＳの組み合わせを探す。
【００２５】
デューティ比が最も５０：５０に近くなるｐＭＯＳとｎＭＯＳの組み合わせが見つかると、調整部３ｃは、そのときの制御信号の値を、図示しない保持部に保持しておく。以上のようにして、バッファ部３ａの駆動能力の調整が終了すると、調整部３ｃは、調整が完了した旨の信号を制御回路５に送る。これにより、バッファ回路３−１からは、デューティ比が５０：５０により近いクロックＣＫ３が出力される。以上のような処理が、たとえば、バッファ回路３−２〜３−ｎにおいても行われる。
【００２６】
なお、調整部３ｃは、制御信号により、トランジスタｔａ１〜ｔａｎ，ｔｄ１〜ｔｄｎを制御して、活性化させるｐＭＯＳとｎＭＯＳの組み合わせを変えて、クロックのデューティ比を３０：７０や、７０：３０など任意に変更することができる。
【００２７】
以上のように、本実施の形態の半導体集積回路１及びバッファ回路３−１では、バッファ部３ａから出力されるクロックのＨ側とＬ側のパルス幅を測定し、測定結果に応じてバッファ部３ａの駆動能力を変化させてクロックのデューティ比が調整される。これにより、クロックが高周波数化しても、バッファ部３ａに含まれるトランジスタの特性の製造ばらつきによらず、伝搬されるクロックのデューティ比の悪化を抑制できる。このため、意図しないデューティ比のクロックが入力されることによる回路部４での誤動作の発生を抑制できる。
【００２８】
たとえば、回路部４が、クロックの立ち上がりエッジと立ち下がりエッジの両方を用いるＤＤＲ  ＳＤＲＡＭのような回路であっても、Ｈ側またはＬ側の一方のパルス幅が狭くなってセットアップに支障がでてくるような問題の発生を低減できる。
【００２９】
（第２の実施の形態）
図２は、第２の実施の形態の半導体集積回路の一例を示す図である。
半導体集積回路１０は、ＰＬＬ回路１１、バッファ回路１２−１，１２−２，…，１２−ｎ、回路部１３、制御回路１４を有している。
【００３０】
ＰＬＬ回路１１は、外部クロックを受けて、所定の周波数のクロック（内部クロック）を生成する。バッファ回路１２−１〜１２−ｎは、ＰＬＬ回路１１と回路部１３との間のクロック経路に複数段設けられており、入力されるクロックの波形整形を行う。制御回路１４は、バッファ回路１２−１〜１２−ｎなどの制御を行う。
【００３１】
図３は、第２の実施の形態のバッファ回路の一例を示す図である。図３では、図２に示したバッファ回路１２−１の一例を示しているが、他のバッファ回路１２−２〜１２−ｎも同様の回路であってもよいし、たとえば、バッファ回路１２−ｎが、図３に示すような回路であり、他は通常のバッファ回路であってもよい。
【００３２】
バッファ回路１２−１は、バッファ部１２ａ、測定部１２ｂ、調整部１２ｃを有している。
バッファ部１２ａは、図３の例では、図１に示したバッファ部３ａと同じ回路としている。
【００３３】
測定部１２ｂは、Ｄ型のフリップフロップ（以下ＤＦＦと表記する）２１，２２，２３，２４、セレクタ２５、遅延調整回路２６を有している。
ＤＦＦ２１，２２のデータ端子（図３中では“Ｄ”と表記されている）は、調整部１２ｃに接続されている。ＤＦＦ２１のクロック端子には、バッファ部１２ａからの出力クロックが入力され、ＤＦＦ２２のクロック端子には、バッファ部１２ａからの出力クロックが、電位レベルが反転されて入力される。ＤＦＦ２１，２２の出力端子（図３中では“Ｑ”と表記されている）は、それぞれセレクタ２５の一方の入力端子と他方の入力端子に接続されている。セレクタ２５は、調整部１２ｃからの選択信号に応じて、ＤＦＦ２１の出力信号か、ＤＦＦ２２の出力信号の何れか一方を選択して出力する。
【００３４】
遅延調整回路２６は、セレクタ２５の出力信号を遅延する。遅延調整回路２６は、遅延バッファｂｆ１，ｂｆ２，…，ｂｆｍとセレクタｓｅｌを有している。
遅延バッファｂｆ１〜ｂｆｍは、直列に接続されており、さらに、各遅延バッファｂｆ１〜ｂｆｍの出力端子は、それぞれセレクタｓｅｌの複数の入力端子の何れかに接続されている。
【００３５】
セレクタｓｅｌは、ｍ個の遅延バッファｂｆ１〜ｂｆｍに対応して、ｍ個の入力端子を有している。ｍ個の入力端子には、遅延バッファｂｆ１で遅延されたセレクタ２５の出力信号、２段の遅延バッファｂｆ１，ｂｆ２で遅延されたセレクタ２５の出力信号、…、ｍ段の遅延バッファｂｆ１〜ｂｆｍで遅延されたセレクタ２５の出力信号が入力される。セレクタｓｅｌは、調整部１２ｃからの選択信号に応じて、ｍ個の入力端子の何れかに入力された信号を選択して出力する。
【００３６】
ＤＦＦ２３，２４のデータ端子は、遅延調整回路２６の出力端子（すなわちセレクタｓｅｌの出力端子）に接続されている。ＤＦＦ２３のクロック端子には、バッファ部１２ａからの出力クロックが、電位レベルが反転されて入力される。ＤＦＦ２４のクロック端子には、バッファ部１２ａからの出力クロックが入力される。ＤＦＦ２３，２４の出力端子は、調整部１２ｃに接続されている。
【００３７】
調整部１２ｃは、測定部１２ｂでの測定結果に基づいた制御信号を生成し、バッファ部１２ａのトランジスタｔａ１〜ｔａｎ，ｔｄ１〜ｔｄｎに供給し、バッファ部１２ａの駆動能力を変化させて、クロックのデューティ比を調整する。
【００３８】
以下、第２の実施の形態のバッファ回路１２−１の動作例を説明する。
（バッファ回路１２−１の動作例）
図４は、第２の実施のバッファ回路の動作の一例を示すフローチャートである。
【００３９】
調整部１２ｃは、制御回路１４から、バッファ部１２ａの駆動能力を調整する旨の指示を受け付けると（ステップＳ１）、トランジスタｔｂ１〜ｔｂｎ，ｔｃ１〜ｔｃｎから任意の組み合わせで、活性化させるトランジスタを設定する（ステップＳ２）。ステップＳ２の処理では、調整部１２ｃは、トランジスタｔａ１〜ｔａｎ、ｔｄ１〜ｔｄｎに制御信号（ゲート電圧）の初期値を供給することで、トランジスタｔｂ１〜ｔｂｎ，ｔｃ１〜ｔｃｎのうち活性化または非活性化させるトランジスタを設定する。
【００４０】
その後、調整部１２ｃの制御のもと、測定部１２ｂは、バッファ部１２ａから出力されるクロックのＨレベルのパルス幅と、Ｌレベルのパルス幅を測定する（ステップＳ３，Ｓ４）。そして、調整部１２ｃは、トランジスタｔｂ１〜ｔｂｎ，ｔｃ１〜ｔｃｎの全組み合わせを用いて測定が終わったか否かを判定する（ステップＳ５）。残っているトランジスタの組み合わせがある場合には、ステップＳ２の処理で、未測定の組み合わせが選択され、ステップＳ３，Ｓ４のパルス幅の測定処理が繰り返される。
【００４１】
全組み合わせで測定が終わった場合、調整部１２ｃは、測定結果に基づき、所定のデューティ比に応じて、活性化させるトランジスタの組み合わせを決定し、バッファ部１２ａに設定し（ステップＳ６）、駆動能力の調整処理を終了する。このとき調整部１２ｃは、制御回路１４に対して、駆動能力の調整が終了した旨を通知するようにしてもよい。
【００４２】
なお、上記の各ステップの順序は特に限定されるものではなく、たとえば、ステップＳ３の処理とステップＳ４の処理の順序を入れ替えるようにしてもよい。
以下、クロックのパルス幅の測定例を説明する。
【００４３】
（クロックのパルス幅の測定例）
図５は、クロックのＨレベルのパルス幅の測定例を示すタイミングチャートである。
図５には、調整部１２ｃから遅延調整回路２６のセレクタｓｅｌに供給される複数ビットの選択信号が示されている。また、バッファ部１２ａから測定部１２ｂに入力されるクロックＣＬＫ、調整部１２ｃからＤＦＦ２１への入力データＤＦＦ２１＿Ｄ、ＤＦＦ２１への入力クロックＤＦＦ２１＿ＣＫが示されている。さらに、ＤＦＦ２１の出力データＤＦＦ２１＿Ｑ、ＤＦＦ２３の入力データＤＦＦ２３＿Ｄと入力クロックＤＦＦ２３＿ＣＫ、ＤＦＦ２３の出力データＤＦＦ２３＿Ｑ、調整部１２ｃ内で生成される信号である測定結果１〜５の例が示されている。なお、図５の例では、入力データＤＦＦ２１＿Ｄは、クロックＣＬＫの１周期分のパルス幅をもつ信号としている。また、以下の例では、各遅延バッファｂｆ１〜ｂｆｍの遅延量は等しいものとするが、ばらついていてもよい。
【００４４】
図５に示されている例では、タイミングｔ１で、選択信号が“１”となり、クロックＣＬＫがＨレベルに立ち上がり、入力データＤＦＦ２１＿Ｄが“１”になっている。次にクロックＣＬＫがＨレベルに立ち上がるタイミングｔ２で、入力データＤＦＦ２１＿ＤがＤＦＦ２１に取り込まれ、出力データＤＦＦ２１＿Ｑが“１”となる。
【００４５】
なお、クロックのＨレベルのパルス幅の測定の際、調整部１２ｃは、測定部１２ｂのセレクタ２５に対して、ＤＦＦ２１の出力データＤＦＦ２１＿Ｑを選択する旨の選択信号（図示せず）を供給している。
【００４６】
選択信号が“１”のとき、遅延調整回路２６のセレクタｓｅｌは、１段の遅延バッファｂｆ１の出力信号を選択して出力する。そのため、ＤＦＦ２３の入力データＤＦＦ２３＿Ｄは、ＤＦＦ２１の出力データＤＦＦ２１＿Ｑに対して、遅延バッファｂｆ１分の遅延時間ｄ１だけ遅れる。
【００４７】
クロックＣＬＫの電位レベルが反転したものであるＤＦＦ２３の入力クロックＤＦＦ２３＿ＣＫが立ち上がるタイミングｔ３では、ＤＦＦ２３の入力データＤＦＦ２３＿Ｄは“１”であるため、ＤＦＦ２３に“１”が取り込まれる。その結果、出力データＤＦＦ２３＿Ｑが“１”となる。この結果を受けて、調整部１２ｃは、次にクロックＣＬＫがＨレベルに立ち上がるタイミングｔ４で、測定結果１を“１”としている。
【００４８】
また、タイミングｔ４では、調整部１２ｃは、セレクタｓｅｌに供給する選択信号を“２”、入力データＤＦＦ２１＿Ｄを“１”とする。これにより、次にクロックＣＬＫがＨレベルに立ち上がるタイミングｔ５で、入力データＤＦＦ２１＿ＤがＤＦＦ２１に取り込まれ、出力データＤＦＦ２１＿Ｑが“１”となる。
【００４９】
選択信号が“２”のとき、遅延調整回路２６のセレクタｓｅｌは、２段の遅延バッファｂｆ１，ｂｆ２の出力信号を選択して出力する。そのため、ＤＦＦ２３の入力データＤＦＦ２３＿Ｄは、ＤＦＦ２１の出力データＤＦＦ２１＿Ｑに対して、遅延バッファ２段分の遅延時間ｄ２だけ遅れる。
【００５０】
ＤＦＦ２３の入力クロックＤＦＦ２３＿ＣＫが立ち上がるタイミングｔ６では、ＤＦＦ２３の入力データＤＦＦ２３＿Ｄは“１”であるため、ＤＦＦ２３に“１”が取り込まれる。その結果、出力データＤＦＦ２３＿Ｑも“１”となる。この結果を受けて、調整部１２ｃは、次にクロックＣＬＫがＨレベルに立ち上がるタイミングｔ７で、測定結果２を“１”としている。
【００５１】
タイミングｔ７以降のタイミングｔ８，ｔ９，ｔ１０，ｔ１１，ｔ１２，ｔ１３，ｔ１４，ｔ１５，ｔ１６においても同様の処理が行われる。すなわち、調整部１２ｃは、選択信号の値を“３”、“４”、“５”とインクリメントし、遅延調整回路２６に遅延バッファ３段分、４段分、５段分の遅延時間ｄ３，ｄ４，ｄ５を生じさせる。このときもタイミングｔ９，ｔ１２では、ＤＦＦ２３の入力データＤＦＦ２３＿Ｄは“１”であるため、ＤＦＦ２３に“１”が取り込まれ、出力データＤＦＦ２３＿Ｑも“１”となる。この結果を受けて、調整部１２ｃは、タイミングｔ１０，ｔ１３で、測定結果３，４を“１”としている。
【００５２】
一方、タイミングｔ１５では、ＤＦＦ２３の入力データＤＦＦ２３＿Ｄは“０”であるため、ＤＦＦ２３に“０”が取り込まれ、出力データＤＦＦ２３＿Ｑも“０”となる。この結果を受けて、調整部１２ｃは、タイミングｔ１６で、測定結果５を“０”とする。
【００５３】
これにより、調整部１２ｃは、クロックＣＬＫのＨレベルのパルス幅が、遅延バッファ４段分の遅延時間以上、遅延バッファ５段分の遅延時間未満であることを検出する。
このように、測定部１２ｂでは、ＤＦＦ２１の出力値をＤＦＦ２３で取り込める遅延バッファｂｆ１〜ｂｆｍによる遅延量の境界値に基づきＨレベルのパルス幅が測定される。
【００５４】
図６は、クロックのＬレベルのパルス幅の測定例を示すタイミングチャートである。
図６でも、調整部１２ｃから遅延調整回路２６のセレクタｓｅｌに供給される複数ビットの選択信号が示されている。また、バッファ部１２ａから測定部１２ｂに入力されるクロックＣＬＫ、調整部１２ｃからＤＦＦ２２への入力データＤＦＦ２２＿Ｄ、ＤＦＦ２２への入力クロックＤＦＦ２２＿ＣＫが示されている。さらに、ＤＦＦ２２の出力データＤＦＦ２２＿Ｑ、ＤＦＦ２４への入力データＤＦＦ２４＿Ｄと入力クロックＤＦＦ２４＿ＣＫ、ＤＦＦ２４の出力データＤＦＦ２４＿Ｑ、調整部１２ｃ内で生成される測定結果６〜１０の例が示されている。なお、図６の例では、入力データＤＦＦ２２＿Ｄは、クロックＣＬＫの１周期分のパルス幅をもつ信号としている。
【００５５】
図６に示されている例では、タイミングｔ２０で、選択信号が“１”となり、クロックＣＬＫがＬレベルに立ち下がり、入力データＤＦＦ２２＿Ｄが“１”になっている。なお、ＤＦＦ２２には、クロックＣＬＫの電位レベルが反転した入力クロックＤＦＦ２２＿ＣＫが入力される。そのため、タイミングｔ２０では、入力クロックＤＦＦ２２＿ＣＫはＨレベルに立ち上がる。
【００５６】
次に入力クロックＤＦＦ２２＿ＣＫがＨレベルに立ち上がるタイミングｔ２１では、入力データＤＦＦ２２＿ＤがＤＦＦ２２に取り込まれ、出力データＤＦＦ２２＿Ｑが“１”となる。
【００５７】
なお、クロックのＬレベルのパルス幅の測定の際、調整部１２ｃは、測定部１２ｂのセレクタ２５に対して、ＤＦＦ２２の出力データＤＦＦ２２＿Ｑを選択する旨の選択信号（図示せず）を供給している。
【００５８】
前述したように、選択信号が“１”のとき、遅延調整回路２６のセレクタｓｅｌは、１段の遅延バッファｂｆ１の出力信号を選択して出力する。そのため、ＤＦＦ２４の入力データＤＦＦ２４＿Ｄは、ＤＦＦ２２の出力データＤＦＦ２２＿Ｑに対して、遅延バッファｂｆ１分の遅延時間ｄ１だけ遅れる。
【００５９】
クロックＣＬＫと同じ電位レベルとなるＤＦＦ２４の入力クロックＤＦＦ２４＿ＣＫが立ち上がるタイミングｔ２２では、ＤＦＦ２４の入力データＤＦＦ２４＿Ｄは“１”であるため、ＤＦＦ２４に“１”が取り込まれ、出力データＤＦＦ２４＿Ｑが“１”となる。この結果を受けて、調整部１２ｃは、次にクロックＣＬＫがＬレベルに立ち下がるタイミングｔ２３で、測定結果６を“１”としている。
【００６０】
タイミングｔ２３以降のタイミングｔ２４，ｔ２５，ｔ２６，ｔ２７，ｔ２８，ｔ２９，ｔ３０，ｔ３１，ｔ３２，ｔ３３，ｔ３４，３５においても同様の処理が行われる。すなわち、調整部１２ｃは、選択信号の値を“２”、“３”、“４”、“５”とインクリメントし、遅延調整回路２６に遅延バッファ２段分、３段分、４段分、５段分の遅延時間ｄ２，ｄ３，ｄ４，ｄ５を生じさせる。このときもタイミングｔ２５，ｔ２８，ｔ３１では、ＤＦＦ２４の入力データＤＦＦ２４＿Ｄは“１”であるため、ＤＦＦ２４に“１”が取り込まれ、出力データＤＦＦ２４＿Ｑも“１”となる。この結果を受けて、調整部１２ｃは、タイミングｔ２６，ｔ２９，ｔ３２で、測定結果７，８，９を“１”としている。
【００６１】
一方、タイミングｔ３４では、ＤＦＦ２４の入力データＤＦＦ２４＿Ｄは“０”であるため、ＤＦＦ２４に“０”が取り込まれ、出力データＤＦＦ２４＿Ｑも“０”となる。この結果を受けて、調整部１２ｃは、タイミングｔ３５で、測定結果１０を“０”とする。
【００６２】
これにより、調整部１２ｃは、クロックＣＬＫのＬレベルのパルス幅が、遅延バッファ４段分の遅延時間以上、遅延バッファ５段分の遅延時間未満であることを検出する。
このように、測定部１２ｂでは、ＤＦＦ２２の出力値をＤＦＦ２４で取り込める遅延バッファｂｆ１〜ｂｆｍによる遅延量の境界値に基づきＬレベルのパルス幅が測定される。
【００６３】
なお、上記のように、クロックのＨレベルのパルス幅を測定するときも、Ｌレベルのパルス幅を測定するときも、同じ遅延調整回路２６の遅延バッファｂｆ１〜ｂｆｍが用いられる。そのため、各遅延バッファｂｆ１〜ｂｆｍの遅延時間にばらつきがあっても、Ｈレベルのパルス幅の測定時と、Ｌレベルのパルス幅の測定時に同じだけの影響を及ぼすことになる。したがって、クロックのデューティ比の調整の際には、同じばらつきによる影響を受けて測定されたＨレベルとＬレベルのパルス幅が用いられるため、上記ばらつきによりクロックのデューティ比の調整精度が悪化することを抑制できる。
【００６４】
次に、第２の実施の形態における調整部１２ｃの動作を記述したコードの一例を示す。
（調整部３０ｃの動作を記述したコード例）
図７は、調整部の動作を記述したコードの一例を示す図である。調整部１２ｃは、たとえば、ＣＰＵ（Central Processing Unit）などの制御装置を有しており、図７に示すようなコード（ソフトウェア）を実行することで、クロックのＨレベルのパルス幅と、Ｌレベルのパルス幅の調整を行う。なお、調整部１２ｃは、図７に示すような記述の処理を実行する回路であってもよい。
【００６５】
１〜３行目では、変数ｃｕｒｍｉｎｄｉｆｆ，ｐｃｈｍｉｎｄｉｆｆ，ｎｃｈｍｉｎｄｉｆｆの初期値が与えられている。
変数ｃｕｒｍｉｎｄｉｆｆは、クロックのＨレベルのパルス幅とＬレベルのパルス幅の差の最小値が代入される変数である。図７に示した例では、Ｈレベルのパルス幅とＬレベルのパルス幅の差は、前述した遅延調整回路２６の遅延バッファｂｆ１〜ｂｆｍの段数で表され、変数ｃｕｒｍｉｎｄｉｆｆの初期値は、総遅延バッファ段数（＝ｍ）＋１である。
【００６６】
変数ｐｃｈｍｉｎｄｉｆｆは、クロックのＨレベルのパルス幅とＬレベルのパルス幅の差が最小のときの、バッファ部１２ａのトランジスタｔａ１〜ｔａｎへの制御信号（ゲート電圧のレベル）の構成情報が保持される変数である。変数ｐｃｈｍｉｎｄｉｆｆの初期値は、０である。図７において、調整部１２ｃからトランジスタｔａ１〜ｔａｎに供給される制御信号は、ｐｃｈ１＿ｅｎ，ｐｃｈ２＿ｅｎ，…，ｐｃｈＮ＿ｅｎと表記されている。また、制御信号ｐｃｈ１＿ｅｎ〜ｐｃｈＮ＿ｅｎによるＮビットの構成情報は、｛ｐｃｈＮ＿ｅｎ，…，ｐｃｈ２＿ｅｎ，ｐｃｈ１＿ｅｎ｝と表記されている。
【００６７】
変数ｎｃｈｍｉｎｄｉｆｆは、クロックのＨレベルのパルス幅とＬレベルのパルス幅の差が最小のときの、バッファ部１２ａのトランジスタｔｄ１〜ｔｄｎへの制御信号（ゲート電圧のレベル）の構成情報が保持される変数である。変数ｎｃｈｍｉｎｄｉｆｆの初期値は、０である。図７において、調整部１２ｃからトランジスタｔｄ１〜ｔｄｎに供給される制御信号は、ｎｃｈ１＿ｅｎ，ｎｃｈ２＿ｅｎ，…，ｎｃｈＮ＿ｅｎと表記されている。また、制御信号ｎｃｈ１＿ｅｎ〜ｎｃｈＮ＿ｅｎのＮビットの構成情報は、｛ｎｃｈＮ＿ｅｎ，…，ｎｃｈ２＿ｅｎ，ｎｃｈ１＿ｅｎ｝と表記されている。
【００６８】
４行目では、構成情報｛ｐｃｈＮ＿ｅｎ，…，ｐｃｈ２＿ｅｎ，ｐｃｈ１＿ｅｎ｝が、１（たとえば、Ｎ＝４ビットの場合だと｛０００１｝）に初期化される。
この場合、図３に示したバッファ部１２ａのトランジスタｔａ１がオフしてｔａ２〜ｔａｎがオンするので、トランジスタｔｂ１が非活性化し、トランジスタｔｂ２〜ｔｂｎが活性化する。
【００６９】
その後、｛ｐｃｈＮ＿ｅｎ，…，ｐｃｈ２＿ｅｎ，ｐｃｈ１＿ｅｎ｝＜２Nの関係を満たさなくなるまで、構成情報｛ｐｃｈＮ＿ｅｎ，…，ｐｃｈ２＿ｅｎ，ｐｃｈ１＿ｅｎ｝の値がインクリメントされて、以下の５〜１５行の処理が繰り返される。
【００７０】
５行目では、構成情報｛ｎｃｈＮ＿ｅｎ，…，ｎｃｈ２＿ｅｎ，ｎｃｈ１＿ｅｎ｝が、１に初期化される。
この場合、図３に示したバッファ部１２ａのトランジスタｔｄ１がオンしてｔｄ２〜ｔｄｎがオフするので、トランジスタｔｃ１が活性化し、トランジスタｔｃ２〜ｔｃｎが非活性化する。
【００７１】
以上のような構成情報｛ｐｃｈＮ＿ｅｎ，…，ｐｃｈ２＿ｅｎ，ｐｃｈ１＿ｅｎ｝，｛ｎｃｈＮ＿ｅｎ，…，ｎｃｈ２＿ｅｎ，ｎｃｈ１＿ｅｎ｝の初期化により、図４に示したステップＳ２の処理が行われる。
【００７２】
その後、｛ｎｃｈＮ＿ｅｎ，…，ｎｃｈ２＿ｅｎ，ｎｃｈ１＿ｅｎ｝＜２Nの関係を満たさなくなるまで、構成情報｛ｎｃｈＮ＿ｅｎ，…，ｎｃｈ２＿ｅｎ，ｎｃｈ１＿ｅｎ｝の値がインクリメントされて、以下の６〜１４行の処理が繰り返される。
【００７３】
６〜８行目では、上記の構成情報の値に応じた制御信号により駆動能力が設定されたバッファ部１２ａから出力されるクロックのパルス幅の測定で得られた測定結果に基づき、変数ｈｐｗｉｄｔｈ，ｌｐｗｉｄｔｈが更新される。
【００７４】
変数ｈｐｗｉｄｔｈには、クロックのＨレベルのパルス幅（Ｈｉｇｈ  Ｐｕｌｓｅ幅）の測定値が代入され、変数ｌｐｗｉｄｔｈには、クロックのＬレベルのパルス幅（Ｌｏｗ  Ｐｕｌｓｅ幅）の測定値が代入される。パルス幅の測定値は、たとえば、遅延バッファｂｆ１〜ｂｆｍの段数で表現される。
【００７５】
そして、９行目で、クロックのＨレベルのパルス幅とＬレベルのパルス幅との差分（｜ｈｐｗｉｄｔｈ−ｌｐｗｉｄｔｈ｜）が、変数ｃｕｒｍｉｎｄｉｆｆの値よりも小さいか否かが判定される。そして、｜ｈｐｗｉｄｔｈ−ｌｐｗｉｄｔｈ｜＜ｃｕｒｍｉｎｄｉｆｆの場合には、１０行目に示されているように変数ｃｕｒｍｉｎｄｉｆｆに、｜ｈｐｗｉｄｔｈ−ｌｐｗｉｄｔｈ｜が代入される。また、１１行目に示されているように、変数ｐｃｈｍｉｎｄｉｆｆに、そのときの構成情報｛ｐｃｈＮ＿ｅｎ，…，ｐｃｈ２＿ｅｎ，ｐｃｈ１＿ｅｎ｝の値が保持される。また、１２行目に示されているように、変数ｎｃｈｍｉｎｄｉｆｆに、そのときの構成情報｛ｎｃｈＮ＿ｅｎ，…，ｎｃｈ２＿ｅｎ，ｎｃｈ１＿ｅｎ｝の値が保持される。
【００７６】
｛ｐｃｈＮ＿ｅｎ，…，ｐｃｈ２＿ｅｎ，ｐｃｈ１＿ｅｎ｝＝２Nとなると（トランジスタｔｂ１〜ｔｂｎ，ｔｃ１〜ｔｃｎの全組み合わせで測定が終了すると）、１６，１７行目の処理が行われる。１６行目では、｛ｐｃｈＮ＿ｅｎ，…，ｐｃｈ２＿ｅｎ，ｐｃｈ１＿ｅｎ｝＝ｐｃｈｍｉｎｄｉｆｆの処理が行われ、構成情報｛ｐｃｈＮ＿ｅｎ，…，ｐｃｈ２＿ｅｎ，ｐｃｈ１＿ｅｎ｝に変数ｐｃｈｍｉｎｄｉｆｆに保持されている値が代入される。１７行目では、｛ｎｃｈＮ＿ｅｎ，…，ｎｃｈ２＿ｅｎ，ｎｃｈ１＿ｅｎ｝＝ｐｃｈｍｉｎｄｉｆｆの処理が行われ、構成情報｛ｎｃｈＮ＿ｅｎ，…，ｎｃｈ２＿ｅｎ，ｎｃｈ１＿ｅｎ｝に変数ｎｃｈｍｉｎｄｉｆｆに保持されている値が代入される。
【００７７】
以上のような処理によって、クロックのＨレベルのパルス幅とＬレベルのパルス幅の差分が最も小さいときの、制御信号ｐｃｈ１＿ｅｎ〜ｐｃｈＮ＿ｅｎ，ｎｃｈ１＿ｅｎ〜ｎｃｈＮ＿ｅｎの値が求められ、バッファ部３ａに供給される。これにより、バッファ部３ａからは、デューティ比が５０：５０により近いクロックが出力されることになる。
【００７８】
なお、デューティ比は、５０：５０に限定されるわけではなく、図７の１６，１７行目で得られた構成情報を変更することで、任意に設定可能である。たとえば、デューティ比を３０：７０に設定する場合、構成情報の制御信号ｐｃｈ１＿ｅｎ〜ｐｃｈＮ＿ｅｎで、“１”になっている個数を３／５に減らし、制御信号ｎｃｈ１＿ｅｎ〜ｎｃｈＮ＿ｅｎで“１”になっている個数を２／５増やすようにすればよい。
【００７９】
以上のように、本実施の形態の半導体集積回路１０及びバッファ回路１２−１では、バッファ部１２ａから出力されるクロックのＨ側とＬ側のパルス幅を測定し、測定結果に応じてバッファ部１２ａの駆動能力を変化させてクロックのデューティ比が調整される。これにより、クロックが高周波数化しても、バッファ部１２ａに含まれるトランジスタの特性の製造ばらつきによらず、伝搬されるクロックのデューティ比の悪化を抑制できる。このため、意図しないデューティ比のクロックが入力されることによる回路部１３での誤動作の発生を抑制できる。
【００８０】
図８は、本実施の形態の半導体集積回路及びバッファ回路を用いたことによる効果の一例を示す図である。ここでは、ＰＬＬ回路１１から、デューティ比５０：５０で出力されたクロックが回路部１３に達したときの様子と、回路部１３に取り込まれるデータの例が示されている。図８（Ａ）は、クロックのデューティ比が悪化しているときのデータ取り込みの例を示す図であり、図８（Ｂ）は、本実施の形態のバッファ回路１２−１によりデューティ比が調整されたクロックによるデータ取り込みの例を示す図である。なお、図８（Ａ），（Ｂ）の例では、回路部１３は、クロックの立ち上がりエッジと立ち下がりエッジの両方を用いるＤＤＲ  ＳＤＲＡＭのような回路であるものとしている。
【００８１】
図８（Ａ）では、タイミングｔ４０でデータＤ０が入力され、クロックの立ち下がりタイミングｔ４１からホールド時間後のタイミングｔ４２で次のデータＤ１が入力されている。また、クロックの立ち上がりタイミングｔ４３からホールド時間後のタイミングｔ４４で次のデータＤ２が入力されている。
【００８２】
図８（Ａ）に示されているクロックはデューティ比が５０：５０から悪化して、回路部１３に達する際には、Ｈレベルのパルス幅がＬレベルのパルス幅に比べて短くなっている。このような現象は、たとえば、クロックバッファ内のｎＭＯＳとｐＭＯＳの抵抗比が一致しておらず、ｎＭＯＳ側の抵抗が大きい場合に生じる。
【００８３】
このような現象が起きると、セットアップのためのタイミングｔ４０〜ｔ４１間の時間が、タイミングｔ４２〜ｔ４３間の時間よりも短くなり、立ち下がりエッジでデータの取り込みを行う際のセットアップマージンが小さくなる。この場合、回路部１３が正しくデータＤ０を取り込めなくなる可能性がある。
【００８４】
一方、本実施の形態のバッファ回路１２−１では、クロックのデューティ比を５０：５０になるように調整できるため、図８（Ｂ）に示すようなクロックを回路部１３に供給することができる。
【００８５】
図８（Ｂ）では、タイミングｔ５０でデータＤ０が入力され、クロックの立ち下がりタイミングｔ５１からホールド時間後のタイミングｔ５２で次のデータＤ１が入力されている。また、クロックの立ち上がりタイミングｔ５３からホールド時間後のタイミングｔ５４で次のデータＤ２が入力されている。
【００８６】
図８（Ｂ）の例では、データＤ０が入力されるタイミングｔ５０から、クロックの立ち下がりタイミングｔ５１までの時間と、データＤ１が入力されるタイミングｔ５２からクロックの立ち上がりタイミングｔ５３までの時間とが等しい。そのため、回路部１３は、クロックの立ち上がりエッジ及び立ち下がりエッジの両方でのデータＤ０，Ｄ１の取り込みの際のセットアップマージンを適切に確保でき、データが取り込めなくなるという不具合の発生が抑制される。
【００８７】
また、第２の実施の形態の半導体集積回路１０のバッファ回路１２−１では、アナログ回路のＰＬＬ回路などを用いずに、クロックのデューティ比を調整できるため、回路面積の増大を抑制できる。
【００８８】
（第３の実施の形態）
図９は、第３の実施の形態のバッファ回路の一例を示す図である。
図９のバッファ回路３０−１は、図３に示したバッファ回路１２−１の他の例を示している。図２に示したバッファ回路１２−２〜１２−ｎもバッファ回路３０−１と同様の回路であってもよい。
【００８９】
バッファ回路３０−１は、バッファ部３０ａ、測定部３０ｂ、調整部３０ｃを有している。
バッファ部３０ａは、図９の例では、図１及び図３に示したバッファ部３ａ、バッファ部１２ａと同じ回路としている。
【００９０】
測定部３０ｂは、第２の実施の形態のバッファ回路１２−１と異なり、ローパスフィルタ３１とＡＤ（Analogue to Digital）変換回路３２を有している。
ローパスフィルタ３１は、バッファ部３０ａから出力されるクロックを入力し、クロックのＨレベルのパルス幅とＬレベルのパルス幅の比に応じた電圧を出力する。
【００９１】
ＡＤ変換回路３２は、ローパスフィルタ３１の出力信号をデジタル値に変換して調整部３０ｃに供給する。
調整部３０ｃは、目標とする所定のデューティ比のときのＡＤ変換回路３２の出力値−ＶＤＤ（電源電圧）／２の値のＡＤ変換値を理想値として保持している。そして、調整部３０ｃは、理想値と、測定部３０ｂによるクロックのパルス幅に応じたＡＤ変換回路３２の出力値−ＶＤＤ／２の値との比較結果に応じた制御信号を生成し、バッファ部３０ａのトランジスタｔａ１〜ｔａｎ，ｔｄ１〜ｔｄｎに供給する。なお、ＡＤ変換回路３２の出力値からＶＤＤ／２を引くのは、負値を除外して正値をサンプリングするためである。
【００９２】
以下、第３の実施の形態のバッファ回路３０−１の動作例を説明する。
（バッファ回路３０−１の動作例）
図１０は、第３の実施のバッファ回路の動作の一例を示すフローチャートである。
【００９３】
調整部３０ｃは、制御回路１４から、バッファ部３０ａの駆動能力を調整する旨の指示を受け付けると（ステップＳ１０）、トランジスタｔｂ１〜ｔｂｎ，ｔｃ１〜ｔｃｎの中から活性化するトランジスタを設定する（ステップＳ１１）。ステップＳ１１の処理では、調整部３０ｃは、トランジスタｔａ１〜ｔａｎ，ｔｄ１〜ｔｄｎに制御信号（ゲート電圧）の初期値を供給することで、トランジスタｔｂ１〜ｔｂｎ，ｔｃ１〜ｔｃｎのうち活性化または非活性化させるトランジスタを設定する。
【００９４】
その後、ステップＳ１２の処理で測定部３０ｂはパルス幅の測定を行う（図９の例では測定部３０ｂの出力値としてはＨレベルとＬレベルのパルス幅の比に応じた値となる）。調整部３０ｃは、測定結果に基づき、ＡＤ変換回路３２の出力値（ＡＤＣ出力）−ＶＤＤ／２が理想値と一致しているか否かを判定する（ステップＳ１３）。ＡＤＣ出力−ＶＤＤ／２が理想値と一致していれば、駆動能力の調整が終了する。このとき調整部３０ｃは、制御回路１４に対して、駆動能力の調整が終了した旨を通知するようにしてもよい。
【００９５】
ＡＤＣ出力−ＶＤＤ／２が理想値と一致していない場合には、調整部３０ｃは、トランジスタｔｂ１〜ｔｂｎ，ｔｃ１〜ｔｃｎの全組み合わせを用いて測定が終わったか否かを判定する（ステップＳ１４）。残っているトランジスタの組み合わせがある場合には、ステップＳ１１で、未測定の組み合わせが選択され、ステップＳ１２，Ｓ１３の処理が繰り返される。
【００９６】
全組み合わせで測定が終わった場合、駆動能力の調整処理が終了する。このとき、調整部３０ｃは、トランジスタｔｂ１〜ｔｂｎ，ｔｃ１〜ｔｃｎの全組み合わせを用いて測定が終わった時点で、理想値に最も近い測定結果が得られたときの制御信号を、バッファ部３０ａに供給するようにしてもよい。
【００９７】
以下、測定部３０ｂと調整部３０ｃによるクロックのパルス幅の測定と調整の一例を説明する。なお、以下では、クロックのデューティ比を５０：５０に調整する場合について説明する。
【００９８】
（クロックのパルス幅の測定／調整例）
図１１は、クロックのパルス幅の測定及び調整例を示すタイミングチャートである。クロック、ローパスフィルタ３１の出力信号（ＬＰＦ出力）、ＡＤＣ出力−ＶＤＤ／２、Ｈｉｇｈ固定判定信号、Ｌｏｗ固定判定信号の例が示されている。なお、Ｈｉｇｈ固定判定信号は、ＡＤ変換回路３２の入力が、所定期間、ＶＤＤで固定されている場合に“１”となる信号であり、ＡＤ変換回路３２から出力される。また、Ｌｏｗ固定判定信号は、ＡＤ変換回路３２の入力が、所定期間、ＧＮＤ（接地電位）に固定されている場合に“１”となる信号であり、ＡＤ変換回路３２から出力される。
【００９９】
タイミングｔ６０〜ｔ６２では、デューティ比が３０：７０のクロックがローパスフィルタ３１に入力された場合について示されている。この場合、ローパスフィルタ３１の出力信号は、クロックのデューティ比が５０：５０のときのローパスフィルタ３１の出力信号よりも値ａだけ小さい。よって、ＡＤＣ出力−ＶＤＤ／２も、クロックのデューティ比が５０：５０のときの理想値よりも値ａだけ小さくなる（タイミングｔ６１）。
【０１００】
このような場合、調整部３０ｃは、たとえば、図１０に示したステップＳ１３の処理から、ステップＳ１４の処理を行い、ステップＳ１１の処理に戻って、トランジスタｔｂ１〜ｔｂｎ，ｔｃ１〜ｔｃｎの別の組み合わせを試す。
【０１０１】
なお、デューティ比が３０：７０のとき、調整部３０ｃは、バッファ部３０ａのｐＭＯＳ抵抗とｎＭＯＳ抵抗のうち、ｐＭＯＳ抵抗の方を下げるような制御信号をバッファ部３０ａに供給することで、ＡＤＣ出力−ＶＤＤ／２を理想値に近づけることができる。バッファ部３０ａのｐＭＯＳ抵抗を下げるには、トランジスタｔａ１〜ｔａｎのうち、オンする数を減らせばよい。
【０１０２】
タイミングｔ６３〜ｔ６５では、デューティ比が７０：３０のクロックがローパスフィルタ３１に入力された場合について示されている。この場合、ローパスフィルタ３１の出力信号は、クロックのデューティ比が５０：５０のときのローパスフィルタ３１の出力信号よりも値ｂだけ大きい。よって、ＡＤＣ出力−ＶＤＤ／２も、クロックのデューティ比が５０：５０のときの理想値よりも値ｂだけ大きくなる（タイミングｔ６４）。
【０１０３】
このような場合、調整部３０ｃは、たとえば、図１０に示したステップＳ１３の処理からステップＳ１４の処理を行い、ステップＳ１１の処理に戻って、トランジスタｔｂ１〜ｔｂｎ，ｔｃ１〜ｔｃｎの別の組み合わせを試す。
【０１０４】
なお、デューティ比が７０：３０のとき、調整部３０ｃは、バッファ部３０ａのｐＭＯＳ抵抗とｎＭＯＳ抵抗のうち、ｎＭＯＳ抵抗の方を下げるような制御信号をバッファ部３０ａに供給することで、ＡＤＣ出力−ＶＤＤ／２を理想値に近づけることができる。バッファ部３０ａのｎＭＯＳ抵抗を下げるには、トランジスタｔｄ１〜ｔｄｎのうち、オンする数を減らせばよい。
【０１０５】
タイミングｔ６６〜ｔ６７では、デューティ比が０：１００のクロックがローパスフィルタ３１に入力された場合について示されている。この場合、ローパスフィルタ３１の出力信号は、ＧＮＤに固定される。このとき、ＡＤＣ出力−ＶＤＤ／２は不定となるが、ＡＤ変換回路３２は、Ｌｏｗ固定判定信号を“１”とする。
【０１０６】
調整部３０ｃは、“１”のＬｏｗ固定判定信号を受けると、ステップＳ１１の処理に戻って、トランジスタｔｂ１〜ｔｂｎ，ｔｃ１〜ｔｃｎの別の組み合わせを試す。
なお、デューティ比が０：１００のとき、調整部３０ｃは、バッファ部３０ａのｐＭＯＳ抵抗とｎＭＯＳ抵抗のうち、ｐＭＯＳ抵抗の方を下げるような制御信号をバッファ部３０ａに供給することで、ＡＤＣ出力−ＶＤＤ／２を理想値に近づけることができる。
【０１０７】
タイミングｔ６８〜ｔ６９では、デューティ比が１００：０のクロックがローパスフィルタ３１に入力された場合について示されている。この場合、ローパスフィルタ３１の出力信号は、ＶＤＤに固定される。このとき、ＡＤＣ出力−ＶＤＤ／２は不定となるが、ＡＤ変換回路３２は、Ｈｉｇｈ固定判定信号を“１”とする。
【０１０８】
調整部３０ｃは、“１”のＨｉｇｈ固定判定信号を受けると、ステップＳ１１の処理に戻って、トランジスタｔｂ１〜ｔｂｎ，ｔｃ１〜ｔｃｎの別の組み合わせを試す。
なお、デューティ比が１００：０のとき、調整部３０ｃは、バッファ部３０ａのｐＭＯＳ抵抗とｎＭＯＳ抵抗のうち、ｎＭＯＳ抵抗の方を下げるような制御信号をバッファ部３０ａに供給することで、ＡＤＣ出力−ＶＤＤ／２を理想値に近づけることができる。
【０１０９】
タイミングｔ７０〜ｔ７２では、デューティ比が５０：５０のクロックがローパスフィルタ３１に入力された場合について示されている。この場合、ＡＤＣ出力−ＶＤＤ／２は、理想値と一致する（タイミングｔ７１）。
【０１１０】
このような場合、調整部３０ｃは、バッファ部３０ａの駆動能力の調整処理を終了する。
次に、第３の実施の形態における調整部３０ｃの動作を記述したコードの一例を示す。
【０１１１】
（調整部３０ｃの動作を記述したコード例）
図１２は、調整部の動作を記述したコードの一例を示す図である。図７に示したコードと同じ要素については同じ記号を用いており、説明を省略する。
【０１１２】
調整部３０ｃは、たとえば、ＣＰＵなどの制御装置を有しており、図１２に示すようなコード（ソフトウェア）を実行することで、クロックのＨレベルのパルス幅と、Ｌレベルのパルス幅の調整を行う。なお、調整部３０ｃは、図１２に示すような記述の処理を実行する回路であってもよい。
【０１１３】
１行目では、構成情報｛ｐｃｈＮ＿ｅｎ，…，ｐｃｈ２＿ｅｎ，ｐｃｈ１＿ｅｎ｝が、１に初期化される。その後、｛ｐｃｈＮ＿ｅｎ，…，ｐｃｈ２＿ｅｎ，ｐｃｈ１＿ｅｎ｝＜２Nの関係を満たさなくなるまで、構成情報｛ｐｃｈＮ＿ｅｎ，…，ｐｃｈ２＿ｅｎ，ｐｃｈ１＿ｅｎ｝がインクリメントされて、以下の２〜７行の処理が繰り返される。
【０１１４】
３行目では、構成情報｛ｎｃｈＮ＿ｅｎ，…，ｎｃｈ２＿ｅｎ，ｎｃｈ１＿ｅｎ｝が、１に初期化される。その後、｛ｎｃｈＮ＿ｅｎ，…，ｎｃｈ２＿ｅｎ，ｎｃｈ１＿ｅｎ｝＜２Nの関係を満たさなくなるまで、構成情報｛ｎｃｈＮ＿ｅｎ，…，ｎｃｈ２＿ｅｎ，ｎｃｈ１＿ｅｎ｝がインクリメントされて、以下の３〜６行の処理が繰り返される。
【０１１５】
３〜６行目では、上記の構成情報の値に応じたパルス幅の測定で得られた測定結果に基づき、ＡＤＣ出力−ＶＤＤ／２が、デューティ比が５０：５０のときの理想値（５０：５０）と一致するか否かの判定が行われる。ＡＤＣ出力−ＶＤＤ／２＝＝理想値（５０：５０）のときには、“ｅｘｉｔ”となり、処理が終了する。
【０１１６】
以上のように、第３の実施の形態のバッファ回路３０−１では、バッファ部３０ａから出力されるクロックのＨ側とＬ側のパルス幅の比に応じてバッファ部３０ａの駆動能力を変化させることで、クロックのデューティ比が調整される。これにより、クロックが高周波数化しても、バッファ部３０ａに含まれるトランジスタの特性の製造ばらつきによらず、伝搬されるクロックのデューティ比の悪化を抑制できる。このため、意図しないデューティ比のクロックが入力されることによる回路部１３での誤動作の発生を抑制できる。
【０１１７】
以上、実施の形態に基づき、本発明のバッファ回路及び半導体集積回路の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
たとえば、制御回路５，１４は、測定部３ｂ，１２ｂ，３０ｂでの測定結果を受け、デューティ比が悪化してきたら、調整部３ｃ，１２ｃ，３０ｃの機能を有効にするようにしてもよい。たとえば、制御回路５，１４は、Ｈレベルのパルス幅がＬレベルのパルス幅に対し所定の割合以下または以上になったら、調整部３ｃ，１２ｃ，３０ｃの機能を有効にするようにしてもよい。
【０１１８】
また、バッファ部３ａ，１２ａ，３０ａのトランジスタの能力を変えて、バッファ部３ａ，１２ａ，３０ａに含まれるトランジスタの個数を減らすことにより、回路面積を縮小したり、信号数を削減したりするようにしてもよい。
【符号の説明】
【０１１９】
１  半導体集積回路
２  クロック生成回路
３−１〜３−ｎ  バッファ回路
３ａ  バッファ部
３ｂ  測定部
３ｃ  調整部
４  回路部
５  制御回路
ＣＫ１〜ＣＫ３  クロック
ＩＮＶ  インバータ
ｔａ１〜ｔａｎ，ｔｂ１〜ｔｂｎ，ｔｃ１〜ｔｃｎ，ｔｄ１〜ｔｄｎ  トランジスタ
【図１】
2014216875.tif 000003
【図２】
2014216875.tif 000004
【図３】
2014216875.tif 000005
【図４】
2014216875.tif 000006
【図５】
2014216875.tif 000007
【図６】
2014216875.tif 000008
【図７】
2014216875.tif 000009
【図８】
2014216875.tif 000010
【図９】
2014216875.tif 000011
【図１０】
2014216875.tif 000012
【図１１】
2014216875.tif 000013
【図１２】
2014216875.tif 000014