(57)【要約】【課題】半導体集積回路の検証時間を効果的に削減可能な検証装置、方法およびプログラムを提供すること。【解決手段】本発明の検証装置は、検証対象の半導体集積回路のネットリストから非同期回路のネットリストを生成し、当該非同期ネットリストが示す非同期回路についてゲートレベルのシミュレーションを実行する。検証装置は、検証対象の半導体集積回路のＲＴＬ記述から半導体集積回路の備えるレジスタの入力値および出力値と、非同期パス情報とを抽出し、当該非同期パス情報が示すパスの入力値および出力値を抽出する。検証装置は、非同期パス情報が示すパスの入力値および出力値に基づいてゲートレベルのシミュレーションを実行する。【選択図】図１
2016162280.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路の検証を行う検証装置であって、
検証対象の半導体集積回路のネットリストから非同期回路のネットリストを生成するネットリスト生成手段と、
前記非同期回路のネットリストが示す非同期回路についてゲートレベルのシミュレーションを実行するシミュレーション実行手段と
を備える、検証装置。
【請求項２】
前記検証装置は、
検証対象の半導体集積回路のＲＴＬ記述から前記半導体集積回路が備えるレジスタの入力値および出力値と、非同期パス情報とを抽出する抽出手段と、
前記非同期パス情報が示すパスの入力値および出力値を抽出する抽出手段と
を備え、
前記シミュレーション実行手段は、前記非同期パス情報が示すパスの入力値および出力値に基づいて前記ゲートレベルのシミュレーションを実行する、請求項１に記載の検証装置。
【請求項３】
半導体集積回路の検証を行う検証装置であって、
検証対象の半導体集積回路のネットリストからユーザが指定した回路のネットリストを生成するネットリスト生成手段と、
前記ネットリストが示す回路についてゲートレベルのシミュレーションを実行するシミュレーション実行手段と
を備える、検証装置。
【請求項４】
半導体集積回路の検証を行う検証装置であって、
検証対象の半導体集積回路のネットリストからユーザが指定したモジュール、ハードマクロまたは外部端子のネットリストを生成するネットリスト生成手段と、
前記ネットリストが示す回路についてゲートレベルのシミュレーションを実行するシミュレーション実行手段と
を備える、検証装置。
【請求項５】
半導体集積回路の検証を行う検証装置であって、
検証対象の半導体集積回路のネットリストから非同期回路のネットリストを生成するネットリスト生成手段と、
前記非同期回路のネットリストが示す非同期回路についてグリッジの検出を行うグリッジ検出手段と
を備える、検証装置。
【請求項６】
半導体集積回路の検証を行う検証装置が実行する方法であって、
検証対象の半導体集積回路のネットリストから非同期回路のネットリストを生成するステップと、
前記非同期回路のネットリストが示す非同期回路についてゲートレベルのシミュレーションを実行するステップと
を含む、方法。
【請求項７】
半導体集積回路の検証を行う検証装置が実行する方法であって、
検証対象の半導体集積回路のネットリストからユーザが指定した回路のネットリストを生成するステップと、
前記ネットリストが示す回路についてゲートレベルのシミュレーションを実行するステップと
を含む、方法。
【請求項８】
半導体集積回路の検証を行う検証装置が実行する方法であって、
検証対象の半導体集積回路のネットリストからユーザが指定したモジュール、ハードマクロまたは外部端子のネットリストを生成するステップと、
前記ネットリストが示す回路についてゲートレベルのシミュレーションを実行するステップと
を含む、方法。
【請求項９】
半導体集積回路の検証を行う検証装置が実行する方法であって、
検証対象の半導体集積回路のネットリストから非同期回路のネットリストを生成するステップと、
前記非同期回路のネットリストが示す非同期回路についてグリッジの検出を行うステップと
を含む、方法。
【請求項１０】
半導体集積回路の検証を行う検証装置が実行可能なプログラムであって、前記検証装置に対し、請求項６〜９のいずれか１項に記載の方法を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の検証に関し、より詳細には、半導体集積回路の検証に要する時間を削減する検証装置、方法およびプログラムに関する。
【背景技術】
【０００２】
従来、半導体集積回路の開発では、検証対象の半導体集積回路に対して２段階のシミュレーションを実行して検証が行われる。第１段階のシミュレーションであるＲＴＬ（Register Tranfer Level）シミュレーションでは、検証対象の半導体集積回路の機能を記述したＲＴＬ記述を用いて、検証対象の半導体集積回路が有する全てのレジスタの入力値および出力値を抽出する。
【０００３】
第２段階のシミュレーションであるゲートレベルシミュレーションでは、検証対象の半導体集積回路について論理合成および配置配線を行い、当該半導体集積回路のネットリストおよびＳＤＦファイルを生成し、ゲートレベルでシミュレーションを行う。通常、ゲートレベルシミュレーションでは、セルや実配線の構成に起因する遅延を考慮するため、ＲＴＬシミュレーションと比較して検証時間が長くなる傾向がある。
【０００４】
この点に関し、特許文献１が開示する論理シミュレーション装置は、１のクロックドメインに同期して論理動作を行うロジックコーンを高速化対象部として認定し、複数のクロックドメインに基準にして論理動作を行うロジックコーンを高速化非対象部として認定し、高速化対象部を圧縮して論理シミュレーションを実行すると共に、高速化非対象部に対して論理シミュレーションを実行することにより、検証時間の削減を図っている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１が開示する論理シミュレーション装置は、依然として高速化対象部に対して論理シミュレーションを実行するため、ゲートレベルシミュレーションの検証時間を十分に削減できず、半導体集積回路の検証時間を効果的に削減できないという問題があった。
【０００６】
本発明は、上述した従来技術の問題点に鑑みてなされたものであり、半導体集積回路の検証時間を削減可能な検証装置、方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の検証装置は、検証対象の半導体集積回路のネットリストから非同期回路のネットリストを生成し、当該非同期ネットリストが示す非同期回路についてゲートレベルのシミュレーションを実行する。
【発明の効果】
【０００８】
本発明の検証装置は、非同期ネットリストが示す非同期回路のみについてゲートレベルのシミュレーションを実行するため、半導体集積回路の検証時間を削減することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の検証装置のハードウェア構成を示す図。
【図２】本発明の検証プログラムの機能構成の一実施形態を示す図。
【図３】検証対象の半導体集積回路の一実施形態を示す回路図。
【図４】検証装置が実行する検証処理の一実施形態を示すフローチャート。
【図５】検証対象の半導体集積回路が備える全てのフリップフロップの入力値および出力値の一実施形態を示す図。
【図６】非同期回路のパス情報の一実施形態を示す図。
【図７】検証装置が実行する検証処理の別の実施形態を示すフローチャート。
【図８】検証装置が実行する検証処理の他の実施形態を示すフローチャート。
【図９】検証対象の非同期回路の一実施形態を示す回路図。
【図１０】図９に示す非同期回路のタイミングチャート。
【発明を実施するための形態】
【００１０】
図１は、本発明の検証装置のハードウェア構成を示す図である。検証装置１００は、半導体集積回路を検証する装置であり、ＣＰＵ１０１と、ＲＯＭ１０２と、ＲＡＭ１０３と、ハードディスク装置（ＨＤＤ）１０４と、入出力装置インタフェース（Ｉ／Ｆ）１０５とを備えている。
【００１１】
ＣＰＵ１０１は、プログラムを実行する演算処理装置である。ＲＯＭ１０２は、ブートプログラム等のデータが保存される不揮発性の半導体メモリである。ＲＡＭ１０３は、プログラムの実行空間を提供する揮発性の半導体メモリである。ＨＤＤ１０４は、本発明の検証プログラムや半導体集積回路の検証に使用される種々のデータが格納される不揮発性記憶装置である。入出力装置Ｉ／Ｆ１０５は、キーボードやマウス等の入力装置や、ディスプレイ等の出力装置を接続可能なインタフェースである。
【００１２】
ＣＰＵ１０１は、適切なＯＳの下でＨＤＤ１０４から本発明の検証プログラムを読み出し、ＲＡＭ１０３に展開して実行することにより、後述する手段を検証装置１００上で実現する。
【００１３】
図２は、本発明の検証装置が備える検証プログラムの機能構成の一実施形態を示す図である。以下、図２を参照して、検証プログラム２００の機能について説明する。
【００１４】
検証プログラム２００は、半導体集積回路を検証するプログラムであり、ＲＴＬシミュレーション実行部２０１と、抽出部２０２と、回路情報生成部２０３と、非同期ネットリスト生成部２０４と、非同期ＳＤＦファイル生成部２０５と、ゲートシミュレーション実行部２０６とを有する。
【００１５】
ＲＴＬシミュレーション実行部２０１は、検証対象の半導体集積回路のＲＴＬ記述を参照し、ＲＴＬシミュレーションを実行して、当該半導体集積回路が備える全てのレジスタの入力値および出力値を抽出する手段である。
【００１６】
抽出部２０２は、検証対象の半導体集積回路のＲＴＬ記述を参照し、当該半導体集積回路が備える全てのフリップフロップの間のパスについて同期または非同期であるかを判断し、非同期回路内の非同期のフリップフロップ間のパス（以下、「非同期パス」とする。）を示す非同期パス情報を抽出する手段である。
【００１７】
回路情報生成部２０３は、検証対象の半導体集積回路のＲＴＬ記述に基づいて論理合成および配置配線を行い、当該半導体集積回路のネットリスト（ゲート回路）およびＳＤＦ（Standard Delay Format）ファイルを生成する手段である。ネットリストおよびＳＤＦファイルは、既存の配置配線ツールや論理合成ツールを用いて生成することができる。
【００１８】
非同期ネットリスト生成部２０４は、検証対象の半導体集積回路のネットリストから非同期回路に関する情報を抽出して、非同期回路のネットリストを生成する手段である。非同期ＳＤＦファイル生成部２０５は、検証対象の半導体集積回路のＳＤＦファイルから非同期回路に関する情報を抽出して、非同期回路のＳＤＦファイルを生成する手段である。
【００１９】
ゲートシミュレーション実行部２０６は、検証対象の半導体集積回路について実配線遅延のゲートレベルのシミュレーション（以下、「ゲートシミュレーション」とする。）を実行する手段である。ゲートシミュレーション実行部２０６は、非同期回路のネットリストが示す非同期回路のフリップフロップに、ステップＳ４０３で抽出した非同期パスの入力値を入力値としてクロックイベント毎に設定し、非同期回路のネットリスト、非同期回路のＳＤＦファイルおよびライブラリに基づいて、実配線遅延のゲートシミュレーションを実行し、当該入力値に対応する期待値であるステップＳ４０３で抽出した非同期パスの出力値と、実際の出力値とを比較する。ゲートシミュレーション実行部２０６は、ゲートシミュレーションの結果を表示装置に出力する。
【００２０】
図３は、検証対象の半導体集積回路の一実施形態を示す図である。半導体集積回路３００は、クロック（CLK_A）に同期して動作する同期回路３０１と、クロック（CLK_B）に同期して動作する３０２と、位相の異なるクロック（CLK_A）およびクロック（CLK_B）それぞれに同期して動作する非同期回路３０３とで構成される。同期回路３０１は、クロック（CLK_A）に同期するレジスタ（D_reg）およびレジスタ（E_reg）を備える。同期回路３０２は、クロック（CLK_B）に同期するレジスタ（F_reg）およびレジスタ（G_reg）を備える。
【００２１】
非同期回路３０３は、クロック（CLK_A）に同期するレジスタ（A_reg）およびレジスタ（B_reg）と、クロック（CLK_B）に同期するレジスタ（C_reg）と、論理回路とを備える。本実施形態では、クロック（CLK_A）およびクロック（CLK_B）は位相が異なるため、レジスタ（A_reg）およびレジスタ（B_reg）と、レジスタ（C_reg）とは非同期で動作する。
【００２２】
図４は、本発明の検証装置が実行する検証処理の一実施形態を示すフローチャートである。以下、図４を参照して、検証装置１００が、図３に示す検証対象の半導体集積回路を検証する処理について説明する。
【００２３】
図４に示す処理はステップＳ４００から開始し、ステップＳ４０１では、ＲＴＬシミュレーション実行部２０１が、検証対象の半導体集積回路のＲＴＬ記述を参照し、ＲＴＬシミュレーションを実行して、図５に示すように、当該半導体集積回路が備える全てのレジスタ（フリップフロップ（ＦＦ））の入力値および出力値を抽出する。
【００２４】
ステップＳ４０２では、抽出部２０２が、検証対象の半導体集積回路のＲＴＬ記述を参照し、当該半導体集積回路が備える全てのフリップフロップの間のパスについて同期または非同期であるかを判断し、図６に示すような非同期パス情報を抽出する。
【００２５】
図６に示すパス情報には、パスの上流側のレジスタの識別情報（レジスタ名および出力端子名）と、当該レジスタが依存するクロック名と、パスの下流側のレジスタの識別情報（レジスタ名および入力端子名）と、当該レジスタが依存するクロック名とが含まれる。
【００２６】
ステップＳ４０３では、抽出部２０２は、非同期パス情報を参照し、図５に示すように、ステップＳ４０１で抽出された全てのＦＦの入力値および出力値から非同期パスの入力値および出力値を抽出する。
【００２７】
ステップＳ４０４では、回路情報生成部２０３が、検証対象の半導体集積回路のＲＴＬ記述に基づいて論理合成および配置配線を行い、当該半導体集積回路のネットリストおよびＳＤＦファイルを生成する。
【００２８】
ステップＳ４０５では、非同期ネットリスト生成部２０４が、検証対象の半導体集積回路のネットリストから非同期回路に関する情報を抽出して、非同期回路のネットリストを生成する。ステップＳ４０６では、非同期ＳＤＦファイル生成部２０５が、検証対象の半導体集積回路のＳＤＦファイルから非同期回路に関する情報を抽出して、非同期回路のＳＤＦファイルを生成する。
【００２９】
ステップＳ４０７では、ゲートシミュレーション実行部２０６が、非同期回路のネットリストが示す非同期回路のフリップフロップに、ステップＳ４０３で抽出した非同期パスの出力値を入力値としてクロックイベント毎に設定し、非同期回路のネットリスト、非同期回路のＳＤＦファイルおよびライブラリに基づいて、実配線遅延のゲートシミュレーションを実行して、当該入力値に対応する期待値と、実際の出力値とを比較する。当該期待値は、ステップＳ４０３で抽出した非同期パスの入力値である。なお、非同期の入力フリップフロップの期待値は、入力信号の位相差が生じるため、変換点のマスク処理が必要であることに留意すべきである。
【００３０】
例えば、図３に示す非同期回路を検証対象とする場合、ゲートシミュレーション実行部２０６は、非同期回路のレジスタ（A_reg）の入力値として、ステップＳ４０３で抽出したレジスタ（A_reg）の非同期パスの入力値である「ＨＨＬＬＬＬＬＨＨ」を設定し、レジスタ（B_reg）の入力値として、ステップＳ４０３で抽出したレジスタ（B_reg）の非同期パスの入力値である「ＨＨＨＨＨＨＨＨＨ」を設定する。この場合、レジスタ（C_reg）から出力される期待値は「ＨＨＬＬＬＬＬＨＨ」であり、ゲートシミュレーション実行部２０６は、当該期待値とレジスタ（C_reg）の実際の出力値とを比較する。
【００３１】
ステップＳ４０９では、ゲートシミュレーション実行部２０６が、ゲートシミュレーションの結果を表示装置に出力し、ステップＳ４１０で処理が終了する。
【００３２】
図７は、本発明の検証装置が実行する検証処理の別の実施形態を示すフローチャートである。図７に示す実施形態では、検証プログラム２００は、検証対象の半導体集積回路のネットリストから期待値が比較される回路のネットリストを生成するネットリスト生成部と、検証対象の半導体集積回路のＳＤＦファイルから期待値が比較される回路のＳＤＦファイルを生成するＳＤＦファイル生成部とを備える。以下、図７を参照して、検証装置１００が、ユーザが指定した半導体集積回路の構成回路を検証する処理について説明する。
【００３３】
図７に示す処理はステップＳ７００から開始し、ステップＳ７０１では、ＲＴＬシミュレーション実行部２０１が、検証対象の半導体集積回路のＲＴＬ記述を参照し、当該半導体集積回路が備える全てのフリップフロップの入力値および出力値を抽出する。ステップＳ７０２では、抽出部２０２が、ユーザの指示に基づいて、ステップＳ７０１で抽出した全てのフリップフロップの入力値および出力値から期待値の比較を行うフリップフロップの入力値および出力値を抽出する。
【００３４】
ステップＳ７０３では、回路情報生成部２０３が、検証対象の半導体集積回路のＲＴＬ記述に基づいて論理合成および配置配線を行い、当該半導体集積回路のネットリストおよびＳＤＦファイルを生成する。
【００３５】
ステップＳ７０４では、ネットリスト生成部が、検証対象の半導体集積回路のネットリストから期待値が比較される回路に関する情報を抽出して、期待値が比較される回路のネットリストを生成する。ステップＳ７０５では、ＳＤＦファイル生成部が、検証対象の半導体集積回路のＳＤＦファイルから期待値が比較される回路に関する情報を抽出して、期待値が比較される回路のＳＤＦファイルを生成する。
【００３６】
ステップＳ７０６では、ゲートシミュレーション実行部２０６が、期待値比較対象の回路のネットリストが示すフリップフロップに、ステップＳ７０２で抽出した入力値を入力値としてクロックイベント毎に設定し、期待値比較対象の回路のネットリストおよびＳＤＦファイルと、ライブラリとに基づいて、実配線遅延のゲートシミュレーションを実行し、当該入力値に対応する期待値であるステップＳ７０２で抽出した出力値と、実際の出力値とを比較する。ステップＳ７０７では、ゲートシミュレーション実行部２０６は、ゲートシミュレーションの結果を表示装置に出力し、ステップＳ７０８で処理が終了する。
【００３７】
上述した実施形態では、期待値が比較される回路をフリップフロップ単位で指定するが、他の実施形態では、モジュールやハードマクロ、外部端子毎に指定することができる。
【００３８】
図８は、本発明の検証装置が実行する検証処理の他の実施形態を示すフローチャートである。図８に示す実施形態では、検証プログラム２００は、非同期回路のフリップフロップに所定の値を入力値として設定してグリッジを検出するグリッジ検出部をさらに備える。以下、図８を参照して、検証装置１００が、グリッジを検出する検証処理について説明する。
【００３９】
図８に示す処理はステップＳ８００から開始し、ステップＳ８０１でＲＴＬシミュレーション実行部２０１が、検証対象の半導体集積回路のＲＴＬ記述を参照し、当該半導体集積回路が備える全てのフリップフロップの入力値および出力値を抽出する。ステップＳ８０２では、抽出部２０２が、検証対象の半導体集積回路のＲＴＬ記述を参照し、当該半導体集積回路が備える全てのフリップフロップの間のパスについて同期または非同期であるかを判断して、非同期パス情報を抽出する。
【００４０】
ステップＳ８０３では、抽出部２０２が、非同期パス情報に基づいて、ステップＳ８０１で抽出した全てのＦＦの入力値および出力値から非同期パスの入力値および出力値を抽出する。ステップＳ８０４では、回路情報生成部２０３が、検証対象の半導体集積回路のＲＴＬ記述に基づいて論理合成および配置配線を行い、当該半導体集積回路のネットリストおよびＳＤＦファイルを生成する。
【００４１】
ステップＳ８０５では、非同期ネットリスト生成部２０４が、検証対象の半導体集積回路のネットリストから非同期回路に関する情報を抽出して、非同期回路のネットリストを生成する。ステップＳ８０６では、非同期ＳＤＦファイル生成部２０５が、検証対象の半導体集積回路のＳＤＦファイルから非同期回路に関する情報を抽出して、非同期回路のＳＤＦファイルを生成する。
【００４２】
ステップＳ８０７では、グリッジ検出部が、非同期回路のネットリストが示す非同期回路のフリップフロップに、ステップＳ８０３で抽出した非同期パスの出力値を入力値としてクロックイベント毎に設定し、非同期回路のＳＤＦファイル、ネットリストおよびライブラリに基づいてグリッジを検出する。ステップＳ８０８では、グリッジ検出部は、グリッジの検出結果を表示装置に出力し、ステップＳ８０９で処理が終了する。
【００４３】
例えば、図９に示す非同期回路の場合、グリッジ検出部は、非同期回路のレジスタ（A_reg）の入力値として、シミュレーションパターンに基づく「ＨＬＬＬＬＬ…」を設定し、レジスタ（B_reg）の入力値として「ＬＨＨＨＨＨ…」を設定した場合、レジスタ（C_reg）でグリッジが発生するか否か判断する。図１０は、これらの値をレジスタに設定した場合のタイミングチャートの一実施形態を示す。
【００４４】
まず、クロック（CLK_A）に同期してレジスタ（A_reg）およびレジスタ（B_reg）のＤ端子に、それぞれ「ＨＬＬＬＬＬ…」および「ＬＨＨＨＨＨ…」が設定される。レジスタ（A_reg）およびレジスタ（B_reg）のＱ端子では、クロック（CLK_A）のタイミングから僅かに遅れて、Ｄ端子に設定した信号が伝播する。
【００４５】
次に、レジスタ（A_reg）およびレジスタ（B_reg）のＱ端子から出力された信号が、それぞれ論理和回路（AND_A）のＡ端子およびＢ端子に入力される。図９に示す半導体回路では、レジスタ（A_reg）のＱ端子と論理和回路（AND_A）のＡ端子との間のパスと、レジスタ（B_reg）のＱ端子と論理和回路（AND_A）のＢ端子との間のパスでは、セルの配置や配線が異なるため、レジスタ（A_reg）およびレジスタ（B_reg）の各レジスタから論理和回路（AND_A）に到達する信号のタイミングがずれ、遅延が生じる。この遅延によって、論理和回路（AND_A）のＣ端子にグリッジ（ショートパルス）が発生して、レジスタ（C_reg）のＲＮ端子に伝播する。グリッジ検出部は、このようなグリッジを検出し、その結果を表示装置に出力する。
【００４６】
グリッジが発生するとシミュレーションで期待値のエラーになることが多く、検証時間が増大するところ、図８に示す実施形態では、グリッジを検出することができるため、半導体集積回路の検証時間を削減することができる。
【００４７】
これまで本実施形態につき説明してきたが、本発明は、上述した実施形態に限定されるものではなく、上述した実施形態の構成要素を組み合わせ、変更若しくは削除し、または上述した実施形態の構成要素に他の構成要素を追加するなど、当業者が想到することができる範囲内で変更することができる。いずれの態様においても本発明の作用効果を奏する限り、本発明の範囲に含まれるものである。
【符号の説明】
【００４８】
１００…検証装置
【先行技術文献】
【特許文献】
【００４９】
【特許文献１】特開２００４−１８５２１３号公報
【図１】
2016162280.tif 000003
【図２】
2016162280.tif 000004
【図３】
2016162280.tif 000005
【図４】
2016162280.tif 000006
【図５】
2016162280.tif 000007
【図６】
2016162280.tif 000008
【図７】
2016162280.tif 000009
【図８】
2016162280.tif 000010
【図９】
2016162280.tif 000011
【図１０】
2016162280.tif 000012