上述した特許文献1に開示されるような半導体集積回路の設計方法では、レイアウト設計の工程が終わるまで、レイアウト設計の結果が反映されたタイミングエラーを検出することができない。したがって、特許文献1に開示されるような半導体集積回路の設計方法では、頻繁に発生し得るシフトレジスタに関するタイミングエラーを解消するために、該エラーがなくなるまでレイアウト設計の工程以前の各工程を繰り返し実行する必要があり、各工程の繰り返しの分だけ設計コストの増加を招いていた。つまり、特許文献1に開示されるような半導体集積回路の設計方法は、シフトレジスタに関するタイミングエラーがそもそも発生しないようにレイアウト設計を行うことによって、各工程の繰り返しに伴って発生する設計コストの増大を抑制することができなかった。
そこで、本発明は、シフトレジスタに関わるタイミングエラーが発生しないようにレイアウト設計を行うことができる半導体設計支援装置及び半導体設計支援方法を提供することを目的とする。
より具体的には、本発明は、シフトレジスタ内の各順序回路に関わるタイミングエラーが発生しないようにシフトレジスタ内の各順序回路の配置を決定することができる半導体設計支援装置及び半導体設計支援方法を提供することを目的とする。
上記課題を解決するための本発明は、以下の技術的特徴乃至は発明特定事項を含んで構成される。
すなわち、ある観点に従う本発明は、複数の順序回路を有するシフトレジスタを備える半導体集積回路の設計支援方法であって、前記半導体集積回路の回路情報ファイルから前記シフトレジスタの記述を抽出することと、前記シフトレジスタの記述と、レイアウト設計の工程より上流の工程で行われた前記半導体集積回路に対するタイミング解析の結果ファイルと、前記半導体集積回路におけるクロックの特性を示すタイミング制約ファイルとに基づいて、前記シフトレジスタのホールドタイムを算出することと、前記シフトレジスタのホールドタイムに基づいて前記複数の順序回路間の配置間隔を決定することと、前記配置間隔に基づいて前記複数の順序回路を配置することと、を含み、前記シフトレジスタのホールドタイムを算出することは、前記シフトレジスタが所定のクロックに基づいて所定のデータ信号をラッチした後に、前記所定のデータ信号の状態が所定の状態に維持されるために必要な時間を前記ホールドタイムとして決定することを含む、設計支援方法である。
これにより、半導体設計支援装置は、回路情報ファイルから抽出されたシフトレジスタの記述と、レイアウト設計の工程より上流の工程で行われるタイミング解析の結果ファイルと、クロックの特性を示すタイミング制約ファイルとに基づいて、シフトレジスタのホールドタイムを算出し、該算出したホールドタイムに基づいて、シフトレジスタの配置を決定するため、シフトレジスタのタイミングエラーが発生しないようにシフトレジスタの配置を行うことができるようになる。
ここで、前記シフトレジスタのホールドタイムを算出することは、前記タイミング解析の結果ファイルに基づいて、前記順序回路のホールドタイムを決定することと、前記タイミング制約ファイルに基づいて、前記シフトレジスタに入力される所定のクロックのホールドタイムを決定することと、前記順序回路のホールドタイムと、前記所定のクロックのホールドタイムとに基づいて、前記シフトレジスタのホールドタイムを算出することと、を含み、前記順序回路のホールドタイムを決定することは、前記順序回路が前記所定のクロックに基づいて前記所定のデータ信号をラッチした後に、前記所定のデータ信号の状態が前記所定の状態に維持されるために必要な時間を決定することを含み、前記所定のクロックのホールドタイムを決定することは、前記所定のクロックが入力される所定の構成要素が前記所定のクロックに基づいて前記所定のデータ信号をラッチした後に、前記所定のデータ信号の状態が前記所定の状態に維持されるために必要な時間を決定することを含んでも良い。
これにより、半導体設計支援装置は、タイミング解析の結果ファイルに基づいて、シフトレジスタの順序回路のホールドタイムを決定し、タイミング制約ファイルに基づいて、シフトレジスタに入力される所定クロックのホールドタイムを決定し、該順序回路のホールドタイムと該所定のクロックのホールドタイムとに基づいて、シフトレジスタのホールドタイムを算出することができるようになる。
また、前記回路情報ファイルは、RTLファイルであっても良い。
また、前記順序回路間の配置間隔を決定することは、前記順序回路の遅延時間と前記順序回路同士を接続する信号線の遅延時間との合計が前記シフトレジスタのホールドタイムを上回るように前記順序回路の配置間隔を決定することを含んでも良い。
これにより、半導体設計支援装置は、順序回路の遅延時間と、該順序回路同士を接続する信号線の遅延時間との合計がシフトレジスタのホールドタイムを上回るように順序回路の配置間隔を決定するため、シフトレジスタのホールドタイムエラーが発生しないようにシフトレジスタの順序回路の配置間隔を決定することができるようになる。
また、前記順序回路を配置することは、前段の前記順序回路及び後段の前記順序回路の距離が前記配置間隔以上となるように前記順序回路を配置することを含んでも良い。
また、前記順序回路を配置することは、前記シフトレジスタのクロック端子から所定のクロック線を介して前記複数の順序回路のそれぞれに至る各経路の長さ間の差が所定の閾値以内になるように、前記複数の順序回路を配置することを含んでも良い。
これにより、半導体設計支援装置は、順序回路に入力されるクロックスキューに起因するタイミングエラーが発生しないように、順序回路を配置することができるようになる。
さらに、別の観点に従う本発明は、複数の順序回路を有するシフトレジスタを備える半導体集積回路の設計を行うための半導体設計支援装置であって、プロセッサモジュール及びこれに接続されるメモリモジュールを有する実行装置を備え、前記実行装置は、前記プロセッサモジュールの制御の下、前記半導体集積回路の回路情報ファイルから前記シフトレジスタの記述を抽出し、前記シフトレジスタの記述と、レイアウト設計の工程より上流の工程で行われた前記半導体集積回路に対するタイミング解析の結果ファイルと、前記半導体集積回路におけるクロックの特性を示すタイミング制約ファイルとに基づいて、前記シフトレジスタのホールドタイムを算出し、前記ホールドタイムに基づいて前記複数の順序回路間の配置間隔を算出し、前記配置間隔に基づいて前記複数の順序回路を配置するように動作し、前記シフトレジスタのホールドタイムは、前記シフトレジスタが所定のクロックに基づいて所定のデータ信号をラッチした後に、前記所定のデータ信号の状態が所定の状態に維持されるために必要な時間である、半導体設計支援装置である。
これにより、半導体設計支援装置は、回路情報ファイルから抽出されたシフトレジスタの記述と、レイアウト設計の工程より上流の工程で行われるタイミング解析の結果ファイルと、クロックの特性を示すタイミング制約ファイルとに基づいて、シフトレジスタのホールドタイムを算出し、該算出したホールドタイムに基づいて、シフトレジスタの配置を決定するため、シフトレジスタのタイミングエラーが発生しないようにシフトレジスタの配置を行うことができるようになる。
さらに、別の観点に従う本発明は、複数の順序回路を有するシフトレジスタを備える半導体集積回路の設計を行うための設計支援プログラムであって、前記設計支援プログラムは、半導体設計支援装置のプロセッサモジュールに、前記半導体集積回路の回路情報ファイルから前記シフトレジスタの記述を抽出する機能と、前記シフトレジスタの記述と、レイアウト設計の工程より上流の工程で行われた前記半導体集積回路に対するタイミング解析の結果ファイルと、前記半導体集積回路におけるクロックの特性を示すタイミング制約ファイルとに基づいて、前記シフトレジスタのホールドタイムを算出する機能と、前記ホールドタイムに基づいて前記複数の順序回路間の配置間隔を算出する機能と、前記配置間隔に基づいて前記複数の順序回路を配置する機能と、を実現させ、前記シフトレジスタのホールドタイムを算出する機能は、前記シフトレジスタが所定のクロックに基づいて所定のデータ信号をラッチした後に、前記所定のデータ信号の状態が所定の状態に維持されるために必要な時間を前記ホールドタイムとして算出する機能を含む、設計支援プログラムである。
これにより、半導体設計支援装置は、回路情報ファイルから抽出されたシフトレジスタの記述と、レイアウト設計の工程より上流の工程で行われるタイミング解析の結果ファイルと、クロックの特性を示すタイミング制約ファイルとに基づいて、シフトレジスタのホールドタイムを算出し、該算出したホールドタイムに基づいて、シフトレジスタの配置を決定するため、シフトレジスタのタイミングエラーが発生しないようにシフトレジスタの配置を行うことができるようになる。
さらに、別の観点に従う本発明は、複数の順序回路を有するシフトレジスタを備える半導体集積回路の設計を行うための設計支援プログラムを記憶する記憶媒体であって、前記設計支援プログラムは、半導体設計支援装置のプロセッサモジュールに、前記半導体集積回路の回路情報ファイルから前記シフトレジスタの記述を抽出する機能と、前記シフトレジスタの記述と、レイアウト設計の工程より上流の工程で行われた前記半導体集積回路に対するタイミング解析の結果ファイルと、前記半導体集積回路におけるクロックの特性を示すタイミング制約ファイルとに基づいて、前記シフトレジスタのホールドタイムを算出する機能と、前記ホールドタイムに基づいて前記複数の順序回路間の配置間隔を算出する機能と、前記配置間隔に基づいて前記複数の順序回路を配置する機能と、を実現させ、前記シフトレジスタのホールドタイムを算出する機能は、前記シフトレジスタが所定のクロックに基づいて所定のデータ信号をラッチした後に、前記所定のデータ信号の状態が所定の状態に維持されるために必要な時間を前記ホールドタイムとして算出する機能を含む、記憶媒体である。
これにより、半導体設計支援装置は、回路情報ファイルから抽出されたシフトレジスタの記述と、レイアウト設計の工程より上流の工程で行われるタイミング解析の結果ファイルと、クロックの特性を示すタイミング制約ファイルとに基づいて、シフトレジスタのホールドタイムを算出し、該算出したホールドタイムに基づいて、シフトレジスタの配置を決定するため、シフトレジスタのタイミングエラーが発生しないようにシフトレジスタの配置を行うことができるようになる。
本発明によれば、半導体設計支援装置は、シフトレジスタのタイミングエラーが発生しないようにシフトレジスタのレイアウト設計をすることができるようになる。
より具体的には、本発明によれば、半導体設計支援装置は、シフトレジスタ内の各順序回路のタイミングエラーが発生しないようにシフトレジスタ内の各順序回路の配置を決定することができるようになる。
また、本発明によれば、半導体設計支援装置は、シフトレジスタのタイミングエラーが発生しないようにシフトレジスタのレイアウト設計をするため、シフトレジスタのタイミングエラーによる後戻り工程に起因する設計コストの増大を抑制することができる。
本発明の他の技術的特徴、目的、及び作用効果乃至は利点は、添付した図面を参照して説明される以下の実施形態により明らかにされる。
次に、本発明の実施の形態について、図面を参照しつつ説明する。以下の図の記載において、同一又は類似の部分には同一又は類似の符号を付して表している。図は模式的なものであり、必ずしも実際の寸法や比率等とは一致しない。図相互間においても互いの寸法の関係や比率が異なる部分が含まれていることがある。
図1は、本発明の一実施形態に係る半導体設計支援装置を用いてレイアウト設計された半導体集積回路の一部又は全体を示す平面模式図である。同図に示すように、半導体集積回路1は、例えば、論理回路10と、シフトレジスタ20とを含んでいる。
論理回路10は、半導体集積回路1におけるシフトレジスタ20以外の構成要素の集合である。論理回路10は、所定のクロックCLK及びデータ信号DATAを生成し、該クロックCLKをシフトレジスタ20のクロック端子CKに出力するとともに、該データ信号DATAをシフトレジスタ20のデータ端子Dに出力する。また、論理回路10は、シフトレジスタ20から該シフトレジスタ20を構成する各順序回路FF(図2参照)から出力される出力信号OUTを受信する。また、論理回路10は、各種の機能を実現するための回路ブロック(IP:intellectual propertyブロックとも呼ばれる)であるハードマクロ11を少なくとも1つ以上(本例ではハードマクロ11(1)乃至11(3)の3つ)と、ハードマクロ11やシフトレジスタ20等の各構成要素間を接続するための論理セル(図示せず)とを含んで構成される。論理回路10は、半導体集積回路1においてシフトレジスタ20が配置される領域以外の領域に配置される。
シフトレジスタ20は、直列に接続された複数の順序回路(図2参照)から構成される。シフトレジスタ20は、論理回路10から出力される所定のクロックCLKに基づいて、論理回路10から出力されるデータ信号DATAが示す値を最前段の順序回路でラッチするとともに、前段の順序回路の出力を次段の順序回路でラッチする。また、シフトレジスタ20は各順序回路の出力を出力信号OUTとして論理回路10に出力する。なお、本例では半導体集積回路1は、1つのシフトレジスタ20を含んでいるが、これに限られるものではなく、半導体集積回路1は複数のシフトレジスタ20を含んでいても良い。
図2は、本発明の一実施形態に係る半導体集積回路の設計支援方法により得られる半導体集積回路のシフトレジスタを示す平面模式図である。同図に示すように、本実施形態に係るシフトレジスタ20は、順序回路FFA1乃至FFA10、及びFFB1乃至FFB10を含んで構成されるが、これに限られるものではなく、必要な数の順序回路FFを含んでいても良い。また、シフトレジスタ20を構成する順序回路FFは、例えば、D型フリップフロップであるが、これに限られない。本例において、シフトレジスタ20の一側端部からこれに対向する他側端部に向かう方向を第1の方向と定義し、該第1の方向に対して平面内で直交する方向を第2の方向と定義する。
まず、シフトレジスタ20の各順序回路FFの動作について説明する。順序回路FFは、所定のクロックCLKに基づいて、自身に入力されるデータ信号DATAの値をラッチするとともに、該ラッチした値を出力信号OUTとして次段の順序回路FFと論理回路10とに出力する。具体的には、順序回路FFA1は、論理回路10から出力される所定のクロックCLKに基づいて、論理回路10から出力されるデータ信号DATAの値を出力信号OUTとして次段の順序回路FFA2と論理回路10とに出力する(図示せず)。順序回路FFA2は、論理回路10から出力される所定のクロックCLKに基づいて、前段の順序回路FFA1から出力される出力信号OUTの値を次段の順序回路FFA3と論理回路10とに出力する(図示せず)。同様に、順序回路FFA3乃至FFA9は、論理回路10から出力される所定のクロックCLKに基づいて、前段の順序回路FFA2乃至FFA8から出力される出力信号OUTの値を次段の順序回路FFA4乃至FFA10と論理回路10とにそれぞれ出力する(図示せず)。そして、順序回路FFA10は、論理回路10から出力される所定のクロックCLKに基づいて、前段の順序回路FFA9から出力される出力信号OUTの値を次段の順序回路FFB1と論理回路10とに出力する(図示せず)。
また、順序回路FFB1は、論理回路10から出力される所定のクロックCLKに基づいて、前段の順序回路FFA10から出力される出力信号OUTを次段の順序回路FFAB2と論理回路10とに出力する(図示せず)。同様に、順序回路FFB2乃至FFB9は、論理回路10から出力される所定のクロックCLKに基づいて、前段の順序回路FFB1乃至FFB8から出力される出力信号OUTの値を次段の順序回路FFB3乃至FFB10と論理回路10とにそれぞれ出力する(図示せず)。そして、順序回路FFB10は、論理回路10から出力される所定のクロックCLKに基づいて、前段の順序回路FFB9から出力される出力信号OUTの値を次段の順序回路(図示せず)と論理回路10とに出力する(図示せず)。
次に、シフトレジスタ20における順序回路FFの配置位置について説明する。順序回路FFA1乃至FFA10は、それぞれ第1の方向に直列に配置される。順序回路FFA2は、順序回路FFA1の配置位置から順序回路FFのn個(本例では5個)分の距離だけ第1の方向に進んだ位置に配置される。また、順序回路FFA3は、順序回路FFA2の配置位置から順序回路FFのn−1個分の距離だけ第1の方向と逆の方向に進んだ位置に配置される。また、順序回路FFA4は、順序回路FFA3の配置位置から順序回路FFのn個分の距離だけ第1の方向に進んだ位置に配置される。このように、偶数番目の順序回路FFは、前段の順序回路FFから順序回路FFのn個分の距離だけ第1の方向に進んだ位置に配置され、奇数番目の順序回路FFは、前段の順序回路FFから順序回路FFのn−1個分の距離だけ第1の方向の逆の方向に進んだ位置に配置される。順序回路FFB1乃至FFB10は、それぞれ順序回路FFA1乃至FFA10に対して並列に配置される。
なお、各順序回路FFの配置位置を決定する値nは、シフトレジスタ20のホールドタイムに基づいて決定される。すなわち、値nは、順序回路FF間を接続する信号線の長さdが、順序回路FFの信号のラッチに前段の順序回路FFの出力の変化の影響が及ばない程度に十分に長くなるように決定される。また、各順序回路FFは、シフトレジスタ20のクロック端子CKからクロック線W_CLKを介して各順序回路FFに至る経路の長さの各順序回路FFにおける差異が所定の閾値内となるように、できる限り近接して配置される。
以上のように構成されるシフトレジスタ20は、順序回路FF間を接続する信号線の長さdが、順序回路FFの信号のラッチに前段の順序回路FFの出力の変化の影響が及ばない程度に十分に長くなるように、各順序回路FFが配置される。これにより、シフトレジスタ20は、タイミング解析においてホールドエラーが検出されない構成となる。また、シフトレジスタ20は、各順序回路FFが近接して配置されるため、各順序回路FFに入力されるクロックのクロックスキューが抑えられた構成となる。
図3は、本発明の一実施形態に係る半導体設計支援装置の概略構成を示す図である。同図に示すように、本実施形態に係る半導体設計支援装置300は、例えば、プロセッサモジュール310と、メモリモジュール320と、チップセット330と、ストレージデバイス340と、入出力装置350とを含んで構成される。プロセッサモジュール310、メモリモジュール320及びチップセット330は、実行装置360を構成する。
プロセッサモジュール310は、例えば、プロセッサコア、マイクロコントローラ、デジタル信号プロセッサ及び/又はこれらの組み合わせを含むが、これらに限られるものではない。ここでは、「プロセッサコア」という用語は、メインプロセッサを意味するプロセッサやCPU、MPU等と同義のものとして扱われる。プロセッサモジュール310は、1次又はそれ以上のレベルのキャッシュ機構を含んでも良い。
メモリモジュール320は、典型的には、揮発性メモリ(例えばRAM)、不揮発性メモリ(例えばROMやフラッシュメモリ等)及び/又はこれらの組み合わせからなり、プロセッサモジュール310の1次記憶装置である。メモリモジュール320は、例えば、図4に示すように、2次記憶装置としてのストレージデバイス340からロードされた、設計支援プログラム321、該設計支援プログラム321の実行に供される各種のファイル322〜325、及び該設計支援プログラム321の実行により得られる設計結果ファイル326の少なくともいくつかを、ファイル全体又はその一部について、記憶する。
設計支援プログラム321は、半導体設計支援装置300に、半導体集積回路1のレイアウト設計支援を実現させるプログラムであり、CADプログラムやEDAプログラムが相当する。設計支援プログラム321は、例えば、1つのプログラムモジュールから構成されても良いし、複数のプログラムモジュールから構成されても良い。RTL(Register Transfer Level)ファイル322は、回路情報ファイルの一つであり、半導体集積回路1の動作に関する情報を有するファイルである。RTLファイル322は、半導体集積回路1の記憶素子間の信号の流れと該信号に対する論理演算との組み合わせに基づいて記述される。ネットリストファイル323は、回路情報ファイルの一つであり、半導体集積回路1の各構成要素間の電気的接続関係に関する情報を有するファイルである。ネットリストファイル323は、典型的にはRTLファイル322に対して論理合成を実行することによって得られる。タイミング制約ファイル324は、ネットリストファイル323に対して静的タイミング解析(STA:Static Timing Analysis)を行う際に用いられるファイルであり、例えば半導体集積回路におけるクロックの特性(例えば、動作周波数、セットアップタイム及びホールドタイム)に関する情報を有する。タイミング制約ファイル324の一つとしてSDC(Synopsys Design Constraints)ファイルがある。タイミング解析結果ファイル325は、ネットリストファイル323に対して静的タイミング解析を行った結果を示すファイルである。タイミング解析結果ファイル325には、静的タイミング解析の結果として、例えばシフトレジスタ20の各順序回路FFのタイミング特性(例えば、セットアップタイム及びホールドタイム)が記述される。設計結果ファイル326は、設計支援プログラム321による半導体集積回路1の設計結果を示すファイルである。
図3に戻り、チップセット330は、プロセッサモジュール310、メモリモジュール320、ストレージデバイス340及び入出力装置350等を接続するバスとのブリッジや、半導体設計支援装置300を構成するために必要な他のコンポーネントを集積した回路からなる。チップセット330は、例えば、プロセッサモジュール310によって制御される。
ストレージデバイス340は、典型的には、ハードディスクドライブ(HDD)や光学式ディスクドライブ、ソリッドステートデバイス(SSD)等からなる2次記憶装置である。入出力装置350は、各種のペリフェラルインターフェースであり、例えば、キーボードや、マウス、ディスプレイ、印刷装置などである。入出力装置350は、例えば、レイアウト設計時に、設計者(ユーザ)に対してインタラクティブな操作環境を提供する。
以上のように構成される半導体設計支援装置300は、例えば、ユーザの指示に従い、プロセッサモジュール310の制御の下、設計支援プログラム321を実行し、適宜にインタラクティブな操作を介して、レイアウト設計を行い、半導体集積回路1を作成する。
図5は、本発明の一実施形態に係る半導体設計支援装置の動作を示すフローチャートである。同図に示すように、本実施形態に係る半導体設計支援装置300は、まず、ユーザの操作に従い、設計支援プログラム321を実行し、メモリモジュール320上に半導体集積回路のレイアウト設計を行うために必要な各種のファイル322乃至325を準備する(S501)。例えば、各種のファイル322乃至325の少なくともいくつかは、ストレージデバイス340からロードされ、また、他のいくつかは、新たに生成される。かかる処理は、半導体設計支援装置300のプロセッサモジュール310の制御の下、設計支援プログラム321が実行されることにより、実現される。
次に、半導体設計支援装置300は、所定の条件に従ってRTLファイル322からシフトレジスタ20に関する記述を抽出する。具体的には、半導体設計支援装置300は、例えば図6に示すようなRTLファイル322から、module文の中でレジスタ宣言されている変数であって、always文によってクロックの変化によって動作するように記述されており、“<=”によって値が代入されるように記述されている変数をシフトレジスタ20に関する記述として抽出する(S502)。
次に、半導体設計支援装置300は、タイミング制約ファイル324及びタイミング解析結果ファイル325に従って、抽出したシフトレジスタ20に関する記述に基づいてホールドタイムを算出する(S503)。具体的には、半導体設計支援装置300は、タイミング解析結果ファイル325から、記述が抽出されたシフトレジスタ20における順序回路FFのホールドタイムの値と、該シフトレジスタ20に入力されるクロックの記述とを抽出するとともに、記述が抽出されたクロックのホールドタイムの値をタイミング制約ファイル324から抽出し、さらに、順序回路FFのホールドタイムの値に該クロックのホールドタイムの値を加算することによって、シフトレジスタ20のホールドタイムの値を算出する。
なお、シフトレジスタ20のホールドタイムは、シフトレジスタ20がクロックCLKに基づいてデータ信号DATAをラッチした後に、データ信号DATAの状態が所定の状態に維持されるために必要な時間である。また、順序回路FFのホールドタイムは、順序回路FFがクロックCLKに基づいて、自身に入力される信号をラッチした後に、該信号の状態が所定の状態に維持されるために必要な時間である。また、クロックCLKのホールドタイムは、クロックCLKが入力される構成要素が該構成要素に入力される信号をラッチした後に、該信号の状態が所定の状態に維持されるために必要な時間である。
半導体設計支援装置300は、次に、算出したホールドタイムの値からシフトレジスタ20の各順序回路FFの配置間隔を決定する(S504)。具体的には、半導体設計支援装置300は、シフトレジスタ20の各順序回路FFの遅延時間と、各順序回路FF同士を直列に接続する信号線の遅延時間との合計が、算出したホールドタイムの値より大きくなるように、該信号線の長さを決定し、該信号線の長さに従って各順序回路FFの配置間隔を決定する。
次に、半導体設計支援装置300は、半導体集積回路1を構成するためのレイアウト領域L内の所定の位置に、ハードマクロ11を配置する(S505)。続いて、半導体設計支援装置300は、レイアウト領域L内のハードマクロ11が配置されていない領域にシフトレジスタ20を配置する(S506)。具体的には、半導体設計支援装置300は、レイアウト領域L内の所定の位置に、決定した配置間隔に従って、各順序回路FFを配置し、該順序回路FF同士を直列に接続する信号線と、該順序回路FFを駆動するためのクロック線とを配置する。なお、半導体設計支援装置300は、シフトレジスタ20のクロック端子CKからクロック線W_CLKを介して各順序回路FFに至る各経路の長さ間の差異が所定の閾値内となるように、各順序回路FFができる限り近接して配置する。
半導体設計支援装置300は、レイアウト領域L内のハードマクロ11及びシフトレジスタ20が配置されていない領域に論理回路10のハードマクロ11以外の構成要素(例えば、論理セル)を配置する(S507)。続いて、半導体設計支援装置300は、クロックツリー合成(CTS:Clock Tree Synthesis)を実行することによって、論理回路10内の各構成要素のクロックスキューを低減するためのバッファの配置などを行う(S508)。そして、半導体設計支援装置300は、レイアウト設計の結果に対してタイミング解析を行い、論理回路10に関してセットアップタイムエラー及びホールドタイムエラーの除去を行い(S509)、半導体集積回路の設計を終了する。なお、ステップS509の処理において、論理回路10に関するセットアップタイムエラー及びホールドタイムエラーが発生する場合は、半導体設計支援装置300のユーザは、レイアウト設計の工程以前の対応する工程に戻って該エラーを解消する。
上述したように、半導体設計支援装置300は、RTLファイル322からシフトレジスタ20の記述を抽出し、該記述が抽出されたシフトレジスタ20における順序回路FFのホールドタイムの値と、該順序回路FFに入力されるクロックの記述をタイミング解析結果ファイル325から抽出し、該記述が抽出されたクロックのホールドタイムの値をタイミング制約ファイル324から抽出し、順序回路FFのホールドタイムの値と該クロックのホールドタイムの値とに基づいてシフトレジスタ20のホールドタイムの値を算出する。そして、半導体設計支援装置300は、シフトレジスタ20のホールドタイムの値に基づいて、順序回路FFの配置間隔を決定する。これにより、半導体設計支援装置300は、シフトレジスタ20に関わるタイミングエラーが発生しないように半導体集積回路のレイアウト設計を行うことができる。
図6は、本発明の一実施形態に係る半導体集積回路を示すRTLファイルを説明するための図である。便宜上、RTLファイル322を構成する各行の左端には、行番号を付している。RTLファイル322は、典型的には、モジュールの宣言に関する記述と、該モジュールで使用する入力信号、レジスタ及び出力信号の定義に関する記述と、該レジスタの動作に関する記述とからなる。
同図に示す例では、RTLファイル322の1行目には、シフトレジスタ20を示すモジュールXXXを宣言することが記述されている。また、RTLファイル322の2行目乃至5行目には、シフトレジスタ20に用いられる入力信号、レジスタ及び出力信号を定義することが記述されている。具体的には、RTLファイル322の2行目には入力信号として、データ信号DATAとクロックCLKとを定義することが記述され、RTLファイル322の3行目には出力信号として順序回路FFA及びFFBの出力を定義することとが記述され、RTLファイル322の4行目及び5行目にはレジスタとして順序回路FFA及びFFBを定義することが記述される。
また、RTLファイル322の6行目乃至8行目には、順序回路FFAが、クロックCLKの立ち上がりタイミングで、前段の順序回路FFAの出力をラッチすることが記述されている。また、RTLファイル322の6行目乃至8行目には、最前段の順序回路FFAが、クロックCLKの立ち上がりタイミングで、入力信号DATAをラッチすることが記述されている。また、RTLファイル322の6行目乃至8行目には、順序回路FFBが、クロックCLKの立ち上がりタイミングで、前段の順序回路FFBの出力をラッチすることが記述されている。また、RTLファイル322の6行目乃至8行目には、最前段の順序回路FFBが、クロックCLKの立ち上がりタイミングで、最後段の順序回路FFAの出力をラッチすることが記述されている。また、RTLファイル322の9行目及び10行目は、順序回路FFの動作の記述の終了と、モジュール文の終了の記述とが記述されている。
次に、半導体設計支援装置300がRTLファイル322からシフトレジスタ20に関する記述を抽出する例について説明する。半導体設計支援装置300は、上述したように、module文の中でレジスタ宣言(符号3221及び3222)されている変数(変数FFA及びFFB)であって、always文(符号3223)によってクロックの変化によって動作する(符号3224)ように記述されており、“<=”(符号3225及び3226)によって値が代入されるように記述されている変数をシフトレジスタ20に関する記述としてRTLファイル322から抽出する。
図7は、本発明の一実施形態に係る半導体集積回路に対するタイミング解析結果ファイルを説明するための図である。同図に示すように、タイミング解析結果ファイル325には、タイミング解析のために予め定められた2つの解析ポイント(本例では、順序回路FFA1及びFFA2)を信号が伝搬する際の該解析ポイントの各種の特性が記述されている。以下、タイミング解析結果ファイル325の記述内容について説明する。
タイミング解析結果ファイル325の1行目及び2行目には、タイミング解析のために定められた解析ポイントである順序回路FFA1及びFFA2の動作の特性が記述されている。具体的には、タイミング解析結果ファイル325の1行目及び2行目には、順序回路FFA1及びFFA2がクロックCLKの立ち上がりタイミングで動作することが記述されている。
また、タイミング解析結果ファイル325の3行目には、所定のクロックCLKのジッタ特性が記述されている(図中のclock uncertainty)。また、タイミング解析結果ファイル325の4行目には、シフトレジスタ20における順序回路FFA2のホールドタイムの値が記述されている(図中のlibrary hold time)。また、タイミング解析結果ファイル325の5行目には、順序回路FFA2の遅延時間が記述されている(図中のdata required time)。
次に、半導体設計支援装置300が、タイミング解析結果ファイル325からシフトレジスタ20における順序回路FFのホールドタイムの値とシフトレジスタ20に入力されるクロックCLKに関する記述とを抽出する例について説明する。上述したように、半導体設計支援装置300は、タイミング解析結果ファイル325について、RTLファイル322から抽出したシフトレジスタ20の記述に対応する記述3251及び3253を検索し、該検索の結果からシフトレジスタ20における順序回路FFのホールドタイムのマージン値−0.100ns(符号3255)と、該シフトレジスタ20に入力されるクロックに関する記述(符号3252及び3254)とを抽出する。そして、半導体設計支援装置300は、抽出した順序回路FFのホールドタイムのマージン値の正負を反転し、順序回路FFのホールドタイムの値とする。
図8は、本発明の一実施形態に係る半導体集積回路に対する静的タイミング解析に用いられるタイミング制約ファイルを説明するための図である。同図に示すように、タイミング制約ファイル324は、シフトレジスタ20に入力されるクロックCLKのホールドタイムの値を示す。なお、半導体設計支援装置300は、タイミング解析結果ファイル325から抽出したクロックCLKの記述に対応する記述(図中の記述3242)を検索し、該検索の結果からクロックCLKのホールドタイムの値0.08ns(図中の記述3241)を抽出する。続いて、半導体設計支援装置300は、タイミング解析結果ファイル325から抽出した順序回路FFのホールドタイムの値0.100nsに、タイミング制約ファイル324から抽出したクロックCLKのホールドタイムの値0.080nsを加算した結果である0.180nsをシフトレジスタ20のホールドタイムの値として決定する。さらに、半導体設計支援装置300は、該決定したシフトレジスタ20のホールドタイムの値0.180nsに従って、順序回路FFの配置間隔を順序回路FFのm個(本例では4個)分以上の距離に決定する。
図9は、本発明の他の実施形態に係る半導体集積回路の設計支援方法により得られる半導体集積回路のシフトレジスタを示す平面模式図である。本実施形態に係るシフトレジスタ20’は、上述した半導体設計支援装置300による設計支援方法を用いることによって設計されるが、各順序回路FFが千鳥状に(ジクザク状に)配置される点で、シフトレジスタ20における順序回路FFの配置とは異なっている。
半導体設計支援装置300は、まず、順序回路FFA1をレイアウト領域Lの所定の位置に配置する。次に、半導体設計支援装置300は、順序回路FFA1の配置位置から順序回路FFのn個(本例では3個)分の距離だけ第2の方向の逆の方向に進んだ位置に順序回路FFA2を配置する。続いて、半導体設計支援装置300は、順序回路FFA2の配置位置から順序回路FFの1個分の距離だけ第1の方向に進み、順序回路FFのn個分の距離だけ第2の方向に進んだ位置に順序回路FF3を配置する。このように、半導体設計支援装置300は、前段の順序回路FFから順序回路FFのn個分の距離だけ第2の方向の逆の方向に進んだ位置に偶数番目の順序回路FFを配置する。これに対して、半導体設計支援装置300は、前段の順序回路FFから順序回路FFの1個分の距離だけ第1の方向に進み、順序回路FFのn個分だけ第2の方向に進んだ位置に奇数番目の順序回路FFを配置する。そして、半導体設計支援装置300は、図5に示したようなステップS506乃至S508の処理に従って、半導体集積回路1のレイアウト設計を行い、該設計を終了する。
このような設計支援方法により設計されたシフトレジスタ20’においては、図9に示すように、偶数番目の順序回路FFAは、前段の順序回路FFAから順序回路FFAのn個分の距離だけ第2の方向の逆の方向に進んだ位置に配置され、奇数番目の順序回路FFAは、前段の順序回路FFAから順序回路FFAの1個分の距離だけ第1の方向に進み、順序回路FFAのn個分だけ第2の方向に進んだ位置に配置される。順序回路FFB1乃至FFB10は、それぞれ順序回路FFA1乃至FFA10に続いて、順序回路FF1乃至FFA10と同様に配置される。そして、順序回路FFC1は、順序回路FFA1から順序回路FFの1個分の距離だけ第2の方向とは逆の方向に進んだ位置に配置される。順序回路FFC1より後段の順序回路FFは、順序回路FFC1を基点として順序回路FFA2乃至FFA10と同様に配置される。
以上のように、半導体設計支援装置300は、順序回路FF間を接続する信号線の長さdが、順序回路FFの信号のラッチに前段の順序回路FFの出力の変化の影響が及ばない程度に十分に長くなるように、各順序回路FFを配置する。これにより、シフトレジスタ20’は、レイアウト設計の工程後のタイミング解析においてホールドエラーが検出されない構成となる。また、半導体設計支援装置300は、各順序回路FFを近接して配置するため、各順序回路に入力されるクロックのクロックスキューを抑制することができる。さらに、半導体設計支援装置300は、奇数番目の順序回路FFから偶数番目の順序回路FFに至る信号線の長さと、偶数番目の順序回路FFから奇数番目の順序回路FFに至る信号線の長さとの差異が小さくなるように各順序回路FFを配置するため、各順序回路FFが出力する出力信号OUTの位相差を抑制することができる。
上記各実施形態は、本発明を説明するための例示であり、本発明をこれらの実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱しない限り、さまざまな形態で実施することができる。
例えば、本明細書に開示される方法においては、その結果に矛盾が生じない限り、ステップ、動作又は機能を並行して又は異なる順に実施しても良い。説明されたステップ、動作及び機能は、単なる例として提供されており、ステップ、動作及び機能のうちのいくつかは、発明の要旨を逸脱しない範囲で、省略でき、また、互いに結合させることで一つのものとしてもよく、また、他のステップ、動作又は機能を追加してもよい。
また、本明細書では、さまざまな実施形態が開示されているが、一の実施形態における特定のフィーチャ(技術的事項)を適宜改良しながら、他の実施形態に追加し、又は該他の実施形態における特定のフィーチャと置換することができ、そのような形態も本発明の要旨に含まれる。