実施の形態1.
図1は、この発明の実施の形態1による半導体集積回路設計支援システムの構成を示す図である。図において、対象回路100は半導体集積回路を示しており、入力ポート101,102、出力ポート103,104、フリップフロップ(図中、FFと記載する)105〜114、組み合わせ回路115〜126を備えている。なお、以降、フリップフロップ105〜114はFF1〜FF8,FF10,FF11、組み合わせ回路115〜126はC1〜C12と呼ぶ。
入力ポート101,102は、対象回路100の外部からの信号入力ポートであり、出力ポート103,104は、この対象回路100の外部への信号出力ポートである。FF1〜FF8,FF10,FF11は、リセット付きフリップフロップである。C1は入力ポート101に接続され、以下、FF1、C2、FF2、C3、FF3、C4、FF4、C5、FF5、C6、FF6、C7、FF7、C8、FF8、C9と順番に接続され、C9の出力が出力ポート103に接続されている。また、入力ポート102は、C2に接続されている。FF3とC4から分岐した経路には、C10、FF10、C11、FF11、C12が順番に接続され、C12の出力が出力ポート104に接続している。
C1はC8とFF8の間に接続して、FF1〜FF7を包含するフリップフロップ段数が7段のループSL1を形成する。C3はFF5とC6の間に接続してFF3〜FF5を包含するフリップフロップ段数が3段のループSL2を形成する。C6はFF6とC7の間に接続してFF6のみを包含するフリップフロップ段数が1段のループSL3を形成する。また、C3はFF10とC11の間にも接続してFF3,FF10を包含するフリップフロップ段数が2段のループSL4を形成する。C11はFF11とC12の間に接続してFF11のみを包含するフリップフロップ段数が1段のループSL5を形成する。
ここで、リセット端子無しフリップフロップとは、外部からのリセット信号を入力する入力端子が設けられていないフリップフロップである。また、リセット端子付きフリップフロップとは、外部からのリセット信号を入力する入力端子が設けられているフリップフロップであり、外部からのリセット信号によりリセット状態に設定される。以降の説明においても、リセット端子無しフリップフロップをリセット無しFFと略称し、リセット端子付きフリップフロップをリセット付きFFと略称する。
実施の形態1による半導体集積回路設計支援システムを構成するループ内置き換えFF検出手段(置き換え処理手段)1は、対象回路100に対してリセット無しFFに置き換えても問題の生じないループ内のリセット付きFFを検出する機能を有するもので、ループ検出手段2、ループ情報記憶手段(記憶手段)3、ループ判定手段4及びループ内置き換えFF判定手段(置き換え手段)5を備えている。
ループ検出手段2は、半導体集積回路において接続先が自分に戻っている状態にあるフリップフロップを含むループを検出する。ループ情報記憶手段3は、ループ検出手段2により検出されたループ及びループに含まれるフリップフロップの情報を記憶する。
なお、本発明におけるループとは、あるフリップフロップを起点として接続先が自分に戻っている状態にある経路が存在する場合にその経路のことを意味している。ループを検出する具体的手段の一例は、あるフリップフロップを起点に全ての経路を探索し、対象回路100の出力ポート103,104にのみ到達した場合にループが無いと判定し、1本でも自分に戻っている経路が存在するとループと判定する。図1の場合、ループが無いのはFF8を起点とした場合のみである。
ループ判定手段4では、ループ情報記憶手段3にループ毎に記憶されたループに含まれるフリップフロップが他のループに重なるか否かを判定して他のループに重ならないフリップフロップを検出すると共に、ループ内に少なくとも一つリセット付きFFが残るようにリセット無しFFに置き換え可能なフリップフロップのリストを作成する。
ループ内置き換えFF判定手段5は、ループ判定手段4により作成されたリスト内のフリップフロップをリセット無しFFへの置き換え対象とする。即ち、ループ内置き換えFF判定手段5は、ループ検出手段2により検出されたループ及びループに含まれるフリップフロップの情報をループ情報記憶手段3に記憶し、ループ判定手段4により他のループに重ならないと判定して作成したリスト内に存在するフリップフロップをリセット無しFFへの置き換え対象と判定する。
ループ検出手段2、ループ判定手段4及びループ内置き換えFF判定手段5は、本発明に従う半導体集積回路設計支援プログラムをコンピュータに読み込ませてその動作を制御することにより、CPUやメモリ等のハードウェアと協働した具体的手段として、当該コンピュータ上に実現することができる。また、ループ情報記憶手段3は、半導体集積回路設計支援システムを構成するコンピュータのメモリや外部記憶装置等に構築される。対象回路100の構成要素間の接続関係に関する情報は、例えば上記コンピュータに装備された記憶装置に格納され、上記手段に適宜読み出されて利用される。
なお、以下の説明において、本発明の半導体集積回路設計支援システムを具現化するコンピュータ自体の構成及びその基本的な機能については、当業者が当該技術分野の技術常識に基づいて容易に認識できるものであり、本発明の本質に直接関わるものでないので詳細な記載を省略する。
次に動作について説明する。
図2は、実施の形態1による半導体集積回路設計支援システムの動作を示すフローチャートであり、この図に沿って説明する。
先ず、ループ検出手段2は、ネットリストやハードウェア記述言語などで記述された対象回路100の構成要素及びその接続関係に関する情報を入力して、対象回路100内の任意のフリップフロップ、つまり図1におけるFF1〜FF8、FF10、FF11のうちから、例えばFF1をループ検出処理の始点として選択する(ステップST1)。
次に、ループ検出手段2は、ネットリストやハードウェア記述言語などで記述された対象回路100の構成要素及びその接続関係に関する情報を用い、始点として選択したフリップフロップの接続先が自分に戻っている状態にあるか否かを判定する(ステップST2)。ここで、接続先が自分に戻っている状態とは、フリップフロップの出力側からその入力に戻る経路があることをいう。
ループ検出手段2は、接続先が自分に戻っている状態にあるフリップフロップ(以降、ループFFと呼ぶ)が検出されると、ループ(SL1に相当)を特定する情報と共に当該ループに含まれる全てのFFの情報をループ情報記憶手段3に記憶する(ステップST3)。例えば、FF1の場合であれば、FF1の出力側からその入力に戻る経路上に存在するFF1〜FF7をループに含まれるフリップフロップとして特定し、これらフリップフロップの情報がループ情報記憶手段3に記憶される。
ステップST2でループFFが検出されなかった場合又はステップST3の処理後、ループ検出手段2は、FF1の次に接続されているFF2をループ検出処理の対象として選択する(ステップST4)。次に、ループ検出手段2は、ネットリストやハードウェア記述言語などで記述された対象回路100の構成要素及びその接続関係に関する情報を用い、ステップST4で選択したフリップフロップの接続先が自分に戻っている状態にあるか否か、即ちループかどうかを判定する(ステップST5)。
ループ判定手段4は、ステップST5においてループ検出手段2によりFF2がループFFとして検出されると、ループ情報記憶手段3の内容を検索してFF2が関与するループが既に記憶されているループだけであるか否かを判定する(ステップST6)。つまり、FF2の出力側からその入力に戻る経路は、FF1の出力側からその入力に戻る経路と全く同じであるか、新しい経路を含むかが判別される。図示の例では、FF2のループは、FF1と同じループSL1のみであるので、ループ情報記憶手段3に既に記憶されているループだけであると判定され、ステップST8の処理に移行する。
ステップST8において、ループ検出手段2は、FF2の次に接続されているFF3をループ検出処理の対象として選択する。次に、ステップST9において再びステップST5からの処理に戻り、ループ検出手段2は、ネットリストやハードウェア記述言語などで記述された対象回路100の構成要素及びその接続関係に関する情報を用い、選択したFF3の接続先が自分に戻っている状態にあるか否か、即ちループかどうかを判定する。ここで、FF3は、SL1の他、FF5の出力からFF3の入力に戻る経路、FF10の出力からFF3の入力に戻る経路を有するループFFとして検出される。
ループ判定手段4は、ループ検出手段2によりFF3がループFFとして検出されると、ループ情報記憶手段3の内容を検索してFF3が関与するループが既に記憶されているループだけであるか否かを判定する(ステップST6)。上述のように、FF3の出力側からその入力に戻る経路としては、SL1の他、FF5の出力からFF3の入力に戻る経路(SL2に相当)、FF10の出力からFF3の入力に戻る経路(SL4に相当)があり、FF3のループは、ループ情報記憶手段3に既に記憶されているループだけではないと判定される。
ループ検出手段2は、FF3についてのループ判定手段4による判定結果を受けると、FF5の出力からFF3の入力に戻る経路を特定する情報(SL2に相当)とこの経路上に存在する全てのFF(FF3〜FF5)の情報をループ情報記憶手段3に記憶する(ステップST7)。同様に、FF10の出力からFF3の入力に戻る経路を特定する情報(SL4に相当)とこの経路上に存在する全てのFF(FF3、FF10)の情報をループ情報記憶手段3に記憶する。
この後、ステップST8の処理に移行して、ループ検出手段2が、FF3の次に接続されているFF4、FF10をループ検出処理の対象として選択する。次に、ステップST9において再びステップST5からの処理に戻り、ループ検出手段2は、ネットリストやハードウェア記述言語などで記述された対象回路100の構成要素及びその接続関係に関する情報を用い、選択したFF4、FF10の接続先が自分に戻っている状態にあるか否か、即ちループかどうかを判定する。ここで、FF4は、SL1の他、FF5の出力からFF4の入力に戻る経路を有するループFFとして検出され、FF10は、自己の出力からFF3を介して入力に戻る経路を有するループFFとして検出される。
ループ判定手段4は、ループ検出手段2によりFF4、FF10がループFFとして検出されると、ループ情報記憶手段3の内容を検索してFF4、FF10が関与するループが既に記憶されているループだけであるか否かを判定する(ステップST6)。上述のように、FF4の出力側からその入力に戻る経路としては、SL1の他、FF5の出力からFF3の入力に戻る経路(SL2に相当)があり、FF4のループは、ループ情報記憶手段3に既に記憶されていると判定される。一方、FF10の出力側からその入力に戻る経路としては、FF10の出力からFF3を介して入力に戻る経路(SL4に相当)があり、FF10のループも、ループ情報記憶手段3に既に記憶されていると判定される。これにより、ステップST8の処理に移行する。
続いて、ループ検出手段2は、FF4の次に接続されているFF5をループ検出処理の対象として選択する(ステップST8)。次に、ステップST9において再びステップST5からの処理に戻り、ループ検出手段2は、ネットリストやハードウェア記述言語などで記述された対象回路100の構成要素及びその接続関係に関する情報を用い、選択したFF5の接続先が自分に戻っている状態にあるか否か、即ちループかどうかを判定する。ここで、FF5は、SL1の他、FF5の出力からFF3、FF4を介して入力に戻る経路を有するループFFとして検出される。
そこで、ループ判定手段4は、ループ検出手段2によりFF5がループFFとして検出されると、ループ情報記憶手段3の内容を検索してFF5が関与するループが既に記憶されているループだけであるか否かを判定する(ステップST6)。上述のように、FF5の出力側からその入力に戻る経路としては、SL1の他、FF5の出力からFF3、FF4を介して入力に戻る経路(SL2に相当)があり、FF5のループは、ループ情報記憶手段3に既に記憶されていると判定される。これにより、ステップST8の処理に移行する。
次に、ループ検出手段2は、FF5の次に接続されているFF6をループ検出処理の対象として選択する(ステップST8)。続いて、ステップST9において再びステップST5からの処理に戻り、ループ検出手段2は、ネットリストやハードウェア記述言語などで記述された対象回路100の構成要素及びその接続関係に関する情報を用い、選択したFF6の接続先が自分に戻っている状態にあるか否か、即ちループかどうかを判定する。ここで、FF6は、SL1の他、自己の出力から入力に戻る経路を有するループFFとして検出される。
ループ判定手段4は、ループ検出手段2によりFF6がループFFとして検出されると、ループ情報記憶手段3の内容を検索してFF6が関与するループが既に記憶されているループだけであるか否かを判定する(ステップST6)。上述のように、FF6の出力側からその入力に戻る経路としては、SL1の他、FF6の出力から入力に戻る経路(SL3に相当)があり、FF6のループは、ループ情報記憶手段3に既に記憶されているループだけではないと判定される。
ループ検出手段2は、FF6についてのループ判定手段4による判定結果を受けると、FF6の出力から入力に戻る経路を特定する情報(SL3に相当)とこの経路上に存在する全てのFF(FF6)の情報をループ情報記憶手段3に記憶する(ステップST7)。
この後、ステップST8の処理に移行して、ループ検出手段2が、FF6の次に接続されているFF7をループ検出処理の対象として選択する。次に、ステップST9において再びステップST5からの処理に戻り、ループ検出手段2は、ネットリストやハードウェア記述言語などで記述された対象回路100の構成要素及びその接続関係に関する情報を用い、選択したFF7の接続先が自分に戻っている状態にあるか否か、即ちループかどうかを判定する。ここで、FF7は、SL1のみを有するループFFとして検出される。
ループ判定手段4は、ループ検出手段2によりFF7がループFFとして検出されると、ループ情報記憶手段3の内容を検索してFF7が関与するループが既に記憶されているループだけであるか否かを判定する(ステップST6)。上述のように、FF7の出力側から入力に戻る経路としてはSL1のみであり、FF7のループはループ情報記憶手段3に既に記憶されていると判定される。これにより、ステップST8の処理に移行する。
ループ検出手段2は、FF7の次に接続されているFF8をループ検出処理の対象として選択する(ステップST8)。次に、ステップST9において再びステップST5からの処理に戻り、ループ検出手段2は、ネットリストやハードウェア記述言語などで記述された対象回路100の構成要素及びその接続関係に関する情報を用い、選択したFF8の接続先が自分に戻っている状態にあるか否か、即ちループかどうかを判定する。ここで、FF8は、自己の出力から入力に戻る経路を有さないので、非ループFFとして検出される。これにより、ステップST8の処理に移行する。
次に、ループ検出手段2は、FF10の次に接続されているFF11をループ検出処理の対象として選択する(ステップST8)。続いて、ステップST9において再びステップST5からの処理に戻り、ループ検出手段2は、ネットリストやハードウェア記述言語などで記述された対象回路100の構成要素及びその接続関係に関する情報を用い、選択したFF11の接続先が自分に戻っている状態にあるか否か、即ちループかどうかを判定する。ここで、FF11は、自己の出力から入力に戻る経路を有するループFFとして検出される。
ループ判定手段4は、ループ検出手段2によりFF11がループFFとして検出されると、ループ情報記憶手段3の内容を検索してFF11が関与するループが既に記憶されているループだけであるか否かを判定する(ステップST6)。上述のように、FF11の出力側からその入力に戻る経路としては、FF11の出力から入力に戻る経路(SL5に相当)があり、FF11のループはループ情報記憶手段3に既に記憶されているループだけではないと判定される。
そこで、ループ検出手段2は、FF11についてのループ判定手段4による判定結果を受けると、FF11の出力から入力に戻る経路を特定する情報(SL5に相当)とこの経路上に存在する全てのFF(FF11)の情報をループ情報記憶手段3に記憶する(ステップST7)。
以上の処理により、対象回路100内の全てのループ(SL1〜SL5が相当)とループ毎にループに含まれる全てのフリップフロップがループ情報記憶手段3に記憶される。
図3は、ループ情報記憶手段の記憶内容の一例を示す図であり、図1中の対象回路100についてのループ検出結果を示している。図において、縦の項目がフリップフロップ(FF)番号であり、横の項目がループ番号である。ループ検出の結果として、FF1〜FF7、FF10、FF11についていずれのループ(SL1〜SL5)に含まれるか否かを特定する情報が記憶される。
ステップST9までの処理が完了すると、ループ判定手段4は、ループ情報記憶手段3の記憶内容を検索して複数のループに含まれない単一のループ内に存在するフリップフロップを抽出し、抽出結果のフリップフロップのうちからそのループ内に少なくとも一つリセット付きFFが残るようにリセット無しFFに置き換え可能なリスト情報を作成する(ステップST10)。図1の例では、図3に示す結果から、単一ループ内のフリップフロップとして、FF1,FF2,FF7,FF10,FF11が抽出される。
図4は、ループ判定手段によるリセット無しFFに置き換え可否の判定方法とその結果を示す図である。図に示すように、図3に示す結果から、FF1は単一のループSL1のみに含まれ、ループSL1内にはFF2〜FF7のうちから一つ以上のリセット付きFFを残すことができる。これにより、FF1は、リセット無しFFに置き換え可能と判定される。また、図3に示す結果から、FF2は単一のループSL1のみに含まれ、ループSL1内にはFF3〜FF7のうちから一つ以上のリセット付きFFを残すことができる。これにより、FF2は、リセット無しFFに置き換え可能と判定される。
図3に示す結果から、FF3〜FF6は複数のループに含まれる。これにより、FF3〜FF6は、リセット無しFFに置き換え不可でリセット付きFFのままと判定される。FF7は単一のループSL1のみに含まれ、ループSL1内にはFF3〜FF6のうちから一つ以上のリセット付きFFを残すことができる。これにより、FF7は、リセット無しFFに置き換え可能と判定される。
FF10は単一のループSL4のみに含まれ、ループSL4においてFF3がリセット付きFFとして残されている。これにより、FF10は、リセット無しFFに置き換え可能と判定される。最後に、FF11は単一のループSL5のみに含まれるが、ループSL5内はFF11のみであり、一つ以上のリセット付きFFを残すことができない。これにより、FF11は、リセット無しFFに置き換え不可でリセット付きFFのままと判定される。図4に示す判定結果をFFに対応付けたリスト情報が、ステップST10でループ判定手段4により作成されるリスト情報である。
ループ内置き換えFF判定手段5は、ステップST10でループ判定手段4により作成されたリスト情報を入力すると、その内容に従って対象回路100内のリセット付きFFをリセット無しFFに置き換え(ステップST11)、処理を完了する(ステップST12)。図5は、ループ内置き換えFF検出手段により置き換え処理が施された対象回路を示す図であり、対象回路100に対してリセット無しFFに置き換え処理を施したものである。置き換え処理された結果、対象回路100は、FF1,FF2,FF7,FF10がリセット無しF105a,106a,111a,113aに置き換えられた対象回路100Aとなっている。
以上のように、この実施の形態1によれば、ループに含まれるリセット付きフリップフロップのうち他のループに重ならないフリップフロップをリセット無しフリップフロップに置き換えるループ内置き換えFF検出手段1を備えたので、例えば半導体集積回路のネットリストやハードウェア記述言語で出力する場合であっても、迅速にかつ何の弊害も発生させることもなく、ループ内の容易に置き換え可能なフリップフロップを検出することができる。これにより、ゲート数削減、レイアウト性向上を達成することができる。
ループ内置き換えFF検出手段1は、例えば、接続先が自分に戻っている状態にあるフリップフロップを検出するループ検出手段2、検出したループとループに含まれるフリップフロップを記憶するループ情報記憶手段3、ループ情報記憶手段3から他のループに重ならないフリップフロップのリストを作成するループ判定手段4、リストに記載されたフリップフロップをリセット無しFFに置き換えるループ内置き換えFF判定手段5により構成することができ、同様の効果を得ることができる。
また、上記実施の形態1によれば、ループに含まれるリセット付きフリップフロップのうち他のループに重ならないフリップフロップをリセット無しフリップフロップに置き換えても何の問題も生じないフリップフロップとして検出するループ内置き換えFF検出手段1としてコンピュータを機能させるためのプログラムにより、例えば、半導体集積回路のネットリストやハードウェア記述言語で出力する場合でも、迅速にかつ何の弊害も発生させることもなく、容易に置き換え可能なフリップフロップを検出することができる半導体集積回路設計支援システムをコンピュータ上に実現することができる。
この場合、接続先が自分に戻っている状態にあるフリップフロップを検出するループ検出手段2、検出したループとループに含まれるフリップフロップを記憶するループ情報記憶手段3、ループ情報記憶手段3から他のループに重ならないフリップフロップのリストを作成するループ判定手段4、リストに記載されたフリップフロップをリセット無しFFに置き換えるループ内置き換えFF判定手段5としてコンピュータを機能させるためのプログラムでループ内置き換えFF検出手段1を具現化してもよく、同様の効果を得ることができる。
なお、上記実施の形態1では、入力ポートが2個、出力ポートが2個しかない半導体集積回路を対象回路100とした例を示したが、入力ポートや出力ポートがさらに多数の場合であっても上記実施の形態1を同様に適用可能である。また、各フリップフロップは接続先が1個または2個しかない例を示したが、複数の接続先が有る場合であっても上記実施の形態1を同様に適用可能である。また、複数の階層やモジュールに跨ったループを含む回路にも上記実施の形態1を適用可能である。
実施の形態2.
本実施の形態2は、リセット期間中の有効クロックサイクル数を指定する手段を付加したものである。
図6は、この発明の実施の形態2によるループ内置き換えFF検出手段の構成を示すブロック図である。実施の形態2によるループ内置き換えFF検出手段(置き換え処理手段)1Aの各部の基本構成は上記実施の形態1と同様であるが、ループ内置き換えFF判定手段(置き換え手段)6が、リストに記載されたフリップフロップをループ情報記憶手段3の記憶内容に反映し、リセット期間中の有効クロックサイクル数を指定してFFの置き換え処理を実行する点が異なっている。特に、ループ内置き換えFF判定手段6は、リセット期間中の有効クロックサイクル数に応じて置き換えを許容するループ内のFF数及びリセット無しFFの連続した接続段数を規定し、これに従ってFFを置き換える。
ここで、有効クロックサイクル数とは、システム仕様やユーザにより値が決定された後、指定するものである。また、有効クロックサイクル数は、例えばネットリストやハードウェア記述言語などで記述された対象回路100の構成要素及びその接続関係に関する情報の一つの情報としてループ内置き換えFF判定手段6が読み込み、置き換え処理に際し利用するようにしてもよい。なお、対象回路には上記実施の形態1で示した対象回路100Aを用いることとし、その図示は省略している。
ループ検出手段2、ループ判定手段4及びループ内置き換えFF判定手段6は、本発明に従う半導体集積回路設計支援プログラムをコンピュータに読み込ませてその動作を制御することにより、CPUやメモリ等のハードウェアと協働した具体的手段として、当該コンピュータ上に実現することができる。また、ループ情報記憶手段3は、半導体集積回路設計支援システムを構成するコンピュータのメモリや外部記憶装置等に構築される。
なお、以下の説明において、本発明の半導体集積回路設計支援システムを具現化するコンピュータ自体の構成及びその基本的な機能については、当業者が当該技術分野の技術常識に基づいて容易に認識できるものであり、本発明の本質に直接関わるものでないので詳細な記載を省略する。
次に動作について説明する。
図7は、実施の形態2による半導体集積回路設計支援システムの動作を示すフローチャートである。説明上、例えば有効クロックサイクル数n=2を指定する。
ここで、ステップST1からステップST10までの処理は上記実施の形態1と共通であり、同様の処理であることから説明を省略する。
ループ内置き換えFF判定手段6は、ステップST10においてループ内でのリセット無しFFに置き換え可能なリストがループ判定手段4により作成されると、その内容をループ情報記憶手段3に反映させる(ステップST20)。具体的には、ループ情報記憶手段3に記憶されたループ及びループに含まれるフリップフロップの情報に対し、ループ判定手段4によるリセット無しFFかリセット付きFFかの判定結果をリンクさせる。
図8は、ループ情報記憶手段の記憶内容にリストの判定結果を反映させた結果を示す図であり、図3中のループ情報記憶手段3の記憶内容に対して図4の判定結果を反映させたものである。図において、縦の項目がフリップフロップ(FF)番号であり、横の項目がループ番号である。また、ループに含まれる場合のみ「含まれる」と記載し、含まれない場合は「−」と表記している。さらに、ループSL1〜SL5のいずれかに含まれるフリップフロップについては、ループ判定手段4によるフリップフロップの種類の判定結果を併記している。このような、各フリップフロップがどのループに含まれるかに関する情報にフリップフロップの種類の判定結果が反映された情報がループ情報記憶手段3に記憶される。
次に、ループ内置き換えFF判定手段6は、ループ情報記憶手段3の記憶内容を参照して任意のループを選択し、そのループ内のリセット付きFFを処理の起点として設定する(ステップST21)。例えば、ループSL1が選択されたとすると、図8に示す記憶内容を参照してリセット付きFFであるFF3が始点として設定される。
続いて、ループ内置き換えFF判定手段6は、選択したループの段数が(n+1)以下であるか否かを判定する(ステップST22)。ここでは、説明上有効クロックサイクル数n=2を指定したので、ループの段数が3段以下であるか否かが判定される。なお、ループの段数とは、ループ内に含まれるフリップフロップの数をいう。このとき、ループの段数が(n+1)以下であれば、ステップST32の処理に移行して、ループ情報記憶手段3に記憶される対象回路における次のループを処理対象として設定する。ループの段数が(n+1)を超えている場合、ステップST23の処理に移行する。ループSL1は7段のループであり、3段を超えていることからステップST23の処理に移行することになる。
ステップST23において、ループ内置き換えFF判定手段6は、起点となるFFから(n+1)段目以内にリセット付きFFがあるか否かを判定する。このとき、起点のFFから(n+1)段目以内にリセット付きFFが無い場合、ループ内置き換えFF判定手段6は、(n+1)段目のフリップフロップをリセット付きFFに置き換える(ステップST24)。
また、(n+1)段目以内にリセット付きFFがあれば、ループ内置き換えFF判定手段6は、そのリセット付きFFを処理の起点に設定して(ステップST25)、ステップST26の処理に移行する。ループSL1においては、起点としたFF3から3段目以内にリセット付きFFであるFF4が配置されているので、ループ内置き換えFF判定手段6は、FF4を処理の起点に設定してステップST26の処理に移行する。
ステップST24で(n+1)段目のフリップフロップをリセット付きFFに置き換え処理した後、又はステップST25でリセット付きFFを処理の起点に設定した後、ループ内置き換えFF判定手段6は、起点に設定したリセット付きFFから(n+1)段目以内にリセット付きFFがあるか否かを判定する。このとき、起点のリセット付きFFから(n+1)段目以内にリセット付きFFが無い場合、ループ内置き換えFF判定手段6は、(n+1)段目のフリップフロップをリセット付きFFに置き換える(ステップST27)。
また、(n+1)段目以内にリセット付きFFがあれば、ループ内置き換えFF判定手段6は、そのリセット付きFFを処理の起点に設定して(ステップST28)、ステップST29の処理に移行する。ループSL1において、起点としたFF4から3段目以内にリセット付きFFであるFF5が配置されているので、ループ内置き換えFF判定手段6は、FF5を処理の起点に設定してステップST29の処理に移行する。
ステップST27で(n+1)段目のフリップフロップをリセット付きFFに置き換え処理した後、又はステップST28でリセット付きFFを処理の起点に設定した後、ループ内置き換えFF判定手段6は、起点に設定したリセット付きFFから(n+1)段目以内にリセット付きFFがあるか否かを判定する。
このとき、起点のリセット付きFFから(n+1)段目以内にリセット付きFFが無い場合、ループ内置き換えFF判定手段6は、(n+1)段目のフリップフロップをリセット付きFFに置き換える(ステップST27)。このように、ループ内の起点となるリセット付きFFからリセット期間の有効クロックサイクル数nを超えた位置に存在するリセット無しFFをリセット付きFFに戻すことで、リセット無しFFで不定値が伝播することを防ぐことができる。
また、(n+1)段目以内にリセット付きFFがあれば、ループ内置き換えFF判定手段6は、そのリセット付きFFを処理の起点に設定して(ステップST30)、ステップST31の処理に移行する。ループSL1において、起点としたFF5から3段目以内にリセット付きFFであるFF6が配置されているので、ループ内置き換えFF判定手段6は、FF6を処理の起点に設定してステップST31の処理に移行する。
ループ内置き換えFF判定手段6は、起点に設定したFF6でループが一周したか否かを判定する(ステップST31)。ループが一周していれば、ステップST32に移行して、次のループを処理対象に設定し、ステップST33に移行してステップST21からの処理を繰り返す。一方、ループが一周していなければ、ステップST29に戻って起点に設定したリセット付きFFから(n+1)段目以内にリセット付きFFがあるか判定し、ステップST30及びステップST31の処理を繰り返す。
ここでは、起点としたFF6はループSL1の最後のフリップフロップではないので、ステップST29の処理に戻る。ステップST29において、ループ内置き換えFF判定手段6は、FF6から3段目以内にリセット付きFFがあるか否かを判定する。対象回路100AにおいてFF6から3段目以内にはリセット付きFFがないので、ループ内置き換えFF判定手段6は、ループSL1内でFF6から3段目のフリップフロップであるリセット無しFFのFF2をリセット付きFFに置き換える(ステップST27)。
ステップST27で(n+1)段目のフリップフロップをリセット付きFFに置き換え処理した後、ループ内置き換えFF判定手段6は、起点に設定したリセット付きFFから(n+1)段目以内にリセット付きFFがあるか否かを判定する(ステップST29)。ループSL1において、起点としたFF2から3段目以内にリセット付きFFであるFF3が配置されているので、ループ内置き換えFF判定手段6は、FF3を処理の起点に設定して(ステップST30)、ステップST31の処理に移行する。
ループ内置き換えFF判定手段6は、起点とされたFF3がループSL1で最初に起点にしたFFでありループSL1を一周したことから、ループ情報記憶手段3の記憶内容を参照して次のループを選択し(ステップST32)、ステップST33に移行してステップST21からの処理を繰り返す。ここでは、ステップST21において、ループSL1の次のループSL2が選択され、図8に示す記憶内容が参照されてループSL2内のリセット付きFFであるFF3が始点として設定される。次に、ループ内置き換えFF判定手段6は、選択したループの段数が(n+1)以下であるか否かを判定する(ステップST22)。ここで、ループSL2は3段のループであり、3段に等しく3段以下に該当することからステップST32の処理に移行する。
ステップST32において、ループ内置き換えFF判定手段6は、ループ情報記憶手段3の記憶内容を参照してループSL2の次のループSL3を選択し、ステップST21の処理に戻ってループSL3内のリセット付きFFであるFF6を始点として設定する。続いて、ループ内置き換えFF判定手段6は、選択したループの段数が(n+1)以下であるか否かを判定する(ステップST22)。ここでも、ループSL3が1段のループであり、3段以下であることからステップST32の処理に移行する。
ループ内置き換えFF判定手段6は、ステップST32においてループ情報記憶手段3の記憶内容を参照してループSL3の次のループSL4を選択し、ステップST21の処理に戻ってループSL4内のリセット付きFFであるFF3を始点として設定する。続いて、ループ内置き換えFF判定手段6は、選択したループの段数が(n+1)以下であるか否かを判定する(ステップST22)。ここでも、ループSL4が2段のループであり、3段以下であることからステップST32の処理に移行する。
ステップST32において、ループ内置き換えFF判定手段6は、ループ情報記憶手段3の記憶内容を参照してループSL4の次のループSL5を選択し、ステップST21の処理に戻ってループSL5内のリセット付きFFであるFF11を始点として設定する。続いて、ループ内置き換えFF判定手段6は、選択したループの段数が(n+1)以下であるか否かを判定する(ステップST22)。ここでも、ループSL5が1段のループであり、3段以下であることからステップST32の処理に移行する。
次に、ループ内置き換えFF判定手段6は、ステップST32においてループ情報記憶手段3の記憶内容を参照し、全てのループについて調査したことを確認すると処理を完了する(ステップST34)。
ここまでの動作により、リセット期間中の有効クロックサイクル数としてn=2を指定し、ループ内置き換えFF判定手段6が、対象回路100A中の全てのループ(SL1〜SL5が相当)に対してリセット付きFFへの置き換え処理を施した結果、FF2がリセット付きFFに戻された。
なお、上記の実施形態2では、説明の都合上n=2の場合を例示したが、nに0以上の値を指定した全ての場合にも同様に適用可能である。
以上のように、この実施の形態2によれば、接続先が自分に戻っている状態にあるフリップフロップを検出するループ検出手段2と、検出したループとループに含まれるフリップフロップを記憶するループ情報記憶手段3と、ループ情報記憶手段3から他のループに重ならないフリップフロップのリストを作成するループ判定手段4と、リストに記載されたフリップフロップをループ情報記憶手段3に反映し、リセット期間中の有効クロックサイクル数を指定してFFの置き換え処理を実行するループ内置き換えFF判定手段6とからループ内置き換えFF検出手段1Aを構成したので、リセット期間中の有効クロックサイクル数に上限が有る場合にも、何の弊害も発生させることなく、また不定値が伝搬することなく、容易に、かつ、確実に置き換え可能なフリップフロップを検出することができる。
また、接続先が自分に戻っている状態にあるフリップフロップを検出するループ検出手段2、検出したループとループに含まれるフリップフロップを記憶するループ情報記憶手段3、ループ情報記憶手段3から他のループに重ならないフリップフロップのリストを作成するループ判定手段4、リストに記載されたフリップフロップをループ情報記憶手段3に反映し、リセット期間中の有効クロックサイクル数を指定してFFの置き換え処理を実行するループ内置き換えFF判定手段6としてコンピュータを機能させるためのプログラムによりループ内置き換えFF検出手段1Aを具現化してもよく、同様の効果を得ることができる。
なお、上記実施の形態2では、リセットを非同期リセットの前提でサイクル数をnとしているが、同期リセットの場合はリセットサイクル数をmとし、本明細書に添付した図面並びに本明細書中の文章における全ての(n+1)をmに置き換えることで適用可能である。
実施の形態3.
本実施の形態3は、ループに含まれるフリップフロップ数を基準にループ情報記憶手段の内容を並べ替えるループ並替手段と、並べた順にフリップフロップの置き換え処理を実行するループ内置き換えFF判定手段を付加したものである。
図9は、この発明の実施の形態3によるループ内置き換えFF検出手段の構成を示すブロック図である。実施の形態3のループ内置き換えFF検出手段(置き換え処理手段)1Bは、上記実施の形態1で説明したループ検出手段2、ループ情報記憶手段3及びループ判定手段4に加え、ループ並替手段(並替手段)7及びループ内置き換えFF判定手段(置き換え手段)8を備える。ループ並替手段7は、ループに含まれるフリップフロップ数を基準にループ情報記憶手段3の内容を並べ替える。
ループ内置き換えFF判定手段8は、上記実施の形態2と同様にリストに記載されたフリップフロップをループ情報記憶手段3に反映し、リセット期間中の有効クロックサイクル数nを指定し、ループ並替手段7で並べ替えた順にループを選択してFFの置き換え処理を実行する。例えば、ループ内置き換えFF判定手段8も、リセット期間中の有効クロックサイクル数に応じて置き換えを許容するループ内のFF数及びリセット無しFFの連続した接続段数を規定し、これに従ってFFを置き換える。なお、対象回路には上記実施の形態1で示した対象回路100Aを用いることとし、その図示は省略している。
ループ検出手段2、ループ判定手段4、ループ並替手段7及びループ内置き換えFF判定手段8は、本発明に従う半導体集積回路設計支援プログラムをコンピュータに読み込ませてその動作を制御することにより、CPUやメモリ等のハードウェアと協働した具体的手段として、当該コンピュータ上に実現することができる。また、ループ情報記憶手段3は、半導体集積回路設計支援システムを構成するコンピュータのメモリや外部記憶装置等に構築される。
なお、以下の説明において、本発明の半導体集積回路設計支援システムを具現化するコンピュータ自体の構成及びその基本的な機能については、当業者が当該技術分野の技術常識に基づいて容易に認識できるものであり、本発明の本質に直接関わるものでないので詳細な記載を省略する。
次に動作について説明する。
図10は、実施の形態2による半導体集積回路設計支援システムの動作を示すフローチャートである。ここで、ステップST1からステップST10までの処理は上記実施の形態1と共通であり、同様の処理であることから説明を省略する。また、上記実施の形態2と同様にして、ループ内置き換えFF判定手段8が、ステップST10においてループ内でのリセット無しFFに置き換え可能なリストがループ判定手段4により作成されると、その内容をループ情報記憶手段3に反映させる(ステップST20)。
次に、ループ並替手段7は、ループ情報記憶手段3の記憶内容をループ内のFF数を基準に並べ替える(ステップST40)。具体的には、ループ情報記憶手段3に記憶されたループ判定手段4によるリセット無しFFかリセット付きFFかの判定結果をリンクさせたループ及びループに含まれるフリップフロップの情報に対して、FF置き換え調査の際の検索情報としてループに含まれるフリップフロップ数の情報を付加する。
図11は、ループ並替手段による処理結果を示す図であり、図8中のループ情報記憶手段3の記憶内容に対してループ並替手段7による並べ替え処理を施した結果である。図において、縦の項目がフリップフロップ(FF)番号、横の第1番目の項目がループ内のフリップフロップ数であり、横の第2番目の項目がループ番号である。また、ループに含まれる場合のみ「含まれる」と記載し、含まれない場合は「−」と表記している。さらに、ループSL1〜SL5のいずれかに含まれるフリップフロップについては、ループ判定手段4によるフリップフロップの種類の判定結果を併記している。
ループ及びループに含まれるフリップフロップの情報に対して、ループに含まれるフリップフロップ数の情報を付加することで、後述するフリップフロップの置き換え処理にあたり、置き換え対象となるループを容易に決定することができる。図示の例では、有効クロックサイクル数nが2である場合、ループ段数が3以下となる、FF数が1のループSL3、SL5、FF数が2のループSL4、FF数が3のループSL2は、ループ内置き換えFF判定手段8による、フリップフロップの置き換え処理の対象から外すことができる。
上述のような並べ替え処理が完了すると、ループ内置き換えFF判定手段8は、ループ並替手段7により並べ替えられた、ループ情報記憶手段3の記憶内容を参照し、FF数が(n+2)のループからFF数について昇順にループを処理対象として選択する(ステップST41)。これにより、FF置き換えを行わないFF数が(n+1)のループが処理対象から外され、無駄な処理を行うことがない。図11の例では、ループSL1のみが処理対象として選択される。
以降のステップST23からステップST31までの処理は、上記実施の形態2と同様である。なお、ステップST32において、ループ内置き換えFF判定手段8が、FF数で昇順にループを選ぶ。上述の処理において、上記実施の形態2と同様に有効クロックサイクル数nを2に指定した場合、選択されるループは、(n+2)段、つまり4段以上のループSL1だけとなり、上記実施の形態2と同様にFF2だけがリセット付きFFに戻される。
また、上記の実施形態2では、説明の都合上n=2の場合を例示したが、nに0以上の値を指定した全ての場合にも同様に適用可能である。
以上のように、この実施の形態3によれば、接続先が自分に戻っている状態にあるフリップフロップを検出するループ検出手段2と、検出したループとループに含まれるフリップフロップを記憶するループ情報記憶手段3と、ループ情報記憶手段3から他のループに重ならないフリップフロップのリストを作成するループ判定手段4と、ループに含まれるフリップフロップ数を基準にループ情報記憶手段の内容を並べ替えるループ並替手段7と、リストに記載されたフリップフロップをループ情報記憶手段3に反映し、リセット期間中の有効クロックサイクル数を指定し、ループ並替手段7で並べ替えた順にループを選択してFFの置き換え処理を実行するループ内置き換えFF判定手段8とを備えたので、リセット期間中の有効クロックサイクル数に上限が有る場合に、より少ない実行ステップで、何の弊害も発生させることなく、また不定値が伝搬することなく、容易に、かつ、確実に置き換え可能なフリップフロップを検出することができる。
また、接続先が自分に戻っている状態にあるフリップフロップを検出するループ検出手段2、検出したループとループに含まれるフリップフロップを記憶するループ情報記憶手段3、ループ情報記憶手段3から他のループに重ならないフリップフロップのリストを作成するループ判定手段4、ループに含まれるフリップフロップ数を基準にループ情報記憶手段の内容を並べ替えるループ並替手段7、リストに記載されたフリップフロップをループ情報記憶手段3に反映し、リセット期間中の有効クロックサイクル数を指定し、ループ並替手段7で並べ替えた順にループを選択してFFの置き換え処理を実行するループ内置き換えFF判定手段8としてコンピュータを機能させるためのプログラムによりループ内置き換えFF検出手段1Bを具現化してもよく、同様の効果を得ることができる。
なお、上記実施の形態3では、リセットを非同期リセットの前提でサイクル数をnとしているが、同期リセットの場合はリセットサイクル数をmとし、本明細書に添付した図面並びに本明細書中の文章における全ての(n+1)をmに置き換え、(n+2)をm+1に置き換えることで適用可能である。
1,1A,1B ループ内置き換えFF検出手段(置き換え処理手段)、2 ループ検出手段、3 ループ情報記憶手段(記憶手段)、4 ループ判定手段、5,6,8 ループ内置き換えFF判定手段(置き換え手段)、7 ループ並替手段(並替手段)、100,100A 対象回路、101,102 入力ポート、103,104 出力ポート、105〜114 フリップフロップ(リセット付きFF、FF1〜FF8,FF10,FF11)、105a,106a,111a,113a フリップフロップ(リセット無しFF、FF1,FF2,FF7,FF10)、115〜126 組み合わせ回路(C1〜C12)。