(57)【特許請求の範囲】
【請求項１】
ループ回路を含む対象回路に対して、当該対象回路におけるリセット端子付きフリップフロップの接続関係に基づき、単一のループ回路にのみ含まれるリセット端子付きフリップフロップを検出してリセット端子無しフリップフロップに置き換える置き換え処理手段を備え、
前記置き換え処理手段は、対象回路内のループ回路に含まれるフリップフロップを検出するループ検出手段と、前記ループ検出手段により検出されたループ回路及び当該ループ回路に含まれるフリップフロップの情報を記憶する記憶手段と、前記記憶手段の記憶内容を用いて単一のループ回路にのみ含まれるフリップフロップのリスト情報を作成し、ループ内に少なくとも一つリセット付きフリップフロップが残るように、置き換え可能なフリップフロップを検出するループ判定手段と、前記リスト情報により特定される前記フリップフロップをリセット無しＦＦに置き換える置き換え手段とを備えたことを特徴とする半導体集積回路設計支援システム。
【請求項２】
置き換え手段は、リセット期間中の有効クロックサイクル数に応じて置き換えを許容するループ回路内のフリップフロップ数及びリセット端子無しフリッププロップの連続した接続段数を規定し、これに従って置き換えを実行することを特徴とする請求項１記載の半導体集積回路設計支援システム。
【請求項３】
ループ回路内のフリップフロップ数を基準に記憶手段の記憶内容を並べ替える並替手段を備え、
置き換え手段は、前記並替手段により並べ替えられた順にループ回路を選択して置き換え処理を実行することを特徴とする請求項２記載の半導体集積回路設計支援システム。
【請求項４】
ループ回路を含む対象回路に対して、当該対象回路における前記リセット端子付きフリップフロップの接続関係に基づき、単一のループ回路にのみ含まれるリセット端子付きフリップフロップを検出してリセット端子無しフリップフロップに置き換える置き換え処理手段と、対象回路内のループ回路に含まれるフリップフロップを検出するループ検出手段と、前記ループ検出手段により検出されたループ回路及び当該ループ回路に含まれるフリップフロップの情報を記憶する記憶手段と、前記記憶手段の記憶内容を用いて単一のループ回路にのみ含まれるフリップフロップのリスト情報を作成し、ループ内に少なくとも一つリセット付きフリップフロップが残るように、置き換え可能なフリップフロップを検出するループ判定手段と、前記リスト情報により特定される前記フリップフロップをリセット無しＦＦに置き換える置き換え手段とを備えた置き換え処理手段としてコンピュータを機能させるプログラム。
【請求項５】
リセット期間中の有効クロックサイクル数に応じて規定した置き換えを許容するループ回路内のフリップフロップ数及びリセット端子無しフリッププロップの連続した接続段数に従って置き換えを実行する置き換え手段としてコンピュータを機能させる請求項４記載のプログラム。
【請求項６】
ループ回路内のフリップフロップ数を基準に記憶手段の記憶内容を並べ替える並替手段、前記並替手段により並べ替えられた順にループ回路を選択して置き換え処理を実行する置き換え手段としてコンピュータを機能させる請求項５記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体集積回路を不具合なく設計するための半導体集積回路設計支援システム及びこのシステムとしてコンピュータを機能させるプログラムに関するものである。
【背景技術】
【０００２】
従来、半導体集積回路設計において、ＬＳＩのゲート数削減やレイアウト性向上のためリセット端子付きフリップフロップ（以降、リセット付きＦＦと呼ぶ）をリセット端子無しフリップフロップ（以降、リセット無しＦＦと呼ぶ）に置き換えることがある。しかしながら、リセット期間を考慮せずに置き換えを行うと、例えばリセット期間が短すぎた場合、ゲートレベルシミュレーション実行時の初期リセット解除後にリセット無しＦＦで不定値がなくならず伝播することがある。この場合、ＲＴＬ（Register Transfer Level）シミュレーションとの結果が不一致となる上、その原因究明が非常に困難となる。
【０００３】
このため、従来では、対象回路に精通した設計者が、全てのフリップフロップについて不定値が出ないように考えながらリセット無しＦＦへの置き換えを行なっていた。例えば、特許文献１では、フリップフロップの出力値が不定になることを防ぐ方法が記載されている。また、本願出願人は、リセット無しＦＦに置き換えても何ら問題の生じないリセット付きＦＦを自動で検出する方法を提案している。
【０００４】
【特許文献１】特開平１１−１４５７８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来の半導体集積回路設計において、半導体集積回路中のループに含まれるリセット付きＦＦはリセット無しＦＦへの置き換え対象になっていなかった。また、置き換えには、予めループに含まれるリセット付きＦＦのうち、リセット無しＦＦに置き換え可能なＦＦのリストを作成しておくことが必要であるが、この作業は非常に困難であった。
【０００６】
この発明は、上記のような課題を解決するためになされたもので、半導体集積回路中のループ以外の経路にあるリセット付きＦＦを削減した後、ループ内に含まれるリセット付きＦＦのうちリセット無しＦＦに置き換えても何ら問題の生じないフリップフロップを自動で検出することができる半導体集積回路設計支援システム及びこのシステムとしてコンピュータを機能させるプログラムを得ることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係る半導体集積回路設計支援システムは、ループ回路を含む対象回路に対して、当該対象回路におけるリセット端子付きフリップフロップの接続関係に基づき、単一のループ回路にのみ含まれるリセット端子付きフリップフロップを検出してリセット端子無しフリップフロップに置き換える置き換え処理手段を備え、前記置き換え処理手段は、対象回路内のループ回路に含まれるフリップフロップを検出するループ検出手段と、前記ループ検出手段により検出されたループ回路及び当該ループ回路に含まれるフリップフロップの情報を記憶する記憶手段と、前記記憶手段の記憶内容を用いて単一のループ回路にのみ含まれるフリップフロップのリスト情報を作成し、ループ内に少なくとも一つリセット付きフリップフロップが残るように、置き換え可能なフリップフロップを検出するループ判定手段と、前記リスト情報により特定される前記フリップフロップをリセット無しＦＦに置き換える置き換え手段とを備えるものである。
【発明の効果】
【０００８】
この発明によれば、対象回路に精通した設計者でなくとも、半導体集積回路中のループに含まれるリセット端子付きフリップフロップのうち、複数のループ回路に含まれずにリセット端子無しフリップフロップに置き換えても何ら問題の生じないリセット端子付きフリップフロップを容易に検出して置き換えることができるという効果がある。
【発明を実施するための最良の形態】
【０００９】
実施の形態１．
図１は、この発明の実施の形態１による半導体集積回路設計支援システムの構成を示す図である。図において、対象回路１００は半導体集積回路を示しており、入力ポート１０１，１０２、出力ポート１０３，１０４、フリップフロップ（図中、ＦＦと記載する）１０５〜１１４、組み合わせ回路１１５〜１２６を備えている。なお、以降、フリップフロップ１０５〜１１４はＦＦ１〜ＦＦ８，ＦＦ１０，ＦＦ１１、組み合わせ回路１１５〜１２６はＣ１〜Ｃ１２と呼ぶ。
【００１０】
入力ポート１０１，１０２は、対象回路１００の外部からの信号入力ポートであり、出力ポート１０３，１０４は、この対象回路１００の外部への信号出力ポートである。ＦＦ１〜ＦＦ８，ＦＦ１０，ＦＦ１１は、リセット付きフリップフロップである。Ｃ１は入力ポート１０１に接続され、以下、ＦＦ１、Ｃ２、ＦＦ２、Ｃ３、ＦＦ３、Ｃ４、ＦＦ４、Ｃ５、ＦＦ５、Ｃ６、ＦＦ６、Ｃ７、ＦＦ７、Ｃ８、ＦＦ８、Ｃ９と順番に接続され、Ｃ９の出力が出力ポート１０３に接続されている。また、入力ポート１０２は、Ｃ２に接続されている。ＦＦ３とＣ４から分岐した経路には、Ｃ１０、ＦＦ１０、Ｃ１１、ＦＦ１１、Ｃ１２が順番に接続され、Ｃ１２の出力が出力ポート１０４に接続している。
【００１１】
Ｃ１はＣ８とＦＦ８の間に接続して、ＦＦ１〜ＦＦ７を包含するフリップフロップ段数が７段のループＳＬ１を形成する。Ｃ３はＦＦ５とＣ６の間に接続してＦＦ３〜ＦＦ５を包含するフリップフロップ段数が３段のループＳＬ２を形成する。Ｃ６はＦＦ６とＣ７の間に接続してＦＦ６のみを包含するフリップフロップ段数が１段のループＳＬ３を形成する。また、Ｃ３はＦＦ１０とＣ１１の間にも接続してＦＦ３，ＦＦ１０を包含するフリップフロップ段数が２段のループＳＬ４を形成する。Ｃ１１はＦＦ１１とＣ１２の間に接続してＦＦ１１のみを包含するフリップフロップ段数が１段のループＳＬ５を形成する。
【００１２】
ここで、リセット端子無しフリップフロップとは、外部からのリセット信号を入力する入力端子が設けられていないフリップフロップである。また、リセット端子付きフリップフロップとは、外部からのリセット信号を入力する入力端子が設けられているフリップフロップであり、外部からのリセット信号によりリセット状態に設定される。以降の説明においても、リセット端子無しフリップフロップをリセット無しＦＦと略称し、リセット端子付きフリップフロップをリセット付きＦＦと略称する。
【００１３】
実施の形態１による半導体集積回路設計支援システムを構成するループ内置き換えＦＦ検出手段（置き換え処理手段）１は、対象回路１００に対してリセット無しＦＦに置き換えても問題の生じないループ内のリセット付きＦＦを検出する機能を有するもので、ループ検出手段２、ループ情報記憶手段（記憶手段）３、ループ判定手段４及びループ内置き換えＦＦ判定手段（置き換え手段）５を備えている。
【００１４】
ループ検出手段２は、半導体集積回路において接続先が自分に戻っている状態にあるフリップフロップを含むループを検出する。ループ情報記憶手段３は、ループ検出手段２により検出されたループ及びループに含まれるフリップフロップの情報を記憶する。
なお、本発明におけるループとは、あるフリップフロップを起点として接続先が自分に戻っている状態にある経路が存在する場合にその経路のことを意味している。ループを検出する具体的手段の一例は、あるフリップフロップを起点に全ての経路を探索し、対象回路１００の出力ポート１０３，１０４にのみ到達した場合にループが無いと判定し、１本でも自分に戻っている経路が存在するとループと判定する。図１の場合、ループが無いのはＦＦ８を起点とした場合のみである。
【００１５】
ループ判定手段４では、ループ情報記憶手段３にループ毎に記憶されたループに含まれるフリップフロップが他のループに重なるか否かを判定して他のループに重ならないフリップフロップを検出すると共に、ループ内に少なくとも一つリセット付きＦＦが残るようにリセット無しＦＦに置き換え可能なフリップフロップのリストを作成する。
【００１６】
ループ内置き換えＦＦ判定手段５は、ループ判定手段４により作成されたリスト内のフリップフロップをリセット無しＦＦへの置き換え対象とする。即ち、ループ内置き換えＦＦ判定手段５は、ループ検出手段２により検出されたループ及びループに含まれるフリップフロップの情報をループ情報記憶手段３に記憶し、ループ判定手段４により他のループに重ならないと判定して作成したリスト内に存在するフリップフロップをリセット無しＦＦへの置き換え対象と判定する。
【００１７】
ループ検出手段２、ループ判定手段４及びループ内置き換えＦＦ判定手段５は、本発明に従う半導体集積回路設計支援プログラムをコンピュータに読み込ませてその動作を制御することにより、ＣＰＵやメモリ等のハードウェアと協働した具体的手段として、当該コンピュータ上に実現することができる。また、ループ情報記憶手段３は、半導体集積回路設計支援システムを構成するコンピュータのメモリや外部記憶装置等に構築される。対象回路１００の構成要素間の接続関係に関する情報は、例えば上記コンピュータに装備された記憶装置に格納され、上記手段に適宜読み出されて利用される。
【００１８】
なお、以下の説明において、本発明の半導体集積回路設計支援システムを具現化するコンピュータ自体の構成及びその基本的な機能については、当業者が当該技術分野の技術常識に基づいて容易に認識できるものであり、本発明の本質に直接関わるものでないので詳細な記載を省略する。
【００１９】
次に動作について説明する。
図２は、実施の形態１による半導体集積回路設計支援システムの動作を示すフローチャートであり、この図に沿って説明する。
先ず、ループ検出手段２は、ネットリストやハードウェア記述言語などで記述された対象回路１００の構成要素及びその接続関係に関する情報を入力して、対象回路１００内の任意のフリップフロップ、つまり図１におけるＦＦ１〜ＦＦ８、ＦＦ１０、ＦＦ１１のうちから、例えばＦＦ１をループ検出処理の始点として選択する（ステップＳＴ１）。
【００２０】
次に、ループ検出手段２は、ネットリストやハードウェア記述言語などで記述された対象回路１００の構成要素及びその接続関係に関する情報を用い、始点として選択したフリップフロップの接続先が自分に戻っている状態にあるか否かを判定する（ステップＳＴ２）。ここで、接続先が自分に戻っている状態とは、フリップフロップの出力側からその入力に戻る経路があることをいう。
【００２１】
ループ検出手段２は、接続先が自分に戻っている状態にあるフリップフロップ（以降、ループＦＦと呼ぶ）が検出されると、ループ（ＳＬ１に相当）を特定する情報と共に当該ループに含まれる全てのＦＦの情報をループ情報記憶手段３に記憶する（ステップＳＴ３）。例えば、ＦＦ１の場合であれば、ＦＦ１の出力側からその入力に戻る経路上に存在するＦＦ１〜ＦＦ７をループに含まれるフリップフロップとして特定し、これらフリップフロップの情報がループ情報記憶手段３に記憶される。
【００２２】
ステップＳＴ２でループＦＦが検出されなかった場合又はステップＳＴ３の処理後、ループ検出手段２は、ＦＦ１の次に接続されているＦＦ２をループ検出処理の対象として選択する（ステップＳＴ４）。次に、ループ検出手段２は、ネットリストやハードウェア記述言語などで記述された対象回路１００の構成要素及びその接続関係に関する情報を用い、ステップＳＴ４で選択したフリップフロップの接続先が自分に戻っている状態にあるか否か、即ちループかどうかを判定する（ステップＳＴ５）。
【００２３】
ループ判定手段４は、ステップＳＴ５においてループ検出手段２によりＦＦ２がループＦＦとして検出されると、ループ情報記憶手段３の内容を検索してＦＦ２が関与するループが既に記憶されているループだけであるか否かを判定する（ステップＳＴ６）。つまり、ＦＦ２の出力側からその入力に戻る経路は、ＦＦ１の出力側からその入力に戻る経路と全く同じであるか、新しい経路を含むかが判別される。図示の例では、ＦＦ２のループは、ＦＦ１と同じループＳＬ１のみであるので、ループ情報記憶手段３に既に記憶されているループだけであると判定され、ステップＳＴ８の処理に移行する。
【００２４】
ステップＳＴ８において、ループ検出手段２は、ＦＦ２の次に接続されているＦＦ３をループ検出処理の対象として選択する。次に、ステップＳＴ９において再びステップＳＴ５からの処理に戻り、ループ検出手段２は、ネットリストやハードウェア記述言語などで記述された対象回路１００の構成要素及びその接続関係に関する情報を用い、選択したＦＦ３の接続先が自分に戻っている状態にあるか否か、即ちループかどうかを判定する。ここで、ＦＦ３は、ＳＬ１の他、ＦＦ５の出力からＦＦ３の入力に戻る経路、ＦＦ１０の出力からＦＦ３の入力に戻る経路を有するループＦＦとして検出される。
【００２５】
ループ判定手段４は、ループ検出手段２によりＦＦ３がループＦＦとして検出されると、ループ情報記憶手段３の内容を検索してＦＦ３が関与するループが既に記憶されているループだけであるか否かを判定する（ステップＳＴ６）。上述のように、ＦＦ３の出力側からその入力に戻る経路としては、ＳＬ１の他、ＦＦ５の出力からＦＦ３の入力に戻る経路（ＳＬ２に相当）、ＦＦ１０の出力からＦＦ３の入力に戻る経路（ＳＬ４に相当）があり、ＦＦ３のループは、ループ情報記憶手段３に既に記憶されているループだけではないと判定される。
【００２６】
ループ検出手段２は、ＦＦ３についてのループ判定手段４による判定結果を受けると、ＦＦ５の出力からＦＦ３の入力に戻る経路を特定する情報（ＳＬ２に相当）とこの経路上に存在する全てのＦＦ（ＦＦ３〜ＦＦ５）の情報をループ情報記憶手段３に記憶する（ステップＳＴ７）。同様に、ＦＦ１０の出力からＦＦ３の入力に戻る経路を特定する情報（ＳＬ４に相当）とこの経路上に存在する全てのＦＦ（ＦＦ３、ＦＦ１０）の情報をループ情報記憶手段３に記憶する。
【００２７】
この後、ステップＳＴ８の処理に移行して、ループ検出手段２が、ＦＦ３の次に接続されているＦＦ４、ＦＦ１０をループ検出処理の対象として選択する。次に、ステップＳＴ９において再びステップＳＴ５からの処理に戻り、ループ検出手段２は、ネットリストやハードウェア記述言語などで記述された対象回路１００の構成要素及びその接続関係に関する情報を用い、選択したＦＦ４、ＦＦ１０の接続先が自分に戻っている状態にあるか否か、即ちループかどうかを判定する。ここで、ＦＦ４は、ＳＬ１の他、ＦＦ５の出力からＦＦ４の入力に戻る経路を有するループＦＦとして検出され、ＦＦ１０は、自己の出力からＦＦ３を介して入力に戻る経路を有するループＦＦとして検出される。
【００２８】
ループ判定手段４は、ループ検出手段２によりＦＦ４、ＦＦ１０がループＦＦとして検出されると、ループ情報記憶手段３の内容を検索してＦＦ４、ＦＦ１０が関与するループが既に記憶されているループだけであるか否かを判定する（ステップＳＴ６）。上述のように、ＦＦ４の出力側からその入力に戻る経路としては、ＳＬ１の他、ＦＦ５の出力からＦＦ３の入力に戻る経路（ＳＬ２に相当）があり、ＦＦ４のループは、ループ情報記憶手段３に既に記憶されていると判定される。一方、ＦＦ１０の出力側からその入力に戻る経路としては、ＦＦ１０の出力からＦＦ３を介して入力に戻る経路（ＳＬ４に相当）があり、ＦＦ１０のループも、ループ情報記憶手段３に既に記憶されていると判定される。これにより、ステップＳＴ８の処理に移行する。
【００２９】
続いて、ループ検出手段２は、ＦＦ４の次に接続されているＦＦ５をループ検出処理の対象として選択する（ステップＳＴ８）。次に、ステップＳＴ９において再びステップＳＴ５からの処理に戻り、ループ検出手段２は、ネットリストやハードウェア記述言語などで記述された対象回路１００の構成要素及びその接続関係に関する情報を用い、選択したＦＦ５の接続先が自分に戻っている状態にあるか否か、即ちループかどうかを判定する。ここで、ＦＦ５は、ＳＬ１の他、ＦＦ５の出力からＦＦ３、ＦＦ４を介して入力に戻る経路を有するループＦＦとして検出される。
【００３０】
そこで、ループ判定手段４は、ループ検出手段２によりＦＦ５がループＦＦとして検出されると、ループ情報記憶手段３の内容を検索してＦＦ５が関与するループが既に記憶されているループだけであるか否かを判定する（ステップＳＴ６）。上述のように、ＦＦ５の出力側からその入力に戻る経路としては、ＳＬ１の他、ＦＦ５の出力からＦＦ３、ＦＦ４を介して入力に戻る経路（ＳＬ２に相当）があり、ＦＦ５のループは、ループ情報記憶手段３に既に記憶されていると判定される。これにより、ステップＳＴ８の処理に移行する。
【００３１】
次に、ループ検出手段２は、ＦＦ５の次に接続されているＦＦ６をループ検出処理の対象として選択する（ステップＳＴ８）。続いて、ステップＳＴ９において再びステップＳＴ５からの処理に戻り、ループ検出手段２は、ネットリストやハードウェア記述言語などで記述された対象回路１００の構成要素及びその接続関係に関する情報を用い、選択したＦＦ６の接続先が自分に戻っている状態にあるか否か、即ちループかどうかを判定する。ここで、ＦＦ６は、ＳＬ１の他、自己の出力から入力に戻る経路を有するループＦＦとして検出される。
【００３２】
ループ判定手段４は、ループ検出手段２によりＦＦ６がループＦＦとして検出されると、ループ情報記憶手段３の内容を検索してＦＦ６が関与するループが既に記憶されているループだけであるか否かを判定する（ステップＳＴ６）。上述のように、ＦＦ６の出力側からその入力に戻る経路としては、ＳＬ１の他、ＦＦ６の出力から入力に戻る経路（ＳＬ３に相当）があり、ＦＦ６のループは、ループ情報記憶手段３に既に記憶されているループだけではないと判定される。
【００３３】
ループ検出手段２は、ＦＦ６についてのループ判定手段４による判定結果を受けると、ＦＦ６の出力から入力に戻る経路を特定する情報（ＳＬ３に相当）とこの経路上に存在する全てのＦＦ（ＦＦ６）の情報をループ情報記憶手段３に記憶する（ステップＳＴ７）。
【００３４】
この後、ステップＳＴ８の処理に移行して、ループ検出手段２が、ＦＦ６の次に接続されているＦＦ７をループ検出処理の対象として選択する。次に、ステップＳＴ９において再びステップＳＴ５からの処理に戻り、ループ検出手段２は、ネットリストやハードウェア記述言語などで記述された対象回路１００の構成要素及びその接続関係に関する情報を用い、選択したＦＦ７の接続先が自分に戻っている状態にあるか否か、即ちループかどうかを判定する。ここで、ＦＦ７は、ＳＬ１のみを有するループＦＦとして検出される。
【００３５】
ループ判定手段４は、ループ検出手段２によりＦＦ７がループＦＦとして検出されると、ループ情報記憶手段３の内容を検索してＦＦ７が関与するループが既に記憶されているループだけであるか否かを判定する（ステップＳＴ６）。上述のように、ＦＦ７の出力側から入力に戻る経路としてはＳＬ１のみであり、ＦＦ７のループはループ情報記憶手段３に既に記憶されていると判定される。これにより、ステップＳＴ８の処理に移行する。
【００３６】
ループ検出手段２は、ＦＦ７の次に接続されているＦＦ８をループ検出処理の対象として選択する（ステップＳＴ８）。次に、ステップＳＴ９において再びステップＳＴ５からの処理に戻り、ループ検出手段２は、ネットリストやハードウェア記述言語などで記述された対象回路１００の構成要素及びその接続関係に関する情報を用い、選択したＦＦ８の接続先が自分に戻っている状態にあるか否か、即ちループかどうかを判定する。ここで、ＦＦ８は、自己の出力から入力に戻る経路を有さないので、非ループＦＦとして検出される。これにより、ステップＳＴ８の処理に移行する。
【００３７】
次に、ループ検出手段２は、ＦＦ１０の次に接続されているＦＦ１１をループ検出処理の対象として選択する（ステップＳＴ８）。続いて、ステップＳＴ９において再びステップＳＴ５からの処理に戻り、ループ検出手段２は、ネットリストやハードウェア記述言語などで記述された対象回路１００の構成要素及びその接続関係に関する情報を用い、選択したＦＦ１１の接続先が自分に戻っている状態にあるか否か、即ちループかどうかを判定する。ここで、ＦＦ１１は、自己の出力から入力に戻る経路を有するループＦＦとして検出される。
【００３８】
ループ判定手段４は、ループ検出手段２によりＦＦ１１がループＦＦとして検出されると、ループ情報記憶手段３の内容を検索してＦＦ１１が関与するループが既に記憶されているループだけであるか否かを判定する（ステップＳＴ６）。上述のように、ＦＦ１１の出力側からその入力に戻る経路としては、ＦＦ１１の出力から入力に戻る経路（ＳＬ５に相当）があり、ＦＦ１１のループはループ情報記憶手段３に既に記憶されているループだけではないと判定される。
【００３９】
そこで、ループ検出手段２は、ＦＦ１１についてのループ判定手段４による判定結果を受けると、ＦＦ１１の出力から入力に戻る経路を特定する情報（ＳＬ５に相当）とこの経路上に存在する全てのＦＦ（ＦＦ１１）の情報をループ情報記憶手段３に記憶する（ステップＳＴ７）。
【００４０】
以上の処理により、対象回路１００内の全てのループ（ＳＬ１〜ＳＬ５が相当）とループ毎にループに含まれる全てのフリップフロップがループ情報記憶手段３に記憶される。
図３は、ループ情報記憶手段の記憶内容の一例を示す図であり、図１中の対象回路１００についてのループ検出結果を示している。図において、縦の項目がフリップフロップ（ＦＦ）番号であり、横の項目がループ番号である。ループ検出の結果として、ＦＦ１〜ＦＦ７、ＦＦ１０、ＦＦ１１についていずれのループ（ＳＬ１〜ＳＬ５）に含まれるか否かを特定する情報が記憶される。
【００４１】
ステップＳＴ９までの処理が完了すると、ループ判定手段４は、ループ情報記憶手段３の記憶内容を検索して複数のループに含まれない単一のループ内に存在するフリップフロップを抽出し、抽出結果のフリップフロップのうちからそのループ内に少なくとも一つリセット付きＦＦが残るようにリセット無しＦＦに置き換え可能なリスト情報を作成する（ステップＳＴ１０）。図１の例では、図３に示す結果から、単一ループ内のフリップフロップとして、ＦＦ１，ＦＦ２，ＦＦ７，ＦＦ１０，ＦＦ１１が抽出される。
【００４２】
図４は、ループ判定手段によるリセット無しＦＦに置き換え可否の判定方法とその結果を示す図である。図に示すように、図３に示す結果から、ＦＦ１は単一のループＳＬ１のみに含まれ、ループＳＬ１内にはＦＦ２〜ＦＦ７のうちから一つ以上のリセット付きＦＦを残すことができる。これにより、ＦＦ１は、リセット無しＦＦに置き換え可能と判定される。また、図３に示す結果から、ＦＦ２は単一のループＳＬ１のみに含まれ、ループＳＬ１内にはＦＦ３〜ＦＦ７のうちから一つ以上のリセット付きＦＦを残すことができる。これにより、ＦＦ２は、リセット無しＦＦに置き換え可能と判定される。
【００４３】
図３に示す結果から、ＦＦ３〜ＦＦ６は複数のループに含まれる。これにより、ＦＦ３〜ＦＦ６は、リセット無しＦＦに置き換え不可でリセット付きＦＦのままと判定される。ＦＦ７は単一のループＳＬ１のみに含まれ、ループＳＬ１内にはＦＦ３〜ＦＦ６のうちから一つ以上のリセット付きＦＦを残すことができる。これにより、ＦＦ７は、リセット無しＦＦに置き換え可能と判定される。
【００４４】
ＦＦ１０は単一のループＳＬ４のみに含まれ、ループＳＬ４においてＦＦ３がリセット付きＦＦとして残されている。これにより、ＦＦ１０は、リセット無しＦＦに置き換え可能と判定される。最後に、ＦＦ１１は単一のループＳＬ５のみに含まれるが、ループＳＬ５内はＦＦ１１のみであり、一つ以上のリセット付きＦＦを残すことができない。これにより、ＦＦ１１は、リセット無しＦＦに置き換え不可でリセット付きＦＦのままと判定される。図４に示す判定結果をＦＦに対応付けたリスト情報が、ステップＳＴ１０でループ判定手段４により作成されるリスト情報である。
【００４５】
ループ内置き換えＦＦ判定手段５は、ステップＳＴ１０でループ判定手段４により作成されたリスト情報を入力すると、その内容に従って対象回路１００内のリセット付きＦＦをリセット無しＦＦに置き換え（ステップＳＴ１１）、処理を完了する（ステップＳＴ１２）。図５は、ループ内置き換えＦＦ検出手段により置き換え処理が施された対象回路を示す図であり、対象回路１００に対してリセット無しＦＦに置き換え処理を施したものである。置き換え処理された結果、対象回路１００は、ＦＦ１，ＦＦ２，ＦＦ７，ＦＦ１０がリセット無しＦ１０５ａ，１０６ａ，１１１ａ，１１３ａに置き換えられた対象回路１００Ａとなっている。
【００４６】
以上のように、この実施の形態１によれば、ループに含まれるリセット付きフリップフロップのうち他のループに重ならないフリップフロップをリセット無しフリップフロップに置き換えるループ内置き換えＦＦ検出手段１を備えたので、例えば半導体集積回路のネットリストやハードウェア記述言語で出力する場合であっても、迅速にかつ何の弊害も発生させることもなく、ループ内の容易に置き換え可能なフリップフロップを検出することができる。これにより、ゲート数削減、レイアウト性向上を達成することができる。
【００４７】
ループ内置き換えＦＦ検出手段１は、例えば、接続先が自分に戻っている状態にあるフリップフロップを検出するループ検出手段２、検出したループとループに含まれるフリップフロップを記憶するループ情報記憶手段３、ループ情報記憶手段３から他のループに重ならないフリップフロップのリストを作成するループ判定手段４、リストに記載されたフリップフロップをリセット無しＦＦに置き換えるループ内置き換えＦＦ判定手段５により構成することができ、同様の効果を得ることができる。
【００４８】
また、上記実施の形態１によれば、ループに含まれるリセット付きフリップフロップのうち他のループに重ならないフリップフロップをリセット無しフリップフロップに置き換えても何の問題も生じないフリップフロップとして検出するループ内置き換えＦＦ検出手段１としてコンピュータを機能させるためのプログラムにより、例えば、半導体集積回路のネットリストやハードウェア記述言語で出力する場合でも、迅速にかつ何の弊害も発生させることもなく、容易に置き換え可能なフリップフロップを検出することができる半導体集積回路設計支援システムをコンピュータ上に実現することができる。
【００４９】
この場合、接続先が自分に戻っている状態にあるフリップフロップを検出するループ検出手段２、検出したループとループに含まれるフリップフロップを記憶するループ情報記憶手段３、ループ情報記憶手段３から他のループに重ならないフリップフロップのリストを作成するループ判定手段４、リストに記載されたフリップフロップをリセット無しＦＦに置き換えるループ内置き換えＦＦ判定手段５としてコンピュータを機能させるためのプログラムでループ内置き換えＦＦ検出手段１を具現化してもよく、同様の効果を得ることができる。
【００５０】
なお、上記実施の形態１では、入力ポートが２個、出力ポートが２個しかない半導体集積回路を対象回路１００とした例を示したが、入力ポートや出力ポートがさらに多数の場合であっても上記実施の形態１を同様に適用可能である。また、各フリップフロップは接続先が１個または２個しかない例を示したが、複数の接続先が有る場合であっても上記実施の形態１を同様に適用可能である。また、複数の階層やモジュールに跨ったループを含む回路にも上記実施の形態１を適用可能である。
【００５１】
実施の形態２．
本実施の形態２は、リセット期間中の有効クロックサイクル数を指定する手段を付加したものである。
【００５２】
図６は、この発明の実施の形態２によるループ内置き換えＦＦ検出手段の構成を示すブロック図である。実施の形態２によるループ内置き換えＦＦ検出手段（置き換え処理手段）１Ａの各部の基本構成は上記実施の形態１と同様であるが、ループ内置き換えＦＦ判定手段（置き換え手段）６が、リストに記載されたフリップフロップをループ情報記憶手段３の記憶内容に反映し、リセット期間中の有効クロックサイクル数を指定してＦＦの置き換え処理を実行する点が異なっている。特に、ループ内置き換えＦＦ判定手段６は、リセット期間中の有効クロックサイクル数に応じて置き換えを許容するループ内のＦＦ数及びリセット無しＦＦの連続した接続段数を規定し、これに従ってＦＦを置き換える。
【００５３】
ここで、有効クロックサイクル数とは、システム仕様やユーザにより値が決定された後、指定するものである。また、有効クロックサイクル数は、例えばネットリストやハードウェア記述言語などで記述された対象回路１００の構成要素及びその接続関係に関する情報の一つの情報としてループ内置き換えＦＦ判定手段６が読み込み、置き換え処理に際し利用するようにしてもよい。なお、対象回路には上記実施の形態１で示した対象回路１００Ａを用いることとし、その図示は省略している。
【００５４】
ループ検出手段２、ループ判定手段４及びループ内置き換えＦＦ判定手段６は、本発明に従う半導体集積回路設計支援プログラムをコンピュータに読み込ませてその動作を制御することにより、ＣＰＵやメモリ等のハードウェアと協働した具体的手段として、当該コンピュータ上に実現することができる。また、ループ情報記憶手段３は、半導体集積回路設計支援システムを構成するコンピュータのメモリや外部記憶装置等に構築される。
【００５５】
なお、以下の説明において、本発明の半導体集積回路設計支援システムを具現化するコンピュータ自体の構成及びその基本的な機能については、当業者が当該技術分野の技術常識に基づいて容易に認識できるものであり、本発明の本質に直接関わるものでないので詳細な記載を省略する。
【００５６】
次に動作について説明する。
図７は、実施の形態２による半導体集積回路設計支援システムの動作を示すフローチャートである。説明上、例えば有効クロックサイクル数ｎ＝２を指定する。
ここで、ステップＳＴ１からステップＳＴ１０までの処理は上記実施の形態１と共通であり、同様の処理であることから説明を省略する。
【００５７】
ループ内置き換えＦＦ判定手段６は、ステップＳＴ１０においてループ内でのリセット無しＦＦに置き換え可能なリストがループ判定手段４により作成されると、その内容をループ情報記憶手段３に反映させる（ステップＳＴ２０）。具体的には、ループ情報記憶手段３に記憶されたループ及びループに含まれるフリップフロップの情報に対し、ループ判定手段４によるリセット無しＦＦかリセット付きＦＦかの判定結果をリンクさせる。
【００５８】
図８は、ループ情報記憶手段の記憶内容にリストの判定結果を反映させた結果を示す図であり、図３中のループ情報記憶手段３の記憶内容に対して図４の判定結果を反映させたものである。図において、縦の項目がフリップフロップ（ＦＦ）番号であり、横の項目がループ番号である。また、ループに含まれる場合のみ「含まれる」と記載し、含まれない場合は「−」と表記している。さらに、ループＳＬ１〜ＳＬ５のいずれかに含まれるフリップフロップについては、ループ判定手段４によるフリップフロップの種類の判定結果を併記している。このような、各フリップフロップがどのループに含まれるかに関する情報にフリップフロップの種類の判定結果が反映された情報がループ情報記憶手段３に記憶される。
【００５９】
次に、ループ内置き換えＦＦ判定手段６は、ループ情報記憶手段３の記憶内容を参照して任意のループを選択し、そのループ内のリセット付きＦＦを処理の起点として設定する（ステップＳＴ２１）。例えば、ループＳＬ１が選択されたとすると、図８に示す記憶内容を参照してリセット付きＦＦであるＦＦ３が始点として設定される。
【００６０】
続いて、ループ内置き換えＦＦ判定手段６は、選択したループの段数が（ｎ＋１）以下であるか否かを判定する（ステップＳＴ２２）。ここでは、説明上有効クロックサイクル数ｎ＝２を指定したので、ループの段数が３段以下であるか否かが判定される。なお、ループの段数とは、ループ内に含まれるフリップフロップの数をいう。このとき、ループの段数が（ｎ＋１）以下であれば、ステップＳＴ３２の処理に移行して、ループ情報記憶手段３に記憶される対象回路における次のループを処理対象として設定する。ループの段数が（ｎ＋１）を超えている場合、ステップＳＴ２３の処理に移行する。ループＳＬ１は７段のループであり、３段を超えていることからステップＳＴ２３の処理に移行することになる。
【００６１】
ステップＳＴ２３において、ループ内置き換えＦＦ判定手段６は、起点となるＦＦから（ｎ＋１）段目以内にリセット付きＦＦがあるか否かを判定する。このとき、起点のＦＦから（ｎ＋１）段目以内にリセット付きＦＦが無い場合、ループ内置き換えＦＦ判定手段６は、（ｎ＋１）段目のフリップフロップをリセット付きＦＦに置き換える（ステップＳＴ２４）。
【００６２】
また、（ｎ＋１）段目以内にリセット付きＦＦがあれば、ループ内置き換えＦＦ判定手段６は、そのリセット付きＦＦを処理の起点に設定して（ステップＳＴ２５）、ステップＳＴ２６の処理に移行する。ループＳＬ１においては、起点としたＦＦ３から３段目以内にリセット付きＦＦであるＦＦ４が配置されているので、ループ内置き換えＦＦ判定手段６は、ＦＦ４を処理の起点に設定してステップＳＴ２６の処理に移行する。
【００６３】
ステップＳＴ２４で（ｎ＋１）段目のフリップフロップをリセット付きＦＦに置き換え処理した後、又はステップＳＴ２５でリセット付きＦＦを処理の起点に設定した後、ループ内置き換えＦＦ判定手段６は、起点に設定したリセット付きＦＦから（ｎ＋１）段目以内にリセット付きＦＦがあるか否かを判定する。このとき、起点のリセット付きＦＦから（ｎ＋１）段目以内にリセット付きＦＦが無い場合、ループ内置き換えＦＦ判定手段６は、（ｎ＋１）段目のフリップフロップをリセット付きＦＦに置き換える（ステップＳＴ２７）。
【００６４】
また、（ｎ＋１）段目以内にリセット付きＦＦがあれば、ループ内置き換えＦＦ判定手段６は、そのリセット付きＦＦを処理の起点に設定して（ステップＳＴ２８）、ステップＳＴ２９の処理に移行する。ループＳＬ１において、起点としたＦＦ４から３段目以内にリセット付きＦＦであるＦＦ５が配置されているので、ループ内置き換えＦＦ判定手段６は、ＦＦ５を処理の起点に設定してステップＳＴ２９の処理に移行する。
【００６５】
ステップＳＴ２７で（ｎ＋１）段目のフリップフロップをリセット付きＦＦに置き換え処理した後、又はステップＳＴ２８でリセット付きＦＦを処理の起点に設定した後、ループ内置き換えＦＦ判定手段６は、起点に設定したリセット付きＦＦから（ｎ＋１）段目以内にリセット付きＦＦがあるか否かを判定する。
【００６６】
このとき、起点のリセット付きＦＦから（ｎ＋１）段目以内にリセット付きＦＦが無い場合、ループ内置き換えＦＦ判定手段６は、（ｎ＋１）段目のフリップフロップをリセット付きＦＦに置き換える（ステップＳＴ２７）。このように、ループ内の起点となるリセット付きＦＦからリセット期間の有効クロックサイクル数ｎを超えた位置に存在するリセット無しＦＦをリセット付きＦＦに戻すことで、リセット無しＦＦで不定値が伝播することを防ぐことができる。
【００６７】
また、（ｎ＋１）段目以内にリセット付きＦＦがあれば、ループ内置き換えＦＦ判定手段６は、そのリセット付きＦＦを処理の起点に設定して（ステップＳＴ３０）、ステップＳＴ３１の処理に移行する。ループＳＬ１において、起点としたＦＦ５から３段目以内にリセット付きＦＦであるＦＦ６が配置されているので、ループ内置き換えＦＦ判定手段６は、ＦＦ６を処理の起点に設定してステップＳＴ３１の処理に移行する。
【００６８】
ループ内置き換えＦＦ判定手段６は、起点に設定したＦＦ６でループが一周したか否かを判定する（ステップＳＴ３１）。ループが一周していれば、ステップＳＴ３２に移行して、次のループを処理対象に設定し、ステップＳＴ３３に移行してステップＳＴ２１からの処理を繰り返す。一方、ループが一周していなければ、ステップＳＴ２９に戻って起点に設定したリセット付きＦＦから（ｎ＋１）段目以内にリセット付きＦＦがあるか判定し、ステップＳＴ３０及びステップＳＴ３１の処理を繰り返す。
【００６９】
ここでは、起点としたＦＦ６はループＳＬ１の最後のフリップフロップではないので、ステップＳＴ２９の処理に戻る。ステップＳＴ２９において、ループ内置き換えＦＦ判定手段６は、ＦＦ６から３段目以内にリセット付きＦＦがあるか否かを判定する。対象回路１００ＡにおいてＦＦ６から３段目以内にはリセット付きＦＦがないので、ループ内置き換えＦＦ判定手段６は、ループＳＬ１内でＦＦ６から３段目のフリップフロップであるリセット無しＦＦのＦＦ２をリセット付きＦＦに置き換える（ステップＳＴ２７）。
【００７０】
ステップＳＴ２７で（ｎ＋１）段目のフリップフロップをリセット付きＦＦに置き換え処理した後、ループ内置き換えＦＦ判定手段６は、起点に設定したリセット付きＦＦから（ｎ＋１）段目以内にリセット付きＦＦがあるか否かを判定する（ステップＳＴ２９）。ループＳＬ１において、起点としたＦＦ２から３段目以内にリセット付きＦＦであるＦＦ３が配置されているので、ループ内置き換えＦＦ判定手段６は、ＦＦ３を処理の起点に設定して（ステップＳＴ３０）、ステップＳＴ３１の処理に移行する。
【００７１】
ループ内置き換えＦＦ判定手段６は、起点とされたＦＦ３がループＳＬ１で最初に起点にしたＦＦでありループＳＬ１を一周したことから、ループ情報記憶手段３の記憶内容を参照して次のループを選択し（ステップＳＴ３２）、ステップＳＴ３３に移行してステップＳＴ２１からの処理を繰り返す。ここでは、ステップＳＴ２１において、ループＳＬ１の次のループＳＬ２が選択され、図８に示す記憶内容が参照されてループＳＬ２内のリセット付きＦＦであるＦＦ３が始点として設定される。次に、ループ内置き換えＦＦ判定手段６は、選択したループの段数が（ｎ＋１）以下であるか否かを判定する（ステップＳＴ２２）。ここで、ループＳＬ２は３段のループであり、３段に等しく３段以下に該当することからステップＳＴ３２の処理に移行する。
【００７２】
ステップＳＴ３２において、ループ内置き換えＦＦ判定手段６は、ループ情報記憶手段３の記憶内容を参照してループＳＬ２の次のループＳＬ３を選択し、ステップＳＴ２１の処理に戻ってループＳＬ３内のリセット付きＦＦであるＦＦ６を始点として設定する。続いて、ループ内置き換えＦＦ判定手段６は、選択したループの段数が（ｎ＋１）以下であるか否かを判定する（ステップＳＴ２２）。ここでも、ループＳＬ３が１段のループであり、３段以下であることからステップＳＴ３２の処理に移行する。
【００７３】
ループ内置き換えＦＦ判定手段６は、ステップＳＴ３２においてループ情報記憶手段３の記憶内容を参照してループＳＬ３の次のループＳＬ４を選択し、ステップＳＴ２１の処理に戻ってループＳＬ４内のリセット付きＦＦであるＦＦ３を始点として設定する。続いて、ループ内置き換えＦＦ判定手段６は、選択したループの段数が（ｎ＋１）以下であるか否かを判定する（ステップＳＴ２２）。ここでも、ループＳＬ４が２段のループであり、３段以下であることからステップＳＴ３２の処理に移行する。
【００７４】
ステップＳＴ３２において、ループ内置き換えＦＦ判定手段６は、ループ情報記憶手段３の記憶内容を参照してループＳＬ４の次のループＳＬ５を選択し、ステップＳＴ２１の処理に戻ってループＳＬ５内のリセット付きＦＦであるＦＦ１１を始点として設定する。続いて、ループ内置き換えＦＦ判定手段６は、選択したループの段数が（ｎ＋１）以下であるか否かを判定する（ステップＳＴ２２）。ここでも、ループＳＬ５が１段のループであり、３段以下であることからステップＳＴ３２の処理に移行する。
【００７５】
次に、ループ内置き換えＦＦ判定手段６は、ステップＳＴ３２においてループ情報記憶手段３の記憶内容を参照し、全てのループについて調査したことを確認すると処理を完了する（ステップＳＴ３４）。
【００７６】
ここまでの動作により、リセット期間中の有効クロックサイクル数としてｎ＝２を指定し、ループ内置き換えＦＦ判定手段６が、対象回路１００Ａ中の全てのループ（ＳＬ１〜ＳＬ５が相当）に対してリセット付きＦＦへの置き換え処理を施した結果、ＦＦ２がリセット付きＦＦに戻された。
【００７７】
なお、上記の実施形態２では、説明の都合上ｎ＝２の場合を例示したが、ｎに０以上の値を指定した全ての場合にも同様に適用可能である。
【００７８】
以上のように、この実施の形態２によれば、接続先が自分に戻っている状態にあるフリップフロップを検出するループ検出手段２と、検出したループとループに含まれるフリップフロップを記憶するループ情報記憶手段３と、ループ情報記憶手段３から他のループに重ならないフリップフロップのリストを作成するループ判定手段４と、リストに記載されたフリップフロップをループ情報記憶手段３に反映し、リセット期間中の有効クロックサイクル数を指定してＦＦの置き換え処理を実行するループ内置き換えＦＦ判定手段６とからループ内置き換えＦＦ検出手段１Ａを構成したので、リセット期間中の有効クロックサイクル数に上限が有る場合にも、何の弊害も発生させることなく、また不定値が伝搬することなく、容易に、かつ、確実に置き換え可能なフリップフロップを検出することができる。
【００７９】
また、接続先が自分に戻っている状態にあるフリップフロップを検出するループ検出手段２、検出したループとループに含まれるフリップフロップを記憶するループ情報記憶手段３、ループ情報記憶手段３から他のループに重ならないフリップフロップのリストを作成するループ判定手段４、リストに記載されたフリップフロップをループ情報記憶手段３に反映し、リセット期間中の有効クロックサイクル数を指定してＦＦの置き換え処理を実行するループ内置き換えＦＦ判定手段６としてコンピュータを機能させるためのプログラムによりループ内置き換えＦＦ検出手段１Ａを具現化してもよく、同様の効果を得ることができる。
【００８０】
なお、上記実施の形態２では、リセットを非同期リセットの前提でサイクル数をｎとしているが、同期リセットの場合はリセットサイクル数をｍとし、本明細書に添付した図面並びに本明細書中の文章における全ての（ｎ＋１）をｍに置き換えることで適用可能である。
【００８１】
実施の形態３．
本実施の形態３は、ループに含まれるフリップフロップ数を基準にループ情報記憶手段の内容を並べ替えるループ並替手段と、並べた順にフリップフロップの置き換え処理を実行するループ内置き換えＦＦ判定手段を付加したものである。
【００８２】
図９は、この発明の実施の形態３によるループ内置き換えＦＦ検出手段の構成を示すブロック図である。実施の形態３のループ内置き換えＦＦ検出手段（置き換え処理手段）１Ｂは、上記実施の形態１で説明したループ検出手段２、ループ情報記憶手段３及びループ判定手段４に加え、ループ並替手段（並替手段）７及びループ内置き換えＦＦ判定手段（置き換え手段）８を備える。ループ並替手段７は、ループに含まれるフリップフロップ数を基準にループ情報記憶手段３の内容を並べ替える。
【００８３】
ループ内置き換えＦＦ判定手段８は、上記実施の形態２と同様にリストに記載されたフリップフロップをループ情報記憶手段３に反映し、リセット期間中の有効クロックサイクル数ｎを指定し、ループ並替手段７で並べ替えた順にループを選択してＦＦの置き換え処理を実行する。例えば、ループ内置き換えＦＦ判定手段８も、リセット期間中の有効クロックサイクル数に応じて置き換えを許容するループ内のＦＦ数及びリセット無しＦＦの連続した接続段数を規定し、これに従ってＦＦを置き換える。なお、対象回路には上記実施の形態１で示した対象回路１００Ａを用いることとし、その図示は省略している。
【００８４】
ループ検出手段２、ループ判定手段４、ループ並替手段７及びループ内置き換えＦＦ判定手段８は、本発明に従う半導体集積回路設計支援プログラムをコンピュータに読み込ませてその動作を制御することにより、ＣＰＵやメモリ等のハードウェアと協働した具体的手段として、当該コンピュータ上に実現することができる。また、ループ情報記憶手段３は、半導体集積回路設計支援システムを構成するコンピュータのメモリや外部記憶装置等に構築される。
【００８５】
なお、以下の説明において、本発明の半導体集積回路設計支援システムを具現化するコンピュータ自体の構成及びその基本的な機能については、当業者が当該技術分野の技術常識に基づいて容易に認識できるものであり、本発明の本質に直接関わるものでないので詳細な記載を省略する。
【００８６】
次に動作について説明する。
図１０は、実施の形態２による半導体集積回路設計支援システムの動作を示すフローチャートである。ここで、ステップＳＴ１からステップＳＴ１０までの処理は上記実施の形態１と共通であり、同様の処理であることから説明を省略する。また、上記実施の形態２と同様にして、ループ内置き換えＦＦ判定手段８が、ステップＳＴ１０においてループ内でのリセット無しＦＦに置き換え可能なリストがループ判定手段４により作成されると、その内容をループ情報記憶手段３に反映させる（ステップＳＴ２０）。
【００８７】
次に、ループ並替手段７は、ループ情報記憶手段３の記憶内容をループ内のＦＦ数を基準に並べ替える（ステップＳＴ４０）。具体的には、ループ情報記憶手段３に記憶されたループ判定手段４によるリセット無しＦＦかリセット付きＦＦかの判定結果をリンクさせたループ及びループに含まれるフリップフロップの情報に対して、ＦＦ置き換え調査の際の検索情報としてループに含まれるフリップフロップ数の情報を付加する。
【００８８】
図１１は、ループ並替手段による処理結果を示す図であり、図８中のループ情報記憶手段３の記憶内容に対してループ並替手段７による並べ替え処理を施した結果である。図において、縦の項目がフリップフロップ（ＦＦ）番号、横の第１番目の項目がループ内のフリップフロップ数であり、横の第２番目の項目がループ番号である。また、ループに含まれる場合のみ「含まれる」と記載し、含まれない場合は「−」と表記している。さらに、ループＳＬ１〜ＳＬ５のいずれかに含まれるフリップフロップについては、ループ判定手段４によるフリップフロップの種類の判定結果を併記している。
【００８９】
ループ及びループに含まれるフリップフロップの情報に対して、ループに含まれるフリップフロップ数の情報を付加することで、後述するフリップフロップの置き換え処理にあたり、置き換え対象となるループを容易に決定することができる。図示の例では、有効クロックサイクル数ｎが２である場合、ループ段数が３以下となる、ＦＦ数が１のループＳＬ３、ＳＬ５、ＦＦ数が２のループＳＬ４、ＦＦ数が３のループＳＬ２は、ループ内置き換えＦＦ判定手段８による、フリップフロップの置き換え処理の対象から外すことができる。
【００９０】
上述のような並べ替え処理が完了すると、ループ内置き換えＦＦ判定手段８は、ループ並替手段７により並べ替えられた、ループ情報記憶手段３の記憶内容を参照し、ＦＦ数が（ｎ＋２）のループからＦＦ数について昇順にループを処理対象として選択する（ステップＳＴ４１）。これにより、ＦＦ置き換えを行わないＦＦ数が（ｎ＋１）のループが処理対象から外され、無駄な処理を行うことがない。図１１の例では、ループＳＬ１のみが処理対象として選択される。
【００９１】
以降のステップＳＴ２３からステップＳＴ３１までの処理は、上記実施の形態２と同様である。なお、ステップＳＴ３２において、ループ内置き換えＦＦ判定手段８が、ＦＦ数で昇順にループを選ぶ。上述の処理において、上記実施の形態２と同様に有効クロックサイクル数ｎを２に指定した場合、選択されるループは、（ｎ＋２）段、つまり４段以上のループＳＬ１だけとなり、上記実施の形態２と同様にＦＦ２だけがリセット付きＦＦに戻される。
【００９２】
また、上記の実施形態２では、説明の都合上ｎ＝２の場合を例示したが、ｎに０以上の値を指定した全ての場合にも同様に適用可能である。
【００９３】
以上のように、この実施の形態３によれば、接続先が自分に戻っている状態にあるフリップフロップを検出するループ検出手段２と、検出したループとループに含まれるフリップフロップを記憶するループ情報記憶手段３と、ループ情報記憶手段３から他のループに重ならないフリップフロップのリストを作成するループ判定手段４と、ループに含まれるフリップフロップ数を基準にループ情報記憶手段の内容を並べ替えるループ並替手段７と、リストに記載されたフリップフロップをループ情報記憶手段３に反映し、リセット期間中の有効クロックサイクル数を指定し、ループ並替手段７で並べ替えた順にループを選択してＦＦの置き換え処理を実行するループ内置き換えＦＦ判定手段８とを備えたので、リセット期間中の有効クロックサイクル数に上限が有る場合に、より少ない実行ステップで、何の弊害も発生させることなく、また不定値が伝搬することなく、容易に、かつ、確実に置き換え可能なフリップフロップを検出することができる。
【００９４】
また、接続先が自分に戻っている状態にあるフリップフロップを検出するループ検出手段２、検出したループとループに含まれるフリップフロップを記憶するループ情報記憶手段３、ループ情報記憶手段３から他のループに重ならないフリップフロップのリストを作成するループ判定手段４、ループに含まれるフリップフロップ数を基準にループ情報記憶手段の内容を並べ替えるループ並替手段７、リストに記載されたフリップフロップをループ情報記憶手段３に反映し、リセット期間中の有効クロックサイクル数を指定し、ループ並替手段７で並べ替えた順にループを選択してＦＦの置き換え処理を実行するループ内置き換えＦＦ判定手段８としてコンピュータを機能させるためのプログラムによりループ内置き換えＦＦ検出手段１Ｂを具現化してもよく、同様の効果を得ることができる。
【００９５】
なお、上記実施の形態３では、リセットを非同期リセットの前提でサイクル数をｎとしているが、同期リセットの場合はリセットサイクル数をｍとし、本明細書に添付した図面並びに本明細書中の文章における全ての（ｎ＋１）をｍに置き換え、（ｎ＋２）をｍ＋１に置き換えることで適用可能である。
【図面の簡単な説明】
【００９６】
【図１】この発明の実施の形態１による半導体集積回路設計支援システムの構成を示す図である。
【図２】実施の形態１による半導体集積回路設計支援システムの動作を示すフローチャートである。
【図３】ループ情報記憶手段の記憶内容の一例を示す図である。
【図４】ループ判定手段によるリセット無しＦＦに置き換え可否の判定方法とその結果を示す図である。
【図５】ループ内置き換えＦＦ検出手段により置き換え処理が施された対象回路を示す図である。
【図６】この発明の実施の形態２によるループ内置き換えＦＦ検出手段の構成を示すブロック図である。
【図７】実施の形態２による半導体集積回路設計支援システムの動作を示すフローチャートである。
【図８】ループ情報記憶手段の記憶内容にリストの判定結果を反映させた結果を示す図である。
【図９】この発明の実施の形態３によるループ内置き換えＦＦ検出手段の構成を示すブロック図である。
【図１０】実施の形態３による半導体集積回路設計支援システムの動作を示すフローチャートである。
【図１１】ループ並替手段による処理結果を示す図である。
【符号の説明】
【００９７】
１，１Ａ，１Ｂ  ループ内置き換えＦＦ検出手段（置き換え処理手段）、２  ループ検出手段、３  ループ情報記憶手段（記憶手段）、４  ループ判定手段、５，６，８  ループ内置き換えＦＦ判定手段（置き換え手段）、７  ループ並替手段（並替手段）、１００，１００Ａ  対象回路、１０１，１０２  入力ポート、１０３，１０４  出力ポート、１０５〜１１４  フリップフロップ（リセット付きＦＦ、ＦＦ１〜ＦＦ８，ＦＦ１０，ＦＦ１１）、１０５ａ，１０６ａ，１１１ａ，１１３ａ  フリップフロップ（リセット無しＦＦ、ＦＦ１，ＦＦ２，ＦＦ７，ＦＦ１０）、１１５〜１２６  組み合わせ回路（Ｃ１〜Ｃ１２）。
【図１】
0004749813.tif 000002
【図２】
0004749813.tif 000003
【図３】
0004749813.tif 000004
【図４】
0004749813.tif 000005
【図５】
0004749813.tif 000006
【図６】
0004749813.tif 000007
【図７】
0004749813.tif 000008
【図８】
0004749813.tif 000009
【図９】
0004749813.tif 000010
【図１０】
0004749813.tif 000011
【図１１】
0004749813.tif 000012