(57)【要約】      （修正有）【課題】付加回路を追加することなく、接続チップ間のバラツキに対応した、タイミングの改善を行う仕組みを提供する。【解決手段】再構成可能な回路と他の回路との間のデータの受け渡しのタイミング検証を実行するためのタイミング検証用回路データに従って再構成可能な回路を構成し、再構成可能な回路と他の回路との間のデータの受け渡しを行わせて、当該データの受け渡しに関する遅延量を検出させ、検出された遅延量と、通常動作回路データとを用いて通常動作を開始させるように制御する。【選択図】図４
2016213682.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システムであって、
回路構成を変更可能な再構成可能な回路と、
前記再構成可能な回路とデータの受け渡しを行う他の回路と、
前記再構成可能な回路に構成される回路データであって、該再構成可能な回路と前記他の回路との間のデータの受け渡しのタイミング検証を実行するためのタイミング検証用回路データと、前記データ処理システムが通常動作を行う通常動作回路データとを記憶する記憶手段と、
前記タイミング検証用回路データに従って前記再構成可能な回路を構成し、
前記再構成可能な回路と前記他の回路との間のデータの受け渡しを行わせて、当該データの受け渡しに関する遅延量を検出させ、
検出された前記遅延量と、通常動作回路データとを用いて通常動作を開始させる制御手段と
を備えることを特徴とするデータ処理システム。
【請求項２】
前記記憶手段は、前記通常動作回路データとして、前記再構成可能な回路と前記他の回路との間のデータの受け渡しに関する遅延量に対応した複数の前記通常動作回路データを記憶し、
前記制御手段は、検出された前記遅延量に対応する前記通常動作回路データを前記再構成可能な回路に構成し、通常動作を開始させることを特徴とする請求項１に記載のデータ処理システム。
【請求項３】
前記記憶手段は、前記通常動作回路データとして、１つのデータ処理用の回路データと、前記再構成可能な回路と前記他の回路との間のデータの受け渡しに関する遅延量に対応した複数の外部Ｉ／Ｆ回路用の回路データとを記憶し、
前記制御手段は、前記データ処理用の回路データと、検出された前記遅延量に対応する前記外部Ｉ／Ｆ回路用の回路データとを前記再構成可能な回路に構成し、通常動作を開始させることを特徴とする請求項１に記載のデータ処理システム。
【請求項４】
前記記憶手段は、さらに、前記外部Ｉ／Ｆ回路用の回路データとして、前記再構成可能な回路から前記他の回路へのデータ出力に対応する回路データと、前記他の回路から前記再構成可能な回路へのデータ入力に対応する回路データとを記憶することを特徴とする請求項３に記載のデータ処理システム。
【請求項５】
前記記憶手段は、前記通常動作回路データとして、１つの通常動作回路データを記憶し、
前記制御手段は、前記通常動作回路データを前記再構成可能な回路に構成し、検出された前記遅延量を用いた通常動作を開始させることを特徴とする請求項１に記載のデータ処理システム。
【請求項６】
前記タイミング検証用回路データに従って構成された前記再構成可能な回路は、
同一のデータを、段階的に異なるタイミングで前記他の回路へ出力し、
前記他の回路で処理された前記データを受け取り、
受け取った前記データと、理想データとを比較して遅延量を検出することを特徴とする請求項１乃至５の何れか１項に記載のデータ処理システム。
【請求項７】
前記タイミング検証用回路データに従って構成された前記再構成可能な回路は、前記受け取ったデータと前記理想データとが一致する場合の、前記他の回路へ出力したデータの遅延量を、前記再構成可能な回路と前記他の回路との間のデータの受け渡しに関する遅延量として検出することを特徴とする請求項６に記載のデータ処理システム。
【請求項８】
前記タイミング検証用回路データに従って構成された前記再構成可能な回路は、
同一のデータを、段階的に異なるタイミングで前記他の回路へ出力し、
前記他の回路で処理された前記データを受け取り、
受け取った前記データを前記他の回路へ入力された際のデータに変換し、
前記変換したデータと、前記他の回路へ出力したデータとを比較して遅延量を検出することを特徴とする請求項１乃至５の何れか１項に記載のデータ処理システム。
【請求項９】
前記タイミング検証用回路データに従って構成された前記再構成可能な回路は、前記変換したデータと前記他の回路へ出力したデータとが一致する場合の、前記他の回路へ出力したデータの遅延量を、前記再構成可能な回路と前記他の回路との間のデータの受け渡しに関する遅延量として検出することを特徴とする請求項８に記載のデータ処理システム。
【請求項１０】
前記タイミング検証用回路データに従って構成された前記再構成可能な回路は、
同一のデータを、段階的に異なるタイミングで前記他の回路へ出力し、
前記他の回路からそのまま出力された前記データを受け取り、
受け取った前記データと、前記他の回路へ出力したデータとを比較して遅延量を検出することを特徴とする請求項１乃至５の何れか１項に記載のデータ処理システム。
【請求項１１】
前記タイミング検証用回路データに従って構成された前記再構成可能な回路は、前記受け取ったデータと前記他の回路へ出力したデータとが一致する場合の、前記他の回路へ出力したデータの遅延量を、前記再構成可能な回路と前記他の回路との間のデータの受け渡しに関する遅延量として検出することを特徴とする請求項１０に記載のデータ処理システム。
【請求項１２】
前記他の回路から出力されるデータの入力先を選択する第１のセレクタをさらに備え、
前記第１のセレクタは、前記タイミング検証用回路データに従って前記再構成可能な回路が構成されている場合は、前記他の回路から出力されるデータを該再構成可能な回路へ入力するように動作することを特徴とする請求項６乃至１１の何れか１項に記載のデータ処理システム。
【請求項１３】
前記タイミング検証用回路データに従って構成された前記再構成可能な回路は、
データを前記他の回路に出力し、
前記他の回路で処理された前記データを段階的に異なるタイミングで受け取り、
受け取った前記データと、理想データとを比較して遅延量を検出することを特徴とする請求項１乃至１２の何れか１項に記載のデータ処理システム。
【請求項１４】
前記タイミング検証用回路データに従って構成された前記再構成可能な回路は、前記受け取ったデータと前記理想データとが一致する場合の、前記他の回路へ出力したデータの遅延量を、前記再構成可能な回路と前記他の回路との間のデータの受け渡しに関する遅延量として検出することを特徴とする請求項１３に記載のデータ処理システム。
【請求項１５】
前記タイミング検証用回路データに従って構成された前記再構成可能な回路は、
データを前記他の回路に出力し、
前記他の回路で処理された前記データを段階的に異なるタイミングで受け取り、
受け取った前記データを前記他の回路へ入力された際のデータに変換し、
前記変換したデータと、前記他の回路へ出力したデータとを比較して遅延量を検出することを特徴とする請求項１乃至１２の何れか１項に記載のデータ処理システム。
【請求項１６】
前記タイミング検証用回路データに従って構成された前記再構成可能な回路は、前記変換したデータと前記他の回路へ出力したデータとが一致する場合の、前記他の回路へ出力したデータの遅延量を、前記再構成可能な回路と前記他の回路との間のデータの受け渡しに関する遅延量として検出することを特徴とする請求項１２に記載のデータ処理システム。
【請求項１７】
前記タイミング検証用回路データに従って構成された前記再構成可能な回路は、
データを前記他の回路に出力し、
前記他の回路からそのまま出力されたデータを段階的に異なるタイミングで受け取り、
受け取った前記データと、前記他の回路へ出力したデータとを比較して遅延量を検出することを特徴とする請求項１乃至１２の何れか１項に記載のデータ処理システム。
【請求項１８】
前記タイミング検証用回路データに従って構成された前記再構成可能な回路は、前記受け取ったデータと前記他の回路へ出力したデータとが一致する場合の、前記他の回路へ出力したデータの遅延量を、前記再構成可能な回路と前記他の回路との間のデータの受け渡しに関する遅延量として検出することを特徴とする請求項１７に記載のデータ処理システム。
【請求項１９】
前記他の回路へ入力されるデータを選択する第２のセレクタをさらに備え、
前記第２のセレクタは、前記タイミング検証用回路データに従って前記再構成可能な回路が構成されている場合は、該再構成可能な回路から出力されるデータを前記他の回路へ入力するように動作することを特徴とする請求項１３乃至１８の何れか１項に記載のデータ処理システム。
【請求項２０】
前記タイミング検証は、前記データ処理システムを含む製品の出荷時に行われることを特徴とする請求項１乃至１９の何れか１項に記載のデータ処理システム。
【請求項２１】
前記タイミング検証は、前記データ処理システムへの電源投入時に行われることを特徴とする請求項１乃至２０の何れか１項に記載のデータ処理システム。
【請求項２２】
前記タイミング検証は、前記データ処理システムで通常動作を行った回数が所定の回数に到達する度に行われることを特徴とする請求項１乃至２１の何れか１項に記載のデータ処理システム。
【請求項２３】
前記遅延量は、前記再構成可能な回路と前記他の回路との間で受け渡すデータと、クロックとの位相差に関するものであることを特徴とする請求項１乃至２２の何れか１項に記載のデータ処理システム。
【請求項２４】
回路構成を変更可能な再構成可能な回路と、前記再構成可能な回路とデータの受け渡しを行う他の回路と、前記再構成可能な回路に構成される回路データであって、該再構成可能な回路と前記他の回路との間のデータの受け渡しのタイミング検証を実行するためのタイミング検証用回路データと、通常動作を行う通常動作回路データとを記憶する記憶手段と、制御手段とを備えるデータ処理システムの制御方法であって、
制御手段において
前記タイミング検証用回路データに従って前記再構成可能な回路を構成する工程と、
前記再構成可能な回路と前記他の回路との間のデータの受け渡しを行わせて、当該データの受け渡しに関する遅延量を検出させる工程と、
検出された前記遅延量と、通常動作回路データとを用いて通常動作を開始させる工程と
を実行することを特徴とするデータ処理システムの制御方法。
【請求項２５】
請求項２４に記載のデータ処理システムの制御方法における各工程をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、受け側チップのプロセスのバラツキに対応したＦｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ（以下、ＦＰＧＡと略記する。）における外部インタフェースのタイミング（以下、ＡＣタイミングと称する。）を制御するデータ処理システム、その制御方法、及びプログラムに関するものである。
【背景技術】
【０００２】
チップ間のデータの受け渡しにおいては、入力側のチップのセットアップ及びホールドのタイミング制約を満足する必要がある。しかし、チップ内における遅延時間のバラツキは、チップのプロセスの特性や、チップの温度、チップに供給される電圧等により変化するため、それらのバラツキを考慮したタイミングの調整を行う必要がある。更にチップ間の信号の受け渡しは年々高速化しており、チップ内でのタイミング調整や基板上の遅延調整は、非常に困難となってきている。
【０００３】
特許文献１には、Ｄｏｕｂｌｅ−Ｄａｔａ−Ｒａｔｅ３（以下、ＤＤＲ３と称する。）において、実動作を行う前に、接続チップとのデータの受け渡しの試行を行うライトレベリングという機能が提案されている。ライトレベリング機能とは、ＤＤＲ３におけるＰｈａｓｅ−Ｌｏｃｋｅｄ  Ｌｏｏｐ回路（以下、ＰＬＬ回路と称する。）とディレイ調整回路を使用して、データ出力と同期クロックの設定を決定し、その後の通常動作に使用するものである。具体的には、ＰＬＬ回路とディレイ調整回路とを使用して複数段階でタイミングを変化させつつ受け渡しの試行を行い、これにより出力側からの最適なＡＣタイミングを検出し、その結果に基づきデータ出力と同期クロックの設定を決定する。
【０００４】
また、近年ＦＰＧＡの大容量化や低価格化が進み、ＦＰＧＡを搭載した製品も開発が進んできている。ＦＰＧＡにおいても、接続されたチップとのデータの受け渡しに対するＦＰＧＡ内でのタイミング調整は、困難になってきている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−７５６８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
例えば、ＦＰＧＡでは、製品によって、使用可能なゲート容量や、ＰＬＬ回路、Ｄｅｌａｙ−Ｌｏｃｋｅｄ  Ｌｏｏｐ回路（以下、ＤＬＬ回路と称する。）等の機能モジュールの使用個数に制限がある。つまり、ゲート容量の大きな製品や、ＰＬＬ回路、ＤＬＬ回路等の機能モジュールを多く有する製品は、それだけ価格の高いものとなる。例えば、タイミングを改善すべく、ライトレベリング機能のような付加回路を設ける場合、当該機能の実際の処理動作に必要とする回路や機能モジュールを使用することはコストアップとなってしまう。
【０００７】
本発明は、上述の問題に鑑みて成されたものであり、付加回路を追加することなく、接続チップ間のバラツキに対応した、タイミングの改善を行う仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、データ処理システムであって、回路構成を変更可能な再構成可能な回路と、前記再構成可能な回路とデータの受け渡しを行う他の回路と、前記再構成可能な回路に構成される回路データであって、該再構成可能な回路と前記他の回路との間のデータの受け渡しのタイミング検証を実行するためのタイミング検証用回路データと、前記データ処理システムが通常動作を行う通常動作回路データとを記憶する記憶手段と、前記タイミング検証用回路データに従って前記再構成可能な回路を構成し、前記再構成可能な回路と前記他の回路との間のデータの受け渡しを行わせて、当該データの受け渡しに関する遅延量を検出させ、検出された前記遅延量と、通常動作回路データとを用いて通常動作を開始させる制御手段とを備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、付加回路を追加することなく、接続チップ間のバラツキに対応した、タイミングの改善を行うことができる。
【図面の簡単な説明】
【００１０】
【図１】データ処理システムの全体構成を示す図。
【図２】データ処理システムのタイミング検証モードと通常モードとの構成を示す図。
【図３】回路データ格納部１０２内のデータ構成を示す図。
【図４】タイミング検証モードでのデータ処理システムの詳細な回路構成を示す図。
【図５】遅延量調整部・Ａ５０５とそのクロック出力を示す図。
【図６】一実施形態の動作フローを示した図。
【図７】データ処理システムの全体構成を示す図。
【図８】データ処理システムのタイミング検証モードと通常モードとの構成を示す図。
【図９】回路データ格納部１０２内のデータ構成を示す図。
【図１０】タイミング検証モードでのデータ処理システムの詳細な回路構成と、遅延量調整部・Ｂ１３０１の内部構成とを示す図。
【図１１】データ処理システムのタイミング検証モードと通常モードとの構成を示す図。
【図１２】タイミング検証モードでのデータ処理システムの詳細な回路構成を示す図。
【図１３】一実施形態の動作フローを示した図。
【図１４】回路データ格納部１０２内のデータ構成を示す図。
【図１５】回路データ格納部１０２内のＰｔ−０、Ｐｔ−１及びＰｔ−９の回路におけるＡＣタイミングを示す図。
【図１６】通常動作時のデータ処理システムの詳細な回路構成を示す図。
【図１７】データ処理システムの全体構成を示す図。
【図１８】タイミング検証時のデータ処理システムの詳細な回路構成を示す図。
【図１９】データ処理システムの全体構成を示す図。
【図２０】タイミング検証時のデータ処理システムの詳細な回路構成を示す図。
【図２１】データ処理システムの全体構成を示す図。
【図２２】データ処理システムの全体構成を示す図。
【図２３】データ処理システムの詳細な全体構成を示す図。
【図２４】データ処理システムの詳細な全体構成を示す図。
【図２５】データ処理システムの詳細な全体構成を示す図。
【図２６】一実施形態の動作フローを示した図。
【図２７】入力タイミング検証動作フローを示した図。
【図２８】出力タイミング検証動作フローを示した図。
【図２９】回路データ格納部１０２内のデータ構成を示す図。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１２】
＜第１の実施形態＞
＜データ処理システムの構成＞
図１を参照して、本実施形態におけるＦＰＧＡを使用したデータ処理システムの構成について説明する。図１に示すデータ処理システム１００は、通常動作を行うモードと、通常動作を行う前に、タイミング検証を行うモードとの２つのモードを有する。通常モードでは、図２（ｂ）に示すように、ＣＰＵ１０８の制御によりＦＰＧＡ１０１内に通常動作用の回路データが展開される。さらに通常モードでは、ＩＣ（Integrated Circuit）・Ａ１０４から出力されるデータがＦＰＧＡ１０１、ＩＣ・Ｂ１０５、ＩＣ・Ｃ１０７へと順次受け渡されてデータ処理が行われる。一方、タイミング検証モードでは、図２（ａ）に示すように、ＣＰＵ１０８の制御によりＦＰＧＡ１０１内にタイミング検証用の回路が展開される。さらに、タイミング検証モードでは、ＩＣ・Ａ１０４やＩＣ・Ｃ１０７とのデータ受け渡しは行われず、ＦＰＧＡ１０１とＩＣ・Ｂ１０５との間のデータの受け渡しに最適なＦＰＧＡ１０１のクロックとデータの位相関係のタイミング検証を行う。
【００１３】
まず図１を参照して、第１の実施形態の構成について説明する。ＣＰＵ１０８は、データ処理システム１００全体の制御を行うためのＣＰＵであり、ＦＰＧＡ１０１や各ＩＣ、回路データ制御部１０３、セレクタ１０６等の制御を行う。ＦＰＧＡ１０１は、製造後に購入者や設計者が構成を変更可能な集積回路（再構成可能回路）である。ＦＰＧＡ１０１は、回路データ格納部１０２の回路データに従って、内部に論理回路を展開し、所定のデータ処理を行うことが可能なＰＬＤ（プログラマブルロジックデバイス）である。
【００１４】
回路データ格納部１０２は、ＦＰＧＡ１０１にて使用する回路データを格納する。通常、ＲＯＭ等の記憶デバイスを使用する。ＦＰＧＡ１０１との回路データの受け渡しは、回路データ制御部１０３からの回路データ制御信号によって実行する。回路データ格納部１０２には、複数の回路データを格納することも可能で、上記複数の回路データのうち、どのデータをＦＰＧＡ１０１に展開するかは、回路データ制御部１０３によって制御される。本実施形態において、回路データ格納部１０２には、図３に示すように、通常モードで使用する回路として、複数種類の通常動作用の回路データが格納されている。通常動作用回路データは、Ｐｔ−０（４０１）からＰｔ−９（４０５）までの１０種類が用意されており、それぞれの回路は、ＩＣ・Ｂ１０５とのデータ受け渡しに関して、ＡＣタイミングの設定が異なる回路である。また、回路データ格納部１０２には、タイミング検証モードでＩＣ・Ｂ１０５とのデータ受け渡しのタイミング検証を行う為のタイミング検証用回路データ４０１が格納されている。
【００１５】
回路データ制御部１０３は、回路データ格納部１０２とＦＰＧＡ１０１との回路データの受け渡しの制御を行う。本実施形態では、専用のＩＣを使用しているが、データ処理システム全体の制御を行うＣＰＵ１０８が、回路データ制御部１０３の役割を含み、回路データの受け渡しの制御を行うことも可能である。ＩＣ・Ａ１０４、ＩＣ・Ｂ１０５、及びＩＣ・Ｃ１０７は、データ処理用の半導体集積回路であり、入力端子からのデータ入力を行い、内部回路で所定の処理を行い、データ出力を行う。セレクタ１０６は、ＩＣ・Ｂ１０５から出力されたＩＣ・Ｂデータの入力先として、ＩＣ・Ｃ１０７又はＦＰＧＡ１０１を、ＣＰＵ１０８の制御により、選択するセレクタである。
【００１６】
＜タイミング検証モード＞
続いて、図２（ａ）を参照して、タイミング検証モードでのデータ処理システムの構成について説明する。タイミング検証モードでは、ＦＰＧＡ１０１とＩＣ・Ｂ１０５との間のデータの受け渡しに最適なＦＰＧＡ１０１のクロックとデータの位相関係のタイミング検証を行う。よって、ＦＰＧＡ１０１には、ＩＣ・Ａ１０４からのデータ入力は行わず、セレクタ１０６の信号出力の選択は、ＩＣ・ＢデータをＦＰＧＡ１０１に入力する経路が選択される。
【００１７】
回路データ制御部１０３は、ＦＰＧＡ１０１に展開する回路データとして、回路データ格納部１０２からタイミング検証用回路データ４０１を選択し、ＦＰＧＡ１０１に展開する。当該回路を展開したＦＰＧＡ１０１からは、タイミング検証にクロックとデータの位相の異なるタイミングでＦＰＧＡデータの出力が行われ、ＩＣ・Ｂ１０５はそのデータを受けて、内部の論理回路で処理を行った上でＩＣ・Ｂデータの出力を行う。出力されたＩＣ・Ｂデータはセレクタ１０６を介して、ＦＰＧＡ１０１へ入力され、各異なるタイミングごとにＩＣ・Ｂ１０５が正しくＦＰＧＡデータを受け取れているかを判断する。その判断結果から、ＦＰＧＡ１０１とＩＣ・Ｂ１０５との間のデータの受け渡しに最適なクロックとデータの位相関係を検出する。回路データ制御部１０３は、最適なクロックとデータの位相関係を実現するＡＣタイミングで作成した通常動作回路データを選択するためにＦＰＧＡ１０１のタイミング検証用回路から入力される遅延情報信号を格納する。
【００１８】
続いて、図４を参照して、タイミング検証モードでの本データ処理システムの動作の詳細について説明する。ＰＬＬ５０１は、外部から入力される遅い周波数のクロックに従って、ＦＰＧＡ１０１内部で使用する高周波数のクロックを生成する。本実施形態では、ＰＬＬ５０１から出力されるクロックは１２５０ＭＨｚとする。１／１０分周回路５０２は、高周波数のクロックを１／１０の周波数に分周を行う回路である。本実施形態では、１／１０分周回路５０２は、ＰＬＬ５０１から入力された１２５０ＭＨｚのクロックを１２５ＭＨｚに分周したクロックＣＬＫ＿１２５として出力する。出力データ用メモリ５０３は、ＩＣ・Ｂ１０５へと出力を行うデータを格納するメモリであり、ＣＰＵ１０８の制御により、ＣＬＫ＿１２５に同期して出力用のデータをＦＦ（フリップフロップ）５０４へと出力する。ＦＦ５０４では、出力データ用メモリ５０３からの出力用データをＣＬＫ＿１２５に従って出力させることで、ＦＰＧＡ１０１から１２５ＭＨｚ同期のデータ出力を行う。遅延調整部・Ａ５０５は、１／１０分周回路５０２からの１２５ＭＨｚのクロックであるＣＬＫ＿１２５と、ＰＬＬ５０１からの１２５０ＭＨｚのクロックが入力される。また、遅延調整部・Ａ５０５は、１２５ＭＨｚのクロックであるＣＬＫ＿１２５に対して、一定の遅延時間を付加したクロックであるＣＬＫ＿１２５Ｄの出力を行う。
【００１９】
ここで、図５（ａ）を参照して、本実施形態における遅延調整部・Ａ５０５の内部回路の詳細について説明する。遅延調整部・Ａ５０５には、１２５ＭＨｚのクロックであるＣＬＫ＿１２５が入力され、Ｐｔ−０信号として、セレクタ６１０へ入力されるとともに、ＦＦ６０１のデータ入力端子へと入力される。ＦＦ６０１のクロック端子には１２５０ＭＨｚのクロックであるＣＬＫ＿１２５０が入力され、ＣＬＫ＿１２５を出力させる。これにより、ＦＦ６０１からの出力信号（Ｐｔ−１信号）は、Ｐｔ−０信号に対して１２５０ＭＨｚの１サイクル分、つまり、０．８ｎｓｅｃ遅れた信号として、セレクタ６１０及び次のＦＦ６０２のデータ入力端子へと入力される。
【００２０】
ＦＦ６０２のクロック端子には１２５０ＭＨｚのクロックであるＣＬＫ＿１２５０が入力され、Ｐｔ−１信号を出力させる。これにより、ＦＦ６０２からの出力信号（Ｐｔ−２信号）は、Ｐｔ−１信号に対して１２５０ＭＨｚの１サイクル分、つまり、０．８ｎｓｅｃ遅れた信号として、セレクタ６１０及び次のＦＦ６０３のデータ入力端子へと入力される。同様にして、ＦＦ６０３、ＦＦ６０４、ＦＦ６０５、ＦＦ６０６、ＦＦ６０７、ＦＦ６０８、ＦＦ６０９が動作することにより、それぞれＰｔ−３信号、Ｐｔ−４信号、Ｐｔ−５信号、Ｐｔ−６信号、Ｐｔ−７信号、Ｐｔ−８信号、Ｐｔ−９信号が生成される。各信号は、前のＦＦから入力される信号に対して、それぞれ１２５０ＭＨｚの１サイクル分、つまり、０．８ｎｓｅｃ遅れた信号として生成される。Ｐｔ−０からＰｔ−９の各信号は、全てセレクタ６１０に入力されており、ＣＰＵ１０８から入力される４ビットの遅延量制御信号によって選択され、ＣＬＫ＿１２５Ｄとして出力される。
【００２１】
図５（ｂ）は、遅延調整部・Ａ５０５によって生成される１２５ＭＨｚの周波数で、遅延時間の異なるクロックＣＬＫ＿１２５Ｄのタイミングチャートを示す。一番上の波形となるＣＬＫ＿１２５０は、ＰＬＬ５０１から直接的に遅延調整部・Ａ５０５に入力される１２５０ＭＨｚのクロックである。また、二番目の波形となるＣＬＫ＿１２５は、１／１０分周回路５０２から遅延調整部・Ａ５０５に入力される１２５ＭＨｚのクロックである。一番下の波形が、ＦＦ５０４においてＣＬＫ＿１２５のクロックで出力されたＦＰＧＡデータの出力タイミングとなる。
【００２２】
Ｐｔ−０信号に関しては、入力されたＣＬＫ＿１２５がそのまま出力されるため、ＦＰＧＡデータとのエッジの位相も一致した状態で出力される。ＦＦ６０１によってＣＬＫ＿１２５０にて叩かれたＣＬＫ＿１２５は、Ｐｔ−１信号として、三段目の波形のように、Ｐｔ−０信号に対して１２５０ＭＨｚの１サイクル分、つまり、０．８ｎｓｅｃ遅れた信号となる。つまり、セレクタ６１０にてＰｔ−１信号がＣＬＫ＿１２５Ｄとして選択された場合には、ＦＰＧＡデータに対してＣＬＫ＿１２５Ｄは、０．８ｎｓｅｃという遅延時間で出力される。
【００２３】
ＦＦ６０２によってＣＬＫ＿１２５０に従って出力されるＰｔ−１信号は、Ｐｔ−２信号として、四段目の波形のように、Ｐｔ−１信号に対してさらに０．８ｎｓｅｃ遅れた信号となる。つまり、セレクタ６１０にてＰｔ−２信号がＣＬＫ＿１２５Ｄとして選択された場合には、ＦＰＧＡデータに対してＣＬＫ＿１２５Ｄは、１．６ｎｓｅｃという遅延時間で出力される。同様に、ＦＦ６０３〜６０９によって、それぞれ０．８ｎｓｅｃずつ遅延差のついたＰｔ−３信号、Ｐｔ−４信号、Ｐｔ−５信号、Ｐｔ−６信号、Ｐｔ−７信号、Ｐｔ−８信号、Ｐｔ−９信号が生成される。セレクタ６１０には、１０種類の遅延時間の異なる１２５ＭＨｚのクロック信号（Ｐｔ−０からＰｔ−９とそのクロックの選択を行う４ビットの遅延量制御信号が入力される。
【００２４】
遅延量制御信号は、ＣＰＵ１０８から出力される信号であり、具体的には、４ビットのデータが、「００００」の場合はＰｔ−０のクロックをＣＬＫ＿１２５Ｄとして選択する。「０００１」の場合はＰｔ−１のクロックをＣＬＫ＿１２５Ｄとして選択する。「００１０」の場合はＰｔ−２のクロックをＣＬＫ＿１２５Ｄとして選択する。「００１１」の場合はＰｔ−３のクロックをＣＬＫ＿１２５Ｄとして選択する。「０１００」の場合はＰｔ−４のクロックをＣＬＫ＿１２５Ｄとして選択する。「０１０１」の場合はＰｔ−５のクロックをＣＬＫ＿１２５Ｄとして選択する。「０１１０」の場合はＰｔ−６のクロックをＣＬＫ＿１２５Ｄとして選択する。「０１１１」の場合はＰｔ−７のクロックをＣＬＫ＿１２５Ｄとして選択する。「１０００」の場合はＰｔ−８のクロックをＣＬＫ＿１２５Ｄとして選択する。「１００１」の場合はＰｔ−９のクロックをＣＬＫ＿１２５Ｄとして選択する。これにより、ＦＰＧＡデータに対して、１０段階の遅延時間のついたＣＬＫ＿１２５Ｄを選択的にＦＰＧＡ１０１から出力が可能となる。
【００２５】
また、図３に示すように、回路データ格納部１０２には、ＩＣ・Ｂ１０５とのデータ受け渡しに関して、ＡＣタイミングの設定の異なる複数種類の通常動作用の回路データ（Ｐｔ−０（４０２）からＰｔ−９（４０５））が、格納されている。各回路データのＡＣタイミングの設定は、１０種類の遅延時間の異なる１２５ＭＨｚのクロック信号（Ｐｔ−０からＰｔ−９に対応している。つまり、通常動作用の回路データのＰｔ−０（４０２）は、Ｐｔ−０のクロックをＣＬＫ＿１２５Ｄとして選択した場合のＡＣタイミング設定となっている。同様に、通常動作用の回路データのＰｔ−１（４０３）は、Ｐｔ−１のクロックをＣＬＫ＿１２５Ｄと、Ｐｔ−９（４０５）は、Ｐｔ−９のクロックをＣＬＫ＿１２５Ｄと、として選択した場合のＡＣタイミング設定となっている。
【００２６】
図４の説明に戻る。タイミング検証モードでの動作としては、ＣＰＵ１０８によって、ＣＬＫ＿１２５Ｄの出力を順次、Ｐｔ−０からＰｔ−９まで段階的に変更する。その段階毎に、出力データ用メモリ５０３に格納されているデータを、ＦＦ５０４によって、ＣＬＫ＿１２５に従って出力させる。
【００２７】
図４に示すＦＦ５０６は、ＩＣ・Ｂ１０５内にあるＦＰＧＡデータを受けるためのＦＦとなる。ＦＰＧＡ１０１から、ＣＬＫ＿１２５同期で出力されるＦＰＧＡデータが、遅延時間を制御したＣＬＫ＿１２５Ｄのクロックに従って入力される。ＦＦ５０６において、正しくデータを受け取るには、ＦＦ５０６のセットアップ及び、ホールドの制約を満たした遅延時間でクロックとデータが入力される必要がある。ＦＰＧＡデータとＣＬＫ＿１２５Ｄの遅延時間によっては、ＦＦ５０６が正しくデータを受け取れる場合と、受け取れない場合が発生する。論理回路５０７は、ＩＣ・Ｂ１０５内にあるデータ処理用の論理回路である。ＦＦ５０６を介して、ＩＣ・Ｂ１０５に入力されたデータは、論理回路５０７にて所定の処理が行われてＩＣ・Ｂ１０５からＩＣ・Ｂデータとして出力される。ここでは、詳細な図示は行わないが、ＩＣ・Ｂデータの出力に関しても、ＩＣ・Ｂ１０５内のクロックとそのクロックで同期化されたデータとして出力される。
【００２８】
セレクタ１０６は、ＣＰＵ１０８の制御により、タイミング検証モードでＩＣ・ＢデータをＦＰＧＡ１０１へ入力するように設定する。ＩＣ・Ｂ１０５によって所定の処理が実行されたＩＣ・Ｂデータは、ＦＰＧＡ１０１へと入力され、つまりフィードバックされる。
【００２９】
検証データ受信部・Ａ５０８では、ＩＣ・Ｂ１０５のデータ入力部分と同様に、ＦＦにてＩＣ・Ｂ１０５からのクロックとデータを受ける。受信データ格納メモリ５０９は、ＩＣ・Ｂ１０５から出力される、論理回路５０７によるデータ処理後のＩＣ・Ｂデータを順次格納して行くためのメモリとなる。比較データ格納メモリ５１０は、ＩＣ・Ｂ１０５から出力される、論理回路５０７によるデータ処理後のＩＣ・Ｂデータが、ＦＰＧＡ１０１とＩＣ・Ｂ１０５との間のデータの受け渡しが正しく行われた結果か否かを判断するためのデータを格納する。ＦＰＧＡ１０１とＩＣ・Ｂ１０５との間のデータの受け渡しが正しく行われた場合に、出力データ用メモリ５０３のデータに対して論理回路５０７によって所定の処理が行われたデータ（理想データ）が格納される。
【００３０】
データ比較部５１１は、受信データ格納メモリ５０９と比較データ格納メモリ５１０から順次データの入力を行い、それぞれのデータが同じか否かの比較を行う。全てのデータ一致している場合には、ＦＰＧＡ１０１とＩＣ・Ｂ１０５との間のデータの受け渡しが正しく行われたこととなり、不一致のデータがある場合には、ＦＰＧＡ１０１とＩＣ・Ｂ１０５との間のデータの受け渡しが正しく行われていなかったことを示す。
【００３１】
データの比較結果は、比較結果格納メモリ５１２内に格納される。先に説明を行ったように、タイミング検証時の動作としては、ＣＰＵ１０８によって、ＣＬＫ＿１２５Ｄの出力を順次、Ｐｔ−０からＰｔ−９まで段階的に変えて行く。その段階毎に、出力データ用メモリ５０３に格納されているデータがＩＣ・Ｂ１０５によって所定の処理が行われる。よって、データ処理後のＩＣ・ＢデータもＰｔ−０からＰｔ−９までの段階毎にＦＰＧＡ１０１へと入力され、比較データ格納メモリ５１０内のデータと比較される。
【００３２】
遅延情報解析部５１３では、Ｐｔ−０からＰｔ−９までのデータの比較結果から、ＦＰＧＡ１０１とＩＣ・Ｂ１０５との間のデータの受け渡しを行うにあたり、最適となるＦＰＧＡデータとＣＬＫ＿１２５Ｄの遅延差（位相差に関連する遅延量）の検出を行う。検出した遅延差に従って、通常動作時にＦＰＧＡ１０１内に展開する回路データが選択される。
【００３３】
ここで、図５（ｂ）を参照して、具体的な遅延調整の方法を説明する。Ｐｔ−０からＰｔ−９まで遅延時間を変化させてＦＰＧＡ１０１からのデータ出力、ＩＣ・Ｂ１０５での処理、処理データの比較を順次行い、比較結果の一致、不一致の情報を比較結果格納メモリ５１２に格納する。全ての遅延時間のパターンが完了した時点で、遅延情報解析部５１３は比較結果格納メモリ５１２から全てのパターンの比較結果の入力を行う。その結果が、図５（ｂ）に示すように、Ｐｔ−０、Ｐｔ−１の場合「不一致」、Ｐｔ−２からＰｔ−６で「一致」、Ｐｔ−７からＰｔ−９で「不一致」となっていた場合を想定する。この場合、Ｐｔ−４の遅延時間でＦＰＧＡ１０１からＦＰＧＡデータとＣＬＫ＿１２５Ｄの出力を行う場合が、一番マージンを確保した上で、正しい受け渡しが可能となることが判断できる。
【００３４】
回路データ格納部１０２では、図３に示すＰｔ−０からＰｔ−９の各通常動作用回路データは、Ｐｔ−０からＰｔ−９の各遅延時間の設定によって生成された回路データとなっている。Ｐｔ−４の遅延時間でＦＰＧＡ１０１からＦＰＧＡデータとＣＬＫ＿１２５Ｄの出力を行う場合が一番マージンを確保した上で正しい受け渡しが可能であると判断した場合、Ｐｔ−４の通常動作用回路データが通常モードでＦＰＧＡ１０１へ展開される。
【００３５】
遅延情報解析部５１３での判断結果は、遅延情報信号として回路データ制御部１０３へと入力される。本実施形態では、選択すべき回路データが１０種類となるので、４ビットのデータとして回路データ制御部１０３へ入力される。具体的には、４ビットのデータが、「００００」の場合はＰｔ−０の通常回路データが選択される。「０００１」の場合はＰｔ−１の通常回路データが選択される。「００１０」の場合はＰｔ−２の通常回路データが選択される。「００１１」の場合はＰｔ−３の通常回路データが選択される。「０１００」の場合はＰｔ−４の通常回路データが選択される。「０１０１」の場合はＰｔ−５の通常回路データが選択される。「０１１０」の場合はＰｔ−６の通常回路データが選択される。「０１１１」の場合はＰｔ−７の通常回路データが選択される。「１０００」の場合はＰｔ−８の通常回路データが選択される。「１００１」の場合はＰｔ−９の通常回路データが選択される。
【００３６】
遅延情報信号が「００００」の場合はＰｔ−０の通常回路データが選択され、その時のクロックとデータは、図１５（ａ）に示すように、遅延差が０ｎｓｅｃでの出力タイミングとなる。また、遅延情報信号が「０００１」の場合はＰｔ−１の通常回路データを選択され、その時のクロックとデータは、図１５（ｂ）に示すように、遅延差が０．８ｎｓｅｃでの出力タイミングとなる。遅延情報信号が「１００１」の場合はＰｔ−９の通常回路データを選択され、その時のクロックとデータは、図１５（ｃ）に示すように、遅延差が７．２ｎｓｅｃでの出力タイミングとなる。
【００３７】
ここで図４を参照して、回路データ制御部１０３の内部構成について説明する。回路データ制御部１０３には、入力された遅延情報信号を格納するための遅延情報信号格納部５１４と回路データ格納部１０２からの回路データをＦＰＧＡ１０１へ送信し、展開するための一連の制御を行うコンフィグレーション制御回路５１５とが含まれている。そして、遅延情報信号格納部５１４に格納された情報を元に、通常モードではＦＰＧＡ１０１に展開すべき回路データの選択、ＦＰＧＡ１０１への展開が行われ、通常動作状態へと移行する。
【００３８】
＜処理手順＞
次に、図６を参照して、本実施形態における電源オン時からタイミング検証モードでの動作を行い、通常動作に移行するまでの処理手順について説明する。以下で説明する処理は、ＣＰＵ１０８によって統括的に制御される。
【００３９】
Ｓ８０１で電源が投入されると、当該データ処理システムは、リセットが掛けられた状態から起動し、Ｓ８０２でＣＰＵ１０８のブートアップが実行され、ＣＰＵ１０８がデータ処理システムを制御可能な状態となる。Ｓ８０３で、ＣＰＵ１０８は、システム全体のリセットを解除する。
【００４０】
次に、Ｓ８０４で、ＣＰＵ１０８は、タイミング検証動作を実行するか否かを判定する。本実施形態では、データ処理システムを組み込んだ製品を工場で生産することを想定しており、出荷を行う前にタイミング検証動作が行われる。もちろん他のタイミングでタイミング検証動作が行われてもよい。出荷された製品を使用者が使用する場合には、既に回路データ制御部１０３内の遅延情報信号格納部５１４に格納された遅延情報信号の情報を元に、通常動作用回路データが選択される。Ｓ８０４でタイミング検証動作を行わないと判定するとＳ８１４に進み、回路データ制御部１０３によって、遅延情報信号格納部５１４内に格納された情報を元に、通常動作用回路データが選択され、ＦＰＧＡ１０１へ展開される。その後、Ｓ８１５で、通常動作状態へと移行し、通常動作が開始される。
【００４１】
一方、Ｓ８０４でタイミング検証動作を実行すると判定するとＳ８０５に進み、ＣＰＵ１０８は、回路データ格納部１０２に格納されているタイミング検証用回路データをＦＰＧＡ１０１の展開用の回路データとして選択する。選択した回路データを、回路データ制御部１０３からの回路データ制御信号に従って、ＦＰＧＡ１０１へ展開させる。タイミング検証用回路データがＦＰＧＡ１０１内に展開された後、Ｓ８０６で、ＣＰＵ１０８は、遅延量制御信号値を「０」、つまり「００００」に設定する。
【００４２】
Ｓ８０７で、ＣＰＵ１０８は、図５（ｂ）のＰｔ−０の遅延時間によって、ＦＰＧＡデータとＣＬＫ＿１２５Ｄを出力させ、ＦＰＧＡ１０１とＩＣ・Ｂ１０５との間でのデータ受け渡しを行わせる。上述したように、ＦＰＧＡ１０１から出力されたデータは、ＩＣ・Ｂ１０５にて所定の処理が行われた後、ＦＰＧＡ１０１に入力され、比較データとの比較が行われた後、その比較結果がＳ８０８で比較結果格納メモリ５１２に格納される。
【００４３】
後述するＳ８０９の判定の後、Ｓ８１０で、ＣＰＵ１０８は、Ｐｔ−０の遅延時間による比較結果が格納されたことを認識し、遅延量制御信号値に対して「１」を加算し、遅延量制御信号値を「１」、つまり「０００１」に設定し、処理をＳ８０７に戻す。そして、図５（ｂ）のＰｔ−１の遅延時間によって、ＦＰＧＡデータとＣＬＫ＿１２５Ｄが出力され、ＦＰＧＡ１０１とＩＣ・Ｂ１０５との間でのデータ受け渡しが行われる。上述したように、ＦＰＧＡ１０１から出力されたデータは、ＩＣ・Ｂ１０５にて所定の処理が行われた後、ＦＰＧＡ１０１に入力され、比較データとの比較が行われた後、その比較結果がＳ８０８で比較結果格納メモリ５１２に格納される。
【００４４】
このように、Ｓ８０７からＳ８１０の処理が繰り返され、Ｓ８０９で、ＣＰＵ１０８は、遅延量制御信号値が「９」、つまり「１００１」に設定された遅延時間での比較結果が格納されたか否かを判定する。終了するとＳ８１１に進み、遅延情報解析部５１３において通常モードで使用する遅延時間の解析が行われる。Ｓ８１２で、遅延情報解析部５１３での解析結果は、遅延情報信号として回路データ制御部１０３内の遅延情報信号格納部５１４へと格納される。その後Ｓ８１３で、ＣＰＵ１０８は、ＦＰＧＡ１０１内に展開された回路の再構築を指示する。再構築の指示により、Ｓ８１４で、遅延情報信号格納部８０１内に格納された情報を元に、回路データ制御部１０３によって、通常動作用回路データの選択、ＦＰＧＡ１０１への展開が行われる。そして、通常動作状態へと移行し、Ｓ８１５で通常動作を開始し、処理を終了する。
【００４５】
以上説明したように、本実施形態に係るデータ処理システムでは、回路データ格納部１０２に、クロックとデータの位相に関して、複数段階にずらしたＡＣタイミング設定により生成された通常動作回路データを格納しておく。また、回路データ格納部１０２には、回路データ以外に、接続チップとのデータの受け渡しを行うために最適なクロックとデータの位相を検出する検出回路データを格納しておく。ＦＰＧＡにて通常動作を行う前（製品の出荷時）に、タイミング検出回路データをＦＰＧＡ内に展開し、最大のマージンを持って、正しく信号の受け渡しが可能となるタイミング情報の検出を行い、その検出結果を回路データ制御部１０３に格納する。通常動作時には、検出結果を元に、予め用意しておいた複数のＡＣタイミングの通常動作用回路から、信号の受け渡しに最適なＡＣタイミング設定となっている回路を選択し、ＦＰＧＡに展開を行う。これにより、ＦＰＧＡに展開を行う通常動作時の回路にＡＣタイミング調整用の回路を付加する必要が無くなる。それによって通常動作時にＦＰＧＡ内に展開する規模や、ＰＬＬ、ＤＬＬ等の機能モジュールの使用個数等に影響を与えることなく、接続チップに対して最適なＡＣタイミングでのクロック、データの出力を行うことが可能となる。
【００４６】
＜第２の実施形態＞
以下では、本発明の第２の実施形態について説明する。上記第１の実施形態では、図３に示すように、ＡＣタイミングの設定の異なる複数種類の通常動作用の回路データを通常動作用の回路データとして回路データ格納部１０２に格納していた。しかし、回路データ格納部１０２は通常ＲＯＭ等の不揮発性メモリを使用することとなり、そのメモリ容量に制限がある。よって、格納するデータ量が大きな場合は、より大きな容量のメモリを使用したり、複数のメモリを使用するなど、製品におけるコストアップに繋がる。
【００４７】
また、上記第１の実施形態では、タイミング検証動作を、本データ処理システムを組み込んだ製品の出荷時に工場等で行い、以降は行わない例について説明した。しかし、製品が使用される環境は、気温や供給される電圧など、ＡＣタイミングを変化させる要因が、製品を製造する場所とは異なることが考えられる。そこで、本実施形態では、回路データ格納部１０２に格納する回路データの削減と、より正確な情報を元にＡＣタイミングの調整を行うことを目的とした例について説明する。なお、本実施形態において特徴となる構成の一部と、上記実施形態とを組み合わせて実現されてもよい。但し、上記第１の実施形態と同様の構成、及び同様の機能のモジュールや信号に関しては、上記第１の実施形態と同一の番号を付すことにより、詳細な説明を省略する。
【００４８】
まず、図７を参照して、本実施形態におけるＦＰＧＡを使用したデータ処理システムの全体構成について説明する。図７に示すデータ処理システム７００は、通常動作を行うモードと、通常動作を行う前に、タイミング検証を行うモードの２つのモードで処理の内容を切り替えて使用する。通常モードでは、図８（ｂ）に示すように、ＣＰＵ１０８からの制御によりＦＰＧＡ１０１内には、通常動作用の回路データが展開される。この場合のＩＣ・Ａ１０４から出力されるデータは、ＦＰＧＡ１０１、ＩＣ・Ｂ１０５、ＩＣ・Ｃ１０７へと順次受け渡され、データ処理が行われる。タイミング検証モードでは、図８（ａ）に示すように、ＣＰＵ１０８からの制御によりＦＰＧＡ１０１内には、タイミング検証用の回路が展開される。この場合では、ＩＣ・Ａ１０４やＩＣ・Ｃ１０７とのデータ受け渡しは行われず、ＦＰＧＡ１０１とＩＣ・Ｂ１０５との間のデータの受け渡しに最適なＦＰＧＡ１０１のクロックとデータの位相関係のタイミング検証が行われる。
【００４９】
図７に示すＣＰＵ１０８は、データ処理システム７００全体の制御を行うためのＣＰＵであり、ＦＰＧＡ１０１や各ＩＣや、セレクタ１０６等の制御を行う。また、本実施形態では、ＣＰＵ１０８は、回路データ格納部１０２とＦＰＧＡ１０１との回路データの受け渡しの制御を行う、上記第１の実施形態における回路データ制御部１０３の役割も行う。
【００５０】
ＦＰＧＡ１０１は、製造後に購入者や設計者が構成を変更可能な集積回路であり、回路データ格納部１０２から入力される回路データを元に、内部に論理回路を展開し、所定のデータ処理を行うことが可能なＰＬＤ（プログラマブルロジックデバイス）である。回路データ格納部１０２は、ＦＰＧＡ１０１にて使用する回路データを格納する。通常、ＲＯＭ等の記憶デバイスを使用する。
【００５１】
ＦＰＧＡ１０１との回路データの受け渡しは、ＣＰＵ１０８からの回路データ制御信号を元に実行する。回路データ格納部１０２には、複数の回路データを格納することも可能であり、複数の回路データのうち、どのデータをＦＰＧＡ１０１に展開するかは、ＣＰＵ１０８によって制御される。本実施形態では、回路データ格納部１０２は、図９に示す回路データを格納する。
【００５２】
ＦＰＧＡ１０１に展開する通常動作用回路を予めデータ処理回路１２０１と外部Ｉ／Ｆ回路１２０２との２つの処理回路に分割しておく。データ処理回路１２０１に関しては入力されたデータの処理を行う部分となるので、ＡＣタイミングの設定を変化させても、回路を変更する必要は無く、どのＡＣタイミングの場合でも、共通に使用できる回路となる。外部Ｉ／Ｆ回路１２０２に関しては、ＡＣタイミングを変化させた回路をそれぞれ別々に持つ必要があるため、複数の回路データとして格納しておく必要がある。ＦＰＧＡ１０１は部分書き換えが可能なので、通常モードではデータ処理用回路データと、ＩＣ・Ｂ１０５とのデータの受け渡しに最適なＡＣタイミングとなる外部Ｉ／Ｆ回路用データを選択してＦＰＧＡ１０１に展開することが可能となる。つまり、本実施形態によれば、ＡＣタイミングの設定により変更が必要な部分の回路と、変更が必要でない部分との回路とに分け、変更が必要でない部分の回路を固定することにより、メモリ資源を有効に活用することができる。
【００５３】
ＣＰＵ１０８は、本データ処理システム７００全体の制御を行うとともに、回路データ格納部１０２とＦＰＧＡ１０１との回路データの受け渡しの制御を行う。ＩＣ・Ａ１０４、ＩＣ・Ｂ１０５、ＩＣ・Ｃ１０７は、データ処理用の半導体集積回路であり、入力端子からのデータ入力を行い、内部回路で所定の処理を行い、データ出力を行う。セレクタ１０６は、ＩＣ・Ｂ１０５から出力されたＩＣ・Ｂデータを、ＩＣ・Ｃ１０７へ送るか、ＦＰＧＡ１０１に送るかを、データ処理システム全体の制御を行うＣＰＵ１０８の制御により、選択するセレクタとなる。
【００５４】
図８（ｂ）は、タイミング検証モードでのデータ処理システムの全体構成を示す。タイミング検証モードでのデータ処理システム７００全体の動作に関しては、上記第１の実施形態と同様に、ＦＰＧＡ１０１内にタイミング検証用の回路データを展開し、ＩＣ・Ｂ１０５とのデータの受け渡しを行う。よって、詳細な説明は省略する。
【００５５】
ここで、図１０（ａ）を参照して、本実施形態におけるタイミング検証モードでのＦＰＧＡ１０１内で展開されたタイミング検証用回路の構成について説明する。ＰＬＬ５０１は、外部からの遅い周波数のクロックを元に、ＦＰＧＡ１０１内部で使用する高周波数のクロックの生成を行う。本実施形態では、ＰＬＬ５０１から出力されるクロックは、１２５ＭＨｚとし、このクロックをＣＬＫ＿１２５と表記する。
【００５６】
出力データ用メモリ５０３は、ＩＣ・Ｂ１０５へと出力を行うデータを格納するメモリであり、システム制御用のＣＰＵ１０８の制御により、ＣＬＫ＿１２５に同期して出力用のデータとして格納したデータが出力される。ＦＦ５０４では、出力データ用メモリ５０３からの出力用データをＣＬＫ＿１２５に従って出力させることで、１２５ＭＨｚ同期のデータ出力をＦＰＧＡ１０１から行う。
【００５７】
遅延調整部・Ｂ１３０１は、ＰＬＬ５０１からの１２５ＭＨｚのクロックであるＣＬＫ＿１２５の入力を行い、１２５ＭＨｚのクロックであるＣＬＫ＿１２５に対して、一定の遅延時間を付加したクロックであるＣＬＫ＿１２５Ｄの出力を行う。
【００５８】
次に、図１０（ｂ）を参照して、本実施形態における遅延調整部・Ｂ１４０１の内部回路の詳細な構成例について説明する。本実施形態における遅延調整部・Ｂ１３０１は、ＰＬＬ・Ａ１４０１によって遅延値の調整を行う。本実施形態における遅延調整部・Ｂ１３０１では、ＰＬＬ・Ａ１４０１に入力されたクロックから高周波数のクロックを生成し、遅延調整部・Ａ５０５によって入力されたクロックに対して遅延時間の制御を行い、出力クロックを生成するという構成となっている。本実施形態では、ＰＬＬ・Ａ１４０１は１２５ＭＨｚのクロックの入力を行い、１２５０ＭＨｚのクロックＣＬＫ＿１２５０の出力を行う。
【００５９】
遅延調整部・Ａ５０５には、１２５ＭＨｚのクロックであるＣＬＫ＿１２５と１２５０ＭＨｚのクロックであるＣＬＫ＿１２５０が入力される。その後、遅延調整部・Ａ５０５は、遅延量制御信号に従って、０．８ｎｓｅｃずつ遅延時間をずらした１２５ＭＨｚのクロックであるＣＬＫ＿１２５Ｄの出力を行う。遅延調整部・Ａ５０５に関しては、第１の実施形態にて図６、図７によって詳細な説明を行っているので、ここでの詳細な説明は省略する。
【００６０】
タイミング検証時の動作としては、ＣＰＵ１０８によって、ＣＬＫ＿１２５Ｄの出力を順次、Ｐｔ−０からＰｔ−９まで段階的に変えて行く。その各段階毎に、出力データ用メモリ５０３に格納されているデータを、ＦＦ５０４によって、ＣＬＫ＿１２５にて出力させる。本実施形態では、遅延調整部・Ｂ１３０１内のＰＬＬ・Ａ１４０１からの出力クロックの周波数を１２５０ＭＨｚとして、１０段階での遅延値の調整を行った。さらに、ＰＬＬ・Ａ１４０１からの出力クロックの周波数を高くし、遅延調整部・Ａ５０５内でのＦＦの段数を増やすことで、より細かい遅延値の調整が可能となる。
【００６１】
ＩＣ・Ｂ１０５内の構成に関しては、本実施形態においても第１の実施形態と同じものとなる為、詳細な説明は省略する。ＩＣ・Ｂ１０５によって所定の処理が実行されたＩＣ・Ｂデータは、ＦＰＧＡ１０１へと入力される。
【００６２】
検証データ受信部・Ｂ１３０２では、図１３では、詳細な図示は行わないが、ＩＣ・Ｂ１０５のデータ入力部分と同様に、ＦＦにてＩＣ・Ｂ１０５からのクロックとデータを受ける。また、検証データ受信部・Ｂ１３０２内には、ＩＣ・Ｂ１０５内の論理回路５０７で行うデータ処理の逆変換を行う回路が内蔵されており、ＩＣ・Ｂ１０５から出力されてきた論理回路５０７による処理済みのデータを元のＦＰＧＡデータに戻すことが可能である。
【００６３】
受信データ格納メモリ５０９は、検証データ受信部・Ｂ１３０２から出力される、データを順次格納して行く為のメモリとなる。この時、格納されるデータはＩＣ・Ｂ１０５内の論理回路５０７から出力されデータの逆変換されたデータとなっている。
【００６４】
データ比較部５１１は、受信データ格納メモリ５０９と出力データ用メモリ５０３から順次データの入力を行い、それぞれのデータが一致するか否かの比較を行う。全てのデータ一致している場合には、ＦＰＧＡ１０１とＩＣ・Ｂ１０５との間のデータの受け渡しが正しく行われたこととなり、不一致のデータがある場合には、ＦＰＧＡ１０１とＩＣ・Ｂ１０５との間のデータの受け渡しが正しく行われていなかったことを示す。
【００６５】
前記データの比較結果は、比較結果格納メモリ５１２内に格納される。先に説明を行ったように、タイミング検証時の動作としては、ＣＰＵ１０８によって、ＣＬＫ＿１２５Ｄの出力を順次、Ｐｔ−０からＰｔ−９まで段階的に変えて行く。その各段階毎に、出力データ用メモリ５０３に格納されているデータが、ＩＣ・Ｂ１０５によって所定の処理が行われる。よって、データ処理後のＩＣ・ＢデータもＰｔ−０からＰｔ−９までの各段階毎にＦＰＧＡ１０１へと入力され、逆変換された後に、出力データ用メモリ５０３内のデータと比較される。
【００６６】
遅延情報解析部５１３では、Ｐｔ−０からＰｔ−９までのデータの比較結果から、ＦＰＧＡ１０１とＩＣ・Ｂ１０５との間のデータの受け渡しを行うにあたり、最適となるＦＰＧＡデータとＣＬＫ＿１２５Ｄの遅延差を検出する。さらに、検出した遅延差に従って通常動作時にＦＰＧＡ１０１内に展開する回路データを決定する。具体的な方法については、上記第１の実施形態において図５（ｂ）を用いて詳細に説明しているため、再度の説明は省略する。
【００６７】
ＣＰＵ１０８には、ＦＰＧＡ１０１から入力された遅延情報信号を格納するための遅延情報信号格納部１３０３と本データ処理システム７００全体の制御を行うＣＰＵ−Ｃｏｒｅ１３０４が含まれている。本実施形態では、ＣＰＵ−Ｃｏｒｅ１３０４により、ＦＰＧＡ１０１に対して、回路データ格納部１０２からの回路データを送信、展開するための一連の制御が実行される。
【００６８】
そして、遅延情報信号格納部１３０３内に格納された情報を元に、通常動作時にＦＰＧＡ１０１に展開すべき回路データの選択、ＦＰＧＡ１０１への展開を行い、通常動作状態へと移行する。本実施形態における電源オン時からタイミング検証時の動作を行い、通常動作に移行するまでのデータ処理システムの処理手順については、上記第１の実施形態において図６を用いて説明した処理手順と同様であるため説明は省略する。
【００６９】
但し、タイミング検証動作を実行するタイミングに関して、本実施形態では、上記第１の実施形態と異なる。上記第１の実施形態では、データ処理システムを組み込んだ製品を工場で生産することを想定しており、出荷を行う前にタイミング検証動作を行うこととしていた。しかし、本実施形態では、出荷された製品を使用者が使用する場合の電源オン時には、毎回タイミング検証の動作を行い、通常動作用回路データの選択を行う。それにより、製品が使用される環境における気温や供給される電圧など、ＡＣタイミングを変化させる要因がタイミング検証モードで考慮されることとなり、より正確な情報を元にＡＣタイミングの調整を行うことが可能となる。
【００７０】
以上説明したように、本実施形態では、ＦＰＧＡ１０１、回路データ格納部１０２、ＣＰＵ１０８を含むデータ処理システム７００について説明した。本実施形態では、回路データ格納部１０２には、クロックとデータの位相に関して、複数段階にずらしたＡＣタイミング設定により生成された通常動作回路データが格納される。さらに、回路データ格納部１０２には、回路データ以外に、接続チップとのデータの受け渡しを行うために最適なクロックとデータの位相を検出するための検出回路データが格納される。また、ＦＰＧＡ１０１にて通常動作を行う前に、タイミング検出回路データをＦＰＧＡ１０１内に展開し、最大のマージンを持って、正しく信号の受け渡しが可能となるタイミング情報の検出を行い、その検出結果が回路データ格納部１０２に格納される。通常動作時には、当該検出結果を元に、予め用意した複数のＡＣタイミングの通常動作用回路から、信号の受け渡しに最適なＡＣタイミング設定となっている回路を選択する。さらに、選択した回路をＦＰＧＡに展開することにより、ＦＰＧＡ１０１に展開を行う通常動作時の回路にＡＣタイミング調整用の回路を付加する必要が無くなる。それによって通常動作時にＦＰＧＡ１０１内に展開する規模や、ＰＬＬ、ＤＬＬ等の機能モジュールの使用個数等に影響を与えることなく、接続チップに対して最適なＡＣタイミングでのクロック、データの出力を行うことが可能となる。
【００７１】
また、本実施形態では、図１０（ａ）に示すように、回路データ格納部１０２には、通常動作用の回路データとして、データ処理用回路データと、ＡＣタイミングの設定の異なる複数種類の外部Ｉ／Ｆ回路用データを格納しておく。そして、ＦＰＧＡ１０１の部分書き換え機能を使用することで、回路データ格納部１０２に格納する回路データの削減を行う。また、データ処理システムへの電源投入時に毎回タイミング検証を行う。それによって、製品の使用環境における気温や供給される電圧など、ＡＣタイミングを変化させる要因がタイミング検証時に考慮され、より正確な情報を元にＡＣタイミングの調整を行うことができる。
【００７２】
＜第３の実施形態＞
次に、本発明の第３の実施形態について説明する。上記第１の実施形態では、ＩＣ・Ｂ１０５において正しいデータの受け渡しができたかどうかの確認を行うために、ＩＣ・Ｂ１０５内で行われるデータ処理結果と同じデータを比較データ格納メモリ５１０に格納していた。したがって、当該格納データと、データ比較部５１１にてＦＰＧＡ１０１に入力されたデータとの比較を実施した。これにより、検証用データ受信部・Ａ５０８内の回路構成が簡単な入力のみで実現することができる。
【００７３】
また、上記第２の実施形態では、ＩＣ・Ｂ１０５において正しいデータの受け渡しができたかどうかの確認を行うために、ＦＰＧＡ１０１に入力されたデータを逆変換し、データ比較部５１１で出力データ用メモリ５０３内のデータとの比較を実施した。これにより、検証用データ受信部・Ｂ１４０２内の回路構成は複雑になるものの、比較データ格納メモリ５１０を持つ必要が無くなり、ＦＰＧＡ１０１内における余分なメモリ領域を低減することができた。
【００７４】
一方、本実施形態では、ＦＰＧＡ１０１に接続されたＩＣが通常処理モードとスルーモードの２つのモードで動作可能な場合の実施例について説明する。具体的には、通常処理モードの場合、ＩＣは入力されたデータに対して通常の処理を実行し、スルーモードの場合は入力されたデータに対してそのような処理を実行することなくそのまま出力する。そして、タイミング検証動作時においては、接続されたＩＣ内でのデータ処理をスル―したデータが、ＦＰＧＡ１０１に入力される。これにより、検証用データ受信部・Ａ５０８内の回路構成が簡単な入力のみでよく、比較データ格納メモリ５１０を持つ必要が無くなり、ＦＰＧＡ１０１内に余分なメモリ領域を持たなくてもよい。なお、本実施形態において特徴となる構成の一部と、上記実施形態とを組み合わせて実現されてもよい。
【００７５】
また、上記第１及び第２の実施形態では、通常動作用の回路として、複数のＡＣタイミング設定によって生成した回路データを回路データ格納部１０２に格納していた。しかしながら、本実施形態では、通常動作用の回路として、ＡＣタイミング調整が設定可能な回路を用意する。タイミング検証動作により、データの受け渡しに最適な遅延時間の認識を行い、その遅延時間を通常動作用の回路に設定することで、通常動作時に確実なデータの受け渡しを行う。
【００７６】
また、上記第１の実施形態では、タイミング検証動作を本データ処理システムを組み込んだ製品を出荷する際に工場等で行い、それ以降は行わない例を挙げた。上記第２の実施形態では、タイミング検証動作を、本データ処理システムを組み込んだ製品の電源がオンされる毎に行うこととして、製品が使用される環境の気温や供給される電圧など、より正確な情報を元にＡＣタイミングの調整を行う例を挙げた。一方、本実施形態では、タイミング検証動作を、本データ処理システムを組み込んだ製品の電源がオンされた時以外に、実際に動作を行っている間にも行うこととする。本実施形態によれば、例えば、製品が使用されている時のＦＰＧＡやＩＣの発熱、製品内の温度なども考慮した、より正確な情報を元にＡＣタイミングの調整を行う。
【００７７】
以下では、上記第１及び第２の実施形態と同様の構成及び、同様の機能のモジュールや信号に関しては、上記実施形態と同一の番号を付与し、詳細な説明は省略する。
【００７８】
＜データ処理システムの構成＞
図１１を参照して、本実施形態におけるＦＰＧＡ１０１を使用したデータ処理システム１１００の全体構成について説明する。タイミング検証モードには、図１１（ａ）に示すように、ＣＰＵ１０８からの制御によりＦＰＧＡ１０１内には、タイミング検証用の回路が展開される。当該回路において、ＦＰＧＡ１０１とＩＣ・Ｄ１５０１との間のデータの受け渡しに最適なＦＰＧＡ１０１のクロックとデータの位相関係のタイミング検証を行う。そして、タイミング検証の結果から遅延情報信号の出力をＣＰＵ１０８に行う。
【００７９】
通常動作時には、図１１（ｂ）に示すように、ＣＰＵ１０８からの制御によりＦＰＧＡ１０１内には、通常動作用の回路データが展開され、ＦＰＧＡ１０１と、ＩＣ・Ｄ１５０１との間でのデータの受け渡しを行いつつ、データ処理を行う。この時、ＣＰＵ１０８内に格納された遅延情報信号を元にＦＰＧＡ１０１からデータ出力を行うＡＣタイミングの調整を行う。
【００８０】
図１１（ａ）に示すＣＰＵ１０８は、データ処理システム１１００全体の制御を行うためのＣＰＵであり、ＦＰＧＡ１０１や各ＩＣや、回路データ制御部１０３等の制御を行う。また、本実施形態では、ＣＰＵ１０８内に処理数カウンタ１５０２を持ち、通常モードで本データ処理システム１１００が何回処理を実行したかをカウントする仕組みを持っている。そして、処理数カウンタ１５０２の値がある設定値となった場合に、タイミング検証動作を実行する。また、本実施形態では遅延情報信号格納部１５０３もＣＰＵ１０８内に持ち、タイミング検証時にＦＰＧＡ１０１から出力される遅延情報信号の格納し、その情報を元にＦＰＧＡ１０１からデータ出力を行うＡＣタイミングの調整を行う。
【００８１】
ＦＰＧＡ１０１は、製造後に購入者や設計者が構成を変更可能な集積回路であり、回路データ格納部１０２から入力される回路データを元に、内部に論理回路を展開し、所定のデータ処理を行うことが可能なＰＬＤ（プログラマブルロジックデバイス）である。回路データ格納部１０２は、ＦＰＧＡ１０１にて使用する回路データを格納する。本実施形態においては、回路データ格納部１０２には、図１４に示すように、回路データが格納される。ＦＰＧＡ１０１に展開する通常動作用回路を予めデータ処理回路１９０１と外部Ｉ／Ｆ回路１９０２の２つの処理回路に分割しておく。データ処理回路１９０１は入力されたデータの処理を行う。外部Ｉ／Ｆ回路１９０２は、ＡＣタイミングの遅延時間の調整が可能な回路を含む出力用Ｉ／Ｆとなっており、内部の構成に関しては後程、詳細な説明を行う。
【００８２】
回路データ制御部１０３は、回路データ格納部１０２とＦＰＧＡ１０１との回路データの受け渡しの制御を行う。回路データ制御部１０３内には、回路データ格納部１０２からの回路データをＦＰＧＡ１０１へ送信し、展開するための一連の制御を行うコンフィグレーション制御回路５１５が含まれている。ＩＣ・Ｄ１５０１は、データ処理用の半導体集積回路であり、入力端子からのデータ入力に従って、内部回路で所定の処理を行い、データ出力を行う。ＩＣ・Ｄ１５０１の内部構成に関する詳細については後述する。
【００８３】
ここで、図１１（ａ）を参照して、タイミング検証モードでのデータ処理システム１１００について説明する。タイミング検証モードでは、ＦＰＧＡ１０１とＩＣ・Ｄ１５０１との間のデータの受け渡しに最適なＦＰＧＡ１０１のクロックとデータの位相関係のタイミング検証を行い、遅延情報信号の出力をＣＰＵ１０８に行う。回路データ制御部１０３では、ＦＰＧＡ１０１に展開する回路データとして、回路データ格納部１０２から、タイミング検証用の回路データ１９０３を選択し、ＦＰＧＡ１０１に展開させる。
【００８４】
＜タイミング検証モード＞
図１２は、本実施形態におけるタイミング検証モードでのＦＰＧＡ１０１内に展開されたタイミング検証用回路、ＩＣ・Ｄ１５０１、及び、ＣＰＵ１０８内の構成を示す。ＰＬＬ５０１、１／１０分周回路５０２、出力データ用メモリ５０３、ＦＦ５０４、遅延調整部・Ａ５０５の内部構成や、動作に関しては、上記第１の実施形態と同様であるため詳細な説明については省略する。
【００８５】
ここでは、本実施形態の特徴となるＩＣ・Ｄ１５０１内の構成と動作に関して詳細な説明を行う。ＦＦ１７０１は、ＩＣ・Ｄ１５０１内でＦＰＧＡデータを受けるためのＦＦとなる。ＦＰＧＡ１０１から、ＣＬＫ＿１２５に同期して出力されるＦＰＧＡデータが、遅延時間を制御したＣＬＫ＿１２５Ｄのクロックに従って入力される。ＦＦ１７０１において、正しくデータを受け取るには、ＦＦ１７０１のセットアップ及び、ホールドの制約を満たした遅延時間でクロックとデータが入力される必要がある。ＦＰＧＡデータとＣＬＫ＿１２５Ｄの遅延時間によっては、ＦＦ１７０１によって正しくデータを受け取れる場合と、受け取れない場合が発生する。
【００８６】
論理回路１７０２は、ＩＣ・Ｄ１５０１内にあるデータ処理用の論理回路である。ＦＦ１７０１を介して、ＩＣ・Ｄ１５０１に入力されたデータは、論理回路１７０２にて所定の処理が行われた後、ＦＦ１７０４を介してＩＣ・Ｄ１５０１からＩＣ・Ｄデータとして出力される。
【００８７】
セレクタ・Ｄ１７０３は、ＩＣ・Ｄ１５０１からの出力信号となるＩＣ・Ｄデータの選択を行うセレクタである。セレクタ・Ｄ１７０３は、ＩＣ・Ｄ１５０１内で所定の処理を行ったデータの出力を行う通常モードと、処理を行わずにＩＣ・Ｄ１５０１が受けたデータをそのまま出力するスルーモードの２つのモードで出力信号を切り替える。セレクタ・Ｄ１７０３の選択信号は、スルーモード選択信号として、ＣＰＵ１０８から入力される。したがって、データ処理システムが通常モードの場合には、スルーモード選択信号も通常モードに、データ処理システムがタイミング検証モードの場合には、スルーモード選択信号はスル―モードに設定される。
【００８８】
検証データ受信部・Ａ５０８、受信データ格納メモリ５０９、データ比較部５１１、比較結果格納メモリ５１２、遅延情報解析部５１３、及び回路データ制御部１０３の内部構成や、動作に関しては、上記第１の実施形態と同様であるため説明を省略する。但し、本実施形態におけるデータ比較部５１１でのデータの比較は、出力データ用メモリ５０３内のデータと、そのデータがＩＣ・Ｄ１５０１をスルーモードで抜けてＦＰＧＡ１０１内に格納された受信データ格納メモリ内のデータとで行われる。よって、検証データ受信部・Ａ５０８では、ＩＣ・Ｄ１５０１のデータ入力部分と同様に、不図示のＦＦにてＩＣ・Ｄ１５０１からのデータを受けるだけの構成でよい。
【００８９】
また、本実施形態では、遅延情報信号格納部１５０３はＣＰＵ１０８に設けられ、ＦＰＧＡ１０１からの遅延情報信号はＣＰＵ１０８に入力される。ＣＰＵ１０８に格納された遅延情報信号は、通常動作時にＦＰＧＡ１０１に展開された外部Ｉ／Ｆ回路内の遅延量調整部・Ａ５０５に、遅延量制御信号として入力される。
【００９０】
＜通常モード＞
次に、図１６を参照して、通常モードにおける本データ処理システムの構成について説明する。ＦＰＧＡ１０１内は、通常動作用の回路として、データ処理回路１９０１と、外部Ｉ／Ｆ回路１９０２が展開される。外部Ｉ／Ｆ回路１９０２内は以下のように構成される。ＰＬＬ５０１は、外部からの遅い周波数のクロックを元に、ＦＰＧＡ１０１内部で使用する高周波数のクロックの生成を行う。本実施形態では、ＰＬＬ５０１から出力されるクロックは、１２５０ＭＨｚとする。１／１０分周回路５０２は、高周波数のクロックを１／１０の周波数に分周を行う回路であり、本実施形態では、ＰＬＬ５０１から入力を行った１２５０ＭＨｚのクロックの分周を行い、１２５ＭＨｚのクロックＣＬＫ＿１２５を出力する。ＦＦ５０４では、データ処理回路１９０１からの処理済データをＣＬＫ＿１２５によって出力させることで、１２５ＭＨｚ同期のデータ出力をＦＰＧＡ１０１から行う。
【００９１】
遅延調整部・Ａ５０５は、１／１０分周回路５０２からの１２５ＭＨｚのクロックＣＬＫ＿１２５と、ＰＬＬ５０１からの１２５０ＭＨｚのクロックが入力され、ＣＬＫ＿１２５に対して一定の遅延時間を付加したクロックＣＬＫ＿１２５Ｄの出力を行う。遅延調整部・Ａ５０５の内部構成や、生成されるクロックＣＬＫ＿１２５Ｄに関しては、上記第１の実施形態と同様であるため詳細な説明を省略する。
【００９２】
通常モードの動作としては、ＣＰＵ１０８の遅延情報信号格納部１５０３内に格納されている遅延情報信号を元に、Ｐｔ−０からＰｔ−９までのいずれかの遅延時間を持ったＣＬＫ＿１２５Ｄの出力を行う。これにより、タイミング検証動作時の解析によって設定された、最適なＡＣタイミングによって、ＩＣ・Ｄ１５０１とのデータの受け渡しが可能となる。
【００９３】
データ受信部・Ｄ２１０１は、ＩＣ・Ｄ１５０１のデータ入力部分と同様に、不図示のＦＦにてＩＣ・Ｄ１５０１からのデータを受けるだけの構成という。データ受信部・Ｄ２１０１によってＦＰＧＡ１０１内に入力されたデータは、データ処理回路１９０１へと入力され、所定のデータ処理が行われる。通常モードのＩＣ・Ｄ１５０１内は、ＣＰＵ１０８から出力されるスルーモード選択信号により、通常モードへと設定される。これにより、ＩＣ・Ｄ１５０１内の論理回路１７０２によって所定の処理が行われたデータが、ＦＦ１７０４を介してＩＣ・Ｄデータとして出力される。
【００９４】
ＣＰＵ１０８内には、ＦＰＧＡ１０１から入力された遅延情報信号を格納するための遅延情報信号格納部１５０３と本データ処理システム全体の制御を行うＣＰＵ−Ｃｏｒｅ１５０４が含まれている。また、本実施形態において、ＣＰＵ１０８内には、処理数カウンタ１５０２が含まれており、本データ処理システムが通常動作を行った回数のカウントを行う。処理数カウンタ１５０２が、所定の回数に到達した場合には、データ処理システムはタイミング検証モードに移行し、その時点での最適なＡＣタイミングの設定を再度実行し直してもよい。そして、遅延情報信号格納部１３０３内に格納された情報を元に、通常動作時にＦＰＧＡ１０１に展開すべき回路データの選択、ＦＰＧＡ１０１への展開を行い、通常動作状態へと移行する。
【００９５】
＜処理手順＞
次に、図１３を参照して、本実施形態における電源オン時からタイミング検証モードでの動作を行い、通常モードへ移行するまでの処理手順について説明する。以下で説明する処理は、ＣＰＵ１０８によって統括的に制御される。
【００９６】
Ｓ１８０１で、データ処理システム１１００に電源が投入される。続いてＳ１８０２で、データ処理システム１１００は、リセットが掛けられた状態から、ＣＰＵ１０８のブートアップが実行され、ＣＰＵ１０８が本データ処理システム１１００の制御可能状態となる。その後、Ｓ１８０３で、ＣＰＵ１０８によってシステム全体のリセットが解除される。
【００９７】
次に、Ｓ１８０４で、ＣＰＵ１０８は、回路データ格納部１０２に格納されているタイミング検証用回路データ１９０３をＦＰＧＡ１０１の展開用の回路データとして選択する。さらに、ＣＰＵ１０８は、選択した回路データを、回路データ制御部１０３からの回路データ制御信号に従って、ＦＰＧＡ１０１内へ展開する。続いて、Ｓ１８０５で、ＣＰＵ１０８は、ＩＣ・Ｄ１５０１内のセレクタ・Ｄ１７０３をスルーモードに設定し、ＩＣ・Ｄ１５０１に入力として取りこまれたデータがそのままＦＰＧＡ１０１へと出力されるように制御する。さらに、Ｓ１８０６で、ＣＰＵ１０８は、遅延量制御信号値を「０」、即ち「００００」に設定する。そして、図５（ｂ）のＰｔ−０の遅延時間によって、ＦＰＧＡデータとＣＬＫ＿１２５Ｄが出力され、Ｓ１８０７でＦＰＧＡ１０１とＩＣ・Ｂ１０５との間でのデータ受け渡しが行われる。
【００９８】
上述したように、ＦＰＧＡ１０１から出力されたデータは、ＩＣ・Ｄ１５０１内の論理回路１０７２をスル―した状態で、ＦＰＧＡ１０１に入力され、比較データとの比較が行われた後、Ｓ１８０８でその比較結果が比較結果格納メモリ５１２に格納される。Ｐｔ−０の遅延時間による比較結果が格納されたことを認識すると、Ｓ１８１０で、ＣＰＵ１０８は、遅延量制御信号値に対して「１」を加算し、遅延量制御信号値を「１」つまり「０００１」に設定し、処理をＳ１８０７に戻す。
【００９９】
そして、図５（ａ）のＰｔ−１の遅延時間によって、ＦＰＧＡデータとＣＬＫ＿１２５Ｄが出力され、Ｓ１８０７でＦＰＧＡ１０１とＩＣ・Ｂ１０５との間でのデータの受け渡しが行われる。上述したように、ＦＰＧＡ１０１から出力されたデータは、ＩＣ・Ｄ１５０１内の論理回路１０７２をスル―した状態で、ＦＰＧＡ１０１に入力され、比較データとの比較が行われた後、Ｓ１８０８でその比較結果が比較結果格納メモリ５１２に格納される。Ｓ１８０７からＳ１８１０のフローは繰り返され、遅延量制御信号値が「９」つまり「１００１」に設定された遅延時間での比較結果が格納されたことをＣＰＵ１０８が認識した時点でＳ１８１１に進む。
【０１００】
Ｓ１８１１で、遅延情報解析部５１３は、通常モードで使用する遅延時間の解析を行う。Ｓ１８１２で、遅延情報解析部５１３での判断結果が、遅延情報信号としてＣＰＵ１０８内の遅延情報信号格納部１５０３へと入力される。その後、Ｓ１８１３で、ＣＰＵ１０８は、ＦＰＧＡ１０１内に展開された回路の再構築の指示を出す。再構築の指示により、Ｓ１８１４で、ＣＰＵ１０８は、遅延情報信号格納部１５０３に格納された情報を元に、回路データ制御部１０３によって、通常動作用回路データをＦＰＧＡ１０１へ展開させる。このとき、Ｓ１８１５で、ＣＰＵ１０８は、ＩＣ・Ｄ１５０１内のセレクタ・Ｄ１７０３を通常処理モードに設定し、ＩＣ・Ｄ１５０１に入力として取りこまれたデータは論理回路１７０２にて所定の処理が実行され、ＦＰＧＡ１０１へと出力される。その後、本データ処理システム１１００は、Ｓ１８１６で通常動作状態へと移行する。通常処理動作に入った後、Ｓ１８１７でＣＰＵ１０８内の処理数カウンタ１５０２には「０」が設定され、Ｓ１８１８でデータ処理システムがデータ処理のジョブを受け付ける状態となる。
【０１０１】
Ｓ１８１９で、ＣＰＵ１０８は、データ処理の実行を受け付けたか否かを判定する。受け付けていない場合は、データ処理システム１１００は、常にデータ処理のジョブを受け付ける状態となる。ジョブを受け付けるとＳ１８２０に進み、ＣＰＵ１０８は、ＣＰＵ１０８内の処理数カウンタ１５０２の値に「＋１」を行った後に、Ｓ１８２１でデータ処理を実行する。データ処理の実行が完了すると、ＣＰＵ１０８内の処理数カウンタ１５０２の値を確認し、処理カウンタの値が１００に満たない場合はＳ１８１８に戻り、データ処理のジョブを受け付ける状態となる。一方、データ処理の実行が完了すると、ＣＰＵ１０８内の処理数カウンタ１５０２の値を確認する。そして、処理カウンタの値が１００となっていた場合は、Ｓ１８２３で、ＣＰＵ１０８は、ＦＰＧＡ１０１内に展開された回路の再構築の指示を出して処理をＳ１８０４に戻す。
【０１０２】
再構築の指示により、回路データ格納部１０２に格納されているタイミング検証用回路データがＦＰＧＡ１０１の展開用の回路データとして選択され、回路データ制御部１０３からの回路データ制御信号を元に、ＦＰＧＡ１０１内へ展開される。その後の処理は上述したＳ１８０４以降の処理が行われる。
【０１０３】
以上説明したように、本実施形態では、ＦＰＧＡ１０１に接続されたＩＣが通常処理モードとスルーモードの２つのモードで動作することができる。これにより、検証用データ受信部・Ａ５０８内の回路構成が簡単な入力のみでよく、比較データ格納メモリ５１０を持つ必要が無くなり、ＦＰＧＡ１０１内に余分なメモリ領域を持たなくてもよい。
【０１０４】
また、本実施形態では、通常動作用の回路として、ＡＣタイミング調整が設定可能な回路を用意することで、タイミング検証動作により、データの受け渡しに最適な遅延時間の認識を行い、その遅延時間を通常動作用の回路に設定する。これにより、通常動作時に確実なデータの受け渡しを行うことができる。また、本実施形態では、タイミング検証動作を本データ処理システムを組み込んだ製品の電源がオンされた時以外に、実際に動作を行っている間にも行うこととした。したがって、製品が使用されている時のＦＰＧＡやＩＣの発熱、製品内の温度なども考慮した、より正確な情報を元にＡＣタイミングの調整を行うことができる。
【０１０５】
＜第４の実施形態＞
以下では、本発明の第４の実施形態について説明する。上記実施形態では、ＦＰＧＡ１０１からのデータの出力タイミングを調整する制御について説明したが、本実施形態も含め以降の実施形態では、ＦＰＧＡ１０１に対するデータの入力タイミングの調整について説明する。なお、上記実施形態と同様の構成及び制御については、同一の番号を付し、詳細な説明を省略する。また、本実施形態において特徴となる構成の一部と、上記実施形態とを組み合わせて実現されてもよい。
【０１０６】
図１７（ａ）を参照して、本実施形態におけるＦＰＧＡ１０１を使用したデータ処理システムの全体構成について説明する。データ処理システム１７００は、通常動作を行う通常モードと、通常動作を行う前に、タイミング検証を行うタイミング検証モードの２つのモードで処理の内容を切り替えて使用する。通常モードでは、図１７（ｃ）に示すように、ＣＰＵ１０８からの制御によりＦＰＧＡ１０１内には、通常動作用の回路データが展開される。この場合、ＩＣ・Ｃ１０７から出力されるデータは、ＩＣ・Ｂ１０５、ＦＰＧＡ１０１へと順次受け渡され、データ処理が行われる。一方、タイミング検証モードでは、図１７（ｂ）に示すように、ＣＰＵ１０８からの制御によりＦＰＧＡ１０１内には、タイミング検証用の回路が展開される。この場合、ＩＣ・Ｃ１０７とＩＣ・Ｂ１０５とのデータ受け渡しは行われず、ＩＣ・Ｂ１０５からＦＰＧＡ１０１へのデータの入力に最適なＦＰＧＡ１０１のクロックとデータの位相関係のタイミング検証が行われる。
【０１０７】
ここで、図１７（ａ）を参照して、本実施形態の構成について上記実施形態と異なる構成について主に説明する。セレクタ１０６は、ＩＣ・Ｂ１０５に入力するセレクタデータを、ＩＣ・Ｃ１０７から送るか、ＦＰＧＡ１０１から送るかを、データ処理システム１７００全体の制御を行うＣＰＵ１０８の制御により、選択するセレクタとなる。
【０１０８】
図１７（ｂ）は、入力タイミング検証時のデータ処理システム１７００の全体構成を示す。入力タイミング検証時は、ＩＣ・Ｂ１０５からＦＰＧＡ１０１へのデータ入力に最適なＦＰＧＡ１０１内部のクロックとデータの位相関係のタイミング検証を行う。よって、ＩＣ・Ｂ１０５には、ＩＣ・Ｃ１０７からのデータ入力は行わず、セレクタ１０６の信号出力の選択は、ＦＰＧＡ１０１から出力されるＦＰＧＡデータをＩＣ・Ｂ１０５に入力する経路を選択する。回路データ制御部１０３では、ＦＰＧＡ１０１に展開する回路データとして、回路データ格納部１０２から、タイミング検証用回路データ２０２を選択し、ＦＰＧＡ１０１に展開させる。タイミング検証用回路データ２０２を展開したＦＰＧＡ１０１からは、ＩＣ・Ｂ１０５のデータ入力に関するＡＣタイミングを満たす形でのクロックとデータの位相関係で、ＦＰＧＡデータの出力を行う。ＦＰＧＡデータはセレクタ１０６を介して、ＩＣ・Ｂ１０５へと入力され、内部で所定の処理が行われた後、ＩＣ・Ｂデータとして出力される。
【０１０９】
ＦＰＧＡ１０１では、入力データとなるＩＣ・Ｂデータの入力タイミング検証を行うため、データを受けるＦＦに入力されるクロックとデータの位相が複数の異なるタイミングとなるように制御を行う。そして、各異なるタイミングごとにＩＣ・Ｂデータが正しくＦＰＧＡデータを受け取れているかを判断する。その判断結果から、ＩＣ・Ｂ１０５からＦＰＧＡ１０１間のデータの入力に最適なクロックとデータの位相関係を検出する。回路データ制御部１０３には、最適なクロックとデータの位相関係を実現する入力ＡＣタイミングにて作成した通常動作回路データを選択するように、遅延情報信号が入力され、それを格納する。
【０１１０】
＜入力タイミング検証＞
以下では、図１８を参照して、入力タイミング検証時の本データ処理システム１７００の動作の詳細について説明する。図１８における検証データ送信用回路３１８は、タイミング検証に使用するデータ出力をＦＰＧＡ１０１から行うための回路となっている。
【０１１１】
ＰＬＬ・Ａ３０１は、外部からの遅い周波数のクロックを元に、ＦＰＧＡ１０１内部で使用する高周波数のクロックの生成を行う。本実施形態では、ＰＬＬ・Ａ３０１から出力されるクロックＣＬＫ＿１２５は、１２５ＭＨｚとする。出力データ用メモリ３０２は、ＩＣ・Ｂ１０５へと出力を行うデータを格納するメモリであり、ＣＰＵ１０８の制御により、ＣＬＫ＿１２５に同期して出力用のデータをＦＦ３０３へと出力する。ＦＦ３０３では、出力データ用メモリ３０２からの出力用データをＣＬＫ＿１２５によって出力させることで、１２５ＭＨｚ同期のデータ出力をＦＰＧＡ１０１から行う。遅延調整部・Ａ３０４は、クロック遅延用バッファ等を使用して入力されたＣＬＫ＿１２５を所定の時間遅延させたクロックとなるＣＬＫ＿１２５Ｄの出力を行う。その遅延時間は、ＦＰＧＡデータとＦＰＧＡクロックの位相関係が、ＩＣ・Ｂ１０５のデータ入力に関するＡＣタイミングを満たす関係となるように調整される。
【０１１２】
セレクタ１０６は、ＣＰＵ１０８の制御により、ＩＣ・Ｃ１０７からのＩＣ・Ｃデータ及びＩＣ・Ｃクロックの入力と、ＦＰＧＡ１０１からのＦＰＧＡデータ及びＦＰＧＡクロックの入力を行い、どちらかの信号を選択し、ＩＣ・Ｂ１０５へと出力を行う。入力タイミング検証時には、ＦＰＧＡ１０１からのＦＰＧＡデータ及びＦＰＧＡクロックを選択し、セレクタデータ及びセレクタクロックとして出力する。
【０１１３】
ＩＣ・Ｂ１０５では、セレクタ１０６からのセレクタデータ及びセレクタクロックの入力を行い、所定の処理を行いＩＣ・Ｂデータ及びＩＣ・Ｂクロックとして出力を行う。入力タイミング検証時には、セレクタ１０６からはＦＰＧＡデータ及びＦＰＧＡクロックの入力が行われる。ＩＣ・Ｂ１０５では、ＦＦ３０５によってセレクタクロックによって、セレクタデータの入力を受ける。本実施形態では、セレクタクロックはＦＰＧＡクロックとして入力されるＣＬＫ＿１２５Ｄである。ＦＦ３０５におけるセットアップ、ホールドの規定に関しては、先に説明を行った遅延量調整部・Ａ３０４にてデータに対するクロックの位相調整が行われる。
【０１１４】
ＦＦ３０５にて入力されたデータは、論理回路３０６によって所定の処理が実行され、ＦＦ３０７によってＩＣ・Ｂデータとして出力される。その場合、ＩＣ・Ｂデータの同期クロックであるＩＣ・Ｂクロックは、セレクタクロックとして入力されるＣＬＫ＿１２５Ｄである。よって、ＦＦ３０７で使用するクロックは、セレクタクロックとして入力されるＣＬＫ＿１２５Ｄである。また、本実施形態においては、ＩＣ・Ｂ１０５から出力されるＩＣ・ＢクロックとＩＣ・Ｂデータは、エッジの位相が揃った状態で出力される。ＩＣ・Ｂ１０５から出力されたＩＣ・Ｂデータは、ＦＰＧＡ１０１内部のＦＦ３１０によってＩＣ・Ｂクロック同期として受けられる。
【０１１５】
ＰＬＬ・Ｂ３０８は、ＦＰＧＡ１０１に入力されたＩＣ・Ｂクロックを元に、遅延量調整部・Ｂ３０９で使用する高周波数のクロックの生成を行う。本実施形態では、ＰＬＬ・Ｂ３０８から出力されるクロックＣＬＫ＿１２５０は、ＩＣ・Ｂクロックとして入力されたＣＬＫ＿１２５Ｄの１０倍の周波数となる１２５０ＭＨｚとする。遅延量調整部・Ｂ３０９には、ＩＣ・Ｂクロックとして入力された１２５ＭＨｚのクロックであるＣＬＫ＿１２５Ｄと、ＰＬＬ・Ｂ３０８からの１２５０ＭＨｚのクロックが入力される。その後、遅延量調整部・Ｂ３０９は、１２５ＭＨｚのクロックであるＣＬＫ＿１２５Ｄに対して、一定の遅延時間を付加したクロックであるＣＬＫ＿１２５ＤＤの出力を行う。
【０１１６】
本実施形態における遅延調整部・Ｂ３０９の内部回路の構成は、上記実施形態において説明した図５（ａ）の構成と同様である、その動作も図５（ｂ）と同様であるため説明を省略する。
【０１１７】
入力タイミング検証時の動作としては、ＣＰＵ１０８によって、ＣＬＫ＿１２５ＤＤの出力を順次、Ｐｔ−０からＰｔ−９まで段階的に変えて行く。受信データ格納メモリ３１１は、ＦＦ３１０によってＩＣ・Ｂ１０５から受け取ったＩＣ・Ｂデータを順次格納して行く為のメモリとなる。受信データ格納メモリ３１１には、前記各段階毎にＦＦ３１０によってＩＣ・Ｂ１０５から受け取ったＩＣ・Ｂデータを格納される。
【０１１８】
ＦＦ３１０は、ＦＰＧＡ１０１内にあるＩＣ・Ｂデータを受ける為のＦＦとなる。ＩＣ・Ｂ１０５から、ＣＬＫ＿１２５Ｄ同期で出力されるＩＣ・Ｂデータが、遅延時間を制御したＣＬＫ＿１２５ＤＤのクロックに従って入力される。ＦＦ３１０において、正しくデータを受け取るには、ＦＦ３１０のセットアップ及び、ホールドの制約を満たした遅延時間でクロックとデータが入力される必要がある。ＩＣ・ＢデータとＣＬＫ＿１２５ＤＤの遅延時間によっては、ＦＦ３１０が正しくデータを受け取れる場合と、受け取れない場合が発生する。
【０１１９】
比較データ格納メモリ３１２は、ＩＣ・Ｂ１０５から出力される、論理回路３０６によるデータ処理後のＩＣ・Ｂデータが、ＩＣ・Ｂ１０５からＦＰＧＡ１０１へと正しく送られたか否かを判断する為のデータを格納する。実施例においては、出力データ用メモリ３０２から出力されたデータが、ＩＣ・Ｂ１０５論理回路３０６によって所定の処理が行われた場合のデータを格納しておく。
【０１２０】
データ比較部３１３は、受信データ格納メモリ３１１と比較データ格納メモリ３１２から順次データの入力を行い、それぞれのデータが同じか否かの比較を行う。全てのデータ一致している場合には、ＩＣ・Ｂ１０５からＦＰＧＡ１０１へとデータ入力が正しく行われたこととなり、不一致のデータがある場合には、ＩＣ・Ｂ１０５からＦＰＧＡ１０１へとデータ入力が正しく行われていなかったことを示す。
【０１２１】
データの比較結果は、比較結果格納メモリ３１４内に格納される。上述したように、入力タイミング検証時の動作としては、ＣＰＵ１０８によって、ＣＬＫ＿１２５ＤＤの出力を順次、Ｐｔ−０からＰｔ−９まで段階的に変えて行く。その各段階毎に、出力データ用メモリ３０２に格納されているデータが、ＩＣ・Ｂ１０５によって所定の処理が行われる。よって、データ処理後のＩＣ・ＢデータもＰｔ−０からＰｔ−９までの各段階毎にＦＰＧＡ１０１へと入力され、比較データ格納メモリ３１２内のデータと比較される。
よって、比較結果に関してもＰｔ−０からＰｔ−９までの各段階毎に比較結果格納メモリ３１４に格納される。
【０１２２】
遅延情報解析部３１５では、Ｐｔ−０からＰｔ−９までのデータの比較結果から、ＩＣ・Ｂ１０５からＦＰＧＡ１０１へとデータ入力を行うにあたり、最適となるＩＣ・ＢデータとＣＬＫ＿１２５ＤＤの遅延差の検出を行う。さらに検出した遅延差を用いて、通常動作時にＦＰＧＡ１０１内に展開する回路データの選択を行う。
【０１２３】
具体的な方法を、図５（ｂ）を用いて説明する。なお、ここでは上記実施形態と異なる部分について主に説明する。Ｐｔ−０からＰｔ−９まで遅延時間を変化させてＦＰＧＡ１０１からのデータ出力、ＩＣ・Ｂ１０５での処理、処理データの比較を順次行い、比較結果の一致、不一致の情報を比較結果格納メモリ３１４に格納する。全ての遅延時間のパターンが完了した時点で、遅延情報解析部３１５は比較結果格納メモリ３１４から全てのパターンの比較結果の入力を行う。その結果が、図５（ｂ）のようにＰｔ−０、Ｐｔ−１の場合「不一致」、Ｐｔ−２からＰｔ−６で「一致」、Ｐｔ−７からＰｔ−９で「不一致」となっていた場合を想定する。この場合、Ｐｔ−４の遅延時間がＩＣ・Ｂデータを入力する際の最も大きなマージンを確保したうえで、正しいデータ入力が可能なＩＣ・ＢデータとＣＬＫ＿１２５ＤＤの遅延差であると判断する。
【０１２４】
回路データ格納部１０２に格納された回路データは、図３に示すＰｔ−０からＰｔ−９の各通常動作用回路データが、Ｐｔ−０からＰｔ−９の各遅延時間の設定によって生成された回路データとなっている。よって、Ｐｔ−４の遅延時間でＩＣ・Ｂ１０５からＦＰＧＡ１０１へとデータ入力を行う場合が、一番マージンを確保した上で正しい受け渡しが可能となると判断した場合、Ｐｔ−４の通常動作用回路データを通常モードでＦＰＧＡ１０１へと展開させる。遅延情報解析部３１５での判断結果は、遅延情報信号として回路データ制御部１０３へと入力される。
【０１２５】
回路データ制御部１０３の内部構成については、図４で説明した構成と同様であるため説明を省略する。また、入力タイミング検証時の処理手順についても、図６で説明した処理手順と同様であるため説明を省略する。
【０１２６】
以上説明したように、本実施形態におけるデータ処理システム１７００では、回路データ格納部１０２に、クロックとデータの位相に関して、複数段階にずらしたＡＣタイミング設定により生成された通常動作回路データを格納しておく。また、回路データ格納部１０２には、回路データ以外に、接続チップとのデータの受け渡しを行う為に最適なクロックとデータの位相を検出する為の検出回路データが格納しておく。ＦＰＧＡ１０１にて通常動作を行う前に、タイミング検出回路データをＦＰＧＡ１０１内に展開し、最大のマージンを持って、正しく信号の受け渡しが可能となるタイミング情報の検出を行い、その検出結果を回路データ制御部１０３に格納する。
【０１２７】
通常モードでは、検出結果を元に、予め用意しておいた複数のＡＣタイミングの通常動作用回路から、信号の受け渡しに最適なＡＣタイミング設定となっている回路を選択し、ＦＰＧＡに展開を行う。これにより、ＦＰＧＡ１０１に展開を行う通常動作時の回路にＡＣタイミング調整用の回路を付加する必要が無くなる。それによって通常動作時にＦＰＧＡ１０１内に展開する規模や、ＰＬＬ、ＤＬＬ等の機能モジュールの使用個数等に影響を与えることなく、接続チップに対して最適なＡＣタイミングでのクロック、データの出力を行うことが可能となる。
【０１２８】
＜第５の実施形態＞
次に、本発明の第５の実施形態について説明する。上記第４の実施形態では、図１８に示すように、ＦＰＧＡ１０１内に検証データ送信用回路３１８を有し、その中の出力データ用メモリ３０２に格納されたデータをＩＣ・Ｂ１０５に出力することにより、入力タイミング検証動作を実行していた。本実施形態では、通常動作においてＩＣ・Ｂ１０５にデータの入力を行うＩＣ・Ｃ１０７に、ある特定のパターンのデータ出力を行うことが可能なＰａｔｔｅｒｎＧｅｎｅｒａｔｏｒ（以下、ＰＧ回路と称する。）を設けた場合について説明する。なお、本実施形態において特徴となる構成の一部と、上記実施形態とを組み合わせて実現されてもよい。
【０１２９】
この場合、図１８に示すような、ＦＰＧＡ１０１内に検証データ送信用回路３１８を設ける必要がなくなる。上記第４の実施形態では、図３に示すように、回路データ格納部１０２には、ＡＣタイミングの設定の異なる複数種類の通常動作用の回路データを通常動作用の回路データとして格納していた。しかし、回路データ格納部１０２は通常ＲＯＭ等の不揮発性メモリを使用することとなり、そのメモリ容量に制限がある。よって、格納するデータ量が大きな場合は、より大きな容量のメモリを使用したり、複数のメモリを使用するなど、製品としてのコストアップに繋がる。また、上記第４の実施形態では、タイミング検証動作を本データ処理システムを組み込んだ製品を出荷する際に工場等で行い、以降は行わない実施例について説明した。しかし、製品が使用される環境は、気温や供給される電圧など、ＡＣタイミングを変化させる要因が、製品を製造する場所とは異なることが考えられる。
【０１３０】
そこで、本実施形態では、回路データ格納部１０２に格納する回路データの削減と、より正確な情報を元にＡＣタイミングの調整を行うことができる構成について説明する。なお、上記第４の実施形態と同様の構成、及び同様の機能のモジュールや信号に関しては、上記第４の実施形態と同一の番号を付して、詳細な説明を省略する。
【０１３１】
図１９は、本実施形態におけるＦＰＧＡ１０１を使用したデータ処理システム１９００の全体構成例を示す。図１９（ａ）に示すデータ処理システム１９００は、通常動作を行う通常モードと、通常動作を行う前に、タイミング検証を行うタイミング検証モードの２つのモードで処理の内容を切り替えて使用する。通常モードでは、図１９（ｂ）に示すように、ＣＰＵ１０８からの制御によりＦＰＧＡ１０１内には、通常動作用の回路データが展開される。この場合、ＩＣ・Ｃ１０７から出力されるデータが、ＩＣ・Ｂ１０５、ＦＰＧＡ１０１と順次受け渡され、所定のデータ処理が行われる。入力タイミング検証時には、図１９（ｃ）に示すように、ＣＰＵ１０８からの制御によりＦＰＧＡ１０１内には、タイミング検証用の回路が展開される。ＩＣ・Ｃ１０７内のＰＧ回路９０１から出力されるデータを使用して、ＩＣ・Ｂ１０５からＦＰＧＡ１０１へとデータの入力を行うために最適なクロックとデータの位相関係のタイミング検証を行う。なお、本実施形態においては、回路データ格納部１０２に格納される回路データと、ＦＰＧＡ１０１に展開される回路データは、上記実施形態で説明した図９のものと同様であるため説明を省略する。
【０１３２】
ＩＣ・Ｂ１０５、及びＩＣ・Ｃ１０７は、データ処理用の半導体集積回路であり、入力端子からのデータ入力を行い、内部回路で所定の処理を行い、データ出力を行う。また、本実施形態においては、ＩＣ・Ｃ１０７内にある特定のパターンのデータ出力を行うことが可能なＰＧ回路を持っており、入力タイミング検証時にはＣＰＵ１０８の指示に従って、予め決められたタイミング検証用のデータの出力を行う。
【０１３３】
＜入力タイミング検証＞
次に、図９を参照して、本実施形態における入力タイミング検証時のＦＰＧＡ１０１内に展開されたタイミング検証用回路の構成、ＩＣ・Ｂ１０５、及びＩＣ・Ｃ１０７の各ＩＣ内の構成について説明する。入力タイミング検証時のデータ処理システム全体の動作に関しては、上記第４の実施形態と同様に、ＦＰＧＡ１０１内にタイミング検証用の回路データを展開し、ＩＣ・Ｂ１０５からのデータ入力を行うため、詳細な説明は省略する。
【０１３４】
ＩＣ・Ｃ１０７内には、ＰＬＬ・Ｃ９０２が含まれる。ＩＣ・Ｃ１０７内の各回路を動作させるためのクロックとして１２５ＭＨｚの周波数のＣＬＫ＿１２５Ｃの出力を行うＩＣ・Ｃ１０７には、図２０に示すように、通常動作時に各種データ処理を行うための論理回路９０６が含まれる。またＩＣ・Ｃ１０７内には、ある特定のパターンのデータ出力を行うことが可能なＰＧ回路９０１が設けられる。セレクタ９０７は、論理回路９０６とＰＧ回路９０１からの出力データのいずれをＩＣ・Ｃデータとして出力するかを、ＣＰＵ１０８の指示に従って選択する。入力タイミング検証時には、ＰＧ回路９０１からのデータの出力を選択、通常動作時には論理回路９０６からのデータの出力を選択する。
【０１３５】
ＦＦ９０３は、ＩＣ・Ｃ１０７からＩＣ・Ｂ１０５へとデータの出力を行うＦＦである。ＦＦ９０３から出力されたデータはＩＣ・Ｃデータとして、ＩＣ・Ｂ１０５へと入力されていく。ＦＦ９０３へ入力されているクロックはＰＬＬ・Ｃ９０２から出力された１２５ＭＨｚの周波数のＣＬＫ＿１２５Ｃとする。ＣＬＫ＿１２５Ｃは、ＩＣ・Ｃデータの同期クロックとしてＩＣ・ＣデータとともにＩＣ・Ｃ１０７からＩＣ・Ｃクロックとして出力される。
【０１３６】
ＩＣ・Ｂ１０５では、ＦＦ３０５にてＩＣ・Ｃクロックによって、ＩＣ・Ｃデータの入力を受ける。本実施形態では、ＩＣ・ＣクロックはＰＬＬ・Ｃ９０２から出力されるＣＬＫ＿１２５Ｃである。ＦＦ３０５におけるセットアップ、ホールドの規定に関しては、ＩＣ・Ｃ１０７内においてクロック遅延用バッファ等を使用して、ＦＦ３０５におけるセットアップ及びホールドのタイミング制約を満たせるようにクロックの位相調整が行われる。
【０１３７】
以降、ＩＣ・Ｂ１０５内の構成やデータ処理及び、ＩＣ・Ｂ１０５からのＩＣ・Ｂデータ及び、ＩＣ・Ｂクロックの出力に関しては、第１の実施形態と同じということで、本実施形態における詳細な説明は省略する。
【０１３８】
ＩＣ・Ｂ１０５からＩＣ・Ｂクロックとのエッジがそろった状態で出力されたＩＣ・Ｂデータは、ＦＰＧＡ１０１内部のＦＦ３１０によってＩＣ・Ｂクロック同期として受けられる。
【０１３９】
ＰＬＬ・Ｂ３０８は、ＦＰＧＡ１０１に入力されたＩＣ・Ｂクロックを元に、遅延量調整部・Ｂ３０９で使用する高周波数のクロックの生成を行う。本実施形態では、ＰＬＬ・Ｂ３０８から出力されるクロックＣＬＫ＿１２５０Ｂは、ＩＣ・Ｂクロックとして入力されたＣＬＫ＿１２５Ｃの１０倍の周波数となる１２５０ＭＨｚとする。遅延量調整部・Ｂ３０９には、ＩＣ・Ｂクロックとして入力された１２５ＭＨｚのクロックであるＣＬＫ＿１２５Ｃと、ＰＬＬ・Ｂ３０８からの１２５０ＭＨｚのクロックが入力される。さらに、遅延量調整部・Ｂ３０９は、１２５ＭＨｚのクロックであるＣＬＫ＿１２５Ｃに対して、一定の遅延時間を付加したクロックであるＣＬＫ＿１２５ＣＤの出力を行う。本実施形態における遅延調整部・Ｂ３０９の内部回路及び動作に関しては、上記第４の実施形態と同様であるため詳細な説明は省略する。
【０１４０】
遅延量制御信号は、ＣＰＵ１０８から出力される信号であり、具体的には、４ビットのデータが、「００００」の場合はＰｔ−０のクロックをＣＬＫ＿１２５ＣＤとして選択し、「０００１」の場合はＰｔ−１のクロックをＣＬＫ＿１２５ＣＤとして選択する。また、「００１０」の場合はＰｔ−２のクロックをＣＬＫ＿１２５ＣＤとして選択し、「００１１」の場合はＰｔ−３のクロックをＣＬＫ＿１２５ＣＤとして選択する。さらに、「０１００」の場合はＰｔ−４のクロックをＣＬＫ＿１２５ＣＤとして選択し、「０１０１」の場合はＰｔ−５のクロックをＣＬＫ＿１２５ＣＤとして選択し、「０１１０」の場合はＰｔ−６のクロックをＣＬＫ＿１２５ＣＤとして選択する。「０１１１」の場合はＰｔ−７のクロックをＣＬＫ＿１２５ＣＤとして選択し、「１０００」の場合はＰｔ−８のクロックをＣＬＫ＿１２５ＣＤとして選択し、「１００１」の場合はＰｔ−９のクロックをＣＬＫ＿１２５ＣＤとして選択する。これにより、ＦＦ５１０ではＩＣ・Ｂデータに対して、１０段階の遅延時間のついたＣＬＫ＿１２５ＣＤを選択的に入力が可能となる。
【０１４１】
図９に示す回路データ格納部１０２には、ＩＣ・Ｂ１０５からのデータ入力に関して、入力のＡＣタイミングの設定の異なる複数種類の通常動作時に使用する外部Ｉ／Ｆ入力回路用の回路データ（Ｐｔ−０（１２０５）からＰｔ−９（１２０８））が格納される。各回路データのＡＣタイミングの設定は、１０種類の遅延時間の異なる１２５ＭＨｚのクロック信号（Ｐｔ−０からＰｔ−９に対応している。つまり、通常動作用の回路データのＰｔ−０（１２０５）は、図１５（ａ）に示すように、Ｐｔ−０のクロックをＣＬＫ＿１２５ＣＤとして選択した場合の入力ＡＣタイミング設定となっている。同様に、通常動作用の回路データのＰｔ−１（１２０６）は、図１５（ｂ）に示すように、Ｐｔ−１のクロックをＣＬＫ＿１２５ＣＤとして選択した場合の入力ＡＣタイミング設定となっている。Ｐｔ−９（１２０８）は、図１５（ｃ）に示すように、Ｐｔ−９のクロックをＣＬＫ＿１２５ＣＤとして選択した場合の入力ＡＣタイミング設定となっている。
【０１４２】
入力タイミング検証時の動作としては、ＣＰＵ１０８によって、ＣＬＫ＿１２５ＣＤの出力を順次、Ｐｔ−０からＰｔ−９まで段階的に変えて行く。受信データ格納メモリ３１１は、ＦＦ３１０によってＩＣ・Ｂ１０５から受け取ったＩＣ・Ｂデータを順次格納して行くためのメモリとなる。受信データ格納メモリ３１１には、各段階毎にＦＦ３１０によってＩＣ・Ｂ１０５から受け取ったＩＣ・Ｂデータが格納される。
【０１４３】
ＦＦ３１０は、ＦＰＧＡ１０１内にあるＩＣ・Ｂデータを受けるためのＦＦとなる。ＩＣ・Ｂ１０５から、ＣＬＫ＿１２５Ｃ同期で出力されるＩＣ・Ｂデータが、遅延時間を制御したＣＬＫ＿１２５ＣＤのクロックに従って入力される。ＦＦ３１０において、正しくデータを受け取るには、ＦＦ３１０のセットアップ及び、ホールドの制約を満たした遅延時間でクロックとデータが入力される必要がある。ＩＣ・ＢデータとＣＬＫ＿１２５ＣＤの遅延時間によっては、ＦＦ３１０が正しくデータを受け取れる場合と、受け取れない場合が発生する。
【０１４４】
比較データ格納メモリ３１２は、ＩＣ・Ｂ１０５から出力される、論理回路３０６によるデータ処理後のＩＣ・Ｂデータが、ＩＣ・Ｂ１０５からＦＰＧＡ１０１へと正しく渡されたか否かを判断するためのデータを格納する。本実施形態においては、ＩＣ・Ｃ１０７内のＰＧ回路９０１から出力されたデータが、ＩＣ・Ｂ１０５論理回路３０６によって所定の処理が行われた場合のデータ（理想データ）を格納しておく。
【０１４５】
データ比較部３１３は、受信データ格納メモリ３１１と比較データ格納メモリ３１２から順次データの入力を行い、それぞれのデータが同じか否かを比較する。全てのデータ一致している場合には、ＩＣ・Ｂ１０５からＦＰＧＡ１０１へとデータ入力が正しく行われたこととなり、不一致のデータがある場合には、ＩＣ・Ｂ１０５からＦＰＧＡ１０１へとデータ入力が正しく行われていなかったことを示す。
【０１４６】
データの比較結果は、比較結果格納メモリ３１４内に格納される。上述したように、入力タイミング検証時の動作としては、ＣＰＵ１０８によって、ＣＬＫ＿１２５ＣＤの出力を順次、Ｐｔ−０からＰｔ−９まで段階的に変えて行く。その各段階毎に、ＩＣ・Ｃ１０７内のＰＧ回路９０１から出力されたデータが、ＩＣ・Ｂ１０５によって所定の処理が行われる。よって、データ処理後のＩＣ・ＢデータもＰｔ−０からＰｔ−９までの各段階毎にＦＰＧＡ１０１へと入力され、比較データ格納メモリ３１２内のデータと比較される。よって、比較結果に関してもＰｔ−０からＰｔ−９までの各段階毎に比較結果格納メモリ３１４に格納される。
【０１４７】
遅延情報解析部３１５では、Ｐｔ−０からＰｔ−９までのデータの比較結果から、ＩＣ・Ｂ１０５からＦＰＧＡ１０１へとデータ入力を行うにあたり、最適となるＩＣ・ＢデータとＣＬＫ＿１２５ＣＤの遅延差の検出を行う。当該検出結果から通常動作時にＦＰＧＡ１０１内に展開する回路データの選択を行う。具体的な方法に関しては、上記第４の実施形態と同様の方法であるため、ここでの詳細な説明は省略する。
【０１４８】
遅延情報解析部３１５での判断結果は、遅延情報信号としてＣＰＵ１０８へと入力される。本実施形態では、外部Ｉ／Ｆ入力用回路データとして選択すべき回路データが１０種類となるので、４ビットのデータとして回路データ制御部１０３へ入力される。遅延情報信号が「００００」の場合はＰｔ−０の外部Ｉ／Ｆ入力用回路データを選択され、その時のクロックとデータは、図１５（ａ）に示すように、ＩＣ・ＢデータとＣＬＫ＿１２５ＣＤの遅延差が０ｎｓｅｃでの出力タイミングとなる。また、遅延情報信号が「０００１」の場合はＰｔ−１の外部Ｉ／Ｆ入力用回路データを選択され、その時のクロックとデータは、図１５（ｂ）に示すように、ＩＣ・ＢデータとＣＬＫ＿１２５ＣＤの遅延差が０．８ｎｓｅｃでの出力タイミングとなる。遅延情報信号が「１００１」の場合はＰｔ−９の外部Ｉ／Ｆ入力用回路データを選択され、その時のＩＣ・ＢデータとＣＬＫ＿１２５ＣＤの遅延差は、図１５（ｃ）に示すように、遅延差が７．２ｎｓｅｃでの出力タイミングとなる。
【０１４９】
ここで、図２０を参照して、本実施形態において、回路データ制御を行うＣＰＵ１０８の内部構成について説明する。ＣＰＵ１０８内には、ＦＰＧＡ１０１から入力された遅延情報信号を格納する為の遅延情報信号格納部９０４と本データ処理システム１７００全体の制御を行うＣＰＵ−Ｃｏｒｅ９０５が含まれる。そして、本実施形態においては、ＣＰＵ−Ｃｏｒｅ９０５により、ＦＰＧＡ１０１に対して、回路データ格納部１０２からの回路データを送信、展開するための一連の制御が実行される。さらに、ＣＰＵ−Ｃｏｒｅ９０５は、遅延情報信号格納部９０４内に格納された情報を元に、通常モードでＦＰＧＡ１０１に展開すべき回路データの選択、ＦＰＧＡ１０１への展開を行い、通常動作状態へと移行する。
【０１５０】
本実施形態の処理手順については、図６を用いて説明した処理手順と同様であるため説明を省略する。但し、図６のＳ８０４の判定は本実施形態においては行わず、電源オン時に毎回タイミング検証の動作を行う。これにより、製品が使用される環境における気温や供給される電圧など、ＡＣタイミングを変化させる要因が入力タイミング検証時に考慮することができ、より正確な情報を元にＡＣタイミングの調整を行うことができる。
【０１５１】
以上説明したように、本第２の実施形態では、通常動作においてＩＣ・Ｂ１０５にデータの入力を行うＩＣ・Ｃ１０７内に、ある特定のパターンのデータ出力を行うことが可能なＰＧ回路９０１から、タイミング検証用のデータ出力を行う構成の例を挙げた。この場合、ＦＰＧＡ１０１内に検証データ送信用回路３１８を持つ必要がなくなる。また、ＦＰＧＡ、回路データ格納部、回路データ制御部を含んだデータ処理システムに置いて、回路データ格納部に、クロックとデータの位相に関して、複数段階にずらしたＡＣタイミング設定により生成された通常動作回路データを格納しておくこととした。また、本実施形態では、図９に示すように、回路データ格納部１０２には、通常動作用の回路データとして、データ処理用回路データと、ＡＣタイミングの設定の異なる複数種類の外部Ｉ／Ｆ回路用データを格納しておく。したがって、ＦＰＧＡ１０１の部分書き換え機能を使用することで、回路データ格納部１０２に格納する回路データを削減することとした。また、電源オン時に毎回タイミング検証の動作を行うことで、製品が使用される環境における気温や供給される電圧など、ＡＣタイミングを変化させる要因が入力タイミング検証時に考慮され、より正確な情報を元にＡＣタイミングの調整を行うことができる。
【０１５２】
＜第６の実施形態＞
以下では、本発明の第６の実施形態について説明する。上記第４及び第５の実施形態では、ＩＣ・Ｃ１０７からＩＣ・Ｂ１０５、ＦＰＧＡ１０１へとデータの受け渡しが行われる構成での実施例を示した。一方、本実施形態では、図２１（ａ）で示すような、ＦＰＧＡ１０１とＩＣ・Ｄ１００１との間でのデータの受け渡しが行われる構成において、入力タイミング検証及び出力タイミング検証の両方を実行する実施例を示す。即ち、本実施形態は、出力タイミング検証を行う上記第１乃至第３の実施形態と、入力タイミング検証を行う上記第４及び第５の実施形態との組み合わせとなる。なお、本実施形態において特徴となる構成の一部と、上記実施形態とを組み合わせて実現されてもよい。
【０１５３】
上記第４の実施形態では、タイミング検証動作を本データ処理システムを組み込んだ製品を出荷する際に工場等で行い、それ以降は行わない例を挙げた。また、上記第５の実施形態では、タイミング検証動作を本データ処理システムを組み込んだ製品の電源がオンされる毎に行うこととして、製品が使用される環境の気温や供給される電圧など、より正確な情報を元にＡＣタイミングの調整を行う例を挙げた。一方、本実施形態では、タイミング検証動作を本データ処理システムを組み込んだ製品の電源がオンされた時以外に、実際に動作を行っている間にも行うこととし、製品が使用されている時のＦＰＧＡやＩＣの発熱、製品内の温度なども考慮する。これにより、より正確な情報を元にＡＣタイミングの調整を行うことができる。但し、上記第４及び第５の実施形態と同様の構成、同様の機能のモジュールや信号に関しては、同一の番号を付し詳細な説明は省略する。
【０１５４】
図２１（ａ）は、本実施形態におけるＦＰＧＡ１０１を使用したデータ処理システム２１００の全体構成を示す。本実施形態における動作は、通常のデータ処理を行う通常モードと、ＩＣ・Ｄ１００１から出力されたＩＣ・ＤデータをＦＰＧＡ１０１にて入力する時の入力タイミング検証を行う入力タイミング検証モードとを有する。さらに、本実施形態では、ＦＰＧＡ１０１から出力されたＦＰＧＡデータをＩＣ・Ｄ１００１にて入力する時の出力タイミング検証を行う出力タイミング検証モードの３つの動作を設ける。本実施形態では、入力タイミング検証動作、出力タイミング検証動作の順番でタイミング検証を行い、その結果を使用して通常動作時に使用する外部Ｉ／Ｆ回路の選択を行う。
【０１５５】
入力タイミング検証モードでは、図２１（ｂ）に示すように、ＣＰＵ１０８からの制御によりＦＰＧＡ１０１内には、タイミング検証用の回路が展開される。この場合、ＣＰＵ１０８から出力される入力遅延量制御信号による制御により、ＩＣ・Ｄ１００１からＦＰＧＡ１０１へのデータ入力時の最適なＦＰＧＡ１０１のクロックとデータの位相関係のタイミング検証が行われる。そして、タイミング検証の結果からデータ入力に関する遅延情報信号の出力がＣＰＵ１０８によって行われる。
【０１５６】
出力タイミング検証モードでは、図２２（ａ）に示すように、ＣＰＵ１０８からの制御によりＦＰＧＡ１０１内には、タイミング検証用の回路が展開される。この場合、ＣＰＵ１０８から出力される出力遅延量制御信号による制御により、ＦＰＧＡ１０１からＩＣ・Ｄ１００１へのデータ出力時の最適なクロックとデータの位相関係のタイミング検証が行われる。そして、タイミング検証の結果からデータ出力に関する遅延情報信号の出力がＣＰＵ１０８によって行われる。この時、ＩＣ・Ｄデータの入力部分のＡＣタイミングは、先に実行した入力タイミング検証によって最適と判断された入力データと入力クロックの位相関係となるように遅延量制御信号が出力されている。
【０１５７】
通常動作時には、図２２（ｂ）に示すように、ＣＰＵ１０８からの制御によりＦＰＧＡ１０１内には、通常動作用の回路データが展開され、ＦＰＧＡ１０１とＩＣ・Ｄ１００１との間でのデータの受け渡しを行いつつ、データ処理を行う。この時、ＦＰＧＡ１０１内に展開される回路のＡＣタイミングは、入力タイミング検証、及び出力タイミング検証において、それぞれ最適と判断されたタイミングの外部Ｉ／Ｆ回路用データが展開される。
【０１５８】
図２１（ａ）に示すデータ処理システム２１００の各構成要素について、既に説明したものについては説明を省略する。本実施形態では、ＣＰＵ１０８内に処理数カウンタ１００４をさらに備え、通常モードで本データ処理システム２１００が何回処理を実行したかをカウントすることができる。そして、処理数カウンタ１００４の値がある設定値に到達すると、タイミング検証動作を実行する。また、本実施形態によれば、ＣＰＵ１０８は、さらに遅延情報信号格納部１００２も備え、タイミング検証モードでＦＰＧＡ１０１から出力される遅延情報信号を格納し、当該情報を元に通常モードで展開する回路を選択する。
【０１５９】
また、本実施形態では、ＣＰＵ１０８は、本データ処理システム２１００全体の制御を行うとともに、回路データ格納部１０２とＦＰＧＡ１０１との回路データの受け渡しの制御を行う。ＣＰＵ１０８からの回路データ制御信号に従って、回路データ格納部１０２とＦＰＧＡ１０１との回路データの受け渡しの制御を行う。本実施形態においては、回路データ格納部１０２には、図２９に示すように、回路データの格納を行う。通常モードではＦＰＧＡ１０１に展開する通常動作用回路を、データ処理回路２９０１、外部Ｉ／Ｆ出力回路２９０２、及び外部Ｉ／Ｆ入力回路２９０３の３つの処理回路に予め分割しておく。
【０１６０】
データ処理回路２９０１に関しては入力されたデータの処理を行う部分となるので、ＡＣタイミングの設定を変化させても、回路を変更する必要は無く、どのＡＣタイミングの場合でも共通に使用できる回路となる。データ処理回路２９０１として展開されるデータは、回路データ格納部１０２内にデータ処理用回路データ２９０５として格納される。
【０１６１】
外部Ｉ／Ｆ出力回路２９０２に関しては、ＦＰＧＡ１０１からの出力のＡＣタイミングを変化させた回路をそれぞれ別々に持つ必要があるため、複数の回路データとして格納しておく必要がある。本実施形態では、Ｐｔ−０外部Ｉ／Ｆ出力回路用データ２９１０からＰｔ−９外部Ｉ／Ｆ出力回路用データ２９１３の１０種類の外部Ｉ／Ｆ出力回路２９０２用のデータを用意する。外部Ｉ／Ｆ入力回路２９０３に関しては、ＦＰＧＡ１０１からの入力のＡＣタイミングを変化させた回路をそれぞれ別々に持つ必要があるため、複数の回路データとして格納しておく必要がある。本実施形態では、Ｐｔ−０外部Ｉ／Ｆ入力回路用データ２９０６からＰｔ−９外部Ｉ／Ｆ入力回路用データ２９０９の１０種類の外部Ｉ／Ｆ入力回路２９０３用のデータを用意する。ＦＰＧＡ１０１は部分書き換えが可能なので、通常動作時にはデータ処理用回路データと、ＩＣ・Ｄ１００１とのデータの受け渡しに最適なＡＣタイミングとなる入力用及び出力用の外部Ｉ／Ｆ回路用データを選択してＦＰＧＡ１０１に展開することが可能となる。ＩＣ・Ｄ１００１は、データ処理用の半導体集積回路であり、入力端子からのデータ入力を行い、内部回路で所定の処理を行い、データ出力を行う。ＩＣ・Ｄ１００１の内部構成の詳細については、後述する。
【０１６２】
続いて、図２１（ｂ）及び図２２（ａ）にて、タイミング検証時のデータ処理システムの説明を以下に行う。タイミング検証モードでは、ＦＰＧＡ１０１とＩＣ・Ｄ１００１との間のデータの受け渡しに最適なＦＰＧＡ１０１のクロックとデータの位相関係のタイミング検証を行い、遅延情報信号の出力をＣＰＵ１０８に行う。ＣＰＵ１０８では、ＦＰＧＡ１０１に展開する回路データとして、回路データ格納部１０２から、タイミング検証用の回路データ２９０４を選択し、ＦＰＧＡ１０１に展開させる。
【０１６３】
タイミング検証モードでは、ＩＣ・Ｄ１００１から出力されたＩＣ・ＤデータをＦＰＧＡ１０１にて入力する入力タイミング検証動作と、ＦＰＧＡ１０１から出力されたＦＰＧＡデータをＩＣ・Ｄ１００１にて入力する出力タイミング検証動作が行われる。入力タイミング検証モードでは、図２１（ｂ）に示すように、ＣＰＵ１０８からの制御によりＦＰＧＡ１０１内には、タイミング検証用の回路が展開される。この場合、ＣＰＵ１０８から出力される入力遅延量制御信号による制御により、ＩＣ・Ｄ１００１からＦＰＧＡ１０１へのデータ入力時の最適なＦＰＧＡ１０１のクロックとデータの位相関係のタイミング検証を行う。そして、タイミング検証の結果からデータ入力に関する遅延情報信号の出力をＣＰＵ１０８に行う。
【０１６４】
出力タイミング検証モードでは、図２２（ａ）に示すように、ＣＰＵ１０８からの制御によりＦＰＧＡ１０１内には、タイミング検証用の回路が展開される。この場合、ＣＰＵ１０８から出力される出力遅延量制御信号による制御により、ＦＰＧＡ１０１からＩＣ・Ｄ１００１へのデータ出力時の最適なクロックとデータの位相関係のタイミング検証が行われる。そして、タイミング検証の結果からデータ出力に関する遅延情報信号の出力をＣＰＵ１０８に行う。
【０１６５】
図２３は、本実施形態におけるタイミング検証時のＦＰＧＡ１０１内に展開されたタイミング検証用回路の構成、ＩＣ・Ｄ１００１、及びＣＰＵ１０８の構成を示す。図２３において、まずはＩＣ・Ｄ１００１内の構成と動作に関して詳細な説明を行う。本実施形態では、ＩＣ・Ｄ１００１内に、ある特定のパターンのデータ出力を行うことが可能なＰＧ回路１１０５を持っている。
【０１６６】
ＩＣ・Ｄ１００１には、通常動作時に、ＦＰＧＡ１０１から入力されたデータに対して、所定の処理を行って出力用のデータを生成する論理回路１１０２が設けられる。また、ＩＣ・Ｄ１００１には、入力タイミング検証時に、タイミング検証用にある特定のデータを出力するＰＧ回路１１０５が設けられる。なお、論理回路１１０２に関しては、出力タイミング検証時にもＦＰＧＡ１０１から入力されたデータに対して、通常動作時と同様な処理を行ってＩＣ・Ｄ１００１からＩＣ・Ｄデータとして出力する。
【０１６７】
ＦＦ１１０１は、ＩＣ・Ｄ１００１内にあるＦＰＧＡデータを受けるＦＦとなる。ＦＰＧＡ１０１から、ＣＬＫ＿１２５同期で出力されるＦＰＧＡデータが、遅延時間を制御したＣＬＫ＿１２５ＤであるＦＰＧＡクロックに従って入力される。ＦＦ１１０１において、正しくデータを受け取るには、ＦＦ１１０１のセットアップ及び、ホールドの制約を満たした遅延時間でクロックとデータが入力される必要がある。ＦＰＧＡデータとＣＬＫ＿１２５Ｄの遅延時間によっては、ＦＦ１１０１で正しくデータを受け取れる場合と、受け取れない場合が発生する。
【０１６８】
セレクタ１１０３は、ＩＣ・Ｄ１１０１からの出力信号となるＩＣ・Ｄデータの選択を行うセレクタである。通常動作時及び、出力タイミング検証時には、論理回路１１０２にて処理を行ったデータの出力を行い、入力タイミング検証時には、ＰＧ回路１１０５からのデータをそのまま出力する。図２３では、セレクタ１１０３の選択信号は、ＣＰＵ１０８から入力されることとなり、データ処理システムが通常動作時及び出力タイミング検証時では、モード選択信号は論理回路１１０２からのデータを出力するように設定される。一方、データ処理システムが入力タイミング検証時には、モード選択信号はＰＧ回路１１０５からのデータを出力するように設定される。
【０１６９】
セレクタ１１０３からの出力データは、ＦＦ１１０４によってＩＣ・Ｄデータとして出力される。その場合、ＩＣ・Ｄデータの同期クロックであるＩＣ・Ｄクロックは、ＦＰＧＡクロックとして入力されるＣＬＫ＿１２５Ｄである。本実施形態では、ＩＣ・Ｄ１００１からのＩＣ・Ｄデータは、ＩＣ・Ｄクロックとのエッジが揃った状態で出力される。
【０１７０】
続いて、図２３におけるＦＰＧＡ１０１に展開されたタイミング検証用回路の構成と動作に関して詳細な説明を行う。まず最初に、入力タイミング検証に使用する部分に関して詳細な説明を行う。
【０１７１】
ＰＬＬ・Ｂ３０８は、ＦＰＧＡ１０１に入力されたＩＣ・Ｄクロックを元に、遅延量調整部・Ｂ３０９で使用する高周波数のクロックの生成を行う。本実施形態では、ＰＬＬ・Ｂ３０８から出力されるクロックＣＬＫ＿１２５０は、ＩＣ・Ｄクロックとして入力されたＣＬＫ＿１２５Ｃの１０倍の周波数となる１２５０ＭＨｚのクロックであるとする。遅延量調整部・Ｂ３０９には、ＩＣ・Ｄクロックとして入力された１２５ＭＨｚのクロックであるＣＬＫ＿１２５Ｄと、ＰＬＬ・Ｂ３０８からの１２５０ＭＨｚのクロックが入力される。遅延量調整部・Ｂ３０９は、１２５ＭＨｚのクロックであるＣＬＫ＿１２５Ｄに対して、一定の遅延時間を付加したクロックであるＣＬＫ＿１２５ＤＤの出力を行う。
【０１７２】
本実施形態における遅延調整部・Ｂ３０９の内部回路及び動作に関しては、上記第４の実施形態と同様であるため詳細な説明は省略する。遅延調整部・Ｂ３０９では、ＰＬＬ・Ｂ３０８から入力される１２５０ＭＨｚのＣＬＫ＿１２５０と、ＩＣ・ＤクロックとしてＩＣ・Ｄ１００１から入力される１２５ＭＨｚのＣＬＫ＿１２５との入力が行われる。その後、ＩＣ・Ｄクロックから遅延時間の異なるＰｔ−０からＰｔ−９の１０種類のクロックが選択的に出力される。
【０１７３】
入力遅延量制御信号は、ＣＰＵ１０８から出力される信号であり、具体的には、４ビットのデータが、「００００」の場合はＰｔ−０のクロックがＣＬＫ＿１２５ＤＤとして選択される。「０００１」の場合はＰｔ−１のクロックがＣＬＫ＿１２５ＤＤとして選択される。「００１０」の場合はＰｔ−２のクロックがＣＬＫ＿１２５ＤＤとして選択される。「００１１」の場合はＰｔ−３のクロックがＣＬＫ＿１２５ＤＤとして選択される。「０１００」の場合はＰｔ−４のクロックがＣＬＫ＿１２５ＤＤとして選択される。「０１０１」の場合はＰｔ−５のクロックがＣＬＫ＿１２５ＤＤとして選択される。「０１１０」の場合はＰｔ−６のクロックがＣＬＫ＿１２５ＤＤとして選択される。「０１１１」の場合はＰｔ−７のクロックがＣＬＫ＿１２５ＤＤとして選択される。「１０００」の場合はＰｔ−８のクロックがＣＬＫ＿１２５ＤＤとして選択される。「１００１」の場合はＰｔ−９のクロックがＣＬＫ＿１２５ＤＤとして選択される。これにより、ＦＦ３１０ではＩＣ・Ｂデータに対して、１０段階の遅延時間のあるＣＬＫ＿１２５ＤＤを選択的に入力することが可能となる。
【０１７４】
図２９の回路データ格納部１０２には、ＩＣ・Ｄ１００１からのデータ入力に関して入力ＡＣタイミングの設定の異なる複数種類の通常動作時に使用する外部Ｉ／Ｆ入力回路用の回路データ（Ｐｔ−０（２９０６）からＰｔ−９（２９０９））が格納されている。各回路データのＡＣタイミングの設定は、１０種類の遅延時間の異なる１２５ＭＨｚのクロック信号（Ｐｔ−０からＰｔ−９）に対応している。つまり、通常動作用の回路データのＰｔ−０（２９０６）は、図１５（ａ）に示すように、Ｐｔ−０のクロックをＣＬＫ＿１２５ＤＤとして選択した場合の入力ＡＣタイミング設定となっている。同様に、通常動作用の回路データのＰｔ−１（２９０７）は、図１５（ｂ）に示すように、Ｐｔ−１のクロックをＣＬＫ＿１２５ＤＤとして選択した場合の入力ＡＣタイミング設定となっている。また、Ｐｔ−９（２９０９）は、図１５（ｃ）に示すように、Ｐｔ−９のクロックをＣＬＫ＿１２５ＤＤとして選択した場合の入力ＡＣタイミング設定となっている。
【０１７５】
ＦＦ３１０は、ＦＰＧＡ１０１内にあるＩＣ・Ｄデータを受ける為のＦＦとなる。ＩＣ・Ｄ１００１から、ＣＬＫ＿１２５Ｄ同期で出力されるＩＣ・Ｂデータが、遅延時間を制御したＣＬＫ＿１２５ＤＤのクロックに従って入力される。ＦＦ３１０において、正しくデータを受け取るには、ＦＦ３１０のセットアップ及び、ホールドの制約を満たした遅延時間でクロックとデータが入力される必要がある。ＩＣ・ＤデータとＣＬＫ＿１２５ＤＤの遅延時間によっては、ＦＦ３１０が正しくデータを受け取れる場合と、受け取れない場合が発生する。
【０１７６】
ＣＬＫ＿１２５ＤＤの１０段階の切り替えやＩＣ・Ｄ１１０１からのデータ入力、ＩＣ・ＤデータとＩＤ・Ｄクロックの最適な位相関係の解析に関しては、第１の実施形態と同様な構成、方法となるため、本実施形態での詳細な説明は省略する。但し、本実施形態において、比較データ格納メモリ３１２には、入力タイミング検証時に使用する、入力タイミング検証用比較データと、出力タイミング検証時に使用する、出力タイミング検証用比較データの２つのデータが格納されている。入力タイミング検証用データは、ＩＣ・Ｄ１００１内のＰＧ回路１１０５から出力されるデータと同じデータとなる。
【０１７７】
出力タイミング検証用データは、出力データ用メモリ１１０８から出力したデータがＩＣ・Ｄ１００１内の論理回路１１０２によって所定の処理が行われた結果のデータを格納しておく。入力タイミング検証動作では、入力タイミング検証用の比較データとのデータ比較を行い、ＩＣ・ＤデータをＦＰＧＡ１０１内で受けるために、最適なＣＬＫ＿１２５ＤＤの遅延時間の検出を行う。検出した遅延時間は、入力遅延情報として、ＣＰＵ１０８内にある遅延情報信号格納部１００２に格納される。
【０１７８】
次に、出力タイミング検証に使用する部分に関して詳細な説明を行う。
【０１７９】
この時、ＩＣ・Ｄデータの入力部分のＡＣタイミングは、先に実行した入力タイミング検証によって最適と判断された入力データと入力クロックの位相関係となるように遅延量制御信号が出力されている。
【０１８０】
ＰＬＬ・Ａ１１０６は、図２３において図示はしていないが、外部からの遅い周波数のクロックを元に、ＦＰＧＡ１０１内部で使用する高周波数のクロックの生成を行う。本実施形態では、ＰＬＬ・Ａ１１０６から出力されるクロックＣＬＫ＿１２５０Ａは、１２５０ＭＨｚの周波数のクロックとする。１／１０分周回路１１０７は、高周波数のクロックを１／１０の周波数に分周を行う回路であり、本実施形態では、ＰＬＬ・Ａ１１０６から入力を行った１２５０ＭＨｚのクロックを１２５ＭＨｚに分周されたクロックＣＬＫ＿１２５を出力する。出力データ用メモリ１１０８は、ＩＣ・Ｄ１００１へと出力を行うデータを格納しておくメモリであり、システム制御用のＣＰＵ１０８の制御により、ＣＬＫ＿１２５に同期して出力用のデータをＦＦ１１１０へと出力する。ＦＦ１１１０では、出力データ用メモリ１１０８からの出力用データをＣＬＫ＿１２５によって出力させることで、１２５ＭＨｚ同期のデータ出力をＦＰＧＡ１０１から行う。遅延調整部・Ａ１１０９には、１／１０分周回路１１０７からの１２５ＭＨｚのクロックであるＣＬＫ＿１２５と、ＰＬＬ・Ａ１１０６からの１２５０ＭＨｚのクロックが入力される。遅延調整部・Ａ１１０９は、１２５ＭＨｚのクロックであるＣＬＫ＿１２５に対して、一定の遅延時間を付加したクロックであるＣＬＫ＿１２５Ｄの出力を行う。
【０１８１】
本実施形態における遅延調整部・Ａ１１０９の内部回路の詳細は、図６で詳細に説明した回路と同様の回路を有するため、本実施形態における詳細な説明は省略する。本実施形態において、１２５ＭＨｚ入力は、１／１０分周回路１１０７からの１２５ＭＨｚのクロックであるＣＬＫ＿１２５となる。１２５０ＭＨｚ入力は、ＰＬＬ・Ａ１１０６から出力されるＣＬＫ＿１２５０Ａとなり、１２５ＭＨｚ出力は、ＦＰＧＡクロックとしてＦＰＧＡ１０１から出力されるＣＬＫ＿１２５Ｄとなる。また、本実施形態では、出力遅延量制御信号は、ＣＰＵ１０８から入力される出力遅延量制御信号となる。
【０１８２】
このように、遅延調整部・Ａ１１０９では、１２５ＭＨｚのクロックのＣＬＫ＿１２５が入力され、遅延時間の異なるＰｔ−０からＰｔ−９の信号としてＣＰＵ１０８から入力される４ビットの遅延量制御信号によって選択される。そして、ＣＬＫ＿１２５Ｄとして出力される。遅延調整部・Ａ１１０９によって生成される１２５ＭＨｚの周波数で、遅延時間の異なるクロックＣＬＫ＿１２５Ｄのタイミングチャートに関しても、図５（ｂ）で詳細な説明を行っているため、ここでの詳細な説明は省略する。
【０１８３】
本実施形態にでは、図５（ｂ）の１２５ＭＨｚ入力は、１／１０分周回路１１０７からの１２５ＭＨｚのクロックであるＣＬＫ＿１２５となり、１２５０ＭＨｚ入力は、ＰＬＬ・Ａ１１０６から出力されるＣＬＫ＿１２５０Ａとなる。さらに、１２５ＭＨｚ出力のＰｔ−０からＰｔ−９は遅延調整された１２５ＭＨｚのクロック出力であるＦＰＧＡクロックとなる。また、図５（ｂ）におけるデータは出力データ用メモリ１１０８から出力されてＣＬＫ＿１２５によって出力されるＦＰＧＡデータとなる。
【０１８４】
また、図２９に示すように、回路データ格納部１０２には、ＦＰＧＡ１０１からＩＣ・Ｄ１００１へのデータ出力に関してＡＣタイミングの設定の異なる複数種類の通常動作用の回路データ（Ｐｔ−０（２９１０）からＰｔ−９（２９１３））が格納されている。各回路データのＡＣタイミングの設定は、１０種類の遅延時間の異なる１２５ＭＨｚのクロック信号Ｐｔ−０からＰｔ−９に対応している。つまり、通常動作用の回路データのＰｔ−０（２９１０）は、図１５（ａ）に示すように、Ｐｔ−０のクロックをＣＬＫ＿１２５Ｄとして選択した場合のＡＣタイミング設定となっている。同様に、通常動作用の回路データのＰｔ−１（２９１１）は、図１５（ｂ）に示すように、Ｐｔ−１のクロックをＣＬＫ＿１２５Ｄとして選択した場合のＡＣタイミング設定となっている。Ｐｔ−９（２９１３）は、図１５（ｃ）に示すように、Ｐｔ−９のクロックをＣＬＫ＿１２５Ｄとして選択した場合のＡＣタイミング設定となっている。
【０１８５】
出力タイミング検証時の動作としては、ＣＰＵ１０８によって、ＣＬＫ＿１２５Ｄの出力を順次、Ｐｔ−０からＰｔ−９まで段階的に変えて行く。その各段階毎に、出力データ用メモリ１１０８に格納されているデータを、ＦＦ１１１０によって、ＣＬＫ＿１２５にて出力させる。その時、ＣＬＫ＿１２５Ｄの出力を順次、Ｐｔ−０からＰｔ−９まで段階的に変えて行く。受信データ格納メモリ３１１は、ＦＦ３１０によってＩＣ・Ｄ１００１から受け取ったＩＣ・Ｄデータを順次格納して行く。
【０１８６】
ＦＦ３１０は、ＦＰＧＡ１０１内にあるＩＣ・Ｄデータを受けるためのＦＦとなる。ＩＣ・Ｄ１００１から、ＣＬＫ＿１２５Ｄ同期で出力されるＩＣ・Ｄデータが、遅延時間を制御したＣＬＫ＿１２５ＤＤのクロックに従って入力される。この場合、ＦＦ３１０においては、すでに入力タイミング検証により、最もマージンが確保できるＰｔ−４の遅延時間でクロックとデータが入力されるため、全てのデータが正しく受け取れる。よって、ＦＰＧＡ１０１からデータの出力を行い、ＩＣ・Ｄ１００１で処理を行ったデータの入力を行ったときに、正しい受け渡しができていなかった場合には、ＦＰＧＡ１０１からＩＣ・Ｄ１００１へのデータ出力が正しく動作できていなかった。
【０１８７】
比較データ格納メモリ３１２は、ＦＰＧＡ１０１からＩＣ・Ｄ１００１へのデータ出力が正しく行われたか否かを判断するためのデータを格納する。本実施形態においては、出力データ用メモリ３０２から出力されたデータが、ＩＣ・Ｄ１００１内の論理回路１１０２によって所定の処理が行われた場合のデータを格納しておく。
【０１８８】
データ比較部３１３は、受信データ格納メモリ３１１と比較データ格納メモリ３１２から順次データの入力を行い、それぞれのデータが同じか否かの比較を行う。全てのデータ一致している場合には、ＦＰＧＡ１０１からＩＣ・Ｄ１００１へとデータ入力が正しく行われたこととなり、不一致のデータがある場合には、ＦＰＧＡ１０１からＩＣ・Ｄ１００１へとデータ入力が正しく行われていなかったことを示す。
【０１８９】
データの比較結果は、比較結果格納メモリ３１４内に格納される。先に説明を行ったように、タイミング検証時の動作としては、ＣＰＵ１０８によって、ＣＬＫ＿１２５Ｄの出力を順次、Ｐｔ−０からＰｔ−９まで段階的に変えて行く。その各段階毎に、出力データ用メモリ３０２に格納されているデータが、ＩＣ・Ｄ１００１によって所定の処理が行われる。よって、データ処理後のＩＣ・ＤデータもＰｔ−０からＰｔ−９までの各段階毎にＦＰＧＡ１０１へと入力され、比較データ格納メモリ３１２内のデータと比較される。
【０１９０】
遅延情報解析部３１５では、Ｐｔ−０からＰｔ−９までのデータの比較結果から、ＦＰＧＡ１０１からＩＣ・Ｄ１００１へとデータ出力を行うにあたり、最適となるＦＰＧＡデータとＣＬＫ＿１２５Ｄの遅延差の検出を行う。通常動作時にＦＰＧＡ１０１内に展開する回路データの選択を行う。具体的な方法については、上記第４の実施形態における入力タイミング検証時の構成、動作と同様となるため、本実施形態における詳細な説明は省略する。
【０１９１】
以上説明したように、出力タイミング検証モードでは、ＩＣ・Ｄ１００１がＦＰＧＡ１０１からの出力データを受ける最適なためのＦＰＧＡデータとＦＰＧＡクロックの遅延時間の検出を行う。出力遅延情報として、ＣＰＵ１０８内にある遅延情報信号格納部１００２に格納する。
【０１９２】
図２３におけるＣＰＵ１０８には、ＦＰＧＡ１０１から入力された遅延情報信号を格納するための遅延情報信号格納部１００２と本データ処理システム全体の制御を行うＣＰＵ−Ｃｏｒｅ１００３が含まれている。また、本実施形態では、ＣＰＵ１０８内には、処理数カウンタ１００４が含まれており、本データ処理システム２１００が通常動作を行った回数のカウントを行う。処理数カウンタ１００４が所定回数に到達すると、データ処理システム２１００はタイミング検証動作に移行し、その時点での最適なＡＣタイミングの設定を再度実行し直す。入力タイミング検証動作及び出力タイミング検証動作を行った後に、ＣＰＵ１０８内の遅延情報信号格納部１００２内に格納された情報を元に、通常動作時にＦＰＧＡ１０１に展開すべき回路データを選択して展開し、通常動作状態へと移行する。
【０１９３】
図２４は、本実施形態における入力タイミング検証時のＦＰＧＡ１０１内に展開されたタイミング検証用回路の構成、ＩＣ・Ｄ１００１、及びＣＰＵ１０８内の構成を示し。出力タイミング検証時に使用する出力データ用メモリ１１０８やデータ出力用のＦＦ１１１０は使用しないこととなる。一方で、ＰＬＬ・Ａ１１０６や１／１０分周回路１１０７、遅延量調整部・Ａ１１０９に関しては、ＩＣ・Ｄ１１０１にクロックを供給するために動作させる必要がある。この場合の出力遅延制御用信号は、どのような値に設定されていても、入力タイミング検証には影響がないため、「００００」としておく。入力タイミング検証時のＩＣ・Ｄ１００１に関しては、論理回路１１０２は使用されず、セレクタ１１０３によってＰＧ回路１１０５からのデータがＩＣ・Ｄデータとして出力される。ＦＰＧＡ１０１では、入力タイミング検証として、ＦＦ３１０でデータを受けるにあたり、ＩＣ・ＤデータとＩＣ・Ｄクロックの最適な位相関係の検証を行い、入力遅延情報信号としてその情報をＣＰＵ１０８内の遅延情報信号格納部１００２へと格納する。
【０１９４】
図２５は、本実施形態における出力タイミング検証時のＦＰＧＡ１０１内に展開されたタイミング検証用回路の構成、ＩＣ・Ｄ１００１、及びＣＰＵ１０８内の構成を示す。入力タイミング検証時に使用するＰＧ回路１１０５に関しては、出力タイミング検証時には使用しない。出力タイミング検証時のＩＣ・Ｄ１００１内のＦＦ１１０１でデータを受けるにあたり、ＦＰＧＡデータとＦＰＧＡクロックの最適な位相関係の検証を行い、出力遅延情報信号としてその情報をＣＰＵ１０８内の遅延情報信号格納部１００２へと格納する。
【０１９５】
＜処理手順＞
図２６乃至図２８は、本実施形態における電源オン時から入力タイミング検証動作、出力タイミング検証動作、及び通常動作までの本データ処理システムのフローを示す。以下で説明する処理は、ＣＰＵ１０８によって統括的に制御される。
【０１９６】
まず図２６について説明する。Ｓ１２０１で、本データ処理システム２１００に電源が投入される。この時、データ処理システム２１００は、リセットが掛けられた状態となっている。Ｓ１２０２で、ＣＰＵ１０８のブートアップが実行され、ＣＰＵ１０８が本データ処理システム２１００の制御可能状態となる。その後、Ｓ１２０３で、ＣＰＵ１０８によってシステム全体のリセットが解除される。
【０１９７】
続いて、Ｓ１２０４で、ＣＰＵ１０８は、回路データ格納部１０２に格納されているタイミング検証用回路データをＦＰＧＡ１０１の展開用の回路データとして選択し、ＦＰＧＡ１０１内へ展開する。続いて、Ｓ１２０５で、ＣＰＵ１０８は、入力タイミング検証動作を実行する。入力タイミング検証動作が完了した後、Ｓ１２０６で、ＣＰＵ１０８は、出力タイミング検証動作を実行する。
【０１９８】
出力タイミング検証動作が完了した後、ＣＰＵ１０８は、ＦＰＧＡ１０１内に展開されたタイミング検証用回路から、通常動作用回路への再構成の指示を出す。再構築の指示によりＳ１２０８で、ＣＰＵ１０８は、遅延情報信号格納部１００２に格納された入力遅延情報、及び出力遅延情報を元に、通常動作用回路データをＦＰＧＡ１０１へ展開する。さらに、Ｓ１２０９で、ＣＰＵ１０８は、ＩＣ・Ｄ１００１内のセレクタ１１０３を通常モードに設定し、ＩＣ・Ｄ１００１に入力として取り込まれたデータに対して論理回路１１０２によって所定の処理を実行させ、ＦＰＧＡ１０１へと出力させる。その後、Ｓ１２１０で、本データ処理システム２１００は、通常動作状態へと移行する。
【０１９９】
通常処理動作に入った後、Ｓ１２１１で、ＣＰＵ１０８は、処理数カウンタ１００４に「０」を設定し、Ｓ１２１２でデータ処理システム２１００においてデータ処理のジョブを受け付ける状態となる。Ｓ１２１３で、ＣＰＵ１０８は、データ処理の実行を受け付けたか否かを判定する。受け付けていない場合は、Ｓ１２１２で常にデータ処理のジョブを受け付ける状態となる。
【０２００】
一方、データ処理のジョブを受け付けるとＳ１２１４に進み、ＣＰＵ１０８は、処理数カウンタ１００４の値に「＋１」を行った後に、Ｓ１２１５でデータ処理を実行する。データ処理を実行後Ｓ１２１６で、ＣＰＵ１０８は、処理数カウンタ１００４の値を確認し、処理カウンタの値が１００に到達しているか否かを判定する。到達していない場合はＳ１２１２に戻り、データ処理のジョブを受け付ける状態となる。
【０２０１】
一方。処理カウンタの値が１００となっていた場合はＳ１２１７に進み、ＣＰＵ１０８は、ＦＰＧＡ１０１内に展開された通常処理用回路からタイミング検証用回路への再構成の指示を出し、Ｓ１２０４へ処理を戻す。再構成の指示により、回路データ格納部１０２に格納されているタイミング検証用回路データがＦＰＧＡ１０１の展開用の回路データとして選択され、ＣＰＵ１０８からの回路データ制御信号を元に、ＦＰＧＡ１０１内へ展開される。その後の処理は上述した内容と同様であるため説明を省略する。
【０２０２】
次に図２７を説明する。図２７は本実施形態における動作フロー中の入力タイミング検証動作（Ｓ１２０５）の詳細な処理フローとなる。Ｓ１２０２Ｂで、ＣＰＵ１０８は、出力遅延量制御信号値を「０」、即ち「００００」に設定する。これにより、ＦＰＧＡ１０１から出力されるＦＰＧＡデータとＦＰＧＡクロックの位相関係が図５（ｂ）のデータと１２５ＭＨｚ出力のＰｔ−０の関係にセットされる。しかし、入力タイミング検証モードでは、ＩＣ・Ｄ１００１の動作用にＦＰＧＡクロックを出力するが、ＦＰＧＡデータの出力は行わない。Ｓ１２０３Ｂで、ＣＰＵ１０８は、入力遅延量制御信号値を「０」、即ち「００００」に設定する。これにより、ＦＰＧＡ１０１内のＦＦ３１０に入力されるＩＣ・ＤデータとＩＣ・Ｄクロックの位相関係が図５（ｂ）のデータと１２５ＭＨｚ出力のＰｔ−０の関係にセットされる。
【０２０３】
次に、Ｓ１２０４Ｂで、ＣＰＵ１０８は、ＩＣ・Ｄ１００１内のセレクタ１１０３を、ＰＧ回路１１０５のデータを出力するように設定する。そして、Ｓ１２０５Ｂで、図５（ｂ）のＰｔ−０の遅延時間によって、ＩＣ・Ｄ１００１内のＰＧ回路１１０５からのデータが、ＦＰＧＡ１０１のＦＦ３１０に入力される。Ｓ１２０６Ｂで、ＦＦ３１０によって入力したデータは、正しく入力されたかどうか判定するために、比較データとの比較が行われた後、その比較結果が比較結果格納メモリ３１４に格納される。Ｓ１２０８Ｂで、Ｐｔ−０の遅延時間による比較結果が格納されたことを認識すると、ＣＰＵ１０８は、入力遅延量制御信号値に対して「１」を加算し、入力遅延量制御信号値を「１」、即ち「０００１」に設定し、Ｓ１２０５Ｂに処理を戻す。そして、Ｓ１２０５Ｂで図５（ｂ）のＰｔ−１の遅延時間によって、ＦＩＣ・Ｄ１００１内のＰＧ回路１１０５からのデータが、ＦＰＧＡ１０１内のＦＦ３１０に入力される。Ｓ１２０５ＢからＳ１２０８Ｂのフローは繰り返され、入力遅延量制御信号値が「９」、即ち「１００１」に設定された遅延時間での比較結果が終了するとＳ１２０９Ｂに進む。
【０２０４】
Ｓ１２０９Ｂで、遅延情報解析部３１５は、通常動作時に使用する入力遅延時間の解析を行う。Ｓ１２１０Ｂで、遅延情報解析部３１５での判断結果は、入力遅延情報信号としてＣＰＵ１０８内の遅延情報信号格納部１００２へと入力される。以上により、入力タイミング検証動作（Ｓ１２０５）が完了する。
【０２０５】
次に図２８を説明する。図２８は本実施形態における動作フロー中の出力タイミング検証動作（Ｓ１２０６）の詳細な処理フローとなる。入力タイミング検証動作Ｓ１２０５が完了した後、ＣＰＵ１０８の制御により、出力タイミング検証動作Ｓ１２０６が実行される。Ｓ１２０２Ｃで、ＣＰＵ１０８は、出力遅延量制御信号値を「０」、即ち「００００」に設定する。これにより、ＦＰＧＡ１０１から出力されるＦＰＧＡデータとＦＰＧＡクロックの位相関係が図５（ｂ）のデータと１２５ＭＨｚ出力のＰｔ−０の関係にセットされる。Ｓ１２０３Ｃで、ＣＰＵ１０８は、入力遅延量制御信号値を先に実行した入力タイミング検証動作（Ｓ１２０５）において、ＩＣ・Ｄデータを正しく受けるのに最適なＩＣ・Ｄクロックとなるような位相関係の値に設定される。これにより、ＦＰＧＡ１０１内のＦＦ３１０では、確実にＩＣ・Ｄデータの入力が行われる。
【０２０６】
次に、Ｓ１２０４Ｃで、ＣＰＵ１０８は、ＩＣ・Ｄ１００１内のセレクタ１１０３を、論理回路１１０２のデータを出力するように設定する。そして、Ｓ１２０５Ｃで、図５（ｂ）のＰｔ−０の遅延時間によって、ＦＰＧＡ１０１内の出力データ用メモリ１１０８からのデータが、ＦＰＧＡデータとしてＦＰＧＡクロックと共に、ＩＣ・Ｄ１００１へと出力される。ＦＰＧＡ１０１からのデータは、ＩＣ・Ｄ１００１内の論理回路１１０２にて所定の処理が実行された後、ＦＰＧＡ１０１内のＦＦ３１０によって入力される。ＦＦ３１０によって入力したデータは、ＩＤ・Ｄ１００１にて、ＦＰＧＡデータが正しく受け取れていたか否かを判断するために、比較データとの比較が行われた後、Ｓ１２０６Ｃでその比較結果が比較結果格納メモリ３１４に格納される。Ｓ１２０８Ｃで、Ｐｔ−０の遅延時間による比較結果が格納されたことを認識すると、ＣＰＵ１０８は、出力遅延量制御信号値に対して「１」を加算し、出力遅延量制御信号値を「１」、即ち「０００１」に設定し、処理をＳ１２０５Ｃに戻す。そして、Ｓ１２０５Ｃで、図５のＰｔ−１の遅延時間によって、ＦＰＧＡ１０１内の出力データ用メモリ１１０８からのデータが、ＦＰＧＡデータとしてＦＰＧＡクロックと共に、ＩＣ・Ｄ１００１へと出力される。Ｓ１２０５Ｃ乃至Ｓ１２０８Ｃのフローは繰り返され、出力遅延量制御信号値が「９」、即ち「１００１」に設定された遅延時間での比較が終了するとＳ１２０９Ｃに進む。
【０２０７】
Ｓ１２０９Ｃで、遅延情報解析部３１５は、通常動作時に使用する出力遅延時間の解析を行う。Ｓ１２１０Ｃで、遅延情報解析部３１５での判断結果が出力遅延情報信号としてＣＰＵ１０８の遅延情報信号格納部１００２へと入力される。以上により、出力タイミング検証動作（Ｓ１２０６）が完了する。
【０２０８】
以上説明したように、本実施形態では、タイミング検証動作として、入力タイミング検証と、出力タイミング検証の両方を行う。つまり、本実施形態では、第１乃至第３の実施形態の構成と、第４及び第５の実施形態の構成とを合わせた構成について説明した。このように、本実施形態では、入力タイミング検証と、出力タイミング検証の両方を行いつつ、上記実施形態の効果を享有することができる。なお、上記出力タイミング検証を行う第１乃至第３の実施形態の構成と、入力タイミング検証を行う第４及び第５の実施形態の構成との組み合わせについては、任意の組み合わせを選択することができる。本実施形態では、それらの組み合わせの一例を説明したに過ぎないことを理解されたい。
【０２０９】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０２１０】
１０１：ＦＰＧＡ、１０２：回路データ格納部、１０３：回路データ制御部、１０４：ＩＣ・Ａ、１０５：ＩＣ・Ｂ、１０６：セレクタ、１０７：ＩＣ・Ｃ
【図１】
2016213682.tif 000003
【図２】
2016213682.tif 000004
【図３】
2016213682.tif 000005
【図４】
2016213682.tif 000006
【図５】
2016213682.tif 000007
【図６】
2016213682.tif 000008
【図７】
2016213682.tif 000009
【図８】
2016213682.tif 000010
【図９】
2016213682.tif 000011
【図１０】
2016213682.tif 000012
【図１１】
2016213682.tif 000013
【図１２】
2016213682.tif 000014
【図１３】
2016213682.tif 000015
【図１４】
2016213682.tif 000016
【図１５】
2016213682.tif 000017
【図１６】
2016213682.tif 000018
【図１７】
2016213682.tif 000019
【図１８】
2016213682.tif 000020
【図１９】
2016213682.tif 000021
【図２０】
2016213682.tif 000022
【図２１】
2016213682.tif 000023
【図２２】
2016213682.tif 000024
【図２３】
2016213682.tif 000025
【図２４】
2016213682.tif 000026
【図２５】
2016213682.tif 000027
【図２６】
2016213682.tif 000028
【図２７】
2016213682.tif 000029
【図２８】
2016213682.tif 000030
【図２９】
2016213682.tif 000031