JP5265318B2 - 論理検証装置 - Google Patents

論理検証装置 Download PDF

Info

Publication number
JP5265318B2
JP5265318B2 JP2008308454A JP2008308454A JP5265318B2 JP 5265318 B2 JP5265318 B2 JP 5265318B2 JP 2008308454 A JP2008308454 A JP 2008308454A JP 2008308454 A JP2008308454 A JP 2008308454A JP 5265318 B2 JP5265318 B2 JP 5265318B2
Authority
JP
Japan
Prior art keywords
symbol
unit
value
logic
simulation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008308454A
Other languages
English (en)
Other versions
JP2010134598A (ja
Inventor
英一 吹田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2008308454A priority Critical patent/JP5265318B2/ja
Priority to US12/603,972 priority patent/US8239717B2/en
Publication of JP2010134598A publication Critical patent/JP2010134598A/ja
Application granted granted Critical
Publication of JP5265318B2 publication Critical patent/JP5265318B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking

Description

本発明は、Verilog HDL(Hardware Description Language)などのハードウェア記述言語で作成された論理機能の検証を行なう技術に関し、特に、不定値が発生したときに、その不定値が意図せず消去されるのを防止でき、その発生源を特定することが可能な論理検証装置に関する。
近年、半導体集積回路の高機能化、多機能化が進んでおり、大規模論理回路を短期間で設計する必要が生じてきている。また、論理合成ツールが実用レベルに達した、ワークステーション、パーソナル・コンピュータの低価格化、多機能化が進んでいる、などの理由によりHDLが脚光を浴びてきている。
特に、Verilog HDLは、C言語をベースにした文法体系であり、記述が簡潔である、シミュレーション向けの記述力が充実しているなどの理由から、HDLの中でも盛んに用いられている。これに関連する技術として、下記の特許文献1に開示された発明がある。
特許文献1に開示された発明は、論理記述言語で記述された設計データとネットリストで記述された設計データとで不定値の取り扱いを同じにすることにより、論理記述言語で記述された設計データの論理検証のみを行い、ネットリストで記述された設計データの検証を不要にすることを目的とする。このプログラムは、論理記述言語で記述された論理回路設計データを入力する入力手順と、論理回路設計データ内の信号が不定値であるか否かをチェックし、不定値である場合にはその信号を不定値として論理回路の後段に伝播するように論理回路設計データを変更する変更手順とをコンピュータに実行させる。
特開2003−316840号公報
たとえば、Verilog HDLで信号の分岐を記述した場合、分岐ポイントへの入力値が不定値(以下、Xとも記載する。)であっても、分岐後の出力値が確定値となってしまう、すなわち、何らかの要因によってXが消去されてしまう場合がある。そのため、論理検証を行なっても、ユーザが回路内で発生した「意図しない不定値」を見逃してしまう場合がある。
特に、論理検証後に行なわれる論理合成においては不定値が考慮されない、すなわち不定値が「Don’t Care」として扱われてしまい、合成結果においては「0」または「1」のいずれかに確定してしまうことが多い。したがって、RTL(Register Transfer Level)シミュレーション時には、不定値が回路の仕様に影響を与えていないことを十分に確認しなければならない。
しかしながら、上述のように回路中でXが消去されてしまうことがあるため、ユーザが「Don’t Careでない異常な不定値」の発生を見逃してしまい、論理合成によって生成されるネットリストまたはそれ以降で不具合が発見されてしまい、論理検証などをやり直さなければならないといった問題点があった。
また、RTL設計においては、回路仕様に影響しない分岐、たとえば選択されない分岐に対して不定値を割当てることが多い。そして、論理合成においては、不定値を「Don’t Care」として扱い、「0」または「1」を出力する回路のうち面積的に有利な方に割当てることが多い。
本来、「Don’t Care」分岐がRTLシミュレーションにおいて選択されてはならないが、何らかの要因でそれが選択されてしまうこともあり得る。そして、上述のようにVerilog HDLの分岐文でXが消去されてしまい、ユーザは不定値が発生したことを見逃すことも少なくない。また、RTLコードによって作成されたXだけでなく、初期化されていないレジスタなどで不定値が発生する場合もあり、ユーザがその不定値が適切に処理されて消滅したのかなどを確認する必要がある。
このような問題点は、上述の特許文献1に開示された発明を用いたとしても解決することはできない。
本発明は、上記問題点を解決するためになされたものであり、その目的は、論理検証において不定値が発生したときに、その不定値が意図せず消去されるのを防止することが可能な論理検証装置を提供することである。
本発明の一実施例によれば、ハードウェア記述言語によって記述された論理機能の検証を行なう論理検証装置が提供される。シミュレーション部は、論理機能の記述に基づいてシミュレーションを行なう。第2記号置換部は、シミュレーション部によるシミュレーションにおいて発生した不定値を記号に置換する。そして、シミュレーション部は、第2記号置換部によって置換された記号が処理中の素子に到達したときに、記号式を生成して後段の素子に伝播する、
シミュレーション部は、第2記号置換部によって置換された記号が処理中の素子に到達したときに、記号式を生成して後段の素子に伝播するので、シミュレーション中に発生した不定値が意図せず消去されてしまうのを防止することができる。
本発明の実施の形態における論理検証装置の説明をする前に、論理検証において不定値が意図せず消去されてしまう場合の例について説明する。
(if文で不定値が意図せず消去される場合)
たとえば、以下の記述によって論理機能を規定した場合について考える。
if(b)c=4’h3;
else c=4’hc;
この記述は、b=1’b1のときにc=4’h3を出力し、それ以外のときにc=4’hcを出力するものである。たとえば、bが不定値(b=1’bx)の場合、b=1’b0およびb=1’b1のいずれの場合もあり得るため、出力cは4’h3または4’hcのいずれかの値をとることになる。しかしながら、シミュレーション結果においてはb=1’bxの場合にelse節が選択されてしまうため、確定値c=4’hcが以降に伝播されることになる。この場合、不定値が消去されたことになる。
(case文で不定値が意図せず消去される場合)
casez(d)
3’b000:e=2’b00;
3’b001:e=2’b01;
3’b01?:e=2’b10;
3’b1??:e=2’b11;
endcase
この記述は、d=3’b000のときにe=2’b00を出力し、d=3’b001のときにe=2’b01を出力し、d=3’b01?のときにe=2’10を出力し、d=3’b1??のときにe=2’b11を出力するものである。たとえば、dの最下位ビットが不定値(d=3’b00x)である場合、d=3’b000およびd=3’001のいずれの場合もあり得るため、出力eは2’b00または2’b01のいずれかの値をとることになる。しかしながら、シミュレーション結果においては該当する分岐がないため、eへの代入は行なわれない。すなわち、eの前の値が保持されるため、前の値が確定値の場合には不定値が消去されたことになる。
図1は、論理検証において不定値が意図せず消去される場合の一例を示す図である。図1(a)は、if文の記述を含んだ論理回路の一例であり、本来の正しい回路を示している。なお、この論理回路は、論理合成する前のものであるが、理解を容易にするためにゲート回路やフリップフロップ(FF)などの記述を含んだものとしている。
この論理回路は、組合わせ回路11と、FF1(12)と、ANDゲート13と、ブロック1(14)とを含んでいる。ANDゲート13は、電源投入直後にFF1(12)から出力される不定値(1’bx)をリセット信号(1’b1)によってマスクしている。このとき、ANDゲート13からa=1’b0が出力される。
ブロック1(14)は、a=1’b1のときにb=2’b00を出力し、a=1’b0のときにb=2’b01を出力する。したがって、ブロック1(14)からb=2’b01が出力され、FF1(12)から出力される不定値が正しくマスクされている。
図1(b)は、if文の記述を含んだ論理回路の一例であり、バグを含んだ回路を示している。図1(b)に示す論理回路は、図1(a)に示す論理回路と比較して、FF1(12)からの不定値をマスクするANDゲート13が削除されたものとなっている。したがって、FF1(12)から出力される不定値(1’bx)がそのままブロック1(14)に入力される。
ブロック1(14)は、FF1(12)からの不定値(1’bx)によってelse節を選択し、b=2’b01を出力する。したがって、FF1(12)からの不定値が正しくマスクされている場合と同じ値を出力することになる。これにより、ユーザがif分岐でxが消去されたことを見逃してしまう。
図2は、論理検証において不定値が意図せず消去される場合の他の一例を示す図である。図2(a)は、if文およびcase文の記述を含んだ論理回路の一例であり、本来の正しい回路を示している。ブロック2(21)は、one−hot信号出力ブロックであり、a=2’b01またはa=2’b10を出力する。
ブロック3(22)は、a=2’b01のときにb=1’b1を出力し、a=2’b10のときにb=1’b0を出力し、デフォルトとしてb=1’bxを出力する。また、ブロック4(23)は、b=1’b1のときにc=4’h3を出力し、b=1’b0のときにc=4’hcを出力する。
したがって、ブロック2(21)から正しくa=2’b01またはa=2’b10が出力される場合には、ブロック4(23)からc=4’h3またはc=4’hcが出力されることになる。
図2(b)は、if文およびcase文の記述を含んだ論理回路の一例であり、バグを含んだ回路を示している。図2(b)に示すブロック2(21)は、バグによってone−hotではないa=2’b11を出力する。このとき、ブロック3(22)から不定値(b=1’bx)が出力される。しかしながら、ブロック4(23)は、c=4’hcを出力するため、ブロック2(21)からone−hot信号2’b10が出力された場合と同じ結果が得られてしまう。これにより、ユーザがif分岐でxが消去されたことを見逃してしまう。
図3は、論理検証において不定値が意図せず消去される場合のさらに他の一例を示す図である。図3(a)は、case文の記述を含んだ論理回路の一例であり、本来の正しい回路を示している。ブロック5(31)は、sel[2:0]にone−hot(3’b001,3’b010,3’b100)またはすべてのビットが“0”(3’b000)を出力する論理機能である。
ブロック6(32)は、case文で記述された論理機能であり、sel=3’b001のときにO=I1を出力し、sel=3’010のときにO=I2を出力し、sel=3’b100のときにO=I3を出力する。また、ブロック6(32)は、デフォルトとしてO=I0を出力する。
たとえば、ブロック5(31)からsel=3’b000が出力されると、ブロック6(32)からデフォルトであるO=I0が出力される。
図3(b)は、case文の記述を含んだ論理回路の一例であり、バグを含んだ回路を示している。図3(b)に示すブロック5(31)は、バグによってsel=3’b00xを出力する。このとき、ブロック6(32)は、デフォルトのO=I0を出力するため、sel=3’b000と同じ結果が出力されることになる。これにより、ユーザがcase分岐でxが消去されたことを見逃してしまう。
しかしながら、図3(b)に示す論理機能を論理合成して回路にマッピングした場合、ブロック5(31)がsel=3’b001を出力する回路に合成される可能性がある。この場合、ブロック6(32)は、O=I1を出力することになり、誤動作(期待する動作とは異なる動作)の原因となる。
(第1の実施の形態)
図4は、本発明の第1の実施の形態における論理検証装置のハードウェア構成の一例を示すブロック図である。この論理検証装置は、コンピュータ本体41、ディスプレイ装置42、FD(Flexible Disk)44が装着されるFDドライブ43、キーボード45、マウス46、CD−ROM(Compact Disc-Read Only Memory)48が装着されるCD−ROM装置47、およびネットワーク通信装置49を含む。論理検証プログラムは、FD44またはCD−ROM48等の記録媒体によって供給される。
論理検証プログラムがコンピュータ本体41によって実行されることによって、論理検証が行なわれる。また、論理検証プログラムは他のコンピュータより通信回線を経由し、コンピュータ本体41に供給されてもよい。
図4に示すコンピュータ本体41は、CPU(Central Processing Unit)50、ROM(Read Only Memory)51、RAM(Random Access Memory)52およびハードディスク53を含む。CPU50は、ディスプレイ装置42、FDドライブ43、キーボード45、マウス46、CD−ROM装置47、ネットワーク通信装置49、ROM51、RAM52またはハードディスク53との間でデータを入出力しながら処理を行なう。FD44またはCD−ROM48に記録された論理検証プログラムは、CPU50によりFDドライブ43またはCD−ROM装置47を介してハードディスク53に格納される。CPU50は、ハードディスク53から適宜論理検証プログラムをRAM52にロードして実行することにより、論理検証を行なう。
図5は、本発明の第1の実施の形態における論理検証装置の機能的構成を示すブロック図である。この論理検証装置は、記号付加部61と、第1記号置換部62と、シミュレーション部63と、第2記号置換部64と、真偽判定部65と、不具合原因探索部66とを含む。
記号付加部61は、RTLコードが入力されると、RTLコードからレジスタを抽出し、その初期値として記号を割当てる。また、第1記号置換部62は、RTLコードからX代入部を抽出し、記号の代入に置換する。これらの記号は、「0」および「1」の両方を評価するシンボルに置換され、ユニークな記号、たとえばsymbol1,symbol2,...などを割当てることにより、後述のように不具合の発生源を特定することができるようになる。
シミュレーション部63は、論理値0,1,xまたはz(ハイインピーダンス)が処理中の素子に到達した場合、従来の論理シミュレーションと同様の処理を行なう。また、シミュレーション部63は、記号、記号式が処理中の素子に到着した場合、論理演算を実施して記号式として以降の素子に伝播する。
第2記号置換部64は、シミュレーション部63によるシミュレーション結果として発生した不定値を記号に置換する。たとえば、ドライバの出力が衝突する場合や、wired−ORでバスがドライブされない場合などにおいて、この不定状態が発生する。第2記号置換部64は、記号付加部61や第1記号置換部62と同様に、不定値を記号に置換するときにユニークな記号を割当てる。
真偽判定部65は、観測ポイントに到達した記号式が期待式と一致しているか否かを判定する。なお、この観測ポイントおよび期待式は、ユーザによって指定される。
不具合原因探索部66は、真偽判定部65によって期待式と一致しないと判定された記号式を構成する記号を抽出し、その発生源を特定する。上述のように、記号としてユニークな記号が付加されるため、発生源を容易に特定することができる。
図6は、本発明の第1の実施の形態における論理検証装置の処理手順を説明するためのフローチャートである。また、図7は、図1(b)に示すバグを含んだ回路においてどのように不具合が検証されるかを説明するための図である。図7を適宜参照して、本実施の形態における論理検証装置の処理手順を説明する。
まず、記号付加部61は、RTLコードからレジスタを抽出し、その初期値として記号を割当てる(S11)。図7に示す回路においては、FF1(12)が抽出され、FF1(12)の初期値として1’bxが記号に置換される。
次に、第1記号置換部62は、RTLコードからX代入部を抽出し、記号の代入に置換する(S12)。この処理については、図9を用いて後述する。
次に、シミュレーション部63は、論理値、記号または記号式が処理中の素子に到達すると、その論理演算を行なう(S13)。図7に示す回路においては、たとえば、FF1(12)から出力される記号がブロック1(14)に到達したときに、シミュレーション部63は「0」および「1」の両方の場合を評価し、出力bには2’b00および2’b01をとり得る記号式を割当てる。このとき、上位ビットはいずれも「0」であるので、下位ビットのみが記号式として扱われる。たとえば、Verilogの連接式のような値{1’b0,記号式}が割当てられる。
次に、第2記号置換部64は、シミュレーションの結果として発生したXを記号に置換する(S14)。この処理については、図8を用いて後述する。
次に、真偽判定部65は、ユーザによって指定された観測ポイントに記号式が到達したか否かを判定する(S15)。観測ポイントに記号式が到達していなければ(S15,No)、ステップS13に戻って以降の処理を繰り返す。
また、観測ポイントに記号式が到達していれば(S15,Yes)、真偽判定部65は、観測ポイントに到達した記号式が、ユーザによって指定された期待式と一致しているか否かを判定する(S16)。記号式が期待式と一致していれば(S16,Yes)、処理を終了する。
また、記号式が期待式と一致していなければ(S16,No)、不具合原因探索部66は、期待式と一致しなかった記号式を構成する記号を抽出し、その発生源を特定する(S17)。図7に示す回路において、観測ポイントとしてブロック1(14)の出力が選択されていた場合、ブロック1(14)からは記号式が伝播してくるため、ユーザによって指定された期待式と一致しない。このとき、不具合原因探索部66は、ブロック1(14)から出力される記号式を構成する記号を抽出することにより、不定値の発生源がFF1(14)であることを特定する。
なお、素子に記号が入力され、その素子の出力が記号式となる場合、すなわち、1個以上の記号で構成される式であり、最適化しても定数値とはならない場合には、式を新たな1つの記号に置換しなおして以降に伝播させるようにしてもよい。これによって、式の複雑化を抑えることができ、シミュレーション時における使用メモリ量の増大を抑えることが可能となる。
図8は、図2(b)に示すバグを含んだ回路においてどのように不具合が検証されるかを説明するための図である。図6に示すフローチャートのステップS13において、シミュレーション部63は、ブロック3(22)の論理シミュレーションを行なうことにより、b=1’bxを出力する。そして、ステップS14において、第2記号置換部64は、ブロック3(22)から出力される不定値を記号に置換する。
そして、ブロック3(22)から出力される記号がブロック4(23)に到達したときに、シミュレーション部63は「0」および「1」の両方の場合を評価し、出力cには4’h3および4’hcをとり得る記号式が割当てられる。
観測ポイントとしてブロック4(23)の出力が選択されていた場合、ブロック4(23)からは記号式が伝播してくるため、ユーザによって指定された期待式と一致しない。このとき、不具合原因探索部66は、ブロック4(23)から出力される記号式を構成する記号を抽出することにより、不定値の発生源がブロック3(22)であることを特定する。
図9は、図3(b)に示すバグを含んだ回路においてどのように不具合が検証されるかを説明するための図である。図6に示すフローチャートのステップS12において、第1記号置換部62は、X代入部を抽出することにより、ブロック5(31)からの出力sel[2:0]=3’b00xを抽出し、その1ビット目を記号に置換して{2’b00,記号}を出力する。
そして、ブロック5(31)から出力される記号がブロック6(32)に到達したときに、シミュレーション部63は、1ビット目が「0」および「1」の両方の場合を評価し、出力OにはI0およびI1のORを表す記号式が割当てられる。
観測ポイントとしてブロック6(32)の出力が選択されていた場合、ブロック6(32)からは記号式が伝播してくるため、ユーザによって指定された期待式と一致しない。このとき、不具合原因探索部66は、ブロック6(32)から出力される記号式を構成する記号を抽出することにより、不定値の発生源がブロック5(31)であることを特定する。
以上説明したように、本実施の形態における論理検証装置によれば、不定値が記号に置換され、記号または記号式が処理中の素子に到達したときに、シミュレーション部63が論理演算を行なって記号式として以降の素子に伝播するようにしたので、シミュレーションの際に不定値が消去されるのを防止でき、ユーザは容易に問題点を把握することが可能となった。
また、観測ポイントに到達した記号式が期待式と一致しない場合に、不具合原因探索部66が記号式を構成する記号を抽出して、その発生源を特定するようにしたので、ユーザは回路のどこで問題が発生したのかを容易に特定することが可能となった。
(第2の実施の形態)
本発明の第2の実施の形態における論理検証装置のハードウェア構成は、図4に示す第1の実施の形態における論理検証装置のハードウェア構成と同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
図10は、本発明の第2の実施の形態における論理検証装置の機能的構成を示すブロック図である。この論理検証装置は、RTLシミュレーション部71と、組合せ論理単位認識部72と、不定値マスク信号抽出部73と、不定値確認部74と、ルート探索部75と、マスク判定部76とを含む。
RTLシミュレーション部71は、RTLコードが入力されると、RTLコードの記述にしたがってシミュレーションを行ない、シミュレーション結果(波形データ)を作成する。このシミュレーションは、VCS(登録商標)、NC−Verilog(登録商標)などの従来の機能検証が用いられる。
組合せ論理単位認識部72は、RTLコードを読み込み、レジスタとレジスタとの間で区切って、組合せ論理単位を認識する。
不定値マスク信号抽出部73は、不定値をマスクする信号を抽出する。この信号は、ユーザによって指定されたユーザ指定マスク信号、RTLコードから認識できるセット/リセット信号などである。
不定値確認部74は、RTLシミュレーション部71によって作成された波形データを参照して、不定値の発生を確認する。そして、不定値の発生を確認した場合には、その不定値をマスクする信号値が、不定値が発生した同一サイクル内に存在するか否かを確認する。また、不定値確認部74は、組合せ論理単位認識部72によって認識された組合せ論理単位を参照して、その不定値が発生した組合せ論理単位内に、その不定値をマスクする信号が存在するか否かを確認する。
ルート探索部75は、不定値が発生したノードからレジスタまでのルートを探索し、そのルートが、不定値マスク信号抽出部73によって抽出された不定値マスク信号と交わるか否かを判定する。この判定は、単に不定値と不定値マスク信号とがつながるルートがあるか否かを判定するだけでもよいが、第1の実施の形態において説明したように、不定値(X)を記号に置換し、記号を伝播させることにより探索するようにすると、より精度を向上させることができる。
マスク判定部76は、不定値が組合せ論理単位内で正しくマスクされているか否かを判定する。たとえば、不定値と不定値マスク信号とが交わるポイントのセルにおいて、不定値が伝播してきた入力端子を「0」および「1」にし、そのセルの出力値が同一となるか否かによって判定する。これは、第1の実施の形態において説明した記号による確認と同様である。
図11は、本発明の第2の実施の形態における論理検証装置の処理手順を説明するためのフローチャートである。また、図12は、本発明の第2の実施の形態における論理検証装置によって論理検証が行なわれる回路の一例を示す図である。図12を適宜参照して、本実施の形態における論理検証装置の処理手順を説明する。
まず、RTLシミュレーション部71は、シミュレーションを行なって波形データを作成する(S21)。
次に、組合せ論理単位認識部72は、レジスタとレジスタとの間で区切って組合せ論理単位を認識する(S22)。図12に示す回路においては、FF1(81)とFF2(83)との間で区切られ、その間にある回路が組合せ論理単位82として認識される。また、FF3(85)とFF4(87)との間で区切られ、その間にある回路が組合せ論理単位86として認識される。なお、図12において、組合せ論理単位82は、組合せ回路91および92と、ANDゲート93とを含む。また、組合せ論理単位86は、組合せ回路94と、ANDゲート95とを含む。
次に、不定値マスク信号抽出部73は、RTLコードの中から不定値をマスクする信号を抽出する(S23)。図12においては、ANDゲート93に接続される第1リセット信号(1’b1)と、ANDゲート95に接続される第2リセット信号(1’b0)とが抽出される。
次に、不定値確認部74は、RTLシミュレーション部71によって作成された波形データを参照して、不定値の発生を確認する。そして、不定値確認部74は、その不定値をマスクする信号値が、不定値が発生した同一サイクル内に存在するか否かを確認する(S24)。不定値をマスクする信号値が不定値が発生した同一サイクル内に存在しない場合には(S24,No)、ステップS30に処理が進む。
また、不定値をマスクする信号値が不定値が発生した同一サイクル内に存在する場合には(S24,Yes)、ステップS25に処理が進む。たとえば、図12においては、組合せ回路91において不定値が発生している。この不定値が発生したサイクルが、第1リセットの信号値(1’b1)または第2リセットの信号値(1’b0)のサイクル内にあるか否かが判定される。
ステップS25において、不定値確認部74は、組合せ論理単位認識部72によって認識された組合せ論理単位を参照して、その不定値が発生した組合せ論理単位内に、その不定値をマスクする信号が存在するか否かを確認する(S25)。不定値が発生した組合せ論理単位内に、その不定値をマスクする信号が存在しない場合には(S25,No)、ステップS30に処理が進む。
また、不定値が発生した組合せ論理単位内に、その不定値をマスクする信号が存在する場合には(S25,Yes)、ステップS26に処理が進む。たとえば、図12においては、不定値が発生した組合せ回路91を含む組合せ論理単位82内に第1リセット信号が存在すると判定される。
ステップS26において、ルート探索部75は、不定値が発生したノードからレジスタまでのルートを探索する(S26)。そして、そのルートが不定値マスク信号抽出部73によって抽出された不定値マスク信号と交わるかを否かを判定する(S27)。そのルートが不定値マスク信号と交わらない場合には(S27,No)、ステップS30に処理が進む。
また、そのルートが不定値マスク信号と交わる場合には(S27,Yes)、ステップS28に処理が進む。たとえば、図12においては、組合せ回路91内の不定値が発生したノードからFF2(83)までのルートが探索され、ANDゲート93において第1リセット信号と交わると判定される。
一方、組合せ回路91内の不定値が発生したノードからFF3(85)までのルートも探索されるが、不定値マスク信号と交わらないため、後段の組合せ論理単位86に不定値を伝播させる。
ステップS28において、マスク判定部76は、交わるポイントのセルにおいて、不定値が伝播してきた入力端子を「0」および「1」にして、そのセルの出力が同一値となるか否かを判定することにより、不定値が正しくマスクされているか否かを判定する(S28)。不定値が正しくマスクされていれば(S28,Yes)、処理を終了する。たとえば、図12においては、ANDゲート93の不定値が入力される側の入力端子を「0」および「1」にする。そして、ANDゲート93の出力が同一値(1’b0)であれば、不定値が正しくマスクされていると判定される。
また、不定値が正しくマスクされていなければ(S28,No)、不定値が出力端子に伝播したか否かが判定される(S29)。不定値が出力端子に伝播していれば(S29,Yes)、処理を終了する。この場合、RTLコードに不具合があるため、ユーザはRTLコードの修正などを行なう。
また、不定値が出力端子に伝播していなければ(S29,No)、後段の組合せ論理単位に不定値を伝播し(S30)、ステップS24に戻って以降の処理を繰り返す。たとえば、図12においては、組合せ論理単位82で発生した不定値がマスクされずにFF3(85)まで伝播されるので、その不定値が後段の組合せ論理単位86に伝播される。そして、組合せ論理単位86内で不定値が発生したものとして、ステップS24以降の処理が行なわれる。
以上説明したように、本実施の形態における論理検証装置によれば、RTLシミュレーションによって不定値が発生した場合に、その不定値が不定値マスク信号と交わるポイントのセルを抽出し、そのセルで不定値が正しくマスクされているか否かを判定する。そして、正しくマスクされていない場合には不定値を後段の組合せ論理単位に伝播するようにしたので、不定値が出力端子まで伝播される場合には、ユーザは容易に問題点を把握することが可能となった。
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
論理検証において不定値が意図せず消去される場合の一例を示す図である。 論理検証において不定値が意図せず消去される場合の他の一例を示す図である。 論理検証において不定値が意図せず消去される場合のさらに他の一例を示す図である。 本発明の第1の実施の形態における論理検証装置のハードウェア構成の一例を示すブロック図である。 本発明の第1の実施の形態における論理検証装置の機能的構成を示すブロック図である。 本発明の第1の実施の形態における論理検証装置の処理手順を説明するためのフローチャートである。 図1(b)に示すバグを含んだ回路においてどのように不具合が検証されるかを説明するための図である。 図2(b)に示すバグを含んだ回路においてどのように不具合が検証されるかを説明するための図である。 図3(b)に示すバグを含んだ回路においてどのように不具合が検証されるかを説明するための図である。 本発明の第2の実施の形態における論理検証装置の機能的構成を示すブロック図である。 本発明の第2の実施の形態における論理検証装置の処理手順を説明するためのフローチャートである。 本発明の第2の実施の形態における論理検証装置によって論理検証が行なわれる回路の一例を示す図である。
符号の説明
11,84,88,91,92,94 組合せ回路、12,81,83,85,87 FF、13,93,95 ANDゲート、14,21〜23,31,32 論理機能ブロック、41 コンピュータ本体、42 ディスプレイ装置、43 FDドライブ、44 FD、45 キーボード、46 マウス、47 CD−ROM装置、48 CD−ROM、49 ネットワーク通信装置、50 CPU、51 ROM、52 RAM、53 ハードディスク、61 記号付加部、62 第1記号置換部、63 シミュレーション部、64 第2記号置換部、65 真偽判定部、66 不具合原因探索部、71 RTLシミュレーション部、72 組合せ論理単位認識部、73 不定値マスク信号抽出部、74 不定値確認部、75 ルート探索部、76 マスク判定部、82,86 組合せ論理単位。

Claims (3)

  1. ハードウェア記述言語によって記述された論理機能の検証を行なう論理検証装置であって、
    前記論理機能の記述に基づいてシミュレーションを行なうシミュレーション手段と、
    前記シミュレーション手段によるシミュレーションにおいて発生した不定値を記号に置換する第1の置換手段とを含み、
    前記シミュレーション手段は、前記第1の置換手段によって置換された記号が処理中の素子に到達したときに、記号式を生成して後段の素子に伝播し、前記論理検証装置はさらに、
    指定された観測ポイントに記号式が到達したときに、当該記号式が期待式と一致するか否かを判定する判定手段と、
    前記判定手段によって期待式と一致しないと判定された記号式を構成する記号に基づいて不定値の発生源を特定する特定手段とを含む、論理検証装置。
  2. 前記論理検証装置はさらに、前記論理機能の記述からレジスタを抽出し、その初期値として記号を付加する記号付加手段を含み、
    前記シミュレーション手段は、前記第1の置換手段によって置換された記号または前記記号付加手段によって付加された記号が処理中の素子に到達したときに、記号式を生成して後段の素子に伝播する、請求項1記載の論理検証装置。
  3. 前記論理検証装置はさらに、前記論理機能の記述から不定値の代入部を抽出し、該不定値の代入部を記号の代入部に置換する第2の置換手段を含み、
    前記シミュレーション手段は、前記第1の置換手段によって置換された記号、前記記号付加手段によって付加された記号または前記第2の置換手段によって置換された記号が処理中の素子に到達したときに、記号式を生成して後段の素子に伝播する、請求項2記載の論理検証装置。
JP2008308454A 2008-12-03 2008-12-03 論理検証装置 Expired - Fee Related JP5265318B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008308454A JP5265318B2 (ja) 2008-12-03 2008-12-03 論理検証装置
US12/603,972 US8239717B2 (en) 2008-12-03 2009-10-22 Logic verification apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008308454A JP5265318B2 (ja) 2008-12-03 2008-12-03 論理検証装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2013095210A Division JP5587459B2 (ja) 2013-04-30 2013-04-30 論理検証装置

Publications (2)

Publication Number Publication Date
JP2010134598A JP2010134598A (ja) 2010-06-17
JP5265318B2 true JP5265318B2 (ja) 2013-08-14

Family

ID=42223885

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008308454A Expired - Fee Related JP5265318B2 (ja) 2008-12-03 2008-12-03 論理検証装置

Country Status (2)

Country Link
US (1) US8239717B2 (ja)
JP (1) JP5265318B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5146369B2 (ja) * 2009-03-11 2013-02-20 富士通セミコンダクター株式会社 回路設計プログラム、回路設計方法および回路設計装置
US20100313175A1 (en) * 2009-06-05 2010-12-09 Advanced Micro Devices, Inc. Verification systems and methods
CN106802965B (zh) * 2015-11-26 2020-06-16 北京华大九天软件有限公司 检查Verilog单元与Symbol单元端口定义不一致的方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0442370A (ja) * 1990-06-07 1992-02-12 Koufu Nippon Denki Kk 論理シミュレーションシステム
JPH04266167A (ja) * 1991-02-21 1992-09-22 Nec Corp 論理演算方式
JPH1115864A (ja) * 1997-06-24 1999-01-22 Mitsubishi Electric Corp イベント発生原因解析装置および方法、論理不具合検出装置、ならびにイベント発生原因解析プログラムを記録した媒体
US6018807A (en) * 1997-09-25 2000-01-25 Micron Electronics, Inc. Simulation "bus contention" detection
US6237117B1 (en) * 1998-09-30 2001-05-22 Sun Microsystems, Inc. Method for testing circuit design using exhaustive test vector sequence
JP2001034651A (ja) * 1999-07-21 2001-02-09 Mitsubishi Electric Corp 論理シミュレータおよび論理シミュレーション方法
JP2001142925A (ja) * 1999-11-15 2001-05-25 Nec Ic Microcomput Syst Ltd 論理シミュレーションモデル記述方法、論理シミュレーション方法、及び、そのプログラムを記録した記録媒体
JP4228061B2 (ja) * 2000-12-07 2009-02-25 富士通マイクロエレクトロニクス株式会社 集積回路の試験装置および試験方法
JP2003316840A (ja) 2002-04-26 2003-11-07 Fujitsu Ltd 論理回路設計方法及びプログラム
US7137078B2 (en) * 2003-03-27 2006-11-14 Jasper Design Automation, Inc. Trace based method for design navigation
US7334203B2 (en) * 2004-10-01 2008-02-19 Dynetix Design Solutions, Inc. RaceCheck: a race logic analyzer program for digital integrated circuits
JP2008158652A (ja) * 2006-12-21 2008-07-10 Renesas Technology Corp 論理シミュレーション方法および半導体回路の設計検証方法
JP4427068B2 (ja) * 2007-03-07 2010-03-03 富士通株式会社 擬似乱数発生器、半導体集積回路、該半導体集積回路の設計データを記録した記録媒体、擬似乱数発生器制御方法
US7934183B2 (en) * 2008-04-25 2011-04-26 Synopsys, Inc. Method and apparatus for simulating behavioral constructs using indeterminate values

Also Published As

Publication number Publication date
JP2010134598A (ja) 2010-06-17
US20100138710A1 (en) 2010-06-03
US8239717B2 (en) 2012-08-07

Similar Documents

Publication Publication Date Title
US6745160B1 (en) Verification of scheduling in the presence of loops using uninterpreted symbolic simulation
TWI430123B (zh) 用於記憶體抽象化及驗證的方法和設備
US6536031B2 (en) Method for generating behavior model description of circuit and apparatus for logic verification
JP5071373B2 (ja) 言語処理装置、言語処理方法および言語処理用プログラム
US7231627B2 (en) Merging a hardware design language source file with a separate assertion file
US20030033595A1 (en) Automated HDL modifying apparatus and computer-readable recording medium in which program for automatically modifying HDL is recorded
US8042085B2 (en) Method for compaction of timing exception paths
JP2007087215A (ja) ハードウェアモデルの変換処理に用いられるデータ構造、コンピュータプログラム、方法、及びシステム
US7149992B2 (en) Method for faster timing closure and better quality of results in IC physical design
US6658630B1 (en) Method to translate UDPs using gate primitives
JP2006048525A (ja) シミュレーション方法
JP5265318B2 (ja) 論理検証装置
US8069026B2 (en) Clock gating analyzing apparatus, clock gating analyzing method, and computer product
CN110442929A (zh) 一种基于perl实现芯片系统顶层自动例化的方法
US7237208B1 (en) Managing formal verification complexity of designs with datapaths
US9378000B1 (en) Determination of unreachable elements in a design
JP2009205523A (ja) プロパティ自動生成装置
JP5830955B2 (ja) 検証装置、検証方法及び検証プログラム
JP5587459B2 (ja) 論理検証装置
JPWO2006025412A1 (ja) 論理検証方法、論理モジュールデータ、デバイスデータおよび論理検証装置
JP4387324B2 (ja) プロパティ変換装置
CN106650033B (zh) 一种输入输出端口的工艺映射方法
JP5001190B2 (ja) Lsi設計検証システム、lsi設計検証方法およびそのプログラム
US20030018460A1 (en) Method to preserve comments of circuit simulation text file
JP5645754B2 (ja) マルチサイクルパス検出装置及びマルチサイクルパス検出プログラム

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20100602

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111014

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121226

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130402

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130501

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5265318

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees