半導体集積回路の検証装置及び検証方法
【課題】設計品質の向上を可能とする。
【解決手段】半導体集積回路を構成する回路の接続関係を示す接続仕様情報と、前記半導体集積回路の構成を記述した回路記述情報との回路接続関係の一致性を検証する半導体集積回路の検証装置であって、前記接続仕様情報をアサーション言語で記述された接続情報ファイルに変換するアサーション生成部と、前記接続仕様情報からオープンである端子を抽出した第1の端子情報と、前記回路記述情報からオープンである端子の情報を抽出した第2の端子情報とに応じて、前記第1の端子情報と第2の端子情報の一致性を比較する比較部と、前記接続情報ファイルと前記回路記述情報とに応じてフォーマル検証を行うフォーマル検証部と、を有し、前記フォーマル検証部の検証結果と前記比較部の比較結果から、半導体集積回路を構成する回路の接続関係を検証する半導体集積回路の検証装置。
【解決手段】半導体集積回路を構成する回路の接続関係を示す接続仕様情報と、前記半導体集積回路の構成を記述した回路記述情報との回路接続関係の一致性を検証する半導体集積回路の検証装置であって、前記接続仕様情報をアサーション言語で記述された接続情報ファイルに変換するアサーション生成部と、前記接続仕様情報からオープンである端子を抽出した第1の端子情報と、前記回路記述情報からオープンである端子の情報を抽出した第2の端子情報とに応じて、前記第1の端子情報と第2の端子情報の一致性を比較する比較部と、前記接続情報ファイルと前記回路記述情報とに応じてフォーマル検証を行うフォーマル検証部と、を有し、前記フォーマル検証部の検証結果と前記比較部の比較結果から、半導体集積回路を構成する回路の接続関係を検証する半導体集積回路の検証装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体集積回路の検証装置及び検証方法に関するものである。
【背景技術】
【0002】
一般に論理回路の検証方法には、大きく分けて論理シミュレーションとフォーマル検証がある。論理シミュレーションは、入力パターンを検証対象回路に与えて動作をシミュレーションし、出力パターンを期待値と比較して回路の正しさを検証する方法である。
【0003】
一方、フォーマル検証は、設計の仕様と、検証対象回路をそれぞれ数学的に解析することで、回路の正しさを検証する方法である。なお、上記設計の仕様は、通常、IEEEで標準化されたPSL(Property Specification Language)や、SVA(System Verilog Assertion)のアサーション言語で記述される。
【0004】
半導体集積回路は、各機能ブロック(以下、マクロと称す)から構成される。半導体集積回路は、年々回路の大規模化が進んでいる。大規模な半導体集積回路において、構成するマクロ間の接続関係を検証するために論理シミュレーションを用いる場合、膨大なテストパターンと、それをシミュレーションする膨大な時間がかかってしまう。このため、多大な検証工数が必要となってしまう。
【0005】
一方、フォーマル検証では、テストパターンを作成する必要がないため、大幅な工数削減が期待できる。また、数学的に証明できるため、シミュレーションにおけるテストパターン漏れの心配が無い。そのため、マクロ間の接続検証には、フォーマル検証がシミュレーションより有効であり、その利用が拡大している。
【0006】
半導体集積回路を構成する回路の接続仕様及びその回路記述との回路接続関係の一致性をフォーマル検証する半導体集積回路の検証装置として、例えば特許文献1のような検証装置が提案されている。特許文献1に開示されている検証装置10の構成を図13に示す。
【0007】
図13に示すように、検証装置10は、プロパティ生成手段3と、検証実行手段5と、検証結果確認手段6とを有する。
【0008】
プロパティ生成手段3は、検証対象回路の接続仕様1を読み込み、プロパティ4を生成する。プロパティ生成手段3は、個々の出力信号に対しユニークなプロパティを設定し、その出力信号が接続される入力信号については同一のプロパティ、若しくは同一のプロパティに極性情報を付加したプロパティを生成する。
【0009】
検証実行手段5は、プロパティ4と回路記述2を読み込み、接続される出力信号と入力信号のプロパティが一致しているかの比較検証を行う。
【0010】
検証結果確認手段6は、検証実行手段5での検証結果を表示する。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開2005−196681号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
特許文献1のような従来技術では、接続仕様からアサーション(プロパティ)に変換できるものしか検証できない。このため、通常、接続仕様として存在する半導体集積回路のマクロの端子がオープン(未接続)である箇所については検証できない。
【0013】
このことは、半導体集積回路の設計仕様と回路記述との一致性を検証するために行われるフォーマル検証において、設計仕様の記述言語として一般に使用されるアサーション言語(例えばPSL、SVA)では、オープンである端子を記述するという概念そのものがなく、記述できないからである。
【0014】
従って、設計者が意図してオープンとしたのか、設計ミスとしてオープンとしたのかの区別がつかない問題がある。
【課題を解決するための手段】
【0015】
本発明の一態様は、半導体集積回路を構成する回路の接続関係を示す接続仕様情報と、前記半導体集積回路の構成を記述した回路記述情報との回路接続関係の一致性を検証する半導体集積回路の検証装置であって、前記接続仕様情報をアサーション言語で記述された接続情報ファイルに変換するアサーション生成部と、前記接続仕様情報からオープンである端子を抽出した第1の端子情報と、前記回路記述情報からオープンである端子の情報を抽出した第2の端子情報とに応じて、前記第1の端子情報と第2の端子情報の一致性を比較する比較部と、前記接続情報ファイルと前記回路記述情報とに応じてフォーマル検証を行うフォーマル検証部と、を有し、前記フォーマル検証部の検証結果と前記比較部の比較結果から、半導体集積回路を構成する回路の接続関係を検証する半導体集積回路の検証装置である。
【0016】
本発明の他の態様は、半導体集積回路を構成する回路の接続関係を示す接続仕様情報と、前記半導体集積回路の構成を記述した回路記述情報との回路接続関係の一致性を検証する半導体集積回路の検証方法であって、前記接続仕様情報をアサーション言語で記述された接続情報ファイルに変換し、前記接続仕様情報からオープンである端子を抽出した第1の端子情報と、前記回路記述情報からオープンである端子の情報を抽出した第2の端子情報とに応じて、前記第1の端子情報と第2の端子情報の一致性を比較し、前記接続情報ファイルと前記回路記述情報とに応じてフォーマル検証を行い、前記フォーマル検証の検証結果と、前記第1の端子情報と第2の端子情報の一致性の比較結果とから半導体集積回路を構成する回路の接続関係を検証する半導体集積回路の検証方法である。
【0017】
本発明にかかる半導体集積回路の検証装置は、半導体集積回路を構成する回路の端子間に限定された接続仕様だけでなく、半導体集積回路を構成する回路の端子のオープン(未接続)箇所も含まれた接続仕様を用いて、設計結果である回路記述との回路接続関係の一致性を検証するこができる。これにより、半導体集積回路を構成する回路の接続検証に加えて、半導体集積回路を構成する回路のオープン端子について、設計者が意図してオープンとしたのか、設計ミスとしてオープンとしたのかを区別することが可能である。
【発明の効果】
【0018】
本発明は、半導体集積回路の設計品質の向上を可能とする。
【図面の簡単な説明】
【0019】
【図1】実施の形態1にかかる半導体集積回路の検証装置の構成を示すブロック図である。
【図2】実施の形態1にかかる接続仕様の情報の一例である。
【図3】実施の形態1にかかる回路記述により構成される半導体集積回路の構成の一例である。
【図4】実施の形態1にかかる回路記述のVerilog記述の一例である。
【図5】実施の形態1にかかるアサーション生成部により生成されるアサーションファイルの一例である。
【図6】実施の形態1にかかるアサーション生成部により生成されるバインドファイルの一例である。
【図7】実施の形態1にかかるオープンリスト生成部により生成されたオープンリストの一例である。
【図8】実施の形態1にかかる検証結果確認部の生成する結果情報の一例である。
【図9】実施の形態2にかかる半導体集積回路の検証装置の構成を示すブロック図である。
【図10】実施の形態2にかかる接続仕様の情報の一例である。
【図11】実施の形態2にかかる検証結果確認部の生成する結果情報の一例である。
【図12】その他の実施の形態にかかる半導体集積回路の検証装置の構成を示すブロック図である。
【図13】従来の半導体集積回路の検証装置の構成を示すブロック図である。
【発明を実施するための形態】
【0020】
発明の実施の形態1
【0021】
以下、本発明を適用した具体的な実施の形態1について、図面を参照しながら詳細に説明する。この実施の形態1は、本発明を半導体集積回路の検証装置に適用したものである。図1に本実施の形態1にかかる半導体集積回路100の検証装置のブロック構成を示す。
【0022】
図1に示すように、半導体集積回路の検証装置100は、アサーション生成部103と、オープンリスト生成部105と、オープン検出部107と、フォーマル検証部108と、オープン比較部109と、検証結果確認部110とを有する。
【0023】
アサーション生成部103は、接続仕様101をアサーション言語で記述された接続情報ファイルであるアサーション104に変換する。
【0024】
ここで、接続仕様101は、検証対象となる回路記述102のマクロ間の接続仕様が記述されている。また、回路記述102は、半導体集積回路の構成を記述した検証対象となる回路記述であり、複数のマクロから構成され、通常VerilogやVHDLで記述される。
【0025】
フォーマル検証部108は、接続情報ファイルであるアサーション104と回路記述102との一致性を検証する。
【0026】
オープンリスト生成部105は、接続仕様101からオープン(未接続)である端子情報を抽出してオープンリスト106を生成する。
【0027】
オープン検出部107は、回路記述102からオープン(未接続)である端子情報を抽出する。
【0028】
オープン比較部109は、オープンリスト生成部105により生成されたオープンリスト106と、オープン検出部107により抽出された回路記述102のオープン端子情報とを比較する。
【0029】
検証結果確認部110は、フォーマル検証部108により得られた検証結果と、オープン比較部109で得られたオープン比較結果とを合わせて総合的な検証結果として表示する。
【0030】
次に、半導体集積回路の検証装置100の動作について説明する。まず、図2に接続仕様101の一例を示す。また、図3、図4に、それぞれ回路記述102による半導体集積回路S_CHIPの構成例、Verilog記述例を示す。なお、図4のVerilogの記述内容が、図3の半導体集積回路S_CHIPの構成となることは、当業者において自明であるため図4の記述内容に関する詳細な説明は省略する。
【0031】
半導体集積回路は、通常、複数のマクロから構成されており、図3の例では半導体集積回路S_CHIPが、2つのマクロD_MACRO、C_MACROを有する。ここでは、マクロD_MACRO、C_MACROのインスタンス名がそれぞれDINSTとCINSTとして構成され、図3で示されるように接続されている。
【0032】
図3の半導体集積回路S_CHIPの構成を、接続仕様として定義しているが図2の接続仕様101である。この接続仕様101において、マクロ間の接続、マクロと外部端子との接続、マクロの端子でクランプされている箇所、マクロの端子でオープン(未接続)である箇所が定義されている。
【0033】
詳細には、図2に示されているように、トップモジュール名、from側インスタンス名、ポート名、ビット範囲、to側インスタンス名、ポート名、ビット範囲が記述されていて、それぞれのマクロ端子間の接続が定義される。
【0034】
例えば、マクロのインスタンス名CINST、端子名CLKである端子が、外部端子名CCLKである外部端子に接続される仕様の場合、From instance-name欄に「CINST」、From port-name欄に「CLK」、To instance-name欄に外部端子接続を示す「exported:」、To port-name欄に「CCLK」と記述される。
【0035】
また、マクロのインスタンス名CINST、端子名DATA_O[31:0]であるバス端子が、マクロのインスタンス名DINST、端子名DATA_I[31:0]であるバス端子に接続される仕様の場合、From instance-name欄に「CINST」、From port-name欄に「DATA_O」、From msb欄に「31」、From lsb欄に「0」、To instance-name欄に「DINST」、To port-name欄に「DATA_I」、To msb欄に「31」、To lsb欄に「0」と記述される。
【0036】
また、マクロのインスタンス名DINST、端子名がACKである端子が、オープン(未接続)である仕様の場合は、From instance-name欄に「DINST」、From port-name欄に「ACK」、To instance-name欄にオープンを示す「open:」と記述される。
【0037】
このような接続仕様101からアサーション生成部103によりアサーション104が生成される。アサーション104は、アサーションファイル、バインドファイルから構成される。なお、アサーションは一般的に使用されているSVA(System Verilog Assertion)言語で生成される。以下、本実施の形態1においてもSVA言語が使用されるものとする。
【0038】
図2の接続仕様の例からアサーション生成部103により生成されるアサーションファイルの例を図5、バインドファイルの例を図6に示す。図2、図5、図6を参照してアサーション生成部103の動作を説明する。
【0039】
図5に示されるように、接続検証のアサーションは、プロパティ名がconnectionである以下に示すpropertyブロック構文を各assertステートメントが呼び出す形で作成される。
property connection(sig_a, sig_b);
@(sva_check_clk)(sig_a == sig_b);
endproperty:connection
【0040】
図2の接続仕様101で、マクロのインスタンス名CINST、端子名CLKである端子が、外部端子名CCLKである外部端子に接続される仕様の場合、assertステートメントは次のように生成される。
CINST__CLK___CCLK:
assert property (connection (CINST_p_CLK, CCLK));
【0041】
ここで、上記「CINST__CLK___CCLK」は、アサートラベルでインスタンス名、端子名、外部端子名が分かるようなラベルが生成される。また、上記「assert property (connection(CINST_p_CLK, CCLK))」でconnection propertyブロック構文を呼び出している。
【0042】
connection(CINST_p_CLK, CCLK)の「CINST_p_CLK」は、回路記述102でマクロのインスタンス名CINST、端子名CLKである端子を示すS_CHIP.CINST.CLKとバインドされるよう図6のバンドファイルが生成される。同様に、connection(CINST_p_CLK, CCLK)の「CCLK」は、回路記述102で外部端子名CCLKである外部端子を示すS_CHIP.CCLKとバインドされるよう図6のバインドファイルが生成される。以降、同様な繰り返しで図2の接続仕様101からassertステートメントとバインドファイルが生成される。
【0043】
ここで、接続仕様101から、オープンリスト生成部105によりオープンリスト106が生成される。図2の接続仕様101からオープンリスト生成部105により生成されたオープンリスト106を図7に示す。
【0044】
図2、図7を参照してオープンリスト生成部105の動作を説明する。図2の接続仕様でTo instance-name欄が「open:」である行を抽出して、インスタンス名、端子名、ビット範囲からオープンリストを生成する。To instance-name欄が「open:」で、From instance-name欄が「DINST」、From port-name欄が「ACK」の場合は、図7に示すようにオープンリストに「DINST.ACK」が生成される。
【0045】
ここで、回路記述102から、オープン検出部107によりオープン端子が検出される。図3を参照してオープン検出部107の動作を説明する。オープン検出部107は、図3の回路記述102で、各マクロのそれぞれの端子を一つずつ別のマクロに繋がっているか、外部端子に繋がっているか、あるいはクランプされているかをトレースし、そのいずれでもないものをオープンとして検出する。図3の回路記述102の場合では、マクロ名D_MACRO、インスタンス名DINSTの端子であるACKとEND[7:1]が検出される。そして、この検出結果がオープン端子情報として生成される。
【0046】
ここで、アサーション104と回路記述102の一致性をフォーマル検証部108により検証する。図5、図6、図4を参照してフォーマル検証部108の動作を説明する。
【0047】
フォーマル検証部108は、図6のバインドファイルに応じて、図5のアサーションファイルの記述と図4の回路記述102(Verilog記述)とをバインドし、その後、バインドした対象が接続されているかを検証する。例えば、以下に示すような図5のアサーションファイルの記述は、DINST_p_TCOとCINST_p_INT[9]とが接続されていることを検証するアサーションである。
DINST__TCO___CINST__INT__msb9lsb9:
assert property (connection (DINST_p_TCO, CINST_p_INT[9]));
【0048】
上記アサーションファイルの記述により、DINST_p_TCOが、図6のバインドファイルに応じて、図4のVerilog記述のS_CHIP.DINST.TCOにバインドされる。ここで「S_CHIP.DINST.TCO」は図4のVerilog記述でモジュール名S_CHIP、インスタンス名DINST、端子名TCOの端子であることを示している。
【0049】
また、CINST_p_INT[9]が、図6のバインドファイルに応じて、図4のVerilog記述のS_CHIP.CINST.INT[9]にバインドされる。ここで「S_CHIP.CINST.INT[9]」は図4のVerilog記述でモジュール名S_CHIP、インスタンス名CINST、端子名INT[9]の端子であることを示している。
【0050】
そして、このアサーションファイルの記述により、Verilog記述のモジュール名S_CHIP、インスタンス名DINST、端子名TCOの端子と、モジュール名S_CHIP、インスタンス名CINST、端子名INT[9]の端子とが、接続されているかをフォーマル検証部108によりフォーマル検証される。このフォーマル検証において、上記端子同士が接続されていればそのアサーションはPassと判定、もしくは、Verilog記述で違った接続がされていればFailと判定される。そして、このようなフォーマル判定が図5のアサーションファイルの記述毎に行われる。
【0051】
ここで、オープンリスト106とオープン検出部107により検出されたオープン端子情報とが、オープン比較部109により比較される。そして、その比較結果により、一致しているか、もしくは、オープンリスト106に余分なリストがあるのか、足りないリストがあるのかのオープン比較結果情報が生成される。
【0052】
このオープン比較結果情報により、一致していると判定される場合は、接続仕様101に記述されたオープン端子の仕様通りに回路記述102は設計されていることを示している。
【0053】
また、オープン比較結果情報により、オープンリスト106に余分なリストがあると判定される場合は、接続仕様101に記述されたオープン端子の仕様とは異なり、回路記述102ではオープンではない箇所があることを示している。逆に、オープン比較結果情報により、オープンリスト106に足らないリストがあると判定される場合は、接続仕様101で定義されていないオープン端子が回路記述102に存在していることを示している。
【0054】
検証結果確認部110は、フォーマル検証部108からのアサーション104と回路記述102の一致性の判定情報を、オープン比較部109からオープンリスト106と回路記述102のマクロの端子がオープンである箇所とのオープン比較結果情報を、読み込む。そして、総合的な検証結果として表示装置等に表示、もしくは、データ出力装置等にデータとして出力する。例えば、図2の接続仕様101及び図4の回路記述102(Verilog記述)の場合、図8に示す結果が表示される。
【0055】
以下に図8を参照して検証結果確認部110の動作を説明する。図8に示すように、「アサーションチェック結果(Summary)」の「Pass」には、接続仕様通りに回路記述が接続されている箇所の数、「Fail」には接続仕様通りに回路記述が接続されていない箇所の数が表示される。
【0056】
また、図8に示すように、「オープン端子チェック結果(Summary)」の「Pass」には、接続仕様通りに回路記述のマクロの端子がオープンになっている箇所の数が示される。「Fail」には、接続仕様ではオープンになっているが回路記述では該当のマクロの端子がオープンになっていない箇所の数が示される。「Undef」には、接続仕様ではオープンと定義されていないが回路記述ではオープンになっている箇所の数が表示される。
【0057】
更に、「アサーションチェック結果(詳細)」には、アサートラベルと前記Pass、Failの結果が表示される。アサートラベルは図5で示したものと同様で、「<インスタンス名>__<端子名>___<インスタンス名>__<端子名>」という構成となっている。そして、上記情報からどの端子間の接続アサーションがPass、Failしたかが分かる。
【0058】
更に「オープン端子チェック結果(詳細)」には、接続仕様及び回路記述から抽出されたオープン端子が前記Pass、Fail、Undefの情報を伴い表示される。
【0059】
以上のように、本実施の形態1の半導体集積回路の検証装置100は、テストパターンが必要ないフォーマル検証でマクロ間の接続検証を行う場合に、接続仕様101を用いて、設計結果である回路記述102との回路接続関係の一致性を検証するこができる。
【0060】
このことは、マクロの端子間の接続仕様についてはアサーション生成部103により生成されるアサーション104と回路記述102とのフォーマル検証で、マクロの端子のオープン仕様についてはオープンリスト生成部105により生成されるオープンリスト106と回路記述102からオープン検出部107により生成されるオープン端子情報との比較で、行われる。
【0061】
これにより、マクロ間の接続検証に加えて、マクロのオープン端子について、設計者が意図してオープンとしたのか、設計ミスとしてオープンとしたのかの区別がつき、半導体集積回路の設計品質の向上が可能となる。
【0062】
発明の実施の形態2
【0063】
以下、本発明を適用した具体的な実施の形態2について、図面を参照しながら詳細に説明する。この実施の形態2は、実施の形態1と同様、本発明を半導体集積回路の検証装置に適用したものである。図9に本実施の形態1にかかる半導体集積回路200の検証装置のブロック構成を示す。
【0064】
図9に示すように、半導体集積回路の検証装置200は、アサーション生成部103と、オープンリスト生成部105と、オープン検出部107と、フォーマル検証部108と、オープン比較部109と、検証結果確認部110と、仕様網羅性比較部211とを有する。なお、図9に示された符号のうち、図1と同じ符号を付した構成は、図1と同じか又は類似の構成を示している。実施の形態1と異なるのは、仕様網羅性比較部211を更に備えている点である。よって、本実施の形態2では、その相違部分を重点的に説明し、その他実施の形態1と同様の部分の説明は、特に必要でない限り省略する。
【0065】
仕様網羅性比較部211は、アサーション104、オープンリスト106、回路記述102を読み込み、定義された接続仕様以外の余計な接続が回路記述102にないことの検証を行う。
【0066】
検証結果確認部110は、フォーマル検証部108により得られた検証結果の判定情報と、オープン比較部109で得られたオープン比較結果情報と、仕様網羅性比較部211で得られた仕様網羅性比較結果情報とを合わせて総合的な検証結果として表示する。
【0067】
次に、半導体集積回路の検証装置200の動作について説明する。この動作の説明では、実施の形態1との差分部分のみを行う。その他の実施の形態1と同様の部分の説明は省略する。
【0068】
仕様網羅性比較部211は、アサーション104、オープンリスト106、回路記述102を読み込む。そして、回路記述102からは、外部端子、マクロの端子を全て抽出する。アサーション104からは、アサーションの記述に含まれている外部端子、マクロの端子を全て抽出する。上記アサーション104から抽出された端子に、オープンリスト106の端子を加えたものと、上記回路記述102から抽出された端子の比較を行い、その結果を検証結果確認部110に伝える。
【0069】
検証結果確認部110は、フォーマル検証部108からのアサーション104と回路記述102の一致性の判定情報を、オープン比較部109からオープンリスト106と回路記述102のマクロ端子がオープンである箇所との比較結果情報(オープン比較結果情報)を、仕様網羅性比較部211からアサーション104の端子情報にオープンリスト106の端子情報を加えたものと回路記述102の端子情報との比較結果情報(仕様網羅性比較結果情報)を読み込み、総合的な検証結果として表示する。
【0070】
ここで、図10に本実施の形態2の接続仕様101の例を示す。この接続仕様101と図4の回路記述102(Verilog記述)の場合、検証結果確認部110により図11に示す結果が表示される。
【0071】
図10の接続仕様101では、図2の接続仕様101と比較して、マクロのインスタンス名DINST、端子名TCOである端子と、マクロのインスタンス名CINST、端子名INT[9]である端子との接続の定義がされていない。この図10の接続仕様101と、設計された図4の回路記述102から、上述した定義の無い部分を接続仕様101で定義し忘れたか、あるいは、図4の回路記述102により誤って接続仕様101にない接続を設計してしまったことが考えられる。
【0072】
図11を参照して検証結果確認部110の動作を説明する。図11に示す「アサーションチェック結果(Summary)」、「オープン端子チェック結果(Summary)」、「アサーションチェック結果(詳細)」、「オープン端子チェック結果(詳細)」については、実施の形態1と同様のため説明を省略する。
【0073】
図11に示すように、「接続定義漏れのチェック結果(Summary)」において、アサーション104の端子情報にオープンリスト106の端子情報を加えたものより、回路記述102の端子情報の方に一致しない余分な端子が存在する場合にその数を「Fail」として表示する。また、「接続定義漏れのチェック結果(詳細)」において、アサーション104の端子情報にオープンリスト106の端子情報を加えたもの以外の余計な端子情報が回路記述102の端子情報に存在する場合にその端子名を表示する。
【0074】
以上のように、本実施の形態2の半導体集積回路の検証装置200は、実施の形態1と同様、テストパターンが必要ないフォーマル検証でマクロ間の接続検証を行う場合に、接続仕様101を用いて、設計結果である回路記述102との回路接続関係の一致性を検証するこができる。
【0075】
このことは、マクロの端子間の接続仕様についてはアサーション生成部103により生成されるアサーション104と回路記述102とのフォーマル検証で、マクロの端子のオープン仕様についてはオープンリスト生成部105により生成されるオープンリスト106と回路記述102からオープン検出部107により生成されるオープン端子情報との比較で、行われる。
【0076】
これにより、マクロ間の接続検証に加えて、マクロのオープン端子について、設計者が意図してオープンとしたのか、設計ミスとしてオープンとしたのかの区別がつき、半導体集積回路の設計品質の向上が可能となる。
【0077】
更に、本実施の形態2では、アサーション104の端子にオープンリスト106の端子を加えたものと、回路記述102の端子とを仕様網羅性比較部211で比較を行うことができる。
【0078】
アサーション104の端子にオープンリスト106の端子を加えたものは、接続仕様101で定義されているオープン箇所を含めた端子である。このため、これと回路記述102の端子との比較を、仕様網羅性比較部211が行うことで、オープン箇所も含めて接続仕様が網羅的に検証できているのかを検証することができる。
【0079】
実施の形態1では、接続仕様の網羅性検証として、接続仕様以外の余計な接続が回路記述にないことの検証、あるいは、接続仕様漏れの検証が不十分なものとなってしまう可能性があった。しかし、本実施の形態2では、定義された接続仕様以外の余計な接続が回路記述にないことの検証、あるいは、回路記述の接続仕様漏れの検証を正確に行うことができる。よって、実施の形態1と比較して、さらなる半導体集積回路の設計品質の向上が可能となる。
【0080】
なお、本発明は上記実施の形態に限られたものでなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【0081】
例えば、上述した実施の形態1、2の半導体集積回路の検証装置は、図12に示すようなPC等のコンピュータ300で実現してもよい。以下、このようなコンピュータ300で、半導体集積回路の検証装置を構成した例を簡単に説明する。図12に示すようにコンピュータ300は、CPU301と、主メモリ302と、HDD303と、ROM304と、入出力装置305と、バス306とを有する。バス306は、CPU301、主メモリ302、HDD303、ROM304、入出力装置305と接続され、各種情報を伝達する。
【0082】
上述した接続仕様101、回路記述102の各情報は、コンピュータ300のHDD303や、ネットワーク内のデータベース307等に保存されている。そして、CPU301は、HDD303もしくはROM304に格納されている半導体集積回路の検証を実現するためのプログラム(以下、処理プログラムと称す)を呼び出し、主メモリ302に展開する。
【0083】
上述したアサーション生成部103、オープンリスト生成部105、オープン検出部107、フォーマル検証部108、オープン比較部109、検証結果確認部110、仕様網羅性比較部211は、この処理プログラム内でモジュール化されている。なお、このコンピュータ300を制御するオペレーティングシステムが各モジュールプログラムを制御するようにしてもよい。
【0084】
例えば、実施の形態1において、アサーション生成部103及びオープンリスト生成部105として動作するプログラムは、HDD303等に格納されている接続仕様101の情報から、それぞれアサーション104及びオープンリスト106を生成する。また、オープンリスト検出部105として動作するプログラムはHDD303等に格納されている回路記述102から、オープン端子情報を生成する。
【0085】
そして、フォーマル検証部108として動作するプログラムが、アサーション104、接続仕様101から判定情報を生成する。また、オープン比較部109として動作するプログラムが、オープン比較結果情報を生成する。そして、検証結果確認部110として動作するプログラムが、判定情報、オープン比較結果情報に応じた総合的な検証結果として表示装置(不図示)等に表示する。
【0086】
なお、アサーション生成部103、オープンリスト生成部105、オープン検出部107、フォーマル検証部108、オープン比較部109、検証結果確認部110、仕様網羅性比較部211をプログラムではなく、専用のハードウエアで実現してもよい。
【符号の説明】
【0087】
100、200 半導体集積回路の検証装置
101 接続仕様
102 回路記述
103 アサーション生成部
104 アサーション
105 オープンリスト生成部
106 オープンリスト
107 オープン検出部
108 フォーマル検証部
109 オープン比較部
110 検証結果確認部
211 仕様網羅性比較部
【技術分野】
【0001】
本発明は、半導体集積回路の検証装置及び検証方法に関するものである。
【背景技術】
【0002】
一般に論理回路の検証方法には、大きく分けて論理シミュレーションとフォーマル検証がある。論理シミュレーションは、入力パターンを検証対象回路に与えて動作をシミュレーションし、出力パターンを期待値と比較して回路の正しさを検証する方法である。
【0003】
一方、フォーマル検証は、設計の仕様と、検証対象回路をそれぞれ数学的に解析することで、回路の正しさを検証する方法である。なお、上記設計の仕様は、通常、IEEEで標準化されたPSL(Property Specification Language)や、SVA(System Verilog Assertion)のアサーション言語で記述される。
【0004】
半導体集積回路は、各機能ブロック(以下、マクロと称す)から構成される。半導体集積回路は、年々回路の大規模化が進んでいる。大規模な半導体集積回路において、構成するマクロ間の接続関係を検証するために論理シミュレーションを用いる場合、膨大なテストパターンと、それをシミュレーションする膨大な時間がかかってしまう。このため、多大な検証工数が必要となってしまう。
【0005】
一方、フォーマル検証では、テストパターンを作成する必要がないため、大幅な工数削減が期待できる。また、数学的に証明できるため、シミュレーションにおけるテストパターン漏れの心配が無い。そのため、マクロ間の接続検証には、フォーマル検証がシミュレーションより有効であり、その利用が拡大している。
【0006】
半導体集積回路を構成する回路の接続仕様及びその回路記述との回路接続関係の一致性をフォーマル検証する半導体集積回路の検証装置として、例えば特許文献1のような検証装置が提案されている。特許文献1に開示されている検証装置10の構成を図13に示す。
【0007】
図13に示すように、検証装置10は、プロパティ生成手段3と、検証実行手段5と、検証結果確認手段6とを有する。
【0008】
プロパティ生成手段3は、検証対象回路の接続仕様1を読み込み、プロパティ4を生成する。プロパティ生成手段3は、個々の出力信号に対しユニークなプロパティを設定し、その出力信号が接続される入力信号については同一のプロパティ、若しくは同一のプロパティに極性情報を付加したプロパティを生成する。
【0009】
検証実行手段5は、プロパティ4と回路記述2を読み込み、接続される出力信号と入力信号のプロパティが一致しているかの比較検証を行う。
【0010】
検証結果確認手段6は、検証実行手段5での検証結果を表示する。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開2005−196681号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
特許文献1のような従来技術では、接続仕様からアサーション(プロパティ)に変換できるものしか検証できない。このため、通常、接続仕様として存在する半導体集積回路のマクロの端子がオープン(未接続)である箇所については検証できない。
【0013】
このことは、半導体集積回路の設計仕様と回路記述との一致性を検証するために行われるフォーマル検証において、設計仕様の記述言語として一般に使用されるアサーション言語(例えばPSL、SVA)では、オープンである端子を記述するという概念そのものがなく、記述できないからである。
【0014】
従って、設計者が意図してオープンとしたのか、設計ミスとしてオープンとしたのかの区別がつかない問題がある。
【課題を解決するための手段】
【0015】
本発明の一態様は、半導体集積回路を構成する回路の接続関係を示す接続仕様情報と、前記半導体集積回路の構成を記述した回路記述情報との回路接続関係の一致性を検証する半導体集積回路の検証装置であって、前記接続仕様情報をアサーション言語で記述された接続情報ファイルに変換するアサーション生成部と、前記接続仕様情報からオープンである端子を抽出した第1の端子情報と、前記回路記述情報からオープンである端子の情報を抽出した第2の端子情報とに応じて、前記第1の端子情報と第2の端子情報の一致性を比較する比較部と、前記接続情報ファイルと前記回路記述情報とに応じてフォーマル検証を行うフォーマル検証部と、を有し、前記フォーマル検証部の検証結果と前記比較部の比較結果から、半導体集積回路を構成する回路の接続関係を検証する半導体集積回路の検証装置である。
【0016】
本発明の他の態様は、半導体集積回路を構成する回路の接続関係を示す接続仕様情報と、前記半導体集積回路の構成を記述した回路記述情報との回路接続関係の一致性を検証する半導体集積回路の検証方法であって、前記接続仕様情報をアサーション言語で記述された接続情報ファイルに変換し、前記接続仕様情報からオープンである端子を抽出した第1の端子情報と、前記回路記述情報からオープンである端子の情報を抽出した第2の端子情報とに応じて、前記第1の端子情報と第2の端子情報の一致性を比較し、前記接続情報ファイルと前記回路記述情報とに応じてフォーマル検証を行い、前記フォーマル検証の検証結果と、前記第1の端子情報と第2の端子情報の一致性の比較結果とから半導体集積回路を構成する回路の接続関係を検証する半導体集積回路の検証方法である。
【0017】
本発明にかかる半導体集積回路の検証装置は、半導体集積回路を構成する回路の端子間に限定された接続仕様だけでなく、半導体集積回路を構成する回路の端子のオープン(未接続)箇所も含まれた接続仕様を用いて、設計結果である回路記述との回路接続関係の一致性を検証するこができる。これにより、半導体集積回路を構成する回路の接続検証に加えて、半導体集積回路を構成する回路のオープン端子について、設計者が意図してオープンとしたのか、設計ミスとしてオープンとしたのかを区別することが可能である。
【発明の効果】
【0018】
本発明は、半導体集積回路の設計品質の向上を可能とする。
【図面の簡単な説明】
【0019】
【図1】実施の形態1にかかる半導体集積回路の検証装置の構成を示すブロック図である。
【図2】実施の形態1にかかる接続仕様の情報の一例である。
【図3】実施の形態1にかかる回路記述により構成される半導体集積回路の構成の一例である。
【図4】実施の形態1にかかる回路記述のVerilog記述の一例である。
【図5】実施の形態1にかかるアサーション生成部により生成されるアサーションファイルの一例である。
【図6】実施の形態1にかかるアサーション生成部により生成されるバインドファイルの一例である。
【図7】実施の形態1にかかるオープンリスト生成部により生成されたオープンリストの一例である。
【図8】実施の形態1にかかる検証結果確認部の生成する結果情報の一例である。
【図9】実施の形態2にかかる半導体集積回路の検証装置の構成を示すブロック図である。
【図10】実施の形態2にかかる接続仕様の情報の一例である。
【図11】実施の形態2にかかる検証結果確認部の生成する結果情報の一例である。
【図12】その他の実施の形態にかかる半導体集積回路の検証装置の構成を示すブロック図である。
【図13】従来の半導体集積回路の検証装置の構成を示すブロック図である。
【発明を実施するための形態】
【0020】
発明の実施の形態1
【0021】
以下、本発明を適用した具体的な実施の形態1について、図面を参照しながら詳細に説明する。この実施の形態1は、本発明を半導体集積回路の検証装置に適用したものである。図1に本実施の形態1にかかる半導体集積回路100の検証装置のブロック構成を示す。
【0022】
図1に示すように、半導体集積回路の検証装置100は、アサーション生成部103と、オープンリスト生成部105と、オープン検出部107と、フォーマル検証部108と、オープン比較部109と、検証結果確認部110とを有する。
【0023】
アサーション生成部103は、接続仕様101をアサーション言語で記述された接続情報ファイルであるアサーション104に変換する。
【0024】
ここで、接続仕様101は、検証対象となる回路記述102のマクロ間の接続仕様が記述されている。また、回路記述102は、半導体集積回路の構成を記述した検証対象となる回路記述であり、複数のマクロから構成され、通常VerilogやVHDLで記述される。
【0025】
フォーマル検証部108は、接続情報ファイルであるアサーション104と回路記述102との一致性を検証する。
【0026】
オープンリスト生成部105は、接続仕様101からオープン(未接続)である端子情報を抽出してオープンリスト106を生成する。
【0027】
オープン検出部107は、回路記述102からオープン(未接続)である端子情報を抽出する。
【0028】
オープン比較部109は、オープンリスト生成部105により生成されたオープンリスト106と、オープン検出部107により抽出された回路記述102のオープン端子情報とを比較する。
【0029】
検証結果確認部110は、フォーマル検証部108により得られた検証結果と、オープン比較部109で得られたオープン比較結果とを合わせて総合的な検証結果として表示する。
【0030】
次に、半導体集積回路の検証装置100の動作について説明する。まず、図2に接続仕様101の一例を示す。また、図3、図4に、それぞれ回路記述102による半導体集積回路S_CHIPの構成例、Verilog記述例を示す。なお、図4のVerilogの記述内容が、図3の半導体集積回路S_CHIPの構成となることは、当業者において自明であるため図4の記述内容に関する詳細な説明は省略する。
【0031】
半導体集積回路は、通常、複数のマクロから構成されており、図3の例では半導体集積回路S_CHIPが、2つのマクロD_MACRO、C_MACROを有する。ここでは、マクロD_MACRO、C_MACROのインスタンス名がそれぞれDINSTとCINSTとして構成され、図3で示されるように接続されている。
【0032】
図3の半導体集積回路S_CHIPの構成を、接続仕様として定義しているが図2の接続仕様101である。この接続仕様101において、マクロ間の接続、マクロと外部端子との接続、マクロの端子でクランプされている箇所、マクロの端子でオープン(未接続)である箇所が定義されている。
【0033】
詳細には、図2に示されているように、トップモジュール名、from側インスタンス名、ポート名、ビット範囲、to側インスタンス名、ポート名、ビット範囲が記述されていて、それぞれのマクロ端子間の接続が定義される。
【0034】
例えば、マクロのインスタンス名CINST、端子名CLKである端子が、外部端子名CCLKである外部端子に接続される仕様の場合、From instance-name欄に「CINST」、From port-name欄に「CLK」、To instance-name欄に外部端子接続を示す「exported:」、To port-name欄に「CCLK」と記述される。
【0035】
また、マクロのインスタンス名CINST、端子名DATA_O[31:0]であるバス端子が、マクロのインスタンス名DINST、端子名DATA_I[31:0]であるバス端子に接続される仕様の場合、From instance-name欄に「CINST」、From port-name欄に「DATA_O」、From msb欄に「31」、From lsb欄に「0」、To instance-name欄に「DINST」、To port-name欄に「DATA_I」、To msb欄に「31」、To lsb欄に「0」と記述される。
【0036】
また、マクロのインスタンス名DINST、端子名がACKである端子が、オープン(未接続)である仕様の場合は、From instance-name欄に「DINST」、From port-name欄に「ACK」、To instance-name欄にオープンを示す「open:」と記述される。
【0037】
このような接続仕様101からアサーション生成部103によりアサーション104が生成される。アサーション104は、アサーションファイル、バインドファイルから構成される。なお、アサーションは一般的に使用されているSVA(System Verilog Assertion)言語で生成される。以下、本実施の形態1においてもSVA言語が使用されるものとする。
【0038】
図2の接続仕様の例からアサーション生成部103により生成されるアサーションファイルの例を図5、バインドファイルの例を図6に示す。図2、図5、図6を参照してアサーション生成部103の動作を説明する。
【0039】
図5に示されるように、接続検証のアサーションは、プロパティ名がconnectionである以下に示すpropertyブロック構文を各assertステートメントが呼び出す形で作成される。
property connection(sig_a, sig_b);
@(sva_check_clk)(sig_a == sig_b);
endproperty:connection
【0040】
図2の接続仕様101で、マクロのインスタンス名CINST、端子名CLKである端子が、外部端子名CCLKである外部端子に接続される仕様の場合、assertステートメントは次のように生成される。
CINST__CLK___CCLK:
assert property (connection (CINST_p_CLK, CCLK));
【0041】
ここで、上記「CINST__CLK___CCLK」は、アサートラベルでインスタンス名、端子名、外部端子名が分かるようなラベルが生成される。また、上記「assert property (connection(CINST_p_CLK, CCLK))」でconnection propertyブロック構文を呼び出している。
【0042】
connection(CINST_p_CLK, CCLK)の「CINST_p_CLK」は、回路記述102でマクロのインスタンス名CINST、端子名CLKである端子を示すS_CHIP.CINST.CLKとバインドされるよう図6のバンドファイルが生成される。同様に、connection(CINST_p_CLK, CCLK)の「CCLK」は、回路記述102で外部端子名CCLKである外部端子を示すS_CHIP.CCLKとバインドされるよう図6のバインドファイルが生成される。以降、同様な繰り返しで図2の接続仕様101からassertステートメントとバインドファイルが生成される。
【0043】
ここで、接続仕様101から、オープンリスト生成部105によりオープンリスト106が生成される。図2の接続仕様101からオープンリスト生成部105により生成されたオープンリスト106を図7に示す。
【0044】
図2、図7を参照してオープンリスト生成部105の動作を説明する。図2の接続仕様でTo instance-name欄が「open:」である行を抽出して、インスタンス名、端子名、ビット範囲からオープンリストを生成する。To instance-name欄が「open:」で、From instance-name欄が「DINST」、From port-name欄が「ACK」の場合は、図7に示すようにオープンリストに「DINST.ACK」が生成される。
【0045】
ここで、回路記述102から、オープン検出部107によりオープン端子が検出される。図3を参照してオープン検出部107の動作を説明する。オープン検出部107は、図3の回路記述102で、各マクロのそれぞれの端子を一つずつ別のマクロに繋がっているか、外部端子に繋がっているか、あるいはクランプされているかをトレースし、そのいずれでもないものをオープンとして検出する。図3の回路記述102の場合では、マクロ名D_MACRO、インスタンス名DINSTの端子であるACKとEND[7:1]が検出される。そして、この検出結果がオープン端子情報として生成される。
【0046】
ここで、アサーション104と回路記述102の一致性をフォーマル検証部108により検証する。図5、図6、図4を参照してフォーマル検証部108の動作を説明する。
【0047】
フォーマル検証部108は、図6のバインドファイルに応じて、図5のアサーションファイルの記述と図4の回路記述102(Verilog記述)とをバインドし、その後、バインドした対象が接続されているかを検証する。例えば、以下に示すような図5のアサーションファイルの記述は、DINST_p_TCOとCINST_p_INT[9]とが接続されていることを検証するアサーションである。
DINST__TCO___CINST__INT__msb9lsb9:
assert property (connection (DINST_p_TCO, CINST_p_INT[9]));
【0048】
上記アサーションファイルの記述により、DINST_p_TCOが、図6のバインドファイルに応じて、図4のVerilog記述のS_CHIP.DINST.TCOにバインドされる。ここで「S_CHIP.DINST.TCO」は図4のVerilog記述でモジュール名S_CHIP、インスタンス名DINST、端子名TCOの端子であることを示している。
【0049】
また、CINST_p_INT[9]が、図6のバインドファイルに応じて、図4のVerilog記述のS_CHIP.CINST.INT[9]にバインドされる。ここで「S_CHIP.CINST.INT[9]」は図4のVerilog記述でモジュール名S_CHIP、インスタンス名CINST、端子名INT[9]の端子であることを示している。
【0050】
そして、このアサーションファイルの記述により、Verilog記述のモジュール名S_CHIP、インスタンス名DINST、端子名TCOの端子と、モジュール名S_CHIP、インスタンス名CINST、端子名INT[9]の端子とが、接続されているかをフォーマル検証部108によりフォーマル検証される。このフォーマル検証において、上記端子同士が接続されていればそのアサーションはPassと判定、もしくは、Verilog記述で違った接続がされていればFailと判定される。そして、このようなフォーマル判定が図5のアサーションファイルの記述毎に行われる。
【0051】
ここで、オープンリスト106とオープン検出部107により検出されたオープン端子情報とが、オープン比較部109により比較される。そして、その比較結果により、一致しているか、もしくは、オープンリスト106に余分なリストがあるのか、足りないリストがあるのかのオープン比較結果情報が生成される。
【0052】
このオープン比較結果情報により、一致していると判定される場合は、接続仕様101に記述されたオープン端子の仕様通りに回路記述102は設計されていることを示している。
【0053】
また、オープン比較結果情報により、オープンリスト106に余分なリストがあると判定される場合は、接続仕様101に記述されたオープン端子の仕様とは異なり、回路記述102ではオープンではない箇所があることを示している。逆に、オープン比較結果情報により、オープンリスト106に足らないリストがあると判定される場合は、接続仕様101で定義されていないオープン端子が回路記述102に存在していることを示している。
【0054】
検証結果確認部110は、フォーマル検証部108からのアサーション104と回路記述102の一致性の判定情報を、オープン比較部109からオープンリスト106と回路記述102のマクロの端子がオープンである箇所とのオープン比較結果情報を、読み込む。そして、総合的な検証結果として表示装置等に表示、もしくは、データ出力装置等にデータとして出力する。例えば、図2の接続仕様101及び図4の回路記述102(Verilog記述)の場合、図8に示す結果が表示される。
【0055】
以下に図8を参照して検証結果確認部110の動作を説明する。図8に示すように、「アサーションチェック結果(Summary)」の「Pass」には、接続仕様通りに回路記述が接続されている箇所の数、「Fail」には接続仕様通りに回路記述が接続されていない箇所の数が表示される。
【0056】
また、図8に示すように、「オープン端子チェック結果(Summary)」の「Pass」には、接続仕様通りに回路記述のマクロの端子がオープンになっている箇所の数が示される。「Fail」には、接続仕様ではオープンになっているが回路記述では該当のマクロの端子がオープンになっていない箇所の数が示される。「Undef」には、接続仕様ではオープンと定義されていないが回路記述ではオープンになっている箇所の数が表示される。
【0057】
更に、「アサーションチェック結果(詳細)」には、アサートラベルと前記Pass、Failの結果が表示される。アサートラベルは図5で示したものと同様で、「<インスタンス名>__<端子名>___<インスタンス名>__<端子名>」という構成となっている。そして、上記情報からどの端子間の接続アサーションがPass、Failしたかが分かる。
【0058】
更に「オープン端子チェック結果(詳細)」には、接続仕様及び回路記述から抽出されたオープン端子が前記Pass、Fail、Undefの情報を伴い表示される。
【0059】
以上のように、本実施の形態1の半導体集積回路の検証装置100は、テストパターンが必要ないフォーマル検証でマクロ間の接続検証を行う場合に、接続仕様101を用いて、設計結果である回路記述102との回路接続関係の一致性を検証するこができる。
【0060】
このことは、マクロの端子間の接続仕様についてはアサーション生成部103により生成されるアサーション104と回路記述102とのフォーマル検証で、マクロの端子のオープン仕様についてはオープンリスト生成部105により生成されるオープンリスト106と回路記述102からオープン検出部107により生成されるオープン端子情報との比較で、行われる。
【0061】
これにより、マクロ間の接続検証に加えて、マクロのオープン端子について、設計者が意図してオープンとしたのか、設計ミスとしてオープンとしたのかの区別がつき、半導体集積回路の設計品質の向上が可能となる。
【0062】
発明の実施の形態2
【0063】
以下、本発明を適用した具体的な実施の形態2について、図面を参照しながら詳細に説明する。この実施の形態2は、実施の形態1と同様、本発明を半導体集積回路の検証装置に適用したものである。図9に本実施の形態1にかかる半導体集積回路200の検証装置のブロック構成を示す。
【0064】
図9に示すように、半導体集積回路の検証装置200は、アサーション生成部103と、オープンリスト生成部105と、オープン検出部107と、フォーマル検証部108と、オープン比較部109と、検証結果確認部110と、仕様網羅性比較部211とを有する。なお、図9に示された符号のうち、図1と同じ符号を付した構成は、図1と同じか又は類似の構成を示している。実施の形態1と異なるのは、仕様網羅性比較部211を更に備えている点である。よって、本実施の形態2では、その相違部分を重点的に説明し、その他実施の形態1と同様の部分の説明は、特に必要でない限り省略する。
【0065】
仕様網羅性比較部211は、アサーション104、オープンリスト106、回路記述102を読み込み、定義された接続仕様以外の余計な接続が回路記述102にないことの検証を行う。
【0066】
検証結果確認部110は、フォーマル検証部108により得られた検証結果の判定情報と、オープン比較部109で得られたオープン比較結果情報と、仕様網羅性比較部211で得られた仕様網羅性比較結果情報とを合わせて総合的な検証結果として表示する。
【0067】
次に、半導体集積回路の検証装置200の動作について説明する。この動作の説明では、実施の形態1との差分部分のみを行う。その他の実施の形態1と同様の部分の説明は省略する。
【0068】
仕様網羅性比較部211は、アサーション104、オープンリスト106、回路記述102を読み込む。そして、回路記述102からは、外部端子、マクロの端子を全て抽出する。アサーション104からは、アサーションの記述に含まれている外部端子、マクロの端子を全て抽出する。上記アサーション104から抽出された端子に、オープンリスト106の端子を加えたものと、上記回路記述102から抽出された端子の比較を行い、その結果を検証結果確認部110に伝える。
【0069】
検証結果確認部110は、フォーマル検証部108からのアサーション104と回路記述102の一致性の判定情報を、オープン比較部109からオープンリスト106と回路記述102のマクロ端子がオープンである箇所との比較結果情報(オープン比較結果情報)を、仕様網羅性比較部211からアサーション104の端子情報にオープンリスト106の端子情報を加えたものと回路記述102の端子情報との比較結果情報(仕様網羅性比較結果情報)を読み込み、総合的な検証結果として表示する。
【0070】
ここで、図10に本実施の形態2の接続仕様101の例を示す。この接続仕様101と図4の回路記述102(Verilog記述)の場合、検証結果確認部110により図11に示す結果が表示される。
【0071】
図10の接続仕様101では、図2の接続仕様101と比較して、マクロのインスタンス名DINST、端子名TCOである端子と、マクロのインスタンス名CINST、端子名INT[9]である端子との接続の定義がされていない。この図10の接続仕様101と、設計された図4の回路記述102から、上述した定義の無い部分を接続仕様101で定義し忘れたか、あるいは、図4の回路記述102により誤って接続仕様101にない接続を設計してしまったことが考えられる。
【0072】
図11を参照して検証結果確認部110の動作を説明する。図11に示す「アサーションチェック結果(Summary)」、「オープン端子チェック結果(Summary)」、「アサーションチェック結果(詳細)」、「オープン端子チェック結果(詳細)」については、実施の形態1と同様のため説明を省略する。
【0073】
図11に示すように、「接続定義漏れのチェック結果(Summary)」において、アサーション104の端子情報にオープンリスト106の端子情報を加えたものより、回路記述102の端子情報の方に一致しない余分な端子が存在する場合にその数を「Fail」として表示する。また、「接続定義漏れのチェック結果(詳細)」において、アサーション104の端子情報にオープンリスト106の端子情報を加えたもの以外の余計な端子情報が回路記述102の端子情報に存在する場合にその端子名を表示する。
【0074】
以上のように、本実施の形態2の半導体集積回路の検証装置200は、実施の形態1と同様、テストパターンが必要ないフォーマル検証でマクロ間の接続検証を行う場合に、接続仕様101を用いて、設計結果である回路記述102との回路接続関係の一致性を検証するこができる。
【0075】
このことは、マクロの端子間の接続仕様についてはアサーション生成部103により生成されるアサーション104と回路記述102とのフォーマル検証で、マクロの端子のオープン仕様についてはオープンリスト生成部105により生成されるオープンリスト106と回路記述102からオープン検出部107により生成されるオープン端子情報との比較で、行われる。
【0076】
これにより、マクロ間の接続検証に加えて、マクロのオープン端子について、設計者が意図してオープンとしたのか、設計ミスとしてオープンとしたのかの区別がつき、半導体集積回路の設計品質の向上が可能となる。
【0077】
更に、本実施の形態2では、アサーション104の端子にオープンリスト106の端子を加えたものと、回路記述102の端子とを仕様網羅性比較部211で比較を行うことができる。
【0078】
アサーション104の端子にオープンリスト106の端子を加えたものは、接続仕様101で定義されているオープン箇所を含めた端子である。このため、これと回路記述102の端子との比較を、仕様網羅性比較部211が行うことで、オープン箇所も含めて接続仕様が網羅的に検証できているのかを検証することができる。
【0079】
実施の形態1では、接続仕様の網羅性検証として、接続仕様以外の余計な接続が回路記述にないことの検証、あるいは、接続仕様漏れの検証が不十分なものとなってしまう可能性があった。しかし、本実施の形態2では、定義された接続仕様以外の余計な接続が回路記述にないことの検証、あるいは、回路記述の接続仕様漏れの検証を正確に行うことができる。よって、実施の形態1と比較して、さらなる半導体集積回路の設計品質の向上が可能となる。
【0080】
なお、本発明は上記実施の形態に限られたものでなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【0081】
例えば、上述した実施の形態1、2の半導体集積回路の検証装置は、図12に示すようなPC等のコンピュータ300で実現してもよい。以下、このようなコンピュータ300で、半導体集積回路の検証装置を構成した例を簡単に説明する。図12に示すようにコンピュータ300は、CPU301と、主メモリ302と、HDD303と、ROM304と、入出力装置305と、バス306とを有する。バス306は、CPU301、主メモリ302、HDD303、ROM304、入出力装置305と接続され、各種情報を伝達する。
【0082】
上述した接続仕様101、回路記述102の各情報は、コンピュータ300のHDD303や、ネットワーク内のデータベース307等に保存されている。そして、CPU301は、HDD303もしくはROM304に格納されている半導体集積回路の検証を実現するためのプログラム(以下、処理プログラムと称す)を呼び出し、主メモリ302に展開する。
【0083】
上述したアサーション生成部103、オープンリスト生成部105、オープン検出部107、フォーマル検証部108、オープン比較部109、検証結果確認部110、仕様網羅性比較部211は、この処理プログラム内でモジュール化されている。なお、このコンピュータ300を制御するオペレーティングシステムが各モジュールプログラムを制御するようにしてもよい。
【0084】
例えば、実施の形態1において、アサーション生成部103及びオープンリスト生成部105として動作するプログラムは、HDD303等に格納されている接続仕様101の情報から、それぞれアサーション104及びオープンリスト106を生成する。また、オープンリスト検出部105として動作するプログラムはHDD303等に格納されている回路記述102から、オープン端子情報を生成する。
【0085】
そして、フォーマル検証部108として動作するプログラムが、アサーション104、接続仕様101から判定情報を生成する。また、オープン比較部109として動作するプログラムが、オープン比較結果情報を生成する。そして、検証結果確認部110として動作するプログラムが、判定情報、オープン比較結果情報に応じた総合的な検証結果として表示装置(不図示)等に表示する。
【0086】
なお、アサーション生成部103、オープンリスト生成部105、オープン検出部107、フォーマル検証部108、オープン比較部109、検証結果確認部110、仕様網羅性比較部211をプログラムではなく、専用のハードウエアで実現してもよい。
【符号の説明】
【0087】
100、200 半導体集積回路の検証装置
101 接続仕様
102 回路記述
103 アサーション生成部
104 アサーション
105 オープンリスト生成部
106 オープンリスト
107 オープン検出部
108 フォーマル検証部
109 オープン比較部
110 検証結果確認部
211 仕様網羅性比較部
【特許請求の範囲】
【請求項1】
半導体集積回路を構成する回路の接続関係を示す接続仕様情報と、前記半導体集積回路の構成を記述した回路記述情報との回路接続関係の一致性を検証する半導体集積回路の検証装置であって、
前記接続仕様情報をアサーション言語で記述された接続情報ファイルに変換するアサーション生成部と、
前記接続仕様情報からオープンである端子を抽出した第1の端子情報と、前記回路記述情報からオープンである端子の情報を抽出した第2の端子情報とに応じて、前記第1の端子情報と第2の端子情報の一致性を比較する比較部と、
前記接続情報ファイルと前記回路記述情報とに応じてフォーマル検証を行うフォーマル検証部と、を有し、
前記フォーマル検証部の検証結果と前記比較部の比較結果から、半導体集積回路を構成する回路の接続関係を検証する
半導体集積回路の検証装置。
【請求項2】
オープン検出部と、オープンリスト生成部とを更に有し、
前記オープンリスト生成部は、前記接続仕様情報からオープンである端子の情報を抽出し、前記第1の端子情報として生成し、
前記オープン検出部は、前記回路記述情報からオープンである端子の情報を抽出し、前記第2の端子情報として生成する
請求項1に記載の半導体集積回路の検証装置。
【請求項3】
前記フォーマル検証部の検証結果と前記比較部の比較結果から、前記半導体集積回路を構成する回路の接続関係において、オープンである端子を検証できる
請求項1または請求項2に記載の半導体集積回路の検証装置。
【請求項4】
仕様網羅性比較部を更に有し、
前記仕様網羅性比較部は、前記接続情報ファイルと、前記第1の端子情報と、前記回路記述情報とから前記半導体集積回路を構成する回路の接続関係を抽出し、第3の端子情報を生成する
請求項1〜請求項3のいずれか1項に記載の半導体集積回路の検証装置。
【請求項5】
前記フォーマル検証部の検証結果と、前記比較部の比較結果と、前記第3の端子情報から、前記半導体集積回路を構成する回路の接続関係において、オープンである端子、及び、前記接続仕様情報と前記回路記述情報の一致誤差を検証できる
請求項4に記載の半導体集積回路の検証装置。
【請求項6】
半導体集積回路を構成する回路の接続関係を示す接続仕様情報と、前記半導体集積回路の構成を記述した回路記述情報との回路接続関係の一致性を検証する半導体集積回路の検証方法であって、
前記接続仕様情報をアサーション言語で記述された接続情報ファイルに変換し、
前記接続仕様情報からオープンである端子を抽出した第1の端子情報と、前記回路記述情報からオープンである端子の情報を抽出した第2の端子情報とに応じて、前記第1の端子情報と第2の端子情報の一致性を比較し、
前記接続情報ファイルと前記回路記述情報とに応じてフォーマル検証を行い、
前記フォーマル検証の検証結果と、前記第1の端子情報と第2の端子情報の一致性の比較結果とから半導体集積回路を構成する回路の接続関係を検証する
半導体集積回路の検証方法。
【請求項7】
前記フォーマル検証の検証結果と、前記第1の端子情報と前記第2の端子情報の一致性の比較結果から、前記半導体集積回路を構成する回路の接続関係において、オープンである端子を検証できる
請求項6に記載の半導体集積回路の検証方法。
【請求項8】
前記接続情報ファイルと、前記第1の端子情報と、前記回路記述情報とから前記半導体集積回路を構成する回路の接続関係を抽出し、第3の端子情報を生成する
請求項6もしくは請求項7に記載の半導体集積回路の検証方法。
【請求項9】
前記フォーマル検証の検証結果と、前記第1の端子情報と第2の端子情報の一致性の比較結果と、前記第3の端子情報から、前記半導体集積回路を構成する回路の接続関係において、オープンである端子、及び、前記接続仕様情報と前記回路記述情報の一致誤差を検証できる
請求項8に記載の半導体集積回路の検証方法。
【請求項1】
半導体集積回路を構成する回路の接続関係を示す接続仕様情報と、前記半導体集積回路の構成を記述した回路記述情報との回路接続関係の一致性を検証する半導体集積回路の検証装置であって、
前記接続仕様情報をアサーション言語で記述された接続情報ファイルに変換するアサーション生成部と、
前記接続仕様情報からオープンである端子を抽出した第1の端子情報と、前記回路記述情報からオープンである端子の情報を抽出した第2の端子情報とに応じて、前記第1の端子情報と第2の端子情報の一致性を比較する比較部と、
前記接続情報ファイルと前記回路記述情報とに応じてフォーマル検証を行うフォーマル検証部と、を有し、
前記フォーマル検証部の検証結果と前記比較部の比較結果から、半導体集積回路を構成する回路の接続関係を検証する
半導体集積回路の検証装置。
【請求項2】
オープン検出部と、オープンリスト生成部とを更に有し、
前記オープンリスト生成部は、前記接続仕様情報からオープンである端子の情報を抽出し、前記第1の端子情報として生成し、
前記オープン検出部は、前記回路記述情報からオープンである端子の情報を抽出し、前記第2の端子情報として生成する
請求項1に記載の半導体集積回路の検証装置。
【請求項3】
前記フォーマル検証部の検証結果と前記比較部の比較結果から、前記半導体集積回路を構成する回路の接続関係において、オープンである端子を検証できる
請求項1または請求項2に記載の半導体集積回路の検証装置。
【請求項4】
仕様網羅性比較部を更に有し、
前記仕様網羅性比較部は、前記接続情報ファイルと、前記第1の端子情報と、前記回路記述情報とから前記半導体集積回路を構成する回路の接続関係を抽出し、第3の端子情報を生成する
請求項1〜請求項3のいずれか1項に記載の半導体集積回路の検証装置。
【請求項5】
前記フォーマル検証部の検証結果と、前記比較部の比較結果と、前記第3の端子情報から、前記半導体集積回路を構成する回路の接続関係において、オープンである端子、及び、前記接続仕様情報と前記回路記述情報の一致誤差を検証できる
請求項4に記載の半導体集積回路の検証装置。
【請求項6】
半導体集積回路を構成する回路の接続関係を示す接続仕様情報と、前記半導体集積回路の構成を記述した回路記述情報との回路接続関係の一致性を検証する半導体集積回路の検証方法であって、
前記接続仕様情報をアサーション言語で記述された接続情報ファイルに変換し、
前記接続仕様情報からオープンである端子を抽出した第1の端子情報と、前記回路記述情報からオープンである端子の情報を抽出した第2の端子情報とに応じて、前記第1の端子情報と第2の端子情報の一致性を比較し、
前記接続情報ファイルと前記回路記述情報とに応じてフォーマル検証を行い、
前記フォーマル検証の検証結果と、前記第1の端子情報と第2の端子情報の一致性の比較結果とから半導体集積回路を構成する回路の接続関係を検証する
半導体集積回路の検証方法。
【請求項7】
前記フォーマル検証の検証結果と、前記第1の端子情報と前記第2の端子情報の一致性の比較結果から、前記半導体集積回路を構成する回路の接続関係において、オープンである端子を検証できる
請求項6に記載の半導体集積回路の検証方法。
【請求項8】
前記接続情報ファイルと、前記第1の端子情報と、前記回路記述情報とから前記半導体集積回路を構成する回路の接続関係を抽出し、第3の端子情報を生成する
請求項6もしくは請求項7に記載の半導体集積回路の検証方法。
【請求項9】
前記フォーマル検証の検証結果と、前記第1の端子情報と第2の端子情報の一致性の比較結果と、前記第3の端子情報から、前記半導体集積回路を構成する回路の接続関係において、オープンである端子、及び、前記接続仕様情報と前記回路記述情報の一致誤差を検証できる
請求項8に記載の半導体集積回路の検証方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2011−203962(P2011−203962A)
【公開日】平成23年10月13日(2011.10.13)
【国際特許分類】
【出願番号】特願2010−70005(P2010−70005)
【出願日】平成22年3月25日(2010.3.25)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
【公開日】平成23年10月13日(2011.10.13)
【国際特許分類】
【出願日】平成22年3月25日(2010.3.25)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
[ Back to top ]