(57)【特許請求の範囲】
【請求項１】
フリップフロップを用いてツリーを作成し前記フリップフロップにより分周化されたクロックにより擬似的に複数クロックの環境を実現する回路設計装置において、
ネットリストとデファイナ信号情報とを参照して、前記ネットリスト中のフリップフロップを、デファイナツリーフリップフロップと、分周化フリップフロップと、通常のフリップフロップとに分類する手段を有する
ことを特徴とする回路設計装置。
【請求項２】
前記フリップフロップを分類する手段は、
前記デファイナ信号情報を基に、デファイナ信号の源泉となるべき端子からファンアウト方向にトレースし、フリップフロップに到達したら、そのフリップフロップをデファイナツリーフリップフロップとしてリストに追加する手段と、
分周比をドライブするゲーティングセルの出力に直接接続されているフリップフロップを取得し、前記分周比をドライブするゲーティングセルに直接接続されているフリップフロップを分周化フリップフロップとして前記リストに追加する手段と、
全てのフリップフロップ群から、既に前記リストに追加されている前記デファイナツリーフリップフロップ及び前記分周化フリップフロップを取り除き、その残りのフリップフロップを通常フリップフロップして前記リストに追加する手段と
を有することを特徴とする請求項１に記載の回路設計装置。
【請求項３】
更に、前記分類したフリップフロップの情報に基づいて、前記分周化フリップフロップとして分類されたフリップフロップの集合を始点及び終点として遅延制約を生成する手段を有することを特徴とする請求項１又は２に記載の回路設計装置。
【請求項４】
更に、前記分類したフリップフロップの情報を基に、前記分周化フリップフロップとそれ以外のフリップフロップとで別系統のスキャンパスを挿入してスキャン化済みネットリストを生成する手段を有することを特徴とする請求項１から３の何れかに記載の回路設計装置。
【請求項５】
更に、前記分類したフリップフロップの情報に基づいて、ハザードチェック対象のフリップフロップを抽出してハザードの有無があるかどうかのチェックを行う手段を有する請求項１から４の何れかに記載の回路設計装置。
【請求項６】
フリップフロップを用いてツリーを作成し前記フリップフロップにより分周化されたクロックにより擬似的に複数クロックの環境を実現する回路設計装置の回路設計方法であって、
前記回路設計装置の分類手段が、ネットリストとデファイナ信号情報とを参照して、前記ネットリスト中のフリップフロップを、デファイナツリーフリップフロップと、分周化フリップフロップと、通常のフリップフロップとに分類する
ことを特徴とする回路設計方法。
【請求項７】
前記フリップフロップを分類する前記回路設計装置の分類手段は、
前記デファイナ信号情報を基に、デファイナ信号の源泉となるべき端子からファンアウト方向にトレースし、フリップフロップに到達したら、そのフリップフロップをデファイナツリーフリップフロップとしてリストに追加し、
分周比をドライブするゲーティングセルの出力に直接接続されているフリップフロップを取得し、前記分周比をドライブするゲーティングセルに直接接続されているフリップフロップを分周化フリップフロップとして前記リストに追加し、
全てのフリップフロップ群から、既に前記リストに追加されている前記デファイナツリーフリップフロップ及び前記分周化フリップフロップを取り除き、その残りのフリップフロップを通常フリップフロップして前記リストに追加する
ことを特徴とする請求項６に記載の回路設計方法。
【請求項８】
更に、前記回路設計装置の遅延制約生成手段が、前記分類したフリップフロップの情報に基づいて、前記分周化フリップフロップとして分類されたフリップフロップの集合を始点及び終点として遅延制約を生成することを特徴とする請求項６又は７に記載の回路設計方法。
【請求項９】
更に、前記回路設計装置のネットリスト生成手段が、前記分類したフリップフロップの情報を基に、前記分周化フリップフロップとそれ以外のフリップフロップとで別系統のスキャンパスを挿入してスキャン化済みネットリストを生成することを特徴とする請求項６から８の何れかに記載の回路設計方法。
【請求項１０】
更に、前記回路設計装置のハザード有無チェック手段が、前記分類したフリップフロップの情報に基づいて、ハザードチェック対象のフリップフロップを抽出してハザードの有無があるかどうかのチェックを行うことを特徴とする請求項６から９の何れかに記載の回路設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フリップフロップを用いたツリーを作成して、擬似的に複数クロックの環境を実現する回路設計装置及び方法に関するもので、特に、その遅延制約問題、テスト時の問題、ハザードチェックの問題の改善に係わる。
【背景技術】
【０００２】
ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）回路の設計方法において、デファイナと呼ばれるクロック相当の信号を導入し、フリップフロップを用いたツリーを作成して、擬似的に複数クロックの環境を実現する設計方法がある。このようなデファイナ設計方法は、例えばクロックメッシュが２系統張れないような場合のように、複数クロックの設計を行いたいが物理的制限等により複数クロックが導入できない場合に、クロックバッファやクロックツリーを用いたいわゆるＣＴＳ（Ｃｌｏｃｋ  Ｔｒｅｅ  Ｓｙｎｔｈｅｓｉｓ：クロックツリー合成）よりも簡単に複数クロックを導入できる。
【０００３】
また、ＬＳＩ回路の回路設計を行う場合、特許文献１に示されるように、クロックの遅延のバラツキが問題となる。このようなフリップフロップをツリー状にして擬似的に複数クロックの環境を実現するデファイナ設計は、フリップフロップを用いて信号を分配することでデファイナ信号のフリップフロップへの到達時間のバラツキを抑える効果がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−２８４０７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところが、このようなデファイナ設計では、一つのユニット内にデファイナを分配するデファイナツリーフリップフロップと、デファイナで駆動される分周化フリップフロップと、デファイナとは無関係の通常フリップフロップが混在することになる。これにより、以下に述べるように、遅延制約、非同期設計、テスト等の処理が複雑になるという問題が生じる。
【０００６】
すなわち、先ず、分周化されるフリップフロップについては、全て手動でマルチサイクルパスの制約を与える必要がある。従来はＲＴＬ作成時に命名規則を与え、その名前を元に制約を付与していたが、この方法ではＲＴＬ作成時の命名規則遵守漏れ、及び遅延制約作成時の漏れなど人為的ミスが多発し、大きな設計後戻りを引き起こす。
【０００７】
また、分周化されたフリップフロップは、外部のクロックを直接入力することができないため、テスト時に分周化されるフリップフロップを非スキャンとするか、若しくはバイパス論理を組み込む必要がある。前者は検出率の低下につながり、後者は回路量オーバヘッドにつながる。
【０００８】
更に、デファイナツリーフリップフロップと通常フリップフロップが交じり合うような非同期パスを設計者が常に意識し、論理合成で意図したとおりの回路が合成されているかチェックする必要がある。しかしながら、デファイナ設計の場合はこうした非同期パスが比較的多く存在するため、その全てを網羅的にリストアップし、チェックするのは非常に困難である。したがって、チェック漏れも発生しやすく、万一、ハザードが発生するような回路をそのまま後工程に流してしまった場合、グリッジノイズにより実機が誤動作する可能性がある。
【０００９】
上述の課題を鑑み、本発明は、デファイナ設計によりフリップフロップにより分周化されたクロックを用いた回路設計で、遅延制約問題、テスト時の問題、及びハザードチェックの問題を改善できるようにした回路設計装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述の課題を解決するために、本発明は、フリップフロップを用いてツリーを作成しフリップフロップにより分周化されたクロックにより擬似的に複数クロックの環境を実現する回路設計装置において、ネットリストとデファイナ信号情報とを参照して、ネットリスト中のフリップフロップを、デファイナツリーフリップフロップと、分周化フリップフロップと、通常のフリップフロップとに分類する手段を有することを特徴とする。
【００１１】
本発明は、フリップフロップを用いてツリーを作成しフリップフロップにより分周化されたクロックにより擬似的に複数クロックの環境を実現する回路設計装置の回路設計方法であって、前記回路設計装置の分類手段が、ネットリストとデファイナ信号情報とを参照して、前記ネットリスト中のフリップフロップを、デファイナツリーフリップフロップと、分周化フリップフロップと、通常のフリップフロップとに分類することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、デファイナ設計によりフリップフロップにより分周化されたクロックを用いた回路設計を行う場合に、ネットリスト内のフリップフロップを、デファイナツリーフリップフロップと、分周化フリップフロップと、その他の通常のフリップフロップとに分類し、分類したフリップフロップの情報に基づいて、遅延制約の生成し、スキャンパスの挿入、ハザードチェック対象のフリップフロップの抽出を行うようにしている。これにより、遅延制約問題、テスト時の問題、ハザードチェックの問題を改善することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施形態の回路設計装置の全体的なシステム構成を示すブロック図である。
【図２】本発明の第１の実施形態におけるデファイナ記述を含むＲＴＬの記述例の説明図である。
【図３】本発明の第１の実施形態におけるデファイナ記述のＲＴＬを論理合成してできる回路の説明に用いるブロック図である。
【図４】本発明の第１の実施形態におけるネットリストの具体例を示すブロック図である。
【図５】本発明の第１の実施形態におけるフリップフロップの分類処理の説明に用いるフローチャートである。
【図６】本発明の第１の実施形態におけるデファイナ信号情報の説明図である。
【図７】本発明の第１の実施形態におけるＦＦカテゴリリストの説明図である。
【図８】本発明の第１の実施形態における遅延制約の説明図である。
【図９】本発明の第１の実施形態におけるスキャン化済みネットリストの具体例を示すブロック図である。
【図１０】本発明の第１の実施形態における最適化済みネットリストの具体例を示すブロック図である。
【図１１】本発明の第１の実施形態におけるハザードレポートの具体例の説明図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について図面を参照しながら説明する。図１を参照すると、本発明の実施の形態の全体的なシステムは、データ処理装置１と記憶装置２とで構成される。
【００１５】
データ処理装置１は、合成部１１と、トレース部１２と、遅延制約生成部１３と、スキャン回路生成部１４と、最適化部１５と、ハザードチェック部１６とで構成される。
【００１６】
合成部１１は、ＶｅｒｉｌｏｇやＶＨＤＬのようなハードウェア記述言語（ＨＤＬ）で記述されたＲＴＬ（Ｒｅｇｉｓｔｅｒ  ｔｒａｎｓｆｅｒ  ｌｅｖｅｌ）２１を読み込み、それをネットリスト２２に変換する。このとき、各種制約による最適化は後工程で行うので、ここでは特に強力な論理最適化は行わない。勿論、このときに最適化を行うようにしてもよい。
【００１７】
トレース部１２は、ネットリスト２２とデファイナ信号情報２３を参照して、ネットリスト２２の内部をトレースし、ＦＦカテゴライズリスト２４を出力する。ＦＦカテゴライズリスト２４は、ネットリスト２２内のフリップフロップを、デファイナツリーフリップフロップと、分周化フリップフロップと、その他の通常のフリップフロップとに分類したテーブルである。このときのフリップフロップの分類処理は、以下の通りである。
【００１８】
トレース部１２は、最初にデファイナ信号情報２３を基に、ネットリスト２２中の入力端子のうち、デファイナ信号の源泉となるべき端子を抽出し、この源泉となる端子からファンアウト方向にトレースし、フリップフロップに到達した時点で、そのフリップフロップをデファイナツリーフリップフロップとして、ＦＦカテゴライズリスト２４に追加する。そして、トレース部１２は、分周比をドライブするゲーティングセルの出力に直接接続されている１段目のフリップフロップを取得し、この分周比をドライブするゲーティングセルに直接接続されているフリップフロップを分周化フリップフロップとしてＦＦカテゴライズリスト２４に追加する。更に、トレース部１２は、全てのフリップフロップ群から、既にＦＦカテゴライズリスト２４に追加されているデファイナツリーフリップフロップ及び分周化フリップフロップを取り除き、その残りのフリップフロップを通常フリップフロップしてＦＦカテゴライズリスト２４に追加する。
【００１９】
遅延制約生成部１３は、ＦＦカテゴライズリスト２４の情報に基づいて、デファイナの組み込まれた回路向けの遅延制約情報２５を生成する。遅延制約生成部１３は、分周化フリップフロップの全集合を始点及び終点としたマルチサイクルを設定する。
【００２０】
スキャン回路生成部１４は、ＦＦカテゴライズリスト２４とネットリスト２２を入力として、分周化フリップフロップとそれ以外のフリップフロップで別系統のスキャンを挿入したスキャン化済みネットリスト２６を出力する。ここでは分周化フリップフロップと、それ以外のフリップフロップとの２系統のスキャンパスを挿入している。分周化フリップフロップ内のスキャン接続順、及び分周化フリップフロップ以外のフリップフロップ内のスキャン接続順は任意である。
【００２１】
最適化部１５は、遅延制約情報２５及びスキャン化済みネットリスト２６を入力し、このネットリストに対して論理的な最適化を行って、遅延制約、回路設計制約を満たすような回路を作成し、最適化済みネットリスト２７として出力する。
【００２２】
ハザードチェック部１６は、ＦＦカテゴライズリスト２４及び最適化済みネットリスト２７を入力し、ＦＦカテゴライズリスト２４からハザードチェック対象のフリップフロップを抽出した上で、最適化済みネットリスト２７に対してハザードの有無があるかどうかのチェックを行い、その結果をハザードレポート２８として出力する。
【００２３】
一方、記憶装置２は、ＲＴＬ２１と、ネットリスト２２と、デファイナ信号情報２３と、ＦＦカテゴライズリスト２４と、遅延制約情報２５と、スキャン化済みネットリスト２６と、最適化済みネットリスト２７と、ハザードレポート２８とで構成される。
【００２４】
ＲＴＬ２１は、デジタル回路を、ｖｅｒｉｌｏｇやＶＨＤＬといったハードウェア記述言語によって記述したものである。
【００２５】
ネットリスト２２は、合成部１１がＲＴＬ２１を論理素子によるゲート記述に変換したものである。この時点では論理最適化は行われていない。ネットリスト２２は、具体的には例えばＧａｔｅ−Ｖｅｒｉｌｏｇにて表現される。
【００２６】
デファイナ信号情報２３は、ネットリスト２２におけるデファイナ信号の名前である。ネットリスト２２に存在する入力ポートの一つと合致する。
【００２７】
ＦＦカテゴライズリスト２４は、トレース部１２が、ネットリスト２２とデファイナ信号情報２３を基に、ネットリスト２２における全フリップフロップを、デファイナツリーフリップフロップ、分周化フリップフロップ、通常フリップフロップの３種類に分類したテーブルを保持している。具体的には、ＦＦカテゴライズリスト２４は、各カテゴリに属するフリップフロップの名前一覧を保持する。
【００２８】
遅延制約情報２５は、デファイナ設計をするための遅延制約を保持している。遅延制約は例えば標準的なＳＤＣ（Ｓｙｎｏｐｓｙｓ  Ｄｅｓｉｇｎ  Ｃｏｎｓｔｒａｉｎｔｓ）によって記述されている。
【００２９】
スキャン化済みネットリスト２６は、ネットリスト２２がスキャン回路生成部１４によってスキャン化された回路である。具体的には、分周化フリップフロップとそれ以外のフリップフロップの２系統の経路を有している。このようにスキャン経路を分割することにより、分周化フリップフロップに対してのテストが容易となる。
【００３０】
最適化済みネットリスト２７は、最適化部１５が、遅延制約情報２５を満たすようにスキャン化済みネットリストを論理最適化したものである。この論理最適化により、分周化フリップフロップ間は分周化されたクロック周期で、それ以外のフリップフロップ間は通常の１サイクル周期での論理最適化が行われる。
【００３１】
ハザードレポート２８は、最適化済みネットリスト２７に対して、ハザードチェック部１６がＦＦカテゴライズリスト２４からハザードチェック対象フリップフロップをリストアップし、その各々に対してハザードチェックを行った結果である。
【００３２】
次に、本発明の第１の実施形態の動作について説明する。最初に、設計者がＲＴＬ２１を作成する。ＲＴＬ２１は、ＶｅｒｉｌｏｇやＶＨＤＬのようなハードウェア記述言語で記述される。このＲＴＬ２１に、例えば図２に示すようなデファイナの記述が含まれているとする。
【００３３】
図２は、Ｖｅｒｉｌｏｇでの記述例であり、図２では、端子に対して、クロック信号である”ＸＸＣＬＫ２Ｇ”と、デファイナ信号である”ＸＸＤＥＦ１Ｇ”が入力されており、デファイナ信号がイネーブル状態のときのみ、クロック信号を各フリップフロップに伝えるような回路記述となっている。これにより、クロック信号を任意の周期で分周することが可能となる。このＲＴＬ２１に対して、合成部１１が論理合成を行い、ネットリスト２２を出力する。
【００３４】
図３は、このようなデファイナ記述のＲＴＬを論理合成してできる回路の例である。図３において、Ｒｘが分周化フリップフロップ、Ｇｘがインテグレーテッド・ゲーティングセルである。図３に示すように、ネットリスト２２では、デファイナ周辺はインテグレーテッド・ゲーティングセルＧｘにより実現されている。インテグレーテッド・ゲーティングセルＧｘは、一般的にラッチ及びＡＮＤゲートで構成されており、イネーブル信号、クロック信号のＡＮＤ論理をとることで、イネーブル信号が真のときのみ、クロック信号を伝達する役割を担う。図３に示すように、分周化フリップフロップＲｘは、必ず、インテグレーテッド・ゲーティングセルＧｘに接続されている。また、デファイナ信号によって駆動されるフリップフロップＲｘ間は、マルチサイクルパスとなる。
【００３５】
図４は、ネットリスト２２の具体例を示すものである。図４において、Ｒ１〜ＲＢがフリップフロップ、Ｇ１〜Ｇ５がインテグレーテッド・ゲーティングセルである。デファイナ信号は、フリップフロップＲ１、Ｒ２、Ｒ３によって、デファイナで駆動されるフリップフロップＲ４、Ｒ５、Ｒ６、Ｒ７に分配される。通常、電気回路のデザインルールを満たすために、デファイナ信号はこのようにしてフリップフロップのツリーで分配される。例えば、フリップフロップＲ４は、インテグレーテッド・ゲーティングセルＧ１により駆動されるフリップフロップである。
【００３６】
また、図４において、フリップフロップＲ８、Ｒ９、ＲＡ、ＲＢは、デファイナと無関係のフリップフロップである。これらのフリップフロップのうち、フリップフロップＲＡはインテグレーテッド・ゲーティングセルＧ５によって駆動されているが、これはデファイナ信号で駆動されているのではなく、通常のクロックゲーティングが行われた結果として発生している。
【００３７】
次にトレース部１２が、ネットリスト２２とデファイナ信号情報２３を入力として、フリップフロップを分類する処理を説明する。
【００３８】
図５は、トレース部１２がフリップフロップを分類する処理を示すフローチャートである。図５において、トレース部１２は、最初にデファイナ信号情報２３を基に、ネットリスト２２中の入力端子のうち、デファイナ信号の源泉となるべき端子を抽出し（ステップＳ１）、源泉となる端子から、ファンアウト方向にトレースし（ステップＳ２）、フリップフロップに到達したかどうかを判定する（ステップＳ３）。そして、トレース部１２は、フリップフロップに到達したら、そのフリップフロップをデファイナツリーＦＦとして、ＦＦカテゴライズリスト２４に追加する（ステップＳ４）。このファンアウト方向のトレースは、ゲーティングセルに到達するまで行われ（ステップＳ５）、ゲーティングセルに到達したら、トレース部１２は、トレースを終了する。
【００３９】
トレース部１２は、このようなトレースを行うことで、分周化フリップフロップをドライブするゲーティングセルだけを抽出できる。トレース部１２は、分周化フリップフロップをドライブするゲーティングセルをＦＦカテゴライズリスト２４に追加する（ステップＳ６）。そして、トレース部１２は、ＦＦカテゴライズリスト２４に追加されたゲーティングセルを一つ一つ取り出し、分周比をドライブするゲーティングセルの出力に直接接続している１段目のフリップフロップを取得し（ステップＳ７）、そのフリップフロップを分周化フリップフロップとしてＦＦカテゴライズリスト２４に追加する（ステップＳ８）。これは、分周化フリップフロップは必ずゲーティングセルの１段目のフリップフロップとして接続されるというデファイナ設計のルールに基づいている（図３参照）。
【００４０】
次にトレース部１２は、ネットリスト２２中の全てのフリップフロップを取得し（ステップＳ９）、全てのフリップフロップから、既にＦＦカテゴライズリスト２４に追加されているデファイナツリーフリップフロップ及び分周化ＦＦを取り除き、その残りを通常フリップフロップしてＦＦカテゴライズリスト２４に追加する（ステップＳ１０）。そして、トレース部１２は、これらの処理が終了すると、ＦＦカテゴライズリスト２４を出力する。
【００４１】
例えば、ネットリスト２２が図４に示すように構成され、デファイナ信号情報２３が図６に示すように定義されていたとする。図６ではデファイナ信号の端子名が”ＤＥＦ”であることを示している。この場合のフリップフロップのカテゴライズ処理について説明する。
【００４２】
トレース部１２は、最初に、デファイナ信号情報２３に記述された”ＤＥＦ”という端子から、インテグレーテッド・ゲーティングセルに達するまで回路をファンアウト方向にトレースし、トレース途中に通過したフリップフロップをデファイナツリーフリップフロップとする。図４では、”ＤＥＦ”という端子からファンアウト方向にトレースすると、最初にフリップフロップＲ１、次にフリップフロップＲ２、フリップフロップＲ３へとトレースが到達するが、フリップフロップＲ２及びＲ３の先には、インテグレーテッド・ゲーティングセルＧ１、Ｇ２、及び、Ｇ３、Ｇ４が存在しているので、そこでトレースを終了し、フリップフロップＲ１、Ｒ２、Ｒ３をデファイナツリーフリップフロップとして、ＦＦカテゴライズリスト２４に登録する（ステップＳ１〜Ｓ５）。
【００４３】
次に、トレース部１２は、トレースにて取得したインテグレーテッド・ゲーティングセルＧ１、Ｇ２、Ｇ３、Ｇ４から、ファンアウト方向に１段フリップフロップをトレースし、取得したものを分周化フリップフロップとして、ＦＦカテゴライズリスト２４に登録する。具体的には、フリップフロップＲ４、Ｒ５、Ｒ６、Ｒ７が分周化フリップフロップに該当する（ステップＳ６〜Ｓ７）。
【００４４】
最後に、トレース部１２は、フリップフロップの全体集合（フリップフロップＲ１〜ＲＢ）から、デファイナツリーフリップフロップ（フリップフロップＲ１、Ｒ２、Ｒ３）、分周化フリップフロップ（フリップフロップＲ４、Ｒ５、Ｒ６、Ｒ７）の集合を引くことによって、通常フリップフロップを抽出して、ＦＦカテゴライズリスト２４に登録する。具体的には、フリップフロップＲ８、Ｒ９、ＲＡ、ＲＢが通常フリップフロップとなる（ステップＳ８〜Ｓ１１）。
【００４５】
図７は、トレースが終わった後のＦＦカテゴライズリスト２４を示すものである。この例では、デファイナツリーフリップフロップとしてフリップフロップＲ１、Ｒ２、Ｒ３がリストアップされ、分周比フリップフロップとしてフリップフロップＲ４、Ｒ５、Ｒ６、Ｒ７がリストアップされ、通常フリップフロップとしてフリップフロップＲ８、Ｒ９、ＲＡ、ＲＢがリストアップされている。
【００４６】
次に遅延制約生成部１３が、ＦＦカテゴライズリスト２４を入力して、遅延制約情報２５を生成する過程を説明する。
【００４７】
遅延制約は、分周化フリップフロップ間のみがクロックの定数倍の周期になるため、ＦＦカテゴライズリスト２４を利用して、始点を全分周化フリップフロップの集合とし、終点も全分周化フリップフロップの集合とすればよい。これを例えばＳｙｎｏｐｓｙｓ  Ｄｅｓｉｇｎ  Ｃｏｎｓｔｒａｉｎｔｓのフォーマットで記述すると、図８に示すようになる。このように一括して指定するやり方は簡素ではあるが、実際は存在しないパスにも制約を当てようとしてしまうため、そうした指定が冗長であったり、許されない場合は、ネットリスト２２を参照しつつ、実際には存在しないパスを削除する方法もある。
【００４８】
次にスキャン回路生成部１４が、ネットリスト２２とＦＦカテゴライズリスト２４を入力して、スキャン化済みネットリスト２６を生成する過程を説明する。
【００４９】
スキャン経路は、分周化フリップフロップと、それ以外のフリップフロップで２系統に分ける必要がある。これは分周化フリップフロップのクロックはデファイナツリーフリップフロップを経由して分配されており、直接外部テスタで操作できないためである。
【００５０】
そこで、スキャン回路生成部１４は、ＦＦカテゴライズリスト２４を参照して、デファイナツリーフリップフロップ及び通常フリップフロップで構成されたスキャン経路と、分周化フリップフロップのみで構成されたスキャン経路を構築する。
【００５１】
図９は、このようにして構築されたスキャン化済みネットリスト２６の具体例を示すものである。図９において、スキャン経路ＳＣＡＮ１はデファイナツリーフリップフロップ及び通常フリップフロップで構成されたスキャン経路であり、スキャン経路ＳＣＡＮ２は分周化フリップフロップのみで構成されたスキャン経路である。図９から、分周化フリップフロップ（フリップフロップＲ４、Ｒ５、Ｒ６、Ｒ７）と、それ以外のフリップフロップ（フリップフロップＲ１、Ｒ２、Ｒ３、Ｒ８、Ｒ９、ＲＡ、ＲＢ）で、別系統のスキャン経路が張られていることが分かる。
【００５２】
次に最適化部１５が、遅延制約情報２５とスキャン化済みネットリスト２６を入力して、最適化済みネットリスト２７を生成する。ここでの論理最適化手法については、この変換方法については、「ＢｏｏｌｅＤｏｚｅｒ：Ｌｏｇｉｃ  ｓｙｎｔｈｅｓｉｓ  ｆｏｒ  ＡＳＩＣｓ，ＩＢＭ  Ｊｏｕｒｎａｌ  ｏｆ  Ｒ＆Ｄ，Ｆｅｂｒｕａｒｙ  ６  １９９６  Ａ．Ｊ．Ｓｕｌｌｉａｖａｎ等著」に記載されている。これにより、分周化フリップフロップ間は正しく遅延制約（クロック周期）が通常フリップフロップ間の定数倍された状態で駆動されるように最適化される。
【００５３】
最後にハザードチェック部１６が最適化済みネットリスト２７とＦＦカテゴライズリスト２４を入力して、ハザードレポート２８を出力する。ここで、ＦＦカテゴライズリスト２４が図７に示すようなものであり、最適化済みネットリスト２７が図１０に示すようなものであったとする。
【００５４】
スタティックハザードは、１Ｔパスと非同期パス（ここではマルチサイクルパス）が混在して非同期パスの終点フリップフロップに入る回路で発生する可能性がある。この考え方を分周化された回路へと当てはめると、分周化フリップフロップ（フリップフロップＲ４、Ｒ５、Ｒ６、Ｒ７）のうち、その入力に分周化フリップフロップ及び通常フリップフロップ（又はデファイナツリーフリップフロップ）が混在するパスが、ハザードチェックの対象となるフリップフロップとなる。
【００５５】
ここで図６を参照すると、フリップフロップＲ４、Ｒ５、Ｒ６、Ｒ７が分周化フリップフロップである。これらについてそれぞれ図１０での接続を見てみると、フリップフロップＲ４の入力は、フリップフロップＲＡ、ＲＢであり、これらはどちらも通常フリップフロップであり、チェック対象外のフリップフロップであることが分かる。次にフリップフロップＲ５の入力はフリップフロップＲＢのみであり、これもチェック対象外フリップフロップとなる。次にフリップフロップＲ６の入力はフリップフロップＲ４、Ｒ８であり、通常フリップフロップと分周化フリップフロップとが混在しているフリップフロップであり、このフリップフロップＲ６がハザードチェック対象のフリップフロップの一つである。次にフリップフロップＲ７の入力はフリップフロップＲ４、Ｒ５であり、これらは両方とも分周化フリップフロップＦＦであるので、チェック対象外のフリップフロップとなる。したがって、ハザードチェックを行うべきフリップフロップは、フリップフロップＲ６のみとなる。
【００５６】
そこで、ハザードチェック部１６は、フリップフロップＲ６に対してのみハザードチェックを行い、ハザードレポート２８を出力する。ハザードチェック方法については、例えば特願２００８−３０４０９９号公報等に記載されているものを用いることができる。ハザードチェックの結果、フリップフロップＲ６について問題がなければ、図１１に示すように、ハザードチェックが問題ないことを示しハザードレポートが出力される。
【００５７】
以上説明したように、本発明の実施の形態では、デファイナ設計によりフリップフロップにより分周化されたクロックを用いた回路設計を行う場合に、トレース部１２により、ネットリスト２２内のフリップフロップが、デファイナツリーフリップフロップと、分周化フリップフロップと、その他の通常のフリップフロップとに分類される。このように、フリップフロップを分類することにより、以下のように、遅延制約問題、テスト時の問題、ハザードチェックの問題が改善できる。
【００５８】
すなわち、本発明の実施の形態では、分類したフリップフロップの情報に基づいて、分周化フリップフロップとして分類されたフリップフロップの全集合を始点及び終点として遅延制約を生成することで、デファイナ回路設計時に分周化されたフリップフロップに対して手動で遅延制約を与える必要がなくなり、設計者の工数を削減できるとともに、人為的ミスの混入による設計後戻りを防止できる。
【００５９】
また、分類したフリップフロップの情報を基に、分周化フリップフロップとそれ以外のフリップフロップとで別系統のスキャンパスを挿入して、スキャン化済みネットリストを生成することで、従来は非スキャン化していた分周化フリップフロップを含めてフルスキャンできるため、検出率の向上につながる。
【００６０】
また、分類したフリップフロップの情報に基づいて、ハザードチェック対象のフリップフロップを抽出し、ハザードの有無があるかどうかのチェックを行うことで、ハザードチェックすべきフリップフロップが自動で抽出され、従来のチェック対象フリップフロップを手動で抽出するという作業がなくなり、工数削減につながる。また、網羅的にチェックが行われるため、人為的ミスによるチェック漏れがなくなり、結果として実機におけるスタティックハザードによる誤動作を防止できる。
【００６１】
本発明は、上述した実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【符号の説明】
【００６２】
１：データ処理装置
２：記憶装置
１１：合成部
１２：トレース部
１３：遅延制約生成部
１４：スキャン回路生成部
１５：最適化部
１６：ハザードチェック部
２１：ＲＴＬ
２２：ネットリスト
２３：デファイナ信号情報
２４：カテゴライズリスト
２５：遅延制約情報
２６：スキャン化済みネットリスト
２７：最適化済みネットリスト
２８：ハザードレポート
【図１】
0005440094.tif 000002
【図２】
0005440094.tif 000003
【図３】
0005440094.tif 000004
【図４】
0005440094.tif 000005
【図５】
0005440094.tif 000006
【図６】
0005440094.tif 000007
【図７】
0005440094.tif 000008
【図８】
0005440094.tif 000009
【図９】
0005440094.tif 000010
【図１０】
0005440094.tif 000011
【図１１】
0005440094.tif 000012