説明

半導体集積回路及びそのタイミング調整方法

【課題】従来技術の半導体集積回路では、タイミング調整に工数がかかるという問題があった。
【解決手段】本発明にかかる半導体集積回路は、外部メモリと接続される複数の信号線に対応して個別に設けられ前記対応する信号線のタイミングを決定する回路ブロックをマクロ化した論理セル群11〜15と、論理セル群11〜15のそれぞれに対応して設けられたIOバッファ21〜26と、を有する。そして、論理セル群11〜15と対応するIOバッファ21〜26とを結合する配線のそれぞれが略同じ長さを有することを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体集積回路及びそのタイミング調整方法に関する。
【背景技術】
【0002】
DRAM(Synchronous Dynamic Random Access Memory)を含む半導体メモリでは、データの大容量化が求められるとともに、データ転送速度の向上が求められている。データ転送速度の高速化が図られたDRAMの一つに、DDR−SDRAM(Double Data Rate − Synchronous Dynamic Random Access Memory)が挙げられる。DDR−SDRAMでは、クロックの立ち上がりと立ち下がりの両方に同期してデータ転送が可能であるため、従来のSDRAMの2倍以上のデータスループットを実現することが可能となる。
【0003】
DDR−SDRAMとのインターフェースを行うインターフェース回路の動作が、特許文献1に開示されている。特許文献1に開示されたDDR−SDRAMインターフェース回路(以下、単にインターフェース回路と称す)は、クロック発生回路と、出力バッファと、入力バッファと、DLL(Delay Locked Loop)回路と、第1遅延回路と、タイミング制御回路と、を備える。また、第1遅延回路は、第1遅延バッファと、第2遅延バッファと、を有する。タイミング調整回路は、2つのFF(Flip Flop)を有する。
【0004】
クロック発生回路は、内部クロック信号を生成し、第1遅延回路に対して出力する。同時に、クロック発生回路は、メモリクロック信号を生成し、出力バッファを介して、DDR−SDRAMに対して出力する。DDR−SDRAMは、インターフェース回路によって生成されたメモリクロック信号に基づいて、データストローブ信号及びデータ信号を生成し、インターフェース回路に対して出力する。
【0005】
インターフェース回路において、データストローブ信号は、入力バッファを介してDLL回路に入力される。そして、DLL回路は、データストローブ信号の位相を90°遅らせた遅延データストローブ信号を生成する。また、インターフェース回路において、データ信号は、別の入力バッファを介して一方のFFに入力される。一方のFFは、遅延データストローブ信号に同期してデータ信号を取り込み、他方のFFに対して出力する。つまり、一方のFFは、遅延データストローブ信号によってデータ信号をサンプリングする。
【0006】
第1遅延回路は、内部クロック信号に遅延時間を付与して、遅延内部クロック信号を出力する。他方のFFは、一方のFFによってサンプリングされたデータ信号を、遅延内部クロック信号に同期して取り込み、後段の内部回路に対して出力する。このようにして、インターフェース回路は、DDR−SDRAMによって生成されたデータ信号のクロックの乗せ換えを行う。
【0007】
ここで、第1遅延回路内に設けられた第1及び第2遅延バッファは、出力バッファ及びデータストローブ信号の増幅に用いられる入力バッファと同一構成を有している。したがって、インターフェース回路は、遅延データストローブ信号と遅延内部クロック信号との間の遅延時間のばらつきを抑制し、安定したデータの取り込みを行うことができる。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2008−210307号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
高速処理が要求されるインターフェース回路(半導体装置)とメモリとの間の通信において、ACタイミングを調整するためには、当該インターフェース回路に用いられている論理セルを、対応するIOバッファ(入力バッファ及び出力バッファ)の近傍に配置することにより、配線遅延の誤差を抑制する等の対策をする必要がある。しかし、インターフェース回路は、RTL設計、論理合成、レイアウト設計及びSTA(Static timing analysis)の工程を経て設計されるのが一般的である。したがって、従来技術においてACタイミングを調整する場合、論理合成後に生成されるネットリストから対象となる論理セルを選択し、対応するIOバッファの近傍に配置する等の工数がかかってしまうという問題があった。
【課題を解決するための手段】
【0010】
本発明にかかる半導体集積回路は、外部メモリと接続される複数の信号線に対応して個別に設けられ前記対応する信号線のタイミングを決定する回路ブロックをマクロ化したハードマクロと、前記ハードマクロのそれぞれに対応して設けられたIOバッファと、を有し、前記ハードマクロと前記対応する前記IOバッファとを結合する配線のそれぞれが略同じ長さを有することを特徴とする。
【0011】
本発明にかかる半導体集積回路の別の態様は、第1のIOバッファの近傍に配置されると共に前記第1のIOバッファに第1の配線を介して結合され、第1のクロック信号に基づいて生成した基準クロックを前記第1のIOバッファを介して出力する第1のハードマクロと、第2のIOバッファの近傍に配置されると共に前記第2のIOバッファに第2の配線を介して結合され、入力された制御信号を前記第1のクロック信号に同期して前記第2のIOバッファを介して出力する第2のハードマクロと、第3のIOバッファの近傍に配置されると共に前記第3のIOバッファに第3の配線を介して結合され、前記第3のIOバッファを介して入力されたストローブ信号に所定の遅延を付加する第3のハードマクロと、第4のIOバッファの近傍に配置されると共に前記第4のIOバッファに第4の配線を介して結合され、前記第4のIOバッファを介してデータ信号の送受信を行う第4のハードマクロと、を有し、前記第1乃至第4配線の長さが略同じ長さであることを特徴とする。
【0012】
本発明にかかる半導体集積回路のタイミング調整方法は、第1のIOバッファに第1の配線を介して結合され、第1のクロック信号に基づいて生成した基準クロックを前記第1のIOバッファを介して出力する第1のハードマクロと、第2のIOバッファに第2の配線を介して結合され、入力された制御信号を前記第1のクロック信号に同期して前記第2のIOバッファを介して出力する第2のハードマクロと、第3のIOバッファに第3の配線を介して結合され、前記第3のIOバッファを介して入力されたストローブ信号に所定の遅延を付加する第3のハードマクロと、第4のIOバッファに第4の配線を介して結合され、前記第4のIOバッファを介してデータ信号の送受信を行う第4のハードマクロと、を備えた半導体集積回路のタイミング調整方法であって、前記第1乃至第4の配線の長さが同じとなるよう前記第1乃至第4のハードマクロを配置することを特徴とする。
【0013】
上述のような回路構成及びそのタイミング調整方法により、高速処理が要求される場合でも容易にタイミング調整することができる。
【発明の効果】
【0014】
本発明により、高速処理が要求される場合でも容易にタイミング調整することが可能な半導体集積回路及びそのタイミング調整方法を提供することができる。
【図面の簡単な説明】
【0015】
【図1】本発明の実施の形態1にかかる半導体集積回路を示す図である。
【図2】本発明の実施の形態1にかかるIOバッファを示す図である。
【図3】本発明の実施の形態1にかかる論理セル群11を示す図である。
【図4】本発明の実施の形態1にかかる論理セル群12を示す図である。
【図5】本発明の実施の形態1にかかる論理セル群13を示す図である。
【図6】本発明の実施の形態1にかかる論理セル群14を示す図である。
【図7】本発明の実施の形態1にかかる論理セル群15を示す図である。
【図8】本発明の実施の形態1にかかる半導体集積回路の動作を示すタイミングチャートである。
【図9】本発明の実施の形態1にかかる半導体集積回路の動作を示すタイミングチャートである。
【図10】本発明の実施の形態1にかかる半導体集積回路のレイアウト構成を示す図である。
【図11】本発明の実施の形態2にかかる半導体集積回路の動作を示すタイミングチャートである。
【図12】本発明の実施の形態2にかかる半導体集積回路の動作を示すタイミングチャートである。
【図13】内部遅延時間及び外部遅延時間の合計値と、クロック信号CK1の周波数と、CLKモードと、の関係を示す図である。
【図14】内部遅延時間及び外部遅延時間の合計値と、クロック信号CK1の周波数と、CLKモードと、の関係を示す図である。
【発明を実施するための形態】
【0016】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。説明の明確化のため、必要に応じて重複説明は省略される。
【0017】
実施の形態1
図1に、本発明の実施の形態にかかる半導体装置(半導体集積回路)100を示す。半導体装置100は、メモリ200との間でデータの送受信を行う。なお、本実施の形態では、メモリ200がDDR−SDRAMである場合を例に説明する。
【0018】
半導体装置100は、演算処理回路1と、メモリコントローラ2と、PLL(Phase Locked Loop)3と、分周回路4と、論理セル群(第2のハードマクロ)11と、論理セル群(第1のハードマクロ)12と、論理セル群(第4のハードマクロ)13と、論理セル群(第3のハードマクロ)14と、論理セル群15と、遅延調整回路16と、IOバッファ(第2のIOバッファ)21と、IOバッファ(第1のIOバッファ)22,23と、IOバッファ(第4のIOバッファ)24と、IOバッファ(第3のIOバッファ)25と、IOバッファ26と、を備える。また、メモリコントローラ2は、タイミング調整回路5を有する。
【0019】
図2に、IOバッファ21の回路構成を示す。なお、IOバッファ21〜26は同じ回路構成である。図3〜図7に、それぞれ論理セル群11〜15の回路構成を示す。論理セル群11は、FF(Flip Flop)101,102を有する。論理セル群12は、遅延調整回路201と、インバータ202と、を有する。論理セル群13は、FF301〜309と、セレクタ310〜312と、AND論理ゲート(以下、単にANDと称す)313と、を有する。論理セル群14は、FF401〜404と、AND405と、遅延調整回路406と、遅延調整回路407と、を有する。論理セル群15は、FF501〜503と、セレクタ504と、を有する。
【0020】
なお、本実施の形態では、半導体装置100が、それぞれ1ビット幅のクロック信号CK,CKBと、17ビット幅の制御信号CMと、32ビット幅の書き込みデータDQ1と、4ビット幅の書き込み用ストローブ信号DQS1と、4ビット幅の許可信号DQMと、をメモリ200に対して出力する場合を例に説明する。また、本実施の形態では、メモリ200が、32ビット幅の読み出しデータDQ2と、4ビット幅の読み出し用ストローブ信号DQS2と、を半導体装置100に対して出力する場合を例に説明する。また、本実施の形態では、データのバースト長が8バーストである場合を例に説明する。
【0021】
まず、半導体装置100の回路構成について説明する。演算処理回路1とメモリコントローラ2とは送受信線を介して互いに接続される。PLL3の出力端子は、分周回路4の入力端子に接続される。分周回路4の一方の出力端子は、メモリコントローラ2のクロック入力端子と、論理セル群11〜14と、に接続される。分周回路4の他方の出力端子は、遅延調整回路16を介して、論理セル群13,15に接続される。
【0022】
メモリコントローラ2の制御信号出力端子は、論理セル群11に接続される。メモリコントローラ2のデータ出力端子及びデータ入力端子は、論理セル群13に接続される。メモリコントローラ2の有効信号出力端子は、論理セル群13に接続される。メモリコントローラ2のマスク信号出力端子は、論理セル群14に接続される。メモリコントローラ2の許可信号出力端子は、論理セル群15に接続される。
【0023】
論理セル群11は、I/Oバッファ21にさらに接続される。論理セル群12は、I/Oバッファ22,23にさらに接続される。論理セル群13は、IOバッファ24にさらに接続される。論理セル群14は、IOバッファ25にさらに接続される。論理セル群15は、IOバッファ26にさらに接続される。
【0024】
IOバッファ21〜26は、それぞれ入力バッファ,出力バッファ及び入出力バッファのいずれかとして用いられる。IOバッファ21〜26は、図2に示すように、出力バッファ用のスリーステートバッファ701と、入力バッファ用のバッファ702と、を有する。IOバッファ21〜26において、スリーステートバッファ701の出力端子は、外部接続端子に接続されるとともに、バッファ702の入力端子に接続される。IOバッファ21〜26を出力バッファとして用いる場合、スリーステートバッファ701は入力信号をそのまま出力するように制御される。
【0025】
論理セル群11〜16の回路構成について説明する。図3に、論理セル群11のブロック図を示す。論理セル群11は、メモリコントローラ2から出力された基準制御信号PCMを、クロック信号CK1に同期して検出し、制御信号CMとして出力する回路ブロックである。論理セル群11において、FF101のデータ入力端子は、メモリコントローラ2の制御信号出力端子に接続される。FF101のクロック入力端子は、分周回路4の一方の出力端子に接続される。FF101のデータ出力端子は、FF102のデータ入力端子に接続される。FF102のクロック入力端子は、分周回路4の一方の出力端子に接続される。FF102のデータ出力端子は、IOバッファ21内に設けられたスリーステートバッファ701の入力端子に接続される。このように、FF101,102はシフトレジスタを構成する。
【0026】
図4に、論理セル群12のブロック図を示す。論理セル群12は、クロック信号CK1に基づいて、2相の差動クロック(クロック信号CK,CKB)を生成する回路ブロックである。なお、図1には示していないが、半導体装置100には、制御信号CMのビット幅に対応する数の論理セル群11及びIOバッファ21が設けられる。本実施の形態では、制御信号CMのビット幅は17ビットであるため、17個の論理セル群11及び17個のIOバッファ21が設けられる。
【0027】
論理セル群12において、遅延調整回路201の入力端子は、分周回路4の一方の出力端子に接続される。遅延調整回路201の出力端子は、IOバッファ22内に設けられたスリーステートバッファ701の入力端子に接続される。さらに、遅延調整回路201の出力端子は、インバータ202を介して、IOバッファ23内に設けられたスリーステートバッファ701の入力端子に接続される。
【0028】
図5に、論理セル群13のブロック図を示す。論理セル群13は、IOバッファ24を介してメモリ200等のデータバスに結合され、データ(書き込みデータDQ1、読み出しデータDQ2)の送受信を行う回路ブロックである。論理セル群13において、FF301のデータ入力端子は、メモリコントローラ2の上位ビット側のデータ出力端子に接続される。FF301のクロック入力端子は、遅延調整回路16を介して、分周回路4の他方の出力端子に接続される。FF301のデータ出力端子は、FF302のデータ入力端子に接続される。FF302のクロック入力端子は、遅延調整回路16を介して、分周回路4の他方の出力端子に接続される。FF302のデータ出力端子は、セレクタ310の一方の入力端子に接続される。このように、FF301,302はシフトレジスタを構成する。
【0029】
論理セル群13において、FF303のデータ入力端子は、メモリコントローラ2の下位ビット側のデータ出力端子に接続される。FF303のクロック入力端子は、遅延調整回路16を介して、分周回路4の他方の出力端子に接続される。FF303のデータ出力端子は、セレクタ310の他方の入力端子に接続される。セレクタ310の制御端子は、遅延調整回路16を介して、分周回路4の他方の出力端子に接続される。セレクタ310の出力端子は、IOバッファ23内に設けられたスリーステートバッファ701の入力端子に接続される。
【0030】
論理セル群13において、AND313の一方の入力端子は、メモリコントローラ2の有効信号出力端子に接続される。AND313の他方の入力端子は、FF309のデータ出力端子に接続される。AND313の出力端子は、FF309のデータ入力端子に接続される。FF309のクロック入力端子は、分周回路4の一方の出力端子に接続される。FF309の出力端子は、セレクタ311の制御端子と、セレクタ312の制御端子と、にさらに接続される。
【0031】
論理セル群13において、FF305のデータ入力端子は、IOバッファ24内に設けられたバッファ702の出力端子に接続される。FF305のクロック入力端子は、ノードN14に接続される。FF305のデータ出力端子は、FF304のデータ入力端子及びFF306のデータ入力端子に接続される。FF304のクロック入力端子は、ノードN15に接続される。FF304のデータ出力端子は、セレクタ311の一方の入力端子に接続される。FF306のクロック入力端子は、ノードN15に接続される。FF306のデータ出力端子は、セレクタ311の他方の入力端子に接続される。セレクタ311の出力端子は、メモリコントローラ2の下位ビット側のデータ入力端子に接続される。
【0032】
論理セル群13において、FF307のデータ入力端子は、IOバッファ24内に設けられたバッファ702の出力端子に接続される。FF307のクロック入力端子は、ノードN15に接続される。FF307のデータ出力端子は、セレクタ312の一方の入力端子に接続される。FF308のデータ入力端子は、IOバッファ24内に設けられたバッファ702の出力端子に接続される。FF308のクロック入力端子は、ノードN15に接続される。FF308のデータ出力端子は、セレクタ312の他方の入力端子に接続される。セレクタ312の出力端子は、メモリコントローラ2の上位ビット側のデータ入力端子に接続される。
【0033】
なお、図1には示していないが、半導体装置100には、書き込みデータDQ1又は読み出しデータDQ2のビット幅に応じた数の論理セル群13及びIOバッファ24が設けられる。本実施の形態では、書き込みデータDQ1のビット幅は32ビットであるため、32個の論理セル群13及び32個のIOバッファ24が設けられる。
【0034】
図6に、論理セル群14のブロック図を示す。論理セル群14は、IOバッファ25を介して入力された読み出し用ストローブ信号DQS2に対し、遅延調整回路407にて所定の遅延を付加する回路ブロックである。さらに、論理セル群14は、遅延調整回路406にて所定の遅延を付加した書き込み用ストローブ信号DQS1を、IOバッファ25を介して出力する回路ブロックである。論理セル群14において、FF401のデータ入力端子は、メモリコントローラ2のマスク信号出力端子に接続される。FF401のクロック入力端子は、分周回路4の一方の出力端子に接続される。FF401のデータ出力端子は、FF402のデータ入力端子に接続される。FF402のクロック入力端子は、分周回路4の一方の出力端子に接続される。FF402のデータ出力端子は、AND405の一方の入力端子に接続される。AND405の他方の入力端子は、分周回路4の一方の出力端子に接続される。AND405の出力端子は、遅延調整回路406の入力端子に接続される。遅延調整回路406の出力端子は、IOバッファ25内に設けられたスリーステートバッファ701の入力端子に接続される。
【0035】
論理セル群14において、遅延調整回路407の入力端子は、IOバッファ25内に設けられたバッファ702の出力端子に接続される。遅延調整回路407の出力端子は、FF404のクロック入力端子と、FF403のクロック入力端子と、ノードN14と、に接続される。FF404のデータ入力端子は、ノードN15と、FF403のデータ出力端子と、に接続される。FF404のデータ出力端子は、FF403のデータ入力端子に接続される。
【0036】
なお、図1には示していないが、半導体装置100には、書き込み用ストローブ信号DQS1又は読み出し用ストローブ信号DQS2のビット幅に応じた数の論理セル群14及びIOバッファ25が設けられる。本実施の形態では、書き込み用ストローブ信号DQS1及び読み出し用ストローブ信号DQS2のビット幅はそれぞれ4ビットであるため、4個の論理セル群14及び4個のIOバッファ25が設けられる。
【0037】
なお、本実施の形態では、4個の論理セル群14のうち、0ビット目の読み出し用ストローブ信号DQS2[0]に対応する1個の論理セル群14と、0〜7ビット目の読み出しデータDQ2[7:0]に対応する8個の論理セル群13と、が接続される。また、1ビット目の読み出し用ストローブ信号DQS2[1]に対応する1個の論理セル群14と、8〜15ビット目の読み出しデータDQ2[15:8]に対応する8個の論理セル群13と、が接続される。また、2ビット目の読み出し用ストローブ信号DQS2[2]に対応する1個の論理セル群14と、16〜23ビット目の読み出しデータDQ2[23:16]に対応する8個の論理セル群13と、が接続される。3ビット目の読み出し用ストローブ信号DQS2[3]に対応する1個の論理セル群14と、24〜31ビット目の読み出しデータDQ2[31:24]に対応する8個の論理セル群13と、が接続される。
【0038】
図7に、論理セル群15のブロック図を示す。論理セル群15は、基準許可信号PDQMを、クロック信号DCK2に同期して検出し、許可信号DQMとして出力する回路ブロックである。なお、許可信号DQMは、メモリ200に対して書き込みデータDQ1の書き込みを許可するための信号である。論理セル群15において、FF501のデータ入力端子は、メモリコントローラ2の上位ビット側の許可信号出力端子に接続される。FF501のクロック入力端子は、遅延調整回路16を介して、分周回路4の他方の出力端子に接続される。FF501のデータ出力端子は、FF502のデータ入力端子に接続される。FF502のクロック入力端子は、遅延調整回路16を介して、分周回路4の他方の出力端子に接続される。FF502のデータ出力端子は、セレクタ504の一方の入力端子に接続される。このように、FF501,502はシフトレジスタを構成する。
【0039】
論理セル群15において、FF503のデータ入力端子は、メモリコントローラ2の下位ビット側の許可信号出力端子に接続される。FF503のクロック入力端子は、遅延調整回路16を介して、分周回路4の他方の出力端子に接続される。FF503のデータ出力端子は、セレクタ504の他方の入力端子に接続される。セレクタ504の制御端子は、遅延調整回路16を介して、分周回路4の他方の出力端子に接続される。セレクタ504の出力端子は、IOバッファ26内に設けられたスリーステートバッファ701の入力端子に接続される。
【0040】
次に、半導体装置100の動作について説明する。
【0041】
演算処理回路1は、メモリコントローラ2に対してコマンドを与えるとともに、各遅延調整回路の遅延量を調整する機能を有する。メモリコントローラ2は、演算処理回路1から与えられたコマンドに基づいて、メモリ200に書き込むデータの生成、メモリ200から読み出されたデータの受信及び関連する制御信号の生成等を行う。
【0042】
PLL3は、内部クロックを生成し、分周回路4に対して出力する。分周回路4は、内部クロックを4分周したクロック信号(第1のクロック信号)CK1を生成し、一方の出力端子から出力する。さらに分周回路4は、内部クロックを4分周し、クロック信号CK1と位相が270°異なるクロック信号CK2を生成し、他方の出力端子から出力する。論理セル群12は、クロック信号CK1に遅延を付加したクロック信号(基準クロック)CK,CKBを生成し、IOバッファ22を介して、メモリ200に対して出力する。なお、クロック信号CKBは、クロック信号CKの反転信号である。また、遅延調整回路16は、クロック信号CK2に遅延を付加したクロック信号DCK2を生成する。
【0043】
メモリコントローラ2は、制御信号出力端子から基準制御信号PCMを出力する。そして、論理セル群11は、基準制御信号PCMに基づいて制御信号CMを生成し、IOバッファ21を介して、メモリ200に対して出力する。より具体的には、論理セル群11において、FF101は、基準制御信号PCMをクロック信号CK1に同期して検出し、FF102に対して出力する。FF102は、FF101によって検出された基準制御信号PCMをクロック信号CK1の立ち下がりに同期して検出し、制御信号CMとして、IOバッファ21を介して、メモリ200に対して出力する。
【0044】
なお、制御信号CMには、例えば、アドレス信号ADD、チップセレクト信号CSB、ロウアドレスストローブ信号RASB、カラムアドレスストローブ信号CASB、ライトイネーブル信号WE及びクロックイネーブル信号CKEが含まれる。メモリ200は、クロック信号CK,CKBに同期して、データの書き込み(ライトモード)又は読み出し(リードモード)のモード切り替え、データの書き込み又は読み出し対象となるアドレスの指定等を行う。
【0045】
また、メモリコントローラ2は、データ出力端子から基準書き込みデータPDQ1を出力する。そして、論理セル群13は、基準書き込みデータPDQ1に基づいて書き込み対象となる書き込みデータDQ1を生成し、IOバッファ24を介して、メモリ200に対して出力する。なお、基準書き込みデータPDQ1は64ビット幅を有する。
【0046】
より具体的には、論理セル群13において、FF301は、上位ビット側(例えば、第31ビット目)の基準書き込みデータPDQ1をクロック信号DCKの立ち上がりに同期して検出し、FF302に対して出力する。FF302は、FF301によって検出された基準書き込みデータPDQ1をクロック信号DCKの立ち下がりに同期して検出し、セレクタ310に対して出力する。一方、FF303は、下位ビット側(例えば、第0ビット目)の基準書き込みデータPDQ1をクロック信号DCKの立ち上がりに同期して検出し、セレクタ310に対して出力する。セレクタ310は、上位ビット側の基準書き込みデータPDQ1及び下位ビット側の基準書き込みデータPDQ1を、クロック信号DCKによって交互に選択して出力する。このように、32個の各論理セル群13は、対応する1組の上位ビット側及び下位ビット側の基準書き込みデータPDQ1に基づいて、対応するビットの書き込みデータDQ1を出力する。つまり、32個の論理セル群13は、クロック信号DCKの両エッジに同期して、上位32ビット側及び下位32ビット側の基準書き込みデータPDQ1を交互に書き込みデータDQ1として出力する。
【0047】
メモリコントローラ2は、マスク信号出力端子からマスク信号MSを出力する。論理セル群14は、マスク信号MSがオン(例えば、ハイレベル)の期間中、クロック信号CK1をマスクして、IOバッファ25を介して、書き込み用ストローブ信号DQS1としてメモリ200に対して出力する。
【0048】
より具体的には、論理セル群14において、FF401は、マスク信号MSをクロック信号CK1の立ち上がりに同期して検出し、FF402に対して出力する。FF402は、FF401によって検出されたマスク信号MSをクロック信号CK1の立ち下がりに同期して検出し、AND405の一方の入力端子に出力する。AND405は、FF402によって検出されたマスク信号MSがオンの期間中、クロック信号CK1をそのまま出力する。遅延調整回路406は、マスクされたクロック信号CK1に遅延を付加して、書き込み用ストローブ信号DQS1として出力する。なお、4個の論理セル群14は、それぞれ8個の異なる論理セル群13を制御する。そして、メモリ200は、書き込み用ストローブ信号DQS1に同期して、書き込みデータDQ1の書き込みを行う。
【0049】
また、論理セル群14には、メモリ200から出力された読み出し用ストローブ信号DQS2が、IOバッファ24を介して入力される。論理セル群14は、読み出し用ストローブ信号DQS2に遅延を付加した遅延ストローブ信号DQS2Aを生成し、論理セル群13に対して出力する。
【0050】
より具体的には、論理セル群14において、遅延調整回路407は、読み出し用ストローブ信号DQS2に遅延を付加して、遅延ストローブ信号DQS2AとしてFF403,404に対して出力する。FF404は、遅延ストローブ信号DQS2Aの立ち上がりに同期して、FF403の出力値を検出し、FF403に対して出力する。FF403は、遅延ストローブ信号DQS2Aの立ち下がりに同期して、FF404の出力値を検出し、ノードN15に向けて出力する。つまり、FF403,404は、遅延ストローブ信号DQS2Aを2分周して、遅延ストローブ信号DQS2Bとして、ノードN15に向けて出力する。また、ノードN14には、遅延ストローブ信号DQS2Aが供給される。
【0051】
メモリコントローラ2内に設けられたタイミング調整回路5は、有効信号出力端子から有効信号ENを出力する。論理セル群13は、有効信号ENがオン(例えば、ハイレベル)の期間中の読み出しデータDQ2を検出可能である。つまり、論理セル群13は、有効信号ENがオンの期間中の読み出しデータDQ2を、遅延ストローブ信号DQS2Aの両エッジに同期して検出する。論理セル群13は、遅延ストローブ信号DQS2Aの両エッジに同期して検出された読み出しデータDQ2を、さらに、クロック信号CK1に同期して検出し、基準読み出しデータPDQ2として、メモリコントローラ2に対して出力する。つまり、クロックの乗せ換えが行われる。
【0052】
論理セル群13についてさらに説明する。論理セル群13には、メモリ200から読み出された読み出しデータDQ2が、IOバッファ24を介して入力される。論理セル群13は、読み出しデータDQ2に基づいて基準読み出しデータPDQ2を生成し、メモリコントローラ2に対して出力する。なお、基準読み出しデータPDQ2は、64ビット幅を有する。
【0053】
より具体的には、FF305は、読み出しデータDQ2を、遅延ストローブ信号DQS2Aの立ち上がりに同期して検出し、FF304,306に対して出力する。FF304は、FF305によって検出された読み出しデータDQ2を、遅延ストローブ信号DQS2Bの立ち上がりに同期して検出し、セレクタ311に対して出力する。FF306は、FF305によって検出された読み出しデータDQ2を、遅延ストローブ信号DQS2Bの立ち下がりに同期して検出し、セレクタ311に対して出力する。FF307は、読み出しデータDQ2を、遅延ストローブ信号DQS2Bの立ち上がりに同期して検出し、セレクタ312に対して出力する。FF308は、読み出しデータDQ2を、遅延ストローブ信号DQS2Bの立ち下がりに同期して検出し、セレクタ312に対して出力する。ここで、有効信号ENがオフの場合、FF309は、ロウレベルの信号を出力し続ける。有効信号ENがオンの場合、FF309は、クロック信号CK1を2分周して、セレクタ311,312に対して出力する。
【0054】
したがって、有効信号ENがオンの場合、セレクタ311は、クロック信号CK1の立ち上がりに同期して、FF304の出力及びFF306の出力を交互に選択して出力する。同様に、有効信号ENがオンの場合、セレクタ312は、クロック信号CK1の立ち上がりに同期して、FF307の出力及びFF308の出力を交互に選択して出力する。このように、32個の各論理セル群13は、対応するビットの読み出しデータDQ2に基づいて、対応する1組の上位ビット側及び下位ビット側の基準読み出しデータPDQ2を出力する。つまり、32個の論理セル群13は、クロック信号CK1の立ち上がりに同期して、8バーストの読み出しデータDQ2を、上位32ビット側及び下位32ビット側に分けて交互に基準読み出しデータPDQ2として出力する。
【0055】
メモリコントローラ2は、許可信号出力端子から基準許可信号PDQMを出力する。論理セル群15は、基準許可信号PDQMに基づいて許可信号DQMを生成し、IOバッファ26を介して、メモリ200に対して出力する。なお、基準許可信号PDQMは、8ビット幅を有する。
【0056】
より具体的には、論理セル群15において、FF501は、上位ビット側(例えば、第4ビット目)の基準許可信号PDQMをクロック信号DCKの立ち上がりに同期して検出し、FF502に対して出力する。FF502は、FF501によって検出された基準許可信号PDQMをクロック信号DCKの立ち下がりに同期して検出し、セレクタ504に対して出力する。一方、FF503は、下位ビット側(例えば、第0ビット目)の基準許可信号PDQMをクロック信号DCKの立ち上がりに同期して検出し、セレクタ504に対して出力する。セレクタ504は、上位ビット側の基準許可信号PDQM及び下位ビット側の基準許可信号PDQMを、クロック信号DCKによって交互に選択して、許可信号DQMとして出力する。
【0057】
このように、4個の各論理セル群15は、対応する1組の上位ビット側及び下位ビット側の基準許可信号PDQMに基づいて、対応するビットの許可信号DQMを出力する。つまり、4個の論理セル群15は、クロック信号DCKの両エッジに同期して、上位4ビット側及び下位4ビット側の基準許可信号PDQMを交互に選択して、許可信号DQMとして出力する。なお、メモリ200は、許可信号DQMがオンの期間中、書き込みデータDQ1の書き込みを行うことができる。
【0058】
次に、図1に示す半導体装置100の動作を、図8及び図9のタイミングチャートを用いて説明する。図8は、リードモードの場合における半導体装置100の動作を示すタイミングチャートである。図9は、ライトモードの場合における半導体装置100の動作を示すタイミングチャートである。なお、図8及び図9に示す波形に付された括弧付きの番号と、図1〜図7に示す回路に付された括弧付きの番号と、は対応している。
【0059】
まず、ライトモードの場合における半導体装置100の動作を、図8を用いて説明する。まず、メモリコントローラ2は、ライトモードの基準制御信号PCMを生成する(S3)。次に、メモリコントローラ2は、64ビット幅を有する基準書き込みデータPDQ1を生成する(S4)。図8の例では、メモリコントローラ2は、基準書き込みデータPDQ1の上位32ビット側から、データD0,D2,D4,D6を、クロック信号CK1の立ち上がりに同期して順に出力する。同様に、メモリコントローラ2は、基準書き込みデータPDQ1の下位32ビット側から、データD1,D3,D5,D7を、クロック信号CK1の立ち上がりに同期して順に出力する。メモリコントローラ2は、データD0〜D7を出力している期間中、基準許可信号PDQMをオンに制御する(S5)。さらに、メモリコントローラ2は、クロック信号CK1をマスクして書き込み用ストローブ信号DQS1を生成するために、マスク信号MSをオンにする(S6)。
【0060】
論理セル群11は、ライトモードの基準制御信号PCMに基づいて、ライトモードの制御信号CMを出力する(S10)。論理セル群12は、クロック信号CK1(S1)に基づいてクロック信号CK,CKBを出力する(S8,S9)。論理セル群13は、クロック信号DCKの両エッジに同期して、上位32ビット側及び下位32ビット側の基準書き込みデータPDQ1を交互に選択して、書き込みデータDQ1として出力する(S11)。つまり、論理セル群13は、クロック信号DCKの両エッジに同期して、データD0〜D7を順に出力する。
【0061】
論理セル群15は、データD0〜D7を出力している期間中、基準許可信号PDQMに基づいて許可信号DQMをオンに制御する(S13)。さらに、論理セル群14は、データD0〜D7を出力している期間中、マスクされたクロック信号CK1を書き込み用ストローブ信号DQS1として出力する(S12)。このように、書き込みデータDQ1及び書き込み用ストローブ信号DQS1は、それぞれ位相の異なるクロック信号CK1及びクロック信号DCKに同期して生成される。メモリ200は、書き込み用ストローブ信号DQS1に同期して、指定されたアドレスの記憶領域に書き込みデータDQ1を書き込む。
【0062】
次に、リードモードの場合における半導体装置100の動作を、図9を用いて説明する。まず、メモリコントローラ2は、リードモードの基準制御信号PCMを生成する。論理セル群11は、リードモードの基準制御信号PCMに基づいて、リードモードの制御信号CMを出力する(S10)。その後、3クロック分のレイテンシ及び外部遅延(tAC)の期間を経て、メモリ200は、クロック信号CK,CKBに同期して読み出しデータDQ2を出力し始める(S11)。図9の例では、読み出しデータDQ2は、8バーストのデータD0〜D7によって構成される。また、メモリ200は、データD0〜D7を出力している期間中、読み出し用ストローブ信号DQS2出力する(S12)。
【0063】
論理セル群14において、遅延調整回路407は、読み出し用ストローブ信号DQS2に遅延を付加し、遅延ストローブ信号DQS2Aとして出力する(S14)。論理セル群14は、さらに、遅延ストローブ信号DQS2Aを2分周して、遅延ストローブ信号DQS2Bとして出力する(S15)。
【0064】
論理セル群13において、FF305は、読み出しデータDQ2を、遅延ストローブ信号DQS2Aの立ち上がりに同期して検出し、FF304,306に対して出力する。図9の例では、FF305は、遅延ストローブ信号DQS2Aの立ち上がりに同期して、データD0,D2,D4,D6を順に出力する(S16)。
【0065】
FF304は、FF305によって検出された読み出しデータDQ2を、遅延ストローブ信号DQS2Bの立ち上がりに同期して検出し、セレクタ311に対して出力する。図9の例では、FF304は、遅延ストローブ信号DQS2Bの立ち上がりに同期して、データD0,D4を順に出力する(S17)。FF306は、FF305によって検出された読み出しデータDQ2を、遅延ストローブ信号DQS2Bの立ち下がりに同期して検出し、セレクタ311に対して出力する。図9の例では、FF306は、遅延ストローブ信号DQS2Bの立ち下がりに同期して、データD2,D6を順に出力する。(S18)。
【0066】
FF307は、読み出しデータDQ2(S11)を、遅延ストローブ信号DQS2Bの立ち上がりに同期して検出し、セレクタ312に対して出力する。図9の例では、FF307は、遅延ストローブ信号DQS2Bの立ち上がりに同期して、データD1,D5を順に出力する(S19)。
【0067】
FF308は、読み出しデータDQ2(S11)を、遅延ストローブ信号DQS2Bの立ち下がりに同期して検出し、セレクタ312に対して出力する。図9の例では、FF308は、遅延ストローブ信号DQS2Bの立ち下がりに同期して、データD3,D7を順に出力する(S20)。
【0068】
メモリコントローラ2内に設けられたタイミング調整回路5は、有効信号ENをオンに制御する(S21)。有効信号ENがオンの期間中、セレクタ311は、クロック信号CK1(S1)の立ち上がりに同期して、FF304の出力及びFF306の出力を交互に選択して出力する。図9の例では、セレクタ311は、クロック信号CK1の立ち上がりに同期して、データD0,D2,D4,D6を順に出力する(S22の上段)。同様に、有効信号ENがオンの期間中、セレクタ312は、クロック信号CK1の立ち上がりに同期して、FF307の出力及びFF308の出力を交互に選択して出力する。図9の例では、セレクタ312は、クロック信号CK1の立ち上がりに同期して、データD1,D3,D5,D7を順に出力する(S22の下段)。このように、32個の論理セル群13は、クロック信号CK1の立ち上がりに同期して、8バーストの読み出しデータDQ2を、上位32ビット側及び下位32ビット側に分けて交互に基準読み出しデータPDQ2として出力する。
【0069】
このように、半導体装置100とメモリ200とは、複数の信号線を介して高速にデータの送受信が行われる。また、半導体装置100において、メモリコントローラ2とIOバッファ21〜26との間には、それぞれ複数の論理セルが設けられている。このような場合において、半導体装置100とメモリ200との間のACタイミングを調整するためには、半導体装置100に設けられた論理セルを、対応するIOバッファ21〜26の近傍に配置することにより、配線遅延の誤差を抑制する等の対策をする必要がある。しかし、半導体装置100は、RTL設計、論理合成及びレイアウト設計の工程を経て設計されるのが一般的である。したがって、従来技術においてACタイミングを調整する場合、論理合成後に生成されるネットリストから対象となる論理セルを選択し、対応するIOバッファの近傍に配置する等の工数がかかってしまうという問題があった。
【0070】
そこで、本実施の形態では、メモリコントローラ2と各IOバッファ21〜26との間に設けられたそれぞれの論理セル群11〜15を予めハードマクロ化して、他の論理セルと同様にライブラリに登録しておく。ここで、ハードマクロとは、特定用途向けの回路ブロックであって、予めトランジスタの配置及び配線が決定された状態のものをいう。なお、ハードマクロ内は予めタイミング調整されている。そして、レイアウト設計において、ハードマクロ化された論理セル群11〜15を、対応するIOバッファ21〜26の近傍に配置する。このとき、IOバッファ21〜26のうちいずれかのIOバッファと、対応するハードマクロと、を接続する信号線が、他のIOバッファと、対応するハードマクロとを接続する信号線の遅延量に応じた遅延量を有する。また、IOバッファ21〜26のうちいずれかのIOバッファと、対応するハードマクロと、を接続する信号線が、他のIOバッファと、対応するハードマクロとを接続する信号線の配線長に応じた配線長を有する。
【0071】
好ましくは、ハードマクロ化された論理セル群11〜15と、対応するIOバッファ21〜26と、を接続する各信号線の遅延量が、略同一になるように配置される。また、ハードマクロ化された論理セル群11〜15と、対応するIOバッファ21〜26と、を接続する各信号線の配線長が、略同一になるように配置される。
【0072】
なお、ハードマクロ化された論理セル群11〜15と、対応するIOバッファ21〜26と、を接続する各信号線の遅延量が、完全に同一になるように配置される必要はない。ACタイミングの調整が容易になる範囲内の遅延量に収まっていれば良い。また、ハードマクロ化された論理セル群11〜15と、対応するIOバッファ21〜26と、を接続する各信号線の配線長が、完全に同一になるように配置される必要はない。ACタイミングの調整が容易になる範囲内の配線長に収まっていれば良い。
【0073】
図10に、半導体装置100のレイアウトを簡略化した図を示す。図10に示すように、紙面の中央から右寄りにメモリコントローラ2が配置されている。半導体装置100の外枠に沿って複数のIOバッファが配置されている。具体的には、クロック信号CK,CKB用のIOバッファ22,23と、制御信号CM用の17ビット分のIOバッファ21と、が半導体装置100の外枠(紙面の縦方向)に沿って順に配置されている。また、許可信号DQM用の4ビット分のIOバッファ26と、ストローブ信号DQS1,DQS2用の4ビット分のIOバッファ25と、データDQ1,DQ2用の32ビット分のIOバッファ24と、が半導体装置100の外枠(紙面の横方向)に沿って順に配置されている。ここで、図10に示すように、ハードマクロ化された論理セル群11〜15は、対応するIOバッファ21〜26の近傍に配置されている。
【0074】
その後の工程では、クロックラインのタイミング調整が行われる。このとき、PLL3から各ハードマクロ(論理セル群11〜15)に設けられたクロック入力端子までの遅延ばらつき(スキュー)が調整される。その後、STA(Static timing analysis)により、PLL3から各ハードマクロ(論理セル群11〜15)内に設けられた各フリップフロップのクロック入力端子までの絶対遅延が測定され、ばらつきの微調整が行われる。ここで、各ハードマクロ内部は、予めタイミング調整されている。つまり、半導体装置100の設計において、各ハードマクロ内部のタイミング調整を行う必要がないため、全体のタイミング調整が容易になる。また、本実施の形態では、各ハードマクロを対応するIOバッファの近傍に配置することにより、容易にACタイミングの調整を行うことができる。つまり、本実施の形態では、従来技術と異なり、レイアウト設計時において、多数存在する論理セルの中から対象となる論理セルを選び出し、対応するIOバッファの近傍に配置する必要がなくなる。したがって、本実施の形態では、設計にかかる工数を削減することができる。
【0075】
実施の形態2
実施の形態1に示したように、半導体装置100は、RTL設計、論理合成、レイアウト設計及びSTA(Static timing analysis)の工程を経て設計されるのが一般的である。レイアウト設計等では、クロックラインのタイミング調整が行われる。このとき、PLL3から各ハードマクロ(論理セル群11〜15)に設けられたクロック入力端子までの遅延ばらつき(スキュー)が調整される。しかし、一度タイミング調整した後でも、メモリ200等の外部負荷の影響を受けて、IOバッファ21〜26の遅延量が変化してしまう可能性がある。このような外部負荷の影響を排除するために、本実施の形態にかかる半導体装置100は、遅延調整回路16と、遅延調整回路201(図4参照)と、遅延調整回路406(図6参照)を用いることにより、対応する信号に対して付加する遅延量を調整する。遅延調整回路16,201,406は、例えば、複数の遅延バッファと、セレクタと、により構成される。各遅延バッファは並列に設けられ、入力信号に対してそれぞれ異なる遅延量を付加して出力する。セレクタは、CPU1からの制御信号に基づいて、複数の遅延バッファからの出力信号のうち、いずれかを選択して出力する。このように、本実施の形態では、遅延調整回路16,201,406を用いることにより、外部負荷による影響を受けることなく、データの送受信を行うことができる。
【0076】
また、本実施の形態にかかる半導体装置100は、LSI設計完了後においても、タイミング調整を行うことができる。つまり、半導体装置100は、例えば、LSI評価時において、実際に用いるDDR−SDRAM等のメモリ200を接続した場合に、正確にデータの読み出し及び書き込みができるようにタイミング調整を行う。
【0077】
より具体的には、まず、CPU1は、論理セル群14に設けられた遅延調整回路407の遅延量を最小値に設定する。例えば、設定値が0〜16である場合、遅延調整回路407は、読み出し用ストローブ信号DQS2に対して設定値0に応じた遅延量を付加して、遅延ストローブ信号DQS2Aを出力する。この条件において、まず、半導体装置100は、テスト用データをメモリ200に書き込む。次に、半導体装置100は、メモリ200に書き込まれたテスト用データを読み出し、遅延ストローブ信号DQS2Aの両エッジに同期して検出する。CPU1は、書き込みに使用したテスト用データ(期待値)と、読み出したテスト用データと、を比較して比較結果を記憶する。例えば、CPU1は、期待値と、読み出したテスト用データと、が一致する場合には"1"を記憶し、不一致の場合には、"0"を記憶する。
【0078】
次に、CPU1は、設定値を0から1に切り替える。つまり、遅延調整回路407は、読み出し用ストローブ信号DQS2に対して設定値1に応じた遅延量を付加して、遅延ストローブ信号DQS2Aを出力する。その後、設定値0の場合と同様の動作を経て、CPU1は、期待値と、読み出したテスト用データと、を比較して比較結果を記憶する。このように、CPU1は、設定値0〜16のそれぞれの場合において、期待値と、読み出したテスト用データと、を比較して比較結果を記憶する。これにより、16個の比較結果が得られる。
【0079】
そして、CPU1は、最終的に、比較結果が"1"を示す設定値を遅延調整回路407に対して設定する。ここで、比較結果の一致している設定値が連続して存在する場合、それらの中間値を選択する。例えば、設定値0〜16の比較結果が、順に"0000111111100000"である場合、設定値4〜10で比較結果が一致しているため、中間値である設定値7を選択する。つまり、設定値7を遅延調整回路407に対して設定する。それにより、遅延誤差が生じた場合でも、精度の高いデータの送受信が可能である。なお、このような遅延量の設定は、4個の論理セル群14のそれぞれに対して実施される。
【0080】
このように、本実施の形態では、LSI設計完了後においても、タイミング調整を行うことができる。それにより、本実施の形態では、精度良くデータの送受信を行うことができる。
【0081】
なお、特許文献1に示すインターフェース回路(半導体装置)の場合、DDR−SDRAMから読み出されたデータを取り込むためにDLL回路を備える必要がある。しかし、DLL回路は実装面積が大きいため、インターフェース回路全体として回路規模が増大するという問題があった。また、それに伴い、消費電力が増大するという問題があった。一方、本実施の形態では、従来技術の場合と異なり、DLL回路等の大規模回路を備える代わりに、単純な論理構成の遅延調整回路を備え、CPU等の演算処理回路によってそれらの遅延調整を行う。そのため、本実施の形態では、回路規模の増大及び消費電力の増大を抑制することができる。
【0082】
次に、タイミング調整回路5について説明する。タイミング調整回路5は、半導体装置100内の内部遅延時間と、制御信号CMがメモリ200に対して出力されてから対応する読み出しデータDQ2が受信されるまでの外部遅延時間と、クロック信号CK1の周波数と、に基づいて、有効信号ENのオン期間を制御する。ここで、内部遅延時間とは、例えば、分周回路4がクロック信号CK1を生成してからクロック信号CKとしてIOバッファ22に到達するまでの時間を示す。
【0083】
図11及び図12は、半導体装置100の動作を示すタイミングチャートである。なお、図11は、クロック信号CKの周波数が30MHz、内部遅延時間及び外部遅延時間(tAC)の合計時間が15nsである場合の例である。一方、図12は、クロック信号CKの周波数が125MHz、内部遅延時間及び外部遅延時間(tAC)の合計時間が15nsである場合の例である。
【0084】
図11及び図12に示すように、内部遅延時間及び外部遅延時間の合計時間がともに15nsと同じであっても、クロック信号CK1の周波数によって、データの送受信に与える影響度合いが異なる。
【0085】
図11に示すタイミングチャートの場合、内部遅延時間及び外部遅延時間の合計値は、クロック信号CK1の周期と比較して、相対的に小さい。したがって、メモリコントローラ2がリードモードの基準制御信号PCMを出力してから(時刻X)、対応する読み出しデータDQ2が論理セル群13に到達するまで(時刻Y)に要するクロック信号CK1のクロックサイクル数は少なくてすむ。なお、図11の例では、当該クロックサイクル数は"3"である。
【0086】
ここで、メモリコントローラ2がリードモードの制御信号PCMを出力してから(時刻X)、2クロックサイクル後のクロック信号CK1の立ち上がりを基準エッジ(時刻Z)と称す。図11の例では、基準エッジから1クロックサイクル後に、対応する読み出しデータDQ2が論理セル群13に到達する。このとき、タイミング調整回路5は、基準エッジから1クロックサイクル経過後に有効信号ENをオンする(1CLKモード)。それにより、メモリコントローラ2は、読み出しデータDQ2を正しく受信することができる。
【0087】
一方、図12に示すタイミングチャートの場合、内部遅延時間及び外部遅延時間の合計値は、クロック信号CK1の周期と比較して、相対的に大きい。したがって、メモリコントローラ2がリードモードの制御信号PCMを出力してから(時刻X)、対応する読み出しデータDQ2が論理セル群13に到達するまで(時刻Y)に要するクロック信号CK1のクロックサイクル数は多くなる。図12の例では、当該クロックサイクル数は"4"である。
【0088】
ここで、図12の例では、基準エッジ(時刻Z)から2クロックサイクル後に、対応する読み出しデータDQ2が論理セル群13に到達する。このとき、タイミング調整回路5は、基準エッジから2クロックサイクル経過後に有効信号ENをオンする(2CLKモード)。それにより、メモリコントローラ2は、読み出しデータDQ2を正しく受信することができる。
【0089】
このように、タイミング調整回路5は、内部遅延時間及び外部遅延時間の合計値と、クロック信号CK1の周波数と、に基づいて、CLKモードを切り替える。それにより、メモリコントローラ2は、読み出しデータDQ2を正しく受信することができる。
【0090】
図13及び図14は、内部遅延時間及び外部遅延時間の合計値(合計遅延時間T)と、クロック信号CK1の周波数と、CLKモードと、の関係を示す図である。例えば、クロック信号CK1の周波数が30MHz、内部遅延時間及び外部遅延時間の合計値が40nsである場合、タイミング調整回路5は、2CLKモードに設定される。より具体的には、内部遅延時間及び外部遅延時間の合計値が、クロック信号CK1の1クロックサイクルより小さい場合、タイミング調整回路5は、1CLKモードに設定される。内部遅延時間及び外部遅延時間の合計値が、クロック信号CK1の1クロックサイクル以上、2クロックサイクル未満の場合、タイミング調整回路5は、2CLKモードに設定される。内部遅延時間及び外部遅延時間の合計値が、クロック信号CK1の2クロックサイクル以上、3クロックサイクル未満の場合、タイミング調整回路5は、3CLKモードに設定される。
【0091】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。上記実施の形態では、分周回路4が、クロック信号CK1と、クロック信号CK1と位相が270°異なるクロック信号CK2と、を出力する場合を例に説明したが、これに限られない。クロック信号CK1とクロック信号CK2との位相差は任意に設定可能である。
【0092】
また、本実施の形態では、CPU1及びメモリコントローラ2が、半導体装置100の内部に設けられた場合を例に説明したが、これに限られない。CPU1及びメモリコントローラ2が、半導体装置100の外部に設けられた回路構成にも適宜変更可能である。
【符号の説明】
【0093】
11〜15 論理セル群
1 CPU
2 メモリコントローラ
3 PLL
4 分周回路
5 タイミング調整回路
16,201,406,407 遅延調整回路
21〜26 IOバッファ
100 半導体装置
200 メモリ
101,102,301〜309,401〜404,501〜503 FF
202 インバータ
310〜312,504 セレクタ
313,405 AND
701 スリーステートバッファ
702 バッファ

【特許請求の範囲】
【請求項1】
外部メモリと接続される複数の信号線に対応して個別に設けられ前記対応する信号線のタイミングを決定する回路ブロックをマクロ化したハードマクロと、
前記ハードマクロのそれぞれに対応して設けられたIOバッファと、を有し、
前記ハードマクロと前記対応する前記IOバッファとを結合する配線のそれぞれが略同じ長さを有することを特徴とする半導体集積回路。
【請求項2】
前記ハードマクロのそれぞれが前記対応するIOバッファの近傍に配置されていることを特徴とする請求項1に記載の半導体集積回路。
【請求項3】
第1のIOバッファの近傍に配置されると共に前記第1のIOバッファに第1の配線を介して結合され、第1のクロック信号に基づいて生成した基準クロックを前記第1のIOバッファを介して出力する第1のハードマクロと、
第2のIOバッファの近傍に配置されると共に前記第2のIOバッファに第2の配線を介して結合され、入力された制御信号を前記第1のクロック信号に同期して前記第2のIOバッファを介して出力する第2のハードマクロと、
第3のIOバッファの近傍に配置されると共に前記第3のIOバッファに第3の配線を介して結合され、前記第3のIOバッファを介して入力されたストローブ信号に所定の遅延を付加する第3のハードマクロと、
第4のIOバッファの近傍に配置されると共に前記第4のIOバッファに第4の配線を介して結合され、前記第4のIOバッファを介してデータ信号の送受信を行う第4のハードマクロと、を有し、
前記第1乃至第4配線の長さが略同じ長さであることを特徴とする半導体集積回路。
【請求項4】
前記第1乃至第4のIOバッファに接続された外部メモリのアクセスを制御する制御回路をさらに有し、
前記制御回路は、前記第3のハードマクロの前記所定の遅延の値を変化させて、前記外部メモリの読み出しデータを検出した値と、期待値とを比較した複数の比較結果を取得し、前記比較結果に基づいて前記所定の遅延の値を決定することを特徴とする請求項3に記載の半導体集積回路。
【請求項5】
前記第4のハードマクロは、
前記データ信号を、遅延が付加された前記ストローブ信号に同期して検出した後に、さらに前記第1のクロック信号に同期して検出することを特徴とする請求項3又は4に記載の半導体集積回路。
【請求項6】
第1のIOバッファに第1の配線を介して結合され、第1のクロック信号に基づいて生成した基準クロックを前記第1のIOバッファを介して出力する第1のハードマクロと、
第2のIOバッファに第2の配線を介して結合され、入力された制御信号を前記第1のクロック信号に同期して前記第2のIOバッファを介して出力する第2のハードマクロと、
第3のIOバッファに第3の配線を介して結合され、前記第3のIOバッファを介して入力されたストローブ信号に所定の遅延を付加する第3のハードマクロと、
第4のIOバッファに第4の配線を介して結合され、前記第4のIOバッファを介してデータ信号の送受信を行う第4のハードマクロと、を備えた半導体集積回路のタイミング調整方法であって、
前記第1乃至第4の配線の長さが同じとなるよう前記第1乃至第4のハードマクロを配置することを特徴とする半導体集積回路のタイミング調整方法。
【請求項7】
前記第1乃至第4の配線の遅延量が同じとなるよう前記第1乃至第4のハードマクロを配置することを特徴とする請求項6に記載の半導体集積回路のタイミング調整方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2011−170771(P2011−170771A)
【公開日】平成23年9月1日(2011.9.1)
【国際特許分類】
【出願番号】特願2010−36201(P2010−36201)
【出願日】平成22年2月22日(2010.2.22)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】