JP2004192334A - 設計データ解析方法及び設計データ解析プログラム - Google Patents
設計データ解析方法及び設計データ解析プログラム Download PDFInfo
- Publication number
- JP2004192334A JP2004192334A JP2002359558A JP2002359558A JP2004192334A JP 2004192334 A JP2004192334 A JP 2004192334A JP 2002359558 A JP2002359558 A JP 2002359558A JP 2002359558 A JP2002359558 A JP 2002359558A JP 2004192334 A JP2004192334 A JP 2004192334A
- Authority
- JP
- Japan
- Prior art keywords
- data
- design data
- signal
- register
- hardware
- 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.)
- Pending
Links
Images
Abstract
【課題】HDLによるLSI回路設計作業の効率化を図ることを目的とする。
【解決手段】HDL設計データを構文木データに変換し、それを基に信号伝播経路の探索、ブロック間信号線数の計数、ファンアウト数の計数、レジスタ回路の検出、同一制御信号で動作するレジスタの検索、非同期に動作するデータパスの検索を実行する構成である。
【選択図】 図10
【解決手段】HDL設計データを構文木データに変換し、それを基に信号伝播経路の探索、ブロック間信号線数の計数、ファンアウト数の計数、レジスタ回路の検出、同一制御信号で動作するレジスタの検索、非同期に動作するデータパスの検索を実行する構成である。
【選択図】 図10
Description
【0001】
【発明の属する技術分野】
本発明は、設計データ解析方法及び設計データ解析プログラムに係り、特にハードウェア記述言語にて記述されたハードウェア設計データの解析処理効率を向上可能な設計データ解析方法及び設計データ解析プログラムに関する。
【0002】
【従来の技術】
図1は、従来のハードウェア記述言語(以下、HDLと称する)を使用して作成されたLSI等の回路設計データの妥当性,正当性を検証する場合の処理のフローチャートを示す。同図にて、先ずHDLの形態で作成されたLSI回路設計データは、ステップS1のコンパイル処理を経てデータフロー制御データへと変換され、その後当該データをステップS2にて合成処理することによって回路データ(仮)を得る。この回路データ(仮)に対し、ステップS3にてテクノロジ・ライブラリへのマッピングを行う。その結果論理回路図データが得られる。
【0003】
そしてこの論理回路図データを回路表示ソフトウェア等を使用して回路表示し、回路確認用ツール等を使用することによって回路論理の解析、物理設計等、実際のハードウェアへの置き換えを行なう際に必要な情報の解析等を行なう(ステップS4)。具体的には当該論理回路を構成する各ブロック又は素子間の接続状態について目視チェック又は回路確認用ツール等を使用してトレース又はカウント処理を実施することによって上記解析処理を行なっている。
【0004】
この種の従来の技術として、HDL設計データから論理回路の各端子の制御可能性を調べる手法(特許文献1参照)、本願の出願人による、ネットリストとRTL記述とを結合して論理回路を得、その回路に基づいてクロック系部分を解析する手法(特許文献2参照)等が提案されている。
【0005】
【特許文献1】
特開平5−89197号公報
【0006】
【特許文献2】
特開平11−45291号公報
【0007】
【発明が解決しようとする課題】
ここで図1に示す処理における論理合成処理(ステップS1乃至S3)は、特に近年の大規模回路を適用した場合多大な時間を要することが多い。このため、最終的に種々の論理解析を行う段階(ステップS4)に至る迄に相当な時間を要することとなる。又,その解析の結果によっては該当する回路設計を修正しなければならない事態も想定され、そのような場合,HDL形態の設計データに戻って該当する修正処理を行い、その後再度論理合成処理(ステップS1乃至S3)を行なう必要があり、結果的に多大な工数を要することとなる。
【0008】
又、この場合論理合成後の回路データ上で解析を行なった結果をHDL形態の設計データに反映させて修正しようとしても、相互の対応関係を細部に亘って確認することが困難な場合が多く、この作業に更に相当の工数を要する場合が生ずる。これは、一般的にHDLによる回路設計の場合、結果的に論理合成処理にて生成される回路構成の予測が困難であり、そのため合成された回路上で結線不良等があった場合、元のHDL設計データ上ではどの部分が不良であるかを特定することが困難であるためである。
【0009】
このように、従来,HDLによって作成した設計データの妥当性,正当性の検証作業及び検証結果の設計データへの反映処理は回路規模によっては困難な作業となり、多大な時間を要する場合がある。
【0010】
【課題を解決するための手段】
本発明は上記問題点に鑑み、HDL設計データから論理合成処理を行う前の段階でHDLの言語から直接、論理合成後の論理回路の信号伝播経路等を解析することにより、論理合成処理前に当該設計データの問題点等を抽出してHDL設計データ上で必要に応じて修正可能とし、もって論理合成処理後に必要とされる作業量を大幅に削減可能なHDL設計データ解析手法を提供することを目的とする。
【0011】
このような課題の解決のため本発明では、所定のハードウェア記述言語で記述された設計データを当該ハードウェア記述言語の形態にて、その構文解析によって直接該当するハードウェア構造に関する情報を抽出する。
【0012】
又、前記所定のハードウェア記述言語で記述された設計データを当該ハードウェア記述言語の形態にて、その構文解析によって直接該当するハードウェアの構造に関する所定の情報を抽出する段階は、前記ハードウェア記述言語の形態の設計データの構文解析を行なうことによって構文木データを生成する段階よりなるようにすることが望ましい。
【0013】
【発明の実施の形態】
一般的に論理合成処理を実行する上ではクロック信号がどれであるか知る必要がある。しかしながら大規模な設計データの場合、或いは複数人による共同設計の際等には、クロック信号を特定することが困難である。又,期せずしてクロック信号として想定していなかった信号により動作しているレジスタ記述をしていた場合には合成後の回路は意図していなかったものとなり得るため、HDL設計データ上での不具合箇所の特定は困難となる。したがって本発明ではHDL設計データ上で制御信号を検索できるよう構成する。
【0014】
又、回路におけるデータのやり取りは通常互いに同期を取って行なうが、回路規模が大きくなると意図せず非同期でデータをやりとりする設計となる場合が発生し、このような場合、その回路は論理的には正しいために不具合箇所の発見が遅れ、後のシミュレーションの結果初めて発覚することがある。このような場合、手戻りによる工数増大を招くことになる。したがってこのような場合も、HDL設計データ上での不具合箇所の特定を可能にするため、本発明ではHDL設計データ上で非同期データパスを検索する目的で同一クロック信号で動作するレジスタの検索を出来るよう構成する。
【0015】
又、設計データに従って素子の配置/素子間の配線を行う際,ブロック間の結線本数の多少によっては所要処理内容が大きく左右される。そのため、このような配置/配線処理を行う場合,予めブロック間でやりとりされる信号の数を数える作業を行なう。しかしながら、このような作業を回路図上で結線を確認することによって行うと作業が煩雑となるため、自動的に結線数を数える処理を適用することが望ましい。しかしながらその場合でも従来では予めHDL設計データを論理合成処理して回路図へ変換する必要があるため、相当な処理時間を要することになる。したがって、本発明ではこのような作業をHDL設計データ上で行えるよう構成する。
【0016】
以下にこのような構成を実現する本発明の実施の形態について詳細に説明する。図2は本発明の一実施例による設計データ解析処理の動作の流れを示すフローチャートである。同図に示す設計データ解析処理は、例えば図1のステップS1乃至S3による論理合成処理前段階にて行うことを想定した処理である。このように当該解析処理によって論理合成処理前に設計データの解析を行なっておくことにより、論理合成処理後の不具合箇所修正で発生する手戻り工数を削減することが可能となると共に、並行作業中の他の設計者及び後工程の設計者への回路情報提供によって後工程への移行に要する作業工数を有効に削減することが可能となる。
【0017】
即ち、図2の処理では、HDLで記述された設計データを回路データ迄変換することをせず、HDL言語の状態で構文解析した結果として得られる「構文木データ」を解析する。
【0018】
以下、本発明の一実施例による構文木データの解析方法の一例について説明する。先ず、上記構文木データから、当該設計データの論理合成処理後にレジスタを含むものとなるか否かについて判定する方法について図3と共に説明する。
【0019】
図3(a)は、構文木データがレジスタを構成するか否かを判定するための処理を示すフローチャートである。ここでは図3(b)に示すレジスタを含む論理回路を構成する構文木データの例と共に、当該判定処理の流れについて説明する。
【0020】
先ず,構文木データの各データ数分ループして条件節である”if”の構文木を見出だす(ステップS22)。そしてif文が見出された場合、その条件として信号“event”と信号“=1”、又は信号“=0”が含まれているか否かを判定する(ステップS23、S24)。そしてこれらが含まれている場合、これらの条件が”and”条件で結ばれているか否かを判定する(ステップS25)。そして更に、ステップS23、S24の各々における「信号」が共通か否かを判定する(ステップS26)。尚、この条件で使用される信号(図3(b)の場合、“iClk”)を「クロック信号」と判断する。
【0021】
これらの条件を満たす場合、更に信号代入文が存在すれば(ステップS27のYes)、この構文木をレジスタを構成するものと判断する(ステップS28)。尚、この信号代入文の代入先の信号(図3(b)の例の場合、“iData”)を「レジスタ信号」と判定する。
【0022】
次に、論理合成処理後の回路中の信号の伝播経路をHDL言語形態でトレースする手法について述べる。従来では図4(a)示す如くの論理合成処理後の回路図上で結線を辿ることによってこのトレースを行っていた。本発明の実施例では、トレースを実施したい信号に着目し,HDL設計データ中からその信号が関わる信号代入記述(<=)を検索する。このようにして見出された信号代入記述の「信号代入先/代入元」を伝播経路として出力する。尚このとき伝播経路にポートが出現する場合、ブロック間接続記述データから接続先ブロックを検索し、当該接続先ブロック内の伝播経路について更に同様に伝播経路の検索を行い、そこで得られた経路情報を出力する。
【0023】
図4(b)に示すHDL記述設計データの例を使用して説明するに、この場合ポート“iPort1”からの伝播経路を検索するものとすると,同図(c)に示す対応する構文木データからこの“iPort1”に関わる信号代入データを検索し、そのデータ、即ちT1から代入先が信号“a”であることを見付け、次に信号“a”に関わる信号代入データを検索し、そのデータ、即ちT3からポート“oPort2”迄トレース出来る。尚、図4(b)に示すHDL記述中の「信号代入文」から図4(c)に示す各構文木データT1,T2,T3を求める手法については図示によって明らかであるため、詳細な説明を省略する。
【0024】
このようにしてHDL記述文から信号の伝搬経路をトレースすることによって、着目した信号の影響範囲を知ることが出来る。その結果、例えば設計変更を行なった場合、変更を加えた信号をトレースすることによって再シミュレーションが必要なブロックを抽出することが可能であり、その結果,必要以上の範囲に対する再シミュレーションの実行を省略可能であり、LSI回路設計全体の工数を削減可能である。又、上記必要なブロックの抽出によって必要部分に対する再シミュレーション実行漏れの発生をも防止可能である。
【0025】
次に、本発明の実施例によるレジスタ制御信号を検索する処理について説明する。従来は、例えば図5(a)に示す論理合成処理後の回路図上でレジスタ(この例の場合R1)を探索し、その結線を辿ることによって制御信号(この場合、iClk)の流れを検索していた。これに対して本発明の実施例では、HDL設計データ中のレジスタ記述を構文木データから検索する。そしてこのようにして得られたレジスタ記述からクロック信号、リセットに使用される信号を抽出し、このようにして抽出した信号に対して図4と共に上述した手法を使ってその源流を探索する。そしてこのようにして見出された源流の信号を制御信号として出力する。
【0026】
図5(b)に示すHDLデータの例の場合、そこから同図(c)の構文木データが得られ(この場合も図示によって明白なため、詳細な説明を省略する)、この構文木データから、図3と共に上述した手法によって当該構文木データがレジスタ記述であることが判定される。ここで一般的にsレジスタ記述を示す構文木データの場合、図5(c)のノードNcに出現する信号がクロック信号となることが決められているため,iClkをクロック信号とし出力する。尚このとき、信号iClkが更に他の信号と接続している場合、上記図4の伝播経路トレースの手段によってそのトレースを行う。
【0027】
このようにレジスタの制御信号を検索することにより、予想外のクロック信号を見つけることが出来る場合がある。即ち、殆どのLSIでは外部から入力されるクロック信号か或いはLSI内の特定ブロックで生成したクロック信号のみをクロック信号として使用するため、それ以外のクロック信号の存在については通常意識することがない。しかしながら個々の設計者の都合によってはこれら以外のクロック信号を生成して使用する必要性が生ずる場合があり、このような場合、上記図5のレジスタのクロック信号検索を行うことによってこのような予想外な制御信号の存在を見出すことが可能となる。
【0028】
次に、本発明の一実施例による、非同期に動作するレジスタ間で受け渡しされるデータパスを検索する処理について説明する。従来では図6(a)に例示する如くの回路図上でレジスタを探し、その結線を辿って制御信号を検索していた。これに対し、本発明では、同図(b)に示す、対応するHDLデータ中のレジスタ記述から得られる同図(c)に示す如くの構文木データから検索する。尚、レジスタ記述の判定は上述の図3の手法にて行なうものとする。
【0029】
そしてこのレジスタ記述から上記の如くのレジスタ信号となる信号を検出し、検出された信号に対して上記図4の信号伝播経路トレース手法を適用して伝播経路に別のレジスタがあるか否かを調べる。その結果別のレジスタと接続されていた場合、夫々のレジスタのクロック信号が同じであるかを上記図5のレジスタの制御信号検索手法で調べる。その結果夫々のクロック信号が異なる場合には非同期に受け渡しされるデータパスと判定され、これを出力する。
【0030】
この処理を具体的に例示すると、図6(b)のHDLデータから得られる同図(c)の構文木データから2つのレジスタ記述T11,T12が見付かる。対応するレジスタ同士(R11,R12)に接続関係があるか否かについては上記図4に示す信号伝播経路トレースの手法によって判定可能である。その結果、図6(c)中の破線で囲んだ信号代入記述が見出される。更に、上記レジスタの制御信号検索手法(図5)を適用することにより、二つのレジスタが夫々別のクロック信号(“iClk1”、“iClk2”)で動作していることが分かる。このため、当該レジスタ間接続が非同期のデータパスであることが分かる。
【0031】
例えば一般的にこのような非同期パスについては、その誤動作を防ぐため所謂メタステーブル対応処理を行うことが多い。このような場合であっても上述の手法の適用によって予め非同期パスを検索することにより、非同期パスに対しメタステーブル対応処理が施されているか否かについて漏れなく確認することが可能となる。
【0032】
次に、図7と共に、本発明の実施例による、ブロック間の接続信号数をカウントする処理について説明する。従来では回路図上でブロック間の接続で使用されている信号の数を数えていた(同図(a)参照)。本発明の実施例では、同図(b)の如くのHDLデータ中のブロック間接続記述を同図(c)の如くの構文木データから検索する。そして、このブロック間接続記述の中で同一の信号を使用しているブロックを抽出し、抽出された信号をカウントすることで接続信号数を得て出力する。同図(b)の例では、ブロックBlock1とブロックBlock2のブロック接続記述の構文木データT21,T22及び、ここで両方に接続されている信号a,b,cを抽出することが出来,この数を数えて出力すれば良い。
【0033】
例えば,このようなブロック間接続信号をカウントした結果を利用し、LSI回路レイアウト処理において接続数を考慮したブロック配置を行うことが可能となり、その結果ブロック間配線長を最小限とする等、回路素子配置・配線構造の改善が可能となる。
【0034】
次に、図8と共に、本発明の実施例による、ブロックからの信号ファンアウト数をカウントする処理について説明する。従来では回路図上でブロック間の接続を調べることでファンアウト数を数えていた(同図(a)参照)。これに対して本発明では、HDLデータ中のブロック間接続記述を構文木データから検索し(同図(b)、(c)参照)、このブロック間接続記述の中から,あるブロックに着目する。そして、そのブロックの各ポートに接続する信号を抽出する。更にその信号が接続する別のブロックの数を数える。そのようにして得られた数をファンアウト数(分岐数)として出力すれば良い。
【0035】
図8(b)、(c)の例では、ブロックBlock1に着目して検索する。即ち、このブロックBlock1に接続されている信号a,b,c,dの各々について(構文木T31参照)、別のブロックでも重複して使用されているか否かを調べる。その結果ブロックBlock2では信号a,b,c,dが夫々重複して使われ、ブロックBlock3では信号dが重複して使われていることが分かる(構文木T32,T33参照)。従って、ブロックBlock1からのa,b,cの信号については重複数が1であるため夫々ファンアウト数が”1”,dの信号について重複数が2であるためファンアウト数が”2”であることが分かり、それを出力すれば良い。
【0036】
このようにファンアウト数をカウントすることにより,例えばブロックのピン端子のドライブ能力を超えたファンアウト数を有する箇所を見付けることが出来る。このような、そのドライブ能力を超えたピン端子に対しては、ドライブ能力を増加するためにバッファ等を挿入する等の処理を施して対策を施すこととなる。
【0037】
次に、図9と共に、本発明の実施例による、同一制御信号で動作するレジスタを検索する処理について説明する。従来は、回路図上で全てのレジスタを探し、その結線を辿ることによって制御信号を検索していた(同図(a)参照)。これに対し、本発明では、HDLデータ中で上記図5のレジスタの制御信号検索処理にて全レジスタの制御信号を検索し、更に検索で得られたデータを使用して同一制御信号で動作するレジスタをグループ化して出力する。
【0038】
図9(b)、(c)の例では、上記図5の処理にて各レジスタのクロック信号を検索し、レジスタRegister1(T41)とRegister2(T42)は同じクロック信号(iClk)で動作していることが分かるため、それを出力する。
【0039】
このように、例えば制御信号として、同一リセット信号で動作するレジスタを検索することにより,リセット条件を変更した場合の影響範囲を調べることが出来る。又同一クロック信号で動作するレジスタを検索することにより、LSI上のレイアウト処理で実施するクロックツリー作成の参考用の情報として効果的に利用することが出来る。
【0040】
図10は、上述の図2乃至図9と共に説明した各処理を実施するためのシステムの一例について説明するための図である。同図に示す如く、本発明による設計データ解析方法は、モニタ20,キーボード30を供えたコンピュータ10上で動作するソフトウェア50の形態、即ち設計データ解析プログラムとして提供可能である。尚、以下の実例の説明においては、HDLとしてVHDL(IEEEStd 1076―1993)を適用する。この場合、上記設計データ解析プログラム50は、VHDL読み込み部51、構文解析部52、データ解析部53及び結果出力部54よりなる。
【0041】
実際の設計データ解析処理としては、キーボード30入力されたVHDLデータがVHDL読み込み部51の機能によって読み込まれ,構文解析部52の機能によって当該読み込み設計データから構文木データが生成される。そしてこの構文木データと更にキーボード入力された解析処理の条件がデータ解析部53に入力され、上述の各種解析処理(図4乃至図9参照)がなされる。そしてその解析結果が結果出力部54によりモニタ20を介して出力される。
【0042】
以下に本発明の実施例による各解析処理について具体例を挙げて説明する。先ず、図11乃至13と共に、ブロック間の接続信号数カウント、即ち「ブロック接続信号本数カウント解析処理」について説明する。図11はブロック間接続の一例をVHDLで記述したものである。これをVHDL読み込み部51にて入力し、構文解析部52で構文木データに変換する(図12参照)。そしてこのデータをデータ解析部53の入力とし、解析処理を行う。
【0043】
具体的には、先ず信号を検索する。その結果、信号iCKはブロックCLK_GEN1,PS41_1,SP14_1,SP14_2に夫々接続しており、信号iXRSTはブロックCLK_GEN1,PS41_1,SP14_1,SP14_2に夫々接続しており、信号sigCLK1はブロックCLK_GEN1,PS41_1,SP14_1,SP14_2に夫々接続しており、信号sigDT1はブロックPS41_1,SP14_2に夫々接続しており、信号sigDT4はブロックPS41_1,SP14_1に夫々接続していることが分かる。
【0044】
このとき、図11の記述における各ブロックCLK_GEN、SP14,SP41各々の定義文(各出力端子属性の定義)▲1▼,▲2▼,▲3▼により、信号iCK,iXRSTが夫々接続しているブロック(CLK_GEN,SP14,SP41)では、全て入力ポートにて接続されていることが分かるため、これらの信号はブロック間での接続ではないことが分かる。次に、同様に上記ブロック定義文により、信号sigCLK1はブロックCLK_GENの出力ポートに接続され、同時にブロックPS41_1、ブロックSP14_1、SP14_2夫々の入力ポートに接続されていることが分かるため,CLK_GEN ― PS41_1、CLK_GEN ― SP14_1,CLK_GEN ― SP14_2夫々のブロック間では接続信号数が“1”であることが分かる。
【0045】
同様に信号sigDT1のブロック毎の接続状態から、ブロック間PS41_1 ― SP14_2では接続s信号数が“1”であり、又、信号sigDT4の接続状態から、ブロック間PS41_1 ― SP14_1の接続信号数が“4”であることが分かる(ブロックSP14、SP41の各々の該当する接続端子の属性“vector(3 downto 0)”により、接続される信号が4bitであることが分かるため)。そしてこのような解析結果が結果出力部54にて、モニタ出力される。図13は、その出力例を示す。
【0046】
次に、図14、図15、図16と共に、本発明の実施例によるブロックの出力端子のファンアウト数カウント解析処理の実例について説明する。図14はブロック間接続例をVHDLで記述した例であり、これをVHDL読み込み部51で入力し、構文解析部52で構文木データにする(図15参照)。そしてこのデータをデータ解析部53の入力とし、解析を行う。
【0047】
先ず信号を検索する。その結果,信号iCKはブロックCLK_GEN1,PS41_1,SP14_1,SP14_2に夫々接続し、信号iXRSTはブロックCLK_GEN1,PS41_1,SP14_1,SP14_2に夫々接続し、信号sigCLK1はブロックCLK_GEN1,PS41_1,SP14_1,SP14_2に夫々接続し、信号sigDT1はブロックPS41_1,SP14_2に夫々接続し、信号sigDT4はブロックPS41_1,SP14_1に夫々接続していることがわかる。
【0048】
このとき、上記同様のブロック定義文▲1▼,▲2▼,▲3▼により信号iCK,iXRSTが接続しているブロックが全て入力ポートにて接続されていることが分かるため、この場合の解析対象にはしない。他方信号sigCLK1はブロックCLK_GENの出力ポートへの接続であるため、ファンアウト数(接続先数)を数える対象とする。その結果、この信号はブロックPS41_1,SP14_1,SP14_2の夫々の入力ポートに接続していることが分かり、その結果ファンアウト数“3”が得られる。同様に信号sigDT1はブロックPS41_1の出力ポートに接続しており、その接続先はブロックSP14_2であるためファンアウト数“1”が得られる。信号sigDT4はブロックPS41_1の出力ポートに接続しており、その接続先はブロックSP14_1であるため、ファンアウト数“1”が得られる。これらの解析結果を結果出力部54でモニタ出力する(図16参照)。
【0049】
以下、図17乃至19と共に本発明の実施例によるレジスタの制御信号検索処理の実例について説明する。図17はレジスタ回路をVHDLで記述した例を示す。これをVHDL読み込み部51にて入力し、構文解析部52にてこれを構文木データに変換する(図18参照)。そしてこのデータをデータ解析部53の入力とし、解析を行う。
【0050】
図18のデータ(構文木データT71)から、図3のレジスタ判定処理により、ノードRegister1がレジスタになることが分かる。又このレジスタを駆動するクロック信号が信号iClkであることもこのデータから分かる。この結果から、このブロックBlock1のレジスタRegister1を動作させるクロック信号はこのブロックBlock1のiClkポートの信号ということになる(図17の記述中の最初の3行参照)。この結果を結果出力部54にてモニタ出力する(図19参照)。
【0051】
次に、図20乃至図22と共に、本発明の実施例による。非同期に動作するレジスタ間のデータパス検索処理の実例について説明する。図20はレジスタ回路をVHDLで記述した例である。これをVHDL読み込み部52にて入力し、構文解析部52にて構文木データに変換する(図21参照)。そしてこのデータをデータ解析部53の入力とし、解析を行う
図21のデータから、ノードRegister1、Register2、Register3が夫々レジスタとなることが分かる(構文木データT81,T82,T83に対応)。そして更にこのデータではRegister1 → Register2のパスとRegister1 → Register3のパスの計2つのレジスタ間データパスが存在することが分かる(構文木データT82,T83参照)。又この2組のレジスタの組みおいては、レジスタRegister1とRegister3がクロック信号iClk1で駆動され、レジスタRegister2がクロック信号iClkで駆動されることが分かるため、Register1 → Register2のデータパスが非同期で動作するレジスタ間のデータパスとして抽出される。この結果を結果出力部54にてモニタ出力する(図22参照)。
【0052】
次に、図23乃至図25と共に、本発明の実施例による、同一制御信号で動作するレジスタ検索処理の実例について説明する。図23はレジスタ回路をVHDLで記述した例である。これをVHDL読み込み部51にて入力し、構文解析部52にて構文木データに変換する(図24参照)。そしてこのデータをデータ解析部53の入力とし,解析を行う。
【0053】
図24のデータから、ノードRegister1、Register2、Register3が各々レジスタになることが分かり(構文木T91,T92,T93に夫々対応),更に全てのレジスタがこのブロックBlock1のiClkポート(図23の記述中、最初の3行参照)の信号により駆動されていることが分かる。即ち、同一制御信号であるクロック信号iClkにて駆動される。この結果を結果出力部54にてモニタ出力する(図25参照)。
【0054】
次に、図26乃至図28と共に、本発明の実施例による、信号の伝播経路解析処理の実例について説明する。図26は信号接続回路をVHDLで記述した例である。これをVHDL読み込み部51にて入力し、構文解析部52で構文木データに変換する(図27参照)。そしてこのデータをデータ解析部53の入力とし、解析を行う。
【0055】
例として、このブロックBlock1のポートであるiPort1からの伝播経路を検索する処理を行うものとする。先ずポートiPort1が使われる構文木を探す。その結果、構文木T101が見出される。ここでは上記ポートiPort1はポートiPort2との論理積(and)がとられ、その結果が信号“a”に代入(<=)される構成となっている。更に、この信号“a”を使う構文木を探すと、信号“b”と論理積をとり、その結果をポートoPort1に代入する構文木(T103)が見付かる。この検索結果を結果出力部54にてモニタ出力する(図28参照)。
【0056】
尚、本発明は以下の付記に記載の構成を含む。
【0057】
(付記1)
所定のハードウェア記述言語で記述された設計データを当該ハードウェア記述言語の形態にて、その構文解析によって直接該当するハードウェア構造に関する情報を抽出する段階よりなる設計データ解析方法。
【0058】
(付記2)
前記所定のハードウェア記述言語で記述された設計データを当該ハードウェア記述言語の形態にて、その構文解析によって直接該当するハードウェアの構造に関する所定の情報を抽出する段階は、前記ハードウェア記述言語の形態の設計データの構文解析を行なうことによって構文木データを生成する段階よりなる付記1に記載の設計データ解析方法。
【0059】
(付記3)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、前記ハードウェア記述言語で記述された設計データ中の信号代入文を解析することによって信号伝播経路を解析する段階よりなる付記1又は2に記載の設計データ解析方法。
【0060】
(付記4)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、更にブロック間の接続信号数を計数する段階よりなる付記3に記載の設計データ解析方法。
【0061】
(付記5)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、更にブロックからの信号のファンアウト数を計数する段階よりなる付記3に記載の設計データ解析方法。
【0062】
(付記6)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、前記ハードウェア記述言語で記述された設計データ中の条件節を解析することによってレジスタ回路に関する記述を検出し、その制御信号を検索する段階よりなる付記1乃至5のうちのいずれかに記載の設計データ解析方法。
【0063】
(付記7)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、更に非同期に動作するレジスタ間で信号の受け渡しを行なうデータパスを検索する段階よりなる付記6に記載の設計データ解析方法。
【0064】
(付記8)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、更に同一制御信号で動作するレジスタ間で信号の受け渡しを行なうデータパスを検索する段階よりなる付記6に記載の設計データ解析方法。
【0065】
(付記9)
所定のハードウェア記述言語で記述された設計データを当該ハードウェア記述言語の形態にて、その構文解析によって直接該当するハードウェア構造に関する所定の情報を抽出する段階をコンピュータに実行させるための設計データ解析プログラム。
【0066】
(付記10)
前記所定のハードウェア記述言語で記述された設計データを当該ハードウェア記述言語の形態にて、その構文解析によって直接該当するハードウェアの構造に関する所定の情報を抽出する段階は、前記ハードウェア記述言語の形態の設計データの構文解析を行なうことによって構文木データを生成する段階よりなる付記9に記載の設計データ解析プログラム。
【0067】
(付記11)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、前記ハードウェア記述言語で記述された設計データ中の信号代入文を解析することによって信号伝播経路を解析する段階よりなる付記9又は10に記載の設計データ解析プログラム。
【0068】
(付記12)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、更にブロック間の接続信号数を計数する段階よりなる付記11に記載の設計データ解析プログラム。
【0069】
(付記13)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、更にブロックからの信号のファンアウト数を計数する段階よりなる付記11に記載の設計データ解析プログラム。
【0070】
(付記14)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、前記ハードウェア記述言語で記述された設計データ中の条件節を解析することによってレジスタ回路に関する記述を検出し、その制御信号を検索する段階よりなる付記9乃至13のうちのいずれかに記載の設計データ解析プログラム。
【0071】
(付記15)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、更に非同期に動作するレジスタ間で信号の受け渡しを行なうデータパスを検索する段階よりなる付記14に記載の設計データ解析プログラム。
【0072】
(付記16)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、更に同一制御信号で動作するレジスタ間で信号の受け渡しを行なうデータパスを検索する段階よりなる付記14に記載の設計データ解析プログラム。
【0073】
(付記17)
前記コンピュータはデータを入力する入力手段と、データを格納する格納手段と、データを処理するデータ処理手段と、データを出力する出力手段とよりなり、
前記データ処理手段による制御の下、前記入力手段によって入力されたハードウェア記述言語で記述された設計データを前記格納手段に書き込み、前記データ処理手段の機能によって該格納手段から当該設計データを読み出しながらその構文解析を行なって該当する構文木データを生成し、当該構文木データを更に解析して該当するハードウェア構造に関する所定の情報を抽出し、更に上記解析結果を前記出力手段によって出力する構成の付記9乃至16のうちのいずれかの設計データ解析プログラム。
【0074】
【発明の効果】
本発明によればハードウェア記述言語にて記述された設計データを、その記述言語の状態で構文解析することによって直接そのハードウェア構造に関する情報を予め抽出可能であるため、論理合成処理を行う前に所定の回路適正度検証処理、共同設計者間の設計諸元調整処理等を実施可能である。その結果、論理合成処理後の設計修正要求発生数の抑制等が可能となり、もって効果的にLSI設計等の所要期間短縮、データ処理量削減等が可能となる。
【図面の簡単な説明】
【図1】一般的なHDL設計データの回路を検証する際の処理フローを示す図である。
【図2】本発明の一実施例による設計データ処理フローを示す図である。
【図3】本発明の一実施例によるレジスタデータ判定処理の動作の流れを示す図である。
【図4】本発明の一実施例による伝播経路トレース処理の動作の流れを示す図である。
【図5】本発明の一実施例によるレジスタの制御信号検索処理の流れを示す図である。
【図6】本発明の一実施例による 非同期データパス検索処理の流れを示す図である。
【図7】本発明の一実施例によるブロック信号数カウント処理の流れを示す図である。
【図8】本発明の一実施例によるブロックファンアウト信号数カウント処理の流れを示す図である。
【図9】本発明の一実施例による同一制御信号レジスタ検索処理の流れを示す図である。
【図10】本発明の一実施例による設計データ解析システムを実現するためのハードウェア及びソフトウェア構成の一例を示す図である。
【図11】本発明の一実施例によるブロック信号数カウント処理の実例を説明するためのVHDL記述設計データ例を示す図である。
【図12】図11のデータを構文木データに変換後のデータを示す図である。
【図13】図12に示す構文木データを解析後得られる出力画面の例を示す図である。
【図14】本発明の一実施例によるファンアウト数カウント処理の実例を説明するためのVHDL記述設計データ例を示す図である。
【図15】図14のデータを構文木データに変換後のデータを示す図である。
【図16】図15に示す構文木データを解析後得られる出力画面の例を示す図である。
【図17】本発明の一実施例によるレジスタ制御信号検索処理の実例を説明するためのVHDL記述設計データ例を示す図である。
【図18】図17のデータを構文木データに変換後のデータを示す図である。
【図19】図18に示す構文木データを解析後得られる出力画面の例を示す図である。
【図20】本発明の一実施例による非同期データパス検索処理の実例を説明するためのVHDL記述設計データ例を示す図である。
【図21】図20のデータを構文木データに変換後のデータを示す図である。
【図22】図21に示す構文木データを解析後得られる出力画面の例を示す図である。
【図23】本発明の一実施例による同一制御信号レジスタ検索処理の実例を説明するためのVHDL記述設計データ例を示す図である。
【図24】図23のデータを構文木データに変換後のデータを示す図である。
【図25】図24に示す構文木データを解析後得られる出力画面の例を示す図である。
【図26】本発明の一実施例による信号伝播経路検索処理の実例を説明するためのVHDL記述設計データ例を示す図である。
【図27】図25のデータを構文木データに変換後のデータを示す図である。
【図28】図27に示す構文木データを解析後得られる出力画面の例を示す図である。
【符号の説明】
50 設計データ解析プログラム
51 VHDL読み込み部
52 構文解析部
53 データ解析部
54 結果出力部
【発明の属する技術分野】
本発明は、設計データ解析方法及び設計データ解析プログラムに係り、特にハードウェア記述言語にて記述されたハードウェア設計データの解析処理効率を向上可能な設計データ解析方法及び設計データ解析プログラムに関する。
【0002】
【従来の技術】
図1は、従来のハードウェア記述言語(以下、HDLと称する)を使用して作成されたLSI等の回路設計データの妥当性,正当性を検証する場合の処理のフローチャートを示す。同図にて、先ずHDLの形態で作成されたLSI回路設計データは、ステップS1のコンパイル処理を経てデータフロー制御データへと変換され、その後当該データをステップS2にて合成処理することによって回路データ(仮)を得る。この回路データ(仮)に対し、ステップS3にてテクノロジ・ライブラリへのマッピングを行う。その結果論理回路図データが得られる。
【0003】
そしてこの論理回路図データを回路表示ソフトウェア等を使用して回路表示し、回路確認用ツール等を使用することによって回路論理の解析、物理設計等、実際のハードウェアへの置き換えを行なう際に必要な情報の解析等を行なう(ステップS4)。具体的には当該論理回路を構成する各ブロック又は素子間の接続状態について目視チェック又は回路確認用ツール等を使用してトレース又はカウント処理を実施することによって上記解析処理を行なっている。
【0004】
この種の従来の技術として、HDL設計データから論理回路の各端子の制御可能性を調べる手法(特許文献1参照)、本願の出願人による、ネットリストとRTL記述とを結合して論理回路を得、その回路に基づいてクロック系部分を解析する手法(特許文献2参照)等が提案されている。
【0005】
【特許文献1】
特開平5−89197号公報
【0006】
【特許文献2】
特開平11−45291号公報
【0007】
【発明が解決しようとする課題】
ここで図1に示す処理における論理合成処理(ステップS1乃至S3)は、特に近年の大規模回路を適用した場合多大な時間を要することが多い。このため、最終的に種々の論理解析を行う段階(ステップS4)に至る迄に相当な時間を要することとなる。又,その解析の結果によっては該当する回路設計を修正しなければならない事態も想定され、そのような場合,HDL形態の設計データに戻って該当する修正処理を行い、その後再度論理合成処理(ステップS1乃至S3)を行なう必要があり、結果的に多大な工数を要することとなる。
【0008】
又、この場合論理合成後の回路データ上で解析を行なった結果をHDL形態の設計データに反映させて修正しようとしても、相互の対応関係を細部に亘って確認することが困難な場合が多く、この作業に更に相当の工数を要する場合が生ずる。これは、一般的にHDLによる回路設計の場合、結果的に論理合成処理にて生成される回路構成の予測が困難であり、そのため合成された回路上で結線不良等があった場合、元のHDL設計データ上ではどの部分が不良であるかを特定することが困難であるためである。
【0009】
このように、従来,HDLによって作成した設計データの妥当性,正当性の検証作業及び検証結果の設計データへの反映処理は回路規模によっては困難な作業となり、多大な時間を要する場合がある。
【0010】
【課題を解決するための手段】
本発明は上記問題点に鑑み、HDL設計データから論理合成処理を行う前の段階でHDLの言語から直接、論理合成後の論理回路の信号伝播経路等を解析することにより、論理合成処理前に当該設計データの問題点等を抽出してHDL設計データ上で必要に応じて修正可能とし、もって論理合成処理後に必要とされる作業量を大幅に削減可能なHDL設計データ解析手法を提供することを目的とする。
【0011】
このような課題の解決のため本発明では、所定のハードウェア記述言語で記述された設計データを当該ハードウェア記述言語の形態にて、その構文解析によって直接該当するハードウェア構造に関する情報を抽出する。
【0012】
又、前記所定のハードウェア記述言語で記述された設計データを当該ハードウェア記述言語の形態にて、その構文解析によって直接該当するハードウェアの構造に関する所定の情報を抽出する段階は、前記ハードウェア記述言語の形態の設計データの構文解析を行なうことによって構文木データを生成する段階よりなるようにすることが望ましい。
【0013】
【発明の実施の形態】
一般的に論理合成処理を実行する上ではクロック信号がどれであるか知る必要がある。しかしながら大規模な設計データの場合、或いは複数人による共同設計の際等には、クロック信号を特定することが困難である。又,期せずしてクロック信号として想定していなかった信号により動作しているレジスタ記述をしていた場合には合成後の回路は意図していなかったものとなり得るため、HDL設計データ上での不具合箇所の特定は困難となる。したがって本発明ではHDL設計データ上で制御信号を検索できるよう構成する。
【0014】
又、回路におけるデータのやり取りは通常互いに同期を取って行なうが、回路規模が大きくなると意図せず非同期でデータをやりとりする設計となる場合が発生し、このような場合、その回路は論理的には正しいために不具合箇所の発見が遅れ、後のシミュレーションの結果初めて発覚することがある。このような場合、手戻りによる工数増大を招くことになる。したがってこのような場合も、HDL設計データ上での不具合箇所の特定を可能にするため、本発明ではHDL設計データ上で非同期データパスを検索する目的で同一クロック信号で動作するレジスタの検索を出来るよう構成する。
【0015】
又、設計データに従って素子の配置/素子間の配線を行う際,ブロック間の結線本数の多少によっては所要処理内容が大きく左右される。そのため、このような配置/配線処理を行う場合,予めブロック間でやりとりされる信号の数を数える作業を行なう。しかしながら、このような作業を回路図上で結線を確認することによって行うと作業が煩雑となるため、自動的に結線数を数える処理を適用することが望ましい。しかしながらその場合でも従来では予めHDL設計データを論理合成処理して回路図へ変換する必要があるため、相当な処理時間を要することになる。したがって、本発明ではこのような作業をHDL設計データ上で行えるよう構成する。
【0016】
以下にこのような構成を実現する本発明の実施の形態について詳細に説明する。図2は本発明の一実施例による設計データ解析処理の動作の流れを示すフローチャートである。同図に示す設計データ解析処理は、例えば図1のステップS1乃至S3による論理合成処理前段階にて行うことを想定した処理である。このように当該解析処理によって論理合成処理前に設計データの解析を行なっておくことにより、論理合成処理後の不具合箇所修正で発生する手戻り工数を削減することが可能となると共に、並行作業中の他の設計者及び後工程の設計者への回路情報提供によって後工程への移行に要する作業工数を有効に削減することが可能となる。
【0017】
即ち、図2の処理では、HDLで記述された設計データを回路データ迄変換することをせず、HDL言語の状態で構文解析した結果として得られる「構文木データ」を解析する。
【0018】
以下、本発明の一実施例による構文木データの解析方法の一例について説明する。先ず、上記構文木データから、当該設計データの論理合成処理後にレジスタを含むものとなるか否かについて判定する方法について図3と共に説明する。
【0019】
図3(a)は、構文木データがレジスタを構成するか否かを判定するための処理を示すフローチャートである。ここでは図3(b)に示すレジスタを含む論理回路を構成する構文木データの例と共に、当該判定処理の流れについて説明する。
【0020】
先ず,構文木データの各データ数分ループして条件節である”if”の構文木を見出だす(ステップS22)。そしてif文が見出された場合、その条件として信号“event”と信号“=1”、又は信号“=0”が含まれているか否かを判定する(ステップS23、S24)。そしてこれらが含まれている場合、これらの条件が”and”条件で結ばれているか否かを判定する(ステップS25)。そして更に、ステップS23、S24の各々における「信号」が共通か否かを判定する(ステップS26)。尚、この条件で使用される信号(図3(b)の場合、“iClk”)を「クロック信号」と判断する。
【0021】
これらの条件を満たす場合、更に信号代入文が存在すれば(ステップS27のYes)、この構文木をレジスタを構成するものと判断する(ステップS28)。尚、この信号代入文の代入先の信号(図3(b)の例の場合、“iData”)を「レジスタ信号」と判定する。
【0022】
次に、論理合成処理後の回路中の信号の伝播経路をHDL言語形態でトレースする手法について述べる。従来では図4(a)示す如くの論理合成処理後の回路図上で結線を辿ることによってこのトレースを行っていた。本発明の実施例では、トレースを実施したい信号に着目し,HDL設計データ中からその信号が関わる信号代入記述(<=)を検索する。このようにして見出された信号代入記述の「信号代入先/代入元」を伝播経路として出力する。尚このとき伝播経路にポートが出現する場合、ブロック間接続記述データから接続先ブロックを検索し、当該接続先ブロック内の伝播経路について更に同様に伝播経路の検索を行い、そこで得られた経路情報を出力する。
【0023】
図4(b)に示すHDL記述設計データの例を使用して説明するに、この場合ポート“iPort1”からの伝播経路を検索するものとすると,同図(c)に示す対応する構文木データからこの“iPort1”に関わる信号代入データを検索し、そのデータ、即ちT1から代入先が信号“a”であることを見付け、次に信号“a”に関わる信号代入データを検索し、そのデータ、即ちT3からポート“oPort2”迄トレース出来る。尚、図4(b)に示すHDL記述中の「信号代入文」から図4(c)に示す各構文木データT1,T2,T3を求める手法については図示によって明らかであるため、詳細な説明を省略する。
【0024】
このようにしてHDL記述文から信号の伝搬経路をトレースすることによって、着目した信号の影響範囲を知ることが出来る。その結果、例えば設計変更を行なった場合、変更を加えた信号をトレースすることによって再シミュレーションが必要なブロックを抽出することが可能であり、その結果,必要以上の範囲に対する再シミュレーションの実行を省略可能であり、LSI回路設計全体の工数を削減可能である。又、上記必要なブロックの抽出によって必要部分に対する再シミュレーション実行漏れの発生をも防止可能である。
【0025】
次に、本発明の実施例によるレジスタ制御信号を検索する処理について説明する。従来は、例えば図5(a)に示す論理合成処理後の回路図上でレジスタ(この例の場合R1)を探索し、その結線を辿ることによって制御信号(この場合、iClk)の流れを検索していた。これに対して本発明の実施例では、HDL設計データ中のレジスタ記述を構文木データから検索する。そしてこのようにして得られたレジスタ記述からクロック信号、リセットに使用される信号を抽出し、このようにして抽出した信号に対して図4と共に上述した手法を使ってその源流を探索する。そしてこのようにして見出された源流の信号を制御信号として出力する。
【0026】
図5(b)に示すHDLデータの例の場合、そこから同図(c)の構文木データが得られ(この場合も図示によって明白なため、詳細な説明を省略する)、この構文木データから、図3と共に上述した手法によって当該構文木データがレジスタ記述であることが判定される。ここで一般的にsレジスタ記述を示す構文木データの場合、図5(c)のノードNcに出現する信号がクロック信号となることが決められているため,iClkをクロック信号とし出力する。尚このとき、信号iClkが更に他の信号と接続している場合、上記図4の伝播経路トレースの手段によってそのトレースを行う。
【0027】
このようにレジスタの制御信号を検索することにより、予想外のクロック信号を見つけることが出来る場合がある。即ち、殆どのLSIでは外部から入力されるクロック信号か或いはLSI内の特定ブロックで生成したクロック信号のみをクロック信号として使用するため、それ以外のクロック信号の存在については通常意識することがない。しかしながら個々の設計者の都合によってはこれら以外のクロック信号を生成して使用する必要性が生ずる場合があり、このような場合、上記図5のレジスタのクロック信号検索を行うことによってこのような予想外な制御信号の存在を見出すことが可能となる。
【0028】
次に、本発明の一実施例による、非同期に動作するレジスタ間で受け渡しされるデータパスを検索する処理について説明する。従来では図6(a)に例示する如くの回路図上でレジスタを探し、その結線を辿って制御信号を検索していた。これに対し、本発明では、同図(b)に示す、対応するHDLデータ中のレジスタ記述から得られる同図(c)に示す如くの構文木データから検索する。尚、レジスタ記述の判定は上述の図3の手法にて行なうものとする。
【0029】
そしてこのレジスタ記述から上記の如くのレジスタ信号となる信号を検出し、検出された信号に対して上記図4の信号伝播経路トレース手法を適用して伝播経路に別のレジスタがあるか否かを調べる。その結果別のレジスタと接続されていた場合、夫々のレジスタのクロック信号が同じであるかを上記図5のレジスタの制御信号検索手法で調べる。その結果夫々のクロック信号が異なる場合には非同期に受け渡しされるデータパスと判定され、これを出力する。
【0030】
この処理を具体的に例示すると、図6(b)のHDLデータから得られる同図(c)の構文木データから2つのレジスタ記述T11,T12が見付かる。対応するレジスタ同士(R11,R12)に接続関係があるか否かについては上記図4に示す信号伝播経路トレースの手法によって判定可能である。その結果、図6(c)中の破線で囲んだ信号代入記述が見出される。更に、上記レジスタの制御信号検索手法(図5)を適用することにより、二つのレジスタが夫々別のクロック信号(“iClk1”、“iClk2”)で動作していることが分かる。このため、当該レジスタ間接続が非同期のデータパスであることが分かる。
【0031】
例えば一般的にこのような非同期パスについては、その誤動作を防ぐため所謂メタステーブル対応処理を行うことが多い。このような場合であっても上述の手法の適用によって予め非同期パスを検索することにより、非同期パスに対しメタステーブル対応処理が施されているか否かについて漏れなく確認することが可能となる。
【0032】
次に、図7と共に、本発明の実施例による、ブロック間の接続信号数をカウントする処理について説明する。従来では回路図上でブロック間の接続で使用されている信号の数を数えていた(同図(a)参照)。本発明の実施例では、同図(b)の如くのHDLデータ中のブロック間接続記述を同図(c)の如くの構文木データから検索する。そして、このブロック間接続記述の中で同一の信号を使用しているブロックを抽出し、抽出された信号をカウントすることで接続信号数を得て出力する。同図(b)の例では、ブロックBlock1とブロックBlock2のブロック接続記述の構文木データT21,T22及び、ここで両方に接続されている信号a,b,cを抽出することが出来,この数を数えて出力すれば良い。
【0033】
例えば,このようなブロック間接続信号をカウントした結果を利用し、LSI回路レイアウト処理において接続数を考慮したブロック配置を行うことが可能となり、その結果ブロック間配線長を最小限とする等、回路素子配置・配線構造の改善が可能となる。
【0034】
次に、図8と共に、本発明の実施例による、ブロックからの信号ファンアウト数をカウントする処理について説明する。従来では回路図上でブロック間の接続を調べることでファンアウト数を数えていた(同図(a)参照)。これに対して本発明では、HDLデータ中のブロック間接続記述を構文木データから検索し(同図(b)、(c)参照)、このブロック間接続記述の中から,あるブロックに着目する。そして、そのブロックの各ポートに接続する信号を抽出する。更にその信号が接続する別のブロックの数を数える。そのようにして得られた数をファンアウト数(分岐数)として出力すれば良い。
【0035】
図8(b)、(c)の例では、ブロックBlock1に着目して検索する。即ち、このブロックBlock1に接続されている信号a,b,c,dの各々について(構文木T31参照)、別のブロックでも重複して使用されているか否かを調べる。その結果ブロックBlock2では信号a,b,c,dが夫々重複して使われ、ブロックBlock3では信号dが重複して使われていることが分かる(構文木T32,T33参照)。従って、ブロックBlock1からのa,b,cの信号については重複数が1であるため夫々ファンアウト数が”1”,dの信号について重複数が2であるためファンアウト数が”2”であることが分かり、それを出力すれば良い。
【0036】
このようにファンアウト数をカウントすることにより,例えばブロックのピン端子のドライブ能力を超えたファンアウト数を有する箇所を見付けることが出来る。このような、そのドライブ能力を超えたピン端子に対しては、ドライブ能力を増加するためにバッファ等を挿入する等の処理を施して対策を施すこととなる。
【0037】
次に、図9と共に、本発明の実施例による、同一制御信号で動作するレジスタを検索する処理について説明する。従来は、回路図上で全てのレジスタを探し、その結線を辿ることによって制御信号を検索していた(同図(a)参照)。これに対し、本発明では、HDLデータ中で上記図5のレジスタの制御信号検索処理にて全レジスタの制御信号を検索し、更に検索で得られたデータを使用して同一制御信号で動作するレジスタをグループ化して出力する。
【0038】
図9(b)、(c)の例では、上記図5の処理にて各レジスタのクロック信号を検索し、レジスタRegister1(T41)とRegister2(T42)は同じクロック信号(iClk)で動作していることが分かるため、それを出力する。
【0039】
このように、例えば制御信号として、同一リセット信号で動作するレジスタを検索することにより,リセット条件を変更した場合の影響範囲を調べることが出来る。又同一クロック信号で動作するレジスタを検索することにより、LSI上のレイアウト処理で実施するクロックツリー作成の参考用の情報として効果的に利用することが出来る。
【0040】
図10は、上述の図2乃至図9と共に説明した各処理を実施するためのシステムの一例について説明するための図である。同図に示す如く、本発明による設計データ解析方法は、モニタ20,キーボード30を供えたコンピュータ10上で動作するソフトウェア50の形態、即ち設計データ解析プログラムとして提供可能である。尚、以下の実例の説明においては、HDLとしてVHDL(IEEEStd 1076―1993)を適用する。この場合、上記設計データ解析プログラム50は、VHDL読み込み部51、構文解析部52、データ解析部53及び結果出力部54よりなる。
【0041】
実際の設計データ解析処理としては、キーボード30入力されたVHDLデータがVHDL読み込み部51の機能によって読み込まれ,構文解析部52の機能によって当該読み込み設計データから構文木データが生成される。そしてこの構文木データと更にキーボード入力された解析処理の条件がデータ解析部53に入力され、上述の各種解析処理(図4乃至図9参照)がなされる。そしてその解析結果が結果出力部54によりモニタ20を介して出力される。
【0042】
以下に本発明の実施例による各解析処理について具体例を挙げて説明する。先ず、図11乃至13と共に、ブロック間の接続信号数カウント、即ち「ブロック接続信号本数カウント解析処理」について説明する。図11はブロック間接続の一例をVHDLで記述したものである。これをVHDL読み込み部51にて入力し、構文解析部52で構文木データに変換する(図12参照)。そしてこのデータをデータ解析部53の入力とし、解析処理を行う。
【0043】
具体的には、先ず信号を検索する。その結果、信号iCKはブロックCLK_GEN1,PS41_1,SP14_1,SP14_2に夫々接続しており、信号iXRSTはブロックCLK_GEN1,PS41_1,SP14_1,SP14_2に夫々接続しており、信号sigCLK1はブロックCLK_GEN1,PS41_1,SP14_1,SP14_2に夫々接続しており、信号sigDT1はブロックPS41_1,SP14_2に夫々接続しており、信号sigDT4はブロックPS41_1,SP14_1に夫々接続していることが分かる。
【0044】
このとき、図11の記述における各ブロックCLK_GEN、SP14,SP41各々の定義文(各出力端子属性の定義)▲1▼,▲2▼,▲3▼により、信号iCK,iXRSTが夫々接続しているブロック(CLK_GEN,SP14,SP41)では、全て入力ポートにて接続されていることが分かるため、これらの信号はブロック間での接続ではないことが分かる。次に、同様に上記ブロック定義文により、信号sigCLK1はブロックCLK_GENの出力ポートに接続され、同時にブロックPS41_1、ブロックSP14_1、SP14_2夫々の入力ポートに接続されていることが分かるため,CLK_GEN ― PS41_1、CLK_GEN ― SP14_1,CLK_GEN ― SP14_2夫々のブロック間では接続信号数が“1”であることが分かる。
【0045】
同様に信号sigDT1のブロック毎の接続状態から、ブロック間PS41_1 ― SP14_2では接続s信号数が“1”であり、又、信号sigDT4の接続状態から、ブロック間PS41_1 ― SP14_1の接続信号数が“4”であることが分かる(ブロックSP14、SP41の各々の該当する接続端子の属性“vector(3 downto 0)”により、接続される信号が4bitであることが分かるため)。そしてこのような解析結果が結果出力部54にて、モニタ出力される。図13は、その出力例を示す。
【0046】
次に、図14、図15、図16と共に、本発明の実施例によるブロックの出力端子のファンアウト数カウント解析処理の実例について説明する。図14はブロック間接続例をVHDLで記述した例であり、これをVHDL読み込み部51で入力し、構文解析部52で構文木データにする(図15参照)。そしてこのデータをデータ解析部53の入力とし、解析を行う。
【0047】
先ず信号を検索する。その結果,信号iCKはブロックCLK_GEN1,PS41_1,SP14_1,SP14_2に夫々接続し、信号iXRSTはブロックCLK_GEN1,PS41_1,SP14_1,SP14_2に夫々接続し、信号sigCLK1はブロックCLK_GEN1,PS41_1,SP14_1,SP14_2に夫々接続し、信号sigDT1はブロックPS41_1,SP14_2に夫々接続し、信号sigDT4はブロックPS41_1,SP14_1に夫々接続していることがわかる。
【0048】
このとき、上記同様のブロック定義文▲1▼,▲2▼,▲3▼により信号iCK,iXRSTが接続しているブロックが全て入力ポートにて接続されていることが分かるため、この場合の解析対象にはしない。他方信号sigCLK1はブロックCLK_GENの出力ポートへの接続であるため、ファンアウト数(接続先数)を数える対象とする。その結果、この信号はブロックPS41_1,SP14_1,SP14_2の夫々の入力ポートに接続していることが分かり、その結果ファンアウト数“3”が得られる。同様に信号sigDT1はブロックPS41_1の出力ポートに接続しており、その接続先はブロックSP14_2であるためファンアウト数“1”が得られる。信号sigDT4はブロックPS41_1の出力ポートに接続しており、その接続先はブロックSP14_1であるため、ファンアウト数“1”が得られる。これらの解析結果を結果出力部54でモニタ出力する(図16参照)。
【0049】
以下、図17乃至19と共に本発明の実施例によるレジスタの制御信号検索処理の実例について説明する。図17はレジスタ回路をVHDLで記述した例を示す。これをVHDL読み込み部51にて入力し、構文解析部52にてこれを構文木データに変換する(図18参照)。そしてこのデータをデータ解析部53の入力とし、解析を行う。
【0050】
図18のデータ(構文木データT71)から、図3のレジスタ判定処理により、ノードRegister1がレジスタになることが分かる。又このレジスタを駆動するクロック信号が信号iClkであることもこのデータから分かる。この結果から、このブロックBlock1のレジスタRegister1を動作させるクロック信号はこのブロックBlock1のiClkポートの信号ということになる(図17の記述中の最初の3行参照)。この結果を結果出力部54にてモニタ出力する(図19参照)。
【0051】
次に、図20乃至図22と共に、本発明の実施例による。非同期に動作するレジスタ間のデータパス検索処理の実例について説明する。図20はレジスタ回路をVHDLで記述した例である。これをVHDL読み込み部52にて入力し、構文解析部52にて構文木データに変換する(図21参照)。そしてこのデータをデータ解析部53の入力とし、解析を行う
図21のデータから、ノードRegister1、Register2、Register3が夫々レジスタとなることが分かる(構文木データT81,T82,T83に対応)。そして更にこのデータではRegister1 → Register2のパスとRegister1 → Register3のパスの計2つのレジスタ間データパスが存在することが分かる(構文木データT82,T83参照)。又この2組のレジスタの組みおいては、レジスタRegister1とRegister3がクロック信号iClk1で駆動され、レジスタRegister2がクロック信号iClkで駆動されることが分かるため、Register1 → Register2のデータパスが非同期で動作するレジスタ間のデータパスとして抽出される。この結果を結果出力部54にてモニタ出力する(図22参照)。
【0052】
次に、図23乃至図25と共に、本発明の実施例による、同一制御信号で動作するレジスタ検索処理の実例について説明する。図23はレジスタ回路をVHDLで記述した例である。これをVHDL読み込み部51にて入力し、構文解析部52にて構文木データに変換する(図24参照)。そしてこのデータをデータ解析部53の入力とし,解析を行う。
【0053】
図24のデータから、ノードRegister1、Register2、Register3が各々レジスタになることが分かり(構文木T91,T92,T93に夫々対応),更に全てのレジスタがこのブロックBlock1のiClkポート(図23の記述中、最初の3行参照)の信号により駆動されていることが分かる。即ち、同一制御信号であるクロック信号iClkにて駆動される。この結果を結果出力部54にてモニタ出力する(図25参照)。
【0054】
次に、図26乃至図28と共に、本発明の実施例による、信号の伝播経路解析処理の実例について説明する。図26は信号接続回路をVHDLで記述した例である。これをVHDL読み込み部51にて入力し、構文解析部52で構文木データに変換する(図27参照)。そしてこのデータをデータ解析部53の入力とし、解析を行う。
【0055】
例として、このブロックBlock1のポートであるiPort1からの伝播経路を検索する処理を行うものとする。先ずポートiPort1が使われる構文木を探す。その結果、構文木T101が見出される。ここでは上記ポートiPort1はポートiPort2との論理積(and)がとられ、その結果が信号“a”に代入(<=)される構成となっている。更に、この信号“a”を使う構文木を探すと、信号“b”と論理積をとり、その結果をポートoPort1に代入する構文木(T103)が見付かる。この検索結果を結果出力部54にてモニタ出力する(図28参照)。
【0056】
尚、本発明は以下の付記に記載の構成を含む。
【0057】
(付記1)
所定のハードウェア記述言語で記述された設計データを当該ハードウェア記述言語の形態にて、その構文解析によって直接該当するハードウェア構造に関する情報を抽出する段階よりなる設計データ解析方法。
【0058】
(付記2)
前記所定のハードウェア記述言語で記述された設計データを当該ハードウェア記述言語の形態にて、その構文解析によって直接該当するハードウェアの構造に関する所定の情報を抽出する段階は、前記ハードウェア記述言語の形態の設計データの構文解析を行なうことによって構文木データを生成する段階よりなる付記1に記載の設計データ解析方法。
【0059】
(付記3)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、前記ハードウェア記述言語で記述された設計データ中の信号代入文を解析することによって信号伝播経路を解析する段階よりなる付記1又は2に記載の設計データ解析方法。
【0060】
(付記4)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、更にブロック間の接続信号数を計数する段階よりなる付記3に記載の設計データ解析方法。
【0061】
(付記5)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、更にブロックからの信号のファンアウト数を計数する段階よりなる付記3に記載の設計データ解析方法。
【0062】
(付記6)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、前記ハードウェア記述言語で記述された設計データ中の条件節を解析することによってレジスタ回路に関する記述を検出し、その制御信号を検索する段階よりなる付記1乃至5のうちのいずれかに記載の設計データ解析方法。
【0063】
(付記7)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、更に非同期に動作するレジスタ間で信号の受け渡しを行なうデータパスを検索する段階よりなる付記6に記載の設計データ解析方法。
【0064】
(付記8)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、更に同一制御信号で動作するレジスタ間で信号の受け渡しを行なうデータパスを検索する段階よりなる付記6に記載の設計データ解析方法。
【0065】
(付記9)
所定のハードウェア記述言語で記述された設計データを当該ハードウェア記述言語の形態にて、その構文解析によって直接該当するハードウェア構造に関する所定の情報を抽出する段階をコンピュータに実行させるための設計データ解析プログラム。
【0066】
(付記10)
前記所定のハードウェア記述言語で記述された設計データを当該ハードウェア記述言語の形態にて、その構文解析によって直接該当するハードウェアの構造に関する所定の情報を抽出する段階は、前記ハードウェア記述言語の形態の設計データの構文解析を行なうことによって構文木データを生成する段階よりなる付記9に記載の設計データ解析プログラム。
【0067】
(付記11)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、前記ハードウェア記述言語で記述された設計データ中の信号代入文を解析することによって信号伝播経路を解析する段階よりなる付記9又は10に記載の設計データ解析プログラム。
【0068】
(付記12)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、更にブロック間の接続信号数を計数する段階よりなる付記11に記載の設計データ解析プログラム。
【0069】
(付記13)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、更にブロックからの信号のファンアウト数を計数する段階よりなる付記11に記載の設計データ解析プログラム。
【0070】
(付記14)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、前記ハードウェア記述言語で記述された設計データ中の条件節を解析することによってレジスタ回路に関する記述を検出し、その制御信号を検索する段階よりなる付記9乃至13のうちのいずれかに記載の設計データ解析プログラム。
【0071】
(付記15)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、更に非同期に動作するレジスタ間で信号の受け渡しを行なうデータパスを検索する段階よりなる付記14に記載の設計データ解析プログラム。
【0072】
(付記16)
前記ハードウェアの構造に関する所定の情報を抽出する段階は、更に同一制御信号で動作するレジスタ間で信号の受け渡しを行なうデータパスを検索する段階よりなる付記14に記載の設計データ解析プログラム。
【0073】
(付記17)
前記コンピュータはデータを入力する入力手段と、データを格納する格納手段と、データを処理するデータ処理手段と、データを出力する出力手段とよりなり、
前記データ処理手段による制御の下、前記入力手段によって入力されたハードウェア記述言語で記述された設計データを前記格納手段に書き込み、前記データ処理手段の機能によって該格納手段から当該設計データを読み出しながらその構文解析を行なって該当する構文木データを生成し、当該構文木データを更に解析して該当するハードウェア構造に関する所定の情報を抽出し、更に上記解析結果を前記出力手段によって出力する構成の付記9乃至16のうちのいずれかの設計データ解析プログラム。
【0074】
【発明の効果】
本発明によればハードウェア記述言語にて記述された設計データを、その記述言語の状態で構文解析することによって直接そのハードウェア構造に関する情報を予め抽出可能であるため、論理合成処理を行う前に所定の回路適正度検証処理、共同設計者間の設計諸元調整処理等を実施可能である。その結果、論理合成処理後の設計修正要求発生数の抑制等が可能となり、もって効果的にLSI設計等の所要期間短縮、データ処理量削減等が可能となる。
【図面の簡単な説明】
【図1】一般的なHDL設計データの回路を検証する際の処理フローを示す図である。
【図2】本発明の一実施例による設計データ処理フローを示す図である。
【図3】本発明の一実施例によるレジスタデータ判定処理の動作の流れを示す図である。
【図4】本発明の一実施例による伝播経路トレース処理の動作の流れを示す図である。
【図5】本発明の一実施例によるレジスタの制御信号検索処理の流れを示す図である。
【図6】本発明の一実施例による 非同期データパス検索処理の流れを示す図である。
【図7】本発明の一実施例によるブロック信号数カウント処理の流れを示す図である。
【図8】本発明の一実施例によるブロックファンアウト信号数カウント処理の流れを示す図である。
【図9】本発明の一実施例による同一制御信号レジスタ検索処理の流れを示す図である。
【図10】本発明の一実施例による設計データ解析システムを実現するためのハードウェア及びソフトウェア構成の一例を示す図である。
【図11】本発明の一実施例によるブロック信号数カウント処理の実例を説明するためのVHDL記述設計データ例を示す図である。
【図12】図11のデータを構文木データに変換後のデータを示す図である。
【図13】図12に示す構文木データを解析後得られる出力画面の例を示す図である。
【図14】本発明の一実施例によるファンアウト数カウント処理の実例を説明するためのVHDL記述設計データ例を示す図である。
【図15】図14のデータを構文木データに変換後のデータを示す図である。
【図16】図15に示す構文木データを解析後得られる出力画面の例を示す図である。
【図17】本発明の一実施例によるレジスタ制御信号検索処理の実例を説明するためのVHDL記述設計データ例を示す図である。
【図18】図17のデータを構文木データに変換後のデータを示す図である。
【図19】図18に示す構文木データを解析後得られる出力画面の例を示す図である。
【図20】本発明の一実施例による非同期データパス検索処理の実例を説明するためのVHDL記述設計データ例を示す図である。
【図21】図20のデータを構文木データに変換後のデータを示す図である。
【図22】図21に示す構文木データを解析後得られる出力画面の例を示す図である。
【図23】本発明の一実施例による同一制御信号レジスタ検索処理の実例を説明するためのVHDL記述設計データ例を示す図である。
【図24】図23のデータを構文木データに変換後のデータを示す図である。
【図25】図24に示す構文木データを解析後得られる出力画面の例を示す図である。
【図26】本発明の一実施例による信号伝播経路検索処理の実例を説明するためのVHDL記述設計データ例を示す図である。
【図27】図25のデータを構文木データに変換後のデータを示す図である。
【図28】図27に示す構文木データを解析後得られる出力画面の例を示す図である。
【符号の説明】
50 設計データ解析プログラム
51 VHDL読み込み部
52 構文解析部
53 データ解析部
54 結果出力部
Claims (5)
- 所定のハードウェア記述言語で記述された設計データを当該ハードウェア記述言語の形態にて、その構文解析によって直接該当するハードウェア構造に関する情報を抽出する段階を含む設計データ解析方法。
- 所定のハードウェア記述言語で記述された設計データを当該ハードウェア記述言語の形態にて、その構文解析によって直接該当するハードウェア構造に関する所定の情報を抽出する段階をコンピュータに実行させるための設計データ解析プログラム。
- 前記所定のハードウェア記述言語で記述された設計データを当該ハードウェア記述言語の形態にて、その構文解析によって直接該当するハードウェアの構造に関する所定の情報を抽出する段階は、前記ハードウェア記述言語の形態の設計データの構文解析を行なうことによって構文木データを生成する段階よりなる請求項2に記載の設計データ解析プログラム。
- 前記ハードウェアの構造に関する所定の情報を抽出する段階は、前記ハードウェア記述言語で記述された設計データ中の信号代入文を解析することによって信号伝播経路を解析する段階よりなる請求項2又は3に記載の設計データ解析プログラム。
- 前記ハードウェアの構造に関する所定の情報を抽出する段階は、前記ハードウェア記述言語で記述された設計データ中の条件節を解析することによってレジスタ回路に関する記述を検出し、その制御信号を検索する段階よりなる請求項2乃至4のうちのいずれか一項に記載の設計データ解析プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002359558A JP2004192334A (ja) | 2002-12-11 | 2002-12-11 | 設計データ解析方法及び設計データ解析プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002359558A JP2004192334A (ja) | 2002-12-11 | 2002-12-11 | 設計データ解析方法及び設計データ解析プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004192334A true JP2004192334A (ja) | 2004-07-08 |
Family
ID=32758924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002359558A Pending JP2004192334A (ja) | 2002-12-11 | 2002-12-11 | 設計データ解析方法及び設計データ解析プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004192334A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009059024A (ja) * | 2007-08-30 | 2009-03-19 | Toshiba Corp | 半導体集積回路の検証装置 |
US9117043B1 (en) | 2012-06-14 | 2015-08-25 | Xilinx, Inc. | Net sensitivity ranges for detection of simulation events |
CN110612526A (zh) * | 2017-05-29 | 2019-12-24 | 富士通株式会社 | 系统c模型生成方法和系统c模型生成程序 |
-
2002
- 2002-12-11 JP JP2002359558A patent/JP2004192334A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009059024A (ja) * | 2007-08-30 | 2009-03-19 | Toshiba Corp | 半導体集積回路の検証装置 |
JP4585559B2 (ja) * | 2007-08-30 | 2010-11-24 | 株式会社東芝 | 半導体集積回路の検証装置 |
US8135557B2 (en) | 2007-08-30 | 2012-03-13 | Kabushiki Kaisha Toshiba | Apparatus for testing semiconductor integrated circuit and method for testing semiconductor integrated circuit |
US9117043B1 (en) | 2012-06-14 | 2015-08-25 | Xilinx, Inc. | Net sensitivity ranges for detection of simulation events |
CN110612526A (zh) * | 2017-05-29 | 2019-12-24 | 富士通株式会社 | 系统c模型生成方法和系统c模型生成程序 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7162706B2 (en) | Method for analyzing and validating clock integration properties in circuit systems | |
US8719742B2 (en) | Conversion of circuit description to an abstract model of the circuit | |
US10354042B2 (en) | Selectively reducing graph based analysis pessimism | |
Pimentel et al. | Calibration of abstract performance models for system-level design space exploration | |
US20040117167A1 (en) | Simulation of software objects generated from a hardware description | |
US8522182B2 (en) | Generation of an end point report for a timing simulation of an integrated circuit | |
US20060259834A1 (en) | Method and system for debug and test using replicated logic | |
US7882483B2 (en) | Method for checking constraints equivalence of an integrated circuit design | |
US7493248B2 (en) | Method, system and program product supporting phase events in a simulation model of a digital system | |
US6964027B2 (en) | System and method for optimizing exceptions | |
US7266791B2 (en) | High level synthesis device, method for generating a model for verifying hardware, method for verifying hardware, control program, and readable recording medium | |
US20100269003A1 (en) | Delay fault diagnosis program | |
JP2004192334A (ja) | 設計データ解析方法及び設計データ解析プログラム | |
Mehta et al. | SystemVerilog Assertions | |
JP5447547B2 (ja) | マクロ遅延解析装置、マクロ境界パスの遅延解析方法、マクロ境界パスの遅延解析プログラム | |
KR20230117364A (ko) | 클록 인식 시뮬레이션 벡터 프로세서 | |
US7051301B2 (en) | System and method for building a test case including a summary of instructions | |
JPWO2006025412A1 (ja) | 論理検証方法、論理モジュールデータ、デバイスデータおよび論理検証装置 | |
US6968523B2 (en) | Design method of logic circuit using data flow graph | |
Brinkmann et al. | Formal verification—the industrial perspective | |
JP4549935B2 (ja) | 半導体集積回路設計支援システム及びプログラム | |
Kebaili et al. | Enabler-based synchronizer model for clock domain crossing static verification | |
US8813005B1 (en) | Debugging using tagged flip-flops | |
US11403449B1 (en) | Systems and methods for configurable switches for verification IP | |
JP6146224B2 (ja) | 判定方法、判定プログラム、および判定装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050523 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080307 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080408 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080826 |