(57)【要約】      （修正有）【課題】  従来の技術では、回路仕様とアサーション記述との整合性一致は保証されないとの課題を解決し、例えばＬＳＩ等に対するアサーション検証の高信頼化および高効率化を可能とする。【解決手段】  本例のアサーション生成システム２０７は、グラフィカルエディタ（仕様入力手段）２０１により、ユーザ操作に基づき半導体集積回路の仕様（有限状態機械、処理シーケンス）を、状態遷移表や状態遷移図あるいはタイミングチャートや時系列図形で、グラフィカルに編集して当該半導体集積回路の設計データ（仕様書電子データ２０２）を生成し、構文解析器２０３およびプロパティ抽出器２０４からなるプロパティ生成手段により、設計データを元に、半導体集積回路の仕様に関して検証すべきプロパティを生成し、アサーション生成器２０５により、当該プロパティをアサーション記述言語２０６に変換する。【選択図】        図２
2006099518.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路のアサーション検証に用いるアサーション記述を生成するアサーション生成システムであって、
ユーザ操作に基づき上記半導体集積回路の仕様をグラフィカルに編集して当該半導体集積回路の設計データもしくは仕様書及び仕様書確認用のドキュメントを生成する仕様入力手段と、
該仕様入力手段で生成した設計データを記憶する第１の記憶手段と、
該第１の記憶手段から上記仕様入力手段が生成した設計データを読み出し、該設計データを元に、上記半導体集積回路の仕様に関して検証すべきプロパティを生成するプロパティ生成手段と、
該プロパティ生成手段で生成したプロパティを記憶する第２の記憶手段と、
該第２の記憶手段から上記プロパティ生成手段が生成したプロパティを読み出し、該プロパティをアサーション記述に変換するアサーション生成手段と
を有することを特徴とするアサーション生成システム。
【請求項２】
請求項１に記載のアサーション生成システムであって、
上記仕様入力手段は、
ユーザ操作に基づき上記半導体集積回路の仕様を状態遷移表もしくは状態遷移図で編集して当該半導体集積回路の設計データを生成する手段を有することを特徴とするアサーション生成システム。
【請求項３】
請求項１に記載のアサーション生成システムであって、
上記仕様入力手段は、
ユーザ操作に基づき上記半導体集積回路の処理シーケンスをタイミングチャートもしくは時系列に図示して編集し、当該半導体集積回路の設計データを生成する手段を有することを特徴とするアサーション生成システム。
【請求項４】
請求項１から請求項３のいずれかに記載のアサーション生成システムであって、
上記仕様入力手段は、
ユーザ操作に基づき上記半導体集積回路の仕様を論理テーブルもしくは状態テーブルで編集して、当該半導体集積回路の設計データを生成する手段を有することを特徴とするアサーション生成システム。
【請求項５】
請求項４に記載のアサーション生成システムであって、
上記アサーション手段は、
上記仕様入力手段で編集した論理テーブルもしくは状態テーブルのテーブル名あるいはテーブルの行番号、または、当該論理テーブルもしくは状態テーブルにおける信号名あるいは状態名で構成されたアサーション名を付加されたアサーション記述に変換することを特徴とするアサーション生成システム。
【請求項６】
請求項１から請求項５のいずれかに記載のアサーション生成システムであって、
上記仕様入力手段は、
上記設計データをグラフ構造に展開し、上記第１の記憶手段に出力することを特徴とするアサーション生成システム。
【請求項７】
コンピュータを、請求項１から請求項６のいずれかに記載のアサーション生成システムにおける各手段として機能させるためのプログラム。
【請求項８】
請求項１から請求項６のいずれかに記載のアサーション生成システムを具備し、該アサーション生成システムで生成したアサーション記述を用いて半導体集積回路のアサーション検証を行うことを特徴とする回路検証システム。
【請求項９】
半導体集積回路のアサーション検証に用いるアサーション記述を、プログラムされたコンピュータによって生成するアサーション生成方法であって、
ユーザ操作に基づき上記半導体集積回路の仕様をグラフィカルに編集して当該半導体集積回路の設計データを生成して記憶装置に入力する仕様入力手順と、
上記記憶装置から上記仕様入力手順で生成した設計データを読み出し、該設計データを元に、上記半導体集積回路の仕様に関して検証すべきプロパティを生成して記憶装置に入力するプロパティ生成手順と、
上記記憶装置から上記プロパティ生成手順で生成したプロパティを読み出し、該プロパティをアサーション記述に変換するアサーション生成手順と
を有することを特徴とするアサーション生成方法。
【請求項１０】
請求項９に記載のアサーション生成方法であって、
上記仕様入力手順では、
ユーザ操作に基づき上記半導体集積回路の仕様を状態遷移表もしくは状態遷移図で編集して当該半導体集積回路の設計データを生成することを特徴とするアサーション生成方法。
【請求項１１】
請求項９に記載のアサーション生成方法であって、
上記仕様入力手順では、
ユーザ操作に基づき上記半導体集積回路の処理シーケンスをタイミングチャートもしくは時系列に図示して編集し、当該半導体集積回路の設計データを生成することを特徴とするアサーション生成方法。
【請求項１２】
請求項９から請求項１１のいずれかに記載のアサーション生成方法であって、
上記仕様入力手順では、
ユーザ操作に基づき上記半導体集積回路の仕様を論理テーブルもしくは状態テーブルで編集して、当該半導体集積回路の設計データを生成することを特徴とするアサーション生成方法。
【請求項１３】
請求項１２に記載のアサーション生成方法であって、
上記アサーション手順では、
上記仕様入力手順で編集した論理テーブルもしくは状態テーブルのテーブル名あるいはテーブルの行番号、または、当該論理テーブルもしくは状態テーブルにおける信号名あるいは状態名で構成されたアサーション名を付加されたアサーション記述に変換することを特徴とするアサーション生成方法。
【請求項１４】
請求項９から請求項１３のいずれかに記載のアサーション生成方法であって、
上記仕様入力手順では、
上記設計データをグラフ構造に展開して上記記憶装置に記憶することを特徴とするアサーション生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータのプログラムに基づく処理により、ＬＳＩ（Large Scale Integration、大規模集積回路）等の回路検証を行う技術に係わり、特に、レジスタ転送レベルの設計データをシミュレータでダイナミックに検証するときに、検証対象回路のプロパティをアサーション記述してシミュレータに加味させることで設計違反や検証漏れを確認するようにした検証技術に関するものである。
【０００２】
ここで言うプロパティとは、検証対象の設計品に意図・期待される動作を定義する平叙文（プレーン・テキスト）であり、例えば、アービタ回路における要求信号と承認信号の受信や応答の関係を時系列制約で定義したり、時系列制約の正当状態や、禁止される回路仕様を定義したりするものである。その他、特定の回路シーケンスがシミュレーションでテストされたかどうかを確認する機能カバレッジ・ポイントとして監視すべきイベントとされる。設計記述（デザイン）が所定のプロパティを満たしているかどうかを検証することをプロパティ検証という。
【背景技術】
【０００３】
近年、半導体集積回路においては回路規模の増大化と複雑さのためにコーナーケースの検証漏れや、グループワークのために複数の設計者へ設計担当を割り振った際の各担当ブロック間のインターフェース仕様の確認漏れ、あるいは、第三者から購入した再利用可能なコアの誤仕様などが原因でシステムの改定や改版がしばしば発生している。
【０００４】
これらの問題の要因は、十分に回路検証が出来ていなかったか、もしくはコーナーケースや第三者のコアの仕様を十分に理解できていないためにバグを抽出し得るテストシナリオを作成できなかった、などがある。
【０００５】
これらのことを背景に、検証用に回路仕様に関するプロパティをアサーション記述してシミュレータ（コンピュータ）に与え、シミュレーション中のアサーション違反の警告や、特定の回路シーケンスがシミュレーションでテストされたかどうかを示す機能カバレッジ・レポートを提供するようにしたアサーション検証技術が提案され、最近では実設計に適用され始めてきた。
【０００６】
アサーションは設計の意図(これをプロパティと指すこともある)を記した注釈であって、通常はＲＴＬ（Register Transfer Level）中にコメント文で記述する。検証期間中はシミュレータによってその意図が解釈され、例えば検証対象の回路がその意図とは異なる動作へ陥った場合はエラー・ログが生成される。ここでの設計の意図とは、例えば回路入力の仮定や前提条件であるほか、それらの条件が満たされた場合に期待する動作といったものを指す。
【０００７】
シミュレータは以下の二つのことをチェックする。
（１）仮定や前提条件といった特定のイベントが発生したかどうか
（２）そのときの期待動作が正しく完了するかどうか
【０００８】
上記（１）のチェックから、アサーションは特定の回路機能が検証で確認されたかどうかの判定材料をフィードバックする。よってアサーションを検証対象回路へ網羅的に埋め込んでおけばアサーションの被服率（機能カバレッジと呼ぶ）が得られ、これをもって検証精度を定量化できる。
【０００９】
上記（２）のチェックから、アサーションによって検証デバッグへのフィードバックが得られる。例えば、回路の不具合の影響が外部端子で観測困難であるところへ埋め込まれたアサーションは不具合の状況を補足する。また、いかなるスティミュラス（Stimulus）においても仮定や前提条件などの条件が満されるときはいつでもこの期待動作がチェックされる。よって例えばスティミュラスがランダムな系列で構成されていたとしても期待動作との自己照合、すなわち期待値比較が実施される。また、下位ブロックに埋め込まれたアサーションはチップレベル検証においても同様に有効である。
【００１０】
これらの設計の意図は論理合成向けＲＴＬと区別された検証向けのVerilog-HDLで記述できるかも知れないが、ここでは別のアサーション言語について述べる。
【００１１】
現在、最も普及しているのが非特許文献１に記載のＰＳＬ（Property Specification Language）である。ＰＳＬはAccelleraという標準化規格団体によってIEEEへの寄贈が進行中のアサーション言語であり、事実上の標準言語である。以下、ＰＳＬによるアサーション記述の具体例を示す。
【００１２】
例えば、メモリ制御に関して次のような設計の意図（プロパティ）を検証で監視したいとする。
１）read_nとwrite_nは、同時にLowにはならない
２）write_nの立ち下がりで、enable_nはHighである
３）read_nの立ち下がりで、enable_nはLowである
【００１３】
これらをアサーションとしてシミュレータへ渡すためのＰＳＬ記述（アサーション記述）は以下の通りである。
【００１４】
// psl property memcont1 = never (!write_n && !read_n) @(posedge clk) ;
// psl assert memcont1 ;
// psl property memcont2 = always (enable_n) @(negedge write_n) ;
// psl assert memcont2 ;
// psl property memcont3 = always (!enable_n) @(negedge read_n) ;
// psl assert memcont3 ;
【００１５】
上記ＰＳＬ記述（アサーション記述）の内の「psl、property、never、assert、always」は全てＰＳＬの予約語である。全ての行はVerilog-HDLのコメントであることを示す「//」で開始する。尚、「//」に代えて「/**/」でＰＳＬの記述全体を閉じても良い。
【００１６】
また、上記ＰＳＬ記述（アサーション記述）の内の「memocont1,2,3、!write_n&&!read_n、posedge clk、enable_n、negedge write_n、!enable_n、negedge read_n」はユーザ定義の記述であって、「memocont1,2,3」以外は上記１）〜３）の意図を定義するための具体的な実装データ名、すなわちＲＴＬ中に出現するメモリ制御信号名である。
【００１７】
また、memcont1〜3はアサーション名であって、シミュレータからフィードバックされるエラー・ログや機能カバレッジの識別に使用される。
【００１８】
ＰＳＬによるアサーション記述は次の構成要素をとる。
【００１９】
// psl property <アサーション名> = 
<監視すべきイベント>  -> <条件が満たされたときの期待動作>
@<ストローブ条件>;
// psl assert <アサーション名>;
【００２０】
例えば１）のアサーションであれば「memcont1」がアサーション名、 (!write_n && !read_n) が監視すべきイベントであって、この場合は先にneverが付加されている事により (  ) 内の条件が決して真とならないことを監視する（仮にalwaysが付加される場合は(  )内の条件が真であることがチェックされる）。これに続く@(posedge clk)によって条件の監視がclkの立ち上がりエッジのたびに行われることを定義している。「->」は何時、期待動作が開始されるかによって「|=>」、「|->」へ変化する。なお、上記の例は期待動作を付随していない。
【００２１】
ストローブ条件以外の各パートの(  )内はブーリアンを返すVerilog-HDLの式で記述する。ストローブ条件の(  )内はVerilog-HDLのalways文で記述するセンシティビティリストの記述形式をとる。
【００２２】
ＰＳＬは監視すべきイベントと、その条件が満たされたときの期待動作の各パートのそれぞれはシーケンスを、すなわち複数サイクルに渡るイベントの変化や期待動作といったものが定義できる。次の例を見てみる
【００２３】
・設計の意図：メモリのクリア処理では、クリア開始条件(m_taskが2'b00)が成立したならば、全ワード(２５６ワード)の初期化のための書込み操作が２５６回だけ継続される。ここで、一回の書込みはclkの立ち上がりサイクルに同期したwrite_nのLow→High→Highの動作で完了する。
【００２４】
・ＰＳＬ記述
// psl sequence WRITE_PULSE = { !write_n; write_n; write_n };
// psl property CLEAR_MEM_WRITE_N =
// always { m_task == 2'b00 } |=> { WRITE_PULSE [*256] }
// @(posedge clk);
// psl assert CLEAR_MEM_WRITE_N;
【００２５】
sequenceはwrite_nのLow→High→Highといったシーケンスをマクロ定義している。
ここで注目したいのは「|=>」に続く期待動作のパートである。m_task == 2'b00 であれば、WRITE_PULSE、すなわちwrite_nのLow→High→Highといった３サイクルにまたがるシーケンスが２５６回分、継続することを期待している。
【００２６】
しかし、このようなアサーション検証技術においては、例えば、仕様を定義する時に手入力でアサーション記述言語を書いた場合、アサーション自体にミスが混入してしまう可能性がある。その結果、アサーション検証によって得られたアサーション違反の警告や機能カバレッジのレポートと言うものはシステムの改定や改版を防ぐためのフィードバックとはな成り得ず、さらにはアサーション記述言語のデバッグのための検証期間を要してしまい、結果的に検証効率が悪くなってしまう。
【００２７】
すなわち、回路仕様とアサーション記述との整合性が一致していることがアサーション検証技術の大前提であるが、シミュレーションを実施するのに先んじてその整合性を確認する手立てがない。また、複雑な有限状態機械に関しては、人手によって網羅的な状態遷移のシーケンスを記述すること自体が困難である。
【００２８】
このようなアサーション検証に関しての従来技術としては、例えば、特許文献１および特許文献２に記載の技術がある。
【００２９】
特許文献１においては、状態遷移機械をグラフでモデル化し、アサーションを満たすべき状態遷移経路の探索に関する技術が示されている。また、このグラフの解析によってのみアサーションの正当性を確認する技術が示されている。これにより、回路仕様とアサーション記述との整合性を確認することができる。
【００３０】
しかし、この技術では、グラフ化する状態遷移機械は、人手で、基礎となる状態遷移機械のモデルを作成するか、もしくは、レジスタ転送レベルの記述言語で作成された設計データから抽出するようにしている。そのため、整合性一致の対象自体、すなわち、回路仕様であるべき状態遷移機械のモデルへのミスの混入は否めない。
【００３１】
また、特許文献２においては、レジスタ転送レベルの設計データからデータ転送の構造を抽出してグラフ構造へ展開し、対象回路に関して検証すべきアサーションを生成する技術が記載されている。しかし、この技術では、回路仕様であるアサーションが設計データから抽出されるので、回路仕様とアサーション記述との整合性一致は保証されない。
【００３２】
【特許文献１】特開２０００−１８１９３３号公報
【特許文献２】特開２０００−１４２９１８号公報
【非特許文献１】「Property Specification Language Reference Manual Version 1.1 June 9,2004」、［online］、［平成１６年９月１４日検索］、インターネット＜URL : http://http://www.eda.org/vfv/docs/PSL-v1.1.pdf
【発明の開示】
【発明が解決しようとする課題】
【００３３】
解決しようとする問題点は、従来の技術では、回路仕様とアサーション記述との整合性一致は保証されない点である。
【００３４】
本発明の目的は、これら従来技術の課題を解決し、例えばＬＳＩ等に対するアサーション検証の高信頼化および高効率化を可能とすることである。
【課題を解決するための手段】
【００３５】
上記目的を達成するため、本発明では、操作者が回路の仕様書を作成するときに使用した視覚的な状態遷移図やタイミングチャート、および、処理のシーケンス図等をもとにして、検証すべきプロパティを自動的にアサーション記述言語へ変換することを特徴とする。
【発明の効果】
【００３６】
本発明によれば、例えば仕様書に添付される状態遷移図の電子データから、検証すべきプロパティのアサーション記述を自動的に生成するので、回路仕様とアサーションとの整合性が一致する。これにより、アサーションのデバッグに費やす作業が削除できる。また、生成したアサーションは、状態遷移の経路を網羅的に探索して生成した機能カバレッジ・ポイントであるので、検証の後、どの経路がテストされていないかを機能カバレッジ・レポートからフィードバックでき、コーナーケースのテスト漏れを防ぐことができる。また、例えば仕様書に添付するタイミングチャートや信号の選択条件、あるいは処理のシーケンスを注釈もしくは定義した図形もしくは表形式の電子データから、検証すべきプロパティのアサーション記述を自動的に生成するので、回路仕様とアサーションとの整合性が一致する。これにより、アサーションのデバッグに費やす作業が削除できる。特に、仕様書に添付するタイミングチャートや信号の選択条件、または処理のシーケンスというのは検証時に必ずテストされなければならないほど重要なアサーションであることが多く、生成したアサーションは重要プロパティであり、仕様書や回路機能を熟知しない設計者がキー・プロパティを使って検証作業を行うことができ、最終的に検証漏れによるシステムの改版率を低減させることが可能である。
【発明を実施するための最良の形態】
【００３７】
以下、図を用いて本発明を実施するための最良の形態例を説明する。
【００３８】
図１は、本発明に係わるアサーション生成システムおよび回路検証システムを構成するハードウェアの構成例を示すブロック図であり、図２は、本発明に係わるアサーション生成システムの第１の機能構成例およびそれを用いた回路検証システムの構成例を示すブロック図、図３は、本発明に係わるアサーション生成システムで用いられるグラフ構造のメモリイメージ例を示す説明図、図４は、本発明に係わるアサーション生成システムで用いられる状態遷移図とそのグラフ構造例を示す説明図、図５は、本発明に係わるアサーション生成システムの第２の機能構成例を示すブロック図、図６は、本発明に係わるアサーション生成システムの第３の機能構成例を示すブロック図、図７は、本発明に係わるアサーション生成システムで用いられるタイミングチャート例を示す説明図、図８は、本発明に係わるアサーション生成システムで用いられるタイミングチャート上で定義される信号に関する情報および当該信号に対するタイミング制約に関する情報を格納するための構造体例を示す説明図、図９は、図７におけるタイミングチャートに関するプロパティ情報のメモリイメージ例を示す説明図、図１０は、本発明に係わるアサーション生成システムの第４の機能構成例を示すブロック図、図１１は、本発明に係わるアサーション生成システムで用いられるフルアダーの論理テーブルの構成例を示す説明図、図１２は、表（テーブル）におけるセルをメモリ上に展開するときの１個のセルを表すための構造体例を示す説明図、図１３は、図１２におけるセルを表す構造体を組み合わせてシートを構成したときのイメージ例を示す説明図、図１４は、図１１におけるフルアダーの論理テーブルを図１３のメモリ構造へ展開したときのイメージ例を示す説明図、図１５は、本発明に係わるアサーション生成システムで用いられる処理シーケンスの表形式での構造例を示す説明図である。
【００３９】
図１において、１０１はメモリもしくはハードディスク等からなる記憶装置、１０２はＣＰＵ（Central Processing Unit、中央処理装置）、１０３はキーボードやマウスなどからなる入力装置、１０４はＣＲＴ（Cathode Ray Tube）やＬＣＤ（Lquid Crystal Display）等からなる表示装置、１０５はシステムバスであり、システムバス１０５で各装置１０１〜１０４を接続することでコンピュータシステムを構成している。
【００４０】
記憶装置１０１では、アーキテクチャに依存しないハードウエア機能記述や本発明に係わる各機能・手段を、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）やＤＶＤ（Digital Video Disc/Digital Versatile Disc）あるいはＦＤ（Flexible Disk）等のコンピュータ読み取り可能な記録媒体から読み取られた実行可能なプログラムの形式で格納する。ＣＰＵ１０２は、記憶装置１０１に記憶されたプログラムを実行することで、図２に示す構成のアサーション生成システムにおける各機能としての処理を実行する。
【００４１】
入力装置１０３を用いて、ユーザは、アーキテクチャに依存しないハードウエア機能記述の入力・編集や本発明の各手段を実現したプログラムの実行命令を対話的に入力する。そして、表示装置１０４において、アーキテクチャに依存しないハードウエア機能記述の表示や、ＣＰＵ１０２による本発明の各手段を実現したプログラムの実行経過や実行結果を表示する。
【００４２】
図２においては、本発明に係るアサーション生成システム２０７およびそれを用いた回路検証システムの基本構成を示しており、まず、グラフィカルエディタ２０１において、ユーザ操作により、仕様書に明記すべき回路仕様が入力され、このグラフィカルエディタ２０１で作成された仕様書は、電子データ２０２として、記憶装置１０１に記憶される。尚、グラフィカルエディタ２０１としては、例えば、特開平１−３０９１８５号公報に記載のタイミングチャート・エディタ等のグラフィカルエディタを用いることができる。
【００４３】
次に、構文解析器２０３により、記憶装置１０１に記憶された電子データ２０２を読み出して構文解析し、この構文解析結果から、プロパティ抽出器２０４により、検証すべきプロパティを抽出する。
【００４４】
そして、アサーション生成器２０５において、プロパティ抽出器２０４で抽出したプロパティから、シミュレータや静的プロパティチェッカへ入力可能なアサーション記述言語２０６を生成する。このようにして生成されたアサーション記述言語２０６は、記憶装置１０１に格納され、シミュレータに入力され、検証が行われる。
【００４５】
このように、本例のアサーション生成システムでは、半導体集積回路や半導体集積回路の一部分の仕様に関するプロパティをアサーション記述した設計データと当該プロパティの対象回路の設計データとをシミュレータ、もしくは静的検証ツールで検証するアサーション検証を行うに際に、グラフィカルエディタ２０１において、有限状態機械の仕様を、状態遷移表や状態遷移図による視覚的表現で編集して仕様書電子データ（設計データ）を生成し、このようにグラフィカルエディタ２０１において定義した回路仕様に関し、構文解析器２０３およびプロパティ抽出器２０４において、当該設計データを基に検証すべきプロパティを生成し、アサーション生成器２０５において、このプロパティをアサーション記述によって出力する。
【００４６】
尚、グラフィカルエディタ２０１で作成された設計データ（仕様書電子データ）はメモリ上でグラフ構造に展開され、プロパティ生成抽出器２０４によって参照可能となっている。また、グラフィカルエディタ２０１で作成される設計データ（仕様書電子データ）には、状態遷移表や状態遷移図の他に、表入力や図形を編集可能なビジネスツールを用いて回路の処理シーケンスをタイミングチャートや時系列に図示したものも適用できる。
【００４７】
図５においては、グラフィカルエディタ２０１で作成される設計データ（仕様書電子データ）として「状態遷移図」を適用する際の例を示している。本図５において、グラフィカル情報５０１は、例えば図４（ａ）に例示される状態遷移図であり、グラフィカルエディタによって編集、作成され、システムメモリ、もしくはハードディスク等の記憶装置に格納されている。
【００４８】
また、このグラフィカル情報５０１は、視覚的情報、すなわち状態遷移図の各構成要素を配置したときの座標情報などを含んでおり、視覚的に表示された状態遷移図はプリントアウトして仕様書に添付できるようになっている。
【００４９】
グラフ探索エンジン５０２は、図２における構文解析器２０３とプロパティ抽出器２０４の機能を有し、グラフィカル情報５０１としての図４（ａ）に例示する状態遷移図から、図４（ｂ）に例示するグラフ構造を抽出し、システムメモリ上に展開する。抽出したグラフは状態遷移図の各構成要素をノードとして構成されており、グラフ探索エンジン５０２は、状態遷移の経路を探索する。例えば、状態遷移機械の初期状態からのあらゆる遷移パスを探索し、それらを抽出し、経路データベース（図中「経路ＢＤ」と記載）５０３として、システムメモリに展開、もしくはハードディスク上に格納する。
【００５０】
そして、プロパティ変換器５０４は、経路データベース５０３を参照して、グラフ探索エンジン５０２で探索した状態遷移パスをアサーション記述言語５０５へ変換する。このプロパティ変換器５０４での変換後のアサーション記述言語５０５は、例えば、シミュレーションでテストされたかどうかを確認するための機能カバレッジ・ポイントとして記述される。
【００５１】
グラフ探索エンジン５０２で使用するグラフ構造のメモリイメージを、図３に示す。この図３において、３０１は状態遷移図中の各状態に関する情報を保持するための構造体であり、３０２は状態遷移図中のアークに関する情報を保持するための構造体である。これらの構造体３０１，３０２は、相互にポインタ参照しており、それぞれのポインタをノードとしたグラフを構成する。
【００５２】
図４においては、図４（ａ）に状態遷移図の例を示し、それから生成されるグラフ構造を図４（Ｂ）に示す。図５のグラフ探索エンジン５０２の処理は、図４（ａ）に示す状態遷移図に対して、グラフ理論における経路探索、例えば最短経路探索のアルゴリズムなどを利用して状態遷移経路を探索するようにしている。その結果として、図４（ｂ）に示すグラフ構造が生成され、経路データベース５０３に格納される。
【００５３】
以下に、図４の例を用いて、図５の経路データベース５０３に格納されうる状態遷移パスを例示す。
【００５４】
Init ;
(GO) S1 ;
init ;
【００５５】
この例では、initからS1への経路が探索されており、しかもそれは「GO」が真、すなわち「１」である場合に、その状態遷移パスが成立することを表している。
【００５６】
また、この状態遷移パスから、図５のプロパティ変換器５０４（図２におけるアサーション生成器２０５）にり生成されるアサーション記述をＰＳＬで以下に例示する。
【００５７】
property init_to_S1 = always { state == init & GO} |=> { state == S1};
【００５８】
状態遷移機械の場合、検証で全ての状態を訪問したか、と言ったことも回路機能の鍵となる重要機能の検証精度の定量化のために必要となる。状態遷移機械の各状態が訪問されたかどうかはＰＳＬのcover構文で状態の検証の被服率を確認すればよい。図４の例であれば、グラフのノードに格納された状態名をＰＳＬのcover記述でリスト生成するだけでよい。
【００５９】
以下にその結果を示す。ここでstateは状態遷移機械の実装時に状態を保持するための状態レジスタ名である。
【００６０】
// psl cover ( state == init);
// psl cover ( state == S1);
【００６１】
尚、図５におけるグラフィカル情報５０１が、座標情報と共に、図３および図４（ｂ）に示すように、グラフ構造に関する情報を併せ持つようにした場合、グラフ探索エンジン５０２は、直接、グラフィカル情報５０１内のグラフ構造を参照する。
【００６２】
次に、図６を用いて他の実施例を説明する。本図６に示す例では、仕様書に添付すべきタイミングチャートの電子データ６０１からタイミングチャート情報を抽出し、検証すべき信号群のタイミングに関する相互関係をアサーション記述するようにしている。
【００６３】
図６において、６０２はタイミングチャートの電子データ６０１を読みとるタイミングチャート読み取り器、６０３は検証すべき信号群のタイミングに関する相互関係（タイミングチャート情報）を抽出してタイミングチャートデータベース（ＤＢ）６０４に格納するタイミング・プロパティ抽出器、６０５はタイミングチャートデータベース（ＤＢ）６０４からタイミングチャート情報を読み出してシミュレータや静的プロパティチェッカへ入力可能なアサーション記述言語６０６を生成するプロパティ変換器である。
【００６４】
尚、タイミングチャートの電子データ６０１は、タイミングチャート・エディタで作成・編集されたものでよく、その場合のタイミングチャート読み取り器６０２は、タイミングチャート・エディタで作成・編集されたタイミングチャート情報の構文解析器で構成される。
【００６５】
タイミング・プロパティ抽出器６０３で使用するメモリイメージを図８に示す。本図８において、８０１はタイミングチャート上で定義される信号に関する情報を格納するための構造体であって、８０２は前記信号に対して相互にタイミング制約に関する情報を格納するための構造体である。
【００６６】
タイミングチャート読み取り器６０２で読み取るタイミングチャートの具体例を図７に示す。本図７に示す例では、clkに同期してreqの立ち上がりから２〜５サイクルの間にackが立ち上がることを示している。
【００６７】
このように、図７の例では「reqの出力信号が１になった後、clkの２〜５クロックの範囲でackの立ち上がりを受信しなければならない」というタイミング制約（プロパティ）が描かれている。
【００６８】
そして、図６のタイミング・プロパティ抽出器６０３は、IN,OUT,CKなどの信号属性や、立ち上がり条件を意味する「pos」、「<-」、「->」のような信号群のタイミングに関する相互関係をキーワードにして検証すべきタイミング情報（プロパティ）を抽出する。
【００６９】
この結果、図７に示すタイミングチャート・エディタで作成・編集されたタイミングチャート情報は、例えば、以下のリストに編集されハードウエアに格納される。ここでは、１〜３行目はピンと、例えばクロック入力であるとか入出の属性を宣言している。４〜７行目は波形情報である。このうち６行目は「clkに同期してreqの立ち上がりから２〜５サイクルの間にackが立ち上がる」というプロパティが示されている。
【００７０】
1  CK      clk;
2  IN      ack;
3  OUT     req;
4  {clk,req.ack} = {1,0,0};
5  {clk,req.ack} = {1,1,0};
6  {clk,req,ack} = {1,0,0}[2:5];
7  {clk,req,ack} = {1,0,1};
【００７１】
このタイミングチャート情報リストをもとに展開されたタイミングに関するプロパティ情報のメモリイメージを、図９に例示する。
【００７２】
次に、上述した回路の論理テーブルや時系列プロパティの編集に、表入力や図形の編集可能なビジネスツールを用いる例を説明する。
【００７３】
図１１は、フルアダーの論理テーブルをマイクロソフト社の表入力ツールであるＥｘｃｅｌ（登録商標）で入力したものである。太字で示したNAME,CLOCK,CONDITION,EXPECTは表定義する際の予約語であって、それぞれプロパティ名、クロック名、アサーション・チェックの開始条件、アサーション・チェックが開始されたときの期待動作を表す。
【００７４】
また、CONDITION,EXPECTのすぐ下の欄は信号名であり、その下には論理値が続いている。このＥｘｃｅｌ（登録商標）によれば表の一こまを「セル」という基本単位で面（シートと呼ばれる）を構成しており、各セルを「,」で区切ったASCIIファイルで出力可能である。
【００７５】
図７の場合は、信号名やクロックの１／２パルス等をセルで管理し、いったんメモリ上へ展開した後にセルの構成を走査して、図９に示すメモリイメージへ展開するようにした。
【００７６】
図１２は、Ｅｘｃｅｌ（登録商標）のセルをメモリ上に展開するときの１個のセルを表すための構造体である。この構造体のtop,bottom,left,rightのメンバは、それぞれセルの上下、左右をポインタ参照する。
【００７７】
図１３は、図１２のセルを表す構造体を組み合わせてシートを構成したときのイメージ図である。１３０１はシートを示すポインタであって、次のシートのポインタ参照であるnextとセルのヘッダをポインタ参照するメンバで構成している。１３０２はセルのポインタであって、top,bottom,left,rightのメンバで上下、左右をポインタ参照している。こうしておけばシート上のセルの走査がメモリ上で容易に可能であり、NAME,CLOCK,CONDITION,EXPECTといったキーワードによる検索と論理テーブルの解釈が可能である。
【００７８】
図１４には、図１１のフルアダーの論理テーブルを図１３のメモリ構造へ展開したときのイメージを示している。
【００７９】
また、以下に、図１１で示したフルアダーの論理テーブルからアサーション記述を生成したＰＳＬ記述を示す。ここでは、アサーション名の構成に表の行番号を含ませることで表と検証データ（すなわちアサーション）とが容易にリンクできるようにしている。例えば１行目であればFADD_S_0__FADD_csv_line_5がアサーション名であって、このうちline_5は表の行番号に相当している。
【００８０】
psl property FADD_S_0__FADD_csv_line_5 = always {!A & !B & !CI} |-> {S === 1'b0};
psl property FADD_CO_0__FADD_csv_line_5 = always {!A & !B & !CI} |-> {CO === 1'b0};
psl property FADD_S_1__FADD_csv_line_6 = always {!A & !B & CI} |-> {S === 1'b1};
psl property FADD_CO_1__FADD_csv_line_6 = always {!A & !B & CI} |-> {CO === 1'b0};
psl property FADD_S_2__FADD_csv_line_7 = always {!A & B & !CI} |-> {S === 1'b1};
psl property FADD_CO_2__FADD_csv_line_7 = always {!A & B & !CI} |-> {CO === 1'b0};
psl property FADD_S_3__FADD_csv_line_8 = always {!A & B & CI} |-> {S === 1'b0};
psl property FADD_CO_3__FADD_csv_line_8 = always {!A & B & CI} |-> {CO === 1'b1};
psl property FADD_S_4__FADD_csv_line_9 = always {A & !B & !CI} |-> {S === 1'b1};
psl property FADD_CO_4__FADD_csv_line_9 = always {A & !B & !CI} |-> {CO === 1'b0};
psl property FADD_S_5__FADD_csv_line_10 = always {A & !B & CI} |-> {S === 1'b0};
psl property FADD_CO_5__FADD_csv_line_10 = always {A & !B & CI} |-> {CO === 1'b1};
psl property FADD_S_6__FADD_csv_line_11 = always {A & B & !CI} |-> {S === 1'b0};
psl property FADD_CO_6__FADD_csv_line_11 = always {A & B & !CI} |-> {CO === 1'b1};
psl property FADD_S_7__FADD_csv_line_12 = always {A & B & CI} |-> {S === 1'b1};
psl property FADD_CO_7__FADD_csv_line_12 = always {A & B & CI} |-> {CO === 1'b1};
【００８１】
図１０において、本発明に係わる他の実施例を示す。この例では仕様書に添付すべきシーケンスを表データ１００１として格納しており、構文解析器１００２によって、表形式で定義されたシーケンスをシステムメモリ上に展開し、シーケンス抽出器１００３によって、検証すべき処理のシーケンスを抽出し、プロパティ変換器１００４によって、アサーション記述１００５へ変換するようにしている。
【００８２】
表形式による処理のシーケンスの例を図１５に示す。この例は図７と同じプロパティを示している。この例もＥｘｃｅｌ（登録商標）で作成されている。構文解析器１００２やシーケンス抽出器１００３は、セル内に記述されたシーケンスを時系列に分解し、プロパティ変換器１００４において、ＰＳＬのSERE拡張正規表現でアサーション記述を生成するようにしている。
【００８３】
シーケンスの時系列への分解は、文字列内の「；」をクロックの1サイクル間の振る舞いとして解釈する。また、図１５に示す「0[*2:5]」はＰＳＬの繰り返し表現を用いており、Low期間が２〜５サイクル間だけ継続することを意味している。また、「ack」は「0[*2*5];1;0」と記されているので、「ack」はLow期間が２〜５サイクル間だけ継続し、その後、High,Lowと続く振る舞いであることを示している。
【００８４】
以下に、図１５を元に生成されたＰＳＬのアサーション記述を示す。
【００８５】
psl property reqack_ack_0__REQ_csv_line_5 =
always {(rose)} |-> {{ack === 1'b0}[*2:5];{ack === 1'b1};{ack === 1'b0}};
【００８６】
尚、図５と図６および図１０に示された各処理フローを、図１におけるＣＰＵ１０２が実行するためのプログラムは、実行可能な形式で磁気メディア等に記録され、図１の記憶装置１０１に格納される。
【００８７】
以上、図１〜図１５を用いて説明したように、本例のアサーション生成システム２０７は、半導体集積回路のアサーション検証に用いるアサーション記述を生成するものであって、グラフィカルエディタ（仕様入力手段）２０１により、ユーザ操作に基づき半導体集積回路の仕様（有限状態機械、処理シーケンス）を、状態遷移表や状態遷移図、あるいは、タイミングチャートや時系列図形で、グラフィカルに編集して当該半導体集積回路の設計データを生成し、グラフ構造に展開して仕様書電子データ２０２とし、記憶装置に記憶し、構文解析器２０３およびプロパティ抽出器２０４（プロパティ生成手段）により、仕様書電子データ（設計データ）を記憶装置から読み出し、この設計データを元に、半導体集積回路の仕様に関して検証すべきプロパティを生成し、そして、アサーション生成器（アサーション生成手段）２０５により、当該プロパティをアサーション記述言語２０６に変換する。
【００８８】
尚、グラフィカルエディタ（仕様入力手段）２０１では、ユーザ操作に基づき半導体集積回路の仕様を論理テーブルもしくは状態テーブルで編集して、当該半導体集積回路の設計データを生成することでも良い。そして、アサーション生成器２０５は、グラフィカルエディタ（仕様入力手段）２０１で編集した論理テーブルもしくは状態テーブルのテーブル名あるいはテーブルの行番号、または、当該論理テーブルもしくは状態テーブルにおける信号名あるいは状態名で構成されたアサーション名を付加されたアサーション記述に変換する。
【００８９】
また、本例の回路検証システムは、このようなアサーション生成システム２０７を具備し、このアサーション生成システムで生成したアサーション記述を用いて半導体集積回路のアサーション検証を行う。
【００９０】
このように、本例では、仕様書に添付する状態遷移図の電子データから、検証すべきプロパティのアサーション記述を自動的に生成するようにしたので、回路仕様とアサーションとの整合性が一致する。そのためアサーションのデバッグに費やす作業が削除できる。また生成されたアサーションは状態遷移の経路を網羅的に探索されて生成された機能カバレッジ・ポイントであるので、検証の後、どの経路がテストされていないかを機能カバレッジ・レポートからフィードバックでき、コーナー・ケースのテスト漏れを防ぐことが出来る。
【００９１】
また、仕様書に添付するタイミングチャートや信号の選択条件、または処理のシーケンスを注釈もしくは定義した図形もしくは表形式の電子データから、検証すべきプロパティのアサーション記述を自動的に生成するようにしたので、回路仕様とアサーションとの整合性が一致する。そのためアサーションのデバッグに費やす作業が削除できる。また仕様書に添付するタイミングチャートや信号の選択条件、または処理のシーケンスというのは検証時に必ずテストされなければならないほど重要なアサーションであることが多いが、本例で生成されるアサーションは重要プロパティであり、仕様書や回路機能を熟知しない設計者がキー・プロパティを使って検証作業を行うことができ、最終的に検証漏れによるシステムの改版率を低減させることができる。
【００９２】
尚、本発明は、図１〜図１５を用いて説明した例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。例えば、本例では、プロパティ抽出器２０４やアサーション生成器２０５等を構成するプログラムは、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）やＤＶＤ（Digital Video Disc/Digital Versatile Disc）あるいはＦＤ（Flexible Disk）等の記録媒体から記憶装置１０１にインストールする構成としているが、このようなプログラムのインストールに関しては、通信装置を介してネットワーク経由でプログラムをダウンロードしてインストールすることでも良い。
【００９３】
また、本例では、ＰＳＬでのアサーション記述を例に説明したが、他のアサーション記述にも適用可能である。
【図面の簡単な説明】
【００９４】
【図１】本発明に係わるアサーション生成システムおよび回路検証システムを構成するハードウェアの構成例を示すブロック図である。
【図２】本発明に係わるアサーション生成システムの第１の機能構成例およびそれを用いた回路検証システムの構成例を示すブロック図である。
【図３】本発明に係わるアサーション生成システムで用いられるグラフ構造のメモリイメージ例を示す説明図である。
【図４】本発明に係わるアサーション生成システムで用いられる状態遷移図とそのグラフ構造例を示す説明図である。
【図５】本発明に係わるアサーション生成システムの第２の機能構成例を示すブロック図である。
【図６】本発明に係わるアサーション生成システムの第３の機能構成例を示すブロック図である。
【図７】本発明に係わるアサーション生成システムで用いられるタイミングチャート例を示す説明図である。
【図８】本発明に係わるアサーション生成システムで用いられるタイミングチャート上で定義される信号に関する情報および当該信号に対するタイミング制約に関する情報を格納するための構造体例を示す説明図である。
【図９】図７におけるタイミングチャートに関するプロパティ情報のメモリイメージ例を示す説明図である。
【図１０】本発明に係わるアサーション生成システムの第４の機能構成例を示すブロック図である。
【図１１】本発明に係わるアサーション生成システムで用いられるフルアダーの論理テーブルの構成例を示す説明図である。
【図１２】表（テーブル）におけるセルをメモリ上に展開するときの１個のセルを表すための構造体例を示す説明図である。
【図１３】図１２におけるセルを表す構造体を組み合わせてシートを構成したときのイメージ例を示す説明図である。
【図１４】図１１におけるフルアダーの論理テーブルを図１３のメモリ構造へ展開したときのイメージ例を示す説明図である。
【図１５】本発明に係わるアサーション生成システムで用いられる処理シーケンスの表形式での構造例を示す説明図である。
【符号の説明】
【００９５】
１０１：記憶装置、１０２：ＣＰＵ、１０３：入力装置、１０４：表示装置、１０５：システムバス、２０１：グラフィカルエディタ、２０２：電子データ、２０３：構文解析器、２０４：プロパティ抽出器、２０５：アサーション生成器、２０６：アサーション記述言語、３０１：構造体（アークの集合へのポインタ）、３０２：構造体（Ｎｅｘｔアーク・ポインタ）、５０１：グラフィカル情報、５０２：グラフ探索エンジン、５０３：経路データベース（ＤＢ）、５０４：プロパティ変換器、５０５：アサーション記述言語、６０１：タイミングチャート電子データ、６０２：タイミングチャート読み取り器、６０３：タイミング・プロパティ抽出器、６０４：タイミングチャートデータベース（ＤＢ）、６０５：プロパティ変換器、６０６：アサーション記述言語、８０１：構造体（関連信号へのポインタ）、８０２：構造体（Ｎｅｘｔ制約ポインタ）、１００１：表データ、１００２：構文解析器、１００３：シーケンス抽出器、１００４：プロパティ変換器、１００５：アサーション記述言語、１３０１：ポインタ（シートを示す）、１３０２：ポインタ（セル）。
【図１】
2006099518.tif 000003
【図２】
2006099518.tif 000004
【図３】
2006099518.tif 000005
【図４】
2006099518.tif 000006
【図５】
2006099518.tif 000007
【図６】
2006099518.tif 000008
【図７】
2006099518.tif 000009
【図８】
2006099518.tif 000010
【図９】
2006099518.tif 000011
【図１０】
2006099518.tif 000012
【図１１】
2006099518.tif 000013
【図１２】
2006099518.tif 000014
【図１３】
2006099518.tif 000015
【図１４】
2006099518.tif 000016
【図１５】
2006099518.tif 000017