(57)【要約】      （修正有）【課題】タイミング制約を満たすためにセルの物理的な位置やＲＴＬ（Register Transfer Level）を変更する必要がなく、回路の最適化を短時間に行うことができ、半導体集積回路の設計期間を短縮することができる半導体集積回路の設計方法、設計プログラムを提供する。【解決手段】半導体集積回路のネットリストに対して静的タイミング解析を行うことにより、所定のタイミング制約を満たさないタイミングエラーパスを検出し、前記タイミングエラーパスを含む第１の論理ブロックと、フリップフロップを介して前記第１の論理ブロックに接続され、所定のタイミング制約を満たす第２の論理ブロックとを抽出し、前記第１の論理ブロックと前記第２の論理ブロックとの間のフリップフロップが正相／逆相フリップフロップである場合は、当該正相／逆相フリップフロップを逆相／正相フリップフロップに変更する。【選択図】図１
2011134072.tif 000002
【特許請求の範囲】
【請求項１】
複数の論理ブロック、クロック信号の立ち上がりエッジに同期して入力データを保持する正相フリップフロップ、及びクロック信号の立ち下がりエッジに同期して入力データを保持する逆相フリップフロップを有する半導体集積回路の設計方法であって、
前記半導体集積回路のネットリストに対して静的タイミング解析を行うことにより、所定のタイミング制約を満たさないタイミングエラーパスを検出する工程と、
所定のタイミング制約を満たさない前記タイミングエラーパスを含む第１の論理ブロックと、フリップフロップを介して前記第１の論理ブロックに接続され、所定のタイミング制約を満たす第２の論理ブロックとを抽出する工程と、
前記第１の論理ブロックと前記第２の論理ブロックとの間のフリップフロップが前記正相フリップフロップである場合は、当該正相フリップフロップを逆相フリップフロップに変更し、前記第１の論理ブロックと前記第２の論理ブロックとの間のフリップフロップが前記逆相フリップフロップである場合は、当該逆相フリップフロップを正相フリップフロップに変更する工程と、
を備える半導体集積回路の設計方法。
【請求項２】
前記フリップフロップを変更する工程の後、前記第１の論理ブロック及び／又は前記第２の論理ブロック内の配線経路の遅延時間が所定範囲の値となるように遅延素子を挿入する工程をさらに備えることを特徴とする請求項１に記載の半導体集積回路の設計方法。
【請求項３】
前記フリップフロップの変更により、前記第１の論理ブロック及び／又は前記第２の論理ブロックの遅延制約が緩和された場合、当該論理ブロック内のトランジスタを、閾値電圧の高いトランジスタに置換することを特徴とする請求項１又は２に記載の半導体集積回路の設計方法。
【請求項４】
前記クロックツリーをインバータで構成することを特徴とする請求項１乃至３のいずれかに記載の半導体集積回路の設計方法。
【請求項５】
複数の論理ブロック、クロック信号の立ち上がりエッジに同期して入力データを保持する正相フリップフロップ、及びクロック信号の立ち下がりエッジに同期して入力データを保持する逆相フリップフロップを有する半導体集積回路の設計プログラムであって、
前記半導体集積回路のネットリストに対して静的タイミング解析を行うことにより、所定のタイミング制約を満たさないタイミングエラーパスを検出するステップと、
所定のタイミング制約を満たさないパスを含む第１の論理ブロックと、フリップフロップを介して前記第１の論理ブロックに接続され、所定のタイミング制約を満たす第２の論理ブロックとを抽出するステップと、
前記第１の論理ブロックと前記第２の論理ブロックとの間のフリップフロップが前記正相フリップフロップである場合は、当該正相フリップフロップを逆相フリップフロップに変更し、前記第１の論理ブロックと前記第２の論理ブロックとの間のフリップフロップが前記逆相フリップフロップである場合は、当該逆相フリップフロップを正相フリップフロップに変更するステップと、
詳細な配線経路を決定するステップと、
をコンピュータに実行させることを特徴とする半導体集積回路の設計プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の設計方法及びプログラムに関するものである。
【背景技術】
【０００２】
半導体集積回路の設計では、論理セルの初期配置、クロックツリー合成（ＣＴＳ：Clock Tree Synthesis）を用いたクロック配線、論理セルの配置最適化、論理セル間の詳細配線が順に行われる。
【０００３】
クロックツリー合成は、チップ内に散在するフリップフロップ等の複数の論理回路間に供給されるクロック信号の位相ずれ（クロックスキュー）を小さくするための手法である。
【０００４】
クロックツリー合成後の論理セルの配置最適化では、静的タイミング解析（ＳＴＡ：Static Timing Analysis）により論理回路が所望のタイミング制約を満たしているか否かが検証され、所望のタイミング制約を満たしていない場合、論理セルの配置が変更される。論理セルの配置を変更してもタイミング制約を満たすことができない場合は、ＲＴＬ（Register Transfer Level）を変更することになり、クロック配線等が再度行われるため、設計期間を増加させるという問題があった。
【０００５】
第１の同期型回路ブロックと第２の同期型回路ブロックとの間に製造状態の違いによる遅延時間差がある場合に、第１の同期型回路ブロックと第２の同期型回路ブロックとの間に第１の同期型回路ブロックの内部クロックに同期して動作するレジスタ素子を設け、２つの同期型回路ブロック間でのデータ受け渡し時の動作余裕を拡大する手法が知られている（例えば特許文献１参照）。しかし、レジスタ素子を追加するために、素子の配置や配線等を再度行う必要があり、設計期間を増加させるという問題があった。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−１６８９６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、設計期間を短縮できる半導体集積回路の設計方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一態様による半導体集積回路の設計方法は、複数の論理ブロック、クロック信号の立ち上がりエッジに同期して入力データを保持する正相フリップフロップ、及びクロック信号の立ち下がりエッジに同期して入力データを保持する逆相フリップフロップを有する半導体集積回路の設計方法であって、前記半導体集積回路のネットリストに対して静的タイミング解析を行うことにより、所定のタイミング制約を満たさないタイミングエラーパスが検出する工程と、所定のタイミング制約を満たさない前記タイミングエラーパスを含む第１の論理ブロックと、フリップフロップを介して前記第１の論理ブロックに接続され、所定のタイミング制約を満たす第２の論理ブロックとを抽出する工程と、前記第１の論理ブロックと前記第２の論理ブロックとの間のフリップフロップが前記正相フリップフロップである場合は、当該正相フリップフロップを逆相フリップフロップに変更し、前記第１の論理ブロックと前記第２の論理ブロックとの間のフリップフロップが前記逆相フリップフロップである場合は、当該逆相フリップフロップを正相フリップフロップに変更する工程と、を備えるものである。
【０００９】
本発明の一態様による半導体集積回路の設計プログラムは、複数の論理ブロック、クロック信号の立ち上がりエッジに同期して入力データを保持する正相フリップフロップ、及びクロック信号の立ち下がりエッジに同期して入力データを保持する逆相フリップフロップを有する半導体集積回路の設計プログラムであって、前記半導体集積回路のネットリストに対して静的タイミング解析を行うことにより、所定のタイミング制約を満たさないタイミングエラーパスが検出するステップと、所定のタイミング制約を満たさないパスを含む第１の論理ブロックと、フリップフロップを介して前記第１の論理ブロックに接続され、所定のタイミング制約を満たす第２の論理ブロックとを抽出するステップと、前記第１の論理ブロックと前記第２の論理ブロックとの間のフリップフロップが前記正相フリップフロップである場合は、当該正相フリップフロップを逆相フリップフロップに変更し、前記第１の論理ブロックと前記第２の論理ブロックとの間のフリップフロップが前記逆相フリップフロップである場合は、当該逆相フリップフロップを正相フリップフロップに変更するステップと、詳細な配線経路を決定するステップと、をコンピュータに実行させるものである。
【発明の効果】
【００１０】
本発明によれば、設計期間を短縮できる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態に係る半導体集積回路の設計方法を説明するフローチャートである。
【図２】フリップフロップの正相／逆相入れ替え前の回路構成図である。
【図３】フリップフロップの正相／逆相入れ替え後の回路構成図である。
【図４】フリップフロップの正相／逆相入れ替え前の回路構成図である。
【図５】フリップフロップの正相／逆相入れ替え後の回路構成図である。
【図６】フリップフロップの正相／逆相入れ替え後の回路構成図である。
【図７】バッファを用いたクロックツリーの構成例を示す図である。
【図８】インバータを用いたクロックツリーの構成例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態を図面に基づいて説明する。
【００１３】
図１に示すフローチャートを用いて、本発明の実施形態に係る半導体集積回路の設計方法を説明する。
【００１４】
（ステップＳ１０１）Ｃ言語等の高級言語によってシステム（論理回路）の動作のみを記述した動作記述を作成し、この動作記述からクロックサイクル、レジスタ、演算器等のハードウェア情報を含んだＲＴＬ（Register Transfer Level）記述に合成する高位合成が行われる。ＲＴＬの記述に対して論理合成ツールを適用し、ＲＴＬの記述をゲートレベルのネットリストに論理合成する。
【００１５】
（ステップＳ１０２）論理ゲートセルネットリストの初期配置を行い、概略配線の経路を決定する。
【００１６】
（ステップＳ１０３）クロックツリー合成を用いて、チップ内に散在するフリップフロップ等の複数の論理回路間に供給されるクロック信号の遅延(クロックレイテンシー)が短く、なおかつ到達時間のずれ（クロックスキュー）が小さくなるようにクロック信号を分配するクロックリーが構築される。
【００１７】
（ステップＳ１０４）静的タイミング解析（ＳＴＡ：Static Timing Analysis）が行われ、所望のタイミング制約を満たしていないタイミングエラーパスが検出される。
【００１８】
（ステップＳ１０５）ステップＳ１０４で検出されたタイミングエラーパスに接続されるフリップフロップの正相／逆相を入れ替えることでタイミングが改善される回路が検出される。
【００１９】
ここで、正相フリップフロップは、クロック信号の立ち上がりエッジに同期して情報を入力するフリップフロップをいう。また、逆相フリップフロップは、クロック信号の立ち下がりエッジに同期して情報を入力するフリップフロップをいう。
【００２０】
（ステップＳ１０６）ステップＳ１０５で検出された回路のフリップフロップの正相／逆相を入れ替える。
【００２１】
フリップフロップの正相／逆相の入れ替えについて図２、図３を用いて説明する。図２に示すように、フリップフロップ１０１〜１０６、論理ブロック１１０、１１１が設けられた回路に対してフリップフロップの正相／逆相の入れ替えを行う場合について考える。
【００２２】
フリップフロップ１０１、１０２は正相フリップフロップであり、入力信号をクロック信号ＣＬＫの立ち上がりエッジに基づいて保持し、論理ブロック１１０へ出力する。
【００２３】
フリップフロップ１０３、１０４は逆相フリップフロップであり、論理ブロック１１０からの出力信号をクロック信号ＣＬＫの立ち下がりエッジに基づいて保持し、論理ブロック１１１へ出力する。
【００２４】
フリップフロップ１０５、１０６は逆相フリップフロップであり、論理ブロック１１１からの出力信号をクロック信号ＣＬＫの立ち下がりエッジに基づいて保持し、出力する。
【００２５】
フリップフロップ１０１、１０２が時刻ｔ１におけるクロック信号ＣＬＫの立ち上がりエッジで信号を保持する場合、フリップフロップ１０３、１０４は時刻ｔ２におけるクロック信号ＣＬＫの立ち下がりエッジで論理ブロック１１０からの出力信号を保持し、フリップフロップ１０５、１０６は時刻ｔ４におけるクロック信号ＣＬＫの立ち下がりエッジで論理ブロック１１１からの出力信号を保持することになる。
【００２６】
従って、論理ブロック１１０を通るパスが満たすべき遅延時間（遅延制約）は時刻ｔ１からｔ２の間、すなわちクロック信号ＣＬＫの半周期となる。また、論理ブロック１１１を通るパスが満たすべき遅延時間は時刻ｔ２からｔ４の間、すなわちクロック信号ＣＬＫの１周期となる。
【００２７】
ここで、論理ブロック１１０を通るパスの遅延時間がクロック信号ＣＬＫの半周期より長く、１周期より短く、かつ、論理ブロック１１１を通るパスの遅延時間がクロック信号ＣＬＫの半周期以下である場合、図３に示すように、論理ブロック１１０と論理ブロック１１１との間に位置するフリップフロップ１０３、１０４を正相フリップフロップに入れ替える。
【００２８】
正相フリップフロップであるフリップフロップ１０３、１０４は、時刻ｔ３におけるクロック信号ＣＬＫの立ち上がりエッジで論理ブロック１１０からの出力信号を保持する。
【００２９】
これにより、論理ブロック１１０を通るパスが満たすべき遅延時間は時刻ｔ１からｔ３の間、すなわちクロック信号ＣＬＫの１周期となる。また、論理ブロック１１１を通るパスが満たすべき遅延時間は時刻ｔ３からｔ４の間、すなわちクロック信号ＣＬＫの半周期となる。
【００３０】
このように、フリップフロップ（フリップフロップ１０３、１０４）の正相／逆相を入れ替えることで、タイミングに余裕がある回路パス（論理ブロック１１１を通るパス）の遅延制約を厳しくし、タイミングが間に合わなくなった回路パス（論理ブロック１１０を通るパス）の遅延制約を緩和することができる。
【００３１】
論理ブロック１１０、１１１を通るパスはマルチサイクルパスでも良い。
【００３２】
フリップフロップの正相／逆相の入れ替えの別の例を図４、図５を用いて説明する。図４に示すように、フリップフロップ２０１〜２０６、論理ブロック２１０、２１１が設けられた回路に対してフリップフロップの正相／逆相の入れ替えを行う場合について考える。
【００３３】
フリップフロップ２０１、２０２は正相フリップフロップであり、入力信号をクロック信号ＣＬＫの立ち上がりエッジに基づいて保持し、論理ブロック２１０へ出力する。
【００３４】
フリップフロップ２０３、２０４は正相フリップフロップであり、論理ブロック２１０からの出力信号をクロック信号ＣＬＫの立ち上がりエッジに基づいて保持し、論理ブロック２１１へ出力する。
【００３５】
フリップフロップ２０５、２０６は正相フリップフロップであり、論理ブロック２１１からの出力信号をクロック信号ＣＬＫの立ち上がりエッジに基づいて保持し、出力する。
【００３６】
フリップフロップ２０１、２０２が時刻ｔ１１におけるクロック信号ＣＬＫの立ち上がりエッジで信号を保持する場合、フリップフロップ２０３、２０４は時刻ｔ１２におけるクロック信号ＣＬＫの立ち上がりエッジで論理ブロック１１０からの出力信号を保持し、フリップフロップ２０５、２０６は時刻ｔ１３におけるクロック信号ＣＬＫの立ち上がりエッジで論理ブロック２１１からの出力信号を保持することになる。
【００３７】
従って、論理ブロック２１０を通るパスが満たすべき遅延時間（遅延制約）は時刻ｔ１１からｔ１２の間、すなわちクロック信号ＣＬＫの１周期となる。同様に、論理ブロック２１１を通るパスが満たすべき遅延時間は時刻ｔ１２からｔ１３の間、すなわちクロック信号ＣＬＫの１周期となる。
【００３８】
ここで、論理ブロック２１１を通るパスの遅延時間がクロック信号ＣＬＫの１周期より長く、１．５周期より短く、かつ、論理ブロック２１０を通るパスの遅延時間がクロック信号ＣＬＫの半周期以下である場合、図５に示すように、論理ブロック２１０と論理ブロック２１１との間に位置するフリップフロップ２０３、２０４を逆相フリップフロップに入れ替える。
【００３９】
逆相フリップフロップであるフリップフロップ２０３、２０４は、時刻ｔ１４におけるクロック信号ＣＬＫの立ち下がりエッジで論理ブロック２１０からの出力信号を保持する。
【００４０】
これにより、論理ブロック２１０を通るパスが満たすべき遅延時間は時刻ｔ１１からｔ１４の間、すなわちクロック信号ＣＬＫの半周期となる。また、論理ブロック２１１を通るパスが満たすべき遅延時間は時刻ｔ１４からｔ１３の間、すなわちクロック信号ＣＬＫの１．５周期となる。
【００４１】
このように、フリップフロップ（フリップフロップ２０３、２０４）の正相／逆相を入れ替えることで、タイミングに余裕がある回路パス（論理ブロック２１０を通るパス）の遅延制約を厳しくし、タイミングが間に合わなくなった回路パス（論理ブロック２１１通るパス）の遅延制約を緩和することができる。
【００４２】
ステップＳ１０５では、上述したような隣り合うタイミングが間に合わない回路パス及びタイミングに余裕がある回路パスが検出される。
【００４３】
このようなフリップフロップの種類の変更（正相／逆相の入れ替え）に伴い、ＣＴＳの配線ツリーからの配線引き出し部分を変更して、その部分のみ再度ＣＴＳ配線を行う。
【００４４】
（ステップＳ１０７）ステップＳ１０６において正相／逆相の入れ替えを行ったフリップフロップの前後の回路を最適化し、所望のタイミング制約が満たされるようにする。
【００４５】
例えば、フリップフロップ２０３、２０４の正相／逆相の入れ替えを行った図５に示す回路では、論理ブロック２１１の全ての経路はクロック信号ＣＬＫの０．５周期以上、１．５周期未満の遅延時間となるようなホールド制約を満たす必要がある。クロック信号ＣＬＫの０．５周期未満の経路が存在する場合、フリップフロップ２０５、２０６が、その経路を伝播した信号を時刻ｔ１２におけるクロック信号ＣＬＫの立ち上がりエッジで保持することで、所望の動作が行われなくなるためである。
【００４６】
従って、論理ブロック２１１の経路のうち、遅延時間がクロック信号ＣＬＫの０．５周期未満となる経路に遅延素子（バッファ等）を挿入して、遅延時間がクロック信号ＣＬＫの０．５周期以上、１．５周期未満となるようにする。
【００４７】
このようにステップＳ１０７では、ステップＳ１０６において正相／逆相の入れ替えを行ったフリップフロップの前後の論理ブロックの各経路が所望の遅延時間となるように、遅延素子の挿入等が行われる。
【００４８】
また、遅延制約が緩和される論理ブロックに対して、使用されている論理セルの面積を小さくし、駆動力を小さくしてもよい。セル面積を小さくすることで、他のセルを配置したり、他のセルの駆動力を大きくしたり面積を大きくしたりできる。また、トランジスタを、閾値電圧の高い種類のトランジスタに置き換えて、リーク電流を抑制するようにしてもよい。
【００４９】
遅延制約が厳しくなる論理ブロックに対しては、使用されている論理セルを、より駆動力の大きいセルに変更してもよい。また、トランジスタを、閾値電圧の低い種類のトランジスタに置き換えて、論理セルの遅延時間を短縮してもよい。
【００５０】
（ステップＳ１０８）データ信号の詳細な配線を行う。
【００５１】
このように、本実施形態によれば、タイミング制約を満たせない回路パスとタイミングに余裕がある回路パスとの間のフリップフロップの正相／逆相を入れ替えることで、タイミングに余裕がある回路パスの遅延制約を厳しくし、タイミング制約を満たせない回路パスの遅延制約を緩和する。タイミング制約を満たすためにセルの物理的な位置やＲＴＬを変更する必要がないので、回路の最適化を短時間に行うことができ、半導体集積回路の設計期間を短縮することができる。
【００５２】
図２、図３に示す例において、フリップフロップ１０３、１０４の正相／逆相を入れ替えることで、論理ブロック１１１を通るパスが満たすべき遅延時間はクロック信号ＣＬＫの半周期未満となった。論理ブロック１１１がこの遅延制約を満たせない場合、図６に示すように、論理ブロック１１２の次のフリップフロップ１０７、１０８が逆相であり、論理ブロック１１２を通るパスのタイミングに余裕があれば、フリップフロップ１０５、１０６の正相／逆相を入れ替えて、論理ブロック１１１の遅延制約を緩和することができる。このように、遅延制約を満たせない第１の論理ブロックと、回路パスのタイミングに余裕がある第２の論理ブロックとが隣り合っていなくても、それらの間に位置するフリップフロップの正相／逆相を入れ替えることで、第１の論理ブロックの遅延制約を緩和することができる。
【００５３】
なお、正相フリップフロップと逆相フリップフロップとの間の論理ブロック（図３における論理ブロック１１１等）では、ＣＲＰＲ（Clock Reconvergence Pessimism Removal）による遅延制約の緩和が出来なくなるため、これらの論理を通るパスは、ＣＲＰＲ緩和無しの条件でもタイミングを満たすように論理最適化される必要がある。
【００５４】
上記実施形態において、ステップＳ１０３におけるクロックツリー合成に使用するセルは、バッファでなくインバータのみで構成することが好適である。例えば、図７（ａ）に示すように、クロックツリーをバッファで構成し、フリップフロップ７００の正相／逆相を反転する場合、図７（ｂ）に示すように、インバータ７０１を追加する必要がある。インバータ７０１の追加により、ツリー構造のバランスを崩すおそれがある。
【００５５】
一方、図８（ａ）に示すように、クロックツリーをインバータのみで構成し、フリップフロップ８００の正相／逆相を反転する場合、図８（ｂ）に示すように、１段手前のインバータからクロック配線を引き出せばよく、セルを追加する必要はない。
【００５６】
従って、本実施形態では、クロックツリーをインバータのみで構成することが好適である。
【００５７】
上述した半導体集積回路の設計方法の一連の手順は、コンピュータに実行させるプログラムに組み込み、フレキシブルディスクやＣＤ−ＲＯＭ等の記録媒体に収納してコンピュータに読み込ませて実行させてもよい。これにより、本実施形態に係る設計方法を、汎用コンピュータを用いて実現することができる。記録媒体は、磁気ディスクや光ディスク等の携帯可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でもよい。また、上述した半導体集積回路の設計方法の一連の手順を組み込んだプログラムをインターネット等の通信回線（無線通信を含む）を介して頒布してもよい。さらに上述した半導体集積回路の設計方法の一連の手順を組み込んだプログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布してもよい。
【００５８】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００５９】
１０１〜１０６  フリップフロップ
１１１、１１２  論理ブロック
【図１】
2011134072.tif 000003
【図２】
2011134072.tif 000004
【図３】
2011134072.tif 000005
【図４】
2011134072.tif 000006
【図５】
2011134072.tif 000007
【図６】
2011134072.tif 000008
【図７】
2011134072.tif 000009
【図８】
2011134072.tif 000010