(57)【要約】【課題】少ない素子数で、スキャン機能と高速のフリップフロップ動作とを実現することが可能なフリップフロップを提供する。【解決手段】フリップフロップは、クロックＣＬＫの立ち上がりで入力データをラッチする第１のラッチ回路２１と、クロックＣＬＫの立下りで入力データをラッチする第２のラッチ回路２２と、クロックＣＬＫのＨレベル期間中に第１のラッチ回路２１からの出力データをデータ出力端子Ｑに出力し、クロックＣＬＫのＬレベル期間中に第２のラッチ回路２２からの出力データをデータ出力端子Ｑに出力する出力セレクタ２３とを含む。さらに、フリップフロップは、スキャンデータ入力端子ＩＮとデータ入力端子Ｄを選択的に第１のラッチ回路２１に接続する回路２４と、第１のラッチ回路２１の出力とデータ入力端子Ｄを選択的に第２のラッチ回路２２に接続する回路２５とを備えている。【選択図】      図２
2005303464.tif 000002
【特許請求の範囲】
【請求項１】
クロック信号の立ち上りで入力データをラッチする第１のラッチ回路と、
前記クロック信号の立ち下りで前記入力データをラッチする第２のラッチ回路と、
前記クロック信号の立ち上りから立ち下りまでの期間に前記第１のラッチ回路の出力を選択し、前記クロック信号の立ち下りから次の立ち上りまでの期間に前記第２のラッチ回路の出力を選択するセレクタと、
前記第１のラッチ回路および前記第２のラッチ回路の一方を用いて構成され、スキャンモード時にスキャンデータを受けるマスターラッチ回路と、前記マスターラッチ回路から出力されるデータをラッチするスレーブラッチ回路とを含むスキャン回路とを具備することを特徴とするフリップフロップ。
【請求項２】
ノーマルモード時に前記入力データを前記第１のラッチ回路に出力し、前記スキャンモード時に前記スキャンデータを前記第１のラッチ回路に出力する回路と、
前記ノーマルモード時に前記入力データを前記第２のラッチ回路に出力し、前記スキャンモード時に前記第１のラッチ回路からの出力データを前記第２のラッチ回路に出力する回路とをさらに具備し、
前記マスターラッチ回路は前記第１のラッチ回路から構成され、前記スレーブラッチ回路は前記第２のラッチ回路から構成されていることを特徴とする請求項１記載のフリップフロップ。
【請求項３】
前記第２のラッチ回路は、ノーマルモード時には前記クロック信号の立ち下りで前記入力データをラッチし、前記スキャンモード時には当該スキャンモード時に入力される第１のスキャンクロック信号に同期して前記スキャンデータをラッチするように構成されており、
前記スレーブラッチ回路は、前記第２のラッチ回路からの出力データを第２のスキャンクロック信号に同期してラッチするように構成されていることを特徴とする請求項１記載のフリップフロップ。
【請求項４】
データ入力端子と、
データ出力端子と、
クロック入力端子と、
スキャンデータ入力端子と、
前記クロック入力端子に入力されるクロック信号の立ち上りで入力データをラッチする第１のラッチ回路と、
前記クロック信号の立ち下りで入力データをラッチする第２のラッチ回路と、
前記クロック信号の立ち上りから立ち下りまでの期間に前記第１のラッチ回路からの出力データを選択して前記データ出力端子に出力し、前記クロック信号の立ち下りから次の立ち上りまでの期間に前記第２のラッチ回路からの出力データを選択して前記データ出力端子に出力するセレクタと、
前記第２のラッチ回路からの出力データを出力するスキャンデータ出力端子と、
ノーマルモード時に前記データ入力端子に入力されるデータを前記第１のラッチ回路に出力し、スキャンモード時に前記スキャンデータ入力端子に入力されるスキャンデータを前記第１のラッチ回路に出力する回路と、
前記ノーマルモード時に前記データ入力端子に入力されるデータを前記第２のラッチ回路に出力し、前記スキャンモード時に前記第１のラッチ回路からの出力データを前記第２のラッチ回路に出力する回路とを具備することを特徴とするフリップフロップ。
【請求項５】
データ入力端子と、
データ出力端子と、
クロック入力端子と、
スキャンデータ入力端子と、
スキャンデータ出力端子と、
前記クロック入力端子に入力されるクロック信号の立ち上りで、前記データ入力端子に入力される入力データをラッチする第１のラッチ回路と、
ノーマルモード時に前記クロック信号の立ち下りで前記入力データをラッチし、スキャンモード時には当該スキャンモード時に入力される第１のスキャンクロック信号に同期して、前記スキャンデータ入力端子に入力されるスキャンデータをラッチする第２のラッチ回路と、
前記クロック信号の立ち上りから立ち下りまでの期間に前記第１のラッチ回路からの出力データを選択して前記データ出力端子に出力し、前記クロック信号の立ち下りから次の立ち上りまでの期間に前記第２のラッチ回路からの出力データを選択して前記データ出力端子に出力するセレクタと、
前記スキャンモード時に、第２のスキャンクロック信号に同期して前記第２のラッチ回路からの出力データをラッチして前記スキャンデータ出力端子に出力する第３のラッチ回路とを具備することを特徴とするフリップフロップ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はフリップフロップに関し、特にスキャン機能を有するＤＤＲ（Dubble Data Rate）型フリップフロップに関する。
【背景技術】
【０００２】
近年、ＬＳＩにおいては、低消費電力および高速動作が要求されている。もしクロック信号の周波数を高くすると、その分だけ回路の低消費電力は増加する。よって、ＬＳＩにおいては、データの入出力をクロック信号の周波数よりも早いレートで行うことが可能なフリップフロップの実現が必要である。
【０００３】
このようなフリップフロップとしては、クロック信号の周波数の２倍の速度でデータをラッチおよび出力するＤＤＲ（Dubble Data Rate）型フリップフロップが知られている。ＤＤＲ（Dubble Data Rate）型フリップフロップを実現する回路構成としては、２つのラッチ回路とセレクタとを含む回路構成が知られている（例えば、特許文献１参照。）。
【特許文献１】米国特許第６，５２５，５６５号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、上記特許文献１のフリップフロップは、テスト用のスキャンデータを入出力するためのスキャン機能を備えていない。一般に、ＬＳＩにおいては、内部回路の動作テストを実現するためにスキャン機能付きのフリップフロップを用いることが必要である。よって、スキャン機能付きのＤＤＲ（Dubble Data Rate）型フリップフロップを実現することが必要である。しかし、スキャン機能を実行するためのスキャン回路を単純にＤＤＲ（Dubble Data Rate）型フリップフロップに追加すると、そのＤＤＲ（Dubble Data Rate）型フリップフロップフリップの構成に必要な素子数が大幅に増加してしまうことになる。
【０００５】
本発明は上述の事情を考慮してなされたものであり、少ない素子数で、スキャン機能とクロック信号の周波数よりも高速のフリップフロップ動作とを実現することが可能なフリップフロップを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述の課題を解決するため、本発明のフリップフロップは、クロック信号の立ち上りで入力データをラッチする第１のラッチ回路と、前記クロック信号の立ち下りで前記入力データをラッチする第２のラッチ回路と、前記クロック信号の立ち上りから立ち下りまでの期間に前記第１のラッチ回路の出力を選択し、前記クロック信号の立ち下りから次の立ち上りまでの期間に前記第２のラッチ回路の出力を選択するセレクタと、前記第１のラッチ回路および前記第２のラッチ回路の一方を用いて構成され、スキャンモード時にスキャンデータを受けるマスターラッチ回路と、前記マスターラッチ回路から出力されるデータをラッチするスレーブラッチ回路とを含むスキャン回路とを具備することを特徴とする。
【０００７】
また、本発明のフリップフロップは、データ入力端子と、データ出力端子と、クロック入力端子と、スキャンデータ入力端子と、前記クロック入力端子に入力されるクロック信号の立ち上りで入力データをラッチする第１のラッチ回路と、前記クロック信号の立ち下りで入力データをラッチする第２のラッチ回路と、前記クロック信号の立ち上りから立ち下りまでの期間に前記第１のラッチ回路からの出力データを選択して前記データ出力端子に出力し、前記クロック信号の立ち下りから次の立ち上りまでの期間に前記第２のラッチ回路からの出力データを選択して前記データ出力端子に出力するセレクタと、前記第２のラッチ回路からの出力データを出力するスキャンデータ出力端子と、ノーマルモード時に前記データ入力端子に入力されるデータを前記第１のラッチ回路に出力し、スキャンモード時に前記スキャンデータ入力端子に入力されるスキャンデータを前記第１のラッチ回路に出力する回路と、前記ノーマルモード時に前記データ入力端子に入力されるデータを前記第２のラッチ回路に出力し、前記スキャンモード時に前記第１のラッチ回路からの出力データを前記第２のラッチ回路に出力する回路とを具備することを特徴とする。
【０００８】
また、本発明のフリップフロップは、データ入力端子と、データ出力端子と、クロック入力端子と、スキャンデータ入力端子と、スキャンデータ出力端子と、前記クロック入力端子に入力されるクロック信号の立ち上りで、前記データ入力端子に入力される入力データをラッチする第１のラッチ回路と、ノーマルモード時に前記クロック信号の立ち下りで前記入力データをラッチし、スキャンモード時には当該スキャンモード時に入力される第１のスキャンクロック信号に同期して、前記スキャンデータ入力端子に入力されるスキャンデータをラッチする第２のラッチ回路と、前記クロック信号の立ち上りから立ち下りまでの期間に前記第１のラッチ回路からの出力データを選択して前記データ出力端子に出力し、前記クロック信号の立ち下りから次の立ち上りまでの期間に前記第２のラッチ回路からの出力データを選択して前記データ出力端子に出力するセレクタと、前記スキャンモード時に、第２のスキャンクロック信号に同期して前記第２のラッチ回路からの出力データをラッチして前記スキャンデータ出力端子に出力する第３のラッチ回路とを具備することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、少ない素子数で、スキャン機能とクロック信号の周波数よりも高速のフリップフロップ動作とを実現することが可能となる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して、本発明の実施形態を説明する。  
［第１実施形態］
図１には、本発明の第１実施形態に係るフリップフロップを搭載した半導体集積回路（ＬＳＩ）の例としてプロセッサの構成が模式的に示されている。このプロセッサ１は、クロック信号（ＣＬＫ）の周波数の２倍の速度で動作する内部回路であるコアロジック１０を備えている。コアロジック１０は、組み合わせ回路から構成されている。さらに、プロセッサ１は、コアロジック１０との間でデータ入出力を行うための複数のフリップフロップ１１を備えている。
【００１１】
各フリップフロップ１１はスキャン機能付きのＤＤＲ（Dubble Data Rate）型フリップフロップであり、図示のように、データ入力端子（Ｄ）、データ出力端子（Ｑ）、クロック信号入力端子（ＣＫ）、スキャンデータ入力端子（ＳＩ）、スキャンデータ出力端子（ＳＯ）、スキャンモード信号入力端子（ＳＣ）を備えている。
【００１２】
プロセッサ１には、クロック信号ＣＬＫを外部から入力するためのクロック入力ピン１２、外部との間で複数ビット幅のデータ（ＤＡＴＡ）を入出力するための複数のデータピン１３、外部からスキャンデータをシリアルに入力するためのスキャンデータ入力（ＳＩ）ピン１４、外部にスキャンデータをシリアルに出力するためのスキャンデータ出力（ＳＯ）ピン１５、外部からスキャンモード信号ＳＣを入力するためのスキャンモード信号入力ピン１６を備えている。
【００１３】
各フリップフロップ１１のデータ入力端子（Ｄ）およびデータ出力端子（Ｑ）は、コアロジック１０に接続されている。なお、実際には、データ入力端子（Ｄ）がデータピン１３に接続され、データ出力端子（Ｑ）がコアロジック１０に接続されたフリップフロップ１１や、データ入力端子（Ｄ）がコアロジック１０に接続され、データ出力端子（Ｑ）がデータピン１３に接続されたフリップフロップ１１なども存在する。
【００１４】
また、各フリップフロップ１１のクロック信号入力端子（ＣＫ）およびスキャンモード信号入力端子（ＳＣ）はそれぞれクロック入力ピン１２およびスキャンモード信号入力ピン１６にそれぞれ接続されている。さらに、複数のフリップフロップ１１は、前段のフリップフロップ１１のスキャンデータ出力端子（ＳＯ）が次段のフリップフロップ１１のスキャンデータ入力端子（ＳＩ）に入力されるように、カスケード接続されている。この場合、初段のフリップフロップ１１のスキャンデータ入力端子（ＳＩ）はスキャンデータ入力（ＳＩ）ピン１４に接続され、最終段のフリップフロップ１１のスキャンデータ出力端子（ＳＯ）はスキャンデータ出力（ＳＯ）ピン１５に接続されている。
【００１５】
各フリップフロップ１１は、スキャンモード信号入力端子（ＳＣ）に入力されるスキャンモード信号ＳＣによって、ノーマルモードまたはスキャンモードに設定される。
【００１６】
ノーマルモードにおいて、各フリップフロップ１１は、クロック信号入力端子（ＣＫ）に入力されるクロック信号ＣＬＫの周波数の２倍の速度でフリップフロップ動作を実行する。すなわち、ノーマルモードにおいては、各フリップフロップ１１は、データ入力端子（Ｄ）に入力される入力データをクロック信号ＣＬＫの前縁（例えば立ち上がりエッジ）でラッチし、そのラッチしたデータをデータ出力端子（Ｑ）に出力するとともに、データ入力端子（Ｄ）に入力される入力データをクロック信号ＣＬＫの後縁（例えば立ち下がりエッジ）でラッチし、そのラッチしたデータをデータ出力端子（Ｑ）に出力する。このように、ノーマルモードにおいては、各フリップフロップ１１は、ＤＤＲ（Dubble Data Rate）型フリップフロップとして機能し、クロック信号ＣＬＫの周波数の２倍の速度でフリップフロップ動作を実行する。
【００１７】
スキャンモードにおいては、各フリップフロップ１１は、スキャンデータ入力端子（ＳＩ）に入力されるスキャンデータＳＩをクロック信号ＣＬＫの前縁（例えば立ち上がりエッジ）でラッチし、そのラッチしたデータをスキャンデータ出力端子（ＳＯ）に出力する。このため、スキャンモードにおいては、カスケード接続された複数のフリップフロップ１１は、シフトレジスタとして機能する。
【００１８】
ここで、コアロジック１０の動作をテストするためのテスト動作について説明する。まず、各フリップフロップ１１をスキャンモードに設定する。次いで、スキャンデータ入力（ＳＩ）ピン１４からテストデータパターンをスキャンデータとしてシリアルに入力する。これにより、テストデータパターンが複数のフリップフロップ１１にそれぞれセットされる。この後、各フリップフロップ１１をノーマルモードで動作させる。これにより、複数のフリップフロップ１１にセットされたテストデータパターンがコアロジック１０に入力され、そのテストデータパターンに対応するコアロジック１０からの出力データパターンが複数のフリップフロップ１１それぞれにセットされる。この後、各フリップフロップ１１をスキャンモードに設定する。これにより、出力データパターンがスキャンデータ出力（ＳＯ）ピン１５からシリアルに出力される。
【００１９】
次に、図２を参照して、本実施形態に係るフリップフロップ１１の構成を説明する。
【００２０】
各フリップフロップ１１は、第１のラッチ回路２１、第２のラッチ回路２２、出力セレクタ２３、第１の入力セレクタ２４、および第２の入力セレクタ２５を備えている。
【００２１】
第１のラッチ回路２１は、第１の入力セレクタ２４からの“１”または“０”のバイナリデータを、クロック信号入力端子（ＣＫ）に入力されるクロック信号ＣＬＫの前縁でラッチし、そのラッチしたデータをクロック信号ＣＬＫの後縁まで保持する。ノードＡは、第１のラッチ回路２１の出力である。以下では、クロック信号ＣＬＫの前縁を立ち上がりエッジとし、後縁を立ち下がりエッジとした場合を想定することとする。
【００２２】
この第１のラッチ回路２１は、クロックドインバータ１１１と、インバータ１１２と、クロックドインバータ１１３とから構成されている。インバータ１１２とクロックドインバータ１１３は双安定回路を構成する。クロックドインバータ１１１は、クロック信号入力端子（ＣＫ）に入力されるクロック信号ＣＬＫの“Ｌ”レベル期間にインバータとして動作するＣＭＯＳクロックドインバータである。クロックドインバータ１１１は、クロック信号ＣＬＫの“Ｌ”レベル期間においては、第１の入力セレクタ２４からの“１”または“０”のバイナリデータの反転データを出力する。一方、クロック信号ＣＬＫの“Ｈ”レベル期間においては、クロックドインバータ１１１の出力はハイインピーダンスとなる。クロックドインバータ１１３は、クロック信号入力端子（ＣＫ）に入力されるクロック信号ＣＬＫの“Ｈ”レベル期間にインバータとして動作するＣＭＯＳクロックドインバータである。クロックドインバータ１１３は、クロック信号ＣＬＫの“Ｈ”レベル期間においては、インバータ１１２からの出力データの反転データを出力する。一方、クロック信号ＣＬＫの“Ｌ”レベル期間においては、クロックドインバータ１１３の出力はハイインピーダンスとなる。
【００２３】
クロック信号ＣＬＫの“Ｌ”レベル期間においては、第１の入力セレクタ２４からの“１”または“０”のバイナリデータの反転データがそのままノードＡに現われる。クロック信号ＣＬＫの“Ｌ”から“Ｈ”への立ち上がりで、ノードＡ上のデータはインバータ１１２とクロックドインバータ１１３から構成される双安定回路によってラッチされる。このラッチされたデータはクロック信号ＣＬＫが“Ｈ”レベルの期間中保持される。
【００２４】
第２のラッチ回路２２は、第２の入力セレクタ２５からの“１”または“０”のバイナリデータを、クロック信号入力端子（ＣＫ）に入力されるクロック信号ＣＬＫの立ち下がりでラッチし、そのラッチしたデータをクロック信号ＣＬＫの次の立ち上がりまで保持する。ノードＢは、第２のラッチ回路２２の出力である。
【００２５】
この第２のラッチ回路２２は、クロックドインバータ１１４と、インバータ１１５と、クロックドインバータ１１６とから構成されている。インバータ１１５とクロックドインバータ１１６は双安定回路を構成する。クロックドインバータ１１４は、クロック信号入力端子（ＣＫ）に入力されるクロック信号ＣＬＫの“Ｈ”レベル期間にインバータとして動作するＣＭＯＳクロックドインバータである。クロックドインバータ１１４は、クロック信号ＣＬＫの“Ｈ”レベル期間においては、第２の入力セレクタ２５からの“１”または“０”のバイナリデータの反転データを出力する。一方、クロック信号ＣＬＫの“Ｌ”レベル期間においては、クロックドインバータ１１４の出力はハイインピーダンスとなる。クロックドインバータ１１６は、クロック信号入力端子（ＣＫ）に入力されるクロック信号ＣＬＫの“Ｌ”レベル期間にインバータとして動作するＣＭＯＳクロックドインバータである。クロックドインバータ１１６は、クロック信号ＣＬＫの“Ｌ”レベル期間においては、インバータ１１５からの出力データの反転データを出力する。一方、クロック信号ＣＬＫの“Ｈ”レベル期間においては、クロックドインバータ１１６の出力はハイインピーダンスとなる。
【００２６】
クロック信号ＣＬＫの“Ｈ”レベル期間においては、第２の入力セレクタ２５からの“１”または“０”のバイナリデータの反転データがそのままノードＢに現われる。クロック信号ＣＬＫの“Ｈ”から“Ｌ”への立ち下がりで、ノードＢ上のデータはインバータ１１５とクロックドインバータ１１６から構成される双安定回路によってラッチされる。このラッチされたデータはクロック信号ＣＬＫが“Ｌ”レベルの期間中保持される。
【００２７】
出力セレクタ２３は、クロック信号入力端子（ＣＫ）に入力されるクロック信号ＣＬＫに応じて、第１のラッチ回路２１および第２のラッチ回路２２の一方を選択し、選択したラッチ回路の出力データをデータ出力端子（Ｑ）に出力する。すなわち、セレクタ２３は、クロック信号入力端子（ＣＫ）に入力されるクロック信号ＣＬＫの“Ｈ”レベル期間中は、第１のラッチ回路２１を選択してその第１のラッチ回路２１からの出力データをデータ出力端子（Ｑ）に出力し、クロック信号ＣＬＫの“Ｌ”レベル期間中は、第２のラッチ回路２２を選択してその第２のラッチ回路２２からの出力データをデータ出力端子（Ｑ）に出力する。この出力セレクタ２３は、図示のように、２つのクロックドインバータ１１７，１１８から構成されている。クロックドインバータ１１７は、クロック信号ＣＬＫの“Ｈ”レベル期間中にノードＡの反転データを出力する。クロックドインバータ１１８は、クロック信号ＣＬＫの“Ｌ”レベル期間中にノードＢの反転データを出力する。
【００２８】
第１の入力セレクタ２４は、スキャンモード信号入力端子（ＳＣ）に入力されるスキャンモード信号ＳＣに応じて、データ入力端子（Ｄ）およびスキャンデータ入力端子（ＳＩ）を選択的に第１のラッチ回路２１に電気的に接続する。すなわち、第１の入力セレクタ２４は、ノーマルモード時（スキャンモード信号ＳＣ＝“Ｌ”）においては、データ入力端子（Ｄ）から入力される入力データを第１のラッチ回路２１に出力し、スキャンモード時（スキャンモード信号ＳＣ＝“Ｈ”）においては、スキャンデータ入力端子（ＳＩ）から入力されるスキャンデータを第１のラッチ回路２１に出力する。
【００２９】
第２の入力セレクタ２５は、スキャンモード信号入力端子（ＳＣ）に入力されるスキャンモード信号ＳＣに応じて、第１のラッチ回路２１の出力およびデータ入力端子（Ｄ）を選択的に第２のラッチ回路２２に電気的に接続する。すなわち、第２の入力セレクタ２５は、ノーマルモード時（スキャンモード信号ＳＣ＝“Ｌ”）においては、データ入力端子（Ｄ）から入力される入力データを第２のラッチ回路２２に出力し、スキャンモード時（スキャンモード信号ＳＣ＝“Ｈ”）においては、第１のラッチ回路２１からの出力データを第２のラッチ回路２２に出力する。
【００３０】
このように、スキャンモード時においては、第１のラッチ回路２１からの出力データが第２のラッチ回路２２に帰還入力される。これにより、スキャンモード時においては、第１のラッチ回路２１はスキャン用のマスターラッチ回路として機能し、第２のラッチ回路２２はスキャン用のスレーブラッチ回路として機能する。第２のラッチ回路２２の出力はスキャンデータ出力端子（ＳＯ）に接続されている。なお、ノードＡを第２の入力セレクタ２５を介して第２のラッチ回路２２に帰還接続し、ノードＢをスキャンデータ出力端子（ＳＯ）に接続してもよい。
【００３１】
一方、ノーマルモード時においては、データ入力端子（Ｄ）から入力される入力データは第１のラッチ回路２１および第２のラッチ回路２２の双方に入力されるので、第１のラッチ回路２１および第２のラッチ回路２２はそれぞれＤＤＲ用のマスターラッチとして機能することになる。
【００３２】
図３のタイミングチャートはノーマルモード時の動作を模式的に示している。データ入力端子（Ｄ）には、入力データ列Ｄ１，Ｄ２，Ｄ３，Ｄ４，…がクロック信号ＣＬＫの１／２の周期の間隔で順次入力される。入力データ列Ｄ１，Ｄ２，Ｄ３，Ｄ４，…は、第１のラッチ回路２１および第２のラッチ回路２２によって交互にラッチされる。すなわち、まず、クロック信号ＣＬＫの立下りで入力データＤ１が第２のラッチ回路２２によってラッチされ、クロック信号ＣＬＫの立下りから次ぎの立ち上がりまでの期間中、Ｑ出力としてデータ出力端子（Ｑ）から出力される。次ぎに、クロック信号ＣＬＫの立ち上がりで入力データＤ２が第１のラッチ回路２１によってラッチされ、クロック信号ＣＬＫの立ち上がりから次ぎの立下りまでの期間中、Ｑ出力としてデータ出力端子（Ｑ）から出力される。なお、実際には、クロック信号ＣＬＫの“Ｌ”レベル期間中はデータ入力端子（Ｄ）からの入力データがそのままノードＡに出力され、クロック信号ＣＬＫの“Ｈ”レベル期間中はデータ入力端子（Ｄ）からの入力データがそのままノードＢに出力されることになる。
【００３３】
図４のタイミングチャートはノーマルモードおよびスキャンモードそれぞれに対応する動作を具体的に示している。スキャンデータ入力端子（ＳＩ）には、スキャンデータ列ＳＤ１，ＳＤ２，ＳＤ３，ＳＤ４，…がクロック信号ＣＬＫの周期と同じ間隔で順次入力される。スキャンモード時（スキャンモード信号ＳＣ＝“Ｈ”）においては、スキャンデータがクロック信号ＣＬＫの立ち上がりで第１のラッチ回路２１によってラッチされ、その第１のラッチ回路２１のラッチ出力である出力ノードＡがクロック信号ＣＬＫの立下りで第２のラッチ回路２２によってラッチされる。よって、フリップフロップ１１は通常のマスター・スレーブ型フリップフロップとして機能することとなり、第１のラッチ回路２１および第２のラッチ回路２２はそれぞれスキャン用のマスターラッチ回路およびスキャン用のスレーブラッチ回路として動作する。第１のラッチ回路２１および第２のラッチ回路２２から構成されるスキャン回路は、クロック信号ＣＬＫの立ち上がりでスキャンデータをラッチし、そのラッチしたスキャンデータをスキャンデータ出力端子（ＳＯ）に出力する。ノーマルモード時（スキャンモード信号ＳＣ＝“Ｌ”）における動作は図３で説明した通りである。
【００３４】
図５には、フリップフロップ１１の具体的な回路構成が示されている。第１の入力セレクタ２４は、図示のように、２つの転送ゲート１２１，１２２から構成される。転送ゲート１２１は、スキャンモード時にスキャンモード信号入力端子（ＳＣ）を第１のラッチ回路２１に接続する回路であり、スキャンモード信号ＳＣがゲートに入力されるＮチャネルＭＯＳトランジスタとスキャンモード信号ＳＣの反転信号がゲートに入力されるＰチャネルＭＯＳトランジスタとから構成されている。転送ゲート１２２は、ノーマルモード時にデータ入力端子（Ｄ）を第１のラッチ回路２１に接続する回路であり、スキャンモード信号ＳＣがゲートに入力されるＰチャネルＭＯＳトランジスタとスキャンモード信号ＳＣの反転信号がゲートに入力されるＮチャネルＭＯＳトランジスタとから構成されている。
【００３５】
第２の入力セレクタ２５も、図示のように、２つの転送ゲート１２３，１２４から構成される。転送ゲート１２３は、スキャンモード時に第１のラッチ回路２１の出力を第２のラッチ回路２２に出力する回路であり、スキャンモード信号ＳＣがゲートに入力されるＮチャネルＭＯＳトランジスタとスキャンモード信号ＳＣの反転信号がゲートに入力されるＰチャネルＭＯＳトランジスタとから構成されている。転送ゲート１２４は、ノーマルモード時にデータ入力端子（Ｄ）を第２のラッチ回路２２に接続する回路であり、スキャンモード信号ＳＣがゲートに入力されるＰチャネルＭＯＳトランジスタとスキャンモード信号ＳＣの反転信号がゲートに入力されるＮチャネルＭＯＳトランジスタとから構成されている。
【００３６】
また、出力セレクタ２３は、図６に示すように、３つのＮＡＮＤゲート１４１〜１４３を用いて実現することもできる。２つのＰチャネルＭＯＳトランジスタのカレントパスを直列接続することが必要なクロックドインバータを用いる場合に比し、高速動作を実現することができる。また、第１のラッチ回路２１のクロックドインバータ１１１、第２のラッチ回路２２のクロックドインバータ１１４の代わりに、図６に示すように、転送ゲート１３１、１３２を用いることもできる。
【００３７】
以上のように、第１実施形態においては、ＤＤＲフリップフロップを構成する２つのラッチ回路２１，２２をそれぞれスキャン用マスターラッチおよびスキャン用スレーブラッチとして兼用する構成であるので、少ない素子数で、スキャン動作とＤＤＲフリップフロップ動作の双方を実現することが可能となる。
【００３８】
［第２実施形態］
図７には、本発明の第２実施形態に係るフリップフロップを搭載した半導体集積回路（ＬＳＩ）の例としてプロセッサの構成が模式的に示されている。第１実施形態と同一の部部には同一の符号が付されている。このプロセッサ１においては、図１のスキャンモード信号入力ピン１６の代わりに、第１および第２のスキャンクロック信号Ｓ１，Ｓ２を外部から入力するための第１および第２のスキャンクロック信号入力ピン１７，１８が設けられている。第１および第２のスキャンクロック信号Ｓ１，Ｓ２は、スキャンモード信号ＳＣの代わりに使用される信号であり、スキャンモードにおいてはクロック信号ＣＬＫの機能を兼ねる。すなわち、スキャンクロック信号Ｓ１はスキャン用のマスターラッチ回路の動作を制御するためのクロックとして使用され、スキャンクロック信号Ｓ２はスキャン用のスレーブラッチ回路の動作を制御するためのクロックとして使用される。これらスキャンクロック信号Ｓ１，Ｓ２を外部から入力することにより、スキャンモード時における十分なホールドタイムを確保することができる。
【００３９】
さらに、プロセッサ１は、コアロジック１０との間でデータ入出力を行うための複数のフリップフロップ１２を備えている。
【００４０】
各フリップフロップ１２はスキャン機能付きのＤＤＲ（Dubble Data Rate）型フリップフロップであり、図示のように、データ入力端子（Ｄ）、データ出力端子（Ｑ）、クロック信号入力端子（ＣＫ）、スキャンデータ入力端子（ＳＩ）、スキャンデータ出力端子（ＳＯ）、第１のスキャンクロック信号入力端子（Ｓ１）、第２のスキャンクロック信号入力端子（Ｓ２）を備えている。
【００４１】
各フリップフロップ１２のクロック信号入力端子（ＣＫ）、第１のスキャンクロック信号入力端子（Ｓ１）、および第２のスキャンクロック信号入力端子（Ｓ２）はそれぞれクロック入力ピン１２、第１のスキャンクロック信号入力ピン１７、および第２のスキャンクロック信号入力ピン１８にそれぞれ接続されている。さらに、複数のフリップフロップ１２は、前段のフリップフロップ１２のスキャンデータ出力端子（ＳＯ）が次段のフリップフロップ１２のスキャンデータ入力端子（ＳＩ）に入力されるように、カスケード接続されている。なお、例えばスキャンクロック信号Ｓ１の反転信号をフリップフロップ１２内部で生成し、その反転信号をスキャンクロック信号Ｓ２として利用してもよい。
【００４２】
各フリップフロップ１２は、第１および第２のスキャンクロック信号Ｓ１，Ｓ２がそれぞれ“Ｌ”レベルに固定されているときはノーマルモードに設定され、第１および第２のスキャンクロック信号Ｓ１，Ｓ２が入力されたときはスキャンモードに設定される。スキャンモードにおいては、各フリップフロップ１２は、第１および第２のスキャンクロック信号Ｓ１，Ｓ２に同期してスキャン動作を実行する。スキャンモードにおいては、クロック信号ＣＬＫの供給は停止される。
【００４３】
次に、図８を参照して、本実施形態に係るフリップフロップ１２の構成を説明する。
【００４４】
各フリップフロップ１２は、第１のラッチ回路３１、第２のラッチ回路３２、出力セレクタ３３、および第３のラッチ回路３４を備えている。
【００４５】
第１のラッチ回路３１は、データ入力端子（Ｄ）に入力される“１”または“０”のバイナリデータを、クロック信号入力端子（ＣＫ）に入力されるクロック信号ＣＬＫの立ち上がりでラッチし、そのラッチしたデータをクロック信号ＣＬＫの立下りまで保持する。ノードＡは、第１のラッチ回路３１の出力である。
【００４６】
この第１のラッチ回路３１は、クロックドインバータ２１１と、インバータ２１２と、クロックドインバータ２１３とから構成されている。インバータ２１２とクロックドインバータ２１３は双安定回路を構成する。クロックドインバータ２１１は、クロック信号入力端子（ＣＫ）に入力されるクロック信号ＣＬＫの“Ｌ”レベル期間にインバータとして動作するＣＭＯＳクロックドインバータである。クロックドインバータ２１１は、クロック信号ＣＬＫの“Ｌ”レベル期間においては、データ入力端子（Ｄ）からの“１”または“０”のバイナリデータの反転データを出力する。一方、クロック信号ＣＬＫの“Ｈ”レベル期間においては、クロックドインバータ２１１の出力はハイインピーダンスとなる。クロックドインバータ２１３は、クロック信号入力端子（ＣＫ）に入力されるクロック信号ＣＬＫの“Ｈ”レベル期間にインバータとして動作するＣＭＯＳクロックドインバータである。クロックドインバータ２１３は、クロック信号ＣＬＫの“Ｈ”レベル期間においては、インバータ２１２からの出力データの反転データを出力する。一方、クロック信号ＣＬＫの“Ｌ”レベル期間においては、クロックドインバータ２１３の出力はハイインピーダンスとなる。
【００４７】
クロック信号ＣＬＫの“Ｌ”レベル期間においては、データ入力端子（Ｄ）からのデータの反転データがそのままノードＡに現われる。クロック信号ＣＬＫの“Ｌ”から“Ｈ”への立ち上がりで、ノードＡ上のデータはインバータ２１２とクロックドインバータ２１３から構成される双安定回路によってラッチされる。このラッチされたデータはクロック信号ＣＬＫが“Ｈ”レベルの期間中保持される。
【００４８】
第２のラッチ回路３２は、ノーマルモードにおいてはデータ入力端子（Ｄ）からの“１”または“０”のバイナリデータを、クロック信号入力端子（ＣＫ）に入力されるクロック信号ＣＬＫの立ち下がりでラッチし、そのラッチしたデータをクロック信号ＣＬＫの次の立ち上がりまで保持する。ノードＢは、第２のラッチ回路３２の出力である。一方、スキャンモードにおいては、第２のラッチ回路３２は、スキャンデータ入力端子（ＳＩ）から入力される“１”または“０”のバイナリデータ（スキャンデータ）を、第１のスキャンクロック信号入力端子（Ｓ１）に入力される第１のスキャンクロック信号Ｓ１の立下りでラッチし、そのラッチしたデータを第１のスキャンクロック信号Ｓ１の次の立ち上がりまで保持する。
【００４９】
この第２のラッチ回路３２は、クロックドインバータ２１４と、インバータ２１５と、クロックドインバータ２１６と、転送ゲート２１７と、クロックドインバータ２１８とから構成されている。
【００５０】
クロックドインバータ２１４は、クロック信号入力端子（ＣＫ）に入力されるクロック信号ＣＬＫの“Ｈ”レベル期間にインバータとして動作するＣＭＯＳクロックドインバータである。クロックドインバータ２１４は、クロック信号ＣＬＫの“Ｈ”レベル期間においては、データ入力端子（Ｄ）からの“１”または“０”のバイナリデータの反転データを出力する。一方、クロック信号ＣＬＫの“Ｌ”レベル期間においては、クロックドインバータ２１４の出力はハイインピーダンスとなる。クロックドインバータ２１６は、第１のスキャンクロック信号Ｓ１の“Ｌ”レベル期間にインバータとして動作するＣＭＯＳクロックドインバータである。クロックドインバータ２１６は、第１のスキャンクロック信号Ｓ１の“Ｌ”レベル期間においては、インバータ２１５からの出力データの反転データを出力する。一方、第１のスキャンクロック信号Ｓ１の“Ｈ”レベル期間においては、クロックドインバータ２１６の出力はハイインピーダンスとなる。転送ゲート２１７は、クロック信号ＣＬＫがゲートに入力されるＰチャネルＭＯＳトランジスタとクロック信号ＣＬＫの反転信号がゲートに入力されるＮチャネルＭＯＳトランジスタとから構成されており、クロック信号ＣＬＫの“Ｌ”レベル期間中はオンし、クロック信号ＣＬＫの“Ｈ”レベル期間中はオフする。クロックドインバータ２１８は、第１のスキャンクロック信号Ｓ１の“Ｈ”レベル期間にインバータとして動作するＣＭＯＳクロックドインバータである。クロックドインバータ２１８は、第１のスキャンクロック信号Ｓ１の“Ｈ”レベル期間においては、スキャンデータ入力端子（ＳＩ）からの“１”または“０”のバイナリデータ（スキャンデータ）の反転データを出力する。一方、第１のスキャンクロック信号Ｓ１の“Ｌ”レベル期間においては、クロックドインバータ２１８の出力はハイインピーダンスとなる。
【００５１】
ノーマルモードにおいては第１のスキャンクロック信号Ｓ１は“Ｌ”レベルに固定される。したがって、クロックドインバータ２１４、インバータ２１５、クロックドインバータ２１６、および転送ゲート２１７が、ノーマルモード用のラッチ回路として機能する。すなわち、ノーマルモードにおいては、クロック信号ＣＬＫの“Ｈ”レベル期間中はデータ入力端子（Ｄ）からのデータの反転データがそのままノードＢに現われる。クロック信号ＣＬＫの“Ｈ”から“Ｌ”への立ち下がりで、ノードＢ上のデータはインバータ２１５、クロックドインバータ２１６、および転送ゲート２１７から構成される双安定回路によってラッチされる。このラッチされたデータはクロック信号ＣＬＫが“Ｌ”レベルの期間中保持される。
【００５２】
スキャンモードにおいてはクロック信号ＣＬＫの代わりにスキャンクロック信号Ｓ１，Ｓ２が入力される。したがって、クロックドインバータ２１８、インバータ２１５、クロックドインバータ２１６、および転送ゲート２１７が、スキャン用のマスターラッチ回路として機能する。すなわち、スキャンモードにおいては、スキャンクロック信号Ｓ１の“Ｈ”レベル期間中はスキャンデータ入力端子（ＳＩ）からのスキャンデータの反転データがそのままクロックドインバータ２１８の出力ノードに現われる。スキャンクロック信号Ｓ１の“Ｈ”から“Ｌ”への立ち下がりで、クロックドインバータ２１８の出力ノード上のデータはインバータ２１５、クロックドインバータ２１６、および転送ゲート２１７から構成される双安定回路によってラッチされる。このラッチされたデータはスキャンクロック信号Ｓ１が“Ｌ”レベルの期間中保持される。なお、クロックドインバータ２１８の出力ノード上のデータは、ノードＢ上のデータと同一となる。
【００５３】
出力セレクタ３３は、クロック信号ＣＬＫに応じて、第１のラッチ回路３１および第２のラッチ回路３２の一方を選択し、選択したラッチ回路の出力データをデータ出力端子（Ｑ）に出力する。すなわち、セレクタ３３は、クロック信号入力端子（ＣＫ）に入力されるクロック信号ＣＬＫの“Ｈ”レベル期間中は、第１のラッチ回路３１を選択してその第１のラッチ回路３１からの出力データをデータ出力端子（Ｑ）に出力し、クロック信号ＣＬＫの“Ｌ”レベル期間中は、第２のラッチ回路３２を選択してその第２のラッチ回路３２からの出力データをデータ出力端子（Ｑ）に出力する。この出力セレクタ３３は、図示のように、２つのクロックドインバータ２１９，２２０から構成されている。クロックドインバータ２１９は、クロック信号ＣＬＫの“Ｈ”レベル期間中にノードＡの反転データを出力する。クロックドインバータ２２０は、クロック信号ＣＬＫの“Ｌ”レベル期間中にノードＢの反転データを出力する。
【００５４】
第３のラッチ回路３４はスキャン用のスレーブラッチ回路であり、クロックドインバータ２２１、インバータ２２２、およびクロックドインバータ２２３から構成されている。インバータ２２２とクロックドインバータ２２３は双安定回路を構成する。クロックドインバータ２２１は、スキャンモード時に入力される第２のスキャンクロック信号Ｓ２の“Ｈ”レベル期間にインバータとして動作するＣＭＯＳクロックドインバータである。クロックドインバータ２２１は、第２のスキャンクロック信号Ｓ２の“Ｈ”レベル期間においては、第２のラッチ回路３２からの出力データの反転データを出力する。一方、第２のスキャンクロック信号Ｓ２の“Ｌ”レベル期間においては、クロックドインバータ２２１の出力はハイインピーダンスとなる。クロックドインバータ２２３は、第２のスキャンクロック信号Ｓ２の“Ｌ”レベル期間にインバータとして動作するＣＭＯＳクロックドインバータである。クロックドインバータ２２３は、第２のスキャンクロック信号Ｓ２の“Ｌ”レベル期間においては、インバータ２２２からの出力データの反転データを出力する。一方、第２のスキャンクロック信号Ｓ２の“Ｈ”レベル期間においては、クロックドインバータ２２３の出力はハイインピーダンスとなる。
【００５５】
第２のスキャンクロック信号Ｓ２の“Ｈ”レベル期間においては、第２のラッチ回路３２からの出力データの反転データがそのままスキャンデータ出力端子（ＳＯ）上に現われる。第２のスキャンクロック信号Ｓ２の“Ｈ”から“Ｌ”への立ち下がりで、クロックドインバータ２２１の出力データはインバータ２２２とクロックドインバータ２２３から構成される双安定回路によってラッチされる。このラッチされたデータは第２のスキャンクロック信号Ｓ２が“Ｌ”レベルの期間中保持される。
【００５６】
図９のタイミングチャートはノーマルモードおよびスキャンモードそれぞれに対応する動作を示している。
【００５７】
スキャンモード時には、第１および第２のスキャンクロック信号Ｓ１，Ｓ２が入力され、クロック信号ＣＬＫは“Ｌ”レベルに固定される。図９においては、第１および第２のスキャンクロック信号Ｓ１，Ｓ２を互いに逆相の信号としているが、データホールドタイムを確保するために、スキャンクロック信号Ｓ２の立下り後にスキャンクロック信号Ｓ１が立ち上がるようにしてもよい。スキャンデータ入力端子（ＳＩ）には、スキャンデータ列ＳＤ１，ＳＤ２，ＳＤ３，ＳＤ４，…が順次入力される。スキャンデータＳＤ１は、スキャンクロック信号Ｓ１の立下りで第２のラッチ回路３２によってラッチされる。この第２のラッチ回路３２によってラッチされたスキャンデータＳＤ１は、スキャンクロック信号Ｓ２の“Ｈ”レベル期間中は第３のラッチ回路３４のクロックドインバータ２２１を介してスキャンデータ出力端子（ＳＯ）上に出力され、そしてスキャンクロック信号Ｓ２の立下りで第３のラッチ回路３４によってラッチされる。このように、第２のラッチ回路３２および第３のラッチ回路３４はスキャン用のマスターラッチ回路およびスキャン用のスレーブラッチ回路として機能する。第２のラッチ回路３２および第３のラッチ回路３４から構成されるスキャン回路は、スキャンクロック信号Ｓ１の立下りでスキャンデータをラッチし、そのラッチしたデータをスキャンデータ出力端子（ＳＯ）に出力する。
【００５８】
ノーマルモード時においては、スキャンクロック信号Ｓ１，Ｓ２の代わりに、クロック信号ＣＬＫが入力される。入力データＤ４は、クロック信号ＣＬＫの立ち上がりで第１のラッチ回路３１によってラッチされる。そして、そのラッチされたデータＤ４はクロック信号ＣＬＫの“Ｈ”レベル期間中、出力セレクタ３３を介してデータ出力端子（Ｑ）にＱ出力として出力される。続く入力データＤ５は、クロック信号ＣＬＫの立下りで第２のラッチ回路３２によってラッチされる。そして、そのラッチされたデータＤ５はクロック信号ＣＬＫの“Ｌ”レベル期間中、出力セレクタ３３を介してデータ出力端子（Ｑ）にＱ出力として出力される。このようにして、ノーマルモード時においては、フリップフロップ１２は、ＤＤＲ型フリップフロップとして機能する。
【００５９】
以上のように、第２実施形態においては、ＤＤＲフリップフロップを構成する２つのラッチ回路３１，３２のうち、ラッチ回路３２をスキャン用マスターラッチとして兼用する構成であるので、少ない素子数で、スキャン動作とＤＤＲフリップフロップ動作の双方を実現することが可能となる。なお、ラッチ回路３１をスキャン用マスターラッチとして兼用するようにしてもよい。
【００６０】
また第２実施形態においては、図２に示した第１実施形態の回路構成に比し、データ入力端子（Ｄ）とデータ出力端子（Ｑ）との間に入力セレクタ２４が介在しない分だけ信号遅延を減らすことが可能となり、より動作の高速化を図ることができる。
【００６１】
また、第１実施形態と同様に、出力セレクタ３３を３つのＮＡＮＤゲートによって構成したり、クロックドインバータ２１１，２１８，２２１などを転送ゲートによって構成することもできる。
【００６２】
また、第１実施形態のフリップフロップ１１と第２実施形態のフリップフロップ１２とを同一のＬＳＩ上に混載することも可能である。この場合、より高速動作が必要な部分には第２実施形態のフリップフロップ１２を使用し、高速動作よりも回路面積の低減を優先すべき部分には第１実施形態のフリップフロップ１１を使用することができる。フリップフロップ１１，１２のいずれにおいても、少なくともスキャン用のマスターラッチ回路については、ＤＤＲフリップフロップ用の２つのラッチ回路のうちの一方を用いて実現しているので、素子数の低減を図ることができる。
【００６３】
また、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００６４】
【図１】本発明の第１実施形態に係るフリップフロップを搭載した半導体集積回路の構成を示すブロック図。
【図２】同第１実施形態のフリップフロップの構成を示す図。
【図３】同第１実施形態のフリップフロップのノーマルモード時の動作を示すタイミングチャート。
【図４】同第１実施形態のフリップフロップのノーマルモード時およびスキャンモード時それぞれに対応する動作を示すタイミングチャート。
【図５】同第１実施形態のフリップフロップの具体的な回路構成の例を示す第１の図。
【図６】同第１実施形態のフリップフロップの具体的な回路構成の例を示す第２の図。
【図７】本発明の第２実施形態に係るフリップフロップを搭載した半導体集積回路の構成を示すブロック図。
【図８】同第２実施形態のフリップフロップの構成を示す図。
【図９】同第２実施形態のフリップフロップのノーマルモード時およびスキャンモード時それぞれに対応する動作を示すタイミングチャート。
【符号の説明】
【００６５】
１１，１２…フリップフロップ、２１…第１のラッチ回路、２２…第２のラッチ回路、２３…出力セレクタ、２４…第１の入力セレクタ、２５…第２の入力セレクタ、３１…第１のラッチ回路、３２…第２のラッチ回路、３３…出力セレクタ、３４…第３のラッチ回路、１１１，１１３，１１４，１１６，１１７，１１８…クロックドインバータ、１１２，１１５…インバータ、１２１，１２２，１２３，１２４…転送ゲート、１４１，１４２，１４３…ＮＡＮＤゲート、２１１，２１３，２１４，２１６，２１８，２２１，２２３…クロックドインバータ、２１２，２１５，２２２…インバータ、２１７…転送ゲート。
【図１】
2005303464.tif 000003
【図２】
2005303464.tif 000004
【図３】
2005303464.tif 000005
【図４】
2005303464.tif 000006
【図５】
2005303464.tif 000007
【図６】
2005303464.tif 000008
【図７】
2005303464.tif 000009
【図８】
2005303464.tif 000010
【図９】
2005303464.tif 000011