JP3943299B2 - Apparatus and method for generating properties to be verified for hardware - Google Patents
Apparatus and method for generating properties to be verified for hardware Download PDFInfo
- Publication number
- JP3943299B2 JP3943299B2 JP32134699A JP32134699A JP3943299B2 JP 3943299 B2 JP3943299 B2 JP 3943299B2 JP 32134699 A JP32134699 A JP 32134699A JP 32134699 A JP32134699 A JP 32134699A JP 3943299 B2 JP3943299 B2 JP 3943299B2
- Authority
- JP
- Japan
- Prior art keywords
- data transfer
- resource
- graph
- hardware
- property
- 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
Links
Images
Landscapes
- Semiconductor Integrated Circuits (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、ハードウェア記述言語により記述された複数の資源およびそれらの資源を利用したデータ転送を含むハードウェアについて検証すべきプロパティを生成する装置および方法に係わる。
【0002】
【従来の技術】
近年、半導体チップの設計は非常に複雑になってきている。すなわち、半導体チップ上に非常に複雑なハードウェア(論理装置)が実装されるようになってきている。このため、半導体チップの設計は、複数の設計者による共同作業で行われることが多い。
【0003】
ところが、複数の設計者により細分化された設計情報は、各設計者により誤って解釈されることがある。この場合、ある一部における誤り(設計ミス)は、レジスタ転送レベルにおいて、システム全体が正しく動作しなくなる原因となることがある。そして、もし、そのような誤りがあると、デバッグ作業などに多大な費用と時間が浪費されてしまう。
【0004】
ところで、半導体チップ上に設けることができる資源(例えば、レジスタ、バス、入力ポート、出力ポートなど)は有限である。このため、各資源は、通常、複数のタスクにより共有される。そして、共有されている資源により生成されるデータは、しばしば、一時的にデータ記憶用資源(例えば、レジスタなど)に格納される。
【0005】
このような状況において頻繁に発生する設計誤りは、「資源競合」および「レジスタ漏れ」である。資源競合は、1つの資源(レジスタなど)が複数の資源により同時にアクセスされる誤りである。一方、レジスタ漏れは、複数の資源によりあるレジスタがアクセスされる際のアクセス順番に係わる誤りである。
【0006】
複雑なハードウェアが実装された半導体チップ上には、膨大な数の資源が形成されている。このため、上述のような誤り(資源競合、レジスタ漏れなど)を人手で全て発見することは実質的に不可能である。ところが、設計されたハードウェアの中にたった1つの誤りがあっただけでシステム全体が正しく動作しなくなってしまうこともある。したがって、すべての資源競合およびレジスタ漏れを発見して取り除いておくことは、非常に重要である。
【0007】
【発明が解決しようとする課題】
多くの設計者は、設計作業の早い段階で資源競合やレジスタ漏れを発見することの重要性を認識している。しかし、現在までのところ、資源競合やレジスタ漏れを発見するための作業は、各設計者によりその設計者が担当するサブシステムごとに行われているに過ぎなかった。
【0008】
システム全体の動作を保証するためには、サブシステムごとの検証だけでは十分ではなく、設計されたハードウェア全体に渡って資源競合やレジスタ漏れを探し、それらを取り除く必要がある。しかし、従来は、そのような作業はなされていなかった。このため、ハードウェア設計に誤りが含まれていた場合には、それらの誤りは、通常、半導体チップ上にそのハードウェア設計を実装した後に検出されることになる。
【0009】
本特許出願の出願人が知る範囲では、資源競合およびレジスタ漏れを自動的に検出し、定式化し、確認するツールは存在しない。そして、そのようなツール無しでは、誤りのないハードウェア設計を実現することは実質的に不可能であろうと思われる。
【0010】
本発明の課題は、ハードウェア記述言語により記述されているハードウェアについて検証すべきプロパティを生成することができる装置および方法を提供することである。
【0011】
【課題を解決するための手段】
本発明のプロパティ生成装置は、ハードウェア記述言語により記述された複数の資源およびそれらの資源を利用したデータ転送を含むハードウェアについて検証すべきプロパティを生成する構成を前提とし、以下の各手段を有する。グラフ生成手段は、ハードウェア記述言語で記述された資源およびデータ転送に対応するデータ転送グラフを生成する。最適化手段は、そのグラフ生成手段により生成されたデータ転送グラフを最適化する。プロパティ生成手段は、その最適化手段により最適化されたデータ転送グラフを利用して、上記ハードウェア記述言語により記述されているハードウェアについて検証すべきプロパティを生成する。
【0012】
上記構成において、ハードウェア記述言語により記述されている設計情報がグラフ化され、そのグラフを利用してハードウェアについて検証すべきプロパティが自動的に生成される。このとき、プロパティが生成される前にデータ転送グラフが最適化されるので、プロパティの生成が容易になる。生成されたプロパティは、検証ツールにより検証される。
【0013】
資源は、例えば、レジスタ、バス、入力ポート、出力ポートであり、データ転送グラフにおいてそれぞれノードで表される。一方、データ転送は、その転送元および転送先が定義されたエッジ(矢印)を用いて表される。そして、最適化手段は、データ転送グラフのトポロジに基づいてグラフを最小化する。
【0014】
生成すべきプロパティは、例えば、資源競合およびレジスタ漏れである。資源競合のプロパティは、データ転送グラフにおいて、複数のファンインエッジが接続されたノードにおいて検出される。一方、レジスタ漏れは、データ転送グラフにおいて、ファンインエッジおよびファンアウトエッジが接続されたレジスタを表すノードにおいて検出される。
【0015】
【発明の実施の形態】
以下、本発明の実施形態について図面を参照しながら説明する。
図1は、本発明の一実施形態のプロパティ生成ツールが使用される環境を説明する図である。本実施形態のプロパティ生成ツール1は、予め作成されているハードウェア仕様2からプロパティを抽出し、それを検証ツール3に検証させるものである。
【0016】
ハードウェア仕様2は、あるハードウェア(例えば、半導体チップ上に実装されるプロセッサ等の論理装置)の設計記述であり、そのハードウェアに含まれる複数の資源、およびそれら資源間のデータ転送を定義する。このハードウェア仕様2は、たとえば、レジスタ転送レベルのハードウェア記述言語で記述されている。ハードウェア記述言語は、例えば、Verilog である。また、定義される資源は、例えば、レジスタ、レジスタファイル、バス、入力ポート、出力ポート、入出力ポートなどである。
【0017】
ハードウェア仕様2において記述されているハードウェアは、1以上のモジュールを含む。モジュールが複数あるときは、それらは、しばしば階層的に記述される。この場合、しばしば、上位階層のモジュールを「親(ペアレント)」、下位階層のモジュールを「子供(チャイルド)」と呼ぶことがある。なお、各モジュールは、それぞれ1以上の資源を含む。
【0018】
プロパティ生成ツール1は、入力されたハードウェア仕様2を解析し、プロパティ(検証ツール3が検証すべき項目または条件式)を抽出する。この実施例では、プロパティは、「資源競合」および「レジスタ漏れ」であり、例えば、CLTなどの時相論理式(時間経過に伴う信号変化の条件式)で表される。
【0019】
検証ツール3は、既存の論理検証ツールであり、プロパティ生成ツール1により抽出されたプロパティについて検証する。具体的には、ハードウェア仕様2により記述されているハードウェアにおいて「資源競合」または「レジスタ漏れ」が発生するか否かを検証する。なお、検証ツール3は、他の項目についても検証することができる。
【0020】
図2は、プロパティ生成ツール1の動作を説明するフローチャートである。この処理は、ハードウェア仕様2が入力されたときに実行される。
ステップS1(Phase1)では、ハードウェア仕様2の記述に基づいて、データ転送グラフ(DTDAG:Data Transfer Directed Acyclic Graph)が作成される。このとき、ハードウェア仕様2において定義されている各モジュール毎に資源が認識され、さらに、モジュールが階層的に記述されているときはそれらの資源の親−子関係も認識される。また、データ転送に係わる条件が考慮される。これらの条件は、ハードウェア仕様2に記述されている。データ転送グラフは、ハードウェア仕様2により記述されているハードウェアに含まれる資源およびデータ転送を表す。
【0021】
ステップS2(Phase2)では、ステップS1で作成されたデータ転送グラフが最適化(簡略化または最小化)される。具体的には、データ転送グラフにおいて表されている資源およびデータ転送のうち、「資源競合」又は「レジスタ漏れ」が発生する可能性のない資源またはデータ転送が削除される。
【0022】
ステップS3(Phase3)では、ステップS2において最適化されたデータ転送グラフからプロパティを抽出し、さらにそれらに対応する入力スクリプトを生成する。この入力スクリプトは、検証ツール3が処理可能な形式で記述される。
【0023】
次に、図3を参照しながら、データ転送グラフおよび抽出すべきプロパティについて説明する。図3は、データ転送グラフの一例である。このデータ転送グラフは、入力されたハードウェア仕様に基づいて作成されるが、ここでは、その作成方法の説明は省略する。なお、データ転送グラフは、基本的に、コンピュータ画面に実際に表示されるものではない。したがって、図3に示すグラフは、データ転送グラフを模式的に示したものである。このことは、以下の図面においても同様である。ただし、データ転送グラフをコンピュータ画面に実際に表示することは可能であり、そのようにしてもよい。
【0024】
各ノードA〜F、H、Iは、それぞれデータ資源に対応する。例えば、ノードAは、ハードウェア仕様2において「interface control register file 」という名称が与えられたレジスタである。また、ノード間に描かれている矢印は、データ転送に対応する。以下、この矢印を「データ転送エッジ」または単に「エッジ」と呼ぶことにする。また、例えば、ノードAからノードDへのデータ転送に対応するエッジは、ノードAにとってはファンアウトエッジ(または、出力エッジ)であり、同時に、ノードDにとってはファンインエッジ(または、入力エッジ)である。
【0025】
各データ転送エッジには、そのデータ転送についての定義や条件が付与されている。「C」は、データ転送が「同時転送(Concurrent Transfer )」であることを表し、「S」は、そのデータ転送が「順次転送(Sequential Transfer )」であることを表す。また、「Gi 」は、データ転送についての動作条件(guard or enabling condition )を表す。たとえば、図3に示す例では、条件G1 が満たされたときに、ノードAからノードDへのデータ転送が実行される。
【0026】
上記データ転送グラフにおいて、あるノードに対して複数のファンインエッジが存在する場合(Multiple fan-in )、「資源競合」が発生する可能性がある。ノードDに注目する。ノードDは32ビットのレジスタ"reg data out"である。ノードDには、エッジADおよびエッジBDが入力されている。したがって、条件G1 が満たされたときに、ノードA(レジスタ"interface control register file" )に格納されているデータがノードD(レジスタ"reg data out")に転送され、また、条件G2 が満たされたときに、ノードB(入力ポート"data out")からノードD(レジスタ"reg data out")へデータが転送される。この場合、もし、任意のクロックサイクルにおいて、条件G1 およびG2 が同時に満たされると、レジスタ"reg data out"に対して同時に2つの書込アクセスが発生することになる。すなわち、「資源競合」が発生することになる。
【0027】
上述のような「資源競合」は、データ転送グラフでは、複数のファンインエッジが存在するノードにおいて発生し得る。したがって、プロパティ生成ツール1は、データ転送グラフにおいて複数のファンインエッジが存在するノードを検出する。そして、検証ツール3が、そのノードに係わるデータ転送のタイミングを考慮しながら、実際に「資源競合」が発生するか否かを検証する。
【0028】
また、あるノードに対してファンインエッジおよびファンアウトエッジが存在する場合には、「レジスタ漏れ」が発生する可能性がある。例えば、ノードDには、ファンインエッジAD、BD、およびファンアウトエッジDFが存在する。ここで、このハードウェアは、ノードAのデータをノードDを介してノードFに送った後に、ノードBのデータをノードにDに書き込む動作をするものとする。したがって、この動作は、条件G1 、G6 、G2 がその順番で満たされたときに得られる。ところが、もし、条件G6 が満たされる前に条件G1 および条件G2 が満たされてしまうと、ノードDからノードFへのデータ転送は、ノードDがノードBから転送されてくるデータにより上書き(data overwrite)された後に実行されることになる。すなわち、「レジスタ漏れ」が発生することになる。
【0029】
なお、「レジスタ漏れ」は、あるノードに対するファンインエッジが1つの場合にも起こり得る。例えば、第1のノードから第2のノードを介して第3のノードへデータを転送する場合に、第2のノードから第3のノードへのデータ転送が実行される前に、第1のノードから第2のノードへ他のデータが転送されると、上述の場合と同様に、「レジスタ漏れ」が起こり得る。
【0030】
このように、上述のような「レジスタ漏れ」は、データ転送グラフにおいてあるノードに1以上のファンインエッジおよび1以上のファンアウトエッジが存在する場合に発生し得る。したがって、プロパティ生成ツール1は、データ転送グラフからファンインエッジおよびファンアウトエッジが存在するノードを検出する。そして、検証ツール3が、そのノードに係わるデータ転送のタイミングを考慮しながら、実際に「レジスタ漏れ」が発生するか否かを検証する。
【0031】
レジスタに対応するノードに対してファンインエッジおよびファンアウトエッジが存在する場合には、さらに他の問題が内在する。例えば、もし、あるレジスタに対応するノードのファンインエッジに係わる条件と、そのノードのファンアウトエッジに係わる条件とが同一クロックサイクル内で満たされるとすると、そのレジスタに対して書込アクセスおよび読出アクセスが同時に行われることになる。このような状況は、レジスタ転送レベルのモデルでは必ずしもエラーではない。しかし、この状況は、ゲートレベル或いはレイアウトレベルにおいてクロックの歪みを考慮すると、上記レジスタから誤ったデータを読み出してしまう恐れがある。すなわち、もし、クロックが歪んでいると、あるクロックサイクルにおいて、レジスタからのデータ読出しが完全に終わる前にそのレジスタに新たなデータの書込み行われてしまうことがある。この問題は、実際の半導体チップ上では、レジスタ漏れプロパティとして現れる。なお、図3に示す例では、例えば、ノードIからノードCへのデータ転送とノードCからノードDへのデータ転送との間でこの種の「資源競合」が起こり得る。
【0032】
上述のように、「資源競合」および「レジスタ漏れ」が実際に発生するのか否かは、検証ツール3により検証される。すなわち、プロパティ生成ツール1は、これらの問題が発生する可能性のあるプロパティをハードウェア仕様2から自動的に生成し、それらを検証ツールに渡す。
【0033】
なお、上述のプロパティ(「資源競合」および「レジスタ漏れ」)は、記述されたハードウェアの資源およびデータ転送がデータ転送グラフで表された場合、そのグラフのトポロジに関係する。即ち、データ転送グラフのトポロジを解析すれば、「資源競合」または「レジスタ漏れ」が発生する可能性を判断できる。このため、プロパティ生成ツール1は、データ転送グラフのトポロジから自動的にプロパティを生成できる。ただし、この場合、資源およびデータ転送に係わる情報は、レジスタ転送レベルコードから抽出されている必要がある。
【0034】
ところで、ハードウェア仕様2において記述されているハードウェアが大規模になると、必然的に、その記述から生成されるデータ転送グラフは複雑になる。このため、プロパティ生成ツール1は、プロパティを正確に且つ短時間に生成するために、生成したデータ転送グラフを最適化(最小化または簡略化)する。最適化の方法としては、データ転送グラフのトポロジに基づく最適化(トポロジ最適化)、およびデータ転送の動作条件に基づく最適化(論理最適化)が考えられる。
【0035】
図4は、データ転送グラフを最適化する処理のフローチャートである。この処理は、図2のステップS2に相当する。
ステップS11では、「非フラグメント等価(Unfragmented Equivalence)」を検出する。ステップS12では、「フラグメント等価(Fragmented Equivalence)」を検出する。ステップS13では、「名称等価(Named Equivalence )」を検出する。ステップS14では「フラグメントエッジ(Fragmented Edges)」を検出する。ステップS15では、「等価エッジ(Edges in Equivalence)」を検出する。ステップS16では、「レジスタファイル(Register File )」を検出する。上記ステップS11〜S16により、資源どうしの等価関係が検出される。そして、それらの等価関係を利用し、データ転送グラフから「資源競合」または「レジスタ漏れ」が発生する可能性のない部分を削除する。これにより、データ転送グラフが最適化(すなわち、最小化)される。
【0036】
ここで、ステップS11〜S16の処理のうちの幾つかについて簡単に説明をしておく。なお、ステップS11〜S16の各処理は、後述フローチャートを参照しながら詳しく説明する。
【0037】
図5は、ハードウェアの例である。図6は、図5に示すハードウェアを階層的に記述する方法を説明する図である。ハードウェア資源およびデータ転送は、しばしば、図6に示すように、階層的に設計されて記述される。ここでは、「モジュール0」が上位階層であり、「モジュール1」および「モジュール2」が「モジュール0」の下位階層である。
【0038】
このように、階層ごとにデータ資源およびデータ転送が記述される場合、同一の資源またはデータに対して異なる名称が付与されることが多々ある。例えば、図6に示す例においては、モジュール0への入力である"input 1" は、モジュール1においては"input 11"として記述されている。
【0039】
ところで、ハードウェア記述言語では、モジュール間のデータ転送は、通常、入力ポートまたは出力ポートを用いて記述される。たとえば、モジュール0における"input 1" とモジュール1における"input 11"との対応関係は、しばしば、モジュール0の"input port 1"からモジュール1の"input port 11" へのデータ転送として表される。本実施形態では、このようなポート同士の対応関係を「ポート連携(Port Association)」と呼ぶ。そして、この「ポート連携」は、ハードウェア仕様2において定義されている。
【0040】
また、ハードウェア記述言語では、あるモジュール内のレジスタに格納されているデータを他のモジュールへ転送する場合、そのデータは、出力ポートを介して転送されるように記述される。この場合、その出力ポートには、通常、上記レジスタに付与されている名称と同じ名称が付与される。本実施形態では、この対応関係を「名称連携(Named Association )」と呼ぶ。
【0041】
図7は、「資源の等価」を利用してデータ転送グラフを最適化する例を示す図である。図7(a) は、ハードウェア仕様2において記述されている資源およびデータ転送の定義から生成されたデータ転送グラフを示す。この実施例では、モジュール1には、3つの資源(入力ポートSD-DQ-IN、レジスタdata-in 、出力ポートdata-in )が設けられている。また、モジュール1の出力は、モジュール2において定義されているバスワイヤdata-buf-outに転送され、さらに、モジュール3において定義されているレジスタreg-data-outに転送される。
【0042】
ここで、レジスタdata-in および出力ポートdata-in は、互いに「名称連携」の関係を有する。すなわち、これら2つの資源は、等価(名称等価)であるものとみなすことができる。したがって、入力ポートSD-DQ-INからレジスタdata-in へのデータ転送は、入力ポートSD-DQ-INから出力ポートdata-in へのデータ転送として扱うことができる。また、出力ポートdata-in およびバスワイヤdata-buf-outは、互いに「ポート連携」の関係を有する。即ち、これら2つの資源は、等価であるものとみなすことができる。従って、入力ポートSD-DQ-INから出力ポートdata-in へのデータ転送は、入力ポートSD-DQ-INからバスワイヤdata-buf-outへのデータ転送として扱うことができる。そして、これらの等価関係を利用すれば、図7(a) に示すデータ転送グラフは、図7(b) に示す形態に最適化(すなわち、簡略化)される。
【0043】
なお、データ転送の転送元の資源と転送先の資源とが等価であるためには、それらの資源が扱うデータのビット幅が互いに同じである必要がある。従って、以下の定義が得られる。
定義1:互いに隣接する1組の資源が互いに同じビット幅仕様を備える場合、そ
れらの等価な資源は、「非フラグメント等価」である。
【0044】
図8は、「フラグメント」を説明する図である。図8に示す例では、中間レベルのモジュールCに32ビット幅の出力ポートOPが設けられ、その上位レベルのモジュールBにそれぞれ8ビット幅の出力ポートOP1〜OP4が設けられている。
【0045】
ここで、あるデータ幅を持ったデータ資源とそのデータ幅よりも小さいデータ幅のデータ資源(あるいは、そのデータ幅よりも大きいデータ幅のデータ資源)との間でデータ転送がある場合、「フラグメント等価」が生じ得る。図8に示す例では、モジュールBの出力ポートOP1〜OP4は、モジュールCの出力ポートOPとの関係において「フラグメント等価」とみなされる。
【0046】
図8に示すモデルにおける出力ポートOP、および出力ポートOP1〜OP4は、データ転送グラフでは、それぞれノードで表され、また、出力ポートOPから出力ポートOP1〜OP4へのデータ転送は、それぞれエッジで表される。ここで、上述したように、出力ポートOP1〜OP4にそれぞれ対応するノードが「フラグメント等価」である場合、上記データ転送に対応する4本のエッジはフラグメントエッジである。本実施形態では、「フラグメント等価」であるノードに接続される複数のエッジを、「フラグメントエッジ」と呼ぶ。
【0047】
「フラグメント等価」の有用性は、フラグメントデータ転送を組み合わせることにより非フラグメントデータ転送を得る可能性があることである。また、データ転送の転送元資源または転送先資源が「フラグメント等価」であるか否かに基づいて、データ転送がフラグメントデータ転送であるか非フラグメントデータ転送であるかを識別することができる。
【0048】
フラグメントデータ転送を最適化する他の方法は、「独立フラグメントデータ転送」である。この「独立フラグメントデータ転送」について、以下の定義を設ける。
定義2:フラグメントデータ転送エッジの中の任意のエッジの組合せにおいて資
源競合を起こさないのであれば、それらのエッジは「独立」である。
【0049】
本実施形態の最適化処理では、データ転送グラフから「独立」なエッジが削除される。これにより、資源競合プロパティまたはレジスタ漏れプロパティが誤って生成されることが回避される。
【0050】
レジスタファイルは、ハードウェア規模を小さくするために、複数のレジスタをグループ化し、バスと各レジスタとの間の接続を簡略化する技術である。これにより、例えば、図9(a) に示す構成が、図9(b) に示す構成に簡略化される。ただし、レジスタファイルに属する各レジスタは、ハードウェア記述言語では、しばしば独立したレジスタとして記述される。この場合、レジスタファイルは、データ転送グラフにおいて、複数のレジスタとして表わされる。このため、データ転送グラフの最適化処理では、レジスタファイルを認識し、そのレジスタファイルに属する複数のレジスタに対応する複数のノードを、1つのノードに置き換える。
【0051】
次に、具体的な実施例を示す。
第1の実施例
図10〜図15は、プロパティ生成ツール1に入力されるハードウェア仕様2の一例である。ここでは、ハードウェア記述言語として、Verilog が使用されている。
【0052】
図10は、モジュール0について記述したコードである。このコードのセクション1の記述によれば、モジュール0は、2つの入力ポート(INPUT1,2)、および2つの出力ポート(OUTPUT1,2 )を備える。これらの各ポートは、それぞれ16ビット幅である。また、モジュール0には、クロックおよび制御信号が入力される。さらに、モジュール0には16ビット幅のバスワイヤCONEKTが設けられている。
【0053】
セクション2の記述によれば、モジュール0の下位階層にモジュール1が設けられている。そして、モジュール0とモジュール1との間におけるポートの対応関係(ポート連携)が定義されている。この例では、例えば、モジュール0の入力ポートINPUT1の8〜15ビットがモジュール1の入力ポートIPORT3に対応付けられ、モジュール0の入力ポートINPUT1の0〜7ビットがモジュール1の入力ポートIPORT4に対応付けられている。この場合、入力ポートINPUT1は、入力ポートIPORT3および入力ポートIPORT4の「親資源」であり、また、入力ポートIPORT3および入力ポートIPORT4は、入力ポートINPUT1の「子供資源」である。また、バスワイヤCONEKTがモジュール1の入力ポートIPORT1,2に接続されている。
【0054】
セクション3の記述によれば、モジュール0の下位階層にモジュール2が設けられている。セクション3では、モジュール0とモジュール2との間におけるポートの対応関係が定義されている。また、バスワイヤCONEKTがモジュール2の出力ポートOPORT1に接続されている。
【0055】
図11および図12は、モジュール1について記述したコードである。セクション4の記述によれば、各入力ポート(IPORT1-4)、出力ポート(OPORT1,2)はそれぞれ8ビット幅である。また、セクション5の記述によれば、モジュール1には、レジスタAおよびレジスタBが設けられている。そして、レジスタAに格納されているデータは出力ポートOPORT1に転送され、レジスタBに格納されているデータは出力ポートOPORT2に転送される。なお、これらのデータ転送は、クロックまたは制御信号に係わらず実行される。すなわち、これらのデータ転送は、同時転送(Concurrent Transfer )タイプに属する。具体的には、"continuous assignment" による転送である。
【0056】
セクション6の記述によれば、制御信号1が与えられると、入力ポートIPORT1に入力されたデータがレジスタAに書き込まれると共に、入力ポートIPORT3に入力されたデータがレジスタBに書き込まれる。また、セクション7の記述によれば、制御信号2が与えられると、入力ポートIPORT2に入力されたデータがレジスタAに書き込まれると共に、入力ポートIPORT4に入力されたデータがレジスタBに書き込まれる。これらのデータ転送は、制御信号に従って実行される。すなわち、これらのデータ転送は、順次転送(Sequential Transfer )タイプに属す。具体的には、"sequential always block" による転送である。
【0057】
図13〜図15は、モジュール2について記述したコードである。セクション8の記述によれば、各入力ポート(IPORT5)、出力ポート(OPORT3,4)はそれぞれ16ビット幅である。また、セクション9の記述によれば、モジュール2は、レジスタC〜Fを備える。そして、レジスタEに格納されているデータは出力ポートOPORT3に転送され、レジスタFに格納されているデータは出力ポートOPORT4に転送される。これらのデータ転送は、同時転送である。また、各レジスタC〜Fには、それぞれ所定の初期値が与えられている。
【0058】
セクション10の記述によれば、制御信号3が与えられると、入力ポートIPORT5に入力されたデータがレジスタCに書き込まれ、そうでない場合には、入力ポートIPORT5に入力されたデータはレジスタDに書き込まれる。また、セクション11の記述によれば、制御信号4が与えられると、レジスタC、Dに所定の演算結果データが書き込まれる。さらに、セクション12の記述によれば、レジスタFにも所定の演算結果データが書き込まれる。
【0059】
セクション13の記述によれば、制御信号5が与えられると、レジスタCに格納されているデータがレジスタEに書き込まれる。また、制御信号5が与えられることなく制御信号6が与えられると、レジスタDに格納されているデータがレジスタEに書き込まれる。さらに、制御信号5および6が与えられることなく制御信号7が与えられ場合、および制御信号5〜7が与えられなかった場合は、それぞれレジスタEに所定の定数データが書き込まれる。
【0060】
図16は、図10〜図15に示したハードウェア仕様から生成されたデータ転送グラフである。このグラフは、図2に示したフローチャートのステップSにより生成される。なお、ハードウェア仕様において定義されているデータ資源は、データ転送グラフでは、「ノード」として表される。そして、各ノードごとに、データ資源の名称、データ資源の種別(レジスタ、バスワイヤ、ポートなど)、モジュール名、およびノード名が設定される。また、各データ転送は、データ転送グラフでは、それぞれエッジ(図16では、「矢印」で描かれている)で表される。
【0061】
なお、このデータ転送グラフは、発明を理解しやすくするために模式的に描いたものであり、実際は、モジュールリスト、データ資源リスト、データ転送エッジリスト、および等価クラスリスト等から構成される。
【0062】
モジュールリストは、ハードウェア仕様において定義されている各モジュールについて以下の情報を格納する。
・モジュールの名称
・親モジュール(当該モジュールの上位階層のモジュール)
・子供モジュール(当該モジュールの下位階層のモジュール)
・階層レベル(当該モジュールが属する階層)
・処理状態(最適化処理における中間状態を表すフラグ等)
・各種ポインタ
例えば、モジュール0についてモジュールリストに格納すべき情報としては、ハードウェア仕様から以下が得られる。
【0063】
・モジュールの名称:MOD0
・親モジュール:なし
・子供モジュール:MOD1, MOD2
・階層レベル:0
なお、「処理状態」は、最適化処理における中間状態を表すフラグ等であり、ハードウェア仕様から得られるのではない。また、「ポインタ」も、ハードウェア仕様から得られるのではない。
【0064】
データ資源リストは、ハードウェア仕様において定義されている各データ資源について以下の情報を格納する。このリストは、資源の種別(レジスタ、入力ポート、出力ポート、バス、データ転送、定数、...)ごとに生成される。
【0065】
・資源の名称
・親モジュール
・階層レベル
・ビット幅仕様
・親資源
・子供資源
・非フラグメント等価クラス
・フラグメント等価クラス
・エッジ
・処理状態
例えば、入力ポートINPUT1(ノードA)についてデータ資源リストに格納すべき情報としては、ハードウェア仕様から以下が得られる。
【0066】
・資源の名称:INPUT1
・親モジュール:なし
・階層レベル:0
・ビット幅仕様:「15:0」
・親資源:なし
・子供資源:IPORT5
・エッジ:エッジAF
なお、「非フラグメント等価クラス」および「フラグメント等価クラス」は、ハードウェア仕様から得られるのではなく、データ転送グラフを解析することにより得られるものである。
【0067】
データ転送エッジリストは、ハードウェア仕様において定義されている各データ転送について以下の情報を格納する。
・エッジの名称
・転送先資源
・転送元資源
・ガード表現(データ転送の条件)
・データ転送タイプ(同時転送または順次転送など)
・転送先または転送元のフラグメント状態
・最適化処理における処理状態
例えば、入力ポートIPORT1(ノードJ)からレジスタREG-A (ノード0)へのデータ転送に対応するエッジについてデータ転送エッジリストに格納すべき情報としては、ハードウェア仕様から以下が得られる。
【0068】
・エッジの名称:JO
・転送先資源:レジスタREG-A (ノード0)
・転送元資源:入力ポートIPORT1(ノードJ)
・ガード表現:CTRL1
・データ転送タイプ:S(順次転送)
なお、「転送先または転送元のフラグメント状態」は、データ転送グラフを解析することにより得られる。
【0069】
等価クラスリストは、以下の情報を格納する。なお、これらの情報は、データ転送グラフを解析することにより得られる。
・等価クラス識別子
・各等価クラスに属する資源
・処理状態
データ転送グラフを作成する際には、まず、ハードウェア仕様の各モジュール毎の記述を上位階層から順番に解析してゆき、定義されている各データ資源、それら資源の対応関係、およびそれらの資源を利用したデータ転送を認識する。このとき、あるモジュールから他のモジュールへのコールがあるか否かを調べるために、behavioural 記述がスキャンされる。そして、そのようなコールがあった場合には、呼び出されたモジュール毎に、サーチキューを設け、先に認識されている資源との間でインタフェース定義の対応関係を認識する。
【0070】
また、各ポート(入力ポート、出力ポート、入出力ポートを含む)、バスワイヤ、レジスタのビット幅を認識し、さらに、各バスワイヤごとに、そのバスワイヤに対応するドライバおよびレジスタを認識する。
【0071】
ハードウェア資源2から抽出した情報は、モジュールリスト、データ資源リスト、データ転送エッジリストに格納される。図10〜図15に示す例では、これらの処理により、図16に示す各ノードA〜Y(E、G、P、Q、Rを除く)が生成され、それぞれビット幅が設定される。
【0072】
さらに、データ転送毎に設定されている条件を解析する。これらの条件は、たとえば、"gurded continuous assignment statement"、"combinational alwaus block"、"sequential always block" である。これらの情報は、「ガード表現」として、データ転送毎にデータ転送エッジリストに登録される。これにより、各データ転送に対応するエッジが生成されることになる。なお、条件が設定されていないデータ転送については、そのデータ転送に対して「1」が付与される。
【0073】
ハードウェア仕様において代入式が記述されている場合(例えば、セクション10およびセクション11)には、図17(a) に示すように、疑似資源Sdtが生成される。この疑似資源Sdtは、記述されている代入式を実装する仮想的なデータソースである。たとえば、セクション11に記述されている代入式に対応するノードP(Sdt3)が生成される。ノードE、Gも同様である。また、あるレジスタに予め決められた定数が書き込まれる場合(例えば、セクション13)は、図17(b) に示すように、疑似資源Sdcが生成される。この疑似資源Sdcもまた仮想的なデータソースである。例えば、セクション13に記述された定義に対応してノードQ、Rが生成される。なお、これらの疑似資源は、ハードウェア仕様に基づいてデータ資源リストに所定の情報を登録することにより生成される。
【0074】
続いて、上述のようにして生成されたデータ転送グラフが最適化される。図16に示す例では、データ転送グラフにおいて「非フラグメント等価」「フラグメント等価」および「独立エッジ」を検出することによりデータ転送グラフが最適化される。
【0075】
「非フラグメント等価」を検出する場合、ハードウェア仕様のインタフェース定義において互いに「等価」であると定義されている1組の資源であって、データ幅が互いに同じであるものを認識する。この場合、対象となる資源は、たとえば、入力ポート、出力ポートおよび入出力ポートである。そして、非フラグメント等価クラスに属する資源が検出されると、そのことを表す情報が、データ資源リストにおいて、その資源に対応する記憶領域に登録される。
【0076】
上記等価関係は、各ポート毎に調べられる。このとき、各ポート毎に処理は、最終資源にたどり着くまで、あるいは異なるビット幅の資源に到達するまで継続される。
【0077】
ここで、図16に示したグラフにおける「非フラグメント等価」を説明する。ノードA(モジュール0のINPUT2)及びノードF(モジュール2のIPORT5)は、共に16ビットの入力ポートである。また、これらの入力ポートは、ハードウェア仕様のセクション3に定義されているように、互いに対応する資源である。即ち、ノードFに対応する資源は、ノードAに対応する資源の「子供」である。従って、ノードAおよびノードFは、「非フラグメント等価」である。同様に、ノードCはノードDと等価であり、ノードXはノードWと等価である。
【0078】
この場合、例えば、資源Aおよび資源Fが非フラグメント等価クラス#1に属しているとすると、データ資源リストにおいて、資源Aおよび資源Fの「非フラグメント等価クラス」にそれぞれ「#1」が登録される。
【0079】
「フラグメント等価」を検出する場合は、分岐されている資源の中から等価なものを認識する。図16に示す例では、例えば、ノードBからノードHおよびノードIへデータが転送されている。このとき、ノードBのビット仕様が16ビット幅であるのに対し、ノードHおよびノードIのビット仕様はそれぞれ8ビット幅である。即ち、各転送先のノードで使用されるビット幅は、転送元のノードで使用されるビット幅よりも小さい。従って、ノードHおよびノードIは、「フラグメント等価」である。このことは、ノードJ、Kにおいても同様である。
【0080】
一方、ノードYには、ノードSおよびノードTからデータが転送されてきている。このとき、各転送元のノードで使用されるビット幅は、転送先のノードで使用されるビット幅よりも小さい。従って、ノードSおよびノードTは、「フラグメント等価」である。
【0081】
この場合、例えば、資源Hおよび資源Iがフラグメント等価クラス#5に属しているとすると、データ資源リストにおいて、資源Aおよび資源Fの「フラグメント等価クラス」にそれぞれ「#5」が登録される。
【0082】
「独立エッジ」は、以下のようなものである。たとえば、ノードPはノードUのみにデータを転送し、ノードUはノードPのみからデータを受け取る。この場合、ノードPからノードUへのデータ転送に対応するエッジは、独立エッジである。また、ノードYには、ノードS、Tからデータが転送されてきている。このとき、ノードSからは0〜7ビットが転送され、ノードTには8〜15ビットが転送されてきている。すなわち、これら2つのデータ転送においてデータビットはオーバラップしていない。この場合、ノードSからノードYへのデータ転送に対応するエッジ及びノードTからノードYへのデータ転送に対応するエッジは、共に独立エッジである。図16に示すグラフでは、この他にも、例えば、ノードNからノードSへのデータ転送、ノードOからノードTへのデータ転送、ノードUからノードDへのデータ転送、ノードVからノードWへのデータ転送に対応するエッジもそれぞれ独立エッジである。
【0083】
「独立エッジ」と関連して、「フラグメントエッジ」および「等価エッジ」の概念を導入する。
「フラグメントエッジ」とは、転送元の資源または転送先の資源がフラグメント等価クラスに属するエッジのことを指す。例えば、図16に示す例では、ノードJおよびノードKがフラグメント等価クラスに属しているので、この場合、エッジCJ、エッジCK、エッジJO、エッジKOは、この等価クラスに係わるフラグメントエッジである。なお、各エッジは、(1) 転送元および転送先の資源が共に「フラグメント等価」でない状態、(2) 転送元の資源のみが「フラグメント等価」である状態、(3) 転送先の資源のみが「フラグメント等価」である状態、(4) 転送元および転送先の資源が共に「フラグメント等価」である状態に分類される。なお、この分類は、エッジ毎に2ビットのフラグで表される。
【0084】
「等価エッジ」とは、転送元の資源または転送先の資源がフラグメント等価クラスに属するノードであるエッジの集合である。例えば、ノードJ、Kはフラグメント等価クラスに属するので、この場合、エッジCJ、エッジCK、エッジJO、エッジKOが、この等価クラスに係わる等価エッジである。なお、独立エッジは、等価エッジに属するエッジの集合から除去される。
【0085】
上述のようにして等価関係を検出した後、データ転送グラフから「資源競合」または「レジスタ漏れ」に関わりのない部分を除去する。具体的には、ノードAおよびノードFは「非フラグメント等価」である。したがって、ノードAが除去される。また、エッジVWが「独立エッジ」であり、ノードWおよびノードXは「非フラグメント等価」である。したがって、ノードW、Xが除去される。さらに、エッジPUおよびエッジUDがそれぞれ「独立エッジ」であり、ノードDおよびノードCは「非フラグメント等価」である。したがって、ノードP、U、Dが除去される。
【0086】
また、ノードH、Iは、ノードBから見て「フラグメント等価」である。従って、ノードBが除去される。同様に、ノードCも除去される。また、ノードS、Tは、ノードYから見て「フラグメント等価」である。従って、ノードYが除去される。さらに、エッジNSおよびエッジOTは共に独立エッジである。したがって、ノードS、Tが除去される。
【0087】
上述の処理の結果、図16に示すデータ転送グラフは、図18に示す状態に最適化される。上述の処理は、具体的には、データ資源リストおよびデータ転送エッジリスト等からエッジリストEfinal を生成する処理に相当する。エッジリストEfinal は、最適化処理の結果として得られるエッジのリストである。
【0088】
最適化処理が終わると、図2のフローチャートのステップS3の処理が実行される。この処理は、図19に示すように、2つのステップからなる。ステップS21では、最適化されたデータ転送グラフから隣接ノードリストを作成する。続いて、ステップS22において、プロパティおよびそれに対応する検証スクリプトを生成する。本実施形態では、「資源競合」または「レジスタ漏れ」が発生し得るすべての条件を抽出する。具体的には、隣接ノードリストを利用して各ノード毎の入力エッジ数および出力エッジ数をカウントし、それに基づいてプロパティを生成する。そして、抽出した「資源競合」または「レジスタ漏れ」が発生し得る条件が、検証ツール3が実行可能なスクリプトに変換される。
【0089】
図18に示すグラフからプロパティを生成する場合の処理を説明する。まず、最適化されたグラフから隣接ノードリストが作成される。隣接ノードリストは、データ転送グラフ上の各エッジ毎に、その転送元ノードおよび転送先ノードを検出することにより得られる。図20に隣接ノードリストの例を示す。なお、各エッジ毎の転送先ノードおよび転送元ノードに係わる情報は、最適化処理により得られるエッジリストEfinal に格納されている。
【0090】
続いて、隣接ノードリストを利用し、「資源競合」または「レジスタ漏れ」が発生する可能性があるノードを検出する。「資源競合」を検出する場合には、複数の入力エッジが存在するノードを検出する。図20に示す例では、ノードL、M、N、Oにおいてそれぞれ2本に入力エッジが存在し、ノードVにおいて4本のエッジが存在する。従って、これら5つのノードは、それぞれ「資源競合」が発生する可能性があるものとみなされる。
【0091】
一方、「レジスタ漏れ」を検出する場合には、1以上の入力エッジが存在し、且つ1以上の出力エッジが存在するノードを検出する。図20に示す例では、ノードL、Mにおいて、2本の入力エッジおよび1本の出力エッジが存在する。したがって、これらのノードは、「レジスタ漏れ」が発生する可能性があるものとみなされる。なお、クロックの歪みを考慮すると、「レジスタ漏れ」の可能性があるノード(レジスタ)は、「資源競合」が発生する可能性があるものとみなされる。
【0092】
図21は、「資源競合」のプロパティの例である。これらのプロパティは、図18に示すデータ転送グラフから生成されたものである。
「資源競合」のプロパティは、上述した5つのノードについてそれぞれ生成される。このとき、各ノードにおいて存在する入力エッジに付与されている条件が抽出され、それらの条件を組み合わせることによりプロパティが生成される。
【0093】
例えば、ノードLについてのプロパティを生成する場合、エッジELおよびエッジFLに付与されている条件がグラフから抽出される。すなわち、エッジELおよびエッジFLからそれぞれ「制御信号CTRL4 」および「制御信号CTRL3 」が抽出され、それらを組み合わせることにより下記のプロパティが得られる。
【0094】
AG(CTRL4.CTRL3)
検証ツール3は、このプロパティが入力されると、制御信号CTRL4 および制御信号CTRL3 が同時に発生するクロックサイクルが存在するか否か検証する。そして、それらが同時に発生するクロックサイクルが存在する場合は、検証ツール3は、ノードLにおいて「資源競合」が発生するものと判断する。即ち、レジスタCに対して同時書込アクセスが発生するものとみなす。
【0095】
なお、あるノードにおいて3本以上の入力エッジが存在する場合には、それらの中から任意の2本の入力エッジを抽出し、その2本の入力エッジに付与されている条件がグラフから抽出される。この処理は、すべての組合せについて行われる。例えば、ノードVは4本の入力エッジが存在するので、この場合、6通りの組合(エッジQVとエッジLV、QVとMV、QVとRV、LVとMV、LVとRV、MVとRV)が得られる。そして、各組合せごとにプロパティが生成される。
【0096】
図22は、「レジスタ漏れ」のプロパティの例である。これらのプロパティもまた、図18に示すデータ転送グラフから生成されたものである。なお、この実施例で検出される「レジスタ漏れ」は、「書込み、読出し、書込み」であるはずのシーケンスが「書込み、書込み、読出し」というシーケンスで実行されてしまう場合を想定する。
【0097】
ノードLに着目した場合、「レジスタ漏れ」が発生する可能性がある条件は、以下の4つである。すなわち、(1) ノードEからノードLへデータが転送された後に、ノードLからノードVへの転送が実行されることなく、再びノードEからノードLへデータが転送される場合、(2) ノードFからノードLへデータが転送された後に、ノードLからノードVへの転送が実行されることなく、再びノードFからノードLへデータが転送される場合、(3) ノードFからノードLへデータが転送された後に、ノードLからノードVへの転送が実行されることなく、ノードEからノードLへデータが転送される場合、(4) ノードEからノードLへデータが転送された後に、ノードLからノードVへの転送が実行されることなく、ノードFからノードLへデータが転送される場合である。なお、ノードMにおいても、基本的に同様にプロパティが生成される。例えば、(1) の場合のプロパティは、
EF(CTRL4/\EX(E(〜CTRL5 U CTRL4)))
と表される。
【0098】
検証ツール3は、このプロパティが入力されると、「制御信号CTRL4 が発生するクロックサイクルの後に制御信号CTRL5 が発生することなく制御信号CTRL4 が発生するクロックサイクル」を探す。そして、そのような状況が存在するのであれば、検証ツール3は、ノードLにおいて「レジスタ漏れ」が発生するものと判断する。
【0099】
図23は、クロックの歪みを考慮した場合におけるレジスタにおける「資源競合」のプロパティの例である。これらのプロパティもまた、図18に示すデータ転送グラフから生成されたものである。なお、この場合の「資源競合」は、あるクロックサイクルにおいて、書込アクセスおよび読出アクセスが発生する場合を想定する。
【0100】
ノードLに着目した場合、「資源競合」が発生する可能性がある条件は、以下の2つである。すなわち、(1) ノードEからノードLへデータ転送と、ノードLからノードVへのデータ転送が動イルクロックサイクル内に実行される場合、および(2) ノードFからノードLへデータ転送と、ノードLからノードVへのデータ転送が動イルクロックサイクル内に実行される場合である。なお、ノードMにおいても基本的に同様にプロパティが生成される。
【0101】
例えば、(1) の場合のプロパティは、
AG(CTRL4.CTRL5)
として表される。検証ツール3は、このプロパティが入力されると、制御信号CTRL4 および制御信号CTRL5 が同時に発生するクロックサイクルを探す。そして、そのようなクロックサイクルが存在するのであれば、検証ツール3は、ノードLにおいて「資源競合」が発生するものと判断する。
第2の実施例
図24〜図26は、プロパティ生成ツール1に入力されるハードウェア仕様2の一例である。この実施例でも、ハードウェア記述言語として、Verilog が使用されている。
【0102】
セクション1においては、入力される制御信号、入力データおよび出力データが定義されている。また、セクション1の記述によれば、このモジュールには5つのレジスタ(BASES, ENDS, MODE, REG-ADR, REGA-OUT)が設けられている。セクション2には、制御信号CNT-REG-ACC および制御信号WRITE が与えられたときのデータ転送が記述されている。これらのデータ転送は、5ビットの制御信号REG-ADR の値により制御される。また、セクション3には、各種制御信号が与えられたときのレジスタREG-ADR または出力REGA-OUTへのデータ転送が記述されている。
【0103】
図27は、図24〜図26に示したハードウェア仕様から生成されたデータ転送グラフである。ハードウェア仕様からデータ転送グラフを生成する方法は、第1の実施例の場合と同じなので、ここではその説明を省略する。
【0104】
図27に示すグラフにおいて、「G1」〜「G11」は、データ転送のトリガとしての条件である。これらの条件を図28に示す。例えば、ノードAからノードDへのデータ転送は、セクション2の記述によれば、制御信号CNT-REG-ACC および制御信号WRITE が与えられ、且つレジスタREG-ADR の第4ビットが"1" であり、且つレジスタREG-ADR の第3〜0ビットが"0001"であったクロックサイクルにおいて実行される。図28に示す「G1」は、この条件を記述している。
【0105】
なお、各条件に含まれる要素の集合を「サポートセット」と呼ぶ。たとえば、条件G1のサポートセットは、7つの要素(CNT-REG-ACC, WRITE, REG-ADR(4), REG-ADR(3), REG-ADR(2), REG-ADR(1), REG-ADR(0))を含んでいる。
【0106】
このデータ転送グラフを最適化する際には、「レジスタファイル」および「名称等価」の概念が利用される。「レジスタファイル」を検出する場合、まず、転送先がレジスタであるエッジまたは転送元がレジスタであるエッジを抽出する。そして、それらのエッジに付与されているサポートセットを比較し、それらが互いに同じであるエッジ同士をグループ化する。この場合、グループ化された複数のエッジにそれぞれ接続されるレジスタを「レジスタファイル」とみなす。
【0107】
図29を参照しながら具体例を示す。ここでは、転送先ノードがレジスタであるエッジADに注目する。エッジADには、条件G1が付与されている。この場合、レジスタファイルを検出する場合には、まず、レジスタを表すノードへのファンインエッジの中から、G1のサポートセットと同じサポートセットを有するエッジを抽出する。条件G1のサポートセットは、図28に示すように、条件G2〜G6とそれぞれ同じである。従って、レジスタを表すノードへのファンインエッジエッジのうち、条件G2〜G6が設定されているエッジが抽出される。これにより、条件G1〜G6が設定されているエッジがグループ化される。すなわち、エッジAD、AE、AFがグループ化される。したがって、これらのエッジの転送先である3つのノード(D、E、F)は、レジスタファイルに属するものとみなされる。
【0108】
なお、上記の例では、レジスタへのファンインエッジに基づいてレジスタファイルを検出したが、図29に示すように、レジスタからのファンアウトエッジを利用しても同様の関係が得られる。
【0109】
「名称等価」を検出する場合は、同一モジュール内のノードの中で同一の名称が付与されているノード(特に、レジスタおよび出力ポート)を抽出し、それらを等価な資源とみなす。図27に示す例では、レジスタに対応するノードJおよび出力ポートに対応するノードIの名称が共に"REGA-OUT なので、これらのノードが等価であるとみなされる。
【0110】
上述のようにして等価関係を検出した後、データ転送グラフから「資源競合」または「レジスタ漏れ」に関わりのない部分を除去する。すなわち、ノードD、E、Fは、「レジスタファイル」なので、これらのノードは1つのノード(ノードD’)に置きかえられる。また、ノードJおよびノードIは「名称等価」である。したがって、ノードIが除去される。上述の最適化処理の結果、図27に示すデータ転送グラフは、図30に示す状態に最適化される。
【0111】
データ転送グラフが最適化されると、それに伴って各エッジに付与されている条件(サポートセット)も変化する。具体的には、図27に示されていた条件G1〜G6が条件G1’に集約され、一方、条件G7およびG8が条件G2’に集約される。図31に条件G1’および条件G2’のサポートセットを示す。
【0112】
第2の実施例のハードウェアでは、ノードJにおいて「資源競合」が発生する可能性がある。この場合、「資源競合」のプロパティは、4つの条件(G2’、G9、G10、G8)の中の任意の2つが同時に発生するクロックサイクルを調べるためのスクリプトである。また、このハードウェアでは、ノードD’において「レジスタ漏れ」が発生する可能性がある。この場合、「レジスタ漏れ」のプロパティは、条件G1’および条件G2’が所定の順番で発生することを調べるためのスクリプトである。
【0113】
次に、上述したプロパティ生成ツール1の動作アルゴリズムをフローチャートを参照しながら説明する。なお、以下の説明では、下記の定義を用いる。
L モジュールの階層レベル
M モジュールのセット
Si 入力ポートのセット
So 出力ポートのセット
Sio 入出力ポートのセット
Sw バスワイヤのセット
Sr レジスタのセット
Sdt データ要素(代入式等の演算の結果を生成する資源)
Sdc データ定数(定数を生成する資源)
Edt データ転送エッジ
N ノードのセット
H データ資源の等価クラスのセット
図32〜図34は、データ転送グラフを生成する方法を説明するフローチャートである。この処理は、ハードウェア記述言語で記述されたハードウェア仕様2が入力されたときに実行される。
【0114】
ステップS31では、プロパティを作成するために利用するメモリ領域を初期化する。このとき、モジュール階層Lとして「0」が設定される。また、最小ビット幅パラメータとして「Wb 」が設定される。
【0115】
ステップS32では、モジュールリストMにルートモジュールを登録する。モジュールリストMには、ハードウェア仕様2に設けられているすべてのモジュールが登録されている。ステップS33は、モジュールリストMに登録されている各モジュールについてステップS34以降の処理を実行するための判断処理である。
【0116】
ステップS34では、モジュールリストMからモジュールMi を取り出す。ステップS35は、モジュールMi についてのインタフェース定義に記述されている各ポートについてステップS36〜S41を実行するための処理である。ステップS36では、インタフェース定義からポートPを抽出する。そして、そのポートPのビット幅が最小ビット幅パラメータWb 以上か否か調べる。ポートPのビット幅が最小ビット幅パラメータWb 以上であればステップS37へ進み、そうでない場合は、ステップS35へ戻って次のポートを抽出する。
【0117】
ステップS37では、ポートPが入力ポートであるか否かを調べる。ポートPが入力ポートであった場合には、ステップS40において、ポートPを入力ポートリストSi に登録する。また、ステップS38では、ポートPが出力ポートであるか否かを調べる。ポートPが出力ポートであった場合には、ステップS41において、ポートPを出力ポートリストSo に登録する。ポートPが入力ポートまたは出力ポートのいずれでもなかった場合には、ステップS39において、ポートPを入出力ポートリストSioに登録する。
【0118】
上記処理により、ハードウェア仕様2において定義されている各ポートが、入力ポートリストSi 、出力ポートリストSo 、または入出力ポートリストSioに登録される。
【0119】
ステップS51は、モジュールMi のモジュール宣言に記述されている各変数VについてステップS52〜S55を実行するための処理である。ステップS52では、変数Vのビット幅が最小ビット幅パラメータWb 以上であるか否かを調べる。変数Vのビット幅が最小ビット幅パラメータWb 以上であればステップS53へ進み、そうでない場合はステップS51に戻って次の変数を抽出する。
【0120】
ステップS53では、変数Vがレジスタ変数であるか否かを調べる。変数Vがレジスタ変数であれば、ステップS55においてその変数Vをレジスタ変数リストSr に登録し、そうでない場合は、ステップS54においてその変数Vをバスワイヤ変数リストSw に登録する。
【0121】
上記処理により、ハードウェア仕様2において定義されている各変数が、レジスタ変数リストSr またはバスワイヤ変数リストSw に登録される。
ステップS56は、モジュールMi の各モジュールインスタンシエイションについてステップS57およびS58を実行するためにの処理である。ステップS57では、モジュールインスタンシエイションm-j をモジュールリストMに登録する。ステップS58では、モジュールインスタンシエイションm-j のポートをモジュールMi 内の先に識別されている資源に関連づける。
【0122】
ステップS61は、モジュールMi 内の各同時処理CPについてステップS62〜S72を実行するための処理である。ステップS62では、同時処理CPがcontinuous assignment タイプであるか否かを調べる。ここで、同時処理CPがcontinuous assignment タイプであれば、ステップS71において、その処理CPのデータ転送処理タイプとして「C(Concurrent)」を設定する。そして、ステップS72において、データ転送エッジを生成する。
【0123】
ステップS63では、同時処理CPがguarded continuous assignment タイプであるか否かを調べる。ステップS64では、同時処理CPが、combinational always blockタイプであるか否かを調べる。そして、ステップS63またはS64の判断結果が「Yes」ならば、ステップS70において、その処理CPのデータ転送処理タイプとして「C」を設定する。一方、ステップS63およびS64の判断結果が共に「No」ならば、ステップS65において、その処理CPのデータ転送処理タイプとして「S(Sequential)」を設定する。
【0124】
ステップS66では、すべてのガード条件を認識する。ここで、各ガード条件は、それぞれ異なるデータ転送を制御する。ステップS67では、各ガード条件毎に、ガード表現およびガード信号を格納する。このとき、このガード条件により制御されるデータ転送の転送元および転送先を認識する。そして、ステップS68において、データ転送エッジを生成する。ステップS69は、各データ転送についてステップS66〜S68を実行するための処理である。
【0125】
上記処理により、ハードウェア仕様2において定義されている各データ転送に対応するデータ転送エッジが生成される。
図35は、ステップS68またはS72のデータ転送エッジを生成する処理の詳細フローチャートである。
【0126】
ステップS81では、データ転送の転送元が代入式であるか否かを調べる。転送元が代入式である場合は、ステップS82において、その代入式に対応する擬似資源Sdtを生成する。ステップS83では、データ転送の転送元が定数であるか否かを調べる。転送元が定数である場合は、ステップS84において、その定数に対応する擬似資源Sdcを生成する。
【0127】
データ転送の転送元が、代入式または定数のいずれでもない場合は、ステップS85において、転送元資源Sourceを認識する。ステップS86では、データ転送の転送元が、入力ポートリストSi 、入出力ポートリストSio、バスワイヤ変数リストSw またはレジスタ変数リストSr に属しているか否かを調べる。
【0128】
擬似資源Sdtまたは擬似資源Sdcが生成された場合、あるいはステップS86の判断結果が「Yes」であった場合には、ステップS87において、転送先資源Sinkを認識する。ステップS88では、データ転送の転送先が、出力ポートリストSo 、入出力ポートリストSio、バスワイヤ変数リストSw またはレジスタ変数リストSr に属しているか否かを調べる。
【0129】
ステップS88の判断結果が「Yes」であった場合には、ステップS89において、データ転送の転送元および転送先に基づいてエッジEを生成する。ステップS90では、データ転送エッジリストEdtに生成したエッジEを追加する。ステップS91では、エッジEをデータ転送の転送元及び転送先に関連づける。なお、この実施例では、データ転送の転送元または転送先がポート、レジスタ、バスワイヤ、または疑似資源のいずれでもなかった場合は、エッジEは生成されない。
【0130】
上記処理により、ハードウェア仕様2において定義されている各データ転送に対して、そのデータ転送の転送元および転送先が定義されたデータ転送エッジが生成される。
【0131】
図36および図37は、「非フラグメント等価」を検出する処理のフローチャートである。このフローチャートは、図4に示したフローチャートのステップS11の実施例である。なお、ここでは、入出力ポートについて説明するが、入力ポートおよび出力ポートについても同様の処理が実行される。
【0132】
ステップS101では、入出力ポートリストSioをスキャンする。ステップS102は、入出力ポートリストSioに属する各要素(入出力ポート)についてステップS103以降の処理を実行するための処理である。ステップS103では入出力ポートリストSioから要素Sio-kを抽出する。
【0133】
ステップS104では、抽出した要素Sio-kを待ち行列Qに加える。ステップS105では、待ち行列Qが空か否かを調べる。待ち行列Qが空のときはステップS102に戻り、待ち行列Qに1以上の要素が保持されている場合は、ステップS106において、待ち行列Qから要素qを抽出する。
【0134】
ステップS107では、要素qが「子供資源」を有するか否かを調べる。ここで、要素qの「子供資源」とは、例えば、要素qが設けられているモジュールの階層の下位の階層のモジュール内に設けられている資源であって、要素qに対応付けられているものをいう。対応関係は、ハードウェア仕様などに記述されている。
【0135】
要素qが「子供資源」を有していなければ、ステップS114において待ち行列Qから要素qを削除した後にステップS102に戻り、要素qが「子供資源」を有している場合にはステップS108へ進む。ステップS108では、要素Sio-kに対応する非フラグメント等価クラスHekを生成する。そして、ステップS109において、Eqvl フラグをリセットする。
【0136】
ステップS110は、要素qが有する各「子供資源」についてステップS121〜S126を実行するための処理である。ステップS121では、要素qから「子供資源qc」を抽出する。ステップS122では、要素qのビット幅と「子供資源qc」のビット幅が互いに同じであるか否かを調べる。これらのビット幅が互いに異なる場合は、ステップS110に戻って次の「子供資源」を抽出する。上記ビット幅が互いに同じ場合、ステップS123においてEqvl フラグに「1」を設定する。ステップS124では、「子供資源qc」を待ち行列Qの要素として追加する。ステップS125では、「子供資源qc」を非フラグメント等価クラスHekの要素として追加する。ステップS126では、非フラグメント等価クラスHekと「子供資源qc」とを関連づける。
【0137】
全ての「子供資源」についてステップS121〜S126の処理が実行されると、ステップS111において、Eqvl フラグが「1」か否かを調べる。Eqvl フラグが「1」であれば、ステップS112において要素qを非フラグメント等価クラスHekに追加し、さらに、ステップS113において非フラグメント等価クラスHekと要素qとを関連づける。なお、Eqvl フラグが「1」でなかった場合には、ステップS112およびS113の処理はスキップされる。
【0138】
このように、あるポートのビット幅とそのポートの「子供資源」のビット幅が互いに同じである場合、そのポートと「子供資源」は、「非フラグメント等価」とみなされる。
【0139】
図38〜図41は、「フラグメント等価」を検出する処理のフローチャートである。このフローチャートは、図4に示したフローチャートのステップS12の実施例である。なお、ここでは、入出力ポートについて説明するが、入力ポートおよび出力ポートについても同様の処理が実行される。
【0140】
ステップS131では、入出力ポートリストSioをスキャンする。ステップS132は、入出力ポートリストSioに属する各要素(入出力ポート)についてステップS133以降を実行するための処理である。ステップS133では、入出力ポートリストSioから要素Sio-lを抽出する。
【0141】
ステップS134では、要素Sio-lがいずれかの等価クラスHekに属しているか否かを調べる。要素Sio-lがいずれかの等価クラスHekに属している場合は、ステップS135に進み、そうでない場合には、ステップS141〜S146の処理を実行した後にステップS132に戻る。
【0142】
ステップS141では、要素Sio-lが「子供資源」を有するか否かを調べる。要素Sio-lが「子供資源」を有する場合は、ステップS142以降の処理を実行し、そうでない場合は、ステップS132に戻る。ステップS142では、要素Sio-lに対応するフラグメント等価クラスOIFHelを生成する。ステップS143では、要素Sio-lをルート(出発点)として、要素Sio-lのビット幅よりも小さいビット幅を持つ「子供資源」を認識する。ステップS144では、各「子供資源」のためのフラグメント等価フィールドに「フラグメント等価クラスOIFHel」を設定する。ステップS145では、各「子供資源」のための非フラグメント等価フィールドに「非フラグメント等価クラスHek」を設定する。ステップS146では、各「子供資源」をフラグメント等価クラスOIFHelの要素として追加する。
【0143】
要素Sio-lがいずれかの等価クラスHekに属している場合は、ステップS135において、フラグメントchild-found フラグをリセットする。ステップS136では、要素Sio-lをルートとして、要素Sio-lのビット幅よりも小さいビット幅を持った「子供資源」または要素Sio-lのビット幅よりも大きいビット幅を持った「子供資源」を探す。このとき、抽出された「フラグメント子供」の集合を"F-child" とする。一方、より大きなビット幅を持った「非フラグメント子供資源」の集合を"UG-child"とする。
【0144】
ステップS137では、集合F-child の要素が存在するか否かを調べる。集合F-child の要素が存在するのであれば、ステップS138においてフラグメントchild-found フラグをセットする。ステップS139では、要素Sio-lに対応するフラグメント等価クラスOIFHelを生成する。
【0145】
ステップS151では、集合F-child をスキャンする。ステップS152は、集合F-child に属する各要素についてステップS153〜S156を実行するための処理である。ステップS153では、集合F-child から要素Cd-i を抽出する。ステップS154では、要素Cd-i の「親資源P−Cd-i 」を抽出する。ステップS155では、要素Cd-i および親資源P−Cd-i のためのフラグメント等価フィールドに「フラグメント等価クラスOIFHel」を設定する。ステップS156では、要素Cd-i をフラグメント等価クラスOIFHelに加える。
【0146】
集合F-child の要素が存在しない場合は、ステップS161〜S172の処理が実行される。ステップS161〜S165の処理は、基本的に、ステップS137、およびステップS151〜S154の処理と同じである。ただし、ステップS161〜S165では、集合UG-childから要素Cd-i が抽出され、さらに、その「親資源Prnt-i 」が抽出される。
【0147】
ステップS166では、要素Cd-i に対応するフラグメント等価クラスOIFHelを生成する。ステップS167は「親資源Prnt-i 」の各要素についてステップS168〜S172を実行するための処理である。ステップS168では、「親資源Prnt-i 」に属する要素Pi-k を抽出する。ステップS169では、要素Pi-k が属している非フラグメント等価クラスHekを探す。ステップS170では、非フラグメント等価クラスHekの各要素をフラグメント等価クラスOIFHelに加える。ステップS171では、非フラグメント等価クラスHekの各要素のためのフラグメント等価フィールドに「フラグメント等価クラスOIFHel」を設定する。そして、ステップS172において、各要素のための非フラグメント等価フィールドから非フラグメント等価クラスHekを削除する。
【0148】
図42は、「名称等価」を検出する処理のフローチャートである。このフローチャートは、図4に示したフローチャートのステップS13の実施例である。
ステップS181では、レジスタリストSr をスキャンする。ステップS182は、レジスタリストSr の各要素についてステップS183〜S189の処理を実行するための処理である。ステップS183では、レジスタリストSr から要素(レジスタ)Sr-l を抽出する。
【0149】
ステップS184〜S186では、抽出した要素Sr-l の名称と、出力ポートリストSo の各要素の名称とを比較する。そして、出力ポートリストSo の中に要素Sr-l の名称と同じ名称を持つ要素So-j が存在している場合には、ステップS187において、その要素So-j が属する非フラグメント等価クラスHekを探す。ステップS188では、要素Sr-l のための非フラグメント等価クラスフィールドに「非フラグメント等価クラスHek」を設定する。そして、ステップS189において、要素Sr-l を非フラグメント等価クラスHekの要素として追加する。
【0150】
上記処理により、あるレジスタとそのレジスタと同じ名称が付与されている出力ポートとが、「名称等価」とみなされる。
図43は、「フラグメントエッジ」を検出する処理のフローチャートである。この処理では、各データ転送エッジが「フラグメントエッジ」または「非フラグメントエッジ」のいずれに属するのかを判断するために有用な情報を生成する。なお、このフローチャートは、図4に示したフローチャートのステップS14の実施例である。
【0151】
ステップS191では、データ転送エッジリストEdtをスキャンする。ステップS192は、データ転送エッジリストEdtの各要素についてステップS193〜S200を実行するための処理である。ステップS193では、データ転送エッジリストEdtから要素(エッジ)Ej を抽出する。このとき、エッジEj に対応するデータ転送の転送元および転送先を認識する。
【0152】
ステップS194では、エッジEj に対応するデータ転送の転送先が「フラグメント等価」であるか否かを調べる。また、その転送先が「フラグメント等価」であれば、ステップS195において、エッジEj に対応するデータ転送の転送元が「フラグメント等価」であるか否かを調べる。そして、その転送先および転送元が共に「フラグメント等価」であった場合には、ステップS196において両フラグメントフラグをセットし、転送先のみが「フラグメント等価」であった場合には、ステップS197において転送先フラグメントフラグをセットする。一方、転送先が「フラグメント等価」でなかった場合には、ステップS198において、エッジEj に対応するデータ転送の転送元が「フラグメント等価」であるか否かを調べる。そして、転送元のみが「フラグメント等価」であった場合には、ステップS199において、転送元フラグメントフラグをセットし、転送先および転送元がいずれも「フラグメント等価」でなかった場合には、ステップS200において非フラグメントフラグをセットする。
【0153】
上記処理により、各データ転送に対応するエッジが、両フラグメントエッジ、転送先フラグメントエッジ、転送元フラグメントエッジ、または非フラグメントエッジに分類される。
【0154】
図44〜図48は、「等価エッジ」を検出する処理のフローチャートである。このフローチャートは、図4に示したフローチャートのステップS15の実施例である。
【0155】
ステップS211では、データ転送エッジリストEdtをスキャンする、ステップS212は、データ転送エッジリストEdtの各要素についてステップS213以降の処理を実行するための処理である。ステップS213では、データ転送エッジリストEdtから要素(エッジ)Ej を抽出する。このとき、エッジEj に対応するデータ転送の転送元および転送先を認識する。
【0156】
ステップS214では、エッジEj が転送元フラグメントか否か調べる。エッジEj が転送元フラグメントであればステップS215へ進み、そうでない場合は、ステップS241へ進む。ステップS215では、転送元のフラグメント等価を「FHej」とする。ステップS216では、フラグメント等価FHejに属する要素をスキャンする。ステップS217は、フラグメント等価FHejに属する各要素についてステップS218〜S224を実行するための処理である。
【0157】
ステップS218では、フラグメント等価FHejから要素(ポート等)Ni を抽出する。ステップS219では、要素Ni を転送元ノードまたは転送先ノードとして含むすべてのエッジを抽出する。ステップS220では、抽出したエッジのリストをスキャンする。ステップS221は、ステップS219で抽出した各エッジについてステップS222〜S224を実行するための処理である。ステップS222では、上記抽出したエッジのリストから要素(エッジ)Ek を抽出する。このとき、エッジEk に対応するデータ転送の転送先ノードを「Head-k」とする。ステップS223では、この転送先ノードHead-kが、ステップS213で抽出した転送先と同じであるか否かを調べる。そして、それらが互いに同じ場合は、ステップS224において、エッジEj の等価エッジの集合Eqv-Tail-EjにエッジEk を追加する。
【0158】
フラグメント等価FHejに属するすべての要素についてステップS218〜S224の処理を実行すると、ステップS231において、集合Eqv-Tail-Ejに属するエッジのノードのビット幅ベクトルに基づいてインターバルグラフIGを作成する。
【0159】
ここで、図49〜図51を参照しながら、インターバルグラフについて説明する。ここでは、図49に示すデータ転送グラフが生成されているものとする。また、図49に示すノード間のデータ転送は、図50に示すように定義されているものとする。そして、各エッジ毎に、ガード条件に対応する制御信号、転送先ノードにおいて使用されるビット、および転送先ノードにおいてビットされるビットが定義されているものとする。この定義によれば、例えば、エッジRTは、制御信号G3 が与えられたときに、ノードRの第7〜0ビットがノードTの第7〜0ビットへ転送されることを表している。なお、各データ転送は、T1 〜T10を用いて表わされている。
【0160】
データ転送グラフからインターバルグラフを作成する場合、まず、各データ転送を点(ドット)で表す。そして、データ転送毎に、転送先ノードにおいて使用すべきビットがオーバラップするデータ転送を抽出し、それらを接続する。
【0161】
例えば、データ転送T1 に注目する。データ転送T1 によるデータは、ノードTの第7〜0ビットに書き込まれる。このとき、データ転送T2 によるデータはノードTの第3〜0ビットに書き込まれる。したがって、データ転送T1 およびデータ転送T2 により転送されるデータは、ノードTにおいてオーバラップすることになる。同様に、データ転送T3 、T8 、T9 及びT10によるデータも、ノードTにおいてデータ転送T1 によるデータとオーバラップする。この場合、データ転送T1 を表す点は、図51に示すように、データ転送T2 、T3 、T8 、T9 およびT10を表す点と接続される。
【0162】
この後、他のデータ転送についても同様の方法を実行することにより、図51に示すインターバルグラフが得られる。
フローチャートの説明に戻る。ステップS232では、インターバルグラフIGにおいて、部品(図51における「点」)同士の接続を調べる。ステップS233では、非単体部品の集合NSCCを抽出する。各集合NSCCには、インターバルグラフにおいて互いにメッシュ状に接続された点に対応する複数のデータ転送から構成される。例えば、図51において、点T1 、T2 、T3 、T10は、互いにメッシュ状に接続されており、これらの点にそれぞれ対応するデータ転送は1つの集合NSCCに属する。ステップS234では、単体部品の集合SCCを抽出する。集合SCCには、いずれの集合NSCCにも属していないデータ転送が属することになる。
【0163】
ステップS235では、各集合NSCCに属し、且つ集合Eqv-Tail-Ejに含まれるエッジから独立サブセットInd-Eqv-Tail-Ejを作成する。ステップS236では、集合Eqv-Tail-Ejから独立サブセットInd-Eqv-Tail-Ejを削除する。ステップS237では、集合NSCCに基づいて、集合Eqv-Tail-Ejを1以上のサブグループに分割する。そして、ステップS238において、各サブグループごとにエッジリストEfinal を得る。そして、ステップS239において、各サブグループの集合Eqv-Tail-EjをエッジリストEfinal に追加する。
【0164】
エッジEj が転送元フラグメントでなかった場合(S214:No)は、ステップS241において、エッジEj が転送先フラグメントまたは両フラグメントであるか否かを調べる。エッジEj が転送先フラグメントまたは両フラグメントであでればステップS242へ進み、そうでない場合は、ステップS249においてそのエッジEj を単体ブロックとしてエッジリストEfinal に加えた後にステップS212に戻る。
【0165】
ステップS242では、非フラグメントの親資源UF-Parent-j が見つかるまでエッジEj に対応するデータ転送の転送先の親資源フィールドをトラバースしていく。ステップS243では、親資源UF-Parent-j が属する非フラグメント等価クラスを「UHPej」とする。ステップS244では、非フラグメント等価クラスUHPejをスキャンする。ステップS245は、非フラグメント等価クラスUHPejに属する各要素についてステップS246〜S248を実行するための処理である。ステップS246では、非フラグメント等価クラスUHPejから要素(ノード)Ni を抽出する。ステップS247では、ノードNi を転送先ノードとして含むすべてのエッジを抽出する。ステップS248では、抽出された各エッジを等価エッジの集合Eqv-Head-Ejに追加する。
【0166】
ステップS251では、非フラグメント等価クラスUHPejから抽出されたノードNi がフラグメント等価か否かを調べる。ノードNi がフラグメント等価であればステップS252へ進み、そうでなければステップS245に戻る。ステップS252では、ノードNi のフラグメント等価クラスを「FHej」とする。ステップS253では、フラグメント等価クラスFHejをスキャンする。ステップS254は、フラグメント等価クラスFHejに属する各要素についてステップS255〜S257を実行するための処理である。ステップS255では、フラグメント等価クラスFHejからノードNk を抽出する。ステップS256では、転送先ノードとしてノードNk を含むすべてのエッジを検出する。そして、ステップS257において、抽出した各エッジを等価エッジの集合E-Head-Ejに追加する。
【0167】
各ノードについてステップS246〜S248を実行すると(ステップS245:Yes)、続いてステップS261〜S268を実行する。ステップS261〜S268は、基本的に、ステップS231〜S237、およびS239と同じである。ただし、ステップS261〜S268では、集合Eqv-Head-Ejに属するエッジに係わるインターバルグラフIGが作成され、そのグラフを利用してエッジリストEfinal が得られる。
【0168】
図52〜図55は、「レジスタファイル」を検出する処理のフローチャートである。このフローチャートは、図4に示したフローチャートのステップS16の実施例である。
【0169】
ステップS271では、データ転送エッジリストEdtをスキャンする。ステップS272は、データ転送エッジリストEdtに属する各要素についてステップS273〜S284を実行するための処理である。ステップS273では、データ転送エッジリストEdtから要素(エッジ)Ej を抽出する。また、エッジEj に対応するデータ転送の転送元Sourceおよび転送先Sinkを検出する。
【0170】
ステップS274では、エッジEj の転送元または転送先がレジスタであるか否かを調べる。転送元または転送先がレジスタであれば、ステップS275へ進み、そうでない場合はステップS272に戻る。ステップS275では、エッジEj のガード表現のサポートセットを構成する制御信号の集合SSS−Ej を作成する。ステップS276では、検出した転送先がレジスタであるか否かを調べる。転送先がレジスタであればステップS277へ進み、そうでない場合はステップS277〜280をスキップする。
【0171】
ステップS277では、制御信号の集合SSS−Ej を転送先に関連づける。ステップS278では、転送先がレジスタであるデータ転送のガード表現に含まれる制御信号の集合Sink-Support-Setを得る。ステップS279では、制御信号の集合SSS−Ej を制御信号の集合Sink-Support-Setに関連づける。ステップS280では、転送先を転送先レジスタの集合Sink-Registorsに追加する。
【0172】
ステップS281では、検出した転送元がレジスタであるか否かを調べる。転送元がレジスタであればステップS282へ進み、そうでない場合は、ステップS272に戻る。ステップS282では、制御信号の集合SSS−Ej を転送元に関連づける。ステップS283では、制御信号の集合SSS−Ej を制御信号の集合Source-Support-Setに関連づける。そして、ステップS284において、転送元を転送元レジスタの集合Source-Registorsに追加する。
【0173】
すべてのエッジについてステップS273〜S284の処理を実行すると、ステップS291において、制御信号の集合Source-Support-Setの結合体U-Source-Sets を作成する。また、ステップS292において、制御信号の集合Sink-Support-Setの結合体U-Sink-Sets を作成する。ステップS293では、結合体U-Source-Sets に属するユニークな要素から構成されるランダムトータルオーダTo-U-Source-Setsを作成する。また、ステップS294では、結合体U-Sink-Sets に属するユニークな要素から構成されるランダムトータルオーダTo-U-Sink-Setsを作成する。
【0174】
ステップS295では、Sink-Support-Setをスキャンする。ステップS296は、Sink-Support-Setに属するすべてのセットについてステップS297〜S300を実行するための処理である。ステップS297では、Sink-Support-SetからSSS−Ej を抽出する。ステップS298では、To-U-Sink-Setsに基づいてSSS−Ej のビットベクトル表現BV−SSS−Ej を作成する。ここで、SSS−Ej の要素に対応するエントリに「1」を設定し、他の要素に「0」を設定する。ステップS299では、BV−SSS−Ej をSSS−Ej に関連づける。そして、ステップS300において、BV−SSS−Ej をSSS−Ej に追加する。このとき、BV-Sink-Support-Setsは、Sink-Support-Setのビットベクトル表現の集合である。
【0175】
すべてのセットについてステップS297〜S300の処理を実行すると、ステップS311へ進む。ステップS311は、Source-Support-Setに属するすべての集合についてステップS312〜S315を実行するための処理である。ステップS312〜S315は、基本的に上述したステップS297〜S300と同じである。
【0176】
ステップS316では、BV-Sink-Support-Set のベクトルリストをスキャンする。ステップS317は、ベクトルリストに属する各ベクトルについてステップS318〜S324を実行するための処理である。ステップS318では、ベクトルリストからBV−SSS−Ej を抽出する。ステップS319では、BV-Sink-Support-Set のベクトルリストを再スキャンする。ステップS320は、ベクトルリストに属する各ベクトルについてステップS321〜S323を実行するための処理である。ステップS321では、ベクトルリストからBV−SSS−Ek を抽出する。ステップS322では、BV−SSS−Ej とBV−SSS−Ek が同じであるか否かを調べる。これらが互いに同じであれば、ステップS323において、BV−SSS−Ek に対応する転送先レジスタReg-sink-kを検出する。そして、すべてのベクトルについてステップS321〜S323の処理を実行すると、ステップS324において、転送先レジスタReg-sink-kを転送先レジスタファイルの集合Sink-Reg-Filesに追加する。
【0177】
ステップS331〜S339は、基本的にステップS316〜S324の処理と同じである。ただし、ステップS331〜S339では、BV-Sink-Support-Set のベクトルリストに属する各要素について処理が行われ、所定の転送元レジスタが転送元レジスタファイルの集合Source-Reg-Filesに追加される。
【0178】
ステップS341では、転送先レジスタファイルの集合Sink-Reg-Filesのリストをスキャンする。ステップS342は、そのリストに属する各集合についてステップS343〜S348を実行するための処理に相当する。ステップS343では、上記のリストから集合Sink-Reg-File-k を抽出する。ステップS345では、すべての集合が処理されたか否かを調べる。未処理のセットがあれば、ステップS346において、集合Source-Reg-File-l を抽出する。ステップS347では、集合Sink-Reg-File-k と集合Source-Reg-File-l とが同一であるか否かを調べる。そして、それらが互いに同じであれば、ステップS348において、集合Source-Reg-File-k を集合Reg-Files に追加する。上記処理により、レジスタファイルに属するレジスタが得られる。
【0179】
このように、図32〜図35に示すフローチャートに処理により生成されたデータ転送グラフは、上述のフローチャートの処理により最適化される。そして、その最適化の結果は、エッジリストEfinal である。
【0180】
図57は、最適化されたデータ転送グラフから隣接ノードリストを作成する処理のフローチャートである。なお、このフローチャートは、図19に示したフローチャートのステップS21の実施例である。
【0181】
ステップS351では、エッジリストEfinal をスキャンする。ステップS352は、エッジリストEfinal に属する各サブグループについてステップS353〜S361を実行するための処理に相当する。ステップS353では、エッジリストEfinal からサブグループPi を抽出する。
【0182】
ステップS354は、サブグループPi に属する各エッジについてステップS355〜S361の処理を実行するための処理に相当する。ステップS355では、サブグループPi からエッジEj を抽出する。このとき、エッジEj の転送先ノードおよび転送元ノードが属する非フラグメント等価クラスにそれぞれ対応する等価クラスHead-Hejおよび等価クラスTail-Hejを抽出する。ステップS356では、非フラグメント等価クラスHead-Hejが隣接ノードリストのノードセットNの要素であるか否かを調べる。そして、非フラグメント等価クラスHead-HejがノードセットNの要素でなかった場合には、ステップS357においてそれをノードセットNに追加する。同様に、ステップS358では、非フラグメント等価クラスTail-HejがノードセットNの要素であるか否か調べる。そして、非フラグメント等価クラスTail-HejがノードセットNの要素でなかった場合には、ステップS359においてそれをノードセットNに追加する。
【0183】
ステップS360では、隣接ノードリストのノードセットNにおける非フラグメント等価クラスHead-Hejの隣接リストに非フラグメント等価クラスTail-Hejを追加する。また、非フラグメント等価クラスHead-Hejの入力エッジ数をインクリメントする。一方、ステップS361では、ノードセットNにおける非フラグメント等価クラスTail-Hejの隣接リストに非フラグメント等価クラスHead-Hejを追加する。そして、非フラグメント等価クラスTail-Hejの入力エッジ数をインクリメントする。
【0184】
図58〜図60は、検証ツールに入力すべきプロパティスクリプトを生成する処理のフローチャートである。なお、このフローチャートは、図19に示したフローチャートのステップS22の実施例である。
【0185】
ステップS371では、隣接ノードリストのノードセットNをスキャンする。ステップS372は、ノードセットNに属する各ノードについてステップS373以降の処理を実行するための処理である。ステップS373では、ノードセットからノードNj を抽出する。
【0186】
ステップS374では、ノードNj のファンインエッジ数が1以上であるか否かを調べる。ファンインエッジ数が1以上であればステップS375へ進み、そうでない場合はステップS372に戻る。ステップS375では、転送先ノードがノードNj であるエッジ(ノードNj へのファンインエッジ)の集合Di-Arcs-into-Njを得る。ステップS376では、ノードNj のファンアウトエッジ数が1以上であるか否かを調べる。出力エッジ数が1以上であればステップS377へ進み、そうでない場合はステップS377をスキップする。
【0187】
ステップS377では、転送元ノードがノードNj であるエッジ(ノードNj からのファンアウトエッジ)の集合Di-Arcs-out-of-Njを得る。ステップS378では、ノードNj がレジスタであるか否かを調べる。ノードNj がレジスタであればステップS379へ進み、そうでない場合はステップS411へ進む。ステップS379では、集合Di-Arcs-into-Njに属するファンインエッジが存在するか否かを調べる。集合Di-Arcs-into-Njに属するファンインエッジが存在する場合はステップS380において、それらのファンインエッジ同士の資源競合プロパティを生成する。そうでない場合はステップS372に戻る。
【0188】
ステップS381では、集合Di-Arcs-out-of-Njに属するファンアウトエッジが存在するか否かを調べる。集合Di-Arcs-out-of-Njに属するファンアウトエッジが存在する場合は、ステップS380において、集合Di-Arcs-into-Njと集合Di-Arcs-out-of-Njとの積PS1を生成する。PS1を「Em 、En 」と表す。なお、「Em 」及び「En 」は、それぞれ集合Di-Arcs-into-Njおよび集合Di-Arcs-out-of-Njの要素である。一方、集合Di-Arcs-out-of-Njに属するファンアウトエッジが存在しない場合は、ステップS372に戻る。
【0189】
ステップS391では、PS1をスキャンする。ステップS392は、PS1の各要素についてステップS393〜S395の処理を実行するための処理に相当する。ステップS393では、PS1から要素PS-k(Ea 、Eb )を抽出する。ステップS394では、集合Di-Arcs-out-of-Njの要素Eb の処理タイプが順次転送であるか否かを調べる。そして、処理タイプが順次転送であれば、ステップS395において、クロック歪みによるエラーをチェックするための資源競合プロパティを生成する。
【0190】
ステップS396では、集合Di-Arcs-into-Njと集合Di-Arcs-into-Njとの積PS2を生成する。続いて、ステップS397では、エッジEj のガード表現を「Gi 」としたときに、集合Di-Arcs-out-of-Njに属する各ファンアウトエッジEi に対して論理式No-Read=-(OR(Gi)) を生成する。ステップS398では、PS2をスキャンする。ステップS399は、PS2に属する各要素について処理400およびS401を実行するための処理に相当する。
【0191】
ステップS400では、PS2からPS2-k=(Ec 、Ed )を抽出する。そして、ステップS401において、レジスタ漏れプロパティEF(Gl"EX(E(No-ReadUGm)))を生成する。
【0192】
ノードNj がレジスタでなかった場合(ステップS378:No)は、ステップS411において、そのノードNj が出力ポートであるか否かを調べる。ノードNj が出力ポートであれば、ステップS412において、集合Di-Arcs-into-Njに要素が存在するか否かを調べる。すなわち、その出力ポートへのファンインエッジが存在するか否かを調べる。ファンインエッジがある場合には、ステップS413において、それらエッジ同士のすべての組合せに対して資源競合プロパティを生成する。
【0193】
ステップS414では、ノードNj が入力ポートであるか否か調べる。ノードNj が入力ポートであれば、ステップS415において、集合Di-Arcs-into-Njおよび集合Di-Arcs-into-Njの結合体Union-Arcs-of-Njを生成する。そして、ステップS416において、Union-Arcs-of-NjとUnion-Arcs-of-Njとの積PS3を生成する。
【0194】
ステップS417では、PS3をスキャンする。ステップS418は、PS3に属する各要素についてステップS419〜S421の処理を実行するための処理に相当する。ステップS419では、PS3からPS3-k=(Ee 、Eg )を抽出する。ステップS420では、エッジEe とエッジEg が同じものであるか調べる。それらのエッジが同じであった場合は、ステップS421において、資源競合プロパティを生成する。
【0195】
上述したプロパティを生成する機能は、コンピュータを用いて上述のフローチャートに示した処理を記述したプログラムを実行することにより実現される。そのプログラムを実行するコンピュータ100のブロック図を図61に示す。
【0196】
CPU101は、上述のフローチャートに示した処理を記述したプログラムを記憶装置102からメモリ103にロードして実行する。記憶装置102は、たとえばハードディスクであり、上記プログラムを格納する。一方、メモリ103は、例えば半導体メモリであり、CPU101の作業領域として使用される。
【0197】
記録媒体ドライバ104は、CPU101の指示に従って可搬性記録媒体105にアクセスする。可搬性記録媒体105は、例えば、半導体デバイス(PCカード等)、磁気的作用により情報が入出力される媒体(フロッピーディスク、磁気テープなど)、光学的作用により情報が入出力される媒体(光ディスクなど)を含む。通信制御装置106は、CPU101の指示に従って網との間でデータを送受信する。
【0198】
図23は、本発明に係わるソフトウェアプログラムなどの提供方法を説明する図である。本発明に係わるプログラムは、例えば、以下の3つの方法の中の任意の方法により提供される。
【0199】
(a) コンピュータ100にインストールされて提供される。この場合、プログラム等は、たとえば、出荷前にプレインストールされる。
(b) 可搬性記録媒体に格納されて提供される。この場合、可搬性記録媒体105に格納されているプログラム等は、基本的に、記録媒体ドライバ104を介して記憶装置102にインストールされる。
【0200】
(c) 網上のサーバから提供される。この場合、基本的には、コンピュータ100がサーバに格納されているプログラム等をダウンロードすることによってそのプログラム等を取得する。網は、無線網を含む。
【0201】
なお、上述の実施例では、検証すべきプロパティとして、資源競合およびレジスタ漏れを採り上げているが、本発明が生成するプロパティはこれに限定されるものではない。
【0202】
また、データ資源としてレジスタ、ポート、バスを採り上げているが、本発明が対象とするの資源はこれに限定されるものではない。
【0203】
【発明の効果】
本発明によれば、ハードウェア記述言語で記述された仕様から、そのハードウェアにおいて資源競合またはレジスタ漏れが発生するか否かを検証するためのプロパティを自動的に生成できる。このため、ハードウェアの設計ミスを早い段階で修正でき、IC等の開発のための時間およびコストが節約される。また、デバッグ作業が減るので、設計者は、余った労力を他の作業に投入できる。
【図面の簡単な説明】
【図1】本発明の一実施形態のプロパティ作成ツールが仕様される環境を説明する図である。
【図2】プロパティ生成ツールの動作を説明するフローチャートである。
【図3】データ転送グラフの一例である。
【図4】最適化処理のフローチャートである。
【図5】ハードウェアの例である。
【図6】図5に示すハードウェアを記述する階層的に方法を説明する図である。
【図7】「資源の等価」を利用してデータ転送グラフを最適化する例を示す図である。
【図8】「分岐」を説明する図である。
【図9】レジスタファイルを説明する図である。
【図10】 Verilog で記述されたハードウェア仕様の一例(その1)である。
【図11】 Verilog で記述されたハードウェア仕様の一例(その2)である。
【図12】 Verilog で記述されたハードウェア仕様の一例(その3)である。
【図13】 Verilog で記述されたハードウェア仕様の一例(その4)である。
【図14】 Verilog で記述されたハードウェア仕様の一例(その5)である。
【図15】 Verilog で記述されたハードウェア仕様の一例(その6)である。
【図16】図10〜図15に示したハードウェア仕様から生成されたデータ転送グラフである。
【図17】疑似資源を説明する図である。
【図18】最適化されたデータ転送グラフの例である。
【図19】プロパティ作成処理のフローチャートである。
【図20】隣接ノードリストの例である。
【図21】「資源競合」のプロパティの例である。
【図22】「レジスタ漏れ」のプロパティの例である。
【図23】クロックの歪みを考慮した場合の「資源競合」のプロパティの例である。
【図24】 Verilog で記述されたハードウェア仕様の一例(その1)である。
【図25】 Verilog で記述されたハードウェア仕様の一例(その2)である。
【図26】 Verilog で記述されたハードウェア仕様の一例(その3)である。
【図27】図24〜図26に示したハードウェア仕様から生成されたデータ転送グラフである。
【図28】図27に示すグラフにおけるデータ転送の条件を示す図である。
【図29】レジスタファイルを検出する処理を説明する図である。
【図30】最適化されたデータ転送グラフの例である。
【図31】最適化されたグラフにおいて使用される条件を示す図である。
【図32】データ転送グラフを生成する方法のフローチャート(その1)である。
【図33】データ転送グラフを生成する方法のフローチャート(その2)である。
【図34】データ転送グラフを生成する方法のフローチャート(その3)である。
【図35】データ転送エッジを生成する処理の詳細フローチャートである。
【図36】「非フラグメント等価」を検出する処理のフローチャート(その1)である。
【図37】「非フラグメント等価」を検出する処理のフローチャート(その2)である。
【図38】「フラグメント等価」を検出する処理のフローチャート(その1)である。
【図39】「フラグメント等価」を検出する処理のフローチャート(その2)である。
【図40】「フラグメント等価」を検出する処理のフローチャート(その3)である。
【図41】「フラグメント等価」を検出する処理のフローチャート(その4)である。
【図42】「名称等価」を検出する処理のフローチャートである。
【図43】「分岐エッジ」を検出する処理のフローチャートである。
【図44】「等価エッジ」を検出する処理のフローチャート(その1)である。
【図45】「等価エッジ」を検出する処理のフローチャート(その2)である。
【図46】「等価エッジ」を検出する処理のフローチャート(その3)である。
【図47】「等価エッジ」を検出する処理のフローチャート(その4)である。
【図48】「等価エッジ」を検出する処理のフローチャート(その5)である。
【図49】データ転送グラフの例である。
【図50】データ転送の定義である。
【図51】インターバルグラフの例である。
【図52】「レジスタファイル」を検出する処理のフローチャート(その1)である。
【図53】「レジスタファイル」を検出する処理のフローチャート(その2)である。
【図54】「レジスタファイル」を検出する処理のフローチャート(その3)である。
【図55】「レジスタファイル」を検出する処理のフローチャート(その4)である。
【図56】「レジスタファイル」を検出する処理のフローチャート(その5)である。
【図57】隣接ノードリストを作成する処理のフローチャートである。
【図58】プロパティスクリプトを生成する処理のフローチャート(その1)である。
【図59】プロパティスクリプトを生成する処理のフローチャート(その2)である。
【図60】プロパティスクリプトを生成する処理のフローチャート(その3)である。
【図61】本発明の機能を記述したプログラムを実行するコンピュータのブロック図である。
【図62】本発明に係わるソフトウェアプログラムなどの提供方法を説明する図である。
【符号の説明】
1 プロパティ生成ツール
2 ハードウェア仕様
3 検証ツール[0001]
BACKGROUND OF THE INVENTION
The present invention relates to an apparatus and a method for generating properties to be verified for hardware including a plurality of resources described in a hardware description language and data transfer using the resources.
[0002]
[Prior art]
In recent years, the design of semiconductor chips has become very complex. In other words, very complicated hardware (logic device) has been mounted on a semiconductor chip. For this reason, the design of a semiconductor chip is often performed by a collaborative work by a plurality of designers.
[0003]
However, design information subdivided by a plurality of designers may be misinterpreted by each designer. In this case, an error (design error) in a certain part may cause the entire system to not operate correctly at the register transfer level. And if there is such an error, a great amount of money and time are wasted on debugging work.
[0004]
By the way, resources (for example, a register, a bus, an input port, and an output port) that can be provided on a semiconductor chip are limited. For this reason, each resource is usually shared by a plurality of tasks. The data generated by the shared resource is often temporarily stored in a data storage resource (for example, a register).
[0005]
Design errors that frequently occur in such a situation are “resource contention” and “register leakage”. Resource contention is an error in which one resource (such as a register) is simultaneously accessed by multiple resources. On the other hand, the register leakage is an error related to the access order when a certain register is accessed by a plurality of resources.
[0006]
A huge number of resources are formed on a semiconductor chip on which complex hardware is mounted. For this reason, it is virtually impossible to manually detect all the errors (resource conflict, register leakage, etc.) as described above. However, if there is only one error in the designed hardware, the entire system may not operate correctly. Therefore, it is very important to find and remove all resource conflicts and register leaks.
[0007]
[Problems to be solved by the invention]
Many designers recognize the importance of finding resource conflicts and register leaks early in the design process. However, until now, the task of finding resource conflicts and register omissions has only been performed by each designer for each subsystem that the designer is responsible for.
[0008]
In order to guarantee the operation of the entire system, it is not sufficient to perform verification for each subsystem. It is necessary to search for resource conflicts and register leaks throughout the designed hardware and remove them. However, conventionally, such work has not been done. For this reason, when errors are included in the hardware design, these errors are usually detected after the hardware design is mounted on the semiconductor chip.
[0009]
To the best of the knowledge of the applicant of this patent application, there are no tools to automatically detect, formulate and confirm resource conflicts and register leaks. And without such a tool, it would be virtually impossible to achieve a hardware design without errors.
[0010]
An object of the present invention is to provide an apparatus and a method capable of generating a property to be verified for hardware described in a hardware description language.
[0011]
[Means for Solving the Problems]
The property generation device of the present invention is based on the configuration for generating properties to be verified for a plurality of resources described in a hardware description language and hardware including data transfer using these resources. Have. The graph generation means generates a data transfer graph corresponding to the resource and data transfer described in the hardware description language. The optimization unit optimizes the data transfer graph generated by the graph generation unit. The property generation means generates a property to be verified for the hardware described in the hardware description language using the data transfer graph optimized by the optimization means.
[0012]
In the above configuration, the design information described in the hardware description language is graphed, and the property to be verified for the hardware is automatically generated using the graph. At this time, since the data transfer graph is optimized before the property is generated, the property can be easily generated. The generated property is verified by a verification tool.
[0013]
Resources are, for example, registers, buses, input ports, and output ports, and are represented by nodes in the data transfer graph. On the other hand, data transfer is represented using an edge (arrow) in which the transfer source and transfer destination are defined. Then, the optimization unit minimizes the graph based on the topology of the data transfer graph.
[0014]
Properties to be generated are, for example, resource contention and register leakage. The resource contention property is detected in a node to which a plurality of fan-in edges are connected in the data transfer graph. On the other hand, a register leak is detected in a node representing a register to which a fan-in edge and a fan-out edge are connected in the data transfer graph.
[0015]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, embodiments of the present invention will be described with reference to the drawings.
FIG. 1 is a diagram illustrating an environment in which a property generation tool according to an embodiment of the present invention is used. The
[0016]
[0017]
The hardware described in the
[0018]
The
[0019]
The
[0020]
FIG. 2 is a flowchart for explaining the operation of the
In step S1 (Phase 1), a data transfer graph (DTTDAG: Data Transfer Directed Acyclic Graph) is created based on the description of the
[0021]
In step S2 (Phase 2), the data transfer graph created in step S1 is optimized (simplified or minimized). Specifically, among resources and data transfers represented in the data transfer graph, resources or data transfers that are unlikely to cause “resource conflict” or “register leakage” are deleted.
[0022]
In step S3 (Phase 3), properties are extracted from the data transfer graph optimized in step S2, and an input script corresponding to them is generated. This input script is described in a format that can be processed by the
[0023]
Next, a data transfer graph and properties to be extracted will be described with reference to FIG. FIG. 3 is an example of a data transfer graph. The data transfer graph is created based on the input hardware specifications, but the description of the creation method is omitted here. The data transfer graph is basically not actually displayed on the computer screen. Therefore, the graph shown in FIG. 3 schematically shows the data transfer graph. The same applies to the following drawings. However, it is possible to actually display the data transfer graph on the computer screen, and it may be so.
[0024]
Each of the nodes A to F, H, and I corresponds to a data resource. For example, the node A is a register given the name “interface control register file” in the
[0025]
Each data transfer edge is provided with definitions and conditions for the data transfer. “C” indicates that the data transfer is “Concurrent Transfer”, and “S” indicates that the data transfer is “Sequential Transfer”. “G i” represents an operation condition (guard or enabling condition) for data transfer. For example, in the example shown in FIG. 3, data transfer from the node A to the node D is executed when the condition G1 is satisfied.
[0026]
In the data transfer graph, when there are multiple fan-in edges for a certain node (Multiple fan-in), there is a possibility that “resource competition” may occur. Note node D. Node D is a 32-bit register “reg data out”. An edge AD and an edge BD are input to the node D. Therefore, when the condition G1 is satisfied, the data stored in the node A (register “interface control register file”) is transferred to the node D (register “reg data out”), and the condition G2 is satisfied. Data is transferred from node B (input port “data out”) to node D (register “reg data out”). In this case, if conditions G1 and G2 are met simultaneously in any clock cycle, two write accesses to register "reg data out" will occur simultaneously. That is, “resource competition” occurs.
[0027]
The “resource contention” as described above may occur in a node having a plurality of fan-in edges in the data transfer graph. Therefore, the
[0028]
Further, when a fan-in edge and a fan-out edge exist for a certain node, “register leakage” may occur. For example, the node D has fan-in edges AD and BD and a fan-out edge DF. Here, it is assumed that the hardware performs an operation of writing the data of the node B to the node D after sending the data of the node A to the node F via the node D. Therefore, this operation is obtained when the conditions G1, G6, G2 are satisfied in that order. However, if the condition G1 and the condition G2 are satisfied before the condition G6 is satisfied, the data transfer from the node D to the node F is overwritten (data overwrite) by the data transferred from the node D to the node B. ) Will be executed after. That is, “register leakage” occurs.
[0029]
Note that “register leakage” can also occur when there is one fan-in edge for a node. For example, when transferring data from a first node to a third node via a second node, the first node before the data transfer from the second node to the third node is executed. When other data is transferred from to the second node, a “register leak” can occur as in the case described above.
[0030]
As described above, the “register leakage” as described above may occur when one or more fan-in edges and one or more fan-out edges exist in a certain node in the data transfer graph. Therefore, the
[0031]
Still other problems are inherent when there are fan-in and fan-out edges for the node corresponding to the register. For example, if a condition related to a fan-in edge of a node corresponding to a certain register and a condition related to the fan-out edge of the node are satisfied within the same clock cycle, write access and read access to the register are performed. Will be performed simultaneously. Such a situation is not necessarily an error in the register transfer level model. However, in this situation, in consideration of clock distortion at the gate level or the layout level, there is a possibility that erroneous data is read from the register. That is, if the clock is distorted, new data may be written to the register before the data is completely read from the register in a certain clock cycle. This problem appears as a register leakage property on an actual semiconductor chip. In the example illustrated in FIG. 3, for example, this type of “resource conflict” may occur between data transfer from the node I to the node C and data transfer from the node C to the node D.
[0032]
As described above, the
[0033]
Note that the above-described properties (“resource conflict” and “register leakage”) relate to the topology of the described hardware resource and data transfer when the data transfer graph is represented. That is, by analyzing the topology of the data transfer graph, it is possible to determine the possibility of “resource conflict” or “register leak”. Therefore, the
[0034]
By the way, when the hardware described in the
[0035]
FIG. 4 is a flowchart of a process for optimizing the data transfer graph. This process corresponds to step S2 in FIG.
In step S11, “Unfragmented Equivalence” is detected. In step S12, "Fragmented Equivalence" is detected. In step S13, “Named Equivalence” is detected. In step S14, “Fragmented Edges” are detected. In step S15, “Equivalent Edges (Edges in Equivalence)” is detected. In step S16, a “register file (Register File)” is detected. Through steps S11 to S16, an equivalence relationship between resources is detected. Then, using these equivalence relations, a portion where there is no possibility of “resource conflict” or “register leakage” is deleted from the data transfer graph. This optimizes (ie, minimizes) the data transfer graph.
[0036]
Here, some of the processes in steps S11 to S16 will be briefly described. In addition, each process of step S11-S16 is demonstrated in detail, referring the below-mentioned flowchart.
[0037]
FIG. 5 is an example of hardware. FIG. 6 is a diagram for explaining a method of hierarchically describing the hardware shown in FIG. Hardware resources and data transfer are often designed and described hierarchically, as shown in FIG. Here, “
[0038]
Thus, when data resources and data transfer are described for each hierarchy, different names are often given to the same resources or data. For example, in the example shown in FIG. 6, “
[0039]
By the way, in the hardware description language, data transfer between modules is usually described using an input port or an output port. For example, the correspondence between “
[0040]
In the hardware description language, when data stored in a register in a module is transferred to another module, the data is described to be transferred via an output port. In this case, the same name as that given to the register is usually given to the output port. In the present embodiment, this correspondence is referred to as “named association”.
[0041]
FIG. 7 is a diagram illustrating an example of optimizing a data transfer graph using “resource equivalence”. FIG. 7 (a) shows a data transfer graph generated from the resource and data transfer definitions described in the
[0042]
Here, the register data-in and the output port data-in have a “name association” relationship with each other. That is, these two resources can be regarded as equivalent (name equivalent). Therefore, data transfer from the input port SD-DQ-IN to the register data-in can be handled as data transfer from the input port SD-DQ-IN to the output port data-in. Further, the output port data-in and the bus wire data-buf-out have a “port linkage” relationship with each other. That is, these two resources can be regarded as equivalent. Therefore, data transfer from the input port SD-DQ-IN to the output port data-in can be handled as data transfer from the input port SD-DQ-IN to the bus wire data-buf-out. If these equivalent relationships are used, the data transfer graph shown in FIG. 7A is optimized (ie, simplified) to the form shown in FIG. 7B.
[0043]
Note that in order for the data transfer source resource and the transfer destination resource to be equivalent, the bit widths of the data handled by these resources must be the same. Therefore, the following definition is obtained.
Definition 1: When a set of adjacent resources has the same bit width specification,
These equivalent resources are “non-fragment equivalent”.
[0044]
FIG. 8 is a diagram for explaining “fragment”. In the example shown in FIG. 8, an output port OP having a 32-bit width is provided in the intermediate level module C, and output ports OP1 to OP4 having an 8-bit width are provided in the higher-level module B, respectively.
[0045]
Here, when there is data transfer between a data resource having a certain data width and a data resource having a data width smaller than the data width (or a data resource having a data width larger than the data width), “fragment” “Equivalence” can occur. In the example shown in FIG. 8, the output ports OP1 to OP4 of the module B are regarded as “fragment equivalent” in relation to the output port OP of the module C.
[0046]
The output port OP and the output ports OP1 to OP4 in the model shown in FIG. 8 are each represented by a node in the data transfer graph, and the data transfer from the output port OP to the output ports OP1 to OP4 is represented by an edge. Is done. Here, as described above, when the nodes corresponding to the output ports OP1 to OP4 are “fragment equivalent”, the four edges corresponding to the data transfer are fragment edges. In the present embodiment, a plurality of edges connected to a node that is “fragment equivalent” are referred to as “fragment edges”.
[0047]
The usefulness of “fragment equivalence” is that non-fragmented data transfers may be obtained by combining fragment data transfers. Further, it is possible to identify whether the data transfer is a fragment data transfer or a non-fragment data transfer based on whether the transfer source resource or the transfer destination resource of the data transfer is “fragment equivalent”.
[0048]
Another way to optimize fragment data transfer is “independent fragment data transfer”. The following definitions are provided for this “independent fragment data transfer”.
Definition 2: It is useful for any combination of edges in the fragment data transfer edge.
Those edges are “independent” if they do not cause source contention.
[0049]
In the optimization processing of this embodiment, “independent” edges are deleted from the data transfer graph. This avoids erroneous generation of resource contention properties or register leak properties.
[0050]
The register file is a technique for grouping a plurality of registers and simplifying the connection between the bus and each register in order to reduce the hardware scale. Thereby, for example, the configuration shown in FIG. 9A is simplified to the configuration shown in FIG. 9B. However, each register belonging to the register file is often described as an independent register in the hardware description language. In this case, the register file is represented as a plurality of registers in the data transfer graph. Therefore, in the optimization process of the data transfer graph, a register file is recognized, and a plurality of nodes corresponding to a plurality of registers belonging to the register file are replaced with one node.
[0051]
Next, specific examples will be described.
First embodiment
10 to 15 are examples of the
[0052]
FIG. 10 is a
[0053]
According to the description in
[0054]
According to the description in
[0055]
FIG. 11 and FIG. 12 are
[0056]
According to the description in
[0057]
13 to 15 are
[0058]
According to the description in
[0059]
According to the description in
[0060]
FIG. 16 is a data transfer graph generated from the hardware specifications shown in FIGS. This graph is generated by step S of the flowchart shown in FIG. Note that data resources defined in the hardware specification are represented as “nodes” in the data transfer graph. For each node, a data resource name, data resource type (register, bus wire, port, etc.), module name, and node name are set. Each data transfer is represented by an edge (indicated by “arrow” in FIG. 16) in the data transfer graph.
[0061]
This data transfer graph is schematically drawn for easy understanding of the invention, and actually includes a module list, a data resource list, a data transfer edge list, an equivalent class list, and the like.
[0062]
The module list stores the following information for each module defined in the hardware specification.
Module name
-Parent module (upper layer module)
-Child module (module lower in the module)
-Hierarchy level (hierarchy to which the module belongs)
・ Processing status (such as flags indicating intermediate status in optimization processing)
・ Various pointers
For example, as information to be stored in the module list for
[0063]
-Module name: MOD0
-Parent module: None
・ Children modules: MOD1, MOD2
-Hierarchy level: 0
The “processing state” is a flag or the like representing an intermediate state in the optimization process, and is not obtained from the hardware specification. Also, the “pointer” is not obtained from the hardware specification.
[0064]
The data resource list stores the following information for each data resource defined in the hardware specification. This list is generated for each resource type (register, input port, output port, bus, data transfer, constant,...).
[0065]
・ Resource name
・ Parent module
・ Hierarchy level
・ Bit width specifications
・ Parent resources
・ Children resources
・ Non-fragment equivalence class
Fragment equivalence class
・ Edge
·Processing state
For example, as information to be stored in the data resource list for the input port INPUT1 (node A), the following is obtained from the hardware specification.
[0066]
-Resource name: INPUT1
-Parent module: None
-Hierarchy level: 0
-Bit width specification: “15: 0”
・ Parent resource: None
・ Children resources: IPORT5
・ Edge: Edge AF
Note that the “non-fragment equivalence class” and the “fragment equivalence class” are not obtained from the hardware specification, but are obtained by analyzing the data transfer graph.
[0067]
The data transfer edge list stores the following information for each data transfer defined in the hardware specification.
・ Name of edge
・ Transfer destination resources
・ Transfer source resource
-Guard expression (data transfer conditions)
・ Data transfer type (simultaneous transfer or sequential transfer, etc.)
-Fragment status of transfer destination or transfer source
・ Processing status in optimization processing
For example, the information to be stored in the data transfer edge list for the edge corresponding to the data transfer from the input port IPORT1 (node J) to the register REG-A (node 0) is obtained from the hardware specification as follows.
[0068]
・ Name of edge: JO
Transfer destination resource: Register REG-A (Node 0)
Transfer source resource: Input port IPORT1 (Node J)
Guard expression: CTRL1
-Data transfer type: S (sequential transfer)
The “transfer destination or transfer source fragment status” is obtained by analyzing the data transfer graph.
[0069]
The equivalence class list stores the following information. Such information can be obtained by analyzing the data transfer graph.
-Equivalent class identifier
-Resources belonging to each equivalence class
·Processing state
When creating a data transfer graph, first, the description of each module in the hardware specification is analyzed in order from the upper layer, and each defined data resource, the correspondence between those resources, and those resources are analyzed. Recognize data transfer using. At this time, the behavioral description is scanned to see if there is a call from one module to another. When such a call is made, a search queue is provided for each called module, and the correspondence relationship of the interface definition with the previously recognized resource is recognized.
[0070]
Also, the bit width of each port (including input port, output port, input / output port), bus wire, and register is recognized, and the driver and register corresponding to the bus wire are recognized for each bus wire.
[0071]
Information extracted from the
[0072]
Further, the conditions set for each data transfer are analyzed. These conditions are, for example, “gurded continuous assignment statement”, “combinational alwaus block”, “sequential always block”. These pieces of information are registered as “guard expressions” in the data transfer edge list for each data transfer. As a result, an edge corresponding to each data transfer is generated. For data transfer for which no condition is set, “1” is assigned to the data transfer.
[0073]
When an assignment expression is described in the hardware specification (for example,
[0074]
Subsequently, the data transfer graph generated as described above is optimized. In the example shown in FIG. 16, the data transfer graph is optimized by detecting “non-fragment equivalent”, “fragment equivalent” and “independent edge” in the data transfer graph.
[0075]
When “non-fragment equivalence” is detected, a set of resources defined as being “equivalent” to each other in the interface definition of the hardware specification and having the same data width are recognized. In this case, the target resources are, for example, an input port, an output port, and an input / output port. When a resource belonging to the non-fragment equivalence class is detected, information indicating that is registered in a storage area corresponding to the resource in the data resource list.
[0076]
The equivalence relation is checked for each port. At this time, the process is continued for each port until the final resource is reached or a resource having a different bit width is reached.
[0077]
Here, “non-fragment equivalent” in the graph shown in FIG. 16 will be described. Node A (INPUT2 of module 0) and node F (IPORT5 of module 2) are both 16-bit input ports. These input ports are resources corresponding to each other as defined in
[0078]
In this case, for example, if resource A and resource F belong to non-fragment
[0079]
When “fragment equivalence” is detected, an equivalent one of the branched resources is recognized. In the example illustrated in FIG. 16, for example, data is transferred from the node B to the node H and the node I. At this time, the bit specifications of the node B are 16 bits wide, while the bit specifications of the node H and the node I are each 8 bits wide. That is, the bit width used at each transfer destination node is smaller than the bit width used at the transfer source node. Therefore, node H and node I are “fragment equivalent”. The same applies to the nodes J and K.
[0080]
On the other hand, data is transferred from the node S and the node T to the node Y. At this time, the bit width used at each transfer source node is smaller than the bit width used at the transfer destination node. Therefore, the node S and the node T are “fragment equivalent”.
[0081]
In this case, for example, if resource H and resource I belong to fragment
[0082]
The “independent edge” is as follows. For example, the node P transfers data only to the node U, and the node U receives data only from the node P. In this case, the edge corresponding to the data transfer from the node P to the node U is an independent edge. In addition, data is transferred from the nodes S and T to the node Y. At this time, 0 to 7 bits are transferred from the node S, and 8 to 15 bits are transferred to the node T. That is, the data bits do not overlap in these two data transfers. In this case, the edge corresponding to the data transfer from the node S to the node Y and the edge corresponding to the data transfer from the node T to the node Y are both independent edges. In the graph shown in FIG. 16, for example, data transfer from node N to node S, data transfer from node O to node T, data transfer from node U to node D, node V to node W, for example. The edges corresponding to the data transfer are also independent edges.
[0083]
In connection with “independent edges”, the concepts of “fragment edges” and “equivalent edges” are introduced.
“Fragment edge” refers to an edge in which a transfer source resource or a transfer destination resource belongs to a fragment equivalence class. For example, in the example shown in FIG. 16, since the node J and the node K belong to the fragment equivalence class, in this case, the edge CJ, the edge CK, the edge JO, and the edge KO are fragment edges related to this equivalence class. Each edge consists of (1) the state where the source and destination resources are not "fragment equivalent", (2) the state where only the source resource is "fragment equivalent", and (3) only the destination resource Is "fragment equivalent", and (4) the source and destination resources are both "fragment equivalent". This classification is represented by a 2-bit flag for each edge.
[0084]
An “equivalent edge” is a set of edges in which a transfer source resource or a transfer destination resource is a node belonging to a fragment equivalence class. For example, since the nodes J and K belong to the fragment equivalence class, in this case, the edge CJ, the edge CK, the edge JO, and the edge KO are equivalent edges related to this equivalence class. The independent edge is removed from the set of edges belonging to the equivalent edge.
[0085]
After detecting the equivalence relationship as described above, the portion not related to “resource conflict” or “register leakage” is removed from the data transfer graph. Specifically, node A and node F are “non-fragment equivalent”. Therefore, node A is removed. The edge VW is an “independent edge”, and the node W and the node X are “non-fragment equivalent”. Therefore, the nodes W and X are removed. Furthermore, the edge PU and the edge UD are “independent edges”, respectively, and the node D and the node C are “non-fragment equivalent”. Therefore, the nodes P, U, and D are removed.
[0086]
Nodes H and I are “fragment equivalent” as viewed from the node B. Therefore, node B is removed. Similarly, node C is also removed. Nodes S and T are “fragment equivalent” as viewed from node Y. Therefore, node Y is removed. Furthermore, the edge NS and the edge OT are both independent edges. Therefore, the nodes S and T are removed.
[0087]
As a result of the above processing, the data transfer graph shown in FIG. 16 is optimized to the state shown in FIG. The above-described processing specifically corresponds to processing for generating the edge list Efinal from the data resource list and the data transfer edge list. The edge list Efinal is a list of edges obtained as a result of the optimization process.
[0088]
When the optimization process is finished, the process of step S3 in the flowchart of FIG. 2 is executed. This process includes two steps as shown in FIG. In step S21, an adjacent node list is created from the optimized data transfer graph. In step S22, a property and a verification script corresponding to the property are generated. In the present embodiment, all conditions that may cause “resource conflict” or “register leak” are extracted. Specifically, the adjacent node list is used to count the number of input edges and the number of output edges for each node, and a property is generated based on the count. Then, the extracted conditions that may cause “resource conflict” or “register leakage” are converted into a script that can be executed by the
[0089]
Processing for generating properties from the graph shown in FIG. 18 will be described. First, an adjacent node list is created from the optimized graph. The adjacent node list is obtained by detecting the transfer source node and the transfer destination node for each edge on the data transfer graph. FIG. 20 shows an example of the adjacent node list. Information about the transfer destination node and transfer source node for each edge is stored in the edge list Efinal obtained by the optimization process.
[0090]
Subsequently, by using the adjacent node list, a node where “resource contention” or “register leakage” may occur is detected. When detecting “resource competition”, a node having a plurality of input edges is detected. In the example shown in FIG. 20, there are two input edges in each of the nodes L, M, N, and O, and there are four edges in the node V. Therefore, these five nodes are considered to have the possibility of occurrence of “resource competition”.
[0091]
On the other hand, when detecting “register leakage”, a node having one or more input edges and one or more output edges is detected. In the example illustrated in FIG. 20, there are two input edges and one output edge at the nodes L and M. Therefore, these nodes are considered to have the potential for “register leaks”. In consideration of clock distortion, a node (register) that has a possibility of “register leakage” is considered to have a possibility of “resource conflict”.
[0092]
FIG. 21 shows an example of the “resource conflict” property. These properties are generated from the data transfer graph shown in FIG.
The “resource conflict” property is generated for each of the five nodes described above. At this time, conditions attached to input edges existing in each node are extracted, and a property is generated by combining these conditions.
[0093]
For example, when generating a property for the node L, the conditions given to the edge EL and the edge FL are extracted from the graph. That is, “control signal CTRL4” and “control signal CTRL3” are extracted from edge EL and edge FL, respectively, and the following properties are obtained by combining them.
[0094]
AG (CTRL4.CTRL3)
When this property is input, the
[0095]
When there are three or more input edges in a certain node, any two input edges are extracted from them, and the conditions given to the two input edges are extracted from the graph. The This process is performed for all combinations. For example, node V has four input edges. In this case, there are six combinations (edge QV and edge LV, QV and MV, QV and RV, LV and MV, LV and RV, MV and RV). can get. A property is generated for each combination.
[0096]
FIG. 22 shows an example of the “register leak” property. These properties are also generated from the data transfer graph shown in FIG. The “register leakage” detected in this embodiment assumes a case where a sequence that should be “write, read, write” is executed in a sequence of “write, write, read”.
[0097]
When attention is paid to the node L, the following four conditions are likely to cause “register leakage”. That is, (1) When data is transferred from the node E to the node L without transferring the data from the node L to the node V after the data is transferred from the node E to the node L, (2) When data is transferred from the node F to the node L without transferring the data from the node L to the node V after the data is transferred from the node F to the node L, (3) When data is transferred from node E to node L without transfer from node L to node V after data is transferred to (4), data is transferred from node E to node L. This is a case where data is transferred from the node F to the node L without performing transfer from the node L to the node V later. Note that, in the node M, properties are generated basically in the same manner. For example, the property in case of (1) is
EF (CTRL4 / \ EX (E (~ CTRL5 U CTRL4)))
It is expressed.
[0098]
When this property is input, the
[0099]
FIG. 23 is an example of the property of “resource conflict” in a register in consideration of clock distortion. These properties are also generated from the data transfer graph shown in FIG. In this case, “resource contention” assumes a case where a write access and a read access occur in a certain clock cycle.
[0100]
When attention is paid to the node L, there are the following two conditions where “resource conflict” may occur. That is, (1) data transfer from node E to node L, and data transfer from node L to node V are performed within a dynamic clock cycle, and (2) data transfer from node F to node L. This is a case where the data transfer from the node L to the node V is executed within a moving clock cycle. Note that properties are generated in the same manner in the node M as well.
[0101]
For example, the property in case of (1) is
AG (CTRL4.CTRL5)
Represented as: When this property is input, the
Second embodiment
24 to 26 are examples of
[0102]
In
[0103]
FIG. 27 is a data transfer graph generated from the hardware specifications shown in FIGS. Since the method for generating the data transfer graph from the hardware specifications is the same as in the first embodiment, the description thereof is omitted here.
[0104]
In the graph shown in FIG. 27, “G1” to “G11” are conditions as triggers for data transfer. These conditions are shown in FIG. For example, according to the description in
[0105]
A set of elements included in each condition is referred to as a “support set”. For example, the support set for Condition G1 has 7 elements (CNT-REG-ACC, WRITE, REG-ADR (4), REG-ADR (3), REG-ADR (2), REG-ADR (1), REG -ADR (0)) is included.
[0106]
When optimizing this data transfer graph, the concepts of “register file” and “name equivalence” are used. When a “register file” is detected, first, an edge whose transfer destination is a register or an edge whose transfer source is a register is extracted. Then, the support sets assigned to the edges are compared, and the edges that are the same as each other are grouped. In this case, a register connected to each of a plurality of grouped edges is regarded as a “register file”.
[0107]
A specific example is shown with reference to FIG. Here, attention is paid to the edge AD whose transfer destination node is a register. The condition G1 is given to the edge AD. In this case, when detecting a register file, first, an edge having the same support set as the support set of G1 is extracted from fan-in edges to the node representing the register. The support set of the condition G1 is the same as the conditions G2 to G6, respectively, as shown in FIG. Therefore, among the fan-in edge edges to the node representing the register, the edges for which the conditions G2 to G6 are set are extracted. Thereby, the edges for which the conditions G1 to G6 are set are grouped. That is, the edges AD, AE, and AF are grouped. Accordingly, the three nodes (D, E, F) that are the transfer destinations of these edges are regarded as belonging to the register file.
[0108]
In the above example, the register file is detected based on the fan-in edge to the register. However, as shown in FIG. 29, the same relationship can be obtained by using the fan-out edge from the register.
[0109]
When detecting “name equivalence”, nodes (in particular, registers and output ports) to which the same name is assigned are extracted from the nodes in the same module, and these are regarded as equivalent resources. In the example shown in FIG. 27, since the names of the node J corresponding to the register and the node I corresponding to the output port are both “REGA-OUT”, these nodes are regarded as equivalent.
[0110]
After detecting the equivalence relationship as described above, the portion not related to “resource conflict” or “register leakage” is removed from the data transfer graph. That is, since the nodes D, E, and F are “register files”, these nodes are replaced with one node (node D ′). Node J and node I are “name equivalent”. Therefore, node I is removed. As a result of the above optimization process, the data transfer graph shown in FIG. 27 is optimized to the state shown in FIG.
[0111]
When the data transfer graph is optimized, the condition (support set) given to each edge changes accordingly. Specifically, the conditions G1 to G6 shown in FIG. 27 are aggregated into the condition G1 ', while the conditions G7 and G8 are aggregated into the condition G2'. FIG. 31 shows a support set for the condition G1 'and the condition G2'.
[0112]
In the hardware of the second embodiment, there is a possibility that “resource conflict” may occur in the node J. In this case, the “resource contention” property is a script for examining clock cycles in which any two of the four conditions (G2 ′, G9, G10, and G8) occur simultaneously. Further, with this hardware, there is a possibility that “register leakage” may occur in the node D ′. In this case, the property of “register leak” is a script for checking whether the conditions G1 ′ and G2 ′ occur in a predetermined order.
[0113]
Next, an operation algorithm of the above-described
L module hierarchy level
Set of M modules
Si input port set
So output port set
Sio I / O port set
Sw set of bus wires
Set Sr register
Sdt data element (resource that generates the result of an operation such as an assignment expression)
Sdc data constants (resources that generate constants)
Edt Data transfer edge
Set of N nodes
H Set of equivalence classes for data resources
32 to 34 are flowcharts for explaining a method of generating a data transfer graph. This process is executed when the
[0114]
In step S31, a memory area used for creating a property is initialized. At this time, “0” is set as the module hierarchy L. Further, “Wb” is set as the minimum bit width parameter.
[0115]
In step S32, the root module is registered in the module list M. In the module list M, all modules provided in the
[0116]
In step S34, the module Mi is extracted from the module list M. Step S35 is a process for executing steps S36 to S41 for each port described in the interface definition for the module Mi. In step S36, the port P is extracted from the interface definition. Then, it is checked whether or not the bit width of the port P is equal to or larger than the minimum bit width parameter Wb. If the bit width of the port P is equal to or larger than the minimum bit width parameter Wb, the process proceeds to step S37, and if not, the process returns to step S35 to extract the next port.
[0117]
In step S37, it is checked whether port P is an input port. If the port P is an input port, the port P is registered in the input port list Si in step S40. In step S38, it is checked whether port P is an output port. If the port P is an output port, the port P is registered in the output port list So in step S41. If the port P is neither an input port nor an output port, the port P is registered in the input / output port list Sio in step S39.
[0118]
Through the above processing, each port defined in the
[0119]
Step S51 is a process for executing steps S52 to S55 for each variable V described in the module declaration of the module Mi. In step S52, it is checked whether or not the bit width of the variable V is equal to or larger than the minimum bit width parameter Wb. If the bit width of the variable V is equal to or larger than the minimum bit width parameter Wb, the process proceeds to step S53. Otherwise, the process returns to step S51 to extract the next variable.
[0120]
In step S53, it is checked whether or not the variable V is a register variable. If the variable V is a register variable, the variable V is registered in the register variable list Sr in step S55, and if not, the variable V is registered in the bus wire variable list Sw in step S54.
[0121]
Through the above processing, each variable defined in the
Step S56 is a process for executing steps S57 and S58 for each module instantiation of the module Mi. In step S57, the module instantiation m-j is registered in the module list M. In step S58, the port of module instantiation m-j is associated with the previously identified resource in module Mi.
[0122]
Step S61 is a process for executing steps S62 to S72 for each simultaneous process CP in the module Mi. In step S62, it is checked whether or not the simultaneous processing CP is a continuous assignment type. If the simultaneous processing CP is a continuous assignment type, “C (Concurrent)” is set as the data transfer processing type of the processing CP in step S71. In step S72, a data transfer edge is generated.
[0123]
In step S63, it is checked whether or not the simultaneous processing CP is a guarded continuous assignment type. In step S64, it is checked whether or not the simultaneous processing CP is a combinational always block type. If the determination result in step S63 or S64 is “Yes”, “C” is set as the data transfer processing type of the processing CP in step S70. On the other hand, if the determination results in steps S63 and S64 are both “No”, in step S65, “S (Sequential)” is set as the data transfer processing type of the processing CP.
[0124]
In step S66, all guard conditions are recognized. Here, each guard condition controls different data transfer. In step S67, a guard expression and a guard signal are stored for each guard condition. At this time, the transfer source and transfer destination of the data transfer controlled by this guard condition are recognized. In step S68, a data transfer edge is generated. Step S69 is a process for executing steps S66 to S68 for each data transfer.
[0125]
With the above processing, a data transfer edge corresponding to each data transfer defined in the
FIG. 35 is a detailed flowchart of the process of generating a data transfer edge in step S68 or S72.
[0126]
In step S81, it is checked whether or not the data transfer source is an assignment expression. When the transfer source is an assignment expression, a pseudo resource Sdt corresponding to the assignment expression is generated in step S82. In step S83, it is checked whether or not the data transfer source is a constant. If the transfer source is a constant, in step S84, a pseudo resource Sdc corresponding to the constant is generated.
[0127]
If the transfer source of the data transfer is neither an assignment expression nor a constant, the transfer source resource Source is recognized in step S85. In step S86, it is checked whether or not the data transfer source belongs to the input port list Si, the input / output port list Sio, the bus wire variable list Sw or the register variable list Sr.
[0128]
When the pseudo resource Sdt or the pseudo resource Sdc is generated, or when the determination result in step S86 is “Yes”, the transfer destination resource Sink is recognized in step S87. In step S88, it is checked whether or not the data transfer destination belongs to the output port list So, the input / output port list Sio, the bus wire variable list Sw or the register variable list Sr.
[0129]
If the determination result in step S88 is “Yes”, an edge E is generated in step S89 based on the data transfer source and destination. In step S90, the generated edge E is added to the data transfer edge list Edt. In step S91, the edge E is associated with the data transfer source and destination. In this embodiment, the edge E is not generated when the transfer source or transfer destination of the data transfer is not a port, a register, a bus wire, or a pseudo resource.
[0130]
With the above processing, for each data transfer defined in the
[0131]
36 and 37 are flowcharts of processing for detecting “non-fragment equivalence”. This flowchart is an example of step S11 of the flowchart shown in FIG. Although the input / output port is described here, the same processing is executed for the input port and the output port.
[0132]
In step S101, the input / output port list Sio is scanned. Step S102 is a process for executing the processing after step S103 for each element (input / output port) belonging to the input / output port list Sio. In step S103, the element Sio-k is extracted from the input / output port list Sio.
[0133]
In step S104, the extracted element Sio-k is added to the queue Q. In step S105, it is checked whether or not queue Q is empty. If the queue Q is empty, the process returns to step S102. If one or more elements are held in the queue Q, the element q is extracted from the queue Q in step S106.
[0134]
In step S107, it is checked whether or not the element q has “child resource”. Here, the “child resource” of the element q is, for example, a resource provided in a module in a lower hierarchy of the module hierarchy in which the element q is provided, and is associated with the element q. Say things. The correspondence is described in the hardware specifications.
[0135]
If the element q does not have “child resource”, the process returns to step S102 after deleting the element q from the queue Q in step S114. If the element q has “child resource”, the process returns to step S108. move on. In step S108, a non-fragment equivalence class Hek corresponding to the element Sio-k is generated. In step S109, the Eqvl flag is reset.
[0136]
Step S110 is a process for executing steps S121 to S126 for each “child resource” of the element q. In step S121, “child resource qc” is extracted from element q. In step S122, it is checked whether or not the bit width of the element q and the bit width of the “child resource qc” are the same. If these bit widths are different from each other, the process returns to step S110 to extract the next "child resource". If the bit widths are the same, “1” is set to the Eqvl flag in step S123. In step S124, “child resource qc” is added as an element of queue Q. In step S125, “child resource qc” is added as an element of the non-fragment equivalence class Hek. In step S126, the non-fragment equivalence class Hek is associated with the “child resource qc”.
[0137]
When the processing of steps S121 to S126 is executed for all “child resources”, it is checked in step S111 whether the Eqvl flag is “1”. If the Eqvl flag is “1”, the element q is added to the non-fragment equivalence class Hek in step S112, and the non-fragment equivalence class Hek is associated with the element q in step S113. If the Eqvl flag is not “1”, the processes in steps S112 and S113 are skipped.
[0138]
Thus, when the bit width of a port and the bit width of the “child resource” of the port are the same, the port and the “child resource” are regarded as “non-fragment equivalent”.
[0139]
38 to 41 are flowcharts of processing for detecting “fragment equivalence”. This flowchart is an example of step S12 of the flowchart shown in FIG. Although the input / output port is described here, the same processing is executed for the input port and the output port.
[0140]
In step S131, the input / output port list Sio is scanned. Step S132 is processing for executing step S133 and subsequent steps for each element (input / output port) belonging to the input / output port list Sio. In step S133, the element Sio-l is extracted from the input / output port list Sio.
[0141]
In step S134, it is checked whether or not the element Sio-l belongs to any equivalence class Hek. If the element Sio-l belongs to any equivalence class Hek, the process proceeds to step S135. If not, the process returns to step S132 after executing the processes of steps S141 to S146.
[0142]
In step S141, it is checked whether or not the element Sio-l has “child resource”. If the element Sio-l has “child resource”, the process from step S142 is executed, and if not, the process returns to step S132. In step S142, a fragment equivalence class OIFHe corresponding to the element Sio-l is generated. In step S143, “child resource” having a bit width smaller than the bit width of element Sio-l is recognized using element Sio-l as a root (starting point). In step S144, “fragment equivalence class OIFHe” is set in the fragment equivalence field for each “child resource”. In step S145, “non-fragment equivalence class Hek” is set in the non-fragment equivalence field for each “child resource”. In step S146, each “child resource” is added as an element of the fragment equivalence class OIFHel.
[0143]
If the element Sio-l belongs to any equivalence class Hek, the fragment child-found flag is reset in step S135. In step S136, with the element Sio-l as the root, “child resource” having a bit width smaller than the bit width of the element Sio-l or “child resource having a bit width larger than the bit width of the element Sio-l”. Search for. At this time, the set of the extracted “fragment children” is defined as “F-child”. On the other hand, a set of “non-fragmented child resources” having a larger bit width is defined as “UG-child”.
[0144]
In step S137, it is checked whether or not an element of the set F-child exists. If there is an element of the set F-child, the fragment child-found flag is set in step S138. In step S139, a fragment equivalence class OIFHe corresponding to the element Sio-l is generated.
[0145]
In step S151, the set F-child is scanned. Step S152 is a process for executing steps S153 to S156 for each element belonging to the set F-child. In step S153, an element Cd-i is extracted from the set F-child. In step S154, the “parent resource P-Cd-i” of the element Cd-i is extracted. In step S155, “fragment equivalence class OIFHe” is set in the fragment equivalence field for element Cd-i and parent resource P-Cd-i. In step S156, the element Cd-i is added to the fragment equivalence class OIFHe.
[0146]
If there is no element of the set F-child, the processes of steps S161 to S172 are executed. The processing of steps S161 to S165 is basically the same as the processing of steps S137 and S151 to S154. However, in steps S161 to S165, the element Cd-i is extracted from the set UG-child, and the “parent resource Prnt-i” is further extracted.
[0147]
In step S166, a fragment equivalence class OIFHe corresponding to the element Cd-i is generated. Step S167 is a process for executing steps S168 to S172 for each element of “parent resource Prnt-i”. In step S168, the element Pi-k belonging to “parent resource Prnt-i” is extracted. In step S169, the non-fragment equivalence class Hek to which the element Pi-k belongs is searched. In step S170, each element of the non-fragment equivalence class Hek is added to the fragment equivalence class OIFHel. In step S171, “fragment equivalence class OIFHe” is set in the fragment equivalence field for each element of the non-fragment equivalence class Hek. In step S172, the non-fragment equivalence class Hek is deleted from the non-fragment equivalence field for each element.
[0148]
FIG. 42 is a flowchart of processing for detecting “name equivalence”. This flowchart is an example of step S13 of the flowchart shown in FIG.
In step S181, the register list Sr is scanned. Step S182 is a process for executing the processes of steps S183 to S189 for each element of the register list Sr. In step S183, the element (register) Sr-l is extracted from the register list Sr.
[0149]
In steps S184 to S186, the name of the extracted element Sr-l is compared with the name of each element in the output port list So. If there is an element So-j having the same name as the element Sr-l in the output port list So, the non-fragment equivalent class Hek to which the element So-j belongs is determined in step S187. look for. In step S188, “non-fragment equivalence class Hek” is set in the non-fragment equivalence class field for element Sr-l. In step S189, the element Sr-l is added as an element of the non-fragment equivalence class Hek.
[0150]
Through the above processing, a certain register and an output port assigned the same name as that register are regarded as “name equivalent”.
FIG. 43 is a flowchart of processing for detecting a “fragment edge”. In this process, information useful for determining whether each data transfer edge belongs to “fragment edge” or “non-fragment edge” is generated. This flowchart is an example of step S14 in the flowchart shown in FIG.
[0151]
In step S191, the data transfer edge list Edt is scanned. Step S192 is a process for executing steps S193 to S200 for each element of the data transfer edge list Edt. In step S193, an element (edge) Ej is extracted from the data transfer edge list Edt. At this time, the transfer source and transfer destination of the data transfer corresponding to the edge Ej are recognized.
[0152]
In step S194, it is checked whether or not the data transfer destination corresponding to the edge Ej is “fragment equivalent”. If the transfer destination is “fragment equivalent”, it is checked in step S195 whether the transfer source of the data transfer corresponding to the edge Ej is “fragment equivalent”. If both the transfer destination and the transfer source are “fragment equivalent”, both fragment flags are set in step S196, and if only the transfer destination is “fragment equivalent”, the transfer is performed in step S197. Set the destination fragment flag. On the other hand, if the transfer destination is not “fragment equivalent”, it is checked in step S198 whether or not the transfer source of the data transfer corresponding to the edge Ej is “fragment equivalent”. If only the transfer source is “fragment equivalent”, the transfer source fragment flag is set in step S199. If neither the transfer destination nor the transfer source is “fragment equivalent”, step S200 is performed. Set the non-fragment flag at.
[0153]
By the above processing, the edges corresponding to each data transfer are classified into both fragment edges, transfer destination fragment edges, transfer source fragment edges, or non-fragment edges.
[0154]
44 to 48 are flowcharts of processing for detecting an “equivalent edge”. This flowchart is an example of step S15 of the flowchart shown in FIG.
[0155]
In step S211, the data transfer edge list Edt is scanned. Step S212 is a process for executing the processes in and after step S213 for each element of the data transfer edge list Edt. In step S213, an element (edge) Ej is extracted from the data transfer edge list Edt. At this time, the transfer source and transfer destination of the data transfer corresponding to the edge Ej are recognized.
[0156]
In step S214, it is checked whether the edge Ej is a transfer source fragment. If the edge Ej is a transfer source fragment, the process proceeds to step S215. If not, the process proceeds to step S241. In step S215, the transfer source fragment equivalence is set to “FHej”. In step S216, the elements belonging to the fragment equivalent FHej are scanned. Step S217 is a process for executing steps S218 to S224 for each element belonging to the fragment equivalent FHej.
[0157]
In step S218, an element (port or the like) Ni is extracted from the fragment equivalent FHej. In step S219, all edges including the element Ni as the transfer source node or transfer destination node are extracted. In step S220, the extracted edge list is scanned. Step S221 is a process for executing steps S222 to S224 for each edge extracted in step S219. In step S222, an element (edge) Ek is extracted from the extracted edge list. At this time, the transfer destination node of the data transfer corresponding to the edge Ek is set to “Head-k”. In step S223, it is checked whether or not this transfer destination node Head-k is the same as the transfer destination extracted in step S213. If they are the same as each other, in step S224, the edge Ek is added to the set Eqv-Tail-Ej of equivalent edges of the edge Ej.
[0158]
When the processes of steps S218 to S224 are executed for all elements belonging to the fragment equivalent FHej, an interval graph IG is created based on the bit width vectors of the edge nodes belonging to the set Eqv-Tail-Ej in step S231.
[0159]
Here, the interval graph will be described with reference to FIGS. 49 to 51. Here, it is assumed that the data transfer graph shown in FIG. 49 is generated. Further, the data transfer between nodes shown in FIG. 49 is defined as shown in FIG. It is assumed that a control signal corresponding to the guard condition, a bit used at the transfer destination node, and a bit bit at the transfer destination node are defined for each edge. According to this definition, for example, the edge RT indicates that the 7th to 0th bits of the node R are transferred to the 7th to 0th bits of the node T when the control signal G3 is given. Each data transfer is represented using T1 to T10.
[0160]
When creating an interval graph from a data transfer graph, first, each data transfer is represented by a dot (dot). Then, for each data transfer, the data transfer in which the bits to be used in the transfer destination node overlap is extracted and connected.
[0161]
For example, pay attention to data transfer T1. Data by the data transfer T1 is written to the 7th to 0th bits of the node T. At this time, the data transferred by the data transfer T2 is written into the 3rd to 0th bits of the node T. Therefore, the data transferred by the data transfer T1 and the data transfer T2 overlap at the node T. Similarly, data from data transfers T3, T8, T9 and T10 also overlap at node T with data from data transfer T1. In this case, the point representing the data transfer T1 is connected to the points representing the data transfers T2, T3, T8, T9 and T10 as shown in FIG.
[0162]
Thereafter, an interval graph shown in FIG. 51 is obtained by executing the same method for other data transfers.
Return to the description of the flowchart. In step S232, the connection between the parts (“points” in FIG. 51) in the interval graph IG is examined. In step S233, a set NSCC of non-single parts is extracted. Each set NSCC includes a plurality of data transfers corresponding to points connected to each other in a mesh form in the interval graph. For example, in FIG. 51, points T1, T2, T3, and T10 are connected to each other in a mesh shape, and data transfers corresponding to these points belong to one set NSCC. In step S234, a set SCC of single parts is extracted. Data transfers that do not belong to any set NSCC belong to the set SCC.
[0163]
In step S235, an independent subset Ind-Eqv-Tail-Ej is created from the edges belonging to each set NSCC and included in the set Eqv-Tail-Ej. In step S236, the independent subset Ind-Eqv-Tail-Ej is deleted from the set Eqv-Tail-Ej. In step S237, the set Eqv-Tail-Ej is divided into one or more subgroups based on the set NSCC. In step S238, an edge list Efinal is obtained for each subgroup. In step S239, the set Eqv-Tail-Ej of each subgroup is added to the edge list Efinal.
[0164]
If the edge Ej is not a transfer source fragment (S214: No), it is checked in step S241 whether the edge Ej is a transfer destination fragment or both fragments. If the edge Ej is the transfer destination fragment or both fragments, the process proceeds to step S242; otherwise, the edge Ej is added to the edge list Efinal as a single block in step S249, and then the process returns to step S212.
[0165]
In step S242, the parent resource field of the data transfer destination corresponding to the edge Ej is traversed until a non-fragmented parent resource UF-Parent-j is found. In step S243, the non-fragment equivalence class to which the parent resource UF-Parent-j belongs is set to “UHPej”. In step S244, the non-fragment equivalence class UHPej is scanned. Step S245 is a process for executing steps S246 to S248 for each element belonging to the non-fragment equivalence class UHPej. In step S246, an element (node) Ni is extracted from the non-fragment equivalence class UHPej. In step S247, all edges including the node Ni as the transfer destination node are extracted. In step S248, each extracted edge is added to a set of equivalent edges Eqv-Head-Ej.
[0166]
In step S251, it is checked whether or not the node Ni extracted from the non-fragment equivalence class UHPej is fragment equivalent. If the node Ni is fragment equivalent, the process proceeds to step S252; otherwise, the process returns to step S245. In step S252, the fragment equivalence class of the node Ni is set to “FHej”. In step S253, the fragment equivalence class FHej is scanned. Step S254 is a process for executing steps S255 to S257 for each element belonging to the fragment equivalence class FHej. In step S255, the node Nk is extracted from the fragment equivalence class FHej. In step S256, all edges including the node Nk as the transfer destination node are detected. In step S257, the extracted edges are added to an equivalent edge set E-Head-Ej.
[0167]
When steps S246 to S248 are executed for each node (step S245: Yes), steps S261 to S268 are subsequently executed. Steps S261 to S268 are basically the same as steps S231 to S237 and S239. However, in steps S261 to S268, an interval graph IG related to edges belonging to the set Eqv-Head-Ej is created, and an edge list Efinal is obtained using the graph.
[0168]
52 to 55 are flowcharts of processing for detecting “register file”. This flowchart is an example of step S16 of the flowchart shown in FIG.
[0169]
In step S271, the data transfer edge list Edt is scanned. Step S272 is processing for executing steps S273 to S284 for each element belonging to the data transfer edge list Edt. In step S273, an element (edge) Ej is extracted from the data transfer edge list Edt. Further, the transfer source Source and transfer destination sink of the data transfer corresponding to the edge Ej are detected.
[0170]
In step S274, it is checked whether the transfer source or transfer destination of the edge Ej is a register. If the transfer source or transfer destination is a register, the process proceeds to step S275; otherwise, the process returns to step S272. In step S275, a set SSS-Ej of control signals constituting a support set of the guard expression of the edge Ej is created. In step S276, it is checked whether or not the detected transfer destination is a register. If the transfer destination is a register, the process proceeds to step S277, and if not, steps S277 to 280 are skipped.
[0171]
In step S277, the control signal set SSS-Ej is associated with the transfer destination. In step S278, a set of control signals Sink-Support-Set included in the guard expression of data transfer whose transfer destination is a register is obtained. In step S279, the control signal set SSS-Ej is associated with the control signal set Sink-Support-Set. In step S280, the transfer destination is added to a set of transfer destination registers Sink-Registors.
[0172]
In step S281, it is checked whether or not the detected transfer source is a register. If the transfer source is a register, the process proceeds to step S282. If not, the process returns to step S272. In step S282, the control signal set SSS-Ej is associated with the transfer source. In step S283, the control signal set SSS-Ej is associated with the control signal set Source-Support-Set. In step S284, the transfer source is added to a set of transfer source registers Source-Registors.
[0173]
When the processing of steps S273 to S284 is executed for all edges, a combined U-Source-Sets of control signal sets Source-Support-Set is created in step S291. In step S292, a combined U-Sink-Sets of control signal sets Sink-Support-Set is created. In step S293, random total order To-U-Source-Sets composed of unique elements belonging to the combined body U-Source-Sets is created. In step S294, random total order To-U-Sink-Sets composed of unique elements belonging to the combined body U-Sink-Sets is created.
[0174]
In step S295, Sink-Support-Set is scanned. Step S296 is a process for executing steps S297 to S300 for all sets belonging to the Sink-Support-Set. In step S297, SSS-Ej is extracted from Sink-Support-Set. In step S298, a bit vector representation BV-SSS-Ej of SSS-Ej is created based on To-U-Sink-Sets. Here, “1” is set in the entry corresponding to the element of SSS-Ej, and “0” is set in the other elements. In step S299, BV-SSS-Ej is associated with SSS-Ej. In step S300, BV-SSS-Ej is added to SSS-Ej. At this time, BV-Sink-Support-Sets is a set of bit vector expressions of Sink-Support-Set.
[0175]
When the processes of steps S297 to S300 are executed for all sets, the process proceeds to step S311. Step S311 is a process for executing steps S312 to S315 for all sets belonging to Source-Support-Set. Steps S312 to S315 are basically the same as steps S297 to S300 described above.
[0176]
In step S316, the BV-Sink-Support-Set vector list is scanned. Step S317 is a process for executing steps S318 to S324 for each vector belonging to the vector list. In step S318, BV-SSS-Ej is extracted from the vector list. In step S319, the BV-Sink-Support-Set vector list is rescanned. Step S320 is a process for executing steps S321 to S323 for each vector belonging to the vector list. In step S321, BV-SSS-Ek is extracted from the vector list. In step S322, it is checked whether BV-SSS-Ej and BV-SSS-Ek are the same. If they are the same, the transfer destination register Reg-sink-k corresponding to BV-SSS-Ek is detected in step S323. When the processes of steps S321 to S323 are executed for all vectors, the transfer destination register Reg-sink-k is added to the set of transfer destination register files Sink-Reg-Files in step S324.
[0177]
Steps S331 to S339 are basically the same as the processes of steps S316 to S324. However, in steps S331 to S339, each element belonging to the vector list of BV-Sink-Support-Set is processed, and a predetermined transfer source register is added to the set Source-Reg-Files of the transfer source register file.
[0178]
In step S341, a list of transfer destination register file sets Sink-Reg-Files is scanned. Step S342 corresponds to processing for executing steps S343 to S348 for each set belonging to the list. In step S343, the set Sink-Reg-File-k is extracted from the above list. In step S345, it is checked whether all sets have been processed. If there is an unprocessed set, the set Source-Reg-File-l is extracted in step S346. In step S347, it is checked whether or not the set Sink-Reg-File-k and the set Source-Reg-File-l are the same. If they are the same, in step S348, the set Source-Reg-File-k is added to the set Reg-Files. Through the above processing, registers belonging to the register file are obtained.
[0179]
As described above, the data transfer graph generated by the processing shown in the flowcharts of FIGS. 32 to 35 is optimized by the processing of the flowcharts described above. The result of the optimization is the edge list Efinal.
[0180]
FIG. 57 is a flowchart of a process for creating an adjacent node list from the optimized data transfer graph. This flowchart is an example of step S21 in the flowchart shown in FIG.
[0181]
In step S351, the edge list Efinal is scanned. Step S352 corresponds to a process for executing steps S353 to S361 for each subgroup belonging to the edge list Efinal. In step S353, the subgroup Pi is extracted from the edge list Efinal.
[0182]
Step S354 corresponds to the process for executing the processes of steps S355 to S361 for each edge belonging to the subgroup Pi. In step S355, an edge Ej is extracted from the subgroup Pi. At this time, the equivalent class Head-Hej and the equivalent class Tail-Hej corresponding to the non-fragment equivalent class to which the transfer destination node and the transfer source node of the edge Ej belong are extracted. In step S356, it is checked whether or not the non-fragment equivalence class Head-Hej is an element of the node set N in the adjacent node list. If the non-fragment equivalence class Head-Hej is not an element of the node set N, it is added to the node set N in step S357. Similarly, in step S358, it is checked whether or not the non-fragment equivalence class Tail-Hej is an element of the node set N. If the non-fragment equivalence class Tail-Hej is not an element of the node set N, it is added to the node set N in step S359.
[0183]
In step S360, the non-fragment equivalent class Tail-Hej is added to the adjacent list of the non-fragment equivalent class Head-Hej in the node set N of the adjacent node list. Also, the number of input edges of the non-fragment equivalence class Head-Hej is incremented. On the other hand, in step S361, the non-fragment equivalent class Head-Hej is added to the adjacent list of the non-fragment equivalent class Tail-Hej in the node set N. Then, the number of input edges of the non-fragment equivalence class Tail-Hej is incremented.
[0184]
58 to 60 are flowcharts of processing for generating a property script to be input to the verification tool. This flowchart is an example of step S22 of the flowchart shown in FIG.
[0185]
In step S371, the node set N in the adjacent node list is scanned. Step S372 is a process for executing the processes after step S373 for each node belonging to the node set N. In step S373, the node Nj is extracted from the node set.
[0186]
In step S374, it is checked whether the number of fan-in edges of the node Nj is 1 or more. If the number of fan-in edges is 1 or more, the process proceeds to step S375, and if not, the process returns to step S372. In step S375, a set Di-Arcs-into-Nj of edges (fan-in edge to the node Nj) whose transfer destination node is the node Nj is obtained. In step S376, it is checked whether the number of fan-out edges of the node Nj is 1 or more. If the number of output edges is 1 or more, the process proceeds to step S377, and if not, step S377 is skipped.
[0187]
In step S377, a set Di-Arcs-out-of-Nj of edges (fan-out edges from the node Nj) whose transfer source node is the node Nj is obtained. In step S378, it is checked whether or not the node Nj is a register. If the node Nj is a register, the process proceeds to step S379, and if not, the process proceeds to step S411. In step S379, it is checked whether there is a fan-in edge belonging to the set Di-Arcs-into-Nj. If there is a fan-in edge belonging to the set Di-Arcs-into-Nj, a resource contention property between these fan-in edges is generated in step S380. Otherwise, the process returns to step S372.
[0188]
In step S381, it is checked whether there is a fan-out edge belonging to the set Di-Arcs-out-of-Nj. If there is a fan-out edge belonging to the set Di-Arcs-out-of-Nj, a product PS1 of the set Di-Arcs-into-Nj and the set Di-Arcs-out-of-Nj is generated in step S380. To do. PS1 is expressed as “Em, En”. “Em” and “En” are elements of the set Di-Arcs-into-Nj and the set Di-Arcs-out-of-Nj, respectively. On the other hand, if there is no fan-out edge belonging to the set Di-Arcs-out-of-Nj, the process returns to step S372.
[0189]
In step S391, PS1 is scanned. Step S392 corresponds to the process for executing the processes of steps S393 to S395 for each element of PS1. In step S393, the element PS-k (Ea, Eb) is extracted from PS1. In step S394, it is checked whether or not the processing type of the element Eb of the set Di-Arcs-out-of-Nj is sequential transfer. If the processing type is sequential transfer, a resource contention property for checking an error due to clock distortion is generated in step S395.
[0190]
In step S396, a product PS2 of the set Di-Arcs-into-Nj and the set Di-Arcs-into-Nj is generated. Subsequently, in step S397, when the guard expression of the edge Ej is "Gi", the logical expression No-Read =-(OR for each fanout edge Ei belonging to the set Di-Arcs-out-of-Nj. (Gi)) is generated. In step S398, PS2 is scanned. Step S399 corresponds to the processing for executing the
[0191]
In step S400, PS2-k = (Ec, Ed) is extracted from PS2. In step S401, a register leakage property EF (Gl "EX (E (No-ReadUGm))) is generated.
[0192]
If the node Nj is not a register (step S378: No), it is checked in step S411 whether the node Nj is an output port. If the node Nj is an output port, it is checked in step S412 if an element exists in the set Di-Arcs-into-Nj. That is, it is checked whether there is a fan-in edge to the output port. If there is a fan-in edge, in step S413, a resource conflict property is generated for all combinations of the edges.
[0193]
In step S414, it is checked whether or not the node Nj is an input port. If the node Nj is an input port, a combination Union-Arcs-of-Nj of the set Di-Arcs-into-Nj and the set Di-Arcs-into-Nj is generated in step S415. In step S416, a product PS3 of Union-Arcs-of-Nj and Union-Arcs-of-Nj is generated.
[0194]
In step S417, PS3 is scanned. Step S418 corresponds to the process for executing the processes of steps S419 to S421 for each element belonging to PS3. In step S419, PS3-k = (Ee, Eg) is extracted from PS3. In step S420, it is checked whether the edge Ee and the edge Eg are the same. If the edges are the same, a resource conflict property is generated in step S421.
[0195]
The function for generating the above-described property is realized by executing a program describing the processing shown in the above-described flowchart using a computer. FIG. 61 shows a block diagram of the
[0196]
The
[0197]
The
[0198]
FIG. 23 is a diagram for explaining a method for providing a software program or the like according to the present invention. The program according to the present invention is provided by, for example, any one of the following three methods.
[0199]
(a) Provided by being installed in the
(b) Provided by being stored in a portable recording medium. In this case, the program stored in the
[0200]
(c) Provided by a server on the network. In this case, basically, the
[0201]
In the above-described embodiment, resource contention and register leakage are taken as properties to be verified. However, the properties generated by the present invention are not limited to this.
[0202]
Further, although registers, ports, and buses are taken as data resources, the resources targeted by the present invention are not limited to these.
[0203]
【The invention's effect】
According to the present invention, it is possible to automatically generate a property for verifying whether resource conflict or register leakage occurs in the hardware from the specification described in the hardware description language. Therefore, a hardware design error can be corrected at an early stage, and time and cost for developing an IC or the like can be saved. In addition, since the debugging work is reduced, the designer can invest extra work into other work.
[Brief description of the drawings]
FIG. 1 is a diagram illustrating an environment in which a property creation tool according to an embodiment of the present invention is specified.
FIG. 2 is a flowchart illustrating an operation of a property generation tool.
FIG. 3 is an example of a data transfer graph.
FIG. 4 is a flowchart of optimization processing.
FIG. 5 is an example of hardware.
6 is a diagram for explaining a hierarchical method for describing the hardware shown in FIG. 5; FIG.
FIG. 7 is a diagram illustrating an example of optimizing a data transfer graph using “resource equivalence”.
FIG. 8 is a diagram for explaining “branching”;
FIG. 9 is a diagram illustrating a register file.
FIG. 10 is an example (part 1) of hardware specifications described in Verilog.
FIG. 11 is an example (part 2) of hardware specifications described in Verilog.
FIG. 12 is an example (part 3) of hardware specifications described in Verilog.
FIG. 13 is an example (part 4) of hardware specifications described in Verilog.
FIG. 14 is an example (No. 5) of hardware specifications described in Verilog.
FIG. 15 is an example (No. 6) of hardware specifications described in Verilog.
FIG. 16 is a data transfer graph generated from the hardware specifications shown in FIGS.
FIG. 17 is a diagram illustrating a pseudo resource.
FIG. 18 is an example of an optimized data transfer graph.
FIG. 19 is a flowchart of property creation processing;
FIG. 20 is an example of an adjacent node list.
FIG. 21 is an example of a “resource conflict” property;
FIG. 22 is an example of a property of “register leak”.
FIG. 23 is an example of a “resource conflict” property in consideration of clock distortion.
FIG. 24 is an example (part 1) of the hardware specification described in Verilog.
FIG. 25 is an example (part 2) of the hardware specification described in Verilog.
FIG. 26 is an example (part 3) of the hardware specification described in Verilog.
FIG. 27 is a data transfer graph generated from the hardware specifications shown in FIGS.
FIG. 28 is a diagram showing data transfer conditions in the graph shown in FIG. 27;
FIG. 29 is a diagram illustrating processing for detecting a register file.
FIG. 30 is an example of an optimized data transfer graph.
FIG. 31 is a diagram illustrating conditions used in an optimized graph.
FIG. 32 is a flowchart (No. 1) of a method for generating a data transfer graph;
FIG. 33 is a second flowchart of the method for generating the data transfer graph.
FIG. 34 is a flowchart (No. 3) of the method for generating the data transfer graph;
FIG. 35 is a detailed flowchart of processing for generating a data transfer edge;
FIG. 36 is a first flowchart of a process for detecting “non-fragment equivalence”;
FIG. 37 is a flowchart (part 2) of a process of detecting “non-fragment equivalence”;
FIG. 38 is a first flowchart of a process for detecting “fragment equivalence”;
FIG. 39 is a flowchart (part 2) of a process for detecting “fragment equivalence”;
FIG. 40 is a flowchart (No. 3) of a process for detecting “fragment equivalence”;
FIG. 41 is a flowchart (part 4) of a process of detecting “fragment equivalence”;
FIG. 42 is a flowchart of processing for detecting “name equivalence”;
FIG. 43 is a flowchart of processing for detecting a “branch edge”;
FIG. 44 is a flowchart (No. 1) of a process of detecting “equivalent edge”;
FIG. 45 is a flowchart (No. 2) of a process for detecting “equivalent edge”;
FIG. 46 is a flowchart (No. 3) of a process of detecting “equivalent edge”;
FIG. 47 is a flowchart (No. 4) of a process of detecting “equivalent edge”;
FIG. 48 is a flowchart (No. 5) of a process of detecting “equivalent edge”;
FIG. 49 is an example of a data transfer graph.
FIG. 50 is a definition of data transfer.
FIG. 51 is an example of an interval graph.
FIG. 52 is a flowchart (No. 1) of a process for detecting a “register file”;
FIG. 53 is a flowchart (No. 2) of a process for detecting a “register file”;
FIG. 54 is a flowchart (No. 3) of the process of detecting “register file”;
FIG. 55 is a flowchart (No. 4) of the process of detecting “register file”;
FIG. 56 is a flowchart (No. 5) of the process of detecting “register file”;
FIG. 57 is a flowchart of processing for creating an adjacent node list.
FIG. 58 is a first flowchart of a process for generating a property script.
FIG. 59 is a flowchart (part 2) of the process for generating a property script;
FIG. 60 is a flowchart (part 3) of the process for generating a property script;
FIG. 61 is a block diagram of a computer that executes a program describing functions of the present invention.
FIG. 62 is a diagram illustrating a method for providing a software program or the like according to the present invention.
[Explanation of symbols]
1 Property generation tool
2 Hardware specifications
3 Verification tools
Claims (13)
上記ハードウェア記述言語で記述された資源およびデータ転送に対応するデータ転送グラフを生成するグラフ生成手段と、
そのグラフ生成手段により生成されたデータ転送グラフを最適化する最適化手段と、
その最適化手段により最適化されたデータ転送グラフを利用して、上記ハードウェア記述言語により記述されているハードウェアについて検証すべきプロパティを生成するプロパティ生成手段、を有し、
上記グラフ生成手段は、各資源にそれぞれ対応するノード、および各データ転送の転送元および転送先を表すエッジを用いて上記ハードウェアを表すデータ転送グラフを生成し、
上記最適化手段は、互いに隣接する2つのノードに対応する各資源のビット幅が互いに同じであり、且つ一方の資源が他方の資源の子供である場合、それらのノードのうちの一方を上記データ転送グラフから削除する
ことを特徴とするプロパティ生成装置。 A device for generating properties to be verified for hardware including a plurality of resources described in a hardware description language and data transfer using the resources,
Graph generation means for generating a data transfer graph corresponding to the resource and data transfer described in the hardware description language;
Optimization means for optimizing the data transfer graph generated by the graph generation means;
Using a data transfer graph optimized by the optimization means, property generation means for generating a property to be verified for the hardware described in the hardware description language,
The graph generation means generates a data transfer graph representing the hardware by using a node corresponding to each resource, and an edge representing a transfer source and a transfer destination of each data transfer,
When the bit width of each resource corresponding to two nodes adjacent to each other is the same, and one resource is a child of the other resource, the optimization means selects one of those nodes as the data Remove from transfer graph
A property generation device characterized by that .
上記ハードウェア記述言語で記述された資源およびデータ転送に対応するデータ転送グラフを生成するグラフ生成手段と、
そのグラフ生成手段により生成されたデータ転送グラフを最適化する最適化手段と、
その最適化手段により最適化されたデータ転送グラフを利用して、上記ハードウェア記述言語により記述されているハードウェアについて検証すべきプロパティを生成するプロパティ生成手段、を有し、
上記グラフ生成手段は、各資源にそれぞれ対応するノード、および各データ転送の転送元および転送先を表すエッジを用いて上記ハードウェアを表すデータ転送グラフを生成し、
上記最適化手段は、第1の資源から第2の資源および第3資源にデータが転送され、それら第2および第3の資源のビット幅が上記第1の資源のビット幅よりも小さい場合、上記第1の資源に対応するノードを上記データ転送グラフから削除する
ことを特徴とするプロパティ生成装置。 A device for generating properties to be verified for hardware including a plurality of resources described in a hardware description language and data transfer using the resources,
Graph generation means for generating a data transfer graph corresponding to the resource and data transfer described in the hardware description language;
Optimization means for optimizing the data transfer graph generated by the graph generation means;
Using a data transfer graph optimized by the optimization means, property generation means for generating a property to be verified for the hardware described in the hardware description language,
The graph generation means generates a data transfer graph representing the hardware by using a node corresponding to each resource, and an edge representing a transfer source and a transfer destination of each data transfer,
When the data is transferred from the first resource to the second resource and the third resource, and the bit width of the second resource and the third resource is smaller than the bit width of the first resource, Delete the node corresponding to the first resource from the data transfer graph.
A property generation device characterized by that .
上記ハードウェア記述言語で記述された資源およびデータ転送に対応するデータ転送グラフを生成するグラフ生成手段と、
そのグラフ生成手段により生成されたデータ転送グラフを最適化する最適化手段と、
その最適化手段により最適化されたデータ転送グラフを利用して、上記ハードウェア記述言語により記述されているハードウェアについて検証すべきプロパティを生成するプロパティ生成手段、を有し、
上記グラフ生成手段は、各資源にそれぞれ対応するノード、および各データ転送の転送元および転送先を表すエッジを用いて上記ハードウェアを表すデータ転送グラフを生成し、
上記最適化手段は、第1の資源および第2の資源から第3資源にデータが転送され、且つ上記第1および第2の資源のビット幅が上記第3の資源のビット幅よりも小さい場合、上記第3の資源に対応するノードを上記データ転送グラフから削除する
ことを特徴とするプロパティ生成装置。 A device for generating properties to be verified for hardware including a plurality of resources described in a hardware description language and data transfer using the resources,
Graph generation means for generating a data transfer graph corresponding to the resource and data transfer described in the hardware description language;
Optimization means for optimizing the data transfer graph generated by the graph generation means;
Using a data transfer graph optimized by the optimization means, property generation means for generating a property to be verified for the hardware described in the hardware description language,
The graph generation means generates a data transfer graph representing the hardware by using a node corresponding to each resource, and an edge representing a transfer source and a transfer destination of each data transfer,
In the case where the optimization means transfers data from the first resource and the second resource to the third resource, and the bit width of the first resource and the second resource is smaller than the bit width of the third resource And deleting the node corresponding to the third resource from the data transfer graph.
A property generation device characterized by that .
上記ハードウェア記述言語で記述された資源およびデータ転送に対応するデータ転送グラフを生成するグラフ生成手段と、
そのグラフ生成手段により生成されたデータ転送グラフを最適化する最適化手段と、
その最適化手段により最適化されたデータ転送グラフを利用して、上記ハードウェア記述言語により記述されているハードウェアについて検証すべきプロパティを生成するプロパティ生成手段、を有し、
上記グラフ生成手段は、各資源にそれぞれ対応するノード、および各データ転送の転送元および転送先を表すエッジを用いて上記ハードウェアを表すデータ転送グラフを生成し、
上記最適化手段は、レジスタからそのレジスタの名称と同じ名称が付与されている出力ポートにデータが転送される場合、上記出力ポートに対応するノードを上記データ転送グラフから削除する
ことを特徴とするプロパティ生成装置。 A device for generating properties to be verified for hardware including a plurality of resources described in a hardware description language and data transfer using the resources,
Graph generation means for generating a data transfer graph corresponding to the resource and data transfer described in the hardware description language;
Optimization means for optimizing the data transfer graph generated by the graph generation means;
Using a data transfer graph optimized by the optimization means, property generation means for generating a property to be verified for the hardware described in the hardware description language,
The graph generation means generates a data transfer graph representing the hardware by using a node corresponding to each resource, and an edge representing a transfer source and a transfer destination of each data transfer,
When the data is transferred from the register to the output port having the same name as the register, the optimization unit deletes the node corresponding to the output port from the data transfer graph.
A property generation device characterized by that .
上記ハードウェア記述言語で記述された資源およびデータ転送に対応するデータ転送グラフを生成するグラフ生成手段と、
そのグラフ生成手段により生成されたデータ転送グラフを最適化する最適化手段と、
その最適化手段により最適化されたデータ転送グラフを利用して、上記ハードウェア記述言語により記述されているハードウェアについて検証すべきプロパティを生成するプロパティ生成手段、を有し、
上記グラフ生成手段は、各資源にそれぞれ対応するノード、および各データ転送の転送元および転送先を表すエッジを用いて上記ハードウェアを表すデータ転送グラフを生成し、
上記最適化手段は、第1の資源から送出されるデータが第2の資源のみに転送され、且つ上記第2の資源が上記第1の資源から転送されてくるデータのみを受け取る場合、上記第1の資源から上記第2の資源へのデータ転送を表すエッジを上記データ転送グラフから削除する
ことを特徴とするプロパティ生成装置。 A device for generating properties to be verified for hardware including a plurality of resources described in a hardware description language and data transfer using the resources,
Graph generation means for generating a data transfer graph corresponding to the resource and data transfer described in the hardware description language;
Optimization means for optimizing the data transfer graph generated by the graph generation means;
Using a data transfer graph optimized by the optimization means, property generation means for generating a property to be verified for the hardware described in the hardware description language,
The graph generation means generates a data transfer graph representing the hardware by using a node corresponding to each resource, and an edge representing a transfer source and a transfer destination of each data transfer,
If the data sent from the first resource is transferred only to the second resource, and the second resource receives only the data transferred from the first resource, the optimization means receives the data sent from the first resource. An edge representing data transfer from one resource to the second resource is deleted from the data transfer graph.
A property generation device characterized by that .
上記ハードウェア記述言語で記述された資源およびデータ転送に対応するデータ転送グラフを生成するグラフ生成手段と、
そのグラフ生成手段により生成されたデータ転送グラフを最適化する最適化手段と、
その最適化手段により最適化されたデータ転送グラフを利用して、上記ハードウェア記述言語により記述されているハードウェアについて検証すべきプロパティを生成するプロパティ生成手段、を有し、
上記グラフ生成手段は、各資源にそれぞれ対応するノード、および各データ転送の転送元および転送先を表すエッジを用いて上記ハードウェアを表すデータ転送グラフを生成し、
上記最適化手段は、第1の資源から第2の資源へのデータ転送と第1の資源から第3資源へのデータ転送との間で転送すべきビットがオーバラップしない場合に、上記2つのデータ転送に対応するエッジを上記データ転送グラフから削除する
ことを特徴とするプロパティ生成装置。 A device for generating properties to be verified for hardware including a plurality of resources described in a hardware description language and data transfer using the resources,
Graph generation means for generating a data transfer graph corresponding to the resource and data transfer described in the hardware description language;
Optimization means for optimizing the data transfer graph generated by the graph generation means;
Using a data transfer graph optimized by the optimization means, property generation means for generating a property to be verified for the hardware described in the hardware description language,
The graph generation means generates a data transfer graph representing the hardware by using a node corresponding to each resource, and an edge representing a transfer source and a transfer destination of each data transfer,
If the bits to be transferred between the data transfer from the first resource to the second resource and the data transfer from the first resource to the third resource do not overlap, the optimization means Delete the edge corresponding to the data transfer from the above data transfer graph
A property generation device characterized by that .
上記ハードウェア記述言語で記述された資源およびデータ転送に対応するデータ転送グラフを生成するグラフ生成手段と、
そのグラフ生成手段により生成されたデータ転送グラフを最適化する最適化手段と、
その最適化手段により最適化されたデータ転送グラフを利用して、上記ハードウェア記述言語により記述されているハードウェアについて検証すべきプロパティを生成するプロパティ生成手段、を有し、
上記グラフ生成手段は、各資源にそれぞれ対応するノード、および各データ転送の転送元および転送先を表すエッジを用いて上記ハードウェアを表すデータ転送グラフを生成し、
上記最適化手段は、第1の資源から第2の資源へのデータ転送と第3の資源から第2資源へのデータ転送との間で転送すべきビットがオーバラップしない場合に、上記2つのデータ転送に対応するエッジを上記データ転送グラフから削除する
ことを特徴とするプロパティ生成装置。 An apparatus for generating a property to be verified for the hardware, including a data transfer using a hardware multiple described by description language resources and their resources,
Graph generation means for generating a data transfer graph corresponding to the resource and data transfer described in the hardware description language;
Optimization means for optimizing the data transfer graph generated by the graph generation means;
Using a data transfer graph optimized by the optimization means, property generation means for generating a property to be verified for the hardware described in the hardware description language,
The graph generation means generates a data transfer graph representing the hardware by using a node corresponding to each resource, and an edge representing a transfer source and a transfer destination of each data transfer,
If the bits to be transferred between the data transfer from the first resource to the second resource and the data transfer from the third resource to the second resource do not overlap, the optimization means Delete the edge corresponding to the data transfer from the above data transfer graph
A property generation device characterized by that .
上記ハードウェア記述言語で記述された資源およびデータ転送に対応するデータ転送グラフを生成するグラフ生成手段と、
そのグラフ生成手段により生成されたデータ転送グラフを最適化する最適化手段と、
その最適化手段により最適化されたデータ転送グラフを利用して、上記ハードウェア記述言語により記述されているハードウェアについて検証すべきプロパティを生成するプロパティ生成手段、を有し、
上記グラフ生成手段は、各資源にそれぞれ対応するノード、および各データ転送の転送元および転送先を表すエッジを用いて上記ハードウェアを表すデータ転送グラフを生成し、
上記最適化手段は、複数のレジスタが同一のレジスタファイルに属する場合、それら複数のレジスタに対応する複数のノードを1つのノードに変換する
ことを特徴とするプロパティ生成装置。 A device for generating properties to be verified for hardware including a plurality of resources described in a hardware description language and data transfer using the resources,
Graph generation means for generating a data transfer graph corresponding to the resource and data transfer described in the hardware description language;
Optimization means for optimizing the data transfer graph generated by the graph generation means;
Using a data transfer graph optimized by the optimization means, property generation means for generating a property to be verified for the hardware described in the hardware description language,
The graph generation means generates a data transfer graph representing the hardware by using a node corresponding to each resource, and an edge representing a transfer source and a transfer destination of each data transfer,
When the plurality of registers belong to the same register file, the optimization means converts a plurality of nodes corresponding to the plurality of registers into one node.
A property generation device characterized by that .
上記プロパティ生成手段は、資源競合およびレジスタ漏れのうちの少なくとも1つに係わるプロパティを生成する
ことを特徴とするプロパティ生成装置。The property generation device according to claim 1,
The property generation means generates a property related to at least one of resource contention and register leakage.
A property generation device characterized by that .
上記プロパティ生成手段は、あるノードに複数のファンインエッジが接続されている場合、それら複数のファンインエッジに対応するデータ転送に対してそれぞれ与えられている条件に基づいて資源競合プロパティを生成する
ことを特徴とするプロパティ生成装置。The property generation device according to claim 1,
When a plurality of fan-in edges are connected to a node, the property generation unit generates a resource contention property based on conditions given to data transfer corresponding to the plurality of fan-in edges.
A property generation device characterized by that .
上記ハードウェア記述言語で記述された資源およびデータ転送に対応するデータ転送グラフを生成するグラフ生成手段と、
そのグラフ生成手段により生成されたデータ転送グラフを最適化する最適化手段と、
その最適化手段により最適化されたデータ転送グラフを利用して、上記ハードウェア記述言語により記述されているハードウェアについて検証すべきプロパティを生成するプロパティ生成手段、を有し、
上記プロパティ生成手段は、あるノードにファンインエッジおよびファンアウトエッジが接続されている場合、それらのエッジに対応するデータ転送に対してそれぞれ与えられている条件に基づいてレジスタ漏れプロパティを生成する
ことを特徴とするプロパティ生成装置。 A device for generating properties to be verified for hardware including a plurality of resources described in a hardware description language and data transfer using the resources,
Graph generation means for generating a data transfer graph corresponding to the resource and data transfer described in the hardware description language;
Optimization means for optimizing the data transfer graph generated by the graph generation means;
Using a data transfer graph optimized by the optimization means, property generation means for generating a property to be verified for the hardware described in the hardware description language,
When the fan-in edge and the fan-out edge are connected to a certain node, the property generation unit generates a register leakage property based on conditions given to data transfer corresponding to the edges.
A property generation device characterized by that .
コンピュータにより実現されるグラフ生成手段が、上記ハードウェア記述言語で記述された資源およびデータ転送に対応するデータ転送グラフを生成し、
上記コンピュータにより実現される最適化手段が、そのデータ転送グラフを最適化し、
上記コンピュータにより実現されるプロパティ生成手段が、その最適化されたデータ転送グラフを利用して、上記ハードウェア記述言語により記述されているハードウェアについて検証すべきプロパティを生成し、
上記グラフ生成手段が、各資源にそれぞれ対応するノード、および各データ転送の転送元および転送先を表すエッジを用いて上記ハードウェアを表すデータ転送グラフを生成し、
上記最適化手段が、互いに隣接する2つのノードに対応する各資源のビット幅が互いに同じであり、且つ一方の資源が他方の資源の子供である場合、それらのノードのうちの一方を上記データ転送グラフから削除する
ことを特徴とするプロパティ生成方法。A method for generating a property to be verified for hardware including a plurality of resources described in a hardware description language and data transfer using the resources,
Graph generation means realized by a computer generates a data transfer graph corresponding to the resource and data transfer described in the hardware description language,
The optimization means realized by the computer optimizes the data transfer graph,
The property generation means realized by the computer uses the optimized data transfer graph to generate a property to be verified for the hardware described in the hardware description language,
The graph generation means generates a data transfer graph representing the hardware using a node corresponding to each resource, and an edge representing a transfer source and a transfer destination of each data transfer,
When the optimization means has the same bit width of each resource corresponding to two nodes adjacent to each other and one resource is a child of the other resource, one of those nodes is treated as the data Remove from transfer graph
A property generation method characterized by that .
上記プログラムは、コンピュータを、
上記ハードウェア記述言語で記述された資源およびデータ転送に対応するデータ転送グラフを生成する手段、
そのデータ転送グラフを最適化する手段、
その最適化されたデータ転送グラフを利用して、上記ハードウェア記述言語により記述されているハードウェアについて検証すべきプロパティを生成する手段、として機能させるものであり、
上記グラフ生成手段は、各資源にそれぞれ対応するノード、および各データ転送の転送元および転送先を表すエッジを用いて上記ハードウェアを表すデータ転送グラフを生成し、
上記最適化手段は、互いに隣接する2つのノードに対応する各資源のビット幅が互いに同じであり、且つ一方の資源が他方の資源の子供である場合、それらのノードのうちの一方を上記データ転送グラフから削除する
ことを特徴とするコンピュータ読み取り可能な記録媒体。A recording medium storing a program for generating a plurality of resources described in a hardware description language and a property to be verified for hardware including data transfer using the resources,
The program, a computer,
Means to generate a data transfer graph corresponding to the described resources and data transfer the hardware description language,
Means to optimize the data transfer graph,
The optimized data transfer graph is used to function as a means for generating a property to be verified for hardware described in the hardware description language ,
The graph generation means generates a data transfer graph representing the hardware by using a node corresponding to each resource, and an edge representing a transfer source and a transfer destination of each data transfer,
When the bit width of each resource corresponding to two nodes adjacent to each other is the same, and one resource is a child of the other resource, the optimization means selects one of those nodes as the data Remove from transfer graph
A computer-readable recording medium.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP32134699A JP3943299B2 (en) | 1999-11-11 | 1999-11-11 | Apparatus and method for generating properties to be verified for hardware |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP32134699A JP3943299B2 (en) | 1999-11-11 | 1999-11-11 | Apparatus and method for generating properties to be verified for hardware |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2001142918A JP2001142918A (en) | 2001-05-25 |
| JP3943299B2 true JP3943299B2 (en) | 2007-07-11 |
Family
ID=18131567
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP32134699A Expired - Fee Related JP3943299B2 (en) | 1999-11-11 | 1999-11-11 | Apparatus and method for generating properties to be verified for hardware |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3943299B2 (en) |
Families Citing this family (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4355525B2 (en) | 2002-10-09 | 2009-11-04 | 富士通マイクロエレクトロニクス株式会社 | Verification support method, verification support program, and verification support apparatus |
| JP5001126B2 (en) * | 2007-12-03 | 2012-08-15 | シャープ株式会社 | Hardware verification programming description generation apparatus, hardware verification programming description generation method, control program, and readable recording medium |
| JP5233354B2 (en) * | 2008-03-25 | 2013-07-10 | 日本電気株式会社 | Property verification system, property verification method, and program |
| KR20130094932A (en) * | 2012-02-17 | 2013-08-27 | (주)에프엑스기어 | System and method creating node graph using port-edge system |
| US10430462B2 (en) * | 2017-03-16 | 2019-10-01 | Raytheon Company | Systems and methods for generating a property graph data model representing a system architecture |
-
1999
- 1999-11-11 JP JP32134699A patent/JP3943299B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2001142918A (en) | 2001-05-25 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5831869A (en) | Method of compacting data representations of hierarchical logic designs used for static timing analysis | |
| US5703789A (en) | Test ready compiler for design for test synthesis | |
| US7370296B2 (en) | Modeling language and method for address translation design mechanisms in test generation | |
| JP4031905B2 (en) | Circuit design apparatus and circuit design method | |
| US7020856B2 (en) | Method for verifying properties of a circuit model | |
| US6560758B1 (en) | Method for verifying and representing hardware by decomposition and partitioning | |
| US7840931B2 (en) | Loop manipulation if a behavioral synthesis tool | |
| US7412684B2 (en) | Loop manipulation in a behavioral synthesis tool | |
| JP2000148808A (en) | Validation method of structural RTL for scheduled behavioral description | |
| US12229482B2 (en) | Recovery of a hierarchical functional representation of an integrated circuit | |
| CN113868280B (en) | Parameterized unit data updating method, apparatus, computer equipment and storage medium | |
| US7124070B2 (en) | Method of and apparatus for, and program for verifying equivalence between behavioral description and register transfer level description | |
| JP3943299B2 (en) | Apparatus and method for generating properties to be verified for hardware | |
| Li et al. | A recursion and lock free GPU-based logic rewriting framework exploiting both intranode and internode parallelism | |
| JP2801931B2 (en) | Logic design processing device, circuit conversion rule translation device, and circuit conversion rule translation method | |
| US20070038908A1 (en) | Design data structure for semiconductor integrated circuit and apparatus and method for designing the same | |
| Hauschildt et al. | WOFLAN: a Petri-net-based Workflow Analyzer | |
| US6983430B2 (en) | Method of resolving mismatched parameters in computer-aided integrated circuit design | |
| US6968518B2 (en) | Method of resolving missing graphical symbols in computer-aided integrated circuit design | |
| US20140033155A1 (en) | Systems and methods for generating a higher level description of a circuit design based on connectivity strengths | |
| US7260791B2 (en) | Integrated circuit designing system, method and program | |
| JP2007188517A (en) | Timing distribution device | |
| US6377909B1 (en) | Method and apparatus for preparing a logic simulation model and recording medium for storing the same | |
| CN121351723B (en) | A Circuit Input Sensitivity Analysis Method Based on Undef_SAT | |
| US7350162B2 (en) | Structure analytic program |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061212 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070209 |
|
| 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: 20070403 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070405 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110413 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110413 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120413 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130413 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140413 Year of fee payment: 7 |
|
| LAPS | Cancellation because of no payment of annual fees |