(57)【要約】【課題】  適正なセットアップマージンを有し且つホールドタイム違反の無い半導体集積回路装置のレイアウト方法、そのレイアウトシステムおよびそのレイアウトプログラムを提供する。【解決手段】  所定の位置に配置され、論理素子を介して互いに接続された第１および第２フリップフロップ間の信号伝播遅延時間を求める第１のステップ（Ｓ０３）と、前記信号伝播遅延時間が前記第２フリップフロップのセットアップ時間を満たすか否かを判定し（Ｓ０４）、当該セットアップ時間を満たす場合に、セットアップマージンを求める第２のステップ（Ｓ０５）と、前記セットアップマージンが予め設定された値以上か否かを判定し（Ｓ０６）、前記予め設定された値以上の場合に、前記第１フリップフロップを前記所定の位置から前記セットアップマージンが前記予め設定された値になる位置に移動させる第３のステップ（Ｓ０７）と、を具備する。【選択図】  図１
2006310469.tif 000002
【特許請求の範囲】
【請求項１】
所定の位置に配置され、論理素子を介して互いに接続された第１および第２フリップフロップ間の信号伝播遅延時間を求める第１のステップと、
前記信号伝播遅延時間が前記第２フリップフロップのセットアップ時間を満たすか否かを判定し、当該セットアップ時間を満たす場合に、セットアップマージンを求める第２のステップと、
前記セットアップマージンが予め設定された値以上か否かを判定し、前記予め設定された値以上の場合に、前記第１フリップフロップを前記所定の位置から前記セットアップマージンが前記予め設定された値になる位置に移動させる第３のステップと、
を具備することを特徴とする半導体集積回路装置のレイアウト方法。
【請求項２】
所定の位置に配置され、論理素子を介して互いに接続された第１および第２フリップフロップ間の第１信号伝播遅延時間と、論理素子を介して互いに接続された前記第１および第３フリップフロップ間の第２信号伝播遅延時間とを求める第１のステップと、
前記第１信号伝播遅延時間が前記第２フリップフロップのセットアップ時間を満たすか否かを判定し、当該セットアップ時間を満たす場合に、第１セットアップマージンを求め、前記第２信号伝播遅延時間が前記第３フリップフロップのセットアップ時間を満たすか否かを判定し、当該セットアップ時間を満たす場合に、第２セットアップマージンを求める第２のステップと、
前記第１および第２セットアップマージンが予め設定された値以上か否かを判定し、前記第１および第２セットアップマージンが前記予め設定された値以上の場合に、前記第１フリップフロップを前記所定の位置から前記第１および第２セットアップマージンがともに前記予め設定された値になる位置に移動させる第３のステップと、
を具備することを特徴とする半導体集積回路装置のレイアウト方法。
【請求項３】
所定の位置に配置され、論理素子を介して互いに接続された第１および第２フリップフロップ間の第１信号伝播遅延時間と、論理素子を介して互いに接続された前記第１および第３フリップフロップ間の第２信号伝播遅延時間と、論理素子を介して互いに接続された前記第１および第ｍ（ｍ≧４）番目のフリップフロップ間の第（ｍ−１）信号伝播遅延時間までとを求める第１のステップと、
前記第１信号伝播遅延時間が前記第２フリップフロップのセットアップ時間を満たすか否かを判定し、当該セットアップ時間を満たす場合に、第１セットアップマージンを求め、前記第２信号伝播遅延時間が前記第３フリップフロップのセットアップ時間を満たすか否かを判定し、当該セットアップ時間を満たす場合に、第２セットアップマージンを求め、前記第（ｍ−１）信号伝播遅延時間が前記第ｍフリップフロップのセットアップ時間を満たすか否かを判定し、当該セットアップ時間を満たす場合に、第（ｍ−１）セットアップマージンを求める第２のステップと、
前記第２乃至第ｍフリップフロップから、最小のセットアップマージンを有するフリップフロップとその次に小さいセットアップマージンを有するフリップフロップを選択する第３のステップと、
前記第１フリップフロップを前記所定の位置から前記選択されたフリップフロップが有するセットアップマージンが前記予め設定された値になる位置に移動させる第４のステップと、
を具備することを特徴とする半導体集積回路装置のレイアウト方法。
【請求項４】
所定の位置に配置された基点フリップフロップに論理素子を介して接続された終点フリップフロップを探索するバックトレース部と、
前記基点および終点フリップフロップ間の信号伝播遅延時間を求め、前記基点フリップフロップのセットアップマージンを算出するタイミング解析部と、
前記セットアップマージンが予め設定された値以上か否かを判定し、前記セットアップマージンが前記予め設定された値以上の場合に、前記セットアップマージンが前記予め設定された値になる前記終点フリップフロップの位置を定めるデータ解析部と、
前記終点フリップフロップを前記所定の位置から前記定められた位置に移動させるデータ処理部と、
を具備することを特徴とする半導体集積回路装置のレイアウトシステム。
【請求項５】
所定の位置に配置された基点フリップフロップに論理素子を介して接続された終点フリップフロップを探索する第１の機能と、
前記基点および終点フリップフロップ間の信号伝播遅延時間を求め、前記基点フリップフロップのセットアップマージンを算出する第２の機能と、
前記セットアップマージンが予め設定された値以上か否かを判定し、前記セットアップマージンが前記予め設定された値以上の場合に、前記セットアップマージンが前記予め設定された値になる前記終点フリップフロップの位置を定める第３の機能と、
前記終点フリップフロップを前記所定の位置から前記定められた位置に移動させる第４の機能と、
を具備することを特徴とする半導体集積回路装置のレイアウトプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路装置のレイアウト方法、そのレイアウトシステムおよびそのレイアウトプログラムに係り、特にタイミング調整が容易な半導体集積回路装置のレイアウト方法、そのレイアウトシステムおよびそのレイアウトプログラムに関する。
【背景技術】
【０００２】
半導体集積回路装置に搭載される論理モジュールは、その信号パスにフリップフロップ等の順序回路が存在する場合、所望の動作を実現するためには供給されるデータがクロックのどのくらい前からセットアップされるべきかを示すセットアップタイムと、供給されるデータがクロックのどれくらい後まで保持されるべきかを示すホールドタイムとに対して、その両方が満たされる必要がある。
【０００３】
セットアップタイムはデータの確定が早ければ早いほど制約を満たすことができるが、論理素子を配置した後では、データのタイミングを早めることは困難である。  
一方、ホールドタイムはデータの終了が遅いほど制約を満たすことができるが、論理素子を配置した後でも、配線経路の途中に遅延素子を挿入することにより，そのタイミングを遅らせることは容易である。
【０００４】
従来、半導体集積回路装置のレイアウト工程において、タイミング解析によりフリップフロップのセットアップタイムの制約を優先的に満たすように論理素子が詰めて配置されていた。  
そして、論理素子の配置が全て決定した後に、ホールドタイムの制約を満たさない信号パスに対して、事後的に遅延素子を空きスペースに配置していた。
【０００５】
そのため、例えばセットアップタイムの制約を過剰に満たす信号パスの存在が原因でホールドタイム違反が生じた場合に、その信号パスにホールドタイム違反を解消するのに必要な数の遅延素子を挿入しなければならないので、既に配置が決定し混雑した論理素子の隙間に遅延素子を配置することができなくなる問題がある。
【０００６】
これに対して、半導体集積回路装置のレイアウト工程において、複数のタイミング制約を満足するホールドタイムエラーを修正することができる方法が知られている（例えば、特許文献１参照。）。
【０００７】
この特許文献１に開示されたホールドタイム違反を修正する方法では、複数のタイミング制約を満足するホールドエラー値、具体的には各タイミング制約でのホールドエラー値の最大値を、ホールドエラーパス毎に有するホールドエラーリストと、各セットアップエラーパスにおける複数のタイミング制約を満足するセットアップマージン、具体的には各タイミング制約でのセットアップマージンの最小値を、集積回路のパス上に割り当てたセットアップマージンマップとを生成する。
【０００８】
そして，セットアップマージンマップを参照して，ホールドエラーリストのホールドエラー値を減らす又はなくす遅延素子であって，当該セットアップマージン以下の遅延量及び位置の範囲内の遅延素子を挿入している。
【０００９】
セットアップマージンマップを参照することにより，新たなセットアップエラーを発生させることなく、ホールドエラーを修正する遅延素子の挿入が可能になる。
【００１０】
然しながら、特許文献１に開示されたホールドタイム違反を修正する方法では、上述した既に配置が決定し混雑した論理素子の隙間に多数の遅延素子を配置する場合には対応できなくなるという問題がある。
【特許文献１】特開２００３−１６２５５６号公報（７頁、図６）
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明は、適正なセットアップマージンを有し且つホールドタイム違反の無い半導体集積回路装置のレイアウト方法、そのレイアウトシステムおよびそのレイアウトプログラムを提供する。
【課題を解決するための手段】
【００１２】
本発明の一態様の半導体集積回路装置のレイアウト方法では、所定の位置に配置され、論理素子を介して互いに接続された第１および第２フリップフロップ間の信号伝播遅延時間を求める第１のステップと、前記信号伝播遅延時間が前記第２フリップフロップのセットアップ時間を満たすか否かを判定し、当該セットアップ時間を満たす場合に、セットアップマージンを求める第２のステップと、前記セットアップマージンが予め設定された値以上か否かを判定し、前記予め設定された値以上の場合に、前記第１フリップフロップを前記所定の位置から前記セットアップマージンが前記予め設定された値になる位置に移動させる第３のステップと、を具備することを特徴としている。
【００１３】
また、本発明の一態様の半導体集積回路装置のレイアウトシステムでは、所定の位置に配置された基点フリップフロップに論理素子を介して接続された終点フリップフロップを探索するバックトレース部と、前記基点および終点フリップフロップ間の信号伝播遅延時間を求め、前記基点フリップフロップのセットアップマージンを算出するタイミング解析部と、前記セットアップマージンが予め設定された値以上か否かを判定し、前記セットアップマージンが前記予め設定された値以上の場合に、前記セットアップマージンが前記予め設定された値になる前記終点フリップフロップの位置を定めるデータ解析部と、前記終点フリップフロップを前記所定の位置から前記定められた位置に移動させるデータ処理部と、を具備することを特徴としている。
【００１４】
更に、本発明の一態様の半導体集積回路装置のレイアウトプログラムでは、所定の位置に配置された基点フリップフロップに論理素子を介して接続された終点フリップフロップを探索する第１の機能と、前記基点および終点フリップフロップ間の信号伝播遅延時間を求め、前記基点フリップフロップのセットアップマージンを算出する第２の機能と、前記セットアップマージンが予め設定された値以上か否かを判定し、前記セットアップマージンが前記予め設定された値以上の場合に、前記セットアップマージンが前記予め設定された値になる前記終点フリップフロップの位置を定める第３の機能と、前記終点フリップフロップを前記所定の位置から前記定められた位置に移動させる第４の機能と、を具備することを特徴としている。
【発明の効果】
【００１５】
本発明によれば、適正なセットアップマージンを有し且つホールドタイム違反の無い半導体集積回路装置が得られる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施例について図面を参照しながら説明する。
【実施例１】
【００１７】
本発明の実施例１に係る半導体集積回路装置のレイアウト方法を、図１乃至図７を用いて説明する。  
図１は半導体集積回路装置のレイアウト方法を示すフローチャート、図２はその原理を模式的に示す図、図３は半導体集積回路装置の要部の論理モジュールを示す回路図、図４はその修正前のレイアウトを示す図、図５はその動作を示すタイミングチャート、図６は半導体集積回路装置の要部の論理モジュールの修正後のレイアウトを示す図、図７はその動作を示すタイミングチャートである。
【００１８】
始に、図３乃至図５を用いて半導体集積回路装置の要部の論理モジュールの修正前のレイアウトについて説明する。  
図３に示すように、半導体集積回路装置の要部の論理モジュール１０の等価回路は、例えば前段の論理モジュールから入力信号をラッチする第１フリップフロップ１１と、ラッチした入力信号に所定の論理演算を施す論理素子１２、１３、例えばインバータと、論理演算結果をラッチして、例えば後段の論理モジュールに出力する第２フリップフロップ１４とを有している。
【００１９】
第１フリップフロップ１１の入力端２１に前段の論理モジュール（図示せず）からデータ信号ＤＡＴＡが供給され、出力端２２は配線１７を介して論理素子１２に接続され、論理素子１２は配線１８を介して論理素子１３に接続され、論理素子１３は配線１９を介して第２フリップフロップ１４の入力端２３に接続され、第２フリップフロップ１４の出力端２４は後段の論理モジュール（図示せず）に接続されている。
【００２０】
また、第１フリップフロップ１１のクロック入力端２５および第２フリップフロップ１４のクロック入力端２６にクロック信号ＣＬＫが供給されている。
【００２１】
周知のように、第１フリップフロップ１１はデータ信号ＤＡＴＡが入力端２１に入力されると、クロック信号ＣＬＫに同期してデータ信号ＤＡＴＡをラッチし、ラッチしたデータ信号ＤＡＴＡを出力端２２に出力する。
【００２２】
出力されたデータ信号ＤＡＴＡは論理素子１２、１３により所定の論理演算が施され、論理演算結果が第２フリップフロップ１４の入力端２３に供給される。
【００２３】
第２フリップフロップ１４は、クロック信号ＣＬＫに同期してデータ信号ＤＡＴＡをラッチし、ラッチしたデータ信号ＤＡＴＡを出力端２４から後段の論理モジュールに出力する。
【００２４】
データ信号ＤＡＴＡが第１フリップフロップ１１の入力端２１から第２フリップフロップ１４の入力端２３に達するまでの時間が信号伝播遅延時間である。
【００２５】
図４に示すように、論理モジュール１０は半導体チップ上に設けられ、第１フリップフロップ１１は離間して対向した電源ラインＶＤＤ１と接地ラインＧＮＤ１の間の素子配置領域１５の所定の位置に配置されている。  
論理素子１２、１３と第２フリップフロップ１４は、離間して対向した接地ラインＧＮＤ１と電源ラインＶＤＤ２の間の素子配置領域１６の所定の位置に配置されている。
【００２６】
第１フリップフロップ１１は配線１７を介して論理素子１２に接続され、論理素子１２は配線１８を介して論理素子１３に接続され、論理素子１３は配線１９を介して第２フリップフロップ１４に接続されている。
【００２７】
ここでは、修正前のレイアウトであるため、論理モジュール１０の外側の素子配置領域には別の論理モジュールのフリップフロップおよび論理素子等はまだ配置されていない。
【００２８】
図５に示すように、論理モジュール１０の修正前のレイアウトでは、第２フリップフロップ１４のセットアップタイムＴｓに対して十分なセットアップマージンａを有しているが、ホールドタイムＴｈに対してはホールドタイム違反ｂが生じている。
【００２９】
次に、ホールドタイム違反ｂに対して遅延素子を用いることなく、適正なセットアップマージンを有し且つホールドタイム違反の生じない半導体集積回路装置のレイアウト方法について詳しく説明する。
【００３０】
図１に示すように、始めに半導体集積回路装置の素子の配置情報と、配線経路情報と、タイミング制約情報等からフロアプランにより、図４に示した論理モジュール１０の第１フリップフロップ１１、論理素子１２、１３、第２フリップフロップ１４が所定の位置に配置される(ステップＳ０１)。
【００３１】
次に、第１フリップフロップ１１、論理素子１２、１３、第２フリップフロップ１４に対して仮想の配線１７、１８、１９が施される(ステップＳ０２)。
【００３２】
次に、第１フリップフロップ１１の入力端２１から第２フリップフロップ１４の入力端２３までの信号伝播遅延時間がシミュレーションにより算出され(ステップＳ０３)、セットアップタイム違反の有無がチェックされる(ステップＳ０４)。
【００３３】
セットアップタイム違反がある場合(ステップＳ０４のＹｅｓ)は、ステップＳ０１に戻り、素子の配置や配線長などが詰められて、フロアプランが修正される。  
一方、セットアップ時間違反が無い場合(ステップＳ０４のＮｏ)は、第２フリップフロップ１４のセットアップマージンを算出する(ステップＳ０５)。
【００３４】
ここで、セットアップマージンはクロック信号ＣＬＫの周期から、論理素子１２、１３による素子遅延時間と配線１７、１８、１９による配線遅延時間と第２フリップフロップ１４のセットアップタイムを差し引くことにより算出している。
【００３５】
次に、算出されたセットアップマージンの有無がチェックされる(ステップＳ０６)。即ち、セットアップマージンが予め設定された値（理想的には０）以上のときにセットアップマージンが有りと判断され、予め設定された値以下のときにセットアップマージンが無いと判断される。
【００３６】
ここで、ステップＳ０４でセットアップタイム違反がチェックされているので、セットアップマージンが０以下になる場合は無い。
【００３７】
セットアップマージンがある場合(ステップＳ０６のＹｅｓ)は、第１フリップフロップ１１を所定の位置からセットアップマージンが予め設定された値になる位置に移動する(ステップＳ０７)。
【００３８】
即ち、図２に示すように、第２フリップフロップ１４が配置される位置を中心にしてステップＳ０３で算出した信号伝播遅延時間を半径ｒ１とする円ｃ１を描くと、第１フリップフロップ１１は円ｃ１の円周上に位置している。
【００３９】
次に、半径ｒ１にステップＳ０５で算出したセットアップマージンに相当する距離Δｒ１を加算した半径ｒ２の円ｃ２を描くと、第１フリップフロップ１１を移動させるべき位置は円ｃ２の円周上に存在している。
【００４０】
従って、図６に示すように、第１フリップフロップ１１を円ｃ２の円周に相当する適当な位置、例えば離間して対向した電源ラインＶＤＤ２と接地ラインＧＮＤ２の間の素子配置領域２７に移動し、配線２８を介して論理素子１２に接続する。
【００４１】
これにより、遅延素子を配線経路の途中に挿入することなく、移動された第１フリップフロップ２９を有する論理モジュール３０が得られる。
【００４２】
次に、ステップＳ０３に戻り、第１フリップフロップ１１を移動したことにより、第１フリップフロップ１１と論理素子１２を接続する配線が配線１７から配線２８へと長くなり、配線遅延時間が増加して信号伝播遅延時間が長くなるので、セットアップタイム違反およびセットアップマージンが再度チェックされる。
【００４３】
一方、セットアップマージンがない場合(ステップＳ０６のＮｏ)は、ホールドタイム違反の有無がチェックされる(ステップＳ０８)。
【００４４】
ホールドタイム違反がない場合(ステップＳ０８のＮｏ)に、第１フリップフロップ１１の移動が適正であることを示しているので、論理モジュール３０の第１フリップフロップ１１の配置を決定しレイアウトを終了する。
【００４５】
一方、ホールド時間違反がある場合(ステップＳ０８のＹｅｓ)に、セットアップマージンがないように第１フリップフロップ１１を移動してもホールドタイム違反を解消できる条件がないことを示している。
【００４６】
その場合には、配線経路の途中に遅延素子を挿入し(ステップＳ０９)して、新たな配線を施す必要がある(ステップＳ１０)。
【００４７】
次に、ステップＳ０８に戻ってホールドタイム違反の有無を再度チェックし、ホールドタイム違反が解消されたことを確認してレイアウトが終了する。
【００４８】
これにより、図７に示すように、予め設定されたセットアップマージンｃが得られ且つホールドタイムｄ違反が解消される。
【００４９】
従って、遅延素子を配線経路の途中に挿入することなく、適正なセットアップマージンを有し且つホールドタイム違反のない半導体集積回路装置の論理モジュールのレイアウトを行なうことが可能である。
【００５０】
以上説明したように、本実施例によれば、第１フリップフロップ１１を最初のフロアプランで定めた所定の位置からセットアップマージンが予め定めた値になる位置に移動するようにしたので、配線経路の途中に遅延素子を挿入してホールドタイム違反を解消する作業が最小限に抑制され、半導体集積回路装置のレイアウト設計時間を短縮することができる。
【００５１】
その結果、適正なセットアップマージンを有し且つホールドタイム違反のない論理モジュールを有する半導体集積回路装置が得られる。
【００５２】
ここでは、論理モジュールが入力側に１個のフリップフロップを有する場合について説明したが、入力側に複数のフリップフロップを有していても構わない。  
本実施例のレイアウト方法は入力側に複数のフリップフロップがある場合にも、独立してそれぞれのフリップフロップに適用することができるからである。
【実施例２】
【００５３】
本発明の実施例２に係る半導体集積回路装置のレイアウト方法を、図８乃至図１１を用いて説明する。  
図８は半導体集積回路装置の要部の論理モジュールを示す回路図、図９はその修正前のレイアウトを示す図、図１０はそのレイアウト方法の原理を模式的に示す図、図１１はその修正後のレイアウトを示す図である。
【００５４】
本実施例において、上記実施例１と同一の構成部分には同一符号を付してその説明は省略し、異なる部分についてのみ説明する。
【００５５】
本実施例が実施例１と異なる点は、集積回路装置の要部の論理モジュールが出力側に２個のフリップフロップを有することにある。
【００５６】
即ち、図８に示すように、本実施例の半導体集積回路装置の要部の論理モジュール４０の等価回路は、論理素子１２の出力信号に所定の論理演算を施す論理素子４１、例えばインバータと、論理演算結果をラッチして後段の論理モジュールに出力する第３フリップフロップ４２とを有している。
【００５７】
論理素子４１は配線１８の途中から分岐した配線４３を介して論理素子１２に接続され、且つ配線４４により第３フリップフロップ４２の入力端４５に接続されている。  
第３フリップフロップ４２の出力端４６は後段の論理モジュール（図示せず）に接続されている。  
また、第３フリップフロップ４２のクロック入力端４７にクロック信号ＣＬＫが供給されている。
【００５８】
データ信号ＤＡＴＡが第１フリップフロップ１１の入力端２１から第２フリップフロップ１４の入力端２３に達するまでの時間が第１信号伝播遅延時間であり、第３フリップフロップ４２の入力端４５に達するまでの時間が第２信号伝播遅延時間である。
【００５９】
図９に示すように、論理素子４１と第３フリップフロップ４２は、離間して対向した電源ラインＶＤＤ２と接地ラインＧＮＤ２の間の素子配置領域２７の所定の位置に配置されている。  
論理素子４１は配線１８の途中から分岐した配線４３で論理素子１２に接続され、且つ配線４４を介して第３フリップフロップ４２に接続されている。
【００６０】
ここでは、修正前のレイアウトであるため、論理モジュール４０の外側の素子配置領域には別の論理モジュールのフリップフロップおよび論理素子等はまだ配置されていない。
【００６１】
図１に示すフローチャートに従い、第１フリップフロップ１１の入力端２１から第２フリップフロップ１４の入力端２３までの第１信号伝播遅延時間、および第３フリップフロップ４２の入力端４５までの第２信号伝播遅延時間がシミュレーションにより算出され(ステップＳ０３)、セットアップタイム違反の有無がチェックされる(ステップＳ０４)。
【００６２】
セットアップ時間違反が無い場合(ステップＳ０４のＮｏ)は、第２フリップフロップ１４の第１セットアップマージン、および第３フリップフロップ４２の第２セットアップマージンを算出する(ステップＳ０５)。
【００６３】
次に、算出された第１および第２セットアップマージンの有無がチェックされる(ステップＳ０６)。
【００６４】
第１および第２セットアップマージンがともにある場合(ステップＳ０６のＹｅｓ)は、第１フリップフロップ１１を所定の位置から第１および第２セットアップマージンが予め設定された値になる位置に移動させる(ステップＳ０７)。
【００６５】
即ち、図１０に示すように、第１フリップフロップ１１は第２フリップフロップ１４が配置される位置を中心にして第１信号伝播遅延時間を半径ｒ１とする円ｃ１と、第３フリップフロップ４２が配置される位置を中心にして第２信号伝播遅延時間を半径ｒ３とする円ｃ３との交点Ｐ１または交点Ｐ２に位置していることになるので、ここでは交点Ｐ１に位置しているとする。
【００６６】
次に、半径ｒ３に第２セットアップマージンに相当する距離Δｒ２を加算した半径ｒ４の円ｃ４を描くと、第１フリップフロップ１１を移動させるべき位置は円ｃ２と円ｃ４の交点Ｐ３または交点Ｐ４のいずれかになるので、ここでは交点Ｐ３に移動させる。
【００６７】
従って、図１１に示すように、第１フリップフロップ１１を交点Ｐ３に相当する適当な位置、例えば離間して対向した電源ラインＶＤＤ２と接地ラインＧＮＤ２の間の素子配置領域２７に移動し、配線５２を介して論理素子１２に接続する。
【００６８】
これにより、遅延素子を配線経路の途中に挿入することなく、移動された第１フリップフロップ５１を有する論理モジュール５３が得られる。
【００６９】
従って、遅延素子を配線経路の途中に挿入することなく、適正なセットアップマージンを有し且つホールドタイム違反のない半導体集積回路装置をレイアウトすることが可能である。
【００７０】
なお、論理モジュール４０の修正前のレイアウトおよび修正後のレイアウトの動作を示すタイミングチャートは実施例１と同様であり、その説明は省略する。
【００７１】
以上説明したように、本実施例によれば、出力側に２個のフリップフロップを備え、適正なセットアップマージンを有し且つホールドタイム違反のない論理モジュールを具備した半導体集積回路装置が得られる。
【実施例３】
【００７２】
本発明の実施例３に係る半導体集積回路装置のレイアウト方法を、図１２および図１３を用いて説明する。  
図１２は半導体集積回路装置の要部の論理モジュールを示す回路図、図１３はそのレイアウト方法の原理を模式的に示す図である。
【００７３】
本実施例において、上記実施例１と同一の構成部分には同一符号を付してその説明は省略し、異なる部分についてのみ説明する。
【００７４】
本実施例が実施例１と異なる点は、集積回路装置の要部の論理モジュールが出力側にｍ−１（ｍ≧４）個のフリップフロップを有することにある。
【００７５】
即ち、図１２に示すように、本実施例の半導体集積回路装置の要部の論理モジュール６０は、論理素子１２の出力信号に所定の論理演算を施す（ｍ−１）個の論理素子、例えばインバータと、論理演算結果をラッチして後段の論理モジュールに出力する（ｍ−１）個のフリップフロップとを有し、論理素子１３が第２フリップフロップ１４に接続され、論理素子４１が第３フリップフロップ４２に接続され、論理素子６１が第ｍフリップフロップ６２に接続されている。
【００７６】
論理素子６１は配線１８の途中から分岐した配線６３を介して論理素子１２に接続され、且つ配線６４により第ｍフリップフロップ６２の入力端６５に接続されている。  
第ｍフリップフロップ６２は、出力端６６が後段の論理モジュール（図示せず）に接続され、クロック入力端６７にクロック信号ＣＬＫが供給されている。
【００７７】
データ信号ＤＡＴＡが第１フリップフロップ１１の入力端２１から第ｍフリップフロップ６２の入力端６５に達するまでの時間が第（ｍ−１）信号伝播遅延時間である。
【００７８】
図１に示すフローチャートに従い、第１信号伝播遅延時間から第（ｍ−１）信号伝播遅延時間がシミュレーションにより算出され(ステップＳ０３)、セットアップタイム違反の有無がチェックされる(ステップＳ０４)。
【００７９】
セットアップ時間違反が無い場合(ステップＳ０４のＮｏ)は、第１セットアップマージンから第（ｍ−１）セットアップマージンを算出する(ステップＳ０５)。
【００８０】
次に、算出された第１乃至第（ｍ−１）セットアップマージンの有無がチェックされる(ステップＳ０６)。
【００８１】
次に、第１乃至第（ｍ−１）セットアップマージンがともにある場合(ステップＳ０６のＹｅｓ)は、第２乃至第ｍフリップフロップからセットアップマージンが小さい順に２個のフリップフロップを選択し、第１フリップフロップ１１を所定の位置から選択された２個のフリップフロップのセットアップマージンが予め設定された値になる位置に移動させる(ステップＳ０７)。
【００８２】
即ち、図１３に示すように、例えばｍ＝４の場合は、第１フリップフロップ１１は第２フリップフロップ１４が配置される位置を中心にして第１信号伝播遅延時間を半径ｒ１とする円ｃ１と、第３フリップフロップ４２が配置される位置を中心にして第２信号伝播遅延時間を半径ｒ３とする円ｃ３と、第４フリップフロップ６２が配置される位置を中心にして第３信号伝播遅延時間を半径ｒ５とする円ｃ５との交点Ｐ５に位置していることになる。
【００８３】
次に、第１乃至第３セットアップマージンの大小関係は、Δｒ１＞Δｒ３＞Δｒ２の場合に、セットアップマージンが小さい順に第３フリップフロップ４２および第４フリップフロップ６２が選択される。
【００８４】
次に、半径ｒ５に第３セットアップマージンに相当する距離Δｒ３を加算した半径ｒ６の円ｃ６を描くと、第１フリップフロップ１１を移動させるべき位置は円ｃ４と円ｃ６の交点Ｐ６または交点Ｐ７のいずれかになる。
【００８５】
交点Ｐ７は円ｃ２の外側にあるので、第１フリップフロップ１１を交点Ｐ７に移動した場合は第２フリップフロップ１４にセットアップタイム違反が生じる。  
従って、第１フリップフロップ１１を移動させるべき位置として交点Ｐ６が選択され、交点Ｐ６に移動された第１フリップフロップ７１が配置される。
【００８６】
これにより、第２および第３セットアップマージンが予め定めた値を有し、且つホールドタイム違反のない論理モジュール６０を得ることが可能である。
【００８７】
以上説明したように、本実施例によれば、出力側に（ｍ−１）個のフリップフロップを備え、適正なセットアップマージンを有し且つホールドタイム違反のない論理モジュールを具備した半導体集積回路装置が得られる。
【００８８】
ここで、第２、第３、…、第ｍフリップフロップは、順番に並んでいる必要はなく、任意の場所に配置されていても構わない。
【実施例４】
【００８９】
本発明の実施４に係る半導体集積回路装置のレイアウトシステムについて、図１４乃至図１７を用いて説明する。図１４はレイアウトシステムの構成を示すブロック図、図１５はその動作を示すフローチャート、図１６はバックトレースを模式的に示す図、図１７はバックトレース結果を示す図である。
【００９０】
本実施例の半導体集積回路装置のレイアウトシステムは、第１乃至第３の実施例で示した半導体集積回路装置のレイアウトを実現するためものである。
【００９１】
図１４に示すように、本実施例の半導体集積回路装置のレイアウトシステム８０は、半導体集積回路装置の論理設計データを格納した論理設計データ記憶部８１と、基点となる出力側のフリップフロップ（以下、基点フリップフロップという）および終点となる入力側のフリップフロップ（以下、終点フリップフロップという）間のタイミングを解析してセットアップマージンを求め、終点フリップフロップの移動量を算出するプログラムなどを格納したプログラム格納部８２と、基点および終点フリップフロップの識別名、配置情報、セットアップマージンなどの情報を格納する配置配線情報記憶部８３と、終点フリップフロップの移動情報などを格納する移動情報記憶部８４と、一連のレイアウト処理を実行するための手段を備えた処理制御部８５とで構成されている。
【００９２】
更に、入出力制御部８６を介して処理結果を出力する出力装置８７と、処理制御部８５への指示等を入力する入力装置８８とで構成されている。
【００９３】
論理設計データ記憶部８１、プログラム格納部８２、配置配線情報記憶部８３、移動情報記憶部８４は、一部はコンピュータ内部の主記憶装置で構成しても良いし、このコンピュータに接続された半導体メモリー、磁気ディスク、磁気テープ、光ディスクなどの記憶装置で構成しても構わない。
【００９４】
また、処理制御部８５は、コンピュータシステムの中央演算処理装置の一部を構成しており、集中処理方式または分散処理方式のコンピュータシステムで実行される。
【００９５】
論理設計データ記憶部８１から論理素子を半導体チップ上のどこに配置するかを示す論理素子配置情報と、この論理素子がチップ上のどの領域を通って接続されるかを示す配線経路情報と、論理素子間の同期を取るためのタイミング制約情報からなる修正前のレイアウトデータが処理制御部８５に入力される。
【００９６】
処理制御部８５は、論理モジュールの所定の位置に配置された出力側フリップフロップおよび入力側フリップフロップをそれぞれ基点および終点として、基点フリップフロップの入力端に論理素子を介して接続された終点フリップフロップを探索するバックトレース部９１を有している。
【００９７】
更に、探索された終点フリップフロップと基点フリップフロップ間の信号伝播遅延時間を求め、基点フリップフロップのセットアップマージンを算出するタイミング解析部９２と、セットアップマージンが予め設定された値以上か否かを判定し、セットアップマージンが予め設定された値以上の場合に、セットアップマージンが予め設定された値になる終点フリップフロップの位置を探索するデータ解析部９３と、終点フリップフロップを予め定められた位置からセットアップマージンが予め設定された値になる位置に移動させるデータ処理部９４と有している。
【００９８】
これらのバックトレース部９１、タイミング解析部９２、データ解析部９３、データ処理部９４は、ソフトウェアとしてプログラム格納部８２に予め格納されており、その手順に従ってコンピュータシステムの中央演算処理装置にて実行されるが、専用のハードウェーアで実行されるものでも構わない。
【００９９】
図１５に示すように、処理制御部８５は修正前のレイアウトデータを受け取ると、始めに論理モジュール内の基点フリップフロップに対して、バックトレースの有無をチェックし（ステップＳ２１）、バックトレースがされていない場合に（ステップＳ２１のＹｅｓ）、基点フリップフロップの入力端から配線をバックトレースして終点フリップフロップを探索する（ステップＳ２２）。
【０１００】
終点フリップフロップが見つかれば（ステップＳ２３のＹｅｓ）、終点フリップフロップと基点フリップフロップ間の信号伝播遅延時間を算出し（ステップＳ２４）、セットアップマージンを算出する（ステップＳ２５）。
【０１０１】
次に、セットアップマージンが予め定めた値以上の場合に（ステップＳ２６のＹｅｓ）、基点および終点のフリップフロッフの識別名、それぞれの位置情報、セットアップマージンデータを配置配線情報記憶部８３に記憶する。
【０１０２】
一方、セットアップマージンが予め定めた値以下の場合に（ステップＳ２６のＮｏ）、基点および終点のフリップフロッフの識別名、それぞれの位置情報、セットアップマージンデータは配置配線情報記憶部８３の別の領域に記憶される。
【０１０３】
次に、論理モジュール内の全ての基点フリップフロップに対してバックトレースが終了すると（ステップＳ２６のＹｅｓ）、終点フリップフロップの識別名で配置配線情報記憶部８３に記憶されている基点および終点のフリップフロッフの識別名、それぞれの位置情報、セットアップマージンデータをソートする（ステップＳ２７）。
【０１０４】
ソート結果は、例えば図１６に示すようなフォーマットで終点フリップフロップ識別名および配置情報、基点フリップフロップ識別名および配置情報、セットアップマージンの順に出力される。
【０１０５】
ソート結果より、図１７（ａ）に示すように、ＡＡＡ／ＢＢＢ／Ａ終点フリップフロップが２個のＣＣＣ／ＤＤＤ／ＸおよびＣＣＣ／ＤＤＤ／Ｙ基点フリップフロップに共通接続されていることが分かる。
【０１０６】
更に、図１７（ｂ）に示すように、２個のＡＡＡ／ＢＢＢ／ＤおよびＡＡＡ／ＢＢＢ／Ｅ終点フリップフロップがＥＥＥ／ＦＦＦ／Ｂ基点フリップフロップに共通接続されていることが分かる。
【０１０７】
また、図１７（ｃ）に示すように、ＢＢＢ／ＣＣＣ／Ｆ終点フリップフロップがＧＧＧ／ＨＨＨ／Ｃ基点フリップフロップに対して接続されていることが分かる。
【０１０８】
次に、各終点フリップフロップに対して、セットアップマージンが予め設定された値になる移動量が算出され（ステップＳ２８）、各終点フリップフロップが再配置される（ステップＳ２８）。
【０１０９】
以上説明したように、本実施例によれば、適正なセットアップマージンを有し且つホールドタイム違反のない論理モジュールを有する半導体集積回路装置のレイアウトを容易に短時間で実行することができる。
【図面の簡単な説明】
【０１１０】
【図１】本発明の実施例１に係る半導体集積回路装置のレイアウト方法を示すフローチャート。
【図２】本発明の実施例１に係るレイアウト方法の原理を模式的に示す図。
【図３】本発明の実施例１に係る半導体集積回路装置の要部の論理モジュールを示す回路図。
【図４】本発明の実施例１に係る論理モジュールの修正前のレイアウトを示す図。
【図５】本発明の実施例１に係る論理モジュールの修正前のレイアウトの動作を示すタイミングチャート。
【図６】本発明の実施例１に係る論理モジュールの修正後のレイアウトを示す図。
【図７】本発明の実施例１に係る論理モジュールの修正後のレイアウトの動作を示すタイミングチャート。
【図８】本発明の実施例２に係る半導体集積回路装置の要部の論理モジュールを示す回路図。
【図９】本発明の実施例２に係る論理モジュールの修正前のレイアウトを示す図。
【図１０】本発明の実施例２に係るレイアウト方法の原理を模式的に示す図。
【図１１】本発明の実施例２に係る論理モジュールの修正後のレイアウトを示す図。
【図１２】本発明の実施例３に係る半導体集積回路装置の要部の論理モジュールを示す回路図。
【図１３】本発明の実施例３に係るレイアウト方法の原理を模式的に示す図。
【図１４】本発明の実施例４に係る半導体集積回路装置のレイアウトシステムを示すブロック図。
【図１５】本発明の実施例４に係るバックトレース方法を示すフローチャート。
【図１６】本発明の実施例４に係るバックトレースのソート結果を示す図。
【図１７】本発明の実施例４に係るバックトレースされたフリップフロップを示す図。
【符号の説明】
【０１１１】
１０、３０、４０、５３、６０  論理モジュール
１１  第１フリップフロップ
１２、１３、４１、６１  論理素子
１４  第２フリップフロップ
１５、１６、２７  素子配置領域
１７、１８、１９、２８、４３、４４、５２、６３、６４  配線
２１、２３、４５、６５  データ入力端
２２、２４、４６、６６  データ出力端
２５、２６、４７、６７  クロック入力端
４２  第３フリップフロップ
２９、５１、７１  移動された第１フリップフロップ
６２  第ｍフリップフロップ
８０  レイアウトシステム
８１  論理設計データ記憶部
８２  プログラム格納部
８３  配置配線情報記憶部
８４  移動情報記憶部
８５  処理制御部
８６  入出力制御部
８７  出力装置
８８  入力装置
【図１】
2006310469.tif 000003
【図２】
2006310469.tif 000004
【図３】
2006310469.tif 000005
【図４】
2006310469.tif 000006
【図５】
2006310469.tif 000007
【図６】
2006310469.tif 000008
【図７】
2006310469.tif 000009
【図８】
2006310469.tif 000010
【図９】
2006310469.tif 000011
【図１０】
2006310469.tif 000012
【図１１】
2006310469.tif 000013
【図１２】
2006310469.tif 000014
【図１３】
2006310469.tif 000015
【図１４】
2006310469.tif 000016
【図１５】
2006310469.tif 000017
【図１６】
2006310469.tif 000018
【図１７】
2006310469.tif 000019