(57)【要約】【課題】従来技術の半導体集積回路では、タイミング調整に工数がかかるという問題があった。【解決手段】本発明にかかる半導体集積回路は、外部メモリと接続される複数の信号線に対応して個別に設けられ前記対応する信号線のタイミングを決定する回路ブロックをマクロ化した論理セル群１１〜１５と、論理セル群１１〜１５のそれぞれに対応して設けられたＩＯバッファ２１〜２６と、を有する。そして、論理セル群１１〜１５と対応するＩＯバッファ２１〜２６とを結合する配線のそれぞれが略同じ長さを有することを特徴とする。【選択図】図１
2011170771.tif 000002
【特許請求の範囲】
【請求項１】
外部メモリと接続される複数の信号線に対応して個別に設けられ前記対応する信号線のタイミングを決定する回路ブロックをマクロ化したハードマクロと、
前記ハードマクロのそれぞれに対応して設けられたＩＯバッファと、を有し、
前記ハードマクロと前記対応する前記ＩＯバッファとを結合する配線のそれぞれが略同じ長さを有することを特徴とする半導体集積回路。
【請求項２】
前記ハードマクロのそれぞれが前記対応するＩＯバッファの近傍に配置されていることを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
第１のＩＯバッファの近傍に配置されると共に前記第１のＩＯバッファに第１の配線を介して結合され、第１のクロック信号に基づいて生成した基準クロックを前記第１のＩＯバッファを介して出力する第１のハードマクロと、
第２のＩＯバッファの近傍に配置されると共に前記第２のＩＯバッファに第２の配線を介して結合され、入力された制御信号を前記第１のクロック信号に同期して前記第２のＩＯバッファを介して出力する第２のハードマクロと、
第３のＩＯバッファの近傍に配置されると共に前記第３のＩＯバッファに第３の配線を介して結合され、前記第３のＩＯバッファを介して入力されたストローブ信号に所定の遅延を付加する第３のハードマクロと、
第４のＩＯバッファの近傍に配置されると共に前記第４のＩＯバッファに第４の配線を介して結合され、前記第４のＩＯバッファを介してデータ信号の送受信を行う第４のハードマクロと、を有し、
前記第１乃至第４配線の長さが略同じ長さであることを特徴とする半導体集積回路。
【請求項４】
前記第１乃至第４のＩＯバッファに接続された外部メモリのアクセスを制御する制御回路をさらに有し、
前記制御回路は、前記第３のハードマクロの前記所定の遅延の値を変化させて、前記外部メモリの読み出しデータを検出した値と、期待値とを比較した複数の比較結果を取得し、前記比較結果に基づいて前記所定の遅延の値を決定することを特徴とする請求項３に記載の半導体集積回路。
【請求項５】
前記第４のハードマクロは、
前記データ信号を、遅延が付加された前記ストローブ信号に同期して検出した後に、さらに前記第１のクロック信号に同期して検出することを特徴とする請求項３又は４に記載の半導体集積回路。
【請求項６】
第１のＩＯバッファに第１の配線を介して結合され、第１のクロック信号に基づいて生成した基準クロックを前記第１のＩＯバッファを介して出力する第１のハードマクロと、
第２のＩＯバッファに第２の配線を介して結合され、入力された制御信号を前記第１のクロック信号に同期して前記第２のＩＯバッファを介して出力する第２のハードマクロと、
第３のＩＯバッファに第３の配線を介して結合され、前記第３のＩＯバッファを介して入力されたストローブ信号に所定の遅延を付加する第３のハードマクロと、
第４のＩＯバッファに第４の配線を介して結合され、前記第４のＩＯバッファを介してデータ信号の送受信を行う第４のハードマクロと、を備えた半導体集積回路のタイミング調整方法であって、
前記第１乃至第４の配線の長さが同じとなるよう前記第１乃至第４のハードマクロを配置することを特徴とする半導体集積回路のタイミング調整方法。
【請求項７】
前記第１乃至第４の配線の遅延量が同じとなるよう前記第１乃至第４のハードマクロを配置することを特徴とする請求項６に記載の半導体集積回路のタイミング調整方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路及びそのタイミング調整方法に関する。
【背景技術】
【０００２】
ＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を含む半導体メモリでは、データの大容量化が求められるとともに、データ転送速度の向上が求められている。データ転送速度の高速化が図られたＤＲＡＭの一つに、ＤＤＲ−ＳＤＲＡＭ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  −  Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）が挙げられる。ＤＤＲ−ＳＤＲＡＭでは、クロックの立ち上がりと立ち下がりの両方に同期してデータ転送が可能であるため、従来のＳＤＲＡＭの２倍以上のデータスループットを実現することが可能となる。
【０００３】
ＤＤＲ−ＳＤＲＡＭとのインターフェースを行うインターフェース回路の動作が、特許文献１に開示されている。特許文献１に開示されたＤＤＲ−ＳＤＲＡＭインターフェース回路（以下、単にインターフェース回路と称す）は、クロック発生回路と、出力バッファと、入力バッファと、ＤＬＬ（Ｄｅｌａｙ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）回路と、第１遅延回路と、タイミング制御回路と、を備える。また、第１遅延回路は、第１遅延バッファと、第２遅延バッファと、を有する。タイミング調整回路は、２つのＦＦ（Ｆｌｉｐ  Ｆｌｏｐ）を有する。
【０００４】
クロック発生回路は、内部クロック信号を生成し、第１遅延回路に対して出力する。同時に、クロック発生回路は、メモリクロック信号を生成し、出力バッファを介して、ＤＤＲ−ＳＤＲＡＭに対して出力する。ＤＤＲ−ＳＤＲＡＭは、インターフェース回路によって生成されたメモリクロック信号に基づいて、データストローブ信号及びデータ信号を生成し、インターフェース回路に対して出力する。
【０００５】
インターフェース回路において、データストローブ信号は、入力バッファを介してＤＬＬ回路に入力される。そして、ＤＬＬ回路は、データストローブ信号の位相を９０°遅らせた遅延データストローブ信号を生成する。また、インターフェース回路において、データ信号は、別の入力バッファを介して一方のＦＦに入力される。一方のＦＦは、遅延データストローブ信号に同期してデータ信号を取り込み、他方のＦＦに対して出力する。つまり、一方のＦＦは、遅延データストローブ信号によってデータ信号をサンプリングする。
【０００６】
第１遅延回路は、内部クロック信号に遅延時間を付与して、遅延内部クロック信号を出力する。他方のＦＦは、一方のＦＦによってサンプリングされたデータ信号を、遅延内部クロック信号に同期して取り込み、後段の内部回路に対して出力する。このようにして、インターフェース回路は、ＤＤＲ−ＳＤＲＡＭによって生成されたデータ信号のクロックの乗せ換えを行う。
【０００７】
ここで、第１遅延回路内に設けられた第１及び第２遅延バッファは、出力バッファ及びデータストローブ信号の増幅に用いられる入力バッファと同一構成を有している。したがって、インターフェース回路は、遅延データストローブ信号と遅延内部クロック信号との間の遅延時間のばらつきを抑制し、安定したデータの取り込みを行うことができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−２１０３０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
高速処理が要求されるインターフェース回路（半導体装置）とメモリとの間の通信において、ＡＣタイミングを調整するためには、当該インターフェース回路に用いられている論理セルを、対応するＩＯバッファ（入力バッファ及び出力バッファ）の近傍に配置することにより、配線遅延の誤差を抑制する等の対策をする必要がある。しかし、インターフェース回路は、ＲＴＬ設計、論理合成、レイアウト設計及びＳＴＡ（Ｓｔａｔｉｃ  ｔｉｍｉｎｇ  ａｎａｌｙｓｉｓ）の工程を経て設計されるのが一般的である。したがって、従来技術においてＡＣタイミングを調整する場合、論理合成後に生成されるネットリストから対象となる論理セルを選択し、対応するＩＯバッファの近傍に配置する等の工数がかかってしまうという問題があった。
【課題を解決するための手段】
【００１０】
本発明にかかる半導体集積回路は、外部メモリと接続される複数の信号線に対応して個別に設けられ前記対応する信号線のタイミングを決定する回路ブロックをマクロ化したハードマクロと、前記ハードマクロのそれぞれに対応して設けられたＩＯバッファと、を有し、前記ハードマクロと前記対応する前記ＩＯバッファとを結合する配線のそれぞれが略同じ長さを有することを特徴とする。
【００１１】
本発明にかかる半導体集積回路の別の態様は、第１のＩＯバッファの近傍に配置されると共に前記第１のＩＯバッファに第１の配線を介して結合され、第１のクロック信号に基づいて生成した基準クロックを前記第１のＩＯバッファを介して出力する第１のハードマクロと、第２のＩＯバッファの近傍に配置されると共に前記第２のＩＯバッファに第２の配線を介して結合され、入力された制御信号を前記第１のクロック信号に同期して前記第２のＩＯバッファを介して出力する第２のハードマクロと、第３のＩＯバッファの近傍に配置されると共に前記第３のＩＯバッファに第３の配線を介して結合され、前記第３のＩＯバッファを介して入力されたストローブ信号に所定の遅延を付加する第３のハードマクロと、第４のＩＯバッファの近傍に配置されると共に前記第４のＩＯバッファに第４の配線を介して結合され、前記第４のＩＯバッファを介してデータ信号の送受信を行う第４のハードマクロと、を有し、前記第１乃至第４配線の長さが略同じ長さであることを特徴とする。
【００１２】
本発明にかかる半導体集積回路のタイミング調整方法は、第１のＩＯバッファに第１の配線を介して結合され、第１のクロック信号に基づいて生成した基準クロックを前記第１のＩＯバッファを介して出力する第１のハードマクロと、第２のＩＯバッファに第２の配線を介して結合され、入力された制御信号を前記第１のクロック信号に同期して前記第２のＩＯバッファを介して出力する第２のハードマクロと、第３のＩＯバッファに第３の配線を介して結合され、前記第３のＩＯバッファを介して入力されたストローブ信号に所定の遅延を付加する第３のハードマクロと、第４のＩＯバッファに第４の配線を介して結合され、前記第４のＩＯバッファを介してデータ信号の送受信を行う第４のハードマクロと、を備えた半導体集積回路のタイミング調整方法であって、前記第１乃至第４の配線の長さが同じとなるよう前記第１乃至第４のハードマクロを配置することを特徴とする。
【００１３】
上述のような回路構成及びそのタイミング調整方法により、高速処理が要求される場合でも容易にタイミング調整することができる。
【発明の効果】
【００１４】
本発明により、高速処理が要求される場合でも容易にタイミング調整することが可能な半導体集積回路及びそのタイミング調整方法を提供することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態１にかかる半導体集積回路を示す図である。
【図２】本発明の実施の形態１にかかるＩＯバッファを示す図である。
【図３】本発明の実施の形態１にかかる論理セル群１１を示す図である。
【図４】本発明の実施の形態１にかかる論理セル群１２を示す図である。
【図５】本発明の実施の形態１にかかる論理セル群１３を示す図である。
【図６】本発明の実施の形態１にかかる論理セル群１４を示す図である。
【図７】本発明の実施の形態１にかかる論理セル群１５を示す図である。
【図８】本発明の実施の形態１にかかる半導体集積回路の動作を示すタイミングチャートである。
【図９】本発明の実施の形態１にかかる半導体集積回路の動作を示すタイミングチャートである。
【図１０】本発明の実施の形態１にかかる半導体集積回路のレイアウト構成を示す図である。
【図１１】本発明の実施の形態２にかかる半導体集積回路の動作を示すタイミングチャートである。
【図１２】本発明の実施の形態２にかかる半導体集積回路の動作を示すタイミングチャートである。
【図１３】内部遅延時間及び外部遅延時間の合計値と、クロック信号ＣＫ１の周波数と、ＣＬＫモードと、の関係を示す図である。
【図１４】内部遅延時間及び外部遅延時間の合計値と、クロック信号ＣＫ１の周波数と、ＣＬＫモードと、の関係を示す図である。
【発明を実施するための形態】
【００１６】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。説明の明確化のため、必要に応じて重複説明は省略される。
【００１７】
実施の形態１
図１に、本発明の実施の形態にかかる半導体装置（半導体集積回路）１００を示す。半導体装置１００は、メモリ２００との間でデータの送受信を行う。なお、本実施の形態では、メモリ２００がＤＤＲ−ＳＤＲＡＭである場合を例に説明する。
【００１８】
半導体装置１００は、演算処理回路１と、メモリコントローラ２と、ＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）３と、分周回路４と、論理セル群（第２のハードマクロ）１１と、論理セル群（第１のハードマクロ）１２と、論理セル群（第４のハードマクロ）１３と、論理セル群（第３のハードマクロ）１４と、論理セル群１５と、遅延調整回路１６と、ＩＯバッファ（第２のＩＯバッファ）２１と、ＩＯバッファ（第１のＩＯバッファ）２２，２３と、ＩＯバッファ（第４のＩＯバッファ）２４と、ＩＯバッファ（第３のＩＯバッファ）２５と、ＩＯバッファ２６と、を備える。また、メモリコントローラ２は、タイミング調整回路５を有する。
【００１９】
図２に、ＩＯバッファ２１の回路構成を示す。なお、ＩＯバッファ２１〜２６は同じ回路構成である。図３〜図７に、それぞれ論理セル群１１〜１５の回路構成を示す。論理セル群１１は、ＦＦ（Ｆｌｉｐ  Ｆｌｏｐ）１０１，１０２を有する。論理セル群１２は、遅延調整回路２０１と、インバータ２０２と、を有する。論理セル群１３は、ＦＦ３０１〜３０９と、セレクタ３１０〜３１２と、ＡＮＤ論理ゲート（以下、単にＡＮＤと称す）３１３と、を有する。論理セル群１４は、ＦＦ４０１〜４０４と、ＡＮＤ４０５と、遅延調整回路４０６と、遅延調整回路４０７と、を有する。論理セル群１５は、ＦＦ５０１〜５０３と、セレクタ５０４と、を有する。
【００２０】
なお、本実施の形態では、半導体装置１００が、それぞれ１ビット幅のクロック信号ＣＫ，ＣＫＢと、１７ビット幅の制御信号ＣＭと、３２ビット幅の書き込みデータＤＱ１と、４ビット幅の書き込み用ストローブ信号ＤＱＳ１と、４ビット幅の許可信号ＤＱＭと、をメモリ２００に対して出力する場合を例に説明する。また、本実施の形態では、メモリ２００が、３２ビット幅の読み出しデータＤＱ２と、４ビット幅の読み出し用ストローブ信号ＤＱＳ２と、を半導体装置１００に対して出力する場合を例に説明する。また、本実施の形態では、データのバースト長が８バーストである場合を例に説明する。
【００２１】
まず、半導体装置１００の回路構成について説明する。演算処理回路１とメモリコントローラ２とは送受信線を介して互いに接続される。ＰＬＬ３の出力端子は、分周回路４の入力端子に接続される。分周回路４の一方の出力端子は、メモリコントローラ２のクロック入力端子と、論理セル群１１〜１４と、に接続される。分周回路４の他方の出力端子は、遅延調整回路１６を介して、論理セル群１３，１５に接続される。
【００２２】
メモリコントローラ２の制御信号出力端子は、論理セル群１１に接続される。メモリコントローラ２のデータ出力端子及びデータ入力端子は、論理セル群１３に接続される。メモリコントローラ２の有効信号出力端子は、論理セル群１３に接続される。メモリコントローラ２のマスク信号出力端子は、論理セル群１４に接続される。メモリコントローラ２の許可信号出力端子は、論理セル群１５に接続される。
【００２３】
論理セル群１１は、Ｉ／Ｏバッファ２１にさらに接続される。論理セル群１２は、Ｉ／Ｏバッファ２２，２３にさらに接続される。論理セル群１３は、ＩＯバッファ２４にさらに接続される。論理セル群１４は、ＩＯバッファ２５にさらに接続される。論理セル群１５は、ＩＯバッファ２６にさらに接続される。
【００２４】
ＩＯバッファ２１〜２６は、それぞれ入力バッファ，出力バッファ及び入出力バッファのいずれかとして用いられる。ＩＯバッファ２１〜２６は、図２に示すように、出力バッファ用のスリーステートバッファ７０１と、入力バッファ用のバッファ７０２と、を有する。ＩＯバッファ２１〜２６において、スリーステートバッファ７０１の出力端子は、外部接続端子に接続されるとともに、バッファ７０２の入力端子に接続される。ＩＯバッファ２１〜２６を出力バッファとして用いる場合、スリーステートバッファ７０１は入力信号をそのまま出力するように制御される。
【００２５】
論理セル群１１〜１６の回路構成について説明する。図３に、論理セル群１１のブロック図を示す。論理セル群１１は、メモリコントローラ２から出力された基準制御信号ＰＣＭを、クロック信号ＣＫ１に同期して検出し、制御信号ＣＭとして出力する回路ブロックである。論理セル群１１において、ＦＦ１０１のデータ入力端子は、メモリコントローラ２の制御信号出力端子に接続される。ＦＦ１０１のクロック入力端子は、分周回路４の一方の出力端子に接続される。ＦＦ１０１のデータ出力端子は、ＦＦ１０２のデータ入力端子に接続される。ＦＦ１０２のクロック入力端子は、分周回路４の一方の出力端子に接続される。ＦＦ１０２のデータ出力端子は、ＩＯバッファ２１内に設けられたスリーステートバッファ７０１の入力端子に接続される。このように、ＦＦ１０１，１０２はシフトレジスタを構成する。
【００２６】
図４に、論理セル群１２のブロック図を示す。論理セル群１２は、クロック信号ＣＫ１に基づいて、２相の差動クロック（クロック信号ＣＫ，ＣＫＢ）を生成する回路ブロックである。なお、図１には示していないが、半導体装置１００には、制御信号ＣＭのビット幅に対応する数の論理セル群１１及びＩＯバッファ２１が設けられる。本実施の形態では、制御信号ＣＭのビット幅は１７ビットであるため、１７個の論理セル群１１及び１７個のＩＯバッファ２１が設けられる。
【００２７】
論理セル群１２において、遅延調整回路２０１の入力端子は、分周回路４の一方の出力端子に接続される。遅延調整回路２０１の出力端子は、ＩＯバッファ２２内に設けられたスリーステートバッファ７０１の入力端子に接続される。さらに、遅延調整回路２０１の出力端子は、インバータ２０２を介して、ＩＯバッファ２３内に設けられたスリーステートバッファ７０１の入力端子に接続される。
【００２８】
図５に、論理セル群１３のブロック図を示す。論理セル群１３は、ＩＯバッファ２４を介してメモリ２００等のデータバスに結合され、データ（書き込みデータＤＱ１、読み出しデータＤＱ２）の送受信を行う回路ブロックである。論理セル群１３において、ＦＦ３０１のデータ入力端子は、メモリコントローラ２の上位ビット側のデータ出力端子に接続される。ＦＦ３０１のクロック入力端子は、遅延調整回路１６を介して、分周回路４の他方の出力端子に接続される。ＦＦ３０１のデータ出力端子は、ＦＦ３０２のデータ入力端子に接続される。ＦＦ３０２のクロック入力端子は、遅延調整回路１６を介して、分周回路４の他方の出力端子に接続される。ＦＦ３０２のデータ出力端子は、セレクタ３１０の一方の入力端子に接続される。このように、ＦＦ３０１，３０２はシフトレジスタを構成する。
【００２９】
論理セル群１３において、ＦＦ３０３のデータ入力端子は、メモリコントローラ２の下位ビット側のデータ出力端子に接続される。ＦＦ３０３のクロック入力端子は、遅延調整回路１６を介して、分周回路４の他方の出力端子に接続される。ＦＦ３０３のデータ出力端子は、セレクタ３１０の他方の入力端子に接続される。セレクタ３１０の制御端子は、遅延調整回路１６を介して、分周回路４の他方の出力端子に接続される。セレクタ３１０の出力端子は、ＩＯバッファ２３内に設けられたスリーステートバッファ７０１の入力端子に接続される。
【００３０】
論理セル群１３において、ＡＮＤ３１３の一方の入力端子は、メモリコントローラ２の有効信号出力端子に接続される。ＡＮＤ３１３の他方の入力端子は、ＦＦ３０９のデータ出力端子に接続される。ＡＮＤ３１３の出力端子は、ＦＦ３０９のデータ入力端子に接続される。ＦＦ３０９のクロック入力端子は、分周回路４の一方の出力端子に接続される。ＦＦ３０９の出力端子は、セレクタ３１１の制御端子と、セレクタ３１２の制御端子と、にさらに接続される。
【００３１】
論理セル群１３において、ＦＦ３０５のデータ入力端子は、ＩＯバッファ２４内に設けられたバッファ７０２の出力端子に接続される。ＦＦ３０５のクロック入力端子は、ノードＮ１４に接続される。ＦＦ３０５のデータ出力端子は、ＦＦ３０４のデータ入力端子及びＦＦ３０６のデータ入力端子に接続される。ＦＦ３０４のクロック入力端子は、ノードＮ１５に接続される。ＦＦ３０４のデータ出力端子は、セレクタ３１１の一方の入力端子に接続される。ＦＦ３０６のクロック入力端子は、ノードＮ１５に接続される。ＦＦ３０６のデータ出力端子は、セレクタ３１１の他方の入力端子に接続される。セレクタ３１１の出力端子は、メモリコントローラ２の下位ビット側のデータ入力端子に接続される。
【００３２】
論理セル群１３において、ＦＦ３０７のデータ入力端子は、ＩＯバッファ２４内に設けられたバッファ７０２の出力端子に接続される。ＦＦ３０７のクロック入力端子は、ノードＮ１５に接続される。ＦＦ３０７のデータ出力端子は、セレクタ３１２の一方の入力端子に接続される。ＦＦ３０８のデータ入力端子は、ＩＯバッファ２４内に設けられたバッファ７０２の出力端子に接続される。ＦＦ３０８のクロック入力端子は、ノードＮ１５に接続される。ＦＦ３０８のデータ出力端子は、セレクタ３１２の他方の入力端子に接続される。セレクタ３１２の出力端子は、メモリコントローラ２の上位ビット側のデータ入力端子に接続される。
【００３３】
なお、図１には示していないが、半導体装置１００には、書き込みデータＤＱ１又は読み出しデータＤＱ２のビット幅に応じた数の論理セル群１３及びＩＯバッファ２４が設けられる。本実施の形態では、書き込みデータＤＱ１のビット幅は３２ビットであるため、３２個の論理セル群１３及び３２個のＩＯバッファ２４が設けられる。
【００３４】
図６に、論理セル群１４のブロック図を示す。論理セル群１４は、ＩＯバッファ２５を介して入力された読み出し用ストローブ信号ＤＱＳ２に対し、遅延調整回路４０７にて所定の遅延を付加する回路ブロックである。さらに、論理セル群１４は、遅延調整回路４０６にて所定の遅延を付加した書き込み用ストローブ信号ＤＱＳ１を、ＩＯバッファ２５を介して出力する回路ブロックである。論理セル群１４において、ＦＦ４０１のデータ入力端子は、メモリコントローラ２のマスク信号出力端子に接続される。ＦＦ４０１のクロック入力端子は、分周回路４の一方の出力端子に接続される。ＦＦ４０１のデータ出力端子は、ＦＦ４０２のデータ入力端子に接続される。ＦＦ４０２のクロック入力端子は、分周回路４の一方の出力端子に接続される。ＦＦ４０２のデータ出力端子は、ＡＮＤ４０５の一方の入力端子に接続される。ＡＮＤ４０５の他方の入力端子は、分周回路４の一方の出力端子に接続される。ＡＮＤ４０５の出力端子は、遅延調整回路４０６の入力端子に接続される。遅延調整回路４０６の出力端子は、ＩＯバッファ２５内に設けられたスリーステートバッファ７０１の入力端子に接続される。
【００３５】
論理セル群１４において、遅延調整回路４０７の入力端子は、ＩＯバッファ２５内に設けられたバッファ７０２の出力端子に接続される。遅延調整回路４０７の出力端子は、ＦＦ４０４のクロック入力端子と、ＦＦ４０３のクロック入力端子と、ノードＮ１４と、に接続される。ＦＦ４０４のデータ入力端子は、ノードＮ１５と、ＦＦ４０３のデータ出力端子と、に接続される。ＦＦ４０４のデータ出力端子は、ＦＦ４０３のデータ入力端子に接続される。
【００３６】
なお、図１には示していないが、半導体装置１００には、書き込み用ストローブ信号ＤＱＳ１又は読み出し用ストローブ信号ＤＱＳ２のビット幅に応じた数の論理セル群１４及びＩＯバッファ２５が設けられる。本実施の形態では、書き込み用ストローブ信号ＤＱＳ１及び読み出し用ストローブ信号ＤＱＳ２のビット幅はそれぞれ４ビットであるため、４個の論理セル群１４及び４個のＩＯバッファ２５が設けられる。
【００３７】
なお、本実施の形態では、４個の論理セル群１４のうち、０ビット目の読み出し用ストローブ信号ＤＱＳ２［０］に対応する１個の論理セル群１４と、０〜７ビット目の読み出しデータＤＱ２［７：０］に対応する８個の論理セル群１３と、が接続される。また、１ビット目の読み出し用ストローブ信号ＤＱＳ２［１］に対応する１個の論理セル群１４と、８〜１５ビット目の読み出しデータＤＱ２［１５：８］に対応する８個の論理セル群１３と、が接続される。また、２ビット目の読み出し用ストローブ信号ＤＱＳ２［２］に対応する１個の論理セル群１４と、１６〜２３ビット目の読み出しデータＤＱ２［２３：１６］に対応する８個の論理セル群１３と、が接続される。３ビット目の読み出し用ストローブ信号ＤＱＳ２［３］に対応する１個の論理セル群１４と、２４〜３１ビット目の読み出しデータＤＱ２［３１：２４］に対応する８個の論理セル群１３と、が接続される。
【００３８】
図７に、論理セル群１５のブロック図を示す。論理セル群１５は、基準許可信号ＰＤＱＭを、クロック信号ＤＣＫ２に同期して検出し、許可信号ＤＱＭとして出力する回路ブロックである。なお、許可信号ＤＱＭは、メモリ２００に対して書き込みデータＤＱ１の書き込みを許可するための信号である。論理セル群１５において、ＦＦ５０１のデータ入力端子は、メモリコントローラ２の上位ビット側の許可信号出力端子に接続される。ＦＦ５０１のクロック入力端子は、遅延調整回路１６を介して、分周回路４の他方の出力端子に接続される。ＦＦ５０１のデータ出力端子は、ＦＦ５０２のデータ入力端子に接続される。ＦＦ５０２のクロック入力端子は、遅延調整回路１６を介して、分周回路４の他方の出力端子に接続される。ＦＦ５０２のデータ出力端子は、セレクタ５０４の一方の入力端子に接続される。このように、ＦＦ５０１，５０２はシフトレジスタを構成する。
【００３９】
論理セル群１５において、ＦＦ５０３のデータ入力端子は、メモリコントローラ２の下位ビット側の許可信号出力端子に接続される。ＦＦ５０３のクロック入力端子は、遅延調整回路１６を介して、分周回路４の他方の出力端子に接続される。ＦＦ５０３のデータ出力端子は、セレクタ５０４の他方の入力端子に接続される。セレクタ５０４の制御端子は、遅延調整回路１６を介して、分周回路４の他方の出力端子に接続される。セレクタ５０４の出力端子は、ＩＯバッファ２６内に設けられたスリーステートバッファ７０１の入力端子に接続される。
【００４０】
次に、半導体装置１００の動作について説明する。
【００４１】
演算処理回路１は、メモリコントローラ２に対してコマンドを与えるとともに、各遅延調整回路の遅延量を調整する機能を有する。メモリコントローラ２は、演算処理回路１から与えられたコマンドに基づいて、メモリ２００に書き込むデータの生成、メモリ２００から読み出されたデータの受信及び関連する制御信号の生成等を行う。
【００４２】
ＰＬＬ３は、内部クロックを生成し、分周回路４に対して出力する。分周回路４は、内部クロックを４分周したクロック信号（第１のクロック信号）ＣＫ１を生成し、一方の出力端子から出力する。さらに分周回路４は、内部クロックを４分周し、クロック信号ＣＫ１と位相が２７０°異なるクロック信号ＣＫ２を生成し、他方の出力端子から出力する。論理セル群１２は、クロック信号ＣＫ１に遅延を付加したクロック信号（基準クロック）ＣＫ，ＣＫＢを生成し、ＩＯバッファ２２を介して、メモリ２００に対して出力する。なお、クロック信号ＣＫＢは、クロック信号ＣＫの反転信号である。また、遅延調整回路１６は、クロック信号ＣＫ２に遅延を付加したクロック信号ＤＣＫ２を生成する。
【００４３】
メモリコントローラ２は、制御信号出力端子から基準制御信号ＰＣＭを出力する。そして、論理セル群１１は、基準制御信号ＰＣＭに基づいて制御信号ＣＭを生成し、ＩＯバッファ２１を介して、メモリ２００に対して出力する。より具体的には、論理セル群１１において、ＦＦ１０１は、基準制御信号ＰＣＭをクロック信号ＣＫ１に同期して検出し、ＦＦ１０２に対して出力する。ＦＦ１０２は、ＦＦ１０１によって検出された基準制御信号ＰＣＭをクロック信号ＣＫ１の立ち下がりに同期して検出し、制御信号ＣＭとして、ＩＯバッファ２１を介して、メモリ２００に対して出力する。
【００４４】
なお、制御信号ＣＭには、例えば、アドレス信号ＡＤＤ、チップセレクト信号ＣＳＢ、ロウアドレスストローブ信号ＲＡＳＢ、カラムアドレスストローブ信号ＣＡＳＢ、ライトイネーブル信号ＷＥ及びクロックイネーブル信号ＣＫＥが含まれる。メモリ２００は、クロック信号ＣＫ，ＣＫＢに同期して、データの書き込み（ライトモード）又は読み出し（リードモード）のモード切り替え、データの書き込み又は読み出し対象となるアドレスの指定等を行う。
【００４５】
また、メモリコントローラ２は、データ出力端子から基準書き込みデータＰＤＱ１を出力する。そして、論理セル群１３は、基準書き込みデータＰＤＱ１に基づいて書き込み対象となる書き込みデータＤＱ１を生成し、ＩＯバッファ２４を介して、メモリ２００に対して出力する。なお、基準書き込みデータＰＤＱ１は６４ビット幅を有する。
【００４６】
より具体的には、論理セル群１３において、ＦＦ３０１は、上位ビット側（例えば、第３１ビット目）の基準書き込みデータＰＤＱ１をクロック信号ＤＣＫの立ち上がりに同期して検出し、ＦＦ３０２に対して出力する。ＦＦ３０２は、ＦＦ３０１によって検出された基準書き込みデータＰＤＱ１をクロック信号ＤＣＫの立ち下がりに同期して検出し、セレクタ３１０に対して出力する。一方、ＦＦ３０３は、下位ビット側（例えば、第０ビット目）の基準書き込みデータＰＤＱ１をクロック信号ＤＣＫの立ち上がりに同期して検出し、セレクタ３１０に対して出力する。セレクタ３１０は、上位ビット側の基準書き込みデータＰＤＱ１及び下位ビット側の基準書き込みデータＰＤＱ１を、クロック信号ＤＣＫによって交互に選択して出力する。このように、３２個の各論理セル群１３は、対応する１組の上位ビット側及び下位ビット側の基準書き込みデータＰＤＱ１に基づいて、対応するビットの書き込みデータＤＱ１を出力する。つまり、３２個の論理セル群１３は、クロック信号ＤＣＫの両エッジに同期して、上位３２ビット側及び下位３２ビット側の基準書き込みデータＰＤＱ１を交互に書き込みデータＤＱ１として出力する。
【００４７】
メモリコントローラ２は、マスク信号出力端子からマスク信号ＭＳを出力する。論理セル群１４は、マスク信号ＭＳがオン（例えば、ハイレベル）の期間中、クロック信号ＣＫ１をマスクして、ＩＯバッファ２５を介して、書き込み用ストローブ信号ＤＱＳ１としてメモリ２００に対して出力する。
【００４８】
より具体的には、論理セル群１４において、ＦＦ４０１は、マスク信号ＭＳをクロック信号ＣＫ１の立ち上がりに同期して検出し、ＦＦ４０２に対して出力する。ＦＦ４０２は、ＦＦ４０１によって検出されたマスク信号ＭＳをクロック信号ＣＫ１の立ち下がりに同期して検出し、ＡＮＤ４０５の一方の入力端子に出力する。ＡＮＤ４０５は、ＦＦ４０２によって検出されたマスク信号ＭＳがオンの期間中、クロック信号ＣＫ１をそのまま出力する。遅延調整回路４０６は、マスクされたクロック信号ＣＫ１に遅延を付加して、書き込み用ストローブ信号ＤＱＳ１として出力する。なお、４個の論理セル群１４は、それぞれ８個の異なる論理セル群１３を制御する。そして、メモリ２００は、書き込み用ストローブ信号ＤＱＳ１に同期して、書き込みデータＤＱ１の書き込みを行う。
【００４９】
また、論理セル群１４には、メモリ２００から出力された読み出し用ストローブ信号ＤＱＳ２が、ＩＯバッファ２４を介して入力される。論理セル群１４は、読み出し用ストローブ信号ＤＱＳ２に遅延を付加した遅延ストローブ信号ＤＱＳ２Ａを生成し、論理セル群１３に対して出力する。
【００５０】
より具体的には、論理セル群１４において、遅延調整回路４０７は、読み出し用ストローブ信号ＤＱＳ２に遅延を付加して、遅延ストローブ信号ＤＱＳ２ＡとしてＦＦ４０３，４０４に対して出力する。ＦＦ４０４は、遅延ストローブ信号ＤＱＳ２Ａの立ち上がりに同期して、ＦＦ４０３の出力値を検出し、ＦＦ４０３に対して出力する。ＦＦ４０３は、遅延ストローブ信号ＤＱＳ２Ａの立ち下がりに同期して、ＦＦ４０４の出力値を検出し、ノードＮ１５に向けて出力する。つまり、ＦＦ４０３，４０４は、遅延ストローブ信号ＤＱＳ２Ａを２分周して、遅延ストローブ信号ＤＱＳ２Ｂとして、ノードＮ１５に向けて出力する。また、ノードＮ１４には、遅延ストローブ信号ＤＱＳ２Ａが供給される。
【００５１】
メモリコントローラ２内に設けられたタイミング調整回路５は、有効信号出力端子から有効信号ＥＮを出力する。論理セル群１３は、有効信号ＥＮがオン（例えば、ハイレベル）の期間中の読み出しデータＤＱ２を検出可能である。つまり、論理セル群１３は、有効信号ＥＮがオンの期間中の読み出しデータＤＱ２を、遅延ストローブ信号ＤＱＳ２Ａの両エッジに同期して検出する。論理セル群１３は、遅延ストローブ信号ＤＱＳ２Ａの両エッジに同期して検出された読み出しデータＤＱ２を、さらに、クロック信号ＣＫ１に同期して検出し、基準読み出しデータＰＤＱ２として、メモリコントローラ２に対して出力する。つまり、クロックの乗せ換えが行われる。
【００５２】
論理セル群１３についてさらに説明する。論理セル群１３には、メモリ２００から読み出された読み出しデータＤＱ２が、ＩＯバッファ２４を介して入力される。論理セル群１３は、読み出しデータＤＱ２に基づいて基準読み出しデータＰＤＱ２を生成し、メモリコントローラ２に対して出力する。なお、基準読み出しデータＰＤＱ２は、６４ビット幅を有する。
【００５３】
より具体的には、ＦＦ３０５は、読み出しデータＤＱ２を、遅延ストローブ信号ＤＱＳ２Ａの立ち上がりに同期して検出し、ＦＦ３０４，３０６に対して出力する。ＦＦ３０４は、ＦＦ３０５によって検出された読み出しデータＤＱ２を、遅延ストローブ信号ＤＱＳ２Ｂの立ち上がりに同期して検出し、セレクタ３１１に対して出力する。ＦＦ３０６は、ＦＦ３０５によって検出された読み出しデータＤＱ２を、遅延ストローブ信号ＤＱＳ２Ｂの立ち下がりに同期して検出し、セレクタ３１１に対して出力する。ＦＦ３０７は、読み出しデータＤＱ２を、遅延ストローブ信号ＤＱＳ２Ｂの立ち上がりに同期して検出し、セレクタ３１２に対して出力する。ＦＦ３０８は、読み出しデータＤＱ２を、遅延ストローブ信号ＤＱＳ２Ｂの立ち下がりに同期して検出し、セレクタ３１２に対して出力する。ここで、有効信号ＥＮがオフの場合、ＦＦ３０９は、ロウレベルの信号を出力し続ける。有効信号ＥＮがオンの場合、ＦＦ３０９は、クロック信号ＣＫ１を２分周して、セレクタ３１１，３１２に対して出力する。
【００５４】
したがって、有効信号ＥＮがオンの場合、セレクタ３１１は、クロック信号ＣＫ１の立ち上がりに同期して、ＦＦ３０４の出力及びＦＦ３０６の出力を交互に選択して出力する。同様に、有効信号ＥＮがオンの場合、セレクタ３１２は、クロック信号ＣＫ１の立ち上がりに同期して、ＦＦ３０７の出力及びＦＦ３０８の出力を交互に選択して出力する。このように、３２個の各論理セル群１３は、対応するビットの読み出しデータＤＱ２に基づいて、対応する１組の上位ビット側及び下位ビット側の基準読み出しデータＰＤＱ２を出力する。つまり、３２個の論理セル群１３は、クロック信号ＣＫ１の立ち上がりに同期して、８バーストの読み出しデータＤＱ２を、上位３２ビット側及び下位３２ビット側に分けて交互に基準読み出しデータＰＤＱ２として出力する。
【００５５】
メモリコントローラ２は、許可信号出力端子から基準許可信号ＰＤＱＭを出力する。論理セル群１５は、基準許可信号ＰＤＱＭに基づいて許可信号ＤＱＭを生成し、ＩＯバッファ２６を介して、メモリ２００に対して出力する。なお、基準許可信号ＰＤＱＭは、８ビット幅を有する。
【００５６】
より具体的には、論理セル群１５において、ＦＦ５０１は、上位ビット側（例えば、第４ビット目）の基準許可信号ＰＤＱＭをクロック信号ＤＣＫの立ち上がりに同期して検出し、ＦＦ５０２に対して出力する。ＦＦ５０２は、ＦＦ５０１によって検出された基準許可信号ＰＤＱＭをクロック信号ＤＣＫの立ち下がりに同期して検出し、セレクタ５０４に対して出力する。一方、ＦＦ５０３は、下位ビット側（例えば、第０ビット目）の基準許可信号ＰＤＱＭをクロック信号ＤＣＫの立ち上がりに同期して検出し、セレクタ５０４に対して出力する。セレクタ５０４は、上位ビット側の基準許可信号ＰＤＱＭ及び下位ビット側の基準許可信号ＰＤＱＭを、クロック信号ＤＣＫによって交互に選択して、許可信号ＤＱＭとして出力する。
【００５７】
このように、４個の各論理セル群１５は、対応する１組の上位ビット側及び下位ビット側の基準許可信号ＰＤＱＭに基づいて、対応するビットの許可信号ＤＱＭを出力する。つまり、４個の論理セル群１５は、クロック信号ＤＣＫの両エッジに同期して、上位４ビット側及び下位４ビット側の基準許可信号ＰＤＱＭを交互に選択して、許可信号ＤＱＭとして出力する。なお、メモリ２００は、許可信号ＤＱＭがオンの期間中、書き込みデータＤＱ１の書き込みを行うことができる。
【００５８】
次に、図１に示す半導体装置１００の動作を、図８及び図９のタイミングチャートを用いて説明する。図８は、リードモードの場合における半導体装置１００の動作を示すタイミングチャートである。図９は、ライトモードの場合における半導体装置１００の動作を示すタイミングチャートである。なお、図８及び図９に示す波形に付された括弧付きの番号と、図１〜図７に示す回路に付された括弧付きの番号と、は対応している。
【００５９】
まず、ライトモードの場合における半導体装置１００の動作を、図８を用いて説明する。まず、メモリコントローラ２は、ライトモードの基準制御信号ＰＣＭを生成する（Ｓ３）。次に、メモリコントローラ２は、６４ビット幅を有する基準書き込みデータＰＤＱ１を生成する（Ｓ４）。図８の例では、メモリコントローラ２は、基準書き込みデータＰＤＱ１の上位３２ビット側から、データＤ０，Ｄ２，Ｄ４，Ｄ６を、クロック信号ＣＫ１の立ち上がりに同期して順に出力する。同様に、メモリコントローラ２は、基準書き込みデータＰＤＱ１の下位３２ビット側から、データＤ１，Ｄ３，Ｄ５，Ｄ７を、クロック信号ＣＫ１の立ち上がりに同期して順に出力する。メモリコントローラ２は、データＤ０〜Ｄ７を出力している期間中、基準許可信号ＰＤＱＭをオンに制御する（Ｓ５）。さらに、メモリコントローラ２は、クロック信号ＣＫ１をマスクして書き込み用ストローブ信号ＤＱＳ１を生成するために、マスク信号ＭＳをオンにする（Ｓ６）。
【００６０】
論理セル群１１は、ライトモードの基準制御信号ＰＣＭに基づいて、ライトモードの制御信号ＣＭを出力する（Ｓ１０）。論理セル群１２は、クロック信号ＣＫ１（Ｓ１）に基づいてクロック信号ＣＫ，ＣＫＢを出力する（Ｓ８，Ｓ９）。論理セル群１３は、クロック信号ＤＣＫの両エッジに同期して、上位３２ビット側及び下位３２ビット側の基準書き込みデータＰＤＱ１を交互に選択して、書き込みデータＤＱ１として出力する（Ｓ１１）。つまり、論理セル群１３は、クロック信号ＤＣＫの両エッジに同期して、データＤ０〜Ｄ７を順に出力する。
【００６１】
論理セル群１５は、データＤ０〜Ｄ７を出力している期間中、基準許可信号ＰＤＱＭに基づいて許可信号ＤＱＭをオンに制御する（Ｓ１３）。さらに、論理セル群１４は、データＤ０〜Ｄ７を出力している期間中、マスクされたクロック信号ＣＫ１を書き込み用ストローブ信号ＤＱＳ１として出力する（Ｓ１２）。このように、書き込みデータＤＱ１及び書き込み用ストローブ信号ＤＱＳ１は、それぞれ位相の異なるクロック信号ＣＫ１及びクロック信号ＤＣＫに同期して生成される。メモリ２００は、書き込み用ストローブ信号ＤＱＳ１に同期して、指定されたアドレスの記憶領域に書き込みデータＤＱ１を書き込む。
【００６２】
次に、リードモードの場合における半導体装置１００の動作を、図９を用いて説明する。まず、メモリコントローラ２は、リードモードの基準制御信号ＰＣＭを生成する。論理セル群１１は、リードモードの基準制御信号ＰＣＭに基づいて、リードモードの制御信号ＣＭを出力する（Ｓ１０）。その後、３クロック分のレイテンシ及び外部遅延（ｔＡＣ）の期間を経て、メモリ２００は、クロック信号ＣＫ，ＣＫＢに同期して読み出しデータＤＱ２を出力し始める（Ｓ１１）。図９の例では、読み出しデータＤＱ２は、８バーストのデータＤ０〜Ｄ７によって構成される。また、メモリ２００は、データＤ０〜Ｄ７を出力している期間中、読み出し用ストローブ信号ＤＱＳ２出力する（Ｓ１２）。
【００６３】
論理セル群１４において、遅延調整回路４０７は、読み出し用ストローブ信号ＤＱＳ２に遅延を付加し、遅延ストローブ信号ＤＱＳ２Ａとして出力する（Ｓ１４）。論理セル群１４は、さらに、遅延ストローブ信号ＤＱＳ２Ａを２分周して、遅延ストローブ信号ＤＱＳ２Ｂとして出力する（Ｓ１５）。
【００６４】
論理セル群１３において、ＦＦ３０５は、読み出しデータＤＱ２を、遅延ストローブ信号ＤＱＳ２Ａの立ち上がりに同期して検出し、ＦＦ３０４，３０６に対して出力する。図９の例では、ＦＦ３０５は、遅延ストローブ信号ＤＱＳ２Ａの立ち上がりに同期して、データＤ０，Ｄ２，Ｄ４，Ｄ６を順に出力する（Ｓ１６）。
【００６５】
ＦＦ３０４は、ＦＦ３０５によって検出された読み出しデータＤＱ２を、遅延ストローブ信号ＤＱＳ２Ｂの立ち上がりに同期して検出し、セレクタ３１１に対して出力する。図９の例では、ＦＦ３０４は、遅延ストローブ信号ＤＱＳ２Ｂの立ち上がりに同期して、データＤ０，Ｄ４を順に出力する（Ｓ１７）。ＦＦ３０６は、ＦＦ３０５によって検出された読み出しデータＤＱ２を、遅延ストローブ信号ＤＱＳ２Ｂの立ち下がりに同期して検出し、セレクタ３１１に対して出力する。図９の例では、ＦＦ３０６は、遅延ストローブ信号ＤＱＳ２Ｂの立ち下がりに同期して、データＤ２，Ｄ６を順に出力する。（Ｓ１８）。
【００６６】
ＦＦ３０７は、読み出しデータＤＱ２（Ｓ１１）を、遅延ストローブ信号ＤＱＳ２Ｂの立ち上がりに同期して検出し、セレクタ３１２に対して出力する。図９の例では、ＦＦ３０７は、遅延ストローブ信号ＤＱＳ２Ｂの立ち上がりに同期して、データＤ１，Ｄ５を順に出力する（Ｓ１９）。
【００６７】
ＦＦ３０８は、読み出しデータＤＱ２（Ｓ１１）を、遅延ストローブ信号ＤＱＳ２Ｂの立ち下がりに同期して検出し、セレクタ３１２に対して出力する。図９の例では、ＦＦ３０８は、遅延ストローブ信号ＤＱＳ２Ｂの立ち下がりに同期して、データＤ３，Ｄ７を順に出力する（Ｓ２０）。
【００６８】
メモリコントローラ２内に設けられたタイミング調整回路５は、有効信号ＥＮをオンに制御する（Ｓ２１）。有効信号ＥＮがオンの期間中、セレクタ３１１は、クロック信号ＣＫ１（Ｓ１）の立ち上がりに同期して、ＦＦ３０４の出力及びＦＦ３０６の出力を交互に選択して出力する。図９の例では、セレクタ３１１は、クロック信号ＣＫ１の立ち上がりに同期して、データＤ０，Ｄ２，Ｄ４，Ｄ６を順に出力する（Ｓ２２の上段）。同様に、有効信号ＥＮがオンの期間中、セレクタ３１２は、クロック信号ＣＫ１の立ち上がりに同期して、ＦＦ３０７の出力及びＦＦ３０８の出力を交互に選択して出力する。図９の例では、セレクタ３１２は、クロック信号ＣＫ１の立ち上がりに同期して、データＤ１，Ｄ３，Ｄ５，Ｄ７を順に出力する（Ｓ２２の下段）。このように、３２個の論理セル群１３は、クロック信号ＣＫ１の立ち上がりに同期して、８バーストの読み出しデータＤＱ２を、上位３２ビット側及び下位３２ビット側に分けて交互に基準読み出しデータＰＤＱ２として出力する。
【００６９】
このように、半導体装置１００とメモリ２００とは、複数の信号線を介して高速にデータの送受信が行われる。また、半導体装置１００において、メモリコントローラ２とＩＯバッファ２１〜２６との間には、それぞれ複数の論理セルが設けられている。このような場合において、半導体装置１００とメモリ２００との間のＡＣタイミングを調整するためには、半導体装置１００に設けられた論理セルを、対応するＩＯバッファ２１〜２６の近傍に配置することにより、配線遅延の誤差を抑制する等の対策をする必要がある。しかし、半導体装置１００は、ＲＴＬ設計、論理合成及びレイアウト設計の工程を経て設計されるのが一般的である。したがって、従来技術においてＡＣタイミングを調整する場合、論理合成後に生成されるネットリストから対象となる論理セルを選択し、対応するＩＯバッファの近傍に配置する等の工数がかかってしまうという問題があった。
【００７０】
そこで、本実施の形態では、メモリコントローラ２と各ＩＯバッファ２１〜２６との間に設けられたそれぞれの論理セル群１１〜１５を予めハードマクロ化して、他の論理セルと同様にライブラリに登録しておく。ここで、ハードマクロとは、特定用途向けの回路ブロックであって、予めトランジスタの配置及び配線が決定された状態のものをいう。なお、ハードマクロ内は予めタイミング調整されている。そして、レイアウト設計において、ハードマクロ化された論理セル群１１〜１５を、対応するＩＯバッファ２１〜２６の近傍に配置する。このとき、ＩＯバッファ２１〜２６のうちいずれかのＩＯバッファと、対応するハードマクロと、を接続する信号線が、他のＩＯバッファと、対応するハードマクロとを接続する信号線の遅延量に応じた遅延量を有する。また、ＩＯバッファ２１〜２６のうちいずれかのＩＯバッファと、対応するハードマクロと、を接続する信号線が、他のＩＯバッファと、対応するハードマクロとを接続する信号線の配線長に応じた配線長を有する。
【００７１】
好ましくは、ハードマクロ化された論理セル群１１〜１５と、対応するＩＯバッファ２１〜２６と、を接続する各信号線の遅延量が、略同一になるように配置される。また、ハードマクロ化された論理セル群１１〜１５と、対応するＩＯバッファ２１〜２６と、を接続する各信号線の配線長が、略同一になるように配置される。
【００７２】
なお、ハードマクロ化された論理セル群１１〜１５と、対応するＩＯバッファ２１〜２６と、を接続する各信号線の遅延量が、完全に同一になるように配置される必要はない。ＡＣタイミングの調整が容易になる範囲内の遅延量に収まっていれば良い。また、ハードマクロ化された論理セル群１１〜１５と、対応するＩＯバッファ２１〜２６と、を接続する各信号線の配線長が、完全に同一になるように配置される必要はない。ＡＣタイミングの調整が容易になる範囲内の配線長に収まっていれば良い。
【００７３】
図１０に、半導体装置１００のレイアウトを簡略化した図を示す。図１０に示すように、紙面の中央から右寄りにメモリコントローラ２が配置されている。半導体装置１００の外枠に沿って複数のＩＯバッファが配置されている。具体的には、クロック信号ＣＫ，ＣＫＢ用のＩＯバッファ２２，２３と、制御信号ＣＭ用の１７ビット分のＩＯバッファ２１と、が半導体装置１００の外枠（紙面の縦方向）に沿って順に配置されている。また、許可信号ＤＱＭ用の４ビット分のＩＯバッファ２６と、ストローブ信号ＤＱＳ１，ＤＱＳ２用の４ビット分のＩＯバッファ２５と、データＤＱ１，ＤＱ２用の３２ビット分のＩＯバッファ２４と、が半導体装置１００の外枠（紙面の横方向）に沿って順に配置されている。ここで、図１０に示すように、ハードマクロ化された論理セル群１１〜１５は、対応するＩＯバッファ２１〜２６の近傍に配置されている。
【００７４】
その後の工程では、クロックラインのタイミング調整が行われる。このとき、ＰＬＬ３から各ハードマクロ（論理セル群１１〜１５）に設けられたクロック入力端子までの遅延ばらつき（スキュー）が調整される。その後、ＳＴＡ（Ｓｔａｔｉｃ  ｔｉｍｉｎｇ  ａｎａｌｙｓｉｓ）により、ＰＬＬ３から各ハードマクロ（論理セル群１１〜１５）内に設けられた各フリップフロップのクロック入力端子までの絶対遅延が測定され、ばらつきの微調整が行われる。ここで、各ハードマクロ内部は、予めタイミング調整されている。つまり、半導体装置１００の設計において、各ハードマクロ内部のタイミング調整を行う必要がないため、全体のタイミング調整が容易になる。また、本実施の形態では、各ハードマクロを対応するＩＯバッファの近傍に配置することにより、容易にＡＣタイミングの調整を行うことができる。つまり、本実施の形態では、従来技術と異なり、レイアウト設計時において、多数存在する論理セルの中から対象となる論理セルを選び出し、対応するＩＯバッファの近傍に配置する必要がなくなる。したがって、本実施の形態では、設計にかかる工数を削減することができる。
【００７５】
実施の形態２
実施の形態１に示したように、半導体装置１００は、ＲＴＬ設計、論理合成、レイアウト設計及びＳＴＡ（Ｓｔａｔｉｃ  ｔｉｍｉｎｇ  ａｎａｌｙｓｉｓ）の工程を経て設計されるのが一般的である。レイアウト設計等では、クロックラインのタイミング調整が行われる。このとき、ＰＬＬ３から各ハードマクロ（論理セル群１１〜１５）に設けられたクロック入力端子までの遅延ばらつき（スキュー）が調整される。しかし、一度タイミング調整した後でも、メモリ２００等の外部負荷の影響を受けて、ＩＯバッファ２１〜２６の遅延量が変化してしまう可能性がある。このような外部負荷の影響を排除するために、本実施の形態にかかる半導体装置１００は、遅延調整回路１６と、遅延調整回路２０１（図４参照）と、遅延調整回路４０６（図６参照）を用いることにより、対応する信号に対して付加する遅延量を調整する。遅延調整回路１６，２０１，４０６は、例えば、複数の遅延バッファと、セレクタと、により構成される。各遅延バッファは並列に設けられ、入力信号に対してそれぞれ異なる遅延量を付加して出力する。セレクタは、ＣＰＵ１からの制御信号に基づいて、複数の遅延バッファからの出力信号のうち、いずれかを選択して出力する。このように、本実施の形態では、遅延調整回路１６，２０１，４０６を用いることにより、外部負荷による影響を受けることなく、データの送受信を行うことができる。
【００７６】
また、本実施の形態にかかる半導体装置１００は、ＬＳＩ設計完了後においても、タイミング調整を行うことができる。つまり、半導体装置１００は、例えば、ＬＳＩ評価時において、実際に用いるＤＤＲ−ＳＤＲＡＭ等のメモリ２００を接続した場合に、正確にデータの読み出し及び書き込みができるようにタイミング調整を行う。
【００７７】
より具体的には、まず、ＣＰＵ１は、論理セル群１４に設けられた遅延調整回路４０７の遅延量を最小値に設定する。例えば、設定値が０〜１６である場合、遅延調整回路４０７は、読み出し用ストローブ信号ＤＱＳ２に対して設定値０に応じた遅延量を付加して、遅延ストローブ信号ＤＱＳ２Ａを出力する。この条件において、まず、半導体装置１００は、テスト用データをメモリ２００に書き込む。次に、半導体装置１００は、メモリ２００に書き込まれたテスト用データを読み出し、遅延ストローブ信号ＤＱＳ２Ａの両エッジに同期して検出する。ＣＰＵ１は、書き込みに使用したテスト用データ（期待値）と、読み出したテスト用データと、を比較して比較結果を記憶する。例えば、ＣＰＵ１は、期待値と、読み出したテスト用データと、が一致する場合には"１"を記憶し、不一致の場合には、"０"を記憶する。
【００７８】
次に、ＣＰＵ１は、設定値を０から１に切り替える。つまり、遅延調整回路４０７は、読み出し用ストローブ信号ＤＱＳ２に対して設定値１に応じた遅延量を付加して、遅延ストローブ信号ＤＱＳ２Ａを出力する。その後、設定値０の場合と同様の動作を経て、ＣＰＵ１は、期待値と、読み出したテスト用データと、を比較して比較結果を記憶する。このように、ＣＰＵ１は、設定値０〜１６のそれぞれの場合において、期待値と、読み出したテスト用データと、を比較して比較結果を記憶する。これにより、１６個の比較結果が得られる。
【００７９】
そして、ＣＰＵ１は、最終的に、比較結果が"１"を示す設定値を遅延調整回路４０７に対して設定する。ここで、比較結果の一致している設定値が連続して存在する場合、それらの中間値を選択する。例えば、設定値０〜１６の比較結果が、順に"００００１１１１１１１０００００"である場合、設定値４〜１０で比較結果が一致しているため、中間値である設定値７を選択する。つまり、設定値７を遅延調整回路４０７に対して設定する。それにより、遅延誤差が生じた場合でも、精度の高いデータの送受信が可能である。なお、このような遅延量の設定は、４個の論理セル群１４のそれぞれに対して実施される。
【００８０】
このように、本実施の形態では、ＬＳＩ設計完了後においても、タイミング調整を行うことができる。それにより、本実施の形態では、精度良くデータの送受信を行うことができる。
【００８１】
なお、特許文献１に示すインターフェース回路（半導体装置）の場合、ＤＤＲ−ＳＤＲＡＭから読み出されたデータを取り込むためにＤＬＬ回路を備える必要がある。しかし、ＤＬＬ回路は実装面積が大きいため、インターフェース回路全体として回路規模が増大するという問題があった。また、それに伴い、消費電力が増大するという問題があった。一方、本実施の形態では、従来技術の場合と異なり、ＤＬＬ回路等の大規模回路を備える代わりに、単純な論理構成の遅延調整回路を備え、ＣＰＵ等の演算処理回路によってそれらの遅延調整を行う。そのため、本実施の形態では、回路規模の増大及び消費電力の増大を抑制することができる。
【００８２】
次に、タイミング調整回路５について説明する。タイミング調整回路５は、半導体装置１００内の内部遅延時間と、制御信号ＣＭがメモリ２００に対して出力されてから対応する読み出しデータＤＱ２が受信されるまでの外部遅延時間と、クロック信号ＣＫ１の周波数と、に基づいて、有効信号ＥＮのオン期間を制御する。ここで、内部遅延時間とは、例えば、分周回路４がクロック信号ＣＫ１を生成してからクロック信号ＣＫとしてＩＯバッファ２２に到達するまでの時間を示す。
【００８３】
図１１及び図１２は、半導体装置１００の動作を示すタイミングチャートである。なお、図１１は、クロック信号ＣＫの周波数が３０ＭＨｚ、内部遅延時間及び外部遅延時間（ｔＡＣ）の合計時間が１５ｎｓである場合の例である。一方、図１２は、クロック信号ＣＫの周波数が１２５ＭＨｚ、内部遅延時間及び外部遅延時間（ｔＡＣ）の合計時間が１５ｎｓである場合の例である。
【００８４】
図１１及び図１２に示すように、内部遅延時間及び外部遅延時間の合計時間がともに１５ｎｓと同じであっても、クロック信号ＣＫ１の周波数によって、データの送受信に与える影響度合いが異なる。
【００８５】
図１１に示すタイミングチャートの場合、内部遅延時間及び外部遅延時間の合計値は、クロック信号ＣＫ１の周期と比較して、相対的に小さい。したがって、メモリコントローラ２がリードモードの基準制御信号ＰＣＭを出力してから（時刻Ｘ）、対応する読み出しデータＤＱ２が論理セル群１３に到達するまで（時刻Ｙ）に要するクロック信号ＣＫ１のクロックサイクル数は少なくてすむ。なお、図１１の例では、当該クロックサイクル数は"３"である。
【００８６】
ここで、メモリコントローラ２がリードモードの制御信号ＰＣＭを出力してから（時刻Ｘ）、２クロックサイクル後のクロック信号ＣＫ１の立ち上がりを基準エッジ（時刻Ｚ）と称す。図１１の例では、基準エッジから１クロックサイクル後に、対応する読み出しデータＤＱ２が論理セル群１３に到達する。このとき、タイミング調整回路５は、基準エッジから１クロックサイクル経過後に有効信号ＥＮをオンする（１ＣＬＫモード）。それにより、メモリコントローラ２は、読み出しデータＤＱ２を正しく受信することができる。
【００８７】
一方、図１２に示すタイミングチャートの場合、内部遅延時間及び外部遅延時間の合計値は、クロック信号ＣＫ１の周期と比較して、相対的に大きい。したがって、メモリコントローラ２がリードモードの制御信号ＰＣＭを出力してから（時刻Ｘ）、対応する読み出しデータＤＱ２が論理セル群１３に到達するまで（時刻Ｙ）に要するクロック信号ＣＫ１のクロックサイクル数は多くなる。図１２の例では、当該クロックサイクル数は"４"である。
【００８８】
ここで、図１２の例では、基準エッジ（時刻Ｚ）から２クロックサイクル後に、対応する読み出しデータＤＱ２が論理セル群１３に到達する。このとき、タイミング調整回路５は、基準エッジから２クロックサイクル経過後に有効信号ＥＮをオンする（２ＣＬＫモード）。それにより、メモリコントローラ２は、読み出しデータＤＱ２を正しく受信することができる。
【００８９】
このように、タイミング調整回路５は、内部遅延時間及び外部遅延時間の合計値と、クロック信号ＣＫ１の周波数と、に基づいて、ＣＬＫモードを切り替える。それにより、メモリコントローラ２は、読み出しデータＤＱ２を正しく受信することができる。
【００９０】
図１３及び図１４は、内部遅延時間及び外部遅延時間の合計値（合計遅延時間Ｔ）と、クロック信号ＣＫ１の周波数と、ＣＬＫモードと、の関係を示す図である。例えば、クロック信号ＣＫ１の周波数が３０ＭＨｚ、内部遅延時間及び外部遅延時間の合計値が４０ｎｓである場合、タイミング調整回路５は、２ＣＬＫモードに設定される。より具体的には、内部遅延時間及び外部遅延時間の合計値が、クロック信号ＣＫ１の１クロックサイクルより小さい場合、タイミング調整回路５は、１ＣＬＫモードに設定される。内部遅延時間及び外部遅延時間の合計値が、クロック信号ＣＫ１の１クロックサイクル以上、２クロックサイクル未満の場合、タイミング調整回路５は、２ＣＬＫモードに設定される。内部遅延時間及び外部遅延時間の合計値が、クロック信号ＣＫ１の２クロックサイクル以上、３クロックサイクル未満の場合、タイミング調整回路５は、３ＣＬＫモードに設定される。
【００９１】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。上記実施の形態では、分周回路４が、クロック信号ＣＫ１と、クロック信号ＣＫ１と位相が２７０°異なるクロック信号ＣＫ２と、を出力する場合を例に説明したが、これに限られない。クロック信号ＣＫ１とクロック信号ＣＫ２との位相差は任意に設定可能である。
【００９２】
また、本実施の形態では、ＣＰＵ１及びメモリコントローラ２が、半導体装置１００の内部に設けられた場合を例に説明したが、これに限られない。ＣＰＵ１及びメモリコントローラ２が、半導体装置１００の外部に設けられた回路構成にも適宜変更可能である。
【符号の説明】
【００９３】
１１〜１５  論理セル群
１  ＣＰＵ
２  メモリコントローラ
３  ＰＬＬ
４  分周回路
５  タイミング調整回路
１６，２０１，４０６，４０７  遅延調整回路
２１〜２６  ＩＯバッファ
１００  半導体装置
２００  メモリ
１０１，１０２，３０１〜３０９，４０１〜４０４，５０１〜５０３  ＦＦ
２０２  インバータ
３１０〜３１２，５０４  セレクタ
３１３，４０５  ＡＮＤ
７０１  スリーステートバッファ
７０２  バッファ
【図１】
2011170771.tif 000003
【図２】
2011170771.tif 000004
【図３】
2011170771.tif 000005
【図４】
2011170771.tif 000006
【図５】
2011170771.tif 000007
【図６】
2011170771.tif 000008
【図７】
2011170771.tif 000009
【図８】
2011170771.tif 000010
【図９】
2011170771.tif 000011
【図１０】
2011170771.tif 000012
【図１１】
2011170771.tif 000013
【図１２】
2011170771.tif 000014
【図１３】
2011170771.tif 000015
【図１４】
2011170771.tif 000016