(57)【特許請求の範囲】
【請求項１】
半導体集積回路であって、
フリップフロップと、
前記フリップフロップに信号を出力する組み合わせ回路と、
前記組み合わせ回路に判定信号を出力する判定回路と、を含み、
前記判定回路は、
所定の条件下で所定のセル遅延量を有するセル遅延回路と、
前記所定の条件下で所定の配線遅延量を有する配線遅延回路と、を含み、
前記セル遅延回路のセル遅延量と前記配線遅延回路の配線遅延量とを比較した結果に応じて前記判定信号を生成し、
前記組み合わせ回路は、
同一の論理であって異なる遅延量を有する複数の論理回路で構成される遅延選択回路を１つ以上含み、
前記判定信号に基づいて、前記遅延選択回路において前記複数の論理回路の中から１つを選択し、
前記遅延選択回路は、
第１の論理回路と、
前記第１の論理回路よりも遅延量が大きい第２の論理回路と、を含み、
前記組み合わせ回路は、
前記セル遅延回路のセル遅延量よりも前記配線遅延回路の配線遅延量が大きいことを表す前記判定信号を受け取った場合に、前記遅延選択回路において前記第２の論理回路を選択する半導体集積回路。
【請求項２】
請求項１に記載の半導体集積回路において、
前記判定回路は、
前記所定の条件下で前記セル遅延回路のセル遅延量と前記配線遅延回路の配線遅延量とが同じであるように設計されている半導体集積回路。
【請求項３】
請求項１乃至２のいずれかに記載の半導体集積回路において、
前記判定回路は、
１つのＤフリップフロップである判定用フリップフロップを含み、
パルス信号を受け取り、
前記判定用フリップフロップは、
前記パルス信号を、前記セル遅延回路を介してデータ端子に入力し、
前記パルス信号を、前記配線遅延回路を介してクロック端子に入力し、
前記判定信号を出力する半導体集積回路。
【請求項４】
請求項３に記載の半導体集積回路において、
前記判定回路は、
前記パルス信号を、半導体集積回路の起動時に１度だけ受け取る半導体集積回路。
【請求項５】
請求項１乃至４のいずれかに記載の半導体集積回路において、
前記判定信号に基づいて、前記フリップフロップに供給するクロック信号の周波数を調整する周波数調整回路を含む半導体集積回路。
【請求項６】
請求項１乃至５のいずれかに記載の半導体集積回路において、
前記判定回路は、
１つ以上のマクロセルで構成されたセル遅延回路および配線遅延回路を含む半導体集積回路。
【請求項７】
請求項１乃至５のいずれかに記載の半導体集積回路において、
前記判定回路は、
ゲートアレイ、スタンダードセル、エンベディドアレイのいずれかの１つ以上の基本セルで構成されたセル遅延回路および配線遅延回路を含む半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路等に関する。
【背景技術】
【０００２】
ゲートアレイ、スタンダードセル、エンベディッドアレイ等のＡＳＩＣ（Application Specific Integrated Circuit）設計手法で開発される半導体集積回路がある。例えばＦＰＧＡ（Field-Programmable Gate Array）等と比べると、ＡＳＩＣは実装面積や消費電力を小さくすることができ、比較的安価に大量生産できる利点がある。
【０００３】
しかし、設計上の失敗等により設計変更が生じると、新たなフォトマスクを作成する必要がある。そして、設計変更が多く生じると、結果的に単価が高くなり、比較的安価に大量生産できるとの利点が失われてしまう。
【０００４】
この設計変更には、回路のバグの他に、現実の配線遅延、セル遅延（ゲート遅延）がシミュレーションのモデルと乖離していることを原因とするものがある。具体例としては、実際に半導体集積回路が生産されたときに、シミュレーションでは検出されないホールドエラーが発生したために、設計変更をせざるを得ない場合等である。ホールドエラーが発生すると、セットアップエラーとは異なり、動作周波数を下げても正常動作させることはできない。
【０００５】
そこで、シミュレーションにおける配線遅延、セル遅延の変動率を大きく設定して、十分すぎる設計マージンを確保することで設計変更の発生を回避する、といった対策が採られることがあった。
【０００６】
しかし、過剰なマージンによって、半導体集積回路の動作周波数の上限が低くなり、半導体集積回路自体のパフォーマンスが低下するおそれがあった。
【０００７】
特許文献１の発明では、電源電圧の制御によって、フリップフロップと組み合わせ回路の遅延時間を独立に制御する。そのため、シミュレーションでは検出されないホールドエラーが発生したような場合でも、設計変更なしに半導体集積回路を動作させることが可能である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−２８８９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、特許文献１の発明では、使用環境の変化にあわせて電源電圧の上昇、下降を頻繁に行う必要がある。また、使用環境によっては、高い電源電圧でトランジスタを動作させ続ける必要が生じる。このとき、半導体集積回路の寿命が短くなる等の品質保証上の問題が生じ得る。
【００１０】
本発明はこのような問題点に鑑みてなされたものである。本発明のいくつかの態様によれば、過剰なマージンをとることなく、シミュレーションと乖離した遅延の変動率が生じた場合でも、設計を変更せずに正常動作を可能にする回路を含む半導体集積回路を提供する。
【課題を解決するための手段】
【００１１】
（１）本発明は、半導体集積回路であって、フリップフロップと、前記フリップフロップに信号を出力する組み合わせ回路と、前記組み合わせ回路に判定信号を出力する判定回路と、を含み、前記判定回路は、所定の条件下で所定のセル遅延量を有するセル遅延回路と、前記所定の条件下で所定の配線遅延量を有する配線遅延回路と、を含み、前記セル遅延回路のセル遅延量と前記配線遅延回路の配線遅延量とを比較した結果に応じて前記判定信号を生成し、前記組み合わせ回路は、同一の論理であって異なる遅延量を有する複数の論理回路で構成される遅延選択回路を１つ以上含み、前記判定信号に基づいて、前記遅延選択回路において前記複数の論理回路の中から１つを選択する。
【００１２】
本発明によれば、判定回路がセル遅延量と配線遅延量とを比較して、結果に応じた判定信号を生成し、組み合わせ回路に出力する。そして、組み合わせ回路は、異なる遅延量を有する複数の論理回路で構成される遅延選択回路を含んでおり、判定信号に基づいて遅延選択回路のそれぞれで適切な遅延量の論理回路を選択する。これにより、フリップフロップには、例えばホールドエラー等を生じさせない適切な遅延量の信号が入力されることになる。
【００１３】
よって、シミュレーションと乖離した遅延の変動率をもつ半導体集積回路が生産された場合であっても、設計変更することなく正常動作させることが可能になる。このことにより、シミュレーションで遅延の変動率を大きくとって、過剰な設計マージンを確保する必要はなくなる。
【００１４】
遅延の変動率がシミュレーションとほぼ一致するような場合には、過剰な設計マージンをとっていないため、高い周波数で動作させることが可能であり、結果として半導体集積回路の性能が向上する。
【００１５】
ここで、フリップフロップは例えばＤフリップフロップでもよいし、ＪＫ型、Ｔ型、その他の種類のフリップフロップであってもよい。半導体集積回路は、１つ以上のフリップフロップを含んでいる。そして、フリップフロップは、組み合わせ回路から信号を受け取る。組み合わせ回路は、様々な論理回路の組み合わせで構成される。
【００１６】
組み合わせ回路は、遅延選択回路を１つ又は複数含む。遅延選択回路は、例えば、同一の論理であって異なる遅延量を有する複数の論理回路の中から１つを排他的に選択できるように構成された回路である。
【００１７】
例えば、ある遅延選択回路の論理がＮＡＮＤであるとする。このとき、この遅延選択回路は、例えば３つのＮＡＮＤセル、２つの入力（例えばＡ、Ｂとする）、１つの出力（例えばＱとする）を有していてもよい。そして、入力Ａ、Ｂは遅延量の異なる３つのＮＡＮＤセルのそれぞれに入力されており、３つのＮＡＮＤセルのそれぞれの出力信号が互いに異なるスイッチを介して出力Ｑに接続されていてもよい。組み合わせ回路は、判定信号に基づいて１つのスイッチをオン状態にして、１つのＮＡＮＤセルを選択することができる。
【００１８】
なお、遅延選択回路が含む複数の論理回路とは、それぞれが１つのセルで構成されているとは限らない。例えば論理ＮＯＴを実現する論理回路は、１つのインバーターで構成されていてもよいし、３つの直列接続されたインバーターで構成されていてもよい。
【００１９】
ここで、組み合わせ回路の全てが遅延選択回路を含んでもよい。全ての組み合わせ回路において、適切な遅延量を選択することができるので、シミュレーションと大きく乖離した遅延の変動率が生じた場合でも、正常動作する可能性が高くなる。
【００２０】
一方で、組み合わせ回路の全てが遅延選択回路を含むように設計すると、半導体集積回路の回路規模によっては、面積が著しく増加する可能性がある。このとき、例えばＳＴＡ（Static Timing Analysis）の解析結果に基づいて、タイミングの厳しいパス（例えば、１ｎｓ未満の余裕でタイミングをミートしたパス）に含まれる組み合わせ回路だけが遅延選択回路を持つようにしてもよい。
【００２１】
また、例えば、テスト用のスキャンパスに集中的に遅延選択回路を含ませることによって、シミュレーションと大きく乖離した遅延の変動率が生じた場合でも、ホールドエラーを発生させずに正常にテストを行うことが可能になる。このように、組み合わせ回路を選択して遅延選択回路を含ませることで、面積が著しく増加することを回避できる。
【００２２】
判定回路は、セル遅延回路と配線遅延回路とを含む。セル遅延回路とは、セルの内部遅延であるセル遅延（ゲート遅延）を測定するための回路である。一方、配線遅延回路とは、信号を伝える配線の遅延である配線遅延を測定するための回路である。セル遅延回路では、例えば配線をなるべく短くすることでセル遅延だけを測定できるようにする。一方配線遅延回路では例えばセルをなるべく配置しないことで配線遅延だけを測定できるようにする。
【００２３】
なお、セルとは、ＡＳＩＣ設計手法で用いられる、ゲートアレイ、スタンダードセル、およびエンベディッドアレイの少なくとも１つにおける基本セルであってもよい。基本セルとは、回路を構成する基本要素であるバッファー、インバーター、ＡＮＤ、ＮＡＮＤ、ＯＲ、ＮＯＲ等のセルをいう。
【００２４】
（２）この半導体集積回路において、前記遅延選択回路は、第１の論理回路と、前記第１の論理回路よりも遅延量が大きい第２の論理回路と、を含み、前記判定回路は、前記所定の条件下で前記セル遅延回路のセル遅延量と前記配線遅延回路の配線遅延量とが同じであるように設計され、前記組み合わせ回路は、前記セル遅延回路のセル遅延量よりも前記配線遅延回路の配線遅延量が大きいことを表す前記判定信号を受け取った場合に、前記遅延選択回路において前記第２の論理回路を選択してもよい。
【００２５】
本発明によれば、遅延選択回路は遅延量の小さい第１の論理回路と、遅延量の大きい第２の論理回路とを含む。判定回路は、例えばＴＹＰ条件（typical条件）で同じ遅延量のセル遅延回路と配線遅延回路とを含み、使用環境条件でセル遅延量と配線遅延量のどちらが大きいかを判定して、その判定結果に応じた判定信号を出力する。
【００２６】
そして、組み合わせ回路は、配線遅延量の方が大きい場合には遅延量の大きい第２の論理回路を選択するので、例えばホールドエラーの発生を回避し、設計変更することなく正常動作を可能にする。
【００２７】
なお、ＴＹＰ条件とは例えば使用環境温度が２５℃であって、電源電圧が１．８Ｖであるような場合である。例えばＴＹＰ条件を基準にして、セル遅延量と配線遅延量の変化率（変化の度合い）をそれぞれについて測定する。そして、相対的に、配線遅延量の変化率がセル遅延量の変化率よりも大きくなる場合に、ホールドエラーが生じる恐れがあると判断する。
【００２８】
例えば、より低温（例えば０℃）かつ高い電源電圧（例えば２．２Ｖ）で動作させた場合に、ＴＹＰ条件と比べて配線遅延量の変化率がセル遅延量の変化率よりも大きいとする。このとき、組み合わせ回路は、遅延量の大きい第２の論理回路を選択してホールドエラーの発生を回避する。
【００２９】
（３）この半導体集積回路において、前記判定回路は、１つのＤフリップフロップである判定用フリップフロップを含み、パルス信号を受け取り、前記判定用フリップフロップは、前記パルス信号を、前記セル遅延回路を介してデータ端子に入力し、前記パルス信号を、前記配線遅延回路を介してクロック端子に入力し、前記判定信号を出力してもよい。
【００３０】
（４）この半導体集積回路において、前記判定回路は、前記パルス信号を、半導体集積回路の起動時に１度だけ受け取ってもよい。
【００３１】
これらの発明によれば、複雑な判定用回路を設けなくても、１つのＤフリップフロップの値を判定信号とすることができる。そのため、回路規模を抑えることが可能である。
【００３２】
さらに、パルス信号を起動時に１度だけ受け取って、判定信号を生成すれば、その後の半導体集積回路の動作時には判定回路が電力を消費することがなく、低消費電力を実現できる。
【００３３】
なお、セル遅延回路を経由したパルス信号を判定用フリップフロップのクロック端子に入力し、配線遅延回路を経由したパルス信号を判定用フリップフロップのデータ端子に入力してもよい。
【００３４】
（５）この半導体集積回路において、前記判定信号に基づいて、前記フリップフロップに供給するクロック信号の周波数を調整する周波数調整回路を含んでもよい。
【００３５】
ホールドエラーの発生を回避するために遅延量の大きい論理回路を選択すると、セットアップエラーが生じ得る。本発明によれば、クロック信号の周波数を調整（遅く）することでセットアップエラーの発生も同時に回避することが可能である。
【００３６】
また、判定信号に基づいてホールドエラーの発生が無いことを確認した場合に、クロック信号の周波数を調整（速く）することで、半導体集積回路の性能を向上させることが可能である。
【００３７】
（６）この半導体集積回路において、前記判定回路は、１つ以上のマクロセルで構成されたセル遅延回路および配線遅延回路を含んでもよい。
【００３８】
（７）この半導体集積回路において、前記判定回路は、ゲートアレイ、スタンダードセル、エンベディドアレイのいずれかの１つ以上の基本セルで構成されたセル遅延回路および配線遅延回路を含んでもよい。
【００３９】
これらの発明によれば、セル遅延回路および配線遅延回路は設計方針に応じて、適切な方法で作成することが可能である。
【００４０】
セル遅延回路および配線遅延回路は、１つ以上のマクロセルで構成されてもよい。このとき、自動配置配線を行う場合に生じるセル遅延、配線遅延の遅延量の誤差、すなわちセルの配置場所や配線の長さの変化に伴う遅延量の違いを気にする必要がない。このとき、判定回路は、正確な判定信号を生成することができる。
【００４１】
セル遅延回路および配線遅延回路は、ゲートアレイ、スタンダードセル、エンベディドアレイのいずれかの基本セルで構成されていてもよい。基本セルとは、マクロセルを含まない、バッファー、インバーター、ＡＮＤ、ＮＡＮＤ、ＯＲ、ＮＯＲ等の通常のＡＳＩＣ設計手法で用いるセルを意味する。このとき、主要な回路を配置した後のスペースを利用してセル遅延回路および配線遅延回路を作ることができるので、半導体集積回路全体の面積を小さくできる。
【図面の簡単な説明】
【００４２】
【図１】第１実施形態における半導体集積回路のブロック図。
【図２】第１実施形態における判定回路の構成例の図。
【図３】図３（Ａ）〜図３（Ｃ）は判定信号の変化を説明する図。
【図４】判定信号の値と選択される遅延セル、周波数の関係を説明する図。
【図５】第１実施形態における遅延選択回路、周波数調整回路の構成例の図。
【図６】変形例における判定回路の構成例の図。
【図７】図７（Ａ）〜図７（Ｃ）は判定信号の変化を説明する図。
【図８】判定信号の値と選択される遅延セル、周波数の関係を説明する図。
【図９】図９（Ａ）は変形例における遅延選択回路の構成例の図、図９（Ｂ）は変形例における周波数調整回路の構成例の図。
【発明を実施するための形態】
【００４３】
以下、本発明の実施形態について図面を参照して説明する。なお、変形例の説明において、第１実施形態と同様の構成については同一符号を付し、説明を省略する。
【００４４】
１．第１実施形態
１．１．半導体集積回路の構成
本発明の第１実施形態について図１〜図５を参照して説明する。図１は、本実施形態の半導体集積回路１のブロック図である。
【００４５】
図１の例では、半導体集積回路１はフリップフロップ１０−１〜１０−３、組み合わせ回路２０、判定回路３０、周波数調整回路４０、スイッチ５０を含む。半導体集積回路１は、他にもフリップフロップと組み合わせ回路とを含み、図１には一部のみが記載されている。また、図１の例ではフリップフロップ１０−１〜１０−３はＤフリップフロップであるが、他の種類のフリップフロップであってもよい。
【００４６】
本実施形態の組み合わせ回路２０は、判定信号１０４に基づいて遅延量を選択する遅延選択回路２２−１〜２２−Ｎを１つ以上含む。Ｎは自然数であり、Ｎ＝１の場合には遅延選択回路２２−１と遅延選択回路２２−Ｎとは同一の回路となる。遅延量を選択するとは、具体的には同一の論理であって異なる遅延量を有する複数の論理回路の中から１つを選択することをいう。
【００４７】
本実施形態の組み合わせ回路２０は、例えばフリップフロップのデータ入力として用いられる信号（以下、データ信号と表す）やイネーブル入力として用いられる信号等を生成して出力する。ここで、１つのフリップフロップの出力がそのまま他のフリップフロップの入力となる場合がある。その場合には、フリップフロップの出力である配線を組み合わせ回路２０として扱う。
【００４８】
組み合わせ回路２０は、判定信号１０４に基づいて配線遅延が大きいと判断した場合に、フリップフロップ１０−３でホールドエラーが発生することを回避するために、大きな遅延量を有する論理回路を選択することが可能である。ホールドエラーが発生すると動作周波数を下げても正常動作させることはできないが、遅延量を調整することでホールドエラーの発生を回避し、半導体集積回路１を正常動作させることができる。
【００４９】
本実施形態の判定回路３０は、所定の条件において、所定のセル遅延量を有するセル遅延回路３２と所定の配線遅延量を有する配線遅延回路３４とを含む。所定の条件とは、例えばＴＹＰ条件であって、使用環境温度が２５℃、電源電圧が１．８Ｖといった条件であってもよい。この条件下において、所定のセル遅延量とは、例えば２ｎｓといった具体的な数値であってもよいし、配線遅延回路３４の配線遅延と同じといった相対的な遅延量であってもよい。なお、所定の配線遅延量についても同様である。本実施形態では、前記のＴＹＰ条件において、セル遅延回路３２のセル遅延量を、配線遅延回路３４の配線遅延量と同じにしている。
【００５０】
判定回路３０は、セル遅延回路３２のセル遅延量と配線遅延回路３４の配線遅延量とを比較した結果に応じた判定信号１０４を生成する。本実施形態の判定回路３０は、１つのＤフリップフロップである判定用フリップフロップ３６を含み、そのＱ出力を判定信号１０４としている。
【００５１】
本実施形態の判定回路３０は、パルス信号１０２を、セル遅延回路３２を介して判定用フリップフロップ３６のデータ端子に入力する。そして、同じパルス信号１０２を、配線遅延回路３４を介して判定用フリップフロップ３６のクロック端子に入力する。この構成により、セル遅延回路３２のセル遅延量と配線遅延回路３４の配線遅延量の相対的な差に基づいて判定信号１０４を変化させることができる。本実施形態では、ＴＹＰ条件においてセル遅延量と配線遅延量とが同じであるため、ＴＹＰ条件からの遅延量の変化率の差に基づいて、判定信号１０４は変化することになる。
【００５２】
なお、以下において、判定用フリップフロップ３６のデータ端子に入力される信号を、判定用フリップフロップのデータ信号３７という。また、判定用フリップフロップ３６のクロック端子に入力される信号を、判定用フリップフロップのクロック信号３８という。
【００５３】
スイッチ５０は、パルス信号１０２を生成するのに用いられる。本実施形態のスイッチ５０は、セル遅延回路３２のセル遅延量と配線遅延回路３４の配線遅延量とが、その半周期を超えることがない十分に遅いクロックであるＣＬＫ０（判定回路用クロック信号）から、パルス信号１０２を生成する。
【００５４】
具体的には、ＣＬＫ０の１つのパルスだけをグローバルリセットの解除後に伝導させてもよい。ＣＬＫ０の１つのパルスとは、例えば‘Ｌ’‘Ｈ’‘Ｌ’の変化を有するパルスである。ここで、‘Ｌ’は信号のローレベルを、‘Ｈ’は信号のハイレベルを表す。
【００５５】
スイッチ５０は、前記の１つのパルスによって判定回路３０が判定信号１０４を生成した後はＣＬＫ０を伝導させない。そのため、判定回路３０が電力を消費することがなく、低消費電力を実現できる。
【００５６】
なお、スイッチ５０がオフ状態の場合にも、パルス信号１０２が不定とならないように設計されているものとする。スイッチ５０は、例えば判定回路用クロック信号ＣＬＫ０と、ローレベルを供給する定電圧源（例えばグランド）とを選択するマルチプレクサーであってもよい。
【００５７】
ここで、本実施形態の組み合わせ回路２０は、ホールドエラーを回避するために、大きな遅延量を有する論理回路を選択することがある。しかし、その選択の結果、フリップフロップ１０−３でセットアップエラーが生じる可能性がある。このとき、本実施形態の周波数調整回路４０は、組み合わせ回路２０の選択と連動して、すなわち判定信号１０４に基づいて遅い周波数のクロックを選択する。遅い周波数のクロックがフリップフロップ１０−１〜１０−３に供給されることで正常動作が可能になる。
【００５８】
本実施形態の周波数調整回路４０は、判定信号１０４に基づいて、２つのクロック信号ＣＬＫ１、ＣＬＫ２から１つを選択する。そして、選択されたクロック信号が、周波数を調整されたクロック信号（周波数調整クロック信号１０６）としてフリップフロップ１０−１〜１０−３に供給される。例えば、ＣＬＫ１の周波数がＣＬＫ２よりも高いとする。周波数調整回路４０は、判定信号１０４に基づいて配線遅延が大きいと判断した場合に、周波数調整クロック信号１０６としてＣＬＫ２を選択し、セットアップエラーの発生を回避する。
【００５９】
周波数調整回路４０によってセットアップエラーも回避できるので、半導体集積回路１を正常動作させることができる。しかし、遅い周波数のクロックが使用された場合には、その性能は通常時よりも低下する。しかし、再設計をすることなく正常動作を可能にすることは、新たなフォトマスクを作成する場合のコストと期間を考慮すると大きな利点を有する。
【００６０】
なお、組み合わせ回路２０および周波数調整回路４０は、判定信号１０４に基づいてセル遅延が大きいと判断した場合には、小さな遅延量を有する論理回路を選択し、高い周波数のクロック信号を選択するので、半導体集積回路１は期待される性能で動作する。このとき、シミュレーション等において過剰な設計マージンをとる場合と比べると、高い周波数で動作させることが可能であり、性能のよい半導体集積回路１を実現できる。
【００６１】
１．２．判定回路の構成
図２は、本実施形態の判定回路３０の構成例を表す。なお、図１と同じ要素には同じ符号を付しており説明を省略する。
【００６２】
セル遅延回路３２は、セル遅延（ゲート遅延）を測定するために、配線をできるだけ短くしてセルを接続している。セルとは、ＡＳＩＣ設計手法で用いられる、ゲートアレイ、スタンダードセル、およびエンベディッドアレイの少なくとも１つの基本セルを意味する。図２では、バッファーだけを２４個直列に並べた構成になっているが、複数の種類のセルが含まれていてもよい。
【００６３】
配線遅延回路３４は、配線遅延を測定するために、セルをできるだけ含めずに配線を長く引き回している。なお、複数の層のメタル配線等を含んで構成されていてもよい。
【００６４】
前記のように、本実施形態の判定回路３０では、ＴＹＰ条件において、セル遅延回路３２のセル遅延量を、配線遅延回路３４の配線遅延量と同じにしている。つまり、ＴＹＰ条件においては、判定用フリップフロップのデータ信号３７と判定用フリップフロップのクロック信号３８とが、同じタイミングで入力されるように設計されている。
【００６５】
そして、本実施形態の半導体集積回路１の起動時に、配線遅延とセル遅延のＴＹＰ条件からの変化率の差に応じた判定信号１０４が出力される。後述するように、例えば配線遅延の変化率がセル遅延の変化率よりも大きく、ホールドエラーが発生し得る場合には、判定信号１０４はローレベルからハイレベルへと変化する。
【００６６】
ここで、セル遅延回路３２、配線遅延回路３４は、あらかじめレイアウトパターンが固定されているマクロ（ハードマクロ）を１つ以上用いて構成されていてもよい。本実施形態では、セル遅延回路３２はマクロ３３−１〜３３−４が並んだ構成であり、配線遅延回路３４はマクロ３５−１〜３５−４が並んだ構成となっている。
【００６７】
マクロを用いることで、自動配置配線を行う場合に生じるセル遅延、配線遅延の遅延量の誤差、すなわちセルの配置場所や配線の長さの変化に伴う遅延量の違いを気にする必要がなくなる。このとき、判定回路３０は、正確な判定信号１０４を生成することができる。
【００６８】
一方で、マクロを使用すると、レイアウトパターンが固定されているために、一定の面積を必要とする。そのため、半導体集積回路１の面積を最小にしたい場合には不向きである。このとき、バッファー、インバーター、ＡＮＤ、ＮＡＮＤ、ＯＲ、ＮＯＲ等の基本セルを自動配置配線することによって、セル遅延回路３２、配線遅延回路３４を作成してもよい。主要な回路を配置した後のスペースを利用してセル遅延回路および配線遅延回路を配置できるので、半導体集積回路全体の面積を小さくできる。
【００６９】
なお、基本セルを自動配置配線することでセル遅延回路３２、配線遅延回路３４を作成する場合には、例えばセルの種類、セルを配置する位置、配線の長さ等をレイアウトツールのオプションで指定することで、誤差を小さくしてもよい。
【００７０】
１．３．判定信号
図３（Ａ）〜図３（Ｃ）は本実施形態の判定信号１０４の変化を説明する図である。なお、図１〜図２と同じ要素には同じ符号を付しており説明を省略する。
【００７１】
図３（Ａ）は、前記のＴＹＰ条件のときの判定信号１０４を説明する図である。時刻ｔ０において、グローバルリセットが解除される。このとき、判定用フリップフロップのデフォルト値は０であり、判定信号１０４として‘Ｌ’が出力される。なお、以下ではフリップフロップ等の値０と‘Ｌ’を対応させ、値１と‘Ｈ’とを対応させる。
【００７２】
その後の時刻ｔ１でスイッチ５０がオン状態となり、判定回路用クロック信号ＣＬＫ０の１周期分がパルス信号１０２として用いられる。なお、スイッチ５０は時刻ｔ４で再びオフ状態となる。
【００７３】
パルス信号１０２は、セル遅延回路３２（図２参照）を経由して判定用フリップフロップのデータ信号３７となる。また、パルス信号１０２は、配線遅延回路３４（図２参照）を経由して判定用フリップフロップのクロック信号３８となる。
【００７４】
ＴＹＰ条件では、判定用フリップフロップのデータ信号３７と判定用フリップフロップのクロック信号３８の遅延量は同じである（時刻ｔ２〜時刻ｔ３）。判定用フリップフロップは、判定用フリップフロップのクロック信号３８の立ち上がりエッジで、判定用フリップフロップのデータ信号３７を取り込む。このとき、判定用フリップフロップの値は０から変化しないものとし、判定信号１０４として‘Ｌ’が出力され続ける。
【００７５】
図３（Ｂ）は、セル遅延の遅延量の変化率が、配線遅延の遅延量の変化率よりも大きい場合の判定信号１０４を説明する図である。このとき、ホールドエラーは発生しない。なお、図３（Ｂ）では、判定信号１０４の生成に直接関係のない信号の記載は省略する。
【００７６】
図３（Ｂ）の例では、判定用フリップフロップのデータ信号３７が表すセル遅延の遅延量は、時刻ｔ２〜時刻ｔ３Ｄが対応する。一方、判定用フリップフロップのクロック信号３８が表す配線遅延の遅延量は、時刻ｔ２〜時刻ｔ３Ｃが対応する。よって、セル遅延の方が、配線遅延よりも大きい。
【００７７】
ここで、判定用フリップフロップのクロック信号３８の立ち上がりエッジで、判定用フリップフロップのデータ信号３７を取り込まれる（時刻ｔ３Ｃ）。このとき、判定用フリップフロップの値は０のままであり、判定信号１０４として‘Ｌ’が出力され続ける。
【００７８】
図３（Ｃ）は、セル遅延の遅延量の変化率が、配線遅延の遅延量の変化率よりも小さい場合の判定信号１０４を説明する図である。このとき、ホールドエラーが発生しやすい。なお、図３（Ｃ）でも、判定信号１０４の生成に直接関係のない信号の記載は省略する。
【００７９】
図３（Ｃ）の例では、判定用フリップフロップのデータ信号３７が表すセル遅延の遅延量は、時刻ｔ２〜時刻ｔ３Ｄが対応する。一方、判定用フリップフロップのクロック信号３８が表す配線遅延の遅延量は、時刻ｔ２〜時刻ｔ３Ｃが対応する。よって、配線遅延の方が、セル遅延よりも大きい。
【００８０】
すると、時刻ｔ３Ｃにおいて、判定用フリップフロップのクロック信号３８の立ち上がりエッジで判定用フリップフロップのデータ信号３７が取り込まれるため、判定信号１０４は‘Ｌ’から‘Ｈ’へと変化する（時刻ｔ５）。
【００８１】
このように、本実施形態の判定回路３０は、図２のように簡易な構成ながら、ホールドエラーが発生しやすい状態を判定信号１０４によって的確に知らせることが可能である。判定回路３０は、内部で生成される信号に基づいて、このような判断を行うことができ、半導体集積回路の外部からの制御等を必要としない。
【００８２】
１．４．遅延選択回路と周波数調整回路
１．４．１．判定信号に応じた処理
図４は、判定信号の値と選択される遅延セル、周波数の関係を説明する図である。判定信号の値は、判定信号１０４が‘Ｌ’のときに０を、‘Ｈ’のときに１を対応させている。
【００８３】
判定信号の値が０であることは、判定回路３０（図２参照）によってホールドエラーが発生しないと判定されていることを示している。配線遅延のＴＹＰ条件時からの変化率が、セル遅延のＴＹＰ条件時からの変化率以下である場合等に、判定信号の値が０になる。
【００８４】
このとき、遅延選択回路２２−１〜２２−Ｎ（図１参照）は、遅延量が小さい論理回路を選択することができる。また、周波数調整回路４０（図１参照）も、高い周波数のクロックを選択することができる。
【００８５】
一方、判定信号の値が１であることは、判定回路３０（図２参照）によってホールドエラーが発生し得ると判定されていることを示している。配線遅延のＴＹＰ条件時からの変化率が、セル遅延のＴＹＰ条件時からの変化率よりも大きい場合等に、判定信号の値が１になる。
【００８６】
このとき、遅延選択回路２２−１〜２２−Ｎ（図１参照）は、遅延量が大きい論理回路を選択して、ホールドエラーを回避する必要がある。また、周波数調整回路４０（図１参照）も、遅延量の大きい論理回路を使用することにより生じるセットアップエラーを回避するために、低い周波数のクロックを選択する必要がある。
【００８７】
本実施形態では、遅延選択回路と周波数調整回路（図１参照）とが連動して、論理回路の遅延量と周波数を選択することで、外部から煩雑な制御を行うこともなく、半導体集積回路に正常動作を行わせる。以下に、遅延選択回路と周波数調整回路の構成の具体例を示す。なお、以下において、本実施形態の組み合わせ回路は１つだけ遅延選択回路を含む（Ｎ＝１）として説明する。
【００８８】
１．４．２．遅延選択回路と周波数調整回路の構成
図５は、本実施形態における遅延選択回路２２−１、周波数調整回路４０の構成例を表す。図５は、図１の半導体集積回路１において判定回路３０とスイッチ５０を除く部分２に対応する。なお、図１〜図４と同じ要素には同じ符号を付しており説明を省略する。
【００８９】
本実施形態の組み合わせ回路２０は、遅延選択回路２２−１と、遅延選択回路以外の組み合わせ回路６８とを含む。遅延選択回路以外の組み合わせ回路６８は、例えばフリップフロップ１０−１、１０−２からの入力信号に基づいて、１つのデータ信号を遅延選択回路２２−１に出力する。図５の例では、同じ反転の論理を有する２つの論理回路である、第１の論理回路６１、第２の論理回路６２のそれぞれがこのデータ信号を受け取る。
【００９０】
ここで、第１の論理回路６１と第２の論理回路６２は、遅延選択回路２２−１に含まれている。そして、第２の論理回路６２は、第１の論理回路６１よりも遅延量が大きい。
【００９１】
なお、遅延選択回路２２−１に含まれる論理回路とは、１つの基本セルであってもよいし（第１の論理回路６１参照）、基本セルを組み合わせて遅延量を調整したものであってもよい（第２の論理回路６２参照）。
【００９２】
そして、遅延選択回路２２−１は、マルチプレクサー６６を含み、判定信号１０４を選択信号として第１の論理回路６１、第２の論理回路６２の一方の出力を選択する。例えば、判定信号１０４の値が１であれば、遅延量の大きい第２の論理回路６２の出力を選択する（図４参照）。
【００９３】
本実施形態の周波数調整回路４０は、判定信号１０４を選択信号とするマルチプレクサー４２を含み、２つのクロック信号ＣＬＫ１、ＣＬＫ２の一方を選択する。ここで、ＣＬＫ１の周波数がＣＬＫ２よりも高いとする。そして、例えば判定信号１０４の値が１であれば、周波数の低いＣＬＫ２が周波数調整クロック信号１０６として選択される。
【００９４】
本実施形態の半導体集積回路では、判定回路３０（図１参照）がセル遅延量と配線遅延量とを比較して判定信号１０４を生成し、組み合わせ回路２０の遅延選択回路２２−１、周波数調整回路４０に出力する。そして、遅延選択回路２２−１は、判定信号１０４に基づいて適切な遅延量の論理回路を選択する。また、周波数調整回路４０も遅延選択回路２２−１に連動して、適切な周波数のクロック信号を選択する。
【００９５】
これにより、シミュレーションと乖離した遅延の変動率をもつ半導体集積回路が生産された場合であっても、ホールドエラーとセットアップエラーを回避して、設計変更することなく正常動作させることが可能になる。
【００９６】
そのため、シミュレーションで遅延の変動率を大きくとって、過剰な設計マージンを確保する必要はなくなる。
【００９７】
そして、遅延の変動率がシミュレーションとほぼ一致するような場合には、過剰な設計マージンをとっていないため、高い周波数で動作させることが可能であり、結果として半導体集積回路の性能が向上することになる。
【００９８】
２．変形例
第１実施形態の変形例について図６〜図９を参照して説明する。なお、第１実施形態と同じの要素については、図１〜図５と同じ符号を付して説明を省略する。
【００９９】
変形例の半導体集積回路は、遅延選択回路に互いに遅延量の異なる３つ以上の論理回路を含み、その中の１つを選択する。また、周波数調整回路４０は、遅延選択回路２２−１に連動して、適切な周波数のクロック信号が出力されるように調整を行う。
【０１００】
以下では、遅延選択回路が３つの論理回路を含み、その中の１つを選択する例について説明する。なお、第１実施形態と同じ構成（フリップフロップ１０−１〜１０−３、スイッチ５０等）については、重複説明を避けるために図示および説明を省略する。
【０１０１】
２．１．判定回路の構成
図６は、本変形例の判定回路３０Ａの構成例を表す。なお、図２と同じ要素には同じ符号を付しており説明を省略する。
【０１０２】
本変形例の判定回路３０Ａは、２つの判定用フリップフロップ３６Ａ、３６Ｂを含む。そして、それぞれから判定信号１０４Ａ、１０４Ｂが出力される。
【０１０３】
本変形例のセル遅延回路３２Ａは、マクロ３３−１〜３３−４を含む。そして、マクロ３３−１、３３−２による遅延（以下、セル遅延Ａともいう）を含む信号は、判定用フリップフロップ３６Ａのデータ入力として用いられる。また、全てのマクロ３３−１〜３３−４による遅延（以下、セル遅延Ｂともいう）を含む信号は、判定用フリップフロップ３６Ｂのデータ入力として用いられる。
【０１０４】
配線遅延回路３４Ａは、マクロ３５−１、３５−２を含む。そして、マクロ３５−１、３５−２による配線遅延は、ＴＹＰ条件において、セル遅延Ａと同じになるように設計されている。そして、この配線遅延を含む信号（判定用フリップフロップのクロック信号３８）は、判定用フリップフロップ３６Ａ、３６Ｂのクロック入力として用いられる。
【０１０５】
なお、以下では、セル遅延Ａを含む信号を判定用フリップフロップのデータ信号３７Ａといい、セル遅延Ｂを含む信号を判定用フリップフロップのデータ信号３７Ｂという。
【０１０６】
２．２．判定信号
図７（Ａ）〜図７（Ｃ）は本実施形態の判定信号の変化を説明する図である。なお、図３（Ａ）〜図３（Ｃ）と同じ要素には同じ符号を付しており説明を省略する。
【０１０７】
図７（Ａ）は、ＴＹＰ条件のときの判定信号１０４Ａ、１０４Ｂを説明する図である。時刻ｔ０において、グローバルリセットが解除される。このとき、判定用フリップフロップ３６Ａ、３６Ｂ（図６参照）のデフォルト値は共に０であり、判定信号１０４Ａ、１０４Ｂとして‘Ｌ’が出力される。
【０１０８】
その後の時刻ｔ１でスイッチ５０がオン状態となり、判定回路用クロック信号ＣＬＫ０の１周期分がパルス信号１０２として用いられる。なお、スイッチ５０は時刻ｔ４で再びオフ状態となる。
【０１０９】
ＴＹＰ条件では、判定用フリップフロップのデータ信号３７Ａと判定用フリップフロップのクロック信号３８の遅延量は同じである（時刻ｔ２〜時刻ｔ３Ａ）。このとき、判定用フリップフロップ３６Ａの値は０から変化しないものとし、判定信号１０４Ａとして‘Ｌ’が出力され続ける。
【０１１０】
また、判定用フリップフロップのデータ信号３７Ｂは、マクロセル３３−３、３３−４を経由するため遅延が大きい（セル遅延Ａ＜セル遅延Ｂ）。よって、時刻ｔ３Ｂまで‘Ｈ’とならないので、判定用フリップフロップ３６Ｂの値も０から変化せず、判定信号１０４Ｂとして‘Ｌ’が出力され続ける。
【０１１１】
図７（Ｂ）は、配線遅延の遅延量の変化率が大きく、セル遅延Ａの遅延量よりも大きな遅延が生じた場合の判定信号１０４Ａ、１０４Ｂを説明する図である。このとき、ホールドエラーが発生しやすい。なお、図７（Ｂ）では、判定信号１０４Ａ、１０４Ｂの生成に直接関係のない信号の記載は省略する。
【０１１２】
図７（Ｂ）の例では、判定用フリップフロップのデータ信号３７Ａは、時刻ｔ３Ｅで‘Ｈ’となる。そして、時刻ｔ３Ｃにおいて、判定用フリップフロップのクロック信号３８の立ち上がりエッジで、判定用フリップフロップのデータ信号３７Ａが取り込まれ、判定信号１０４Ａは‘Ｌ’から‘Ｈ’へと変化する（時刻ｔ５Ａ）。一方、判定用フリップフロップのデータ信号３７Ｂは、時刻ｔ３Ｆまで‘Ｈ’とならないので、判定信号１０４Ｂとして‘Ｌ’が出力され続ける。
【０１１３】
図７（Ｂ）の例は、第１実施形態において判定信号が変化する場合に対応する（図３（Ｃ）参照）。本変形例では、配線遅延の遅延量の変化率が更に大きい場合についても、判定を行うことができる。
【０１１４】
図７（Ｃ）は、配線遅延の遅延量の変化率が更に大きく、セル遅延Ｂの遅延量よりも大きな遅延が生じた場合の判定信号１０４Ａ、１０４Ｂを説明する図である。このとき、ホールドエラーが発生しやすく、より遅延量の大きい論理回路を選択する必要が生じる。なお、図７（Ｃ）でも、判定信号１０４Ａ、１０４Ｂの生成に直接関係のない信号の記載は省略する。
【０１１５】
図７（Ｃ）の例では、判定用フリップフロップのデータ信号３７Ａ、３７Ｂは、それぞれ、時刻ｔ３Ｅ、ｔ３Ｆで‘Ｈ’となる。そして、時刻ｔ３Ｃにおいて、判定用フリップフロップのクロック信号３８の立ち上がりエッジで、判定用フリップフロップのデータ信号３７Ａ、３７Ｂが取り込まれ、判定信号１０４Ａ、１０４Ｂは共に‘Ｌ’から‘Ｈ’へと変化する（時刻ｔ５Ａ）。
【０１１６】
本変形例では、判定信号１０４Ｂの状態によって、配線遅延の遅延量の変化率の大きさを把握することが可能になる。本変形例の判定回路３０は、図６のように簡易な構成ながら、ホールドエラーが発生しやすい状態を判定信号１０４Ａ、１０４Ｂによって的確に知らせ、更に配線遅延の遅延量の変化率の大きさについての情報も伝えることができる。
【０１１７】
２．３．遅延選択回路と周波数調整回路
２．３．１．判定信号に応じた処理
図８は、判定信号の値と選択される遅延セル、周波数の関係を説明する図である。なお、図４と対応する箇所はそのことを示して説明は省略する。
【０１１８】
本変形例では、遅延量を意図的に大きくしたセル遅延Ｂも用いる。そのため、配線遅延の変化率の大きさが非常に大きく、配線遅延量がセル遅延Ｂを超えるような場合には、更に遅延量の大きな論理回路を選択させることを可能にする。
【０１１９】
図８において、判定信号の値が（０、０）の場合、（０、１）の場合は、それぞれ、図４において、判定信号の値が０の場合、１の場合に対応する。
【０１２０】
そして、判定信号の値が（１、１）の場合には、配線遅延量がセル遅延Ｂを超えることを意味する。このとき、ホールドエラーを回避するには、更に遅延量に大きい論理回路を選択する必要がある（図８の「遅延セルの遅延量」の最下段）。そして、このとき、フリップフロップに供給するクロックの周波数も更に低くして、セットアップエラーを回避する必要がある（図８の「周波数」の最下段）。
【０１２１】
本変形例でも、遅延選択回路と周波数調整回路（図１参照）とが連動して、論理回路の遅延量と周波数を選択することで、外部から煩雑な制御を行うこともなく、半導体集積回路に正常動作を行わせることができる。以下に、遅延選択回路と周波数調整回路の構成の具体例を示す。
【０１２２】
２．３．２．遅延選択回路の構成
図９（Ａ）は、本変形例における遅延選択回路２２−１Ａの構成例を表す。なお、図５と同じ要素には同じ符号を付しており説明を省略する。
【０１２３】
遅延選択回路２２−１Ａは、反転の論理を有する３つの論理回路である、第１の論理回路６１、第２の論理回路６２、第３の論理回路６３を含む。ここで、第２の論理回路６２は第１の論理回路６１よりも遅延量が大きく、第３の論理回路６３は第２の論理回路６２よりも遅延量が大きい。
【０１２４】
そして、遅延選択回路２２−１Ａは、マルチプレクサー６６Ａを含み、判定信号１０４Ａ、１０４Ｂを組み合わせて選択信号とし、第１の論理回路６１、第２の論理回路６２、第３の論理回路６３のうちの１つを選択する。例えば、判定信号１０４Ａ、１０４Ｂの値が共に１であれば、遅延量の最も大きい第３の論理回路６３の出力を選択する（図８参照）。
【０１２５】
２．３．３．周波数調整回路の構成
図９（Ｂ）は、本変形例における周波数調整回路４０Ａの構成例を表す。なお、図５と同じ要素には同じ符号を付しており説明を省略する。
【０１２６】
図９（Ｂ）の周波数調整回路４０ＡはＰＬＬ回路を構成している。周波数調整回路４０Ａは、基準信号９０（例えば、図１のＣＬＫ０が対応してもよい）と比較信号９８との位相差を比較して差信号９２を発生する位相比較器８０と、ローパスフィルターであって差信号９２に基づく制御電圧９４を出力するループフィルター８２と、制御電圧９４によって周波数調整クロック信号１０６Ａを制御するＶＣＯ（voltage controlled oscillator）８４と、周波数調整クロック信号１０６Ａを分周した比較信号９８を生成する分周器８６とを含む。分周器８６は、外部からの制御信号によって分周数を変更できるプログラマブル分周器である。
【０１２７】
周波数調整回路４０Ａは、分周器８６の制御信号として判定信号１０４Ａ、１０４Ｂを受け取る。そして、遅延選択回路２２−１Ａで遅延量の大きい論理回路が選択された場合に、連動して周波数調整クロック信号１０６Ａの周波数が低くなるようにする。例えば、判定信号１０４Ａ、１０４Ｂが共に０のときには、分周器８６の分周数設定を１６としてもよい。そして、例えば判定信号１０４Ａ、１０４Ｂが共に１のときには、分周器８６の分周数設定を２５６としてもよい。また、それ以外の場合には、分周器８６の分周数設定を１２８としてもよい。
【０１２８】
本変形例のように、遅延選択回路に互いに遅延量の異なる３つ以上の論理回路を用意し、周波数調整回路が連動して適切な周波数のクロック信号を出力することで、回路の遅延量がシミュレーションモデルと大きく乖離する場合であっても正常動作する可能性が高くなる。そして、シミュレーションにおけるマージンを更に減らすことができ、更に高い周波数で動作させることが可能になる。
【０１２９】
３．その他
これらの例示に限らず、本発明は、実施の形態で説明した構成と実質的に同一の構成（例えば、機能、方法および結果が同一の構成、あるいは目的および効果が同一の構成）を含む。また、本発明は、実施の形態で説明した構成の本質的でない部分を置き換えた構成を含む。特に、フリップフロップの一部をＩＯセルに置き換えた構成では、入出力信号のタイミングを調整することが可能であり、実施の形態で説明した効果を奏する。
【０１３０】
また、本発明は、実施の形態で説明した構成と同一の作用効果を奏する構成又は同一の目的を達成することができる構成を含む。また、本発明は、実施の形態で説明した構成に公知技術を付加した構成を含む。
【符号の説明】
【０１３１】
１…半導体集積回路、１０−１〜１０−３…フリップフロップ、２０…組み合わせ回路、２２−１〜２２−Ｎ…遅延選択回路、２２−１Ａ…遅延選択回路、３０，３０Ａ…判定回路、３２，３２Ａ…セル遅延回路、３３−１，３３−２，３３−３，３３−４…マクロ、３４，３４Ａ…配線遅延回路、３５−１，３５−２，３５−３，３５−４…マクロ、３６，３６Ａ，３６Ｂ…判定用フリップフロップ、３７，３７Ａ，３７Ｂ…判定用フリップフロップのデータ信号、３８…判定用フリップフロップのクロック信号、４０，４０Ａ…周波数調整回路、４２…マルチプレクサー、５０…スイッチ、６１…第１の論理回路、６２…第２の論理回路、６３…第３の論理回路、６６，６６Ａ…マルチプレクサー、６８…遅延選択回路以外の組み合わせ回路、８０…位相比較器、８２…ループフィルター、８４…ＶＣＯ、８６…分周器、９０…基準信号、９２…差信号、９４…制御電圧、９８…比較信号、１０２…パルス信号、１０４，１０４Ａ，１０４Ｂ…判定信号、１０６，１０６Ａ…周波数調整クロック信号、ＣＬＫ０…判定回路用クロック信号、ＣＬＫ１，ＣＬＫ２…クロック信号
【図１】
0005741817.tif 000002
【図２】
0005741817.tif 000003
【図３】
0005741817.tif 000004
【図４】
0005741817.tif 000005
【図５】
0005741817.tif 000006
【図６】
0005741817.tif 000007
【図７】
0005741817.tif 000008
【図８】
0005741817.tif 000009
【図９】
0005741817.tif 000010