(57)【特許請求の範囲】
【請求項１】
所定の機能をなす少なくとも１以上の組合せ回路に入力する信号をラッチする前段ラッチ部及び、前記組合せ回路からの出力信号をラッチする後段ラッチ部からなるディジタル論理回路における各処理で発生する遅延量に適応したマルチサイクル数を自律判定するマルチサイクル数自律判定装置であって、
少なくとも入力要素の組み合わせパタンに対応した試験パタン信号を生成して前記組合せ回路に出力する試験パタン信号生成部と、
サイクル数を示すマルチサイクル数設定指令を出力し、その際に動作条件が変化した際には予め設定されたマルチサイクル数初期値を低速試験時のサイクル数とするマルチサイクル数設定指令を出力して、前記試験パタン信号生成部に低速試験用の試験パタン信号を生成させ、該低速試験が終了すると前記マルチサイクル数初期値より小さい値を高速試験時のサイクル数とするマルチサイクル数トライ値としたマルチサイクル数設定指令を出力して、前記試験パタン信号生成部に高速試験用の試験パタン信号を生成させるシーケンサと、
前記試験パタン信号に対して前記組合せ回路が行った処理結果を記憶し、その際に前記低速試験用の前記試験パタン信号に対する処理結果と前記高速試験用の前記試験パタン信号に対する処理結果との一致を判断する比較ユニットと、を備え、
前記シーケンサは、前記比較ユニットからの比較結果が前記低速試験用の前記試験パタン信号に対する処理結果と前記高速試験用の前記試験パタン信号に対する処理結果とが一致しなくなるまで、前記マルチサイクル数から１を減算した値を新たなマルチサイクル数トライ値としてマルチサイクル数設定指令を出力して、前記低速試験用の前記試験パタン信号に対する処理結果と前記高速試験用の前記試験パタン信号に対する処理結果とが不一致になったときのマルチサイクル数に１を加算した値を最適マルチサイクルとして判定することを特徴とするマルチサイクル数自律判定装置。
【請求項２】
請求項１に記載のマルチサイクル数自律判定装置であって、
前記マルチサイクル数設定指令を受信して、当該マルチサイクル数設定指令で指定されたサイクル数の周期で前記組合せ回路を動作させるＮ進カウンタを備えることを特徴とするマルチサイクル数自律判定装置。
【請求項３】
請求項１又は２に記載のマルチサイクル数自律判定装置であって、
前記シーケンサが出力した前記マルチサイクル数初期値を内容とするマルチサイクル数設定指令を受信した際には、前記前段ラッチ部を介して前記組合せ回路に前記試験パタン信号が入力するように回路を切り替えるセレクタユニットを備えることを特徴とするマルチサイクル数自律判定装置。
【請求項４】
請求項１乃至３のいずれか１項に記載のマルチサイクル数自律判定装置であって、
前記比較ユニットは、前記低速試験時における前記組合せ回路による処理結果をメモリする第１メモリと、前記高速試験時における前記組合せ回路による処理結果をメモリする第２メモリとを含むメモリ部と、
前記第１メモリと前記第２メモリとに記憶されている、全ての組み合わせパタン毎の前記試験パタン信号に対する前記処理結果が一致するか否かを判断する値比較部とを備えることを特徴とするマルチサイクル数自律判定装置。
【請求項５】
所定の機能をなす組合せ回路に入力する信号をラッチする前段ラッチ部及び、前記組合せ回路からの出力信号をラッチする後段ラッチ部からなるディジタル論理回路における各処理で発生する遅延量に適応したマルチサイクル数を自律判定するマルチサイクル数自律判定方法であって、
入力要素の組み合わせパタン毎に対応した試験パタン信号を生成して前記組合せ回路に出力する試験パタン信号生成手順と、
サイクル数を示すマルチサイクル数設定指令を出力し、その際に動作条件が変化した際には予め設定されたマルチサイクル数初期値を低速試験時のサイクル数とするマルチサイクル数設定指令を出力して、低速試験用の試験パタン信号を生成させ、該低速試験が終了すると前記マルチサイクル数初期値より小さい値を高速試験時のサイクル数とするマルチサイクル数トライ値としたマルチサイクル数設定指令を出力して、該高速試験用の試験パタン信号を生成させるシーケンス手順と、
前記試験パタン信号に対して前記組合せ回路が行った処理結果を記憶し、その際に前記低速試験用の前記試験パタン信号に対する処理結果と前記高速試験用の前記試験パタン信号に対する処理結果との一致を判断する比較手順と、を備え、
前記シーケンス手順は、前記比較結果が前記低速試験用の前記試験パタン信号に対する処理結果と前記高速試験用の前記試験パタン信号に対する処理結果とが一致しなくなるまで、前記マルチサイクル数から１を減算した値を新たな前記マルチサイクル数トライ値としたマルチサイクル数設定指令を出力して、前記低速試験用の前記試験パタン信号に対する処理結果と前記高速試験用の前記試験パタン信号に対する処理結果とが不一致になったときのマルチサイクル数に１を加算した値を最適マルチサイクルとして判定する手順を含むことを特徴とするマルチサイクル数自律判定方法。
【請求項６】
請求項５に記載のマルチサイクル数自律判定方法であって、
前記マルチサイクル数設定指令を受信して、当該マルチサイクル数設定指令で指定されたサイクル数の周期で前記組合せ回路を動作させる手順を含むことを特徴とするマルチサイクル数自律判定方法。
【請求項７】
請求項５又は６に記載のマルチサイクル数自律判定方法であって、
前記マルチサイクル数初期値を内容とするマルチサイクル数設定指令を受信した際には前記前段ラッチ部を介して前記組合せ回路に前記試験パタン信号が入力するように回路を切り替える手順を含むことを特徴とするマルチサイクル数自律判定方法。
【請求項８】
請求項５乃至７のいずれか１項に記載のマルチサイクル数自律判定方法であって、
前記低速試験時における前記組合せ回路による処理結果を第１メモリに記憶させ、前記高速試験時における前記組合せ回路による処理結果を第２メモリに記憶させるメモリ手順と、
前記第１メモリと前記第２メモリとに記憶されている、全ての組み合わせパタン毎の前記試験パタン信号に対する前記処理結果が一致するか否かを判断する値比較手順とを含むことを特徴とするマルチサイクル数自律判定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチサイクル数自律判定装置及びマルチサイクル数自律判定方法に関する。
【背景技術】
【０００２】
ディジタル論理回路では、マルチサイクル回路が多用される場合がある。このようなマルチサイクル回路に関する提案として、特開２０１２−２４８０３８号公報、特開２００２−０４３９３４号公報、特開２００４−２２８４１７号公報等が知られている。
【０００３】
特開２０１２−２４８０３８号公報においては、論理検証部、始点終点データ比較部、データ幅最小値抽出部、マルチサイクル数決定部を含むマルチサイクルパス検出装置が開示されている。
【０００４】
即ち、このマルチサイクルパス検出装置においては、論理検証部によりＲＴＬ（Ｒｅｇｉｓｔｅｒ  ｔｒａｎｓｆｅｒ  ｌｅｖｅｌ）データとネットリストとのいずれかと、ＲＴＬシミュレーションで使用されたユーザ検証パタンとを基に論理検証を実行する。始点終点データ比較部は、この論理検証の結果に基づき、半導体集積回路のパスを特定パスとして特定し、かつ、特定パスの始点のデータ値と終点のデータ値との比較を行う。データ幅最小値抽出部は、特定パスを伝搬する０と１とのいずれかのデータでありクロック信号のサイクル数をデータ幅とするデータを対象として、始点終点データ比較部によるデータ比較結果に基づき、最小のサイクル数を示すデータ幅最小値を抽出する。そして、マルチサイクル数決定部は、データ幅最小値に応じて、特定パスにおけるマルチサイクル数を決定する。これにより、ユーザ仕様依存のマルチサイクルパスを短時間で自動検出できるようにしている。
【０００５】
また、特開２００２−０４３９３４号公報においては、比較的小さな回路規模で広いロックレンジを有するクロック生成回路が開示されている。
【０００６】
このクロック生成回路は、可変遅延回路を備え、外部クロックからデータ出力までの遅延量の最適なサイクル数を測定する。そして、そのサイクル数でロックを行えるようにＤＬＬ（Ｄｙｎａｍｉｃ  Ｌｉｎｋ  Ｌｉｂｒａｒｙ）回路などを構成している。
【０００７】
さらに、特開２００４−２２８４１７号公報においては、フェーズ・ロックド・ループ回路（ＰＬＬ）を設け、このＰＬＬ内の動作制御信号により分周回路の分周率を制御して、クロック信号の周波数を決定する技術が開示されている。
【０００８】
このとき、ディジタル論理回路設計において、主に信号処理やアルゴリズム処理等の機能において、実現する回路の動作仕様をＣ言語等の逐次処理で記述される場合が多く、そのための動作合成ツールが開発されている。この動作合成は、Ｃ言語等の逐次処理コードを元にＲＴＬ（Ｒｅｇｉｓｔｅｒ  ｔｒａｎｓｆｅｒ  ｌｅｖｅｌ）コードと呼ばれる論理合成可能なハードウェア記述を自動生成する開発手法であり、ディジタル論理回路の元仕様がＣ言語等で記述された設計対象をハードウェア化する際において一般的に用いられる開発手法である。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１２−２４８０３８号公報
【特許文献２】特開２００２−０４３９３４号公報
【特許文献３】特開２００４−２２８４１７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上述した各特許文献にかかる構成では、以下のような問題があった。即ち、ディジタル論理回路を構成する各機能回路では、信号処理に伴う遅延が発生する。かかる遅延に対してディジタル論理回路全体が、適切な信号処理を行わせるためには（正常動作させるためには）、マルチサイクル数を適切に設定する必要がある。しかし、様々な動作条件により遅延量が変動してしまう。このことは、動作条件により適切なマルチサイクル数も変動してしまうことを意味している。従って、ディジタル論理回路の設計においては、動作条件を想定して適切なマルチサイクル数で動作するように設計しなければならず、かかる設計作業には多大の労力が必要となる問題があった。
【００１１】
また、動作合成ツールを用いる場合、Ｃ言語記述が逐次処理記述であるため、処理の深さを見積ることが困難である。加えて、ＲＴＬコードを自動生成する等によってＣ言語記述を見ただけで、回路の遅延量を見積ることは非常に困難である。さらに、信号処理やアルゴリズム処理では、算術演算を用いた処理が頻出するため、回路の遅延量自体が、増大する傾向がある。これら事情により、ディジタル論理回路の設計においては、マルチサイクルパス設計が必要となるケースが、増加している。そこで、これらのディジタル論理回路を効率的に設計し、かつ、適切なマルチサイクル数で動作させるための開発手法が、求められていた。
【００１２】
かかる問題をディジタル論理回路の一つであるシングルサイクル回路とマルチサイクル回路とを例示して説明する。
【００１３】
先ず、シングルサイクル回路について説明する。図６は、シングルサイクル回路の構成を示す図で、（ａ）はブロック図、（ｂ）はタイミングチャートである。
【００１４】
このシングルサイクル回路は、端子ユニット１００、組合せ回路ユニット１１０、ラッチユニット１２０を備える。
【００１５】
端子ユニット１００は、入力端子１０１ａ，１０１ｂ、出力端子１０３ａ，１０３ｂ、クロック端子１０２を備える。
【００１６】
組合せ回路ユニット１１０は、所定の処理Ａを行う前段組合せ回路１１１、所定の処理Ｂを行う後段組合せ回路１１２を備える。なお、所定の処理Ａとは前段組合せ回路１１が本来行う処理であり、回路機能によりかかる処理内容が異なるので、単に処理Ａと記載している。所定の処理Ｂについても同様である。
【００１７】
ラッチユニット１２０は、前段組合せ回路１１１の前段に設けられた前段ラッチ部１２１、前段組合せ回路１１１と後段組合せ回路１１２との間に設けられた中段ラッチ部１２２、後段組合せ回路１１２の後段に設けられた後段ラッチ部１２３を備える。
【００１８】
また、前段ラッチ部１２１は、入力端子１０１ａからの信号が入力するフィリップフロップ１２１ａ、入力端子１０１ｂからの信号が入力するフィリップフロップ１２１ｂを備える。同様に、中段ラッチ部１２２は、入力端子１０１ａからの信号に対する前段組合せ回路１１１により処理Ａが行われた結果信号が入力するフィリップフロップ１２２ａ、入力端子１０１ｂからの信号に対する前段組合せ回路１１１により処理Ａが行われた結果信号が入力するフィリップフロップ１２２ｂを備える。後段ラッチ部１２３は、入力端子１０１ａからの信号に対する後段組合せ回路１１２により処理Ａが行われた結果信号が入力するフィリップフロップ１２３ａ、入力端子１０１ｂからの信号に対する後段組合せ回路１１２により処理Ａが行われた結果信号が入力するフィリップフロップ１２３ｂを備える。
【００１９】
このような構成で、入力端子１０１ａ，１０１ｂからの入力信号（時系列的にＤｉｎ＿０、Ｄｉｎ＿１、Ｄｉｎ＿２、Ｄｉｎ＿３、…と記載）は、クロック端子１０２からのクロック信号の立上エッジで、前段ラッチ部１２１によりラッチされる。
【００２０】
組合せ回路１１１は、前段ラッチ部１２１からの信号に対して所定の処理Ａを行う。
【００２１】
処理Ａが行われた結果信号（時系列的にＤａ＿０、Ｄａ＿１、Ｄａ＿２、Ｄａ＿３、…と記載）は、次のクロック信号の立上エッジで、中段ラッチ部１２２によりラッチされる。
【００２２】
組合せ回路１１２は、中段ラッチ部１２２からの結果信号に対して所定の処理Ｂを行う。
【００２３】
組合せ回路１１２で処理Ｂが行われた結果信号（時系列的にＤｂ＿０、Ｄｂ＿１、Ｄｂ＿２、Ｄｂ＿３、…と記載）は、次のクロック信号の立上エッジで、後段ラッチ部１２３によりラッチされる。
【００２４】
そして、後段ラッチ部１２３からの信号は、出力信号（時系列的にＤｏｕｔ＿０、Ｄｏｕｔ＿１、Ｄｏｕｔ＿２、Ｄｏｕｔ＿３、…と記載）として出力端子１０３ａ，１０３ｂから出力される。
【００２５】
このとき、シングルサイクル回路が正常に動作するためには、組合せ回路１１１及び組合せ回路１１２等で生じる遅延量Ｄｔがクロック信号の１周期以下であることが要求される。厳密には、中段ラッチ部１２２等やクロック信号のクロックスキューやジッターも考慮する必要があるが、説明を簡単にするために省略する。
【００２６】
次に、マルチサイクル回路について説明する。図７は、マルチサイクル回路の構成を示す図で、（ａ）はブロック図、（ｂ）はタイミングチャートである。マルチサイクル回路の構成は、シングルサイクル回路とほぼ同じであるが、Ｎ進カウンタ１４１が追加されている。そして、ラッチユニット１２０における各フィリップフロップは、Ｎ進カウンタ１４１からの信号（イネーブル信号）が入力するイネーブル端子を備えている。
【００２７】
ここで、Ｎ進カウンタ１４１は、例えば４クロックに１回アサートされるカウンタ信号をイネーブル信号として出力するものとする。即ち、Ｎ＝４の場合を考える。
【００２８】
入力端子１０１ａ、１０１ｂからの入力信号（時系列的にＤｉｎ＿０、Ｄｉｎ＿１、Ｄｉｎ＿２、Ｄｉｎ＿３、…と記載）は、クロック端子１０２からのイネーブル信号の立上エッジで、前段ラッチ部１２１でラッチされる。
【００２９】
組合せ回路１１１は、前段ラッチ部１２１からの信号に対して所定の処理Ａを行う。
【００３０】
組合せ回路１１１で処理Ａが行われて出力された結果信号（時系列的にＤａ＿０、Ｄａ＿１、Ｄａ＿２、Ｄａ＿３、…と記載）は、次のクロック信号の立上エッジで、中段ラッチ部１２２でラッチされる。
【００３１】
組合せ回路１１２は、中段ラッチ部２２１からの信号に対して所定の処理Ｂを行う。
【００３２】
組合せ回路１１２で処理Ｂが行われて出力された信号（時系列的にＤｂ＿０、Ｄｂ＿１、Ｄｂ＿２、Ｄｂ＿３、…と記載）は、次のイネーブル信号の立上エッジで、後段ラッチ部１２３でラッチされる。
【００３３】
そして、後段ラッチ部１２３からの信号は、出力信号（時系列的にＤｏｕｔ＿０、Ｄｏｕｔ＿１、Ｄｏｕｔ＿２、Ｄｏｕｔ＿３、…と記載）として出力端子１０３ａ、１０３ｂから出力される。
【００３４】
このときマルチサイクル回路が正常に動作するためには、組合せ回路１１１及び組合せ回路１１２等による遅延量がＮ進カウンタの設定周期以下でなければならない（イネーブル信号の１周期以下）。即ち、イネーブル信号の１周期がクロック信号の４周期（Ｎ＝４）の場合は、遅延量Ｄｔはクロック信号の４周期（４Ｔ）以下でなければならない。この場合も、厳密には、ラッチユニット１２０及びクロック信号のクロックスキューやジッターも考慮する必要があるが、説明を簡単にするために省略する。
【００３５】
動作合成ツールを用いたディジタル論理回路の開発では、マルチサイクル回路の適用頻度が増加する傾向にある。これはデバイス上にインプリメントされた時の回路遅延を予測する際に、記述の抽象度が実際の回路と比較的近いＲＴＬコードよりも、より抽象的に記述されたＣ言語等のコードの方が回路遅延の見積が難しくなるためである。
【００３６】
Ｃ言語等で記述される機能がある程度複雑なものになると、デバイス上にインプリメントされた際の回路遅延の絶対値も大きくなり、遅延量が１クロック周期で収まらない回路となることが多々発生することになる。このような回路は、マルチサイクル回路として図７（ａ）で説明したような回路を用いてディジタル論理回路に組み込まれることになる。
【００３７】
回路の遅延量に対して適切なマルチサイクル数を持ったディジタル論理回路を実現する上で、様々な動作条件により回路の遅延量が変動すると適切なマルチサイクル数も変動する。
【００３８】
このような変更要因として、（１）実装デバイスの遅延性能、（２）動作モード、（３）省電力モード、（４）要求仕様変更に伴う設計変更が例示できる。
【００３９】
（１）実装デバイスの遅延性能
設計したディジタル論理回路を動作させるデバイス自身の遅延性能によって、ディジタル論理回路の遅延量が変動することがある。そのため適用するディジタル論理回路によって適切なマルチサイクル数も変化する。また、外部メモリデバイスを使用するディジタル論理回路の場合は、外部メモリのアクセスタイムも遅延量に影響を与える。
【００４０】
（２）動作モード
設計するディジタル論理回路が複数の動作モードを持つ場合に、動作モード毎に回路の遅延量が異なり適切なマルチサイクル数が変化することがある。
【００４１】
（３）省電力モード
省電力を目的としてディジタル論理回路の電源電圧を定格の範囲内で低下させて動作させることによって回路の遅延量が変化することにより適切なマルチサイクル数も変化することがある。
【００４２】
（４）要求仕様変更に伴う設計変更
一旦開発したディジタル論理回路に対して機能の追加や変更が必要になった場合、設計変更後の回路の遅延量が変化することによって適切なマルチサイクル数が変化することがある。
【００４３】
従って、ディジタル論理回路の設計においては、上記に列挙した各動作条件を想定して適切なマルチサイクル数で動作させる設計を行うことは非常に労力のかかる作業であった。
【００４４】
そこで、本発明の主目的は種々の動作条件に対しても適切なマルチサイクル数で動作できるように、マルチサイクル数が自律判定できるマルチサイクル数自律判定装置及びマルチサイクル数自律判定方法を提供することである。
【課題を解決するための手段】
【００４５】
上記課題を解決するため、所定の機能をなす少なくとも１以上の組合せ回路に入力する信号をラッチする前段ラッチ部及び、組合せ回路からの出力信号をラッチする後段ラッチ部をからなるディジタル論理回路における各処理で発生する遅延量に適応したマルチサイクル数を自律判定するマルチサイクル数自律判定装置にかかる発明は、少なくとも入力要素の組み合わせパタンに対応した試験パタン信号を生成して組合せ回路に出力する試験パタン信号生成部と、サイクル数を示すマルチサイクル数設定指令を出力し、その際に動作条件が変化した際には予め設定されたマルチサイクル数初期値を低速試験時のサイクル数とするマルチサイクル数設定指令を出力して、試験パタン信号生成部に低速試験用の試験パタン信号を生成させ、該低速試験が終了するとマルチサイクル数初期値より小さい値を高速試験時のサイクル数とするマルチサイクル数トライ値としたマルチサイクル数設定指令を出力して、試験パタン信号生成部に高速試験用の試験パタン信号を生成させるシーケンサと、試験パタン信号に対して組合せ回路が行った処理結果を記憶し、その際に低速試験用の試験パタン信号に対する処理結果と高速試験用の試験パタン信号に対する処理結果との一致を判断する比較ユニットと、を備え、シーケンサは、比較ユニットからの比較結果が低速試験用の試験パタン信号に対する処理結果と高速試験用の試験パタン信号に対する処理結果とが一致しなくなるまで、マルチサイクル数から１を減算した値を新たなマルチサイクル数トライ値としてマルチサイクル数設定指令を出力して、低速試験用の試験パタン信号に対する処理結果と高速試験用の試験パタン信号に対する処理結果とが不一致になったときのマルチサイクル数に１を加算した値を最適マルチサイクルとして判定することを特徴とするマルチサイクル数自律判定装置。
【００４６】
また、所定の機能をなす組合せ回路に入力する信号をラッチする前段ラッチ部及び、組合せ回路からの出力信号をラッチする後段ラッチ部をからなるディジタル論理回路における各処理で発生する遅延量に適応したマルチサイクル数を自律判定するマルチサイクル数自律判定方法にかかる発明は、入力要素の組み合わせパタン毎に対応した試験パタン信号を生成して組合せ回路に出力する試験パタン信号生成手順と、サイクル数を示すマルチサイクル数設定指令を出力し、その際に動作条件が変化した際には予め設定されたマルチサイクル数初期値を低速試験時のサイクル数とするマルチサイクル数設定指令を出力して、低速試験用の試験パタン信号を生成させ、該低速試験が終了するとマルチサイクル数初期値より小さい値を高速試験時のサイクル数とするマルチサイクル数トライ値としたマルチサイクル数設定指令を出力して、該高速試験用の試験パタン信号を生成させるシーケンス手順と、試験パタン信号に対して組合せ回路が行った処理結果を記憶し、その際に低速試験用の試験パタン信号に対する処理結果と高速試験用の試験パタン信号に対する処理結果との一致を判断する比較手順と、を備え、シーケンス手順は、比較結果が低速試験用の試験パタン信号に対する処理結果と高速試験用の試験パタン信号に対する処理結果とが一致しなくなるまで、マルチサイクル数から１を減算した値を新たなマルチサイクル数トライ値としたマルチサイクル数設定指令を出力して、低速試験用の試験パタン信号に対する処理結果と高速試験用の試験パタン信号に対する処理結果とが不一致になったときのマルチサイクル数に１を加算した値を最適マルチサイクルとして判定する手順を含むことを特徴とするマルチサイクル数自律判定方法。
【発明の効果】
【００４７】
本発明によれば種々の動作条件が変化した際に、自立的に適切なマルチサイクル数を判定できるようになる。
【図面の簡単な説明】
【００４８】
【図１】ディジタル論理回路におけるマルチサイクル数自律判定処理の概念を説明した図である。
【図２】マルチサイクル数自律判定装置が組み込まれたディジタル論理回路のブロック図である。
【図３】ディジタル論理回路における動作モードの遷移を示した図である。
【図４】サイクル数判定処理モードの動作を示すフローチャートである。
【図５】マルチサイクル数と回路遅延量の関係を説明するタイミングチャートで、（ａ）はマルチサイクル数＝５、（ｂ）はマルチサイクル数＝４、（ｃ）はマルチサイクル数＝３の場合を示している。
【図６】関連技術の説明に適用されるシングルサイクル回路の動作を示す図で、（ａ）はブロック図、（ｂ）はタイミングチャートである。
【図７】関連技術の説明に適用されるマルチサイクル回路の動作を示す図で、（ａ）はブロック図、（ｂ）はタイミングチャートである。
【発明を実施するための形態】
【００４９】
発明を実施するための形態の説明に先立ち、本発明の概要及び原理を説明する。マルチサイクル数自律判定装置は、ディジタル論理回路に組み込まれて、ディジタル論理回路が本来目的とする処理の開始前に最適なマルチサイクル数を調べるためのマルチサイクル数自律判定処理を行う。これにより、様々な動作条件下において、常に最適なマルチサイクル数でディジタル論理回路を動作させ、処理スループット向上や低消費電力化を図った回路を容易に開発することが可能になる。
【００５０】
図１は、ディジタル論理回路におけるマルチサイクル数自律判定処理（以下、サイクル数判定処理と適宜記載する）の概念を説明した図である。ディジタル論理回路は、当該ディジタル論理回路における本来目的の処理（正規処理）と、サイクル数判定処理とを選択的に行う。そして、サイクル数判定処理は正規処理の開始前に低速試験と高速試験とを行い、この結果を比較することにより最適サイクル数を決定する。
（低速試験）
外部回路からの開始指令Ｇ１がディジタル論理回路に入力すると、サイクル数判定処理が開始する。即ち、開始指令Ｇ１がシーケンサ１１に入力すると、シーケンサ１１は予め設定されたマルチサイクル数設定値をサイクル数初期値とするマルチサイクル数設定指令Ｇ２を試験パタン信号生成部１２及び組合せ回路１３に出力する。
【００５１】
このときサイクル数初期値は、組合せ回路１３に対して想定された遅延量より十分大きなマルチサイクル数とする。即ち、サイクル時間は、組合せ回路１３の遅延量より十分大きい値になるように、サイクル数初期値が設定される。
【００５２】
次に、シーケンサ１１は、試験パタン信号生成部１２に対して試験パタン信号生成指令Ｇ３を出力する。これにより試験パタン信号生成部１２は、試験パタン信号を生成して組合せ回路１３に出力する。このとき生成される試験パタン信号は、ディジタル論理回路を構成する全ての入力要素を組み合わせた際の、組み合わせ毎の試験パタン信号である。
【００５３】
組合せ回路１３は、試験パタン信号に対する処理結果を、低速試験時の処理結果Ｇ４として第１メモリ１４に格納する。
【００５４】
全ての組合せ試験パタン信号に対する処理結果が第１メモリ１４に格納されると、シーケンサ１１は、現在のマルチサイクル数より１だけ小さい値のマルチサイクル数に変更し（変更されたマルチサイクル数をマルチサイクル数トライ値）これを新たなマルチサイクル数設定指令Ｇ２として出力する。
（高速試験処理）
そして、シーケンサ１１は、新たなマルチサイクル数設定指令Ｇ２を試験パタン信号生成部１２及び組合せ回路１３に出力する。これにより、試験パタン信号生成部１２は、新たに通知されたマルチサイクル数トライ値に対して試験パタン信号を作成し、組合せ回路１３に出力する。組合せ回路１３は、試験パタン信号に対する処理結果を、高速試験時の処理結果Ｇ５として第２メモリ１５に格納する。
【００５５】
全ての組合せ試験パタン信号に対する処理結果が第２メモリ１５に格納されると、値比較部１６は、第１メモリ１４に格納された低速試験時の処理結果と第２メモリ１５に格納された高速試験時の処理結果との値比較を行う。
【００５６】
この比較結果はシーケンサ１１に通知され、全ての値が一致した場合にはマルチサイクル数設定指令Ｇ２を現在値より１小さい値に再設定して、上記高速試験処理を繰り返す。
【００５７】
一方、低速試験時の処理結果と高速試験時の処理結果とが不一致である場合、マルチサイクル数の決定処理が行われる。
【００５８】
即ち、比較結果が不一致の場合（正確には、一致から不一致になった場合）、現在のマルチサイクル数設定値に１を加えた値を、現状の動作条件に対する最適なマルチサイクル数設定値と決定し、これによりサイクル数判定処理は終了する。
【００５９】
＜第１実施形態＞
次に、上述した発明の原理に基づく本発明の実施形態を説明する。図２は、本実施形態にかかるマルチサイクル数自律判定装置が組み込まれたディジタル論理回路２０のブロック図である。このディジタル論理回路２０は、マルチサイクル数自律判定装置が組み込まれたディジタル論理回路２０のブロック図である。
【００６０】
ディジタル論理回路２０は、セレクタユニット２１、ラッチユニット２２、組合せ回路２３、比較ユニット２４、シーケンサ２５、試験パタン信号生成部２６、Ｎ進カウンタ２７、入力側端子ユニット２８、出力側端子ユニット２９を備える。そして、マルチサイクル数自律判定装置は、セレクタユニット２１、比較ユニット２４、シーケンサ２５、試験パタン信号生成部２６等により構成されている。
【００６１】
セレクタユニット２１は、処理対象である入力信号と試験パタン信号とのいずれか１方を選択してラッチユニット２２に出力するセレクタ２１ａ，２１ｂを備える。
【００６２】
ラッチユニット２２は、組合せ回路２３の前段に設けられて処理対象データをラッチするイネーブル機能付きの前段ラッチ部２２Ａ（２２Ａａ，２２Ａｂ）、組合せ回路２３の後段に設けられて該組合せ回路２３の処理結果をラッチするイネーブル機能付きの後段ラッチ部２２Ｂ（２２Ｂａ，２２Ｂｂ）を備える。
【００６３】
組合せ回路２３は、ディジタル論理回路２０の処理ロジックを含み、所定の処理Ｃを行う。
【００６４】
比較ユニット２４は、第１メモリ２４Ａａ及び第２メモリ２４Ａｂを含むメモリ部２４Ａ、メモリ部２４Ａの書込み及び読出し制御を行うメモリ制御部２４Ｂ、第１メモリ２４Ａａ及び第２メモリ２４Ａｂの値を比較する値比較部２４Ｃを含む。
【００６５】
このとき、第１メモリ２４Ａａには、低速試験時における組合せ回路２３のサイクル数判定結果が格納される。また、第２メモリ２４Ａｂには、高速試験時における組合せ回路２３のサイクル数判定結果が格納される。そして、値比較部２４Ｃは、第１メモリ２４Ａａと第２メモリ２４Ａｂとに格納されているデータ値を比較する。
【００６６】
シーケンサ２５は、サイクル数判定処理におけるサイクル数設定指示Ｇ２１、データ選択信号Ｇ２２、試験パタン信号生成指令Ｇ２３を出力する。
【００６７】
試験パタン信号生成部２６は、サイクル数判定処理における試験パタン信号を生成する。
【００６８】
Ｎ進カウンタ２７は、組合せ回路２３に対してのマルチサイクル数を指示する。
【００６９】
入力側端子ユニット２８は、入力信号端子（ＩＮ１，ＩＮ２）２８ａ，２８ｂ、処理タイミング指示信号端子（ＩＥＮ）２８ｃ、クロック信号端子（ＣＬＫ）２８ｄ、判定開始信号端子（ＲＥＱ）２８ｅ、リセット信号端子（ＲＳＴ）２８ｆ、を備える。
【００７０】
出力側端子ユニット２９は、ディジタル論理回路２０の処理結果が出力される出力信号端子（ＯＵＴ１、ＯＵＴ２）２９ａ，２９ｂ、後段のディジタル論理回路２０に対する処理タイミング指示信号端子（ＯＥＮ）２９ｃ、判定終了信号端子（ＦＩＮ）２９ｄを備える。
【００７１】
次に、上記ディジタル論理回路２０の動作を説明する。
【００７２】
図３は、ディジタル論理回路２０における動作モードの遷移を示した図である。ディジタル論理回路２０は、本来の処理（正規処理）を行う正規処理モードと、サイクル数判定処理を行うサイクル数判定処理モードとの、２つのモードを切り替えながら動作する。
【００７３】
リセット信号端子２８ｆにリセット信号Ｇ１１が入力すると、ディジタル論理回路２０は初期化される。この初期化により、ディジタル論理回路２０はサイクル数判定処理モードに遷移し、サイクル数判定処理を開始する。
【００７４】
そして、判定終了信号端子２９ｄにサイクル数判定処理終了指令Ｇ１２が入力すると、ディジタル論理回路２０は正規処理モードに遷移する。
【００７５】
このとき、サイクル数判定処理モードにおけるサイクル数判定処理により決定されたサイクル数が、Ｎ進カウンタ７０に設定される。正規処理モードにおいては、この設定されたサイクル数で正規処理が行われる。
【００７６】
ディジタル論理回路２０が正規処理モードで正規処理を実行している最中に動作条件が変化すると、リセット信号端子２８ｆから再度サイクル数判定処理の開始を意味するリセット信号Ｇ１１が入力して、ディジタル論理回路２０は正規処理モードからサイクル数判定処理モードに遷移する。そして、上述したようにサイクル数が決定される。
【００７７】
次に、サイクル数判定処理モードの動作を、図４に示すフローチャートを参照して説明する。
【００７８】
ステップＳＡ１：  リセット信号Ｇ１１が入力して、ディジタル論理回路２０が初期化されると、ディジタル論理回路２０はサイクル数判定処理モードに遷移して、サイクル数判定処理を開始する。サイクル数判定処理が開始されると、シーケンサ２５は、マルチサイクル数を指定するサイクル数設定指示Ｇ２１をＮ進カウンタ２７、試験パタン信号生成部１２及びメモリ制御部２４Ｂに出力する。このときのサイクル数は、暫定値であり、ここではＭとする。但し、暫定値Ｍは、実装される組合せ回路２３における想定した遅延量に対して十分に大きな値とする。
【００７９】
ステップＳＡ２：  次に、シーケンサ２５は、試験パタン信号生成部１２からの信号を選択するためのデータ選択信号Ｇ２２を、セレクタユニット２１に対して出力する。
【００８０】
ステップＳＡ３：  その後、シーケンサ２５は、試験パタン信号生成部１２及びメモリ制御部２４Ｂに対して、試験パタン信号生成指令Ｇ２３を出力する。これにより試験パタン信号生成部１２は、試験パタン信号を生成し、セレクタユニット２１に出力する。
【００８１】
ステップＳＡ４：以上により、サイクル数判定処理（低速試験）の前準備が完了するので、サイクル数判定が開始される。
【００８２】
低速試験におけるサイクル数判定処理では、試験パタン信号生成部１２が試験パタン信号を生成し、セレクタユニット２１が信号選択を行い、前段ラッチ部２２Ａが信号のラッチを行う。そして、組合せ回路２３がラッチされた信号に対して処理Ｃを行い、その出力を後段ラッチ部２２Ｂがラッチする。後段ラッチ部２２Ｂからの信号は、比較ユニット２４のメモリ部２４Ａに記憶される。
【００８３】
即ち、試験パタン信号生成部１２に試験パタン信号生成指令Ｇ２３が受信されると、この試験パタン信号生成部１２はクロック信号端子２８ｄから入力したクロック信号Ｇ２６の周期Ｔに対してＭ倍の周期（＝Ｔ＊Ｍ）で、全ての入力要素の組合せのパタンを試験パタン信号として生成する。なお、組合せ数は、データ入力信号の二乗数ある。例えば、図２のように入力信号が２本の場合は４パタン、入力信号が１６本の場合は２５６パタンの試験パタン信号が生成される。
【００８４】
セレクタユニット２１は、データ選択信号Ｇ２２に基づき、試験パタン信号生成部２６からの信号を選択して、前段ラッチ部２２Ａに出力する。即ち、セレクタユニット２１は、サイクル数判定処理モードの最中は、常時試験パタン信号生成部１２からの信号を選択して前段ラッチ部２２Ａに出力する。なお、正規処理モードの時は、セレクタユニット２１は、入力端子２８ａ，２８ｂからの入力信号を選択して前段ラッチ部２２Ａに出力する。
【００８５】
前段ラッチ部２２Ａに含まれる各フィリップフロップ２２Ａａ、２２Ａｂは、イネーブル機能を有する。そして、Ｎ進カウンタ２７から出力されるラッチイネーブル信号Ｇ２４に同期して、セレクタユニット２１からの信号をラッチする。従って、前段ラッチ部２２Ａは、サイクル数判定処理モードにおいては試験パタン信号をラッチし、正規処理モードにおいては入力端子２８ａ，２８ｂからの入力信号をラッチする。
【００８６】
組合せ回路２３は、前段ラッチ部２２Ａからの信号に対して処理Ｃを行う。
【００８７】
後段ラッチ部２２Ｂに含まれる各フィリップフロップ２２Ｂａ、２２Ｂｂは、イネーブル機能を有する。そして、Ｎ進カウンタ２７から出力されるラッチイネーブル信号Ｇ２４に同期して、組合せ回路２３からの信号をラッチする。従って、後段ラッチ部２２Ｂは、サイクル数判定処理モードにおいては処理Ｃを行った試験パタン信号をラッチし、正規処理モードにおいては処理Ｃを行った入力信号をラッチする。
【００８８】
この時、後段ラッチ部２２Ｂは前段ラッチ部２２Ａと同じイネーブル信号Ｇ２４でラッチするので、クロック信号Ｇ２６の周期Ｔに対してＭ倍の周期（＝Ｔ＊Ｍ）の時間が、組合せ回路２３における処理Ｃに対して与えられる。
【００８９】
メモリ制御部２４Ｂは、後段ラッチ部２２Ｂがラッチしたデータを、第１メモリ２４Ａａに書き込むために、メモリ制御信号Ｇ２５をラッチイネーブル信号Ｇ２４のタイミングで出力する。これにより、試験パタン信号に対して処理Ｃが行われた結果が、第１メモリ２４Ａａに書き込まれる。なお、先にも説明したように、試験パタン信号は複数存在するので、処理Ｃが行われた各試験パタン信号の処理結果は第１メモリ２４Ａａに順に（例えば、先頭アドレスから）書き込まれる。
【００９０】
ステップＳＡ５〜ＳＡ７：  以上により、低速試験におけるサイクル数判定処理が終了し、次に高速試験におけるサイクル数判定処理が行なわれる。この設定は、シーケンサ２５がＮ進カウンタ２７、試験パタン信号生成部１２、メモリ制御部２４Ｂに、サイクル数の更新値（マルチサイクル数トライ値）を指定するサイクル数設定指示Ｇ２１を出力することにより行われる。但し、このときに指定するマルチサイクル数トライ値は、現在のサイクル数から１を減算した値とする。以下の説明では、マルチサイクル数トライ値をサイクル数Ｋとする。
【００９１】
その後、シーケンサ２５は、再度、試験パタン信号生成指令Ｇ２３を試験パタン信号生成部２６、メモリ制御部２４Ｂに出力する。これにより、メモリ制御部２４Ｂは、組合せ回路２３からのデータが第２メモリ２４Ａｂに記憶されるように制御する。そして、試験パタン信号生成部２６が試験パタン信号の生成を開始する。生成された試験パタン信号は、セレクタユニット２１、前段ラッチ部２２Ａを介して、組合せ回路２３に入力し、ここで処理Ｃが行われ、後段ラッチ部２２Ｂを介してメモリ部２４Ａに入力する。そして、組合せ回路２３からのデータは、第２メモリ２４Ａｂに記憶される。
【００９２】
ステップＳＡ８、ＳＡ９：  メモリ部２４Ｂに指定したサイクル数に対応した試験パタン信号に対する処理Ｃを行ったデータが全て記憶されると、値比較部２４Ｃは、第１メモリ２４Ａａと第２メモリ２４Ａｂとの値を読み取り、これらが一致しているか否かを判断する。この判断は、高速試験時のサイクル数不足により、例えば後段ラッチ部２２Ｂでのラッチミスを判定する処理である。なお、一致しているか否かの判断は、全試験パタン信号において一致していた場合に一致したと判断する。
【００９３】
即ち、サイクル数が十分大きければ、低速試験の結果と高速試験の結果とが一致するはずである。但し、これらが一致することは、このときのサイクル数が必要十分であることを意味しない。そこで、必要十分なサイクル数を求めるため、一致している場合にはステップＳＡ５に戻り、一致していない場合にはステップＳＡ１０に進む。
【００９４】
第１メモリ２４Ａａと第２メモリ２４Ａｂとの値が一致しているために、ステップＳＡ５に戻った場合には、再度サイクル数の指定が行われる。このとき指定されるサイクル数は、現在のサイクル数から１を減算した値である。
【００９５】
ステップＳＡ１０：  一方、第１メモリ２４Ａａと第２メモリ２４Ａｂとの値が一致していない場合
には、ステップＳＡ５で指定した現在のサイクル数（即ち、一致した状態からサイクル数を更新したため、不一致状態になったときのサイクル数）に１を加算した値を最終的なサイクル数（最適サイクル数）とする。
【００９６】
このようにして求めた最適サイクル数は、高速動作した際にもラッチミス等が発生しないための必要十分な値である。図５を参照して、このようにして求めた最適サイクル数が必要十分であることを説明する。
【００９７】
今、或る動作条件下における組合せ回路２３での処理Ｃによる遅延量Ｄｔが、クロック信号の周期Ｔの３．５サイクル分であったとする（Ｄｔ＝３．５＊Ｔ）。そして、低速試験時のサイクル数Ｍが、組合せ回路２３における想定した処理Ｃによる遅延量Ｄｔより十分大きな値として、５（初期値）が設定されたとする（Ｍ＝５＊Ｔ）。なお、図５は、マルチサイクル数Ｍと回路遅延量の関係を説明するタイミングチャートで、（ａ）はＭ＝５、（ｂ）はＭ＝４、（ｃ）はＭ＝３の場合を示している。
【００９８】
図５（ａ）に示すように、サイクル数Ｍ（＝５）の場合、後段ラッチ部２２ＢにおけるラッチタイミングＬ１に対して、１．５＊Ｔ前に組合せ回路２３の処理結果が確定している。従って、後段ラッチ部２２Ｂでは、組合せ回路２３からの処理結果を正常にラッチされる。このような場合、値比較部２４Ｃは、第１メモリ２４Ａａと第２メモリ２４Ａｂとの値を比較した結果、一致と判断する。
【００９９】
同様に、図５（ｂ）に示すように、サイクル数Ｍ（＝４）の場合、後段ラッチ部２２ＢにおけるラッチタイミングＬ２に対して、０．５＊Ｔ前に組合せ回路２３の処理結果が確定している。従って、後段ラッチ部２２Ｂでは、組合せ回路２３からの処理結果を正常にラッチされる。このような場合、値比較部２４Ｃは、第１メモリ２４Ａａと第２メモリ２４Ａｂとの値を比較した結果、一致と判断する。
【０１００】
しかし、図５（ｃ）に示すように、サイクル数Ｍ（＝３）の場合、後段ラッチ部２２ＢにおけるラッチタイミングＬ３に対して、−０．５＊Ｔ前に組合せ回路２３の処理結果が確定する。従って、後段ラッチ部２２Ｂでは、組合せ回路２３からの処理結果を正常にラッチすることができない。このような場合、値比較部２４Ｃは、第１メモリ２４Ａａと第２メモリ２４Ａｂとの値を比較した結果、一致しないと判断する。
【０１０１】
依って、サイクル数Ｍ＝３に１を加算したＭ＝４が最適サイクル数となり、この最適サイクル数が必要十分なサイクル数となる。
【０１０２】
以上説明したように最適サイクル数を自律判定することにより、以下の効果を奏する。先ず、コスト優先の遅延量の大きな低速デバイス適用時とで各々のデバイス性能に応じた最適なマルチサイクル数で動作させることができる（実装デバイスの遅延性能）。
【０１０３】
また、組合せ回路の動作モードによって遅延量が異なる場合、動作モード毎に適したマルチサイクル数で動作させることができる（ディジタル論理回路の動作モード）。
【０１０４】
また、  高い処理能力を必要としない低負荷状態での動作において、定格の範囲内でディジタル論理回路の電源電圧を低下させることで消費電力を削減させることができる（省電力モード）。
【０１０５】
なお、上記説明では、組合せ回路２３の対象とする回路は基本的には回路の組合せからなることを前提としているが、ディジタル論理回路２０と外部接続されるメモリデバイスに対してサイクル数判定処理を適用してもよい。これにより、接続するメモリデバイスのアクセスタイムに適したマルチサイクル数でディジタル論理回路２０を動作させることが可能になる。
【０１０６】
また、サイクル数判定処理によってマルチサイクル数を決定する代わりに、クロック信号を供給するＰＬＬ等のクロック発信ブロックに対する周波数設定値をサイクル数判定処理によって探索してもよい。これにより、マルチサイクル数の探索と同様に各動作条件に適した処理サイクルでディジタル論理回路を動作させることが可能である。
【符号の説明】
【０１０７】
１１    シーケンサ
１２    試験パタン信号生成部
１３    組合せ回路
１４    第１メモリ
１５    第２メモリ
１６    値比較部
２０    ディジタル論理回路
２１    セレクタユニット
２１ａ，２１ｂ    セレクタ
２２    ラッチユニット
２２Ａ    前段ラッチ部
２２Ｂ    後段ラッチ部
２２Ａａ，２２Ａｂ    フィリップフロップ
２２Ｂａ、２２Ｂｂ    フィリップフロップ
２３    組合せ回路
２４    比較ユニット
２４Ａ    メモリ部
２４Ａａ    第１メモリ
２４Ａｂ    第２メモリ
２４Ｂ    メモリ制御部
２４Ｃ    値比較部
２５    シーケンサ
２６    試験パタン信号生成部
２７    Ｎ進カウンタ
【図１】
0006404658.tif 000002
【図２】
0006404658.tif 000003
【図３】
0006404658.tif 000004
【図４】
0006404658.tif 000005
【図５】
0006404658.tif 000006
【図６】
0006404658.tif 000007
【図７】
0006404658.tif 000008