(57)【要約】【課題】機能検証を高速化できる半導体集積回路の検証装置を提供する。【解決手段】検証対象回路３のネットリスト１及びタイミング制約ファイル２から、前記検証対象回路における周期が異なる複数のクロックの周期情報を抽出するクロック周期抽出部１１と、前記複数のクロックの周期の最小公倍数を算出し、この最小公倍数に含まれる各クロックのサイクル数を求めて基本クロック波形を生成する基本クロック波形生成部１２と、前記基本クロック波形における各クロックの立ち上がりイベント及び立ち下がりイベントの発生時間を算出するクロックエッジリスト作成部１３と、各クロックのイベントを前記発生時間順にハードウェアシステムクロックの立ち上がりに割り当てて、各クロックに対応した検証用クロックを生成するクロック生成回路の回路記述を作成する回路記述作成部１４と、を備える。【選択図】図１
2009198288.tif 000002
【特許請求の範囲】
【請求項１】
検証対象回路のネットリスト及びタイミング制約ファイルから、前記検証対象回路における周期が異なる複数のクロックの周期情報を抽出するクロック周期抽出部と、
前記複数のクロックの周期の最小公倍数を算出し、この最小公倍数に含まれる各クロックのサイクル数を求めて基本クロック波形を生成する基本クロック波形生成部と、
前記基本クロック波形における各クロックの立ち上がりイベント及び立ち下がりイベントの発生時間を算出するクロックエッジリスト作成部と、
各クロックのイベントを前記発生時間順にハードウェアシステムクロックの立ち上がりに連続して割り当てて、各クロックに対応した検証用クロックを生成するクロック生成回路の回路記述を作成する回路記述作成部と、
を備える半導体集積回路の検証装置。
【請求項２】
前記ネットリストから前記検証対象回路がクロックの立ち上がり又は立ち下がりのいずれか一方にのみ同期して動作する回路か否か判定し、いずれか一方にのみ同期して動作すると判定した場合は圧縮制御信号を出力する動作クロック極性判定部をさらに備え、
前記回路記述作成部は前記圧縮制御信号に基づいて、第１のクロックの立ち上がりイベントと第２のクロックの立ち下がりイベントが連続して発生する場合は、これら２つのイベントを前記ハードウェアシステムクロックの同じ立ち上がりに割り当てることを特徴とする請求項１に記載の半導体集積回路の検証装置。
【請求項３】
検証対象回路のネットリスト及びタイミング制約ファイルから、前記検証対象回路における周期が異なる複数のクロックの周期情報を抽出するクロック周期抽出部と、
前記複数のクロックの周期の最小公倍数を算出し、この最小公倍数に含まれる各クロックのサイクル数を求めて基本クロック波形を生成する基本クロック波形生成部と、
前記基本クロック波形における各クロックの立ち上がりイベント及び立ち下がりイベントの発生時間を算出するクロックエッジリスト作成部と、
各クロックのイベントを前記発生時間順にハードウェアシステムクロックの立ち上がり及び立ち下がりに連続して割り当てて、各クロックに対応した検証用クロックを生成するクロック生成回路の回路記述を作成する回路記述作成部と、
を備える半導体集積回路の検証装置。
【請求項４】
前記ネットリストから前記検証対象回路がクロックの立ち上がり又は立ち下がりのいずれか一方にのみ同期して動作する回路か否か判定し、いずれか一方にのみ同期して動作すると判定した場合は圧縮制御信号を出力する動作クロック極性判定部をさらに備え、
前記回路記述作成部は前記圧縮制御信号に基づいて、第１のクロックの立ち上がりイベントと第２のクロックの立ち下がりイベントが連続して発生する場合は、これら２つのイベントを前記ハードウェアシステムクロックの同じ立ち上がり又は立ち下がりに割り当てることを特徴とする請求項３に記載の半導体集積回路の検証装置。
【請求項５】
前記回路記述作成部により作成された前記回路記述に基づいて論理合成されたクロック生成回路と、
前記クロック生成回路の前記検証用クロック生成開始のタイミング制御と、前記検証対象回路へのテストパターン信号の出力と、前記検証対象回路が前記テストパターン信号の入力に基づいて生成した信号と期待値データとの比較と、を行うテストベンチ回路と、
をさらに備えることを特徴とする請求項１乃至４に記載の半導体集積回路の検証装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の検証装置に関するものである。
【背景技術】
【０００２】
半導体集積回路の設計工程では、論理シミュレーションなどを用いて検査用のテストパターンを実行し、その時に出力される回路上のメモリの値や回路上の各信号の挙動を観測することによって、仕様書通りの設計が行われているか検査される。
【０００３】
近年のＬＳＩの大規模化、複雑化により、検査対象の半導体集積回路が論理シミュレーションで取り扱える範囲を超えてしまっている。そのため一般的に機能検証とタイミング検証とが分けて行われている。
【０００４】
回路全体が同一周期のクロックで動作する場合は、スタティック・タイミング・アナライザ（以下、ＳＴＡ）によってタイミングの検証を行うことが出来る。しかし、回路の一部に異なる周期で動作する回路が存在した場合、同一周期で動作する部分のみに着目すればＳＴＡでのタイミング検証は可能であるが、異なる周期間の回路では回路の受け渡し部に遅延が発生するため、ＳＴＡで検証することが出来ない。
【０００５】
そのため、回路の一部に異なる周期で動作する回路が存在する場合は、遅延付きのダイナミック・シミュレーションにて検証を行う必要が出てくる。だが前述した通り、検査対象の半導体集積回路は論理シミュレーションで取り扱える規模を超えており、計算機のメモリが足りずに処理を行うことが出来ない、もしくは処理出来たとしても膨大な時間を要してしまうために、ソフトウェアでは現実的な処理時間で検証を終えることが出来ない。
【０００６】
そこで、動作結果を速く得るために、論理回路部分にハードウェア化できるＦＰＧＡ（Field Programmable Gate Array）などの部品を使用することが提案されている（例えば特許文献１参照）。ハードウェアを用いることで、ソフトウェア・シミュレーションと比較して、高速に処理ができるため、異なる周期で動作する回路の検証も高速に行うことが可能となる。
【０００７】
ＦＰＧＡに対してクロックを生成する場合、ＦＰＧＡのシステムクロックの立ち上がりに同期してクロックエッジを発生させることが一般的である。周期の異なるクロックを生成する場合は、クロックの位相関係を維持するために、全クロック周期の最小公倍数を元に新たなクロックを生成することになる。
【０００８】
例えば、周波数５０ＭＨｚ（周期２０ｎｓ）のクロックＡと、周波数４０ＭＨｚ（周期２５ｎｓ）のクロックＢの２つのクロックがある場合、クロック周期の最小公倍数は１００ｎｓとなる。この１００ｎｓにはクロックＡが５周期、クロックＢが４周期含まれる。つまり、クロックＡはシステムクロックの４サイクル毎にクロックエッジを変化させ、クロックＢはシステムクロックの５サイクル毎にクロックエッジを変化させるようにして、クロック生成を行う。言い換えれば、クロック周期に比例したシステムクロックサイクル数でクロックエッジを変化させて検証対象の回路に与えるクロックの生成を行う。
【０００９】
ここで、周波数４０ＭＨｚのクロックＢに対応するクロックの生成では、システムクロックの５サイクル毎にクロックエッジを変化させるため、その倍の１０サイクルで１周期（サイクル）を表すということになる。つまり、システムクロックと比較すると１０倍遅い周期で検証対象回路を動作させることになる。
【００１０】
このように、従来のＦＰＧＡ等のハードウェアを用いた回路検証では、非同期クロック（周期が異なるクロック）を生成する際に、クロック周期に比例したシステムクロックサイクル数でクロックエッジを変化させているために、動作速度、機能検証の高速化の妨げになるという問題を有していた。
【特許文献１】特開２０００−１８１５６６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明は機能検証を高速化できる半導体集積回路の検証装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の一態様による半導体集積回路の検証装置は、検証対象回路のネットリスト及びタイミング制約ファイルから、前記検証対象回路における周期が異なる複数のクロックの周期情報を抽出するクロック周期抽出部と、前記複数のクロックの周期の最小公倍数を算出し、この最小公倍数に含まれる各クロックのサイクル数を求めて基本クロック波形を生成する基本クロック波形生成部と、前記基本クロック波形における各クロックの立ち上がりイベント及び立ち下がりイベントの発生時間を算出するクロックエッジリスト作成部と、各クロックのイベントを前記発生時間順にハードウェアシステムクロックの立ち上がりに連続して割り当てて、各クロックに対応した検証用クロックを生成するクロック生成回路の回路記述を作成する回路記述作成部と、を備えるものである。
【００１３】
また、本発明の一態様による半導体集積回路の検証装置は、検証対象回路のネットリスト及びタイミング制約ファイルから、前記検証対象回路における周期が異なる複数のクロックの周期情報を抽出するクロック周期抽出部と、前記複数のクロックの周期の最小公倍数を算出し、この最小公倍数に含まれる各クロックのサイクル数を求めて基本クロック波形を生成する基本クロック波形生成部と、前記基本クロック波形における各クロックの立ち上がりイベント及び立ち下がりイベントの発生時間を算出するクロックエッジリスト作成部と、各クロックのイベントを前記発生時間順にハードウェアシステムクロックの立ち上がり及び立ち下がりに連続して割り当てて、各クロックに対応した検証用クロックを生成するクロック生成回路の回路記述を作成する回路記述作成部と、を備えるものである。
【発明の効果】
【００１４】
本発明によれば、機能検証を高速化できる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を図面に基づいて説明する。
【００１６】
（第１の実施形態）図１に本発明の第１の実施形態に係る半導体集積回路の検証装置の概略構成を示す。検証装置はクロック周期抽出部１１、基本クロック波形生成部１２、クロックエッジリスト作成部１３、回路記述作成部１４、クロック生成回路１５、及びテストベンチ回路１８を備える。クロック生成回路１５はカウンタ回路１６及びステート・マシン回路１７を有する。
【００１７】
クロック生成回路１５は検証対象の半導体集積回路（以下ＤＵＴ）３に検証用クロック信号を与える。テストベンチ回路１８はＤＵＴ３へテストパターン信号を出力し、ＤＵＴ３からの出力信号が入力される。テストベンチ回路１８はＤＵＴ３からの出力信号と期待値との比較を行い、ＤＵＴ３の動作や機能に問題がないか検査する。また、テストベンチ回路１８はクロック生成回路１５へイネーブル制御信号ＣＬＫ＿ＥＮを出力し、クロック発生開始のタイミング制御を行う。
【００１８】
クロック生成回路１５及びＤＵＴ３はＦＰＧＡハードウェアで構成されており、ＦＰＧＡシステムクロック（以下システムクロック）に同期して動作する。
【００１９】
クロック周期抽出部１１はＤＵＴ３の設計情報を含むネットリスト（又はＲＴＬ）１及びタイミング制約ファイル２からクロック周期及びデューティ（Ｄｕｔｙ）比を含む周期情報を抽出する。タイミング制約ファイル２は例えばＬＳＩ設計に関するタイミング制約形式であるＳＤＣ（Synopsys Design Constraints）である。
【００２０】
ここで例えば、ＤＵＴ３のクロックとして、図２に示すような周期の異なる（非同期の）２つのクロックＣＬＫＡ、ＣＬＫＢの周期情報が抽出されたとする。クロックＣＬＫＡは周期が２０ｎｓであり、値が１（Ｈｉｇｈ）の期間が９ｎｓ、値が０（Ｌｏｗ）の期間が１１ｎｓである。また、クロックＣＬＫＢは周期が２５ｎｓであり、Ｈｉｇｈ期間が１７ｎｓ、Ｌｏｗ期間が８ｎｓである。
【００２１】
基本クロック波形生成部１２はクロック周期抽出部１１で抽出された複数のクロックの周期の最小公倍数を算出し、この最小公倍数に含まれる各クロックの周期数（サイクル数）を求めて基本クロック波形を生成する。
【００２２】
例えば、クロックＣＬＫＡの周期が２０ｎｓ、クロックＣＬＫＢの周期が２５ｎｓであるため、周期の最小公倍数は１００ｎｓとなる。この１００ｎｓにクロックＣＬＫＡは５周期、クロックＣＬＫＢは４周期含まれ、図３に示すような基本クロック波形が生成される。
【００２３】
クロックエッジリスト作成部１３は基本クロック波形におけるクロック毎のイベント発生時間を抽出し、発生時間順にソートしてクロックエッジリストを作成する。ここでイベントとは、値が０から１へ変化する立ち上がりイベントと、値が１から０へ変化する立ち下がりイベントとからなる。
【００２４】
例えばクロックＣＬＫＡは０ｎｓで立ち上がり、９ｎｓで立ち下がり、２０ｎｓで立ち上がり、２９ｎｓで立ち下がり、・・・となる。また、クロックＣＬＫＢは０ｎｓで立ち上がり、１７ｎｓで立ち下がり、２５ｎｓで立ち上がり、４２ｎｓで立ち下がり、・・・となる。
【００２５】
これにより、図４（ａ）に示すようなクロックエッジが抽出される。ここでは“イベント発生時間”、“クロック名”＿“クロック極性”“クロックサイクル数”の形式でデータが構築される。“クロック極性”は立ち上がりをＰＯＳ、立ち下がりをＮＥＧで表す。
【００２６】
これを発生時間順にソートすることで、図４（ｂ）に示すようなクロックエッジリストが得られる。このクロックエッジリストを図示すると図５のようになる。上向き矢印が立ち上がり極性、下向き矢印が立ち下がり極性、実線がクロックＣＬＫＡ、破線がクロックＣＬＫＢを表す。
【００２７】
回路記述作成部１４はクロックエッジリストに基づいてクロック生成回路１５の回路記述を作成する。クロック生成回路１５はＦＰＧＡで構成され、回路記述作成部１４で作成された回路記述に基づいて論理合成される。
【００２８】
カウンタ回路１６はカウントする最大値がクロックエッジリストのイベント総数になっている。ステート・マシン回路１７はカウンタ回路１６のカウント値及びクロックエッジリストに基づいて、システムクロックの各サイクルの立ち上がりにＤＵＴ３のクロックイベントを発生時間順に割り当てた検証用クロック信号を生成する。検証用クロック信号は回路検証時にＤＵＴ３に与えられる。
【００２９】
回路記述作成部１４で作成される回路記述の一例を図６に示す。テストベンチ回路１８から出力されるイネーブル制御信号ＣＬＫ＿ＥＮの値が０の時にカウンタ回路１６及びステート・マシン回路１７は動作する。
【００３０】
クロックエッジリスト（図４（ｂ））のイベント総数は１７のため、カウンタ回路１６は初期値１からインクリメント処理を行い、１７までカウントを行ったら１に戻る。
【００３１】
イベント総数は異なる時間に発生するイベント（立ち上がり又は立ち下がり）の総数である。従って、クロックエッジリストにて時間０で発生するクロックＣＬＫＡ及びＣＬＫＢの立ち上がりイベントは１つと見なされる。
【００３２】
ステート・マシン回路１７はカウンタ回路１６のカウント値に応じて各検証用クロックの値を遷移させていく。例えばカウント値が１の時は検証用クロックＣＬＫＡ＿Ｉ、ＣＬＫＢ＿Ｉの値を１にする。また、カウント値が３の時はクロックＣＬＫＢ＿Ｉの値を０にする。
【００３３】
これにより図７に示すような、クロックＣＬＫＡ、ＣＬＫＢに対応した検証用クロックＣＬＫＡ＿Ｉ、ＣＬＫＢ＿Ｉが生成される。この検証用クロックＣＬＫＡ＿Ｉ、ＣＬＫＢ＿Ｉは、クロックＣＬＫＡ、ＣＬＫＢにおけるイベント発生順番が維持されているため、ＤＵＴ３の検証に用いることが出来る。
【００３４】
ＦＰＧＡシステムクロックの立ち上がりに各クロックの立ち上がりイベント及び立ち下がりイベントを発生時間順に割り当てて検証用クロックを生成させるため、検証処理に要する時間を短縮することができる。
【００３５】
（比較例）比較例による半導体集積回路の検証方法を説明する。比較例による検証方法では、クロック周期に比例したシステムクロックサイクル数でクロックエッジを変化させて検証用クロックを生成する。従って、周期が２０ｎｓのクロックと周期が２５ｎｓの２つのクロックに対応する検証用クロックを生成する場合、図８に示すような検証用クロックＣＬＫＡ＿Ｃ、ＣＬＫＢ＿Ｃが生成される。
【００３６】
クロック周期の比が４：５のため、検証用クロックＣＬＫＡ＿Ｃはシステムクロック４サイクル毎に、検証用クロックＣＬＫＡ＿Ｃはシステムクロック５サイクル毎に値を変化させる。信号の１周期は立ち上がり及び立ち下がりからなるので、検証用クロックＣＬＫＡ＿Ｃの１周期はシステムクロック８サイクル、検証用クロックＣＬＫＢ＿Ｃの１周期はシステムクロック１０サイクルからなる。
【００３７】
つまり、周期２０ｎｓのクロック、周期２５ｎｓのクロックの周期の最小公倍数（基本クロック波形）である１００ｎｓに相当する検証用クロック信号を生成するにあたり、ＦＰＧＡシステムクロックの４０サイクル分の時間を要することになる。
【００３８】
一方、上記第１の実施形態による検証方法では、図７に示すように、システムクロックの１７サイクル分の時間になる。
【００３９】
このように、システムクロックの立ち上がりに各クロックのイベントを発生順に割り当てて新たな検証用クロックを生成することで、非同期クロックを含む回路の機能検証を高速化できる。
【００４０】
（第２の実施形態）本発明の第２の実施形態に係る半導体集積回路の検証装置の概略構成を図９に示す。本実施形態による検証装置は上記第１の実施形態による検証装置にさらに動作クロック極性判定部２１を備えた構成になっている。上記第１の実施形態による検証装置と同じ構成については同じ参照番号を付して説明を省略する。
【００４１】
動作クロック極性判定部２１はネットリスト（又はＲＴＬ）１を用いてＤＵＴ３が片エッジで動作する回路か否かを判定する。片エッジで動作するとはクロックの立ち上がりエッジ又は立ち下がりエッジのいずれか一方にのみ対応して動作することである。
【００４２】
動作クロック極性判定部２１はＤＵＴ３が片エッジ動作であると判定した場合は回路記述作成部１４へ圧縮制御信号を出力する。
【００４３】
回路記述作成部１４は圧縮制御信号に基づいてクロックイベントを圧縮して動作記述を作成する。例えばＤＵＴ３が立ち上がりエッジで動作する場合、（１）立ち下がりの次が立ち下がり、（２）立ち上がりの次が立ち下がり、（３）立ち下がりの次が立ち上がりとなっている２つの連続するイベントを１つにまとめてシステムクロックの立ち上がりに割り当てる。これらをまとめても立ち上がりエッジの発生順序は維持され、ＤＵＴ３の動作には影響がない。
【００４４】
例えば図５に示されるクロックＣＬＫＡ、ＣＬＫＢでは９ｎｓにおけるクロックＣＬＫＡの立ち下がりと１７ｎｓにおけるクロックＣＬＫＢの立ち下がりがまとめられる。また、２５ｎｓにおけるクロックＣＬＫＢの立ち上がりと２９ｎｓにおけるクロックＣＬＫＡの立ち下がりがまとめられる。
【００４５】
このようなイベント圧縮により、回路記述作成部１４で作成される動作記述は図１０に示すようなものになり、クロック生成回路１５からは図１１に示すような検証用クロックＣＬＫＡ＿Ｉ、ＣＬＫＢ＿Ｉが出力される。クロックＣＬＫＡ、ＣＬＫＢの周期の最小公倍数である１００ｎｓに相当するクロック信号を生成するにあたり要する時間がＦＰＧＡシステムクロックの１０サイクル分になる。
【００４６】
このように、ＤＵＴが片エッジ動作する場合に、動作に影響がないクロックイベントをまとめて、対応する検証用クロックのイベントをマージ（同時に変化させる）することで、検証処理に要する時間をさらに短縮し、機能検証をさらに高速化できる。
【００４７】
上述した実施の形態はいずれも一例であって限定的なものではないと考えられるべきである。例えば上記第１の実施形態ではシステムクロックの立ち上がりに合わせてクロックイベントを割り当てていたが、図１２に示すようにシステムクロックの立ち上がりと立ち下がりの両エッジにクロックイベントを割り当てるようにしても良い。これにより、機能検証をさらに高速化できる。
【００４８】
また、上記第２の実施形態による半導体集積回路の検証方法に、システムクロックの両エッジへのクロックイベントの割り当てを適用してもよい。これにより、図１３に示すように、クロックＣＬＫＡ、ＣＬＫＢの周期の最小公倍数である１００ｎｓに相当するクロック信号を生成するにあたり要する時間がＦＰＧＡシステムクロックの５サイクル分になり、機能検証をさらに高速化できる。
【００４９】
上記実施形態ではＤＵＴに２つの非同期クロックＣＬＫＡ、ＣＬＫＢが存在する場合を例に説明したが、クロック数は３以上でもよい。複数の非同期クロックの基本クロック波形を求め、各クロックにおけるイベントを発生順にシステムクロックのエッジに割り当てて、検証用クロックを生成することで、機能検証を高速化できる。
【００５０】
本発明の技術的範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００５１】
【図１】本発明の第１の実施形態に係る半導体集積回路の検証装置の概略構成図である。
【図２】クロック周期及びデューティ比の一例を示す図である。
【図３】基本クロック波形の一例を示す図である。
【図４】抽出されたクロックエッジ及びクロックエッジリストを示す図である。
【図５】クロックイベントを示す図である。
【図６】クロック生成回路の回路記述を示す図である。
【図７】同第１の実施形態に係る検証方法により生成される検証用クロックを示す図である。
【図８】比較例による検証用クロックを示す図である。
【図９】本発明の第２の実施形態に係る半導体集積回路の検証装置の概略構成図である。
【図１０】クロック生成回路の回路記述を示す図である。
【図１１】同第２の実施形態に係る検証方法により生成される検証用クロックを示す図である。
【図１２】変形例による検証方法により生成される検証用クロックを示す図である。
【図１３】変形例による検証方法により生成される検証用クロックを示す図である。
【符号の説明】
【００５２】
１  ネットリスト
２  タイミング制約ファイル
３  ＤＵＴ
１１  クロック周期抽出部
１２  基本クロック波形生成部
１３  クロックエッジリスト作成部
１４  回路記述作成部
１５  クロック生成回路
１６  カウント回路
１７  ステート・マシン回路
１８  テストベンチ回路
２１  動作クロック極性判定部
【図１】
2009198288.tif 000003
【図２】
2009198288.tif 000004
【図３】
2009198288.tif 000005
【図４】
2009198288.tif 000006
【図５】
2009198288.tif 000007
【図６】
2009198288.tif 000008
【図７】
2009198288.tif 000009
【図８】
2009198288.tif 000010
【図９】
2009198288.tif 000011
【図１０】
2009198288.tif 000012
【図１１】
2009198288.tif 000013
【図１２】
2009198288.tif 000014
【図１３】
2009198288.tif 000015