[go: up one dir, main page]

JP2001142918A - Apparatus and method for generating property to be verified for hardware - Google Patents

Apparatus and method for generating property to be verified for hardware

Info

Publication number
JP2001142918A
JP2001142918A JP32134699A JP32134699A JP2001142918A JP 2001142918 A JP2001142918 A JP 2001142918A JP 32134699 A JP32134699 A JP 32134699A JP 32134699 A JP32134699 A JP 32134699A JP 2001142918 A JP2001142918 A JP 2001142918A
Authority
JP
Japan
Prior art keywords
data transfer
resource
data
node
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.)
Granted
Application number
JP32134699A
Other languages
Japanese (ja)
Other versions
JP3943299B2 (en
Inventor
Roi Subiru
ロイ スビル
Hiroaki Iwashita
洋哲 岩下
Tsuneo Nakada
恒夫 中田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP32134699A priority Critical patent/JP3943299B2/en
Publication of JP2001142918A publication Critical patent/JP2001142918A/en
Application granted granted Critical
Publication of JP3943299B2 publication Critical patent/JP3943299B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Semiconductor Integrated Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

(57)【要約】 【課題】 ハードウェア記述言語により記述されている
ハードウェアについて検証すべきプロパティを自動的に
生成する方法を提供する。 【解決手段】 ハードウェア記述言語により記述されて
いるデータ資源およびデータ転送をデータ転送表示グラ
フを用いて表す(ステップS1)。データ転送グラフを
最適化する(ステップS2)。最適化処理により、デー
タ転送グラフは簡略化または最小化される。最適化され
たデータ転送グラフのトポロジに基づいて検証ツールに
より検証すべきプロパティを生成する(ステップS
3)。検証すべきプロパティは、資源競合およびレジス
タ漏れである。
(57) [Summary] [PROBLEMS] To provide a method for automatically generating a property to be verified for hardware described in a hardware description language. A data resource and a data transfer described in a hardware description language are represented using a data transfer display graph (step S1). The data transfer graph is optimized (Step S2). The optimization process simplifies or minimizes the data transfer graph. A property to be verified by the verification tool is generated based on the topology of the optimized data transfer graph (Step S)
3). Properties to verify are resource conflicts and register omissions.

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の属する技術分野】本発明は、ハードウェア記述
言語により記述された複数の資源およびそれらの資源を
利用したデータ転送を含むハードウェアについて検証す
べきプロパティを生成する装置および方法に係わる。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to an apparatus and 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.

【0002】[0002]

【従来の技術】近年、半導体チップの設計は非常に複雑
になってきている。すなわち、半導体チップ上に非常に
複雑なハードウェア(論理装置)が実装されるようにな
ってきている。このため、半導体チップの設計は、複数
の設計者による共同作業で行われることが多い。
2. Description of the Related Art In recent years, the design of semiconductor chips has become very complicated. That is, very complicated hardware (logic device) is being mounted on a semiconductor chip. For this reason, the design of a semiconductor chip is often performed by a joint work of a plurality of designers.

【0003】ところが、複数の設計者により細分化され
た設計情報は、各設計者により誤って解釈されることが
ある。この場合、ある一部における誤り(設計ミス)
は、レジスタ転送レベルにおいて、システム全体が正し
く動作しなくなる原因となることがある。そして、も
し、そのような誤りがあると、デバッグ作業などに多大
な費用と時間が浪費されてしまう。
However, design information segmented by a plurality of designers may be erroneously interpreted by each designer. In this case, an error in some part (design error)
May cause the whole system to not operate properly at the register transfer level. And if there is such an error, a great deal of money and time will be wasted on debugging work and the like.

【0004】ところで、半導体チップ上に設けることが
できる資源(例えば、レジスタ、バス、入力ポート、出
力ポートなど)は有限である。このため、各資源は、通
常、複数のタスクにより共有される。そして、共有され
ている資源により生成されるデータは、しばしば、一時
的にデータ記憶用資源(例えば、レジスタなど)に格納
される。
Meanwhile, resources (for example, registers, buses, input ports, output ports, etc.) 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】このような状況において頻繁に発生する設
計誤りは、「資源競合」および「レジスタ漏れ」であ
る。資源競合は、1つの資源(レジスタなど)が複数の
資源により同時にアクセスされる誤りである。一方、レ
ジスタ漏れは、複数の資源によりあるレジスタがアクセ
スされる際のアクセス順番に係わる誤りである。
[0005] Design errors that frequently occur in such a situation are "resource conflict" and "register omission". Resource contention is an error in which one resource (such as a register) is accessed simultaneously by multiple resources. On the other hand, register omission is an error related to the access order when a certain register is accessed by a plurality of resources.

【0006】複雑なハードウェアが実装された半導体チ
ップ上には、膨大な数の資源が形成されている。このた
め、上述のような誤り(資源競合、レジスタ漏れなど)
を人手で全て発見することは実質的に不可能である。と
ころが、設計されたハードウェアの中にたった1つの誤
りがあっただけでシステム全体が正しく動作しなくなっ
てしまうこともある。したがって、すべての資源競合お
よびレジスタ漏れを発見して取り除いておくことは、非
常に重要である。
[0006] An enormous number of resources are formed on a semiconductor chip on which complicated hardware is mounted. For this reason, the above errors (resource conflicts, register omissions, etc.)
It is practically impossible to find all of them manually. However, even a single error in the designed hardware may prevent the entire system from operating properly. Therefore, it is very important to find and eliminate all resource conflicts and register leaks.

【0007】[0007]

【発明が解決しようとする課題】多くの設計者は、設計
作業の早い段階で資源競合やレジスタ漏れを発見するこ
との重要性を認識している。しかし、現在までのとこ
ろ、資源競合やレジスタ漏れを発見するための作業は、
各設計者によりその設計者が担当するサブシステムごと
に行われているに過ぎなかった。
Many designers have recognized the importance of finding resource conflicts and register leaks early in the design process. However, to date, work to find resource conflicts and register omissions has
It is only performed by each designer for each subsystem in charge of that designer.

【0008】システム全体の動作を保証するためには、
サブシステムごとの検証だけでは十分ではなく、設計さ
れたハードウェア全体に渡って資源競合やレジスタ漏れ
を探し、それらを取り除く必要がある。しかし、従来
は、そのような作業はなされていなかった。このため、
ハードウェア設計に誤りが含まれていた場合には、それ
らの誤りは、通常、半導体チップ上にそのハードウェア
設計を実装した後に検出されることになる。
In order to guarantee the operation of the entire system,
Verification of each subsystem alone is not enough. It is necessary to search for resource conflicts and register leaks throughout the designed hardware and remove them. However, such an operation has not been conventionally performed. For this reason,
If errors are included in the hardware design, those errors are usually detected after the hardware design is mounted on a semiconductor chip.

【0009】本特許出願の出願人が知る範囲では、資源
競合およびレジスタ漏れを自動的に検出し、定式化し、
確認するツールは存在しない。そして、そのようなツー
ル無しでは、誤りのないハードウェア設計を実現するこ
とは実質的に不可能であろうと思われる。
To the knowledge of the applicant of the present patent application, resource conflicts and register omissions are automatically detected and formulated,
There is no tool to check. And without such a tool, it would be virtually impossible to achieve an error-free hardware design.

【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 by a hardware description language.

【0011】[0011]

【課題を解決するための手段】本発明のプロパティ生成
装置は、ハードウェア記述言語により記述された複数の
資源およびそれらの資源を利用したデータ転送を含むハ
ードウェアについて検証すべきプロパティを生成する構
成を前提とし、以下の各手段を有する。グラフ生成手段
は、ハードウェア記述言語で記述された資源およびデー
タ転送に対応するデータ転送グラフを生成する。最適化
手段は、そのグラフ生成手段により生成されたデータ転
送グラフを最適化する。プロパティ生成手段は、その最
適化手段により最適化されたデータ転送グラフを利用し
て、上記ハードウェア記述言語により記述されているハ
ードウェアについて検証すべきプロパティを生成する。
SUMMARY OF THE INVENTION A property generating apparatus according to the present invention generates a plurality of resources described in a hardware description language and a property to be verified for hardware including data transfer using the resources. And the following means are provided. The graph generation means generates a data transfer graph corresponding to resources and data transfer described in a hardware description language. The optimizing unit optimizes the data transfer graph generated by the graph generating unit. The property generation unit generates a property to be verified for the hardware described in the above hardware description language, using the data transfer graph optimized by the optimization unit.

【0012】上記構成において、ハードウェア記述言語
により記述されている設計情報がグラフ化され、そのグ
ラフを利用してハードウェアについて検証すべきプロパ
ティが自動的に生成される。このとき、プロパティが生
成される前にデータ転送グラフが最適化されるので、プ
ロパティの生成が容易になる。生成されたプロパティ
は、検証ツールにより検証される。
In the above configuration, the design information described in the hardware description language is graphed, and the properties to be verified for the hardware are 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 each represented by a node in the data transfer graph. On the other hand, data transfer is represented using edges (arrows) in which the transfer source and the transfer destination are defined. Then, the optimizing means minimizes the graph based on the topology of the data transfer graph.

【0014】生成すべきプロパティは、例えば、資源競
合およびレジスタ漏れである。資源競合のプロパティ
は、データ転送グラフにおいて、複数のファンインエッ
ジが接続されたノードにおいて検出される。一方、レジ
スタ漏れは、データ転送グラフにおいて、ファンインエ
ッジおよびファンアウトエッジが接続されたレジスタを
表すノードにおいて検出される。
The properties to be generated are, for example, resource contention and register omission. The resource conflict property is detected in the data transfer graph at a node to which a plurality of fan-in edges are connected. On the other hand, a register leak is detected at a node representing a register to which a fan-in edge and a fan-out edge are connected in the data transfer graph.

【0015】[0015]

【発明の実施の形態】以下、本発明の実施形態について
図面を参照しながら説明する。図1は、本発明の一実施
形態のプロパティ生成ツールが使用される環境を説明す
る図である。本実施形態のプロパティ生成ツール1は、
予め作成されているハードウェア仕様2からプロパティ
を抽出し、それを検証ツール3に検証させるものであ
る。
Embodiments of the present invention will be described below 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 property generation tool 1 of the present embodiment includes:
The property is extracted from the hardware specification 2 created in advance and the verification tool 3 verifies the property.

【0016】ハードウェア仕様2は、あるハードウェア
(例えば、半導体チップ上に実装されるプロセッサ等の
論理装置)の設計記述であり、そのハードウェアに含ま
れる複数の資源、およびそれら資源間のデータ転送を定
義する。このハードウェア仕様2は、たとえば、レジス
タ転送レベルのハードウェア記述言語で記述されてい
る。ハードウェア記述言語は、例えば、Verilog であ
る。また、定義される資源は、例えば、レジスタ、レジ
スタファイル、バス、入力ポート、出力ポート、入出力
ポートなどである。
The hardware specification 2 is a design description of a certain hardware (for example, a logic device such as a processor mounted on a semiconductor chip), a plurality of resources included in the hardware, and data between the resources. Define the transfer. This hardware specification 2 is described in, for example, a hardware description language of a register transfer level. The hardware description language is, for example, Verilog. The defined resources are, for example, registers, register files, buses, input ports, output ports, input / output ports, and the like.

【0017】ハードウェア仕様2において記述されてい
るハードウェアは、1以上のモジュールを含む。モジュ
ールが複数あるときは、それらは、しばしば階層的に記
述される。この場合、しばしば、上位階層のモジュール
を「親(ペアレント)」、下位階層のモジュールを「子
供(チャイルド)」と呼ぶことがある。なお、各モジュ
ールは、それぞれ1以上の資源を含む。
The hardware described in the hardware specification 2 includes one or more modules. When there are multiple modules, they are often described hierarchically. In this case, an upper-layer module is often called a “parent” and a lower-layer module is sometimes called a “child”. Each module includes one or more resources.

【0018】プロパティ生成ツール1は、入力されたハ
ードウェア仕様2を解析し、プロパティ(検証ツール3
が検証すべき項目または条件式)を抽出する。この実施
例では、プロパティは、「資源競合」および「レジスタ
漏れ」であり、例えば、CLTなどの時相論理式(時間
経過に伴う信号変化の条件式)で表される。
The property generation tool 1 analyzes the input hardware specification 2 and determines properties (a verification tool 3
Extracts items or conditional expressions to be verified. In this embodiment, the properties are “resource conflict” and “register omission”, and are expressed by a temporal logic expression (conditional expression of signal change over time) such as CLT, for example.

【0019】検証ツール3は、既存の論理検証ツールで
あり、プロパティ生成ツール1により抽出されたプロパ
ティについて検証する。具体的には、ハードウェア仕様
2により記述されているハードウェアにおいて「資源競
合」または「レジスタ漏れ」が発生するか否かを検証す
る。なお、検証ツール3は、他の項目についても検証す
ることができる。
The verification tool 3 is an existing logic verification tool, and verifies the properties extracted by the property generation tool 1. Specifically, it is verified whether or not “resource conflict” or “register omission” occurs in the hardware described by the hardware specification 2. The verification tool 3 can also verify other items.

【0020】図2は、プロパティ生成ツール1の動作を
説明するフローチャートである。この処理は、ハードウ
ェア仕様2が入力されたときに実行される。ステップS
1(Phase1)では、ハードウェア仕様2の記述に基づい
て、データ転送グラフ(DTDAG:Data Transfer Di
rected Acyclic Graph)が作成される。このとき、ハー
ドウェア仕様2において定義されている各モジュール毎
に資源が認識され、さらに、モジュールが階層的に記述
されているときはそれらの資源の親−子関係も認識され
る。また、データ転送に係わる条件が考慮される。これ
らの条件は、ハードウェア仕様2に記述されている。デ
ータ転送グラフは、ハードウェア仕様2により記述され
ているハードウェアに含まれる資源およびデータ転送を
表す。
FIG. 2 is a flowchart for explaining the operation of the property generation tool 1. This process is executed when the hardware specification 2 is input. Step S
1 (Phase 1), based on the description of the hardware specification 2, the data transfer graph (DTDA: Data Transfer Digraph)
rected Acyclic Graph) is created. At this time, the resources are recognized for each module defined in the hardware specification 2, and when the modules are described hierarchically, the parent-child relationship of those resources is also recognized. Also, conditions relating to data transfer are taken into account. These conditions are described in Hardware Specification 2. The data transfer graph represents resources and data transfer included in the hardware described by the hardware specification 2.

【0021】ステップS2(Phase2)では、ステップS
1で作成されたデータ転送グラフが最適化(簡略化また
は最小化)される。具体的には、データ転送グラフにお
いて表されている資源およびデータ転送のうち、「資源
競合」又は「レジスタ漏れ」が発生する可能性のない資
源またはデータ転送が削除される。
In step S2 (Phase2), step S2
The data transfer graph created in 1 is optimized (simplified or minimized). Specifically, of the resources and data transfers represented in the data transfer graph, resources or data transfers that are unlikely to cause “resource conflict” or “register omission” are deleted.

【0022】ステップS3(Phase3)では、ステップS
2において最適化されたデータ転送グラフからプロパテ
ィを抽出し、さらにそれらに対応する入力スクリプトを
生成する。この入力スクリプトは、検証ツール3が処理
可能な形式で記述される。
In step S3 (Phase3), step S3
In step 2, properties are extracted from the optimized data transfer graph, and corresponding input scripts are generated. This input script is described in a format that the verification tool 3 can process.

【0023】次に、図3を参照しながら、データ転送グ
ラフおよび抽出すべきプロパティについて説明する。図
3は、データ転送グラフの一例である。このデータ転送
グラフは、入力されたハードウェア仕様に基づいて作成
されるが、ここでは、その作成方法の説明は省略する。
なお、データ転送グラフは、基本的に、コンピュータ画
面に実際に表示されるものではない。したがって、図3
に示すグラフは、データ転送グラフを模式的に示したも
のである。このことは、以下の図面においても同様であ
る。ただし、データ転送グラフをコンピュータ画面に実
際に表示することは可能であり、そのようにしてもよ
い。
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. This data transfer graph is created based on the input hardware specifications, but the description of the creation method is omitted here.
Basically, the data transfer graph is not actually displayed on the computer screen. Therefore, FIG.
Is a data transfer graph. This is the same in the following drawings. However, it is possible to actually display the data transfer graph on the computer screen, and this may be done.

【0024】各ノードA〜F、H、Iは、それぞれデー
タ資源に対応する。例えば、ノードAは、ハードウェア
仕様2において「interface control register file 」
という名称が与えられたレジスタである。また、ノード
間に描かれている矢印は、データ転送に対応する。以
下、この矢印を「データ転送エッジ」または単に「エッ
ジ」と呼ぶことにする。また、例えば、ノードAからノ
ードDへのデータ転送に対応するエッジは、ノードAに
とってはファンアウトエッジ(または、出力エッジ)で
あり、同時に、ノードDにとってはファンインエッジ
(または、入力エッジ)である。
Each of the nodes A to F, H, and I corresponds to a data resource. For example, in the hardware specification 2, the node A has an “interface control register file”
Is a register given the name. Arrows drawn between nodes correspond to data transfer. Hereinafter, this arrow is referred to as “data transfer edge” or simply “edge”. Further, for example, the edge corresponding to the data transfer from the node A to the node D is a fan-out edge (or an output edge) for the node A, and at the same time, a fan-in edge (or an input edge) for the node D. is there.

【0025】各データ転送エッジには、そのデータ転送
についての定義や条件が付与されている。「C」は、デ
ータ転送が「同時転送(Concurrent Transfer )」であ
ることを表し、「S」は、そのデータ転送が「順次転送
(Sequential Transfer )」であることを表す。また、
「Gi 」は、データ転送についての動作条件(guardor
enabling condition )を表す。たとえば、図3に示す
例では、条件G1 が満たされたときに、ノードAからノ
ードDへのデータ転送が実行される。
Each data transfer edge is given a definition and a condition for the data transfer. “C” indicates that data transfer is “Concurrent Transfer”, and “S” indicates that data transfer is “Sequential Transfer”. Also,
"Gi" is the operating condition (guardor
enabling condition). For example, in the example shown in FIG. 3, when the condition G1 is satisfied, data transfer from the node A to the node D is executed.

【0026】上記データ転送グラフにおいて、あるノー
ドに対して複数のファンインエッジが存在する場合(Mu
ltiple fan-in )、「資源競合」が発生する可能性があ
る。ノードDに注目する。ノードDは32ビットのレジ
スタ"reg data out"である。ノードDには、エッジAD
およびエッジBDが入力されている。したがって、条件
G1 が満たされたときに、ノードA(レジスタ"interfa
ce control registerfile" )に格納されているデータ
がノードD(レジスタ"reg data out")に転送され、ま
た、条件G2 が満たされたときに、ノードB(入力ポー
ト"data out")からノードD(レジスタ"reg data ou
t")へデータが転送される。この場合、もし、任意のク
ロックサイクルにおいて、条件G1 およびG2 が同時に
満たされると、レジスタ"reg data out"に対して同時に
2つの書込アクセスが発生することになる。すなわち、
「資源競合」が発生することになる。
In the above data transfer graph, when there are a plurality of fan-in edges for a certain node (Mu
ltiple fan-in), "resource competition" may occur. Attention is paid to node D. Node D is a 32-bit register "reg data out". Node D has an edge AD
And the edge BD are input. Therefore, when the condition G1 is satisfied, the node A (register "interfa
ce control registerfile ") is transferred to the node D (register" reg data out "), and when the condition G2 is satisfied, the data is transferred from the node B (input port" data out ") to the node D (Register "reg data ou
t "). In this case, if the conditions G1 and G2 are simultaneously satisfied in any clock cycle, two write accesses to the register" reg data out "occur simultaneously. That is,
"Resource contention" will occur.

【0027】上述のような「資源競合」は、データ転送
グラフでは、複数のファンインエッジが存在するノード
において発生し得る。したがって、プロパティ生成ツー
ル1は、データ転送グラフにおいて複数のファンインエ
ッジが存在するノードを検出する。そして、検証ツール
3が、そのノードに係わるデータ転送のタイミングを考
慮しながら、実際に「資源競合」が発生するか否かを検
証する。
[0027] "Resource contention" as described above can occur in a node where a plurality of fan-in edges exist in the data transfer graph. Therefore, the property generation tool 1 detects a node where a plurality of fan-in edges exists in the data transfer graph. Then, the verification tool 3 verifies whether or not “resource conflict” actually occurs, taking into account the data transfer timing relating to the node.

【0028】また、あるノードに対してファンインエッ
ジおよびファンアウトエッジが存在する場合には、「レ
ジスタ漏れ」が発生する可能性がある。例えば、ノード
Dには、ファンインエッジAD、BD、およびファンア
ウトエッジDFが存在する。ここで、このハードウェア
は、ノードAのデータをノードDを介してノードFに送
った後に、ノードBのデータをノードにDに書き込む動
作をするものとする。したがって、この動作は、条件G
1 、G6 、G2 がその順番で満たされたときに得られ
る。ところが、もし、条件G6 が満たされる前に条件G
1 および条件G2が満たされてしまうと、ノードDから
ノードFへのデータ転送は、ノードDがノードBから転
送されてくるデータにより上書き(data overwrite)さ
れた後に実行されることになる。すなわち、「レジスタ
漏れ」が発生することになる。
If a fan-in edge and a fan-out edge exist for a certain node, "register omission" may occur. For example, the node D has a fan-in edge AD, a BD, and a fan-out edge DF. Here, it is assumed that the hardware performs an operation of transmitting data of the node A to the node F via the node D and then writing data of the node B to the node D. Therefore, this operation is performed under the condition G
Obtained when 1, G6, G2 are satisfied in that order. However, if condition G6 is not satisfied before condition G6 is satisfied,
When 1 and the condition G2 are satisfied, the data transfer from the node D to the node F is executed after the node D is overwritten by data transferred from the node B. That is, "register omission" occurs.

【0029】なお、「レジスタ漏れ」は、あるノードに
対するファンインエッジが1つの場合にも起こり得る。
例えば、第1のノードから第2のノードを介して第3の
ノードへデータを転送する場合に、第2のノードから第
3のノードへのデータ転送が実行される前に、第1のノ
ードから第2のノードへ他のデータが転送されると、上
述の場合と同様に、「レジスタ漏れ」が起こり得る。
Note that "register omission" can also occur when there is only one fan-in edge for a certain node.
For example, when data is transferred from the first node to the third node via the second node, the first node is transferred before the data transfer from the second node to the third node is performed. When other data is transferred from the first node to the second node, "register leak" may occur as in the above-described case.

【0030】このように、上述のような「レジスタ漏
れ」は、データ転送グラフにおいてあるノードに1以上
のファンインエッジおよび1以上のファンアウトエッジ
が存在する場合に発生し得る。したがって、プロパティ
生成ツール1は、データ転送グラフからファンインエッ
ジおよびファンアウトエッジが存在するノードを検出す
る。そして、検証ツール3が、そのノードに係わるデー
タ転送のタイミングを考慮しながら、実際に「レジスタ
漏れ」が発生するか否かを検証する。
As described above, "register omission" as described above can occur when one or more fan-in edges and one or more fan-out edges exist at a certain node in the data transfer graph. Therefore, the property generation tool 1 detects a node having a fan-in edge and a fan-out edge from the data transfer graph. Then, the verification tool 3 verifies whether or not “register leakage” actually occurs, taking into account the data transfer timing relating to the node.

【0031】レジスタに対応するノードに対してファン
インエッジおよびファンアウトエッジが存在する場合に
は、さらに他の問題が内在する。例えば、もし、あるレ
ジスタに対応するノードのファンインエッジに係わる条
件と、そのノードのファンアウトエッジに係わる条件と
が同一クロックサイクル内で満たされるとすると、その
レジスタに対して書込アクセスおよび読出アクセスが同
時に行われることになる。このような状況は、レジスタ
転送レベルのモデルでは必ずしもエラーではない。しか
し、この状況は、ゲートレベル或いはレイアウトレベル
においてクロックの歪みを考慮すると、上記レジスタか
ら誤ったデータを読み出してしまう恐れがある。すなわ
ち、もし、クロックが歪んでいると、あるクロックサイ
クルにおいて、レジスタからのデータ読出しが完全に終
わる前にそのレジスタに新たなデータの書込み行われて
しまうことがある。この問題は、実際の半導体チップ上
では、レジスタ漏れプロパティとして現れる。なお、図
3に示す例では、例えば、ノードIからノードCへのデ
ータ転送とノードCからノードDへのデータ転送との間
でこの種の「資源競合」が起こり得る。
Another problem is inherent when there is a fan-in edge and a fan-out edge 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 a fan-out edge of the node are satisfied in 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, if clock distortion is taken into account at the gate level or the layout level, erroneous data may be read from the register. That is, if the clock is distorted, new data may be written to the register in a certain clock cycle before data reading from the register is completely completed. This problem appears as a register leakage property on an actual semiconductor chip. In the example shown in FIG. 3, for example, this kind of “resource conflict” may occur between the data transfer from the node I to the node C and the data transfer from the node C to the node D.

【0032】上述のように、「資源競合」および「レジ
スタ漏れ」が実際に発生するのか否かは、検証ツール3
により検証される。すなわち、プロパティ生成ツール1
は、これらの問題が発生する可能性のあるプロパティを
ハードウェア仕様2から自動的に生成し、それらを検証
ツールに渡す。
As described above, the verification tool 3 determines whether or not “resource conflict” and “register omission” actually occur.
Is verified by That is, the property generation tool 1
Automatically generates properties from which these problems may occur from the hardware specification 2 and passes them to the verification tool.

【0033】なお、上述のプロパティ(「資源競合」お
よび「レジスタ漏れ」)は、記述されたハードウェアの
資源およびデータ転送がデータ転送グラフで表された場
合、そのグラフのトポロジに関係する。即ち、データ転
送グラフのトポロジを解析すれば、「資源競合」または
「レジスタ漏れ」が発生する可能性を判断できる。この
ため、プロパティ生成ツール1は、データ転送グラフの
トポロジから自動的にプロパティを生成できる。ただ
し、この場合、資源およびデータ転送に係わる情報は、
レジスタ転送レベルコードから抽出されている必要があ
る。
The above-mentioned properties ("resource conflict" and "register omission") relate to the topology of the described hardware resources and data transfer when the data transfer is represented by a data transfer graph. That is, by analyzing the topology of the data transfer graph, it is possible to determine the possibility of occurrence of “resource conflict” or “register omission”. Therefore, the property generation tool 1 can automatically generate a property from the topology of the data transfer graph. However, in this case, information related to resources and data transfer
It must be extracted from the register transfer level code.

【0034】ところで、ハードウェア仕様2において記
述されているハードウェアが大規模になると、必然的
に、その記述から生成されるデータ転送グラフは複雑に
なる。このため、プロパティ生成ツール1は、プロパテ
ィを正確に且つ短時間に生成するために、生成したデー
タ転送グラフを最適化(最小化または簡略化)する。最
適化の方法としては、データ転送グラフのトポロジに基
づく最適化(トポロジ最適化)、およびデータ転送の動
作条件に基づく最適化(論理最適化)が考えられる。
When the hardware described in the hardware specification 2 becomes large in scale, the data transfer graph generated from the description necessarily becomes complicated. For this reason, the property generation tool 1 optimizes (minimizes or simplifies) the generated data transfer graph in order to generate the property accurately and in a short time. As an optimization method, optimization based on the topology of the data transfer graph (topology optimization) and optimization based on the operation conditions of data transfer (logic optimization) can be considered.

【0035】図4は、データ転送グラフを最適化する処
理のフローチャートである。この処理は、図2のステッ
プS2に相当する。ステップS11では、「非フラグメ
ント等価(Unfragmented Equivalence)」を検出する。
ステップS12では、「フラグメント等価(Fragmented
Equivalence)」を検出する。ステップS13では、
「名称等価(Named Equivalence )」を検出する。ステ
ップS14では「フラグメントエッジ(Fragmented Edg
es)」を検出する。ステップS15では、「等価エッジ
(Edges in Equivalence)」を検出する。ステップS1
6では、「レジスタファイル(Register File )」を検
出する。上記ステップS11〜S16により、資源どう
しの等価関係が検出される。そして、それらの等価関係
を利用し、データ転送グラフから「資源競合」または
「レジスタ漏れ」が発生する可能性のない部分を削除す
る。これにより、データ転送グラフが最適化(すなわ
ち、最小化)される。
FIG. 4 is a flowchart of a process for optimizing a data transfer graph. This processing corresponds to step S2 in FIG. In step S11, "Unfragmented Equivalence" is detected.
In step S12, "Fragmented
Equivalence). In step S13,
Detects "Named Equivalence". In step S14, "Fragmented Edg
es) "is detected. In step S15, "Edges in Equivalence" is detected. Step S1
In step 6, "Register File" is detected. In steps S11 to S16, an equivalence relationship between resources is detected. Then, by using these equivalence relations, a portion that is unlikely to cause “resource conflict” or “register omission” is deleted from the data transfer graph. This optimizes (ie, minimizes) the data transfer graph.

【0036】ここで、ステップS11〜S16の処理の
うちの幾つかについて簡単に説明をしておく。なお、ス
テップS11〜S16の各処理は、後述フローチャート
を参照しながら詳しく説明する。
Here, some of the processes in steps S11 to S16 will be briefly described. The processes in steps S11 to S16 will be described in detail with reference to a flowchart described later.

【0037】図5は、ハードウェアの例である。図6
は、図5に示すハードウェアを階層的に記述する方法を
説明する図である。ハードウェア資源およびデータ転送
は、しばしば、図6に示すように、階層的に設計されて
記述される。ここでは、「モジュール0」が上位階層で
あり、「モジュール1」および「モジュール2」が「モ
ジュール0」の下位階層である。
FIG. 5 shows an example of hardware. FIG.
FIG. 6 is a diagram illustrating a method of hierarchically describing the hardware illustrated in FIG. 5. Hardware resources and data transfer are often designed and described hierarchically, as shown in FIG. Here, “module 0” is an upper layer, and “module 1” and “module 2” are lower layers of “module 0”.

【0038】このように、階層ごとにデータ資源および
データ転送が記述される場合、同一の資源またはデータ
に対して異なる名称が付与されることが多々ある。例え
ば、図6に示す例においては、モジュール0への入力で
ある"input 1" は、モジュール1においては"input 11"
として記述されている。
As described above, when data resources and data transfer are described for each hierarchy, different names are often given to the same resource or data. For example, in the example shown in FIG. 6, "input 1" which is an input to module 0 is "input 11" in module 1.
It is described as

【0039】ところで、ハードウェア記述言語では、モ
ジュール間のデータ転送は、通常、入力ポートまたは出
力ポートを用いて記述される。たとえば、モジュール0
における"input 1" とモジュール1における"input 11"
との対応関係は、しばしば、モジュール0の"input por
t 1"からモジュール1の"input port 11" へのデータ転
送として表される。本実施形態では、このようなポート
同士の対応関係を「ポート連携(Port Association)」
と呼ぶ。そして、この「ポート連携」は、ハードウェア
仕様2において定義されている。
In the hardware description language, data transfer between modules is usually described using an input port or an output port. For example, module 0
"Input 1" in module 1 and "input 11" in module 1
Is often associated with "input por" in module 0
This is expressed as data transfer from "t1" to "input port 11" of module 1. In the present embodiment, such a correspondence between ports is referred to as a "port association".
Call. The “port cooperation” is defined in the hardware specification 2.

【0040】また、ハードウェア記述言語では、あるモ
ジュール内のレジスタに格納されているデータを他のモ
ジュールへ転送する場合、そのデータは、出力ポートを
介して転送されるように記述される。この場合、その出
力ポートには、通常、上記レジスタに付与されている名
称と同じ名称が付与される。本実施形態では、この対応
関係を「名称連携(Named Association )」と呼ぶ。
In the hardware description language, when data stored in a register in a certain module is transferred to another module, the data is described so as to be transferred via an output port. In this case, the output port is usually given the same name as the name given to the register. In the present embodiment, this correspondence is referred to as “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に転送され
る。
FIG. 7 is a diagram showing an example of optimizing a data transfer graph using "equivalent of resources". Fig. 7 (a)
Shows a data transfer graph generated from the resource and data transfer definitions described in the hardware specification 2. In this embodiment, the module 1 is provided with three resources (input port SD-DQ-IN, register data-in, output port data-in). The output of the module 1 is transferred to the bus wire data-buf-out defined in the module 2 and further transferred to the register reg-data-out defined in the module 3.

【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) に示す形態に最適化(すなわち、簡略化)される。
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, input port SD
Data transfer from -DQ-IN to register data-in can be treated as data transfer from input port SD-DQ-IN to output port data-in. The output port data-in and the bus wire data-buf-out have a “port cooperation” relationship with each other. That is, these two resources can be considered equivalent. Therefore, input port SD-DQ-
Data transfer from IN to output port data-in can be treated as data transfer from input port SD-DQ-IN to bus wire data-buf-out. By utilizing these equivalence relationships, the data transfer graph shown in FIG.
(b) is optimized (that is, simplified).

【0043】なお、データ転送の転送元の資源と転送先
の資源とが等価であるためには、それらの資源が扱うデ
ータのビット幅が互いに同じである必要がある。従っ
て、以下の定義が得られる。定義1:互いに隣接する1
組の資源が互いに同じビット幅仕様を備える場合、それ
らの等価な資源は、「非フラグメント等価」である。
Note that, in order for the source resource of the data transfer and the destination resource to be equivalent, the bit widths of the data handled by those resources need to be the same. Therefore, the following definition is obtained. Definition 1: 1 adjacent to each other
If the sets of resources have the same bit width specification, their equivalent resources are "non-fragment equivalent".

【0044】図8は、「フラグメント」を説明する図で
ある。図8に示す例では、中間レベルのモジュールCに
32ビット幅の出力ポートOPが設けられ、その上位レ
ベルのモジュールBにそれぞれ8ビット幅の出力ポート
OP1〜OP4が設けられている。
FIG. 8 is a diagram for explaining a "fragment". In the example shown in FIG. 8, an output port OP having a 32-bit width is provided in the module C at the intermediate level, and output ports OP1 to OP4 having an 8-bit width are provided in the module B at the higher level.

【0045】ここで、あるデータ幅を持ったデータ資源
とそのデータ幅よりも小さいデータ幅のデータ資源(あ
るいは、そのデータ幅よりも大きいデータ幅のデータ資
源)との間でデータ転送がある場合、「フラグメント等
価」が生じ得る。図8に示す例では、モジュールBの出
力ポートOP1〜OP4は、モジュールCの出力ポート
OPとの関係において「フラグメント等価」とみなされ
る。
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】図8に示すモデルにおける出力ポートO
P、および出力ポートOP1〜OP4は、データ転送グ
ラフでは、それぞれノードで表され、また、出力ポート
OPから出力ポートOP1〜OP4へのデータ転送は、
それぞれエッジで表される。ここで、上述したように、
出力ポートOP1〜OP4にそれぞれ対応するノードが
「フラグメント等価」である場合、上記データ転送に対
応する4本のエッジはフラグメントエッジである。本実
施形態では、「フラグメント等価」であるノードに接続
される複数のエッジを、「フラグメントエッジ」と呼
ぶ。
The output port O in the model shown in FIG.
P and the output ports OP1 to OP4 are represented by nodes in the data transfer graph, and data transfer from the output port OP to the output ports OP1 to OP4 is performed by:
Each is represented by an edge. Here, as described above,
When the nodes respectively 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 nodes that are “fragment equivalent” are referred to as “fragment edges”.

【0047】「フラグメント等価」の有用性は、フラグ
メントデータ転送を組み合わせることにより非フラグメ
ントデータ転送を得る可能性があることである。また、
データ転送の転送元資源または転送先資源が「フラグメ
ント等価」であるか否かに基づいて、データ転送がフラ
グメントデータ転送であるか非フラグメントデータ転送
であるかを識別することができる。
The utility of "fragment equality" is that non-fragment data transfers can be obtained by combining fragment data transfers. Also,
Whether the data transfer is a fragment data transfer or a non-fragment data transfer can be identified based on whether the source resource or the destination resource of the data transfer is “fragment equivalent”.

【0048】フラグメントデータ転送を最適化する他の
方法は、「独立フラグメントデータ転送」である。この
「独立フラグメントデータ転送」について、以下の定義
を設ける。定義2:フラグメントデータ転送エッジの中
の任意のエッジの組合せにおいて資源競合を起こさない
のであれば、それらのエッジは「独立」である。
Another method for optimizing fragment data transfer is "independent fragment data transfer". The following definition is provided for this “independent fragment data transfer”. Definition 2: If there is no resource contention in any combination of edges among the fragment data transfer edges, those edges are "independent".

【0049】本実施形態の最適化処理では、データ転送
グラフから「独立」なエッジが削除される。これによ
り、資源競合プロパティまたはレジスタ漏れプロパティ
が誤って生成されることが回避される。
In the optimization processing of this embodiment, "independent" edges are deleted from the data transfer graph. This prevents the resource conflict property or the register leak property from being erroneously generated.

【0050】レジスタファイルは、ハードウェア規模を
小さくするために、複数のレジスタをグループ化し、バ
スと各レジスタとの間の接続を簡略化する技術である。
これにより、例えば、図9(a) に示す構成が、図9(b)
に示す構成に簡略化される。ただし、レジスタファイル
に属する各レジスタは、ハードウェア記述言語では、し
ばしば独立したレジスタとして記述される。この場合、
レジスタファイルは、データ転送グラフにおいて、複数
のレジスタとして表わされる。このため、データ転送グ
ラフの最適化処理では、レジスタファイルを認識し、そ
のレジスタファイルに属する複数のレジスタに対応する
複数のノードを、1つのノードに置き換える。
The register file is a technique for grouping a plurality of registers to simplify the connection between a bus and each register in order to reduce the hardware scale.
Thus, for example, the configuration shown in FIG.
Is simplified. 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 data transfer graph optimizing process, 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】次に、具体的な実施例を示す。第1の実施例 図10〜図15は、プロパティ生成ツール1に入力され
るハードウェア仕様2の一例である。ここでは、ハード
ウェア記述言語として、Verilog が使用されている。
Next, specific examples will be described. First Embodiment FIGS. 10 to 15 are examples of hardware specifications 2 input to a property generation tool 1. FIG. Here, Verilog is used as a hardware description language.

【0052】図10は、モジュール0について記述した
コードである。このコードのセクション1の記述によれ
ば、モジュール0は、2つの入力ポート(INPUT1,2)、
および2つの出力ポート(OUTPUT1,2 )を備える。これ
らの各ポートは、それぞれ16ビット幅である。また、
モジュール0には、クロックおよび制御信号が入力され
る。さらに、モジュール0には16ビット幅のバスワイ
ヤCONEKTが設けられている。
FIG. 10 is a code describing module 0. According to the description in section 1 of this code, module 0 has two input ports (INPUT1,2),
And two output ports (OUTPUT1, 2). Each of these ports is 16 bits wide. Also,
The module 0 receives a clock and a control signal. Further, the module 0 is provided with a bus wire CONEKT having a width of 16 bits.

【0053】セクション2の記述によれば、モジュール
0の下位階層にモジュール1が設けられている。そし
て、モジュール0とモジュール1との間におけるポート
の対応関係(ポート連携)が定義されている。この例で
は、例えば、モジュール0の入力ポートINPUT1の8〜1
5ビットがモジュール1の入力ポートIPORT3に対応付け
られ、モジュール0の入力ポートINPUT1の0〜7ビット
がモジュール1の入力ポートIPORT4に対応付けられてい
る。この場合、入力ポートINPUT1は、入力ポートIPORT3
および入力ポートIPORT4の「親資源」であり、また、入
力ポートIPORT3および入力ポートIPORT4は、入力ポート
INPUT1の「子供資源」である。また、バスワイヤCONEKT
がモジュール1の入力ポートIPORT1,2に接続されてい
る。
According to the description in section 2, module 1 is provided in a lower hierarchy of module 0. A port correspondence (port cooperation) between module 0 and module 1 is defined. In this example, for example, 8 to 1 of input port INPUT1 of module 0
Five bits are associated with input port IPORT3 of module 1, and bits 0 to 7 of input port INPUT1 of module 0 are associated with input port IPORT4 of module 1. In this case, input port INPUT1 is connected to input port IPORT3
And the input port IPORT4 is the “parent resource”, and the input port IPORT3 and the input port IPORT4 are the input ports
It is "child resource" of INPUT1. Also, bus wire CONEKT
Are connected to the input ports IPORT1 and IPORT2 of the module 1.

【0054】セクション3の記述によれば、モジュール
0の下位階層にモジュール2が設けられている。セクシ
ョン3では、モジュール0とモジュール2との間におけ
るポートの対応関係が定義されている。また、バスワイ
ヤCONEKTがモジュール2の出力ポートOPORT1に接続され
ている。
According to the description of section 3, module 2 is provided in a lower hierarchy of module 0. In section 3, the correspondence of ports between module 0 and module 2 is defined. The bus wire CONEKT is connected to the output port OPORT1 of the module 2.

【0055】図11および図12は、モジュール1につ
いて記述したコードである。セクション4の記述によれ
ば、各入力ポート(IPORT1-4)、出力ポート(OPORT1,
2)はそれぞれ8ビット幅である。また、セクション5
の記述によれば、モジュール1には、レジスタAおよび
レジスタBが設けられている。そして、レジスタAに格
納されているデータは出力ポートOPORT1に転送され、レ
ジスタBに格納されているデータは出力ポートOPORT2に
転送される。なお、これらのデータ転送は、クロックま
たは制御信号に係わらず実行される。すなわち、これら
のデータ転送は、同時転送(Concurrent Transfer )タ
イプに属する。具体的には、"continuousassignment"
による転送である。
FIG. 11 and FIG. 12 are codes describing module 1. According to the description in section 4, each input port (IPORT1-4), output port (OPORT1,
2) are each 8 bits wide. Section 5
According to the description, the module 1 is provided with the register A and the register B. Then, the data stored in the register A is transferred to the output port OPORT1, and the data stored in the register B is transferred to the output port OPORT2. Note that these data transfers are performed irrespective of the clock or control signal. That is, these data transfers belong to the simultaneous transfer (Concurrent Transfer) type. Specifically, "continuousassignment"
It is transfer by.

【0056】セクション6の記述によれば、制御信号1
が与えられると、入力ポートIPORT1に入力されたデータ
がレジスタAに書き込まれると共に、入力ポートIPORT3
に入力されたデータがレジスタBに書き込まれる。ま
た、セクション7の記述によれば、制御信号2が与えら
れると、入力ポートIPORT2に入力されたデータがレジス
タAに書き込まれると共に、入力ポートIPORT4に入力さ
れたデータがレジスタBに書き込まれる。これらのデー
タ転送は、制御信号に従って実行される。すなわち、こ
れらのデータ転送は、順次転送(Sequential Transfer
)タイプに属す。具体的には、"sequential always bl
ock" による転送である。
According to the description in section 6, the control signal 1
Is supplied, the data input to the input port IPORT1 is written into the register A, and the input port IPORT3
Is written into the register B. Also, according to the description in section 7, when the control signal 2 is given, the data input to the input port IPORT2 is written to the register A, and the data input to the input port IPORT4 is written to the register B. These data transfers are performed according to control signals. That is, these data transfers are performed sequentially (Sequential Transfer).
) Belongs to the type. Specifically, "sequential always bl
ock "transfer.

【0057】図13〜図15は、モジュール2について
記述したコードである。セクション8の記述によれば、
各入力ポート(IPORT5)、出力ポート(OPORT3,4)はそ
れぞれ16ビット幅である。また、セクション9の記述
によれば、モジュール2は、レジスタC〜Fを備える。
そして、レジスタEに格納されているデータは出力ポー
トOPORT3に転送され、レジスタFに格納されているデー
タは出力ポートOPORT4に転送される。これらのデータ転
送は、同時転送である。また、各レジスタC〜Fには、
それぞれ所定の初期値が与えられている。
FIGS. 13 to 15 show codes describing the module 2. According to the description in section 8,
Each input port (IPORT5) and each output port (OPORT3, 4) are 16 bits wide. According to the description in section 9, the module 2 includes the registers C to F.
Then, the data stored in the register E is transferred to the output port OPORT3, and the data stored in the register F is transferred to the output port OPORT4. These data transfers are simultaneous transfers. Also, in each of the registers C to F,
Each is given a predetermined initial value.

【0058】セクション10の記述によれば、制御信号
3が与えられると、入力ポートIPORT5に入力されたデー
タがレジスタCに書き込まれ、そうでない場合には、入
力ポートIPORT5に入力されたデータはレジスタDに書き
込まれる。また、セクション11の記述によれば、制御
信号4が与えられると、レジスタC、Dに所定の演算結
果データが書き込まれる。さらに、セクション12の記
述によれば、レジスタFにも所定の演算結果データが書
き込まれる。
According to the description in section 10, when the control signal 3 is applied, the data input to the input port IPORT5 is written to the register C. Otherwise, the data input to the input port IPORT5 is written to the register C. D is written. According to the description in section 11, when the control signal 4 is applied, predetermined operation result data is written into the registers C and D. Further, according to the description in section 12, predetermined operation result data is also written in the register F.

【0059】セクション13の記述によれば、制御信号
5が与えられると、レジスタCに格納されているデータ
がレジスタEに書き込まれる。また、制御信号5が与え
られることなく制御信号6が与えられると、レジスタD
に格納されているデータがレジスタEに書き込まれる。
さらに、制御信号5および6が与えられることなく制御
信号7が与えられ場合、および制御信号5〜7が与えら
れなかった場合は、それぞれレジスタEに所定の定数デ
ータが書き込まれる。
According to the description in the section 13, when the control signal 5 is applied, the data stored in the register C is written into the register E. When control signal 6 is applied without application of control signal 5, register D
Is written to the register E.
Further, when control signal 7 is applied without application of control signals 5 and 6, and when control signals 5 to 7 are not applied, predetermined constant data is written in register E, respectively.

【0060】図16は、図10〜図15に示したハード
ウェア仕様から生成されたデータ転送グラフである。こ
のグラフは、図2に示したフローチャートのステップS
により生成される。なお、ハードウェア仕様において定
義されているデータ資源は、データ転送グラフでは、
「ノード」として表される。そして、各ノードごとに、
データ資源の名称、データ資源の種別(レジスタ、バス
ワイヤ、ポートなど)、モジュール名、およびノード名
が設定される。また、各データ転送は、データ転送グラ
フでは、それぞれエッジ(図16では、「矢印」で描か
れている)で表される。
FIG. 16 is a data transfer graph generated from the hardware specifications shown in FIGS. This graph corresponds to step S in the flowchart shown in FIG.
Generated by The data resources defined in the hardware specification are as follows in the data transfer graph:
Expressed as a "node". And for each node,
The 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 (in FIG. 16, indicated by an “arrow”) in the data transfer graph.

【0061】なお、このデータ転送グラフは、発明を理
解しやすくするために模式的に描いたものであり、実際
は、モジュールリスト、データ資源リスト、データ転送
エッジリスト、および等価クラスリスト等から構成され
る。
The data transfer graph is schematically drawn for easy understanding of the present invention, and is actually composed of a module list, a data resource list, a data transfer edge list, an equivalent class list, and the like. You.

【0062】モジュールリストは、ハードウェア仕様に
おいて定義されている各モジュールについて以下の情報
を格納する。 ・モジュールの名称 ・親モジュール(当該モジュールの上位階層のモジュー
ル) ・子供モジュール(当該モジュールの下位階層のモジュ
ール) ・階層レベル(当該モジュールが属する階層) ・処理状態(最適化処理における中間状態を表すフラグ
等) ・各種ポインタ 例えば、モジュール0についてモジュールリストに格納
すべき情報としては、ハードウェア仕様から以下が得ら
れる。
The module list stores the following information for each module defined in the hardware specifications. -Name of the module-Parent module (module of the upper layer of the module)-Child module (module of the lower layer of the module)-Layer level (layer to which the module belongs)-Processing state (represents an intermediate state in the optimization processing) Various pointers For example, as information to be stored in the module list for module 0, the following can be obtained from hardware specifications.

【0063】 ・モジュールの名称:MOD0 ・親モジュール:なし ・子供モジュール:MOD1, MOD2 ・階層レベル:0 なお、「処理状態」は、最適化処理における中間状態を
表すフラグ等であり、ハードウェア仕様から得られるの
ではない。また、「ポインタ」も、ハードウェア仕様か
ら得られるのではない。
• Module name: MOD0 • Parent module: none • Child module: MOD1, MOD2 • Hierarchy level: 0 Note that the “processing state” is a flag or the like indicating an intermediate state in the optimization processing, and is a hardware specification. Not obtained from. Also, "pointers" are not derived from hardware specifications.

【0064】データ資源リストは、ハードウェア仕様に
おいて定義されている各データ資源について以下の情報
を格納する。このリストは、資源の種別(レジスタ、入
力ポート、出力ポート、バス、データ転送、定
数、...)ごとに生成される。
The data resource list stores the following information for each data resource defined in the hardware specifications. This list is generated for each type of resource (register, input port, output port, bus, data transfer, constant,...).

【0065】 ・資源の名称 ・親モジュール ・階層レベル ・ビット幅仕様 ・親資源 ・子供資源 ・非フラグメント等価クラス ・フラグメント等価クラス ・エッジ ・処理状態 例えば、入力ポートINPUT1(ノードA)についてデータ
資源リストに格納すべき情報としては、ハードウェア仕
様から以下が得られる。
Resource name Parent module Hierarchy level Bit width specification Parent resource Child resource Non-fragment equivalent class Fragment equivalent class Edge Edge Processing state For example, data resource list for input port INPUT1 (node A) The following information is obtained from the hardware specifications as information to be stored in.

【0066】 ・資源の名称:INPUT1 ・親モジュール:なし ・階層レベル:0 ・ビット幅仕様:「15:0」 ・親資源:なし ・子供資源:IPORT5 ・エッジ:エッジAF なお、「非フラグメント等価クラス」および「フラグメ
ント等価クラス」は、ハードウェア仕様から得られるの
ではなく、データ転送グラフを解析することにより得ら
れるものである。
Resource name: INPUT 1 Parent module: None Hierarchical level: 0 Bit width specification: “15: 0” Parent resource: None Child resource: IPORT 5 Edge: Edge AF Note: “Non-fragment equivalent The "class" and "fragment equivalence class" are not obtained from the hardware specification but are obtained by analyzing the data transfer graph.

【0067】データ転送エッジリストは、ハードウェア
仕様において定義されている各データ転送について以下
の情報を格納する。 ・エッジの名称 ・転送先資源 ・転送元資源 ・ガード表現(データ転送の条件) ・データ転送タイプ(同時転送または順次転送など) ・転送先または転送元のフラグメント状態 ・最適化処理における処理状態 例えば、入力ポートIPORT1(ノードJ)からレジスタRE
G-A (ノード0)へのデータ転送に対応するエッジにつ
いてデータ転送エッジリストに格納すべき情報として
は、ハードウェア仕様から以下が得られる。
The data transfer edge list stores the following information for each data transfer defined in the hardware specification. -Name of edge-Transfer destination resource-Transfer source resource-Guard expression (data transfer condition)-Data transfer type (simultaneous transfer or sequential transfer, etc.)-Transfer destination or transfer source fragment state-Processing state in optimization processing For example , Input port IPORT1 (node J) to register RE
As information to be stored in the data transfer edge list for the edge corresponding to the data transfer to the GA (node 0), the following is obtained from the hardware specification.

【0068】 ・エッジの名称:JO ・転送先資源:レジスタREG-A (ノード0) ・転送元資源:入力ポートIPORT1(ノードJ) ・ガード表現:CTRL1 ・データ転送タイプ:S(順次転送) なお、「転送先または転送元のフラグメント状態」は、
データ転送グラフを解析することにより得られる。
Edge name: 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) , "Destination or source fragment state"
Obtained by analyzing the data transfer graph.

【0069】等価クラスリストは、以下の情報を格納す
る。なお、これらの情報は、データ転送グラフを解析す
ることにより得られる。 ・等価クラス識別子 ・各等価クラスに属する資源 ・処理状態 データ転送グラフを作成する際には、まず、ハードウェ
ア仕様の各モジュール毎の記述を上位階層から順番に解
析してゆき、定義されている各データ資源、それら資源
の対応関係、およびそれらの資源を利用したデータ転送
を認識する。このとき、あるモジュールから他のモジュ
ールへのコールがあるか否かを調べるために、behaviou
ral 記述がスキャンされる。そして、そのようなコール
があった場合には、呼び出されたモジュール毎に、サー
チキューを設け、先に認識されている資源との間でイン
タフェース定義の対応関係を認識する。
The equivalence class list stores the following information. These pieces of information can be obtained by analyzing the data transfer graph. -Equivalent class identifier-Resources belonging to each equivalence class-Processing status 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 defined. Recognize each data resource, the correspondence between those resources, and data transfer using those resources. At this time, to check whether there is a call from one module to another module,
The ral description is scanned. When such a call is made, a search queue is provided for each called module, and the correspondence of the interface definition with the previously recognized resource is recognized.

【0070】また、各ポート(入力ポート、出力ポー
ト、入出力ポートを含む)、バスワイヤ、レジスタのビ
ット幅を認識し、さらに、各バスワイヤごとに、そのバ
スワイヤに対応するドライバおよびレジスタを認識す
る。
Further, it recognizes the bit width of each port (including an input port, an output port, and an input / output port), a bus wire, and a register, and further recognizes, for each bus wire, a driver and a register corresponding to the bus wire.

【0071】ハードウェア資源2から抽出した情報は、
モジュールリスト、データ資源リスト、データ転送エッ
ジリストに格納される。図10〜図15に示す例では、
これらの処理により、図16に示す各ノードA〜Y
(E、G、P、Q、Rを除く)が生成され、それぞれビ
ット幅が設定される。
The information extracted from the hardware resource 2 is
Stored in the module list, data resource list, and data transfer edge list. In the example shown in FIGS.
By these processes, each of the nodes A to Y shown in FIG.
(Except E, G, P, Q, and R) are generated, and the bit width is set.

【0072】さらに、データ転送毎に設定されている条
件を解析する。これらの条件は、たとえば、"gurded co
ntinuous assignment statement"、"combinational alw
ausblock"、"sequential always block" である。これ
らの情報は、「ガード表現」として、データ転送毎にデ
ータ転送エッジリストに登録される。これにより、各デ
ータ転送に対応するエッジが生成されることになる。な
お、条件が設定されていないデータ転送については、そ
のデータ転送に対して「1」が付与される。
Further, conditions set for each data transfer are analyzed. These conditions are, for example, "gurded co
ntinuous assignment statement "," combinational alw
ausblock "and" sequential always block "These pieces of information are registered in the data transfer edge list for each data transfer as a" guard expression ". As a result, an edge corresponding to each data transfer is generated. For data transfer for which no conditions are set, “1” is assigned to the data transfer.

【0073】ハードウェア仕様において代入式が記述さ
れている場合(例えば、セクション10およびセクショ
ン11)には、図17(a) に示すように、疑似資源Sdt
が生成される。この疑似資源Sdtは、記述されている代
入式を実装する仮想的なデータソースである。たとえ
ば、セクション11に記述されている代入式に対応する
ノードP(Sdt3)が生成される。ノードE、Gも同様で
ある。また、あるレジスタに予め決められた定数が書き
込まれる場合(例えば、セクション13)は、図17
(b) に示すように、疑似資源Sdcが生成される。この疑
似資源Sdcもまた仮想的なデータソースである。例え
ば、セクション13に記述された定義に対応してノード
Q、Rが生成される。なお、これらの疑似資源は、ハー
ドウェア仕様に基づいてデータ資源リストに所定の情報
を登録することにより生成される。
When an assignment expression is described in the hardware specification (for example, section 10 and section 11), as shown in FIG.
Is generated. This pseudo resource Sdt is a virtual data source that implements the described assignment expression. For example, a node P (Sdt3) corresponding to the assignment expression described in section 11 is generated. The same applies to nodes E and G. In addition, when a predetermined constant is written in a certain register (for example, section 13),
As shown in (b), a pseudo resource Sdc is generated. This pseudo resource Sdc is also a virtual data source. For example, nodes Q and R are generated corresponding to the definition described in section 13. Note that these pseudo resources are generated by registering predetermined information in a data resource list based on hardware specifications.

【0074】続いて、上述のようにして生成されたデー
タ転送グラフが最適化される。図16に示す例では、デ
ータ転送グラフにおいて「非フラグメント等価」「フラ
グメント等価」および「独立エッジ」を検出することに
よりデータ転送グラフが最適化される。
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】「非フラグメント等価」を検出する場合、
ハードウェア仕様のインタフェース定義において互いに
「等価」であると定義されている1組の資源であって、
データ幅が互いに同じであるものを認識する。この場
合、対象となる資源は、たとえば、入力ポート、出力ポ
ートおよび入出力ポートである。そして、非フラグメン
ト等価クラスに属する資源が検出されると、そのことを
表す情報が、データ資源リストにおいて、その資源に対
応する記憶領域に登録される。
When detecting “non-fragment equivalent”,
A set of resources defined in the interface definition of the hardware specification as being "equivalent" to each other,
Recognize that the data widths are the same. In this case, the target resources are, for example, input ports, output ports, and input / output ports. Then, when a resource belonging to the non-fragment equivalence class is detected, information indicating the fact is registered in the storage area corresponding to the resource in the data resource list.

【0076】上記等価関係は、各ポート毎に調べられ
る。このとき、各ポート毎に処理は、最終資源にたどり
着くまで、あるいは異なるビット幅の資源に到達するま
で継続される。
The above equivalence relation is checked for each port. At this time, the processing is continued for each port until it reaches the final resource or until it reaches a resource having a different bit width.

【0077】ここで、図16に示したグラフにおける
「非フラグメント等価」を説明する。ノードA(モジュ
ール0のINPUT2)及びノードF(モジュール2のIPORT
5)は、共に16ビットの入力ポートである。また、こ
れらの入力ポートは、ハードウェア仕様のセクション3
に定義されているように、互いに対応する資源である。
即ち、ノードFに対応する資源は、ノードAに対応する
資源の「子供」である。従って、ノードAおよびノード
Fは、「非フラグメント等価」である。同様に、ノード
CはノードDと等価であり、ノードXはノードWと等価
である。
Here, "non-fragment equivalent" in the graph shown in FIG. 16 will be described. Node A (INPUT2 of Module 0) and Node F (IPORT of Module 2)
5) are both 16-bit input ports. Also, these input ports are described in Section 3 of the hardware specification.
Are resources that correspond to each other, as defined in
That is, the resource corresponding to the node F is a “child” of the resource corresponding to the node A. Therefore, nodes A and F are "non-fragment equivalent". Similarly, node C is equivalent to node D, and node X is equivalent to node W.

【0078】この場合、例えば、資源Aおよび資源Fが
非フラグメント等価クラス#1に属しているとすると、
データ資源リストにおいて、資源Aおよび資源Fの「非
フラグメント等価クラス」にそれぞれ「#1」が登録さ
れる。
In this case, for example, if resources A and F belong to the non-fragment equivalence class # 1,
In the data resource list, “# 1” is registered in the “non-fragment equivalent class” of the resources A and F, respectively.

【0079】「フラグメント等価」を検出する場合は、
分岐されている資源の中から等価なものを認識する。図
16に示す例では、例えば、ノードBからノードHおよ
びノードIへデータが転送されている。このとき、ノー
ドBのビット仕様が16ビット幅であるのに対し、ノー
ドHおよびノードIのビット仕様はそれぞれ8ビット幅
である。即ち、各転送先のノードで使用されるビット幅
は、転送元のノードで使用されるビット幅よりも小さ
い。従って、ノードHおよびノードIは、「フラグメン
ト等価」である。このことは、ノードJ、Kにおいても
同様である。
When detecting “fragment equivalent”,
Recognize the equivalent of the branched resources. In the example shown in FIG. 16, for example, data is transferred from node B to node H and node I. At this time, the bit specifications of the node B are 16 bits wide, while the bit specifications of the nodes H and 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, the nodes H and I are “fragment equivalent”. This is the same for the nodes J and K.

【0080】一方、ノードYには、ノードSおよびノー
ドTからデータが転送されてきている。このとき、各転
送元のノードで使用されるビット幅は、転送先のノード
で使用されるビット幅よりも小さい。従って、ノードS
およびノードTは、「フラグメント等価」である。
On the other hand, data is transferred to node Y from nodes S and T. 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, node S
And the node T are “fragment equivalent”.

【0081】この場合、例えば、資源Hおよび資源Iが
フラグメント等価クラス#5に属しているとすると、デ
ータ資源リストにおいて、資源Aおよび資源Fの「フラ
グメント等価クラス」にそれぞれ「#5」が登録され
る。
In this case, for example, assuming that resource H and resource I belong to fragment equivalence class # 5, “# 5” is registered in “fragment equivalence class” of resources A and F in the data resource list. Is done.

【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へのデータ転送に対
応するエッジもそれぞれ独立エッジである。
The “independent edge” is as follows. For example, node P transfers data only to node U, and node U receives data only from node P. In this case, the edge corresponding to the data transfer from the node P to the node U is an independent edge. Also, at node Y,
Data is being transferred from the nodes S and T. At this time, 0-7 bits are transferred from the node S, and the node T
8 to 15 bits are transferred. 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, in addition to the above, 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, and node V to node W Are also independent edges.

【0083】「独立エッジ」と関連して、「フラグメン
トエッジ」および「等価エッジ」の概念を導入する。
「フラグメントエッジ」とは、転送元の資源または転送
先の資源がフラグメント等価クラスに属するエッジのこ
とを指す。例えば、図16に示す例では、ノードJおよ
びノードKがフラグメント等価クラスに属しているの
で、この場合、エッジCJ、エッジCK、エッジJO、
エッジKOは、この等価クラスに係わるフラグメントエ
ッジである。なお、各エッジは、(1) 転送元および転送
先の資源が共に「フラグメント等価」でない状態、(2)
転送元の資源のみが「フラグメント等価」である状態、
(3) 転送先の資源のみが「フラグメント等価」である状
態、(4) 転送元および転送先の資源が共に「フラグメン
ト等価」である状態に分類される。なお、この分類は、
エッジ毎に2ビットのフラグで表される。
In connection with “independent edge”, the concepts of “fragment edge” and “equivalent edge” are introduced.
“Fragment edge” refers to an edge in which the source resource or the destination resource belongs to the fragment equivalence class. For example, in the example shown in FIG. 16, since the nodes J and K belong to the fragment equivalence class, in this case, the edge CJ, the edge CK, the edge JO,
The edge KO is a fragment edge related to this equivalence class. Note that each edge is (1) the state where both the source and destination resources are not "fragment equivalent", and (2)
A state where only the transfer source resource is "fragment equivalent",
(3) The state where only the resource of the transfer destination is “fragment equivalent”, and (4) the state where both the resources of the transfer source and the transfer destination are “fragment equivalent”. This classification is
Each edge is represented by a 2-bit flag.

【0084】「等価エッジ」とは、転送元の資源または
転送先の資源がフラグメント等価クラスに属するノード
であるエッジの集合である。例えば、ノードJ、Kはフ
ラグメント等価クラスに属するので、この場合、エッジ
CJ、エッジCK、エッジJO、エッジKOが、この等
価クラスに係わる等価エッジである。なお、独立エッジ
は、等価エッジに属するエッジの集合から除去される。
An “equivalent edge” is a set of edges in which the source resource or the destination resource is a node belonging to the 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 the equivalent edges related to this equivalence class. Note that the independent edge is removed from the set of edges belonging to the equivalent edge.

【0085】上述のようにして等価関係を検出した後、
データ転送グラフから「資源競合」または「レジスタ漏
れ」に関わりのない部分を除去する。具体的には、ノー
ドAおよびノードFは「非フラグメント等価」である。
したがって、ノードAが除去される。また、エッジVW
が「独立エッジ」であり、ノードWおよびノードXは
「非フラグメント等価」である。したがって、ノード
W、Xが除去される。さらに、エッジPUおよびエッジ
UDがそれぞれ「独立エッジ」であり、ノードDおよび
ノードCは「非フラグメント等価」である。したがっ
て、ノードP、U、Dが除去される。
After detecting the equivalence relation as described above,
Eliminate parts not related to "resource conflict" or "register omission" from the data transfer graph. Specifically, nodes A and F are "non-fragment equivalent".
Therefore, node A is removed. Also, the edge VW
Are “independent edges”, and the nodes W and X are “non-fragment equivalent”. Therefore, nodes W and X are removed. Further, the edge PU and the edge UD are “independent edges”, respectively, and the node D and the node C are “non-fragment equivalent”. Therefore, nodes P, U, and D are removed.

【0086】また、ノードH、Iは、ノードBから見て
「フラグメント等価」である。従って、ノードBが除去
される。同様に、ノードCも除去される。また、ノード
S、Tは、ノードYから見て「フラグメント等価」であ
る。従って、ノードYが除去される。さらに、エッジN
SおよびエッジOTは共に独立エッジである。したがっ
て、ノードS、Tが除去される。
The nodes H and I are “fragment equivalent” as viewed from the node B. Therefore, node B is removed. Similarly, node C is also removed. The nodes S and T are “fragment equivalent” as viewed from the node Y. Therefore, node Y is removed. Furthermore, edge N
S and edge OT are both independent edges. Therefore, nodes S and T are eliminated.

【0087】上述の処理の結果、図16に示すデータ転
送グラフは、図18に示す状態に最適化される。上述の
処理は、具体的には、データ資源リストおよびデータ転
送エッジリスト等からエッジリストEfinal を生成する
処理に相当する。エッジリストEfinal は、最適化処理
の結果として得られるエッジのリストである。
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 process corresponds to a process of generating an edge list Efinal from a data resource list, a data transfer edge list, and the like. The edge list Efinal is a list of edges obtained as a result of the optimization processing.

【0088】最適化処理が終わると、図2のフローチャ
ートのステップS3の処理が実行される。この処理は、
図19に示すように、2つのステップからなる。ステッ
プS21では、最適化されたデータ転送グラフから隣接
ノードリストを作成する。続いて、ステップS22にお
いて、プロパティおよびそれに対応する検証スクリプト
を生成する。本実施形態では、「資源競合」または「レ
ジスタ漏れ」が発生し得るすべての条件を抽出する。具
体的には、隣接ノードリストを利用して各ノード毎の入
力エッジ数および出力エッジ数をカウントし、それに基
づいてプロパティを生成する。そして、抽出した「資源
競合」または「レジスタ漏れ」が発生し得る条件が、検
証ツール3が実行可能なスクリプトに変換される。
When the optimization process ends, the process of step S3 in the flowchart of FIG. 2 is executed. This process
As shown in FIG. 19, there are two steps. In step S21, an adjacent node list is created from the optimized data transfer graph. Subsequently, 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 omission” are extracted. Specifically, the number of input edges and the number of output edges for each node are counted using the adjacent node list, and a property is generated based on the count. Then, the conditions under which the extracted “resource conflict” or “register omission” may occur are converted into a script executable by the verification tool 3.

【0089】図18に示すグラフからプロパティを生成
する場合の処理を説明する。まず、最適化されたグラフ
から隣接ノードリストが作成される。隣接ノードリスト
は、データ転送グラフ上の各エッジ毎に、その転送元ノ
ードおよび転送先ノードを検出することにより得られ
る。図20に隣接ノードリストの例を示す。なお、各エ
ッジ毎の転送先ノードおよび転送元ノードに係わる情報
は、最適化処理により得られるエッジリストEfinal に
格納されている。
A process for generating a property from the graph shown in FIG. 18 will be described. First, a neighboring 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. The information on the destination node and the source node for each edge is stored in an edge list Efinal obtained by the optimization process.

【0090】続いて、隣接ノードリストを利用し、「資
源競合」または「レジスタ漏れ」が発生する可能性があ
るノードを検出する。「資源競合」を検出する場合に
は、複数の入力エッジが存在するノードを検出する。図
20に示す例では、ノードL、M、N、Oにおいてそれ
ぞれ2本に入力エッジが存在し、ノードVにおいて4本
のエッジが存在する。従って、これら5つのノードは、
それぞれ「資源競合」が発生する可能性があるものとみ
なされる。
Subsequently, a node which may cause "resource conflict" or "register omission" is detected by using the adjacent node list. When detecting "resource conflict", a node having a plurality of input edges is detected. In the example shown in FIG. 20, there are two input edges at nodes L, M, N, and O, respectively, and there are four edges at node V. Therefore, these five nodes
In each case, it is considered that “resource conflict” may occur.

【0091】一方、「レジスタ漏れ」を検出する場合に
は、1以上の入力エッジが存在し、且つ1以上の出力エ
ッジが存在するノードを検出する。図20に示す例で
は、ノードL、Mにおいて、2本の入力エッジおよび1
本の出力エッジが存在する。したがって、これらのノー
ドは、「レジスタ漏れ」が発生する可能性があるものと
みなされる。なお、クロックの歪みを考慮すると、「レ
ジスタ漏れ」の可能性があるノード(レジスタ)は、
「資源競合」が発生する可能性があるものとみなされ
る。
On the other hand, when "register omission" is detected, a node having one or more input edges and one or more output edges is detected. In the example shown in FIG. 20, at nodes L and M, two input edges and 1
There are book output edges. Therefore, these nodes are considered as having the potential for "register omission." In consideration of clock distortion, nodes (registers) that may have "register omission"
It is considered that "resource conflict" may occur.

【0092】図21は、「資源競合」のプロパティの例
である。これらのプロパティは、図18に示すデータ転
送グラフから生成されたものである。「資源競合」のプ
ロパティは、上述した5つのノードについてそれぞれ生
成される。このとき、各ノードにおいて存在する入力エ
ッジに付与されている条件が抽出され、それらの条件を
組み合わせることによりプロパティが生成される。
FIG. 21 shows an example of the property of “resource conflict”. These properties are generated from the data transfer graph shown in FIG. The property of “resource conflict” is generated for each of the five nodes described above. At this time, conditions assigned to input edges existing at each node are extracted, and properties are generated by combining those conditions.

【0093】例えば、ノードLについてのプロパティを
生成する場合、エッジELおよびエッジFLに付与され
ている条件がグラフから抽出される。すなわち、エッジ
ELおよびエッジFLからそれぞれ「制御信号CTRL4 」
および「制御信号CTRL3 」が抽出され、それらを組み合
わせることにより下記のプロパティが得られる。
For example, when generating a property for the node L, the conditions assigned to the edge EL and the edge FL are extracted from the graph. That is, the “control signal CTRL4” is output from the edge EL and the edge FL, respectively.
And "control signal CTRL3" are extracted, and the following properties are obtained by combining them.

【0094】AG(CTRL4.CTRL3) 検証ツール3は、このプロパティが入力されると、制御
信号CTRL4 および制御信号CTRL3 が同時に発生するクロ
ックサイクルが存在するか否か検証する。そして、それ
らが同時に発生するクロックサイクルが存在する場合
は、検証ツール3は、ノードLにおいて「資源競合」が
発生するものと判断する。即ち、レジスタCに対して同
時書込アクセスが発生するものとみなす。
AG (CTRL4.CTRL3) When this property is input, the verification tool 3 verifies whether or not there is a clock cycle in which the control signal CTRL4 and the control signal CTRL3 are simultaneously generated. If there is a clock cycle in which these occur simultaneously, the verification tool 3 determines that “resource conflict” occurs in the node L. That is, it is assumed that a simultaneous write access to the register C occurs.

【0095】なお、あるノードにおいて3本以上の入力
エッジが存在する場合には、それらの中から任意の2本
の入力エッジを抽出し、その2本の入力エッジに付与さ
れている条件がグラフから抽出される。この処理は、す
べての組合せについて行われる。例えば、ノードVは4
本の入力エッジが存在するので、この場合、6通りの組
合(エッジQVとエッジLV、QVとMV、QVとR
V、LVとMV、LVとRV、MVとRV)が得られ
る。そして、各組合せごとにプロパティが生成される。
When there are three or more input edges at a certain node, two arbitrary input edges are extracted from them, and the condition given to the two input edges is represented by a graph. Extracted from This process is performed for all combinations. For example, node V is 4
Since there are six input edges, in this case, six combinations (edge QV and edge LV, QV and MV, QV and R
V, LV and MV, LV and RV, MV and RV). Then, a property is generated for each combination.

【0096】図22は、「レジスタ漏れ」のプロパティ
の例である。これらのプロパティもまた、図18に示す
データ転送グラフから生成されたものである。なお、こ
の実施例で検出される「レジスタ漏れ」は、「書込み、
読出し、書込み」であるはずのシーケンスが「書込み、
書込み、読出し」というシーケンスで実行されてしまう
場合を想定する。
FIG. 22 shows an example of the property of “register omission”. These properties are also generated from the data transfer graph shown in FIG. Note that “register omission” detected in this embodiment is “write,
The sequence that should be "read, write" is "write,
It is assumed that the execution is performed in a sequence of “writing and reading”.

【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 C
TRL4))) と表される。
When focusing on the node L, the following four conditions may cause "register omission". That is, (1) When the data is transferred from the node E to the node L again 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) (3) When data is transferred from the node F to the node L again without the transfer from the node L to the node V after the data is transferred from the node F to the node L, When the data is transferred from the node E to the node L without being transferred from the node L to the node V after the data is transferred to (4) the data is transferred from the node E to the node L. Later, data is transferred from the node F to the node L without being transferred from the node L to the node V. Note that the properties are basically generated in the node M in the same manner. For example, in the case of (1), the property is EF (CTRL4 / \EX (E ((CTRL5UC)
TRL4))).

【0098】検証ツール3は、このプロパティが入力さ
れると、「制御信号CTRL4 が発生するクロックサイクル
の後に制御信号CTRL5 が発生することなく制御信号CTRL
4 が発生するクロックサイクル」を探す。そして、その
ような状況が存在するのであれば、検証ツール3は、ノ
ードLにおいて「レジスタ漏れ」が発生するものと判断
する。
When this property is input, the verification tool 3 reads “control signal CTRL5 without generating control signal CTRL5 after the clock cycle in which control signal CTRL4 is generated.
Look for "4 clock cycles occur." Then, if such a situation exists, the verification tool 3 determines that “register omission” occurs at the node L.

【0099】図23は、クロックの歪みを考慮した場合
におけるレジスタにおける「資源競合」のプロパティの
例である。これらのプロパティもまた、図18に示すデ
ータ転送グラフから生成されたものである。なお、この
場合の「資源競合」は、あるクロックサイクルにおい
て、書込アクセスおよび読出アクセスが発生する場合を
想定する。
FIG. 23 shows 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, the "resource conflict" assumes that a write access and a read access occur in a certain clock cycle.

【0100】ノードLに着目した場合、「資源競合」が
発生する可能性がある条件は、以下の2つである。すな
わち、(1) ノードEからノードLへデータ転送と、ノー
ドLからノードVへのデータ転送が動イルクロックサイ
クル内に実行される場合、および(2) ノードFからノー
ドLへデータ転送と、ノードLからノードVへのデータ
転送が動イルクロックサイクル内に実行される場合であ
る。なお、ノードMにおいても基本的に同様にプロパテ
ィが生成される。
When attention is paid to the node L, there are two conditions under which “resource conflict” may occur. That is, (1) data transfer from the node E to the node L and data transfer from the node L to the node V are performed within a moving clock cycle; and (2) data transfer from the node F to the node L. This is the case where data transfer from node L to node V is performed within the active clock cycle. Note that properties are basically generated in the node M in the same manner.

【0101】例えば、(1) の場合のプロパティは、 AG(CTRL4.CTRL5) として表される。検証ツール3は、このプロパティが入
力されると、制御信号CTRL4 および制御信号CTRL5 が同
時に発生するクロックサイクルを探す。そして、そのよ
うなクロックサイクルが存在するのであれば、検証ツー
ル3は、ノードLにおいて「資源競合」が発生するもの
と判断する。第2の実施例 図24〜図26は、プロパティ生成ツール1に入力され
るハードウェア仕様2の一例である。この実施例でも、
ハードウェア記述言語として、Verilog が使用されてい
る。
For example, the property in the case of (1) is represented as AG (CTRL4.CTRL5). When this property is input, the verification tool 3 searches for a clock cycle in which the control signal CTRL4 and the control signal CTRL5 occur simultaneously. If such a clock cycle exists, the verification tool 3 determines that “resource conflict” occurs in the node L. Second Embodiment FIGS. 24 to 26 show an example of hardware specifications 2 input to the property generation tool 1. In this example,
Verilog is used as a hardware description language.

【0102】セクション1においては、入力される制御
信号、入力データおよび出力データが定義されている。
また、セクション1の記述によれば、このモジュールに
は5つのレジスタ(BASES, ENDS, MODE, REG-ADR, REGA
-OUT)が設けられている。セクション2には、制御信号
CNT-REG-ACC および制御信号WRITE が与えられたときの
データ転送が記述されている。これらのデータ転送は、
5ビットの制御信号REG-ADR の値により制御される。ま
た、セクション3には、各種制御信号が与えられたとき
のレジスタREG-ADR または出力REGA-OUTへのデータ転送
が記述されている。
In section 1, input control signals, input data and output data are defined.
According to the description in section 1, this module has five registers (BASES, ENDS, MODE, REG-ADR, REGA
-OUT) is provided. Section 2 contains control signals
The data transfer when the CNT-REG-ACC and the control signal WRITE are given is described. These data transfers are:
It is controlled by the value of the 5-bit control signal REG-ADR. Section 3 describes data transfer to the register REG-ADR or the output REGA-OUT when various control signals are given.

【0103】図27は、図24〜図26に示したハード
ウェア仕様から生成されたデータ転送グラフである。ハ
ードウェア仕様からデータ転送グラフを生成する方法
は、第1の実施例の場合と同じなので、ここではその説
明を省略する。
FIG. 27 is a data transfer graph generated from the hardware specifications shown in FIGS. The method of generating the data transfer graph from the hardware specifications is the same as that of the first embodiment, and the description is omitted here.

【0104】図27に示すグラフにおいて、「G1」〜
「G11」は、データ転送のトリガとしての条件であ
る。これらの条件を図28に示す。例えば、ノードAか
らノードDへのデータ転送は、セクション2の記述によ
れば、制御信号CNT-REG-ACC および制御信号WRITE が与
えられ、且つレジスタREG-ADR の第4ビットが"1" であ
り、且つレジスタREG-ADR の第3〜0ビットが"0001"で
あったクロックサイクルにおいて実行される。図28に
示す「G1」は、この条件を記述している。
In the graph shown in FIG.
“G11” is a condition as a trigger for data transfer. FIG. 28 shows these conditions. For example, in the data transfer from the node A to the node D, according to the description in the section 2, the control signal CNT-REG-ACC and the control signal WRITE are given, and the fourth bit of the register REG-ADR is "1". It is executed in the clock cycle in which the third to zero bits of the register REG-ADR are "0001". “G1” shown in FIG. 28 describes this condition.

【0105】なお、各条件に含まれる要素の集合を「サ
ポートセット」と呼ぶ。たとえば、条件G1のサポート
セットは、7つの要素(CNT-REG-ACC, WRITE, REG-ADR
(4),REG-ADR(3), REG-ADR(2), REG-ADR(1), REG-ADR
(0))を含んでいる。
A set of elements included in each condition is called a “support set”. For example, the support set of condition G1 has seven elements (CNT-REG-ACC, WRITE, REG-ADR
(4), REG-ADR (3), REG-ADR (2), REG-ADR (1), REG-ADR
(0)).

【0106】このデータ転送グラフを最適化する際に
は、「レジスタファイル」および「名称等価」の概念が
利用される。「レジスタファイル」を検出する場合、ま
ず、転送先がレジスタであるエッジまたは転送元がレジ
スタであるエッジを抽出する。そして、それらのエッジ
に付与されているサポートセットを比較し、それらが互
いに同じであるエッジ同士をグループ化する。この場
合、グループ化された複数のエッジにそれぞれ接続され
るレジスタを「レジスタファイル」とみなす。
In optimizing the data transfer graph, the concepts of “register file” and “name equivalence” are used. When detecting the “register file”, 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 edges having the same edge are grouped. In this case, registers respectively connected to the plurality of grouped edges are regarded as a “register file”.

【0107】図29を参照しながら具体例を示す。ここ
では、転送先ノードがレジスタであるエッジADに注目
する。エッジADには、条件G1が付与されている。こ
の場合、レジスタファイルを検出する場合には、まず、
レジスタを表すノードへのファンインエッジの中から、
G1のサポートセットと同じサポートセットを有するエ
ッジを抽出する。条件G1のサポートセットは、図28
に示すように、条件G2〜G6とそれぞれ同じである。
従って、レジスタを表すノードへのファンインエッジエ
ッジのうち、条件G2〜G6が設定されているエッジが
抽出される。これにより、条件G1〜G6が設定されて
いるエッジがグループ化される。すなわち、エッジA
D、AE、AFがグループ化される。したがって、これ
らのエッジの転送先である3つのノード(D、E、F)
は、レジスタファイルに属するものとみなされる。
A specific example will be described with reference to FIG. Here, attention is paid to the edge AD whose transfer destination node is a register. The edge AD is given a condition G1. In this case, when detecting the register file, first,
From the fan-in edge to the node representing the register,
An edge having the same support set as the support set of G1 is extracted. The support set of the condition G1 is shown in FIG.
Are the same as the conditions G2 to G6, respectively.
Therefore, of the fan-in edge to the node representing the register, the edge for which the conditions G2 to G6 are set is extracted. Thereby, edges for which the conditions G1 to G6 are set are grouped. That is, edge A
D, AE, and AF are grouped. Therefore, the three nodes (D, E, F) to which these edges are transferred
Are considered to belong to the register file.

【0108】なお、上記の例では、レジスタへのファン
インエッジに基づいてレジスタファイルを検出したが、
図29に示すように、レジスタからのファンアウトエッ
ジを利用しても同様の関係が得られる。
In the above example, the register file is detected based on the fan-in edge to the register.
As shown in FIG. 29, the same relationship can be obtained by using the fan-out edge from the register.

【0109】「名称等価」を検出する場合は、同一モジ
ュール内のノードの中で同一の名称が付与されているノ
ード(特に、レジスタおよび出力ポート)を抽出し、そ
れらを等価な資源とみなす。図27に示す例では、レジ
スタに対応するノードJおよび出力ポートに対応するノ
ードIの名称が共に"REGA-OUT なので、これらのノード
が等価であるとみなされる。
When detecting "name equivalence", nodes (particularly, registers and output ports) to which the same name is given are extracted from the nodes in the same module, and 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】上述のようにして等価関係を検出した後、
データ転送グラフから「資源競合」または「レジスタ漏
れ」に関わりのない部分を除去する。すなわち、ノード
D、E、Fは、「レジスタファイル」なので、これらの
ノードは1つのノード(ノードD’)に置きかえられ
る。また、ノードJおよびノードIは「名称等価」であ
る。したがって、ノードIが除去される。上述の最適化
処理の結果、図27に示すデータ転送グラフは、図30
に示す状態に最適化される。
After detecting the equivalence relation as described above,
Eliminate parts not related to "resource conflict" or "register omission" 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 ′). Further, the nodes J and I are “name equivalent”. Therefore, node I is eliminated. As a result of the above-described optimization processing, the data transfer graph shown in FIG.
Optimized to the state shown in

【0111】データ転送グラフが最適化されると、それ
に伴って各エッジに付与されている条件(サポートセッ
ト)も変化する。具体的には、図27に示されていた条
件G1〜G6が条件G1’に集約され、一方、条件G7
およびG8が条件G2’に集約される。図31に条件G
1’および条件G2’のサポートセットを示す。
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 consolidated into a condition G1 ′, while the conditions G7
And G8 are collected into a condition G2 '. FIG.
The support set of 1 ′ and the condition G2 ′ is shown.

【0112】第2の実施例のハードウェアでは、ノード
Jにおいて「資源競合」が発生する可能性がある。この
場合、「資源競合」のプロパティは、4つの条件(G
2’、G9、G10、G8)の中の任意の2つが同時に
発生するクロックサイクルを調べるためのスクリプトで
ある。また、このハードウェアでは、ノードD’におい
て「レジスタ漏れ」が発生する可能性がある。この場
合、「レジスタ漏れ」のプロパティは、条件G1’およ
び条件G2’が所定の順番で発生することを調べるため
のスクリプトである。
In the hardware of the second embodiment, there is a possibility that “resource conflict” occurs in the node J. In this case, the property of “resource conflict” has four conditions (G
2 ′, G9, G10, G8) is a script for checking clock cycles occurring simultaneously. Also, with this hardware, there is a possibility that “register omission” may occur at the node D ′. In this case, the property of “register omission” is a script for checking that the conditions G1 ′ and G2 ′ occur in a predetermined order.

【0113】次に、上述したプロパティ生成ツール1の
動作アルゴリズムをフローチャートを参照しながら説明
する。なお、以下の説明では、下記の定義を用いる。 L モジュールの階層レベル M モジュールのセット Si 入力ポートのセット So 出力ポートのセット Sio 入出力ポートのセット Sw バスワイヤのセット Sr レジスタのセット Sdt データ要素(代入式等の演算の結果を生成する資
源) Sdc データ定数(定数を生成する資源) Edt データ転送エッジ N ノードのセット H データ資源の等価クラスのセット 図32〜図34は、データ転送グラフを生成する方法を
説明するフローチャートである。この処理は、ハードウ
ェア記述言語で記述されたハードウェア仕様2が入力さ
れたときに実行される。
Next, the operation algorithm of the above-described property generation tool 1 will be described with reference to flowcharts. In the following description, the following definitions are used. L Module Hierarchy Level M Module Set Si Input Port Set So Output Port Set Sio Input / Output Port Set Sw Bus Wire Set Sr Register Set Sdt Data Element (Resource that Generates Result of Operation such as Substitution Expression) Sdc Data Constant (Resource for Generating Constant) Edt Data Transfer Edge N Node Set H Data Resource Equivalent Class Set FIGS. 32 to 34 are flowcharts illustrating a method for generating a data transfer graph. This process is executed when the hardware specification 2 described in the hardware description language is input.

【0114】ステップS31では、プロパティを作成す
るために利用するメモリ領域を初期化する。このとき、
モジュール階層Lとして「0」が設定される。また、最
小ビット幅パラメータとして「Wb 」が設定される。
In step S31, a memory area used to create a property is initialized. At this time,
“0” is set as the module hierarchy L. "Wb" is set as the minimum bit width parameter.

【0115】ステップS32では、モジュールリストM
にルートモジュールを登録する。モジュールリストMに
は、ハードウェア仕様2に設けられているすべてのモジ
ュールが登録されている。ステップS33は、モジュー
ルリストMに登録されている各モジュールについてステ
ップS34以降の処理を実行するための判断処理であ
る。
In step S32, the module list M
Register the root module in. All modules provided in the hardware specification 2 are registered in the module list M. Step S33 is a determination process for executing the processes from step S34 on for each module registered in the module list M.

【0116】ステップS34では、モジュールリストM
からモジュールMi を取り出す。ステップS35は、モ
ジュールMi についてのインタフェース定義に記述され
ている各ポートについてステップS36〜S41を実行
するための処理である。ステップS36では、インタフ
ェース定義からポートPを抽出する。そして、そのポー
トPのビット幅が最小ビット幅パラメータWb 以上か否
か調べる。ポートPのビット幅が最小ビット幅パラメー
タWb 以上であればステップS37へ進み、そうでない
場合は、ステップS35へ戻って次のポートを抽出す
る。
In step S34, the module list M
From the module Mi. 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 determined 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. If not, the process returns to step S35 to extract the next port.

【0117】ステップS37では、ポートPが入力ポー
トであるか否かを調べる。ポートPが入力ポートであっ
た場合には、ステップS40において、ポートPを入力
ポートリストSi に登録する。また、ステップS38で
は、ポートPが出力ポートであるか否かを調べる。ポー
トPが出力ポートであった場合には、ステップS41に
おいて、ポートPを出力ポートリストSo に登録する。
ポートPが入力ポートまたは出力ポートのいずれでもな
かった場合には、ステップS39において、ポートPを
入出力ポートリストSioに登録する。
In the step S37, it is checked whether or not the 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 the 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 the input port nor the output port, the port P is registered in the input / output port list Sio in step S39.

【0118】上記処理により、ハードウェア仕様2にお
いて定義されている各ポートが、入力ポートリストSi
、出力ポートリストSo 、または入出力ポートリスト
Sioに登録される。
By the above processing, each port defined in the hardware specification 2 is stored in the input port list Si.
, Output port list So, or input / output port list Sio.

【0119】ステップS51は、モジュールMi のモジ
ュール宣言に記述されている各変数Vについてステップ
S52〜S55を実行するための処理である。ステップ
S52では、変数Vのビット幅が最小ビット幅パラメー
タWb 以上であるか否かを調べる。変数Vのビット幅が
最小ビット幅パラメータWb 以上であればステップS5
3へ進み、そうでない場合はステップS51に戻って次
の変数を抽出する。
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 determined 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 greater than the minimum bit width parameter Wb, step S5
Go to step 3, otherwise return to step S51 and extract the next variable.

【0120】ステップS53では、変数Vがレジスタ変
数であるか否かを調べる。変数Vがレジスタ変数であれ
ば、ステップS55においてその変数Vをレジスタ変数
リストSr に登録し、そうでない場合は、ステップS5
4においてその変数Vをバスワイヤ変数リストSw に登
録する。
In step S53, it is determined 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, in step S5
In step 4, the variable V is registered in the bus wire variable list Sw.

【0121】上記処理により、ハードウェア仕様2にお
いて定義されている各変数が、レジスタ変数リストSr
またはバスワイヤ変数リストSw に登録される。ステッ
プS56は、モジュールMi の各モジュールインスタン
シエイションについてステップS57およびS58を実
行するためにの処理である。ステップS57では、モジ
ュールインスタンシエイションm-j をモジュールリスト
Mに登録する。ステップS58では、モジュールインス
タンシエイションm-j のポートをモジュールMi 内の先
に識別されている資源に関連づける。
By the above processing, each variable defined in the hardware specification 2 is stored in the register variable list Sr.
Alternatively, it is registered in the bus wire variable list Sw. Step S56 is a process for executing steps S57 and S58 for each module instantiation of the module Mi. In a step S57, the module instantiation mj is registered in the module list M. In step S58, the port of module instantiation mj is associated with the previously identified resource in module Mi.

【0122】ステップS61は、モジュールMi 内の各
同時処理CPについてステップS62〜S72を実行す
るための処理である。ステップS62では、同時処理C
Pがcontinuous assignment タイプであるか否かを調べ
る。ここで、同時処理CPがcontinuous assignment タ
イプであれば、ステップS71において、その処理CP
のデータ転送処理タイプとして「C(Concurrent)」を
設定する。そして、ステップS72において、データ転
送エッジを生成する。
Step S61 is a process for executing steps S62 to S72 for each simultaneous processing CP in the module Mi. In step S62, the simultaneous processing C
Check whether P is a continuous assignment type. Here, if the simultaneous processing CP is a continuous assignment type, in step S71, the processing CP
Is set to "C (Concurrent)" as the data transfer processing type. Then, in step S72, a data transfer edge is generated.

【0123】ステップS63では、同時処理CPがguar
ded continuous assignment タイプであるか否かを調べ
る。ステップS64では、同時処理CPが、combinatio
nalalways blockタイプであるか否かを調べる。そし
て、ステップS63またはS64の判断結果が「Ye
s」ならば、ステップS70において、その処理CPの
データ転送処理タイプとして「C」を設定する。一方、
ステップS63およびS64の判断結果が共に「No」
ならば、ステップS65において、その処理CPのデー
タ転送処理タイプとして「S(Sequential)」を設定す
る。
In step S63, the simultaneous processing CP is guar
Check if it is a ded continuous assignment type. In step S64, the simultaneous processing CP sets the combination
Check if it is a nalalways block type. Then, the determination result of step S63 or S64 is "Ye
If "s", in step S70, "C" is set as the data transfer processing type of the processing CP. on the other hand,
The determination results in steps S63 and S64 are both “No”
If so, in step S65, "S (Sequential)" is set as the data transfer processing type of the processing CP.

【0124】ステップS66では、すべてのガード条件
を認識する。ここで、各ガード条件は、それぞれ異なる
データ転送を制御する。ステップS67では、各ガード
条件毎に、ガード表現およびガード信号を格納する。こ
のとき、このガード条件により制御されるデータ転送の
転送元および転送先を認識する。そして、ステップS6
8において、データ転送エッジを生成する。ステップS
69は、各データ転送についてステップS66〜S68
を実行するための処理である。
In step S66, all guard conditions are recognized. Here, each guard condition controls a 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 the transfer destination of the data transfer controlled by the guard condition are recognized. Then, step S6
At 8, a data transfer edge is generated. Step S
69 indicates steps S66 to S68 for each data transfer.
Is a process for executing.

【0125】上記処理により、ハードウェア仕様2にお
いて定義されている各データ転送に対応するデータ転送
エッジが生成される。図35は、ステップS68または
S72のデータ転送エッジを生成する処理の詳細フロー
チャートである。
By the above processing, a data transfer edge corresponding to each data transfer defined in the hardware specification 2 is generated. FIG. 35 is a detailed flowchart of the process of generating a data transfer edge in step S68 or S72.

【0126】ステップS81では、データ転送の転送元
が代入式であるか否かを調べる。転送元が代入式である
場合は、ステップS82において、その代入式に対応す
る擬似資源Sdtを生成する。ステップS83では、デー
タ転送の転送元が定数であるか否かを調べる。転送元が
定数である場合は、ステップS84において、その定数
に対応する擬似資源Sdcを生成する。
In step S81, it is checked whether or not the data transfer source is an assignment expression. If 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】データ転送の転送元が、代入式または定数
のいずれでもない場合は、ステップS85において、転
送元資源Sourceを認識する。ステップS86では、デー
タ転送の転送元が、入力ポートリストSi 、入出力ポー
トリストSio、バスワイヤ変数リストSw またはレジス
タ変数リストSr に属しているか否かを調べる。
If the transfer source of the data transfer is neither an assignment expression nor a constant, the source resource Source is recognized in step S85. In step S86, it is checked whether or not the transfer source of the data transfer 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】擬似資源Sdtまたは擬似資源Sdcが生成さ
れた場合、あるいはステップS86の判断結果が「Ye
s」であった場合には、ステップS87において、転送
先資源Sinkを認識する。ステップS88では、データ転
送の転送先が、出力ポートリストSo 、入出力ポートリ
ストSio、バスワイヤ変数リストSw またはレジスタ変
数リストSr に属しているか否かを調べる。
When the pseudo resource Sdt or the pseudo resource Sdc has been generated, or when the judgment result of step S86 is “Ye
s ", the transfer destination resource Sink is recognized in step S87. In step S88, it is checked whether or not the transfer destination of the data transfer 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】ステップS88の判断結果が「Yes」で
あった場合には、ステップS89において、データ転送
の転送元および転送先に基づいてエッジEを生成する。
ステップS90では、データ転送エッジリストEdtに生
成したエッジEを追加する。ステップS91では、エッ
ジEをデータ転送の転送元及び転送先に関連づける。な
お、この実施例では、データ転送の転送元または転送先
がポート、レジスタ、バスワイヤ、または疑似資源のい
ずれでもなかった場合は、エッジEは生成されない。
If the decision result in the step S88 is "Yes", an edge E is generated in a step S89 based on the transfer source and the transfer destination of the data transfer.
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 transfer source and the transfer destination of the data transfer. In this embodiment, if the transfer source or the transfer destination of the data transfer is not any of the port, the register, the bus wire, and the pseudo resource, the edge E is not generated.

【0130】上記処理により、ハードウェア仕様2にお
いて定義されている各データ転送に対して、そのデータ
転送の転送元および転送先が定義されたデータ転送エッ
ジが生成される。
By the above processing, for each data transfer defined in the hardware specification 2, a data transfer edge in which the transfer source and the transfer destination of the data transfer are defined is generated.

【0131】図36および図37は、「非フラグメント
等価」を検出する処理のフローチャートである。このフ
ローチャートは、図4に示したフローチャートのステッ
プS11の実施例である。なお、ここでは、入出力ポー
トについて説明するが、入力ポートおよび出力ポートに
ついても同様の処理が実行される。
FIG. 36 and FIG. 37 are flowcharts of a process for detecting “non-fragment equivalent”. This flowchart is an example of step S11 of the flowchart shown in FIG. Here, the input / output ports will be described, but the same processing is executed for the input ports and the output ports.

【0132】ステップS101では、入出力ポートリス
トSioをスキャンする。ステップS102は、入出力ポ
ートリストSioに属する各要素(入出力ポート)につい
てステップS103以降の処理を実行するための処理で
ある。ステップS103では入出力ポートリストSioか
ら要素Sio-kを抽出する。
In step S101, the input / output port list Sio is scanned. Step S102 is processing for executing the processing of step S103 and thereafter 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】ステップS104では、抽出した要素Sio
-kを待ち行列Qに加える。ステップS105では、待ち
行列Qが空か否かを調べる。待ち行列Qが空のときはス
テップS102に戻り、待ち行列Qに1以上の要素が保
持されている場合は、ステップS106において、待ち
行列Qから要素qを抽出する。
In step S104, the extracted element Sio
Add -k to queue Q. In step S105, it is checked whether the queue Q is empty. If the queue Q is empty, the process returns to step S102, and if one or more elements are held in the queue Q, the element q is extracted from the queue Q in step S106.

【0134】ステップS107では、要素qが「子供資
源」を有するか否かを調べる。ここで、要素qの「子供
資源」とは、例えば、要素qが設けられているモジュー
ルの階層の下位の階層のモジュール内に設けられている
資源であって、要素qに対応付けられているものをい
う。対応関係は、ハードウェア仕様などに記述されてい
る。
In the step S107, it is checked whether or not the element q has a “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 in which the element q is provided, and is associated with the element q. A thing. The correspondence is described in hardware specifications or the like.

【0135】要素qが「子供資源」を有していなけれ
ば、ステップS114において待ち行列Qから要素qを
削除した後にステップS102に戻り、要素qが「子供
資源」を有している場合にはステップS108へ進む。
ステップS108では、要素Sio-kに対応する非フラグ
メント等価クラスHekを生成する。そして、ステップS
109において、Eqvl フラグをリセットする。
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”, Proceed to step S108.
In step S108, a non-fragment equivalent class Hek corresponding to the element Sio-k is generated. And step S
At 109, the Eqvl flag is reset.

【0136】ステップS110は、要素qが有する各
「子供資源」についてステップS121〜S126を実
行するための処理である。ステップS121では、要素
qから「子供資源qc」を抽出する。ステップS122で
は、要素qのビット幅と「子供資源qc」のビット幅が互
いに同じであるか否かを調べる。これらのビット幅が互
いに異なる場合は、ステップS110に戻って次の「子
供資源」を抽出する。上記ビット幅が互いに同じ場合、
ステップS123においてEqvl フラグに「1」を設定
する。ステップS124では、「子供資源qc」を待ち行
列Qの要素として追加する。ステップS125では、
「子供資源qc」を非フラグメント等価クラスHekの要素
として追加する。ステップS126では、非フラグメン
ト等価クラスHekと「子供資源qc」とを関連づける。
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 is the same as the bit width of the “child resource qc”. If the bit widths are different from each other, the process returns to step S110 to extract the next “child resource”. If the above bit widths are the same,
In step S123, "1" is set to the Eqvl flag. 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】全ての「子供資源」についてステップS1
21〜S126の処理が実行されると、ステップS11
1において、Eqvl フラグが「1」か否かを調べる。E
qvlフラグが「1」であれば、ステップS112におい
て要素qを非フラグメント等価クラスHekに追加し、さ
らに、ステップS113において非フラグメント等価ク
ラスHekと要素qとを関連づける。なお、Eqvl フラグ
が「1」でなかった場合には、ステップS112および
S113の処理はスキップされる。
Step S1 for all “child resources”
When the processes of S21 to S126 are performed, step S11 is performed.
At 1, it is checked whether the Eqvl flag is "1". E
If the qvl 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 processing of steps S112 and S113 is skipped.

【0138】このように、あるポートのビット幅とその
ポートの「子供資源」のビット幅が互いに同じである場
合、そのポートと「子供資源」は、「非フラグメント等
価」とみなされる。
As described above, when the bit width of a certain port is the same as the bit width of the “child resource” of the port, the port and the “child resource” are regarded as “non-fragment equivalent”.

【0139】図38〜図41は、「フラグメント等価」
を検出する処理のフローチャートである。このフローチ
ャートは、図4に示したフローチャートのステップS1
2の実施例である。なお、ここでは、入出力ポートにつ
いて説明するが、入力ポートおよび出力ポートについて
も同様の処理が実行される。
FIGS. 38 to 41 show “fragment equivalent”.
6 is a flowchart of a process for detecting the. This flowchart corresponds to step S1 of the flowchart shown in FIG.
2 is an embodiment of FIG. Here, the input / output ports will be described, but the same processing is executed for the input ports and the output ports.

【0140】ステップS131では、入出力ポートリス
トSioをスキャンする。ステップS132は、入出力ポ
ートリストSioに属する各要素(入出力ポート)につい
てステップS133以降を実行するための処理である。
ステップS133では、入出力ポートリストSioから要
素Sio-lを抽出する。
In the 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-1 is extracted from the input / output port list Sio.

【0141】ステップS134では、要素Sio-lがいず
れかの等価クラスHekに属しているか否かを調べる。要
素Sio-lがいずれかの等価クラスHekに属している場合
は、ステップS135に進み、そうでない場合には、ス
テップS141〜S146の処理を実行した後にステッ
プS132に戻る。
In step S134, it is determined whether or not the element Sio-1 belongs to any of the equivalence classes Hek. If the element Sio-l belongs to one of the equivalence classes Hek, the process proceeds to step S135. Otherwise, the process returns to step S132 after executing the processes of steps S141 to S146.

【0142】ステップS141では、要素Sio-lが「子
供資源」を有するか否かを調べる。要素Sio-lが「子供
資源」を有する場合は、ステップS142以降の処理を
実行し、そうでない場合は、ステップS132に戻る。
ステップS142では、要素Sio-lに対応するフラグメ
ント等価クラスOIFHelを生成する。ステップS14
3では、要素Sio-lをルート(出発点)として、要素S
io-lのビット幅よりも小さいビット幅を持つ「子供資
源」を認識する。ステップS144では、各「子供資
源」のためのフラグメント等価フィールドに「フラグメ
ント等価クラスOIFHel」を設定する。ステップS1
45では、各「子供資源」のための非フラグメント等価
フィールドに「非フラグメント等価クラスHek」を設定
する。ステップS146では、各「子供資源」をフラグ
メント等価クラスOIFHelの要素として追加する。
In the step S141, it is checked whether or not the element Sio-1 has a "child resource". If the element Sio-l has "child resource", the processing after step S142 is executed; otherwise, the processing returns to step S132.
In step S142, a fragment equivalent class OIFHel corresponding to the element Sio-1 is generated. Step S14
In element 3, the element Sio-l is set as the root (starting point)
Recognize "child resources" that have a bit width smaller than the bit width of io-l. In step S144, “fragment equivalence class OIFHel” is set in the fragment equivalence field for each “child resource”. Step S1
At 45, "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】要素Sio-lがいずれかの等価クラスHekに
属している場合は、ステップS135において、フラグ
メントchild-found フラグをリセットする。ステップS
136では、要素Sio-lをルートとして、要素Sio-lの
ビット幅よりも小さいビット幅を持った「子供資源」ま
たは要素Sio-lのビット幅よりも大きいビット幅を持っ
た「子供資源」を探す。このとき、抽出された「フラグ
メント子供」の集合を"F-child" とする。一方、より大
きなビット幅を持った「非フラグメント子供資源」の集
合を"UG-child"とする。
If the element Sio-1 belongs to any of the equivalence classes Hek, the fragment child-found flag is reset in step S135. Step S
At 136, with the element Sio-l as the root, a "child resource" having a bit width smaller than the bit width of the element Sio-l or a "child resource" having a bit width larger than the bit width of the element Sio-l Search for At this time, a set of extracted “fragment children” is set to “F-child”. On the other hand, a set of “non-fragment child resources” having a larger bit width is referred to as “UG-child”.

【0144】ステップS137では、集合F-child の要
素が存在するか否かを調べる。集合F-child の要素が存
在するのであれば、ステップS138においてフラグメ
ントchild-found フラグをセットする。ステップS13
9では、要素Sio-lに対応するフラグメント等価クラス
OIFHelを生成する。
In the step S137, it is checked whether or not the element of the set F-child exists. If there is an element of the set F-child, a fragment child-found flag is set in step S138. Step S13
In step 9, the fragment equivalent class OIFHel corresponding to the element Sio-1 is generated.

【0145】ステップS151では、集合F-child をス
キャンする。ステップS152は、集合F-child に属す
る各要素についてステップS153〜S156を実行す
るための処理である。ステップS153では、集合F-ch
ild から要素Cd-i を抽出する。ステップS154で
は、要素Cd-i の「親資源P−Cd-i 」を抽出する。ス
テップS155では、要素Cd-i および親資源P−Cd-
i のためのフラグメント等価フィールドに「フラグメン
ト等価クラスOIFHel」を設定する。ステップS15
6では、要素Cd-i をフラグメント等価クラスOIFH
elに加える。
In step S151, the set F-child is scanned. Step S152 is processing for executing steps S153 to S156 for each element belonging to the set F-child. In step S153, the set F-ch
Extract element Cd-i from ild. In step S154, "parent resource P-Cd-i" of element Cd-i is extracted. In step S155, the element Cd-i and the parent resource P-Cd-
Set "fragment equivalence class OIFHel" in the fragment equivalence field for i. Step S15
In element 6, element Cd-i is assigned to fragment equivalent class OIFH.
Add to el.

【0146】集合F-child の要素が存在しない場合は、
ステップS161〜S172の処理が実行される。ステ
ップS161〜S165の処理は、基本的に、ステップ
S137、およびステップS151〜S154の処理と
同じである。ただし、ステップS161〜S165で
は、集合UG-childから要素Cd-i が抽出され、さらに、
その「親資源Prnt-i 」が抽出される。
If the elements of the set F-child do not exist,
Steps S161 to S172 are performed. 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 extracted.

【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を削除する。
In the step S166, a fragment equivalent class OIFHel corresponding to the element Cd-i is generated. Step S167 is processing 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 equivalent class OIFHel” is set in the fragment equivalent field for each element of the non-fragment equivalent class Hek. Then, in step S172, the non-fragment equivalence class Hek is deleted from the non-fragment equivalence field for each element.

【0148】図42は、「名称等価」を検出する処理の
フローチャートである。このフローチャートは、図4に
示したフローチャートのステップS13の実施例であ
る。ステップS181では、レジスタリストSr をスキ
ャンする。ステップS182は、レジスタリストSr の
各要素についてステップS183〜S189の処理を実
行するための処理である。ステップS183では、レジ
スタリストSr から要素(レジスタ)Sr-l を抽出す
る。
FIG. 42 is a flowchart of a process 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, an element (register) Sr-1 is extracted from the register list Sr.

【0149】ステップS184〜S186では、抽出し
た要素Sr-l の名称と、出力ポートリストSo の各要素
の名称とを比較する。そして、出力ポートリストSo の
中に要素Sr-l の名称と同じ名称を持つ要素So-j が存
在している場合には、ステップS187において、その
要素So-j が属する非フラグメント等価クラスHekを探
す。ステップS188では、要素Sr-l のための非フラ
グメント等価クラスフィールドに「非フラグメント等価
クラスHek」を設定する。そして、ステップS189に
おいて、要素Sr-l を非フラグメント等価クラスHekの
要素として追加する。
In steps S184 to S186, the name of the extracted element Sr-1 is compared with the name of each element of the output port list So. If an element So-j having the same name as the element Sr-l exists in the output port list So, in step S187, the non-fragment equivalence class Hek to which the element So-j belongs is determined. look for. In step S188, "non-fragment equivalent class Hek" is set in the non-fragment equivalent class field for element Sr-1. Then, in step S189, the element Sr-1 is added as an element of the non-fragment equivalence class Hek.

【0150】上記処理により、あるレジスタとそのレジ
スタと同じ名称が付与されている出力ポートとが、「名
称等価」とみなされる。図43は、「フラグメントエッ
ジ」を検出する処理のフローチャートである。この処理
では、各データ転送エッジが「フラグメントエッジ」ま
たは「非フラグメントエッジ」のいずれに属するのかを
判断するために有用な情報を生成する。なお、このフロ
ーチャートは、図4に示したフローチャートのステップ
S14の実施例である。
By the above processing, a register and an output port having the same name as the 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 a “fragment edge” or a “non-fragment edge” is generated. This flowchart is an example of step S14 of the flowchart shown in FIG.

【0151】ステップS191では、データ転送エッジ
リストEdtをスキャンする。ステップS192は、デー
タ転送エッジリストEdtの各要素についてステップS1
93〜S200を実行するための処理である。ステップ
S193では、データ転送エッジリストEdtから要素
(エッジ)Ej を抽出する。このとき、エッジEj に対
応するデータ転送の転送元および転送先を認識する。
In the step S191, the data transfer edge list Edt is scanned. Step S192 is a step S1 for each element of the data transfer edge list Edt.
This is a process for executing steps S93 to S200. In step S193, the element (edge) Ej is extracted from the data transfer edge list Edt. At this time, the transfer source and the transfer destination of the data transfer corresponding to the edge Ej are recognized.

【0152】ステップS194では、エッジEj に対応
するデータ転送の転送先が「フラグメント等価」である
か否かを調べる。また、その転送先が「フラグメント等
価」であれば、ステップS195において、エッジEj
に対応するデータ転送の転送元が「フラグメント等価」
であるか否かを調べる。そして、その転送先および転送
元が共に「フラグメント等価」であった場合には、ステ
ップS196において両フラグメントフラグをセット
し、転送先のみが「フラグメント等価」であった場合に
は、ステップS197において転送先フラグメントフラ
グをセットする。一方、転送先が「フラグメント等価」
でなかった場合には、ステップS198において、エッ
ジEj に対応するデータ転送の転送元が「フラグメント
等価」であるか否かを調べる。そして、転送元のみが
「フラグメント等価」であった場合には、ステップS1
99において、転送元フラグメントフラグをセットし、
転送先および転送元がいずれも「フラグメント等価」で
なかった場合には、ステップS200において非フラグ
メントフラグをセットする。
In step S194, it is checked whether the transfer destination of the data transfer corresponding to the edge Ej is "fragment equivalent". If the transfer destination is “fragment equivalent”, the edge Ej is determined in step S195.
The transfer source of the data transfer corresponding to "Fragment equivalent"
Check if it is. If both the transfer destination and the transfer source are “fragment equivalent”, both fragment flags are set in step S196. If only the transfer destination is “fragment equivalent”, the transfer is performed in step S197. Set the destination fragment flag. On the other hand, the transfer destination is "fragment equivalent"
If not, it is checked in step S198 whether the transfer source of the data transfer corresponding to the edge Ej is "fragment equivalent". Then, if only the transfer source is “fragment equivalent”, step S1
At 99, set the source fragment flag,
If neither the transfer destination nor the transfer source is “fragment equivalent”, a non-fragment flag is set in step S200.

【0153】上記処理により、各データ転送に対応する
エッジが、両フラグメントエッジ、転送先フラグメント
エッジ、転送元フラグメントエッジ、または非フラグメ
ントエッジに分類される。
By the above processing, edges corresponding to each data transfer are classified into both fragment edges, transfer destination fragment edges, transfer source fragment edges, and non-fragment edges.

【0154】図44〜図48は、「等価エッジ」を検出
する処理のフローチャートである。このフローチャート
は、図4に示したフローチャートのステップS15の実
施例である。
FIGS. 44 to 48 are flowcharts of the processing for detecting the "equivalent edge". This flowchart is an example of step S15 of the flowchart shown in FIG.

【0155】ステップS211では、データ転送エッジ
リストEdtをスキャンする、ステップS212は、デー
タ転送エッジリストEdtの各要素についてステップS2
13以降の処理を実行するための処理である。ステップ
S213では、データ転送エッジリストEdtから要素
(エッジ)Ej を抽出する。このとき、エッジEj に対
応するデータ転送の転送元および転送先を認識する。
In step S211, the data transfer edge list Edt is scanned. In step S212, each element of the data transfer edge list Edt is scanned in step S2.
This is a process for executing the processes after the thirteenth. In step S213, an element (edge) Ej is extracted from the data transfer edge list Edt. At this time, the transfer source and the transfer destination of the data transfer corresponding to the edge Ej are recognized.

【0156】ステップS214では、エッジEj が転送
元フラグメントか否か調べる。エッジEj が転送元フラ
グメントであればステップS215へ進み、そうでない
場合は、ステップS241へ進む。ステップS215で
は、転送元のフラグメント等価を「FHej」とする。ス
テップS216では、フラグメント等価FHejに属する
要素をスキャンする。ステップS217は、フラグメン
ト等価FHejに属する各要素についてステップS218
〜S224を実行するための処理である。
In step S214, it is checked whether or not the edge Ej is a source fragment. If the edge Ej is the transfer source fragment, the process proceeds to step S215; otherwise, the process proceeds to step S241. In step S215, the fragment equivalent of the transfer source is set to “FHej”. In step S216, elements belonging to the fragment equivalent FHej are scanned. Step S217 is performed for each element belonging to the fragment equivalent FHej.
To S224.

【0157】ステップS218では、フラグメント等価
FHejから要素(ポート等)Ni を抽出する。ステップ
S219では、要素Ni を転送元ノードまたは転送先ノ
ードとして含むすべてのエッジを抽出する。ステップS
220では、抽出したエッジのリストをスキャンする。
ステップS221は、ステップS219で抽出した各エ
ッジについてステップS222〜S224を実行するた
めの処理である。ステップS222では、上記抽出した
エッジのリストから要素(エッジ)Ek を抽出する。こ
のとき、エッジEk に対応するデータ転送の転送先ノー
ドを「Head-k」とする。ステップS223では、この転
送先ノードHead-kが、ステップS213で抽出した転送
先と同じであるか否かを調べる。そして、それらが互い
に同じ場合は、ステップS224において、エッジEj
の等価エッジの集合Eqv-Tail-EjにエッジEk を追加す
る。
In step S218, an element (port or the like) Ni is extracted from the fragment equivalent FHej. In step S219, all edges that include the element Ni as a source node or a destination node are extracted. Step S
At 220, the list of extracted edges is scanned.
Step S221 is processing 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 list of edges. At this time, the transfer destination node of the data transfer corresponding to the edge Ek is "Head-k". In step S223, it is checked whether or not the transfer destination node Head-k is the same as the transfer destination extracted in step S213. If they are the same, in step S224, the edge Ej
Is added to the set Eqv-Tail-Ej of the equivalent edges of.

【0158】フラグメント等価FHejに属するすべての
要素についてステップS218〜S224の処理を実行
すると、ステップS231において、集合Eqv-Tail-Ej
に属するエッジのノードのビット幅ベクトルに基づいて
インターバルグラフIGを作成する。
When the processing of steps S218 to S224 is executed for all elements belonging to the fragment equivalent FHej, in step S231, the set Eqv-Tail-Ej
The interval graph IG is created based on the bit width vector of the node of the edge belonging to.

【0159】ここで、図49〜図51を参照しながら、
インターバルグラフについて説明する。ここでは、図4
9に示すデータ転送グラフが生成されているものとす
る。また、図49に示すノード間のデータ転送は、図5
0に示すように定義されているものとする。そして、各
エッジ毎に、ガード条件に対応する制御信号、転送先ノ
ードにおいて使用されるビット、および転送先ノードに
おいてビットされるビットが定義されているものとす
る。この定義によれば、例えば、エッジRTは、制御信
号G3 が与えられたときに、ノードRの第7〜0ビット
がノードTの第7〜0ビットへ転送されることを表して
いる。なお、各データ転送は、T1 〜T10を用いて表わ
されている。
Here, referring to FIGS. 49 to 51,
The interval graph will be described. Here, FIG.
It is assumed that the data transfer graph shown in FIG. 9 has been generated. The data transfer between the nodes shown in FIG.
0 is defined. Then, it is assumed that a control signal corresponding to the guard condition, a bit used in the transfer destination node, and a bit to be bit in 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 by using T1 to T10.

【0160】データ転送グラフからインターバルグラフ
を作成する場合、まず、各データ転送を点(ドット)で
表す。そして、データ転送毎に、転送先ノードにおいて
使用すべきビットがオーバラップするデータ転送を抽出
し、それらを接続する。
When an interval graph is created from a data transfer graph, each data transfer is first represented by a dot (dot). Then, for each data transfer, data transfer in which bits to be used in the transfer destination node overlap are extracted and connected.

【0161】例えば、データ転送T1 に注目する。デー
タ転送T1 によるデータは、ノードTの第7〜0ビット
に書き込まれる。このとき、データ転送T2 によるデー
タはノードTの第3〜0ビットに書き込まれる。したが
って、データ転送T1 およびデータ転送T2 により転送
されるデータは、ノードTにおいてオーバラップするこ
とになる。同様に、データ転送T3 、T8 、T9 及びT
10によるデータも、ノードTにおいてデータ転送T1 に
よるデータとオーバラップする。この場合、データ転送
T1 を表す点は、図51に示すように、データ転送T2
、T3 、T8 、T9 およびT10を表す点と接続され
る。
For example, attention is paid to the data transfer T1. Data from the data transfer T1 is written to the 7th to 0th bits of the node T. At this time, the data from the data transfer T2 is written to 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 transfer T3, T8, T9 and T
The data at 10 also overlaps at node T with the data at data transfer T1. In this case, the point representing the data transfer T1 is, as shown in FIG.
, T3, T8, T9 and T10.

【0162】この後、他のデータ転送についても同様の
方法を実行することにより、図51に示すインターバル
グラフが得られる。フローチャートの説明に戻る。ステ
ップS232では、インターバルグラフIGにおいて、
部品(図51における「点」)同士の接続を調べる。ス
テップS233では、非単体部品の集合NSCCを抽出
する。各集合NSCCには、インターバルグラフにおい
て互いにメッシュ状に接続された点に対応する複数のデ
ータ転送から構成される。例えば、図51において、点
T1 、T2 、T3 、T10は、互いにメッシュ状に接続さ
れており、これらの点にそれぞれ対応するデータ転送は
1つの集合NSCCに属する。ステップS234では、
単体部品の集合SCCを抽出する。集合SCCには、い
ずれの集合NSCCにも属していないデータ転送が属す
ることになる。
Thereafter, the same method is applied to other data transfer, whereby an interval graph shown in FIG. 51 is obtained. Return to the description of the flowchart. In step S232, in the interval graph IG,
The connection between the parts ("points" in FIG. 51) is checked. In step S233, a set NSCC of non-single parts is extracted. Each set NSCC is composed of a plurality of data transfers corresponding to points connected to each other in a mesh 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 the data transfer corresponding to each of these points belongs to one set NSCC. In step S234,
A set SCC of single components is extracted. The data transfer that does not belong to any of the sets NSCC belongs to the set SCC.

【0163】ステップS235では、各集合NSCCに
属し、且つ集合Eqv-Tail-Ejに含まれるエッジから独立
サブセットInd-Eqv-Tail-Ejを作成する。ステップS2
36では、集合Eqv-Tail-Ejから独立サブセットInd-E
qv-Tail-Ejを削除する。ステップS237では、集合N
SCCに基づいて、集合Eqv-Tail-Ejを1以上のサブグ
ループに分割する。そして、ステップS238におい
て、各サブグループごとにエッジリストEfinal を得
る。そして、ステップS239において、各サブグルー
プの集合Eqv-Tail-EjをエッジリストEfinal に追加す
る。
In step S235, an independent subset Ind-Eqv-Tail-Ej is created from edges belonging to each set NSCC and included in the set Eqv-Tail-Ej. Step S2
36, the independent subset Ind-E is obtained from the set Eqv-Tail-Ej.
Delete qv-Tail-Ej. In step S237, the set N
The set Eqv-Tail-Ej is divided into one or more subgroups based on the SCC. Then, in step S238, an edge list Efinal is obtained for each subgroup. Then, in step S239, the set Eqv-Tail-Ej of each subgroup is added to the edge list Efinal.

【0164】エッジEj が転送元フラグメントでなかっ
た場合(S214:No)は、ステップS241におい
て、エッジEj が転送先フラグメントまたは両フラグメ
ントであるか否かを調べる。エッジEj が転送先フラグ
メントまたは両フラグメントであでればステップS24
2へ進み、そうでない場合は、ステップS249におい
てそのエッジEj を単体ブロックとしてエッジリストE
final に加えた後にステップS212に戻る。
If the edge Ej is not a source fragment (S214: No), it is checked in step S241 whether the edge Ej is a destination fragment or both fragments. If the edge Ej is a transfer destination fragment or both fragments, step S24
If not, in step S249, the edge Ej is set as a single block in the edge list E
After adding to final, the process returns to step 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に追加
する。
In step S242, the parent resource field of the data transfer destination corresponding to the edge Ej is traversed until a non-fragment parent resource UF-Parent-j is found. In step S243, the parent resource UF-Parent-j
Let the non-fragment equivalence class to which "" belongs be "UHPej". In step S244, the non-fragment equivalence class UHPej is scanned. Step S245 is processing for executing steps S246 to S248 for each element belonging to the non-fragment equivalence class UHPej. In step S246, the element (node) Ni is extracted from the non-fragment equivalence class UHPej. In step S247, all edges including the node Ni as a destination node are extracted. In step S248, each extracted edge is added to a set of equivalent edges Eqv-Head-Ej.

【0166】ステップS251では、非フラグメント等
価クラスUHPejから抽出されたノードNi がフラグメ
ント等価か否かを調べる。ノードNi がフラグメント等
価であればステップS252へ進み、そうでなければス
テップS245に戻る。ステップS252では、ノード
Ni のフラグメント等価クラスを「FHej」とする。ス
テップS253では、フラグメント等価クラスFHejを
スキャンする。ステップS254は、フラグメント等価
クラスFHejに属する各要素についてステップS255
〜S257を実行するための処理である。ステップS2
55では、フラグメント等価クラスFHejからノードN
k を抽出する。ステップS256では、転送先ノードと
してノードNk を含むすべてのエッジを検出する。そし
て、ステップS257において、抽出した各エッジを等
価エッジの集合E-Head-Ejに追加する。
In step S251, it is checked whether or not the node Ni extracted from the non-fragment equivalent class UHPej is fragment equivalent. If the node Ni is equivalent to a fragment, 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 equivalent class FHej is scanned. Step S254 is performed for each element belonging to the fragment equivalence class FHej.
To S257. Step S2
In 55, the node N is transmitted from the fragment equivalence class FHej.
Extract k. In step S256, all edges including the node Nk as a transfer destination node are detected. Then, in step S257, each extracted edge is added to the set E-Head-Ej of equivalent edges.

【0167】各ノードについてステップS246〜S2
48を実行すると(ステップS245:Yes)、続い
てステップS261〜S268を実行する。ステップS
261〜S268は、基本的に、ステップS231〜S
237、およびS239と同じである。ただし、ステッ
プS261〜S268では、集合Eqv-Head-Ejに属する
エッジに係わるインターバルグラフIGが作成され、そ
のグラフを利用してエッジリストEfinal が得られる。
Steps S246 to S2 for each node
After executing step S48 (step S245: Yes), steps S261 to S268 are subsequently executed. Step S
Steps S231 to S268 are basically performed in steps S231 to S231.
237 and S239. However, in steps S261 to S268, an interval graph IG relating to edges belonging to the set Eqv-Head-Ej is created, and an edge list Efinal is obtained using the graph.

【0168】図52〜図55は、「レジスタファイル」
を検出する処理のフローチャートである。このフローチ
ャートは、図4に示したフローチャートのステップS1
6の実施例である。
FIGS. 52 to 55 show a "register file".
6 is a flowchart of a process for detecting the. This flowchart corresponds to step S1 of the flowchart shown in FIG.
6 is an embodiment of FIG.

【0169】ステップS271では、データ転送エッジ
リストEdtをスキャンする。ステップS272は、デー
タ転送エッジリストEdtに属する各要素についてステッ
プS273〜S284を実行するための処理である。ス
テップS273では、データ転送エッジリストEdtから
要素(エッジ)Ej を抽出する。また、エッジEj に対
応するデータ転送の転送元Sourceおよび転送先Sinkを検
出する。
In the 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, the element (edge) Ej is extracted from the data transfer edge list Edt. Further, the transfer source Source and the transfer destination Sink of the data transfer corresponding to the edge Ej are detected.

【0170】ステップS274では、エッジEj の転送
元または転送先がレジスタであるか否かを調べる。転送
元または転送先がレジスタであれば、ステップS275
へ進み、そうでない場合はステップS272に戻る。ス
テップS275では、エッジEj のガード表現のサポー
トセットを構成する制御信号の集合SSS−Ej を作成
する。ステップS276では、検出した転送先がレジス
タであるか否かを調べる。転送先がレジスタであればス
テップS277へ進み、そうでない場合はステップS2
77〜280をスキップする。
In the step S274, it is checked whether or not the transfer source or the transfer destination of the edge Ej is a register. If the transfer source or the transfer destination is a register, 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 determined whether the detected transfer destination is a register. If the transfer destination is a register, the process proceeds to step S277; otherwise, the process proceeds to step S2.
77 to 280 are skipped.

【0171】ステップS277では、制御信号の集合S
SS−Ej を転送先に関連づける。ステップS278で
は、転送先がレジスタであるデータ転送のガード表現に
含まれる制御信号の集合Sink-Support-Setを得る。ステ
ップS279では、制御信号の集合SSS−Ej を制御
信号の集合Sink-Support-Setに関連づける。ステップS
280では、転送先を転送先レジスタの集合Sink-Regis
torsに追加する。
In step S277, a set S of control signals
Associate SS-Ej with the transfer destination. In step S278, a set Sink-Support-Set of control signals included in the guard expression of the data transfer whose transfer destination is the register is obtained. In step S279, the control signal set SSS-Ej is associated with the control signal set Sink-Support-Set. Step S
In 280, the transfer destination is set to a set of transfer destination registers Sink-Regis
Add to tors.

【0172】ステップS281では、検出した転送元が
レジスタであるか否かを調べる。転送元がレジスタであ
ればステップS282へ進み、そうでない場合は、ステ
ップS272に戻る。ステップS282では、制御信号
の集合SSS−Ej を転送元に関連づける。ステップS
283では、制御信号の集合SSS−Ej を制御信号の
集合Source-Support-Setに関連づける。そして、ステッ
プS284において、転送元を転送元レジスタの集合So
urce-Registorsに追加する。
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; otherwise, the process returns to step S272. In step S282, the control signal set SSS-Ej is associated with the transfer source. Step S
At 283, the control signal set SSS-Ej is associated with the control signal set Source-Support-Set. Then, in step S284, the transfer source is set to the set So of the transfer source registers.
Add to urce-Registors.

【0173】すべてのエッジについてステップS273
〜S284の処理を実行すると、ステップS291にお
いて、制御信号の集合Source-Support-Setの結合体U-So
urce-Sets を作成する。また、ステップS292におい
て、制御信号の集合Sink-Support-Setの結合体U-Sink-S
ets を作成する。ステップS293では、結合体U-Sour
ce-Sets に属するユニークな要素から構成されるランダ
ムトータルオーダTo-U-Source-Setsを作成する。また、
ステップS294では、結合体U-Sink-Sets に属するユ
ニークな要素から構成されるランダムトータルオーダTo
-U-Sink-Setsを作成する。
Step S273 for all edges
When the processing of S284 is performed, in step S291, the combination U-So of the set of control signals Source-Support-Set
Create urce-Sets. Also, in step S292, the union U-Sink-S of the set of control signals Sink-Support-Set
Create ets. In step S293, the conjugate U-Sour
Create a random total order To-U-Source-Sets composed of unique elements belonging to ce-Sets. Also,
In step S294, a random total order To composed of unique elements belonging to the combination U-Sink-Sets To
-Create U-Sink-Sets.

【0174】ステップS295では、Sink-Support-Set
をスキャンする。ステップS296は、Sink-Support-S
etに属するすべてのセットについてステップS297〜
S300を実行するための処理である。ステップS29
7では、Sink-Support-SetからSSS−Ej を抽出す
る。ステップS298では、To-U-Sink-Setsに基づいて
SSS−Ej のビットベクトル表現BV−SSS−Ej
を作成する。ここで、SSS−Ej の要素に対応するエ
ントリに「1」を設定し、他の要素に「0」を設定す
る。ステップS299では、BV−SSS−Ej をSS
S−Ej に関連づける。そして、ステップS300にお
いて、BV−SSS−Ej をSSS−Ej に追加する。
このとき、BV-Sink-Support-Setsは、Sink-Support-S
etのビットベクトル表現の集合である。
In step S295, Sink-Support-Set
To scan. Step S296 is Sink-Support-S
Step S297-for all sets belonging to et
This is processing for executing S300. Step S29
In step 7, SSS-Ej is extracted from the Sink-Support-Set. In step S298, based on the To-U-Sink-Sets, the bit vector representation BV-SSS-Ej of SSS-Ej
Create 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 set to SS
S-Ej. Then, in step S300, BV-SSS-Ej is added to SSS-Ej.
At this time, BV-Sink-Support-Sets becomes Sink-Support-S
A set of bit vector representations of et.

【0175】すべてのセットについてステップS297
〜S300の処理を実行すると、ステップS311へ進
む。ステップS311は、Source-Support-Setに属する
すべての集合についてステップS312〜S315を実
行するための処理である。ステップS312〜S315
は、基本的に上述したステップS297〜S300と同
じである。
Step S297 for all sets
After performing the processing of steps S300 to S300, the process proceeds to step S311. Step S311 is processing for executing steps S312 to S315 for all sets belonging to the Source-Support-Set. Steps S312 to S315
Are basically the same as steps S297 to S300 described above.

【0176】ステップS316では、BV-Sink-Suppor
t-Set のベクトルリストをスキャンする。ステップS3
17は、ベクトルリストに属する各ベクトルについてス
テップS318〜S324を実行するための処理であ
る。ステップS318では、ベクトルリストからBV−
SSS−Ej を抽出する。ステップS319では、BV
-Sink-Support-Set のベクトルリストを再スキャンす
る。ステップS320は、ベクトルリストに属する各ベ
クトルについてステップS321〜S323を実行する
ための処理である。ステップS321では、ベクトルリ
ストからBV−SSS−Ek を抽出する。ステップS3
22では、BV−SSS−Ej とBV−SSS−Ek が
同じであるか否かを調べる。これらが互いに同じであれ
ば、ステップS323において、BV−SSS−Ek に
対応する転送先レジスタReg-sink-kを検出する。そし
て、すべてのベクトルについてステップS321〜S3
23の処理を実行すると、ステップS324において、
転送先レジスタReg-sink-kを転送先レジスタファイルの
集合Sink-Reg-Filesに追加する。
In step S316, BV-Sink-Suppor
Scan the t-Set vector list. Step S3
17 is a process for executing steps S318 to S324 for each vector belonging to the vector list. In step S318, BV-
Extract SSS-Ej. In step S319, the BV
-Rescan the vector list in Sink-Support-Set. Step S320 is processing 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. Step S3
At 22, it is checked whether BV-SSS-Ej and BV-SSS-Ek are the same. If they are the same, a transfer destination register Reg-sink-k corresponding to BV-SSS-Ek is detected in step S323. Then, steps S321 to S3 are performed for all the vectors.
After executing the process of step S23, in step S324,
The transfer destination register Reg-sink-k is added to the transfer destination register file set Sink-Reg-Files.

【0177】ステップS331〜S339は、基本的に
ステップS316〜S324の処理と同じである。ただ
し、ステップS331〜S339では、BV-Sink-Supp
ort-Set のベクトルリストに属する各要素について処理
が行われ、所定の転送元レジスタが転送元レジスタファ
イルの集合Source-Reg-Filesに追加される。
Steps S331 to S339 are basically the same as the processing of steps S316 to S324. However, in steps S331 to S339, BV-Sink-Supp
Processing is performed for each element belonging to the vector list of ort-Set, and a predetermined transfer source register is added to the source register file set Source-Reg-Files.

【0178】ステップS341では、転送先レジスタフ
ァイルの集合Sink-Reg-Filesのリストをスキャンする。
ステップS342は、そのリストに属する各集合につい
てステップS343〜S348を実行するための処理に
相当する。ステップS343では、上記のリストから集
合Sink-Reg-File-k を抽出する。ステップS345で
は、すべての集合が処理されたか否かを調べる。未処理
のセットがあれば、ステップS346において、集合So
urce-Reg-File-l を抽出する。ステップS347では、
集合Sink-Reg-File-k と集合Source-Reg-File-l とが同
一であるか否かを調べる。そして、それらが互いに同じ
であれば、ステップS348において、集合Source-Reg
-File-k を集合Reg-Files に追加する。上記処理によ
り、レジスタファイルに属するレジスタが得られる。
In step S341, a list of a set Sink-Reg-Files of transfer destination register files is scanned.
Step S342 corresponds to processing for executing steps S343 to S348 for each set belonging to the list. In step S343, a set Sink-Reg-File-k is extracted from the above list. In step S345, it is determined whether all sets have been processed. If there is an unprocessed set, in step S346, the set So
Extract urce-Reg-File-l. In step S347,
Check whether the set Sink-Reg-File-k is the same as the set Source-Reg-File-l. If they are the same, in step S348, the set Source-Reg
Add -File-k to the set Reg-Files. Through the above processing, registers belonging to the register file are obtained.

【0179】このように、図32〜図35に示すフロー
チャートに処理により生成されたデータ転送グラフは、
上述のフローチャートの処理により最適化される。そし
て、その最適化の結果は、エッジリストEfinal であ
る。
As described above, the data transfer graph generated by the processing in the flowcharts shown in FIGS.
It is optimized by the processing of the above-described flowchart. The result of the optimization is an edge list Efinal.

【0180】図57は、最適化されたデータ転送グラフ
から隣接ノードリストを作成する処理のフローチャート
である。なお、このフローチャートは、図19に示した
フローチャートのステップS21の実施例である。
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】ステップS351では、エッジリストEfi
nal をスキャンする。ステップS352は、エッジリス
トEfinal に属する各サブグループについてステップS
353〜S361を実行するための処理に相当する。ス
テップS353では、エッジリストEfinal からサブグ
ループPi を抽出する。
In the step S351, the edge list Efi
Scan nal. Step S352 is a step S352 for each subgroup belonging to the edge list Efinal.
This corresponds to processing for executing steps 353 to S361. In step S353, the subgroup Pi is extracted from the edge list Efinal.

【0182】ステップS354は、サブグループPi に
属する各エッジについてステップS355〜S361の
処理を実行するための処理に相当する。ステップS35
5では、サブグループ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に追加す
る。
Step S354 corresponds to processing for executing the processing of steps S355 to S361 for each edge belonging to the subgroup Pi. Step S35
In step 5, the 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 equivalent 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 the non-fragment equivalence class Tail-Hej is an element of the node set N. And the non-fragment equivalence class Tail
If -Hej is not an element of the node set N, it is added to the node set N in step S359.

【0183】ステップS360では、隣接ノードリスト
のノードセットNにおける非フラグメント等価クラスHe
ad-Hejの隣接リストに非フラグメント等価クラスTail-H
ejを追加する。また、非フラグメント等価クラスHead-H
ejの入力エッジ数をインクリメントする。一方、ステッ
プS361では、ノードセットNにおける非フラグメン
ト等価クラスTail-Hejの隣接リストに非フラグメント等
価クラスHead-Hejを追加する。そして、非フラグメント
等価クラスTail-Hejの入力エッジ数をインクリメントす
る。
In step S360, the non-fragment equivalent class He in the node set N of the adjacent node list
Non-fragment equivalence class Tail-H in ad-Hej adjacency list
Add ej. Also, the non-fragment equivalence class Head-H
Increment the number of input edges of ej. On the other hand, in step S361, the non-fragment equivalence class Head-Hej is added to the adjacent list of the non-fragment equivalence class Tail-Hej in the node set N. Then, the number of input edges of the non-fragment equivalent class Tail-Hej is incremented.

【0184】図58〜図60は、検証ツールに入力すべ
きプロパティスクリプトを生成する処理のフローチャー
トである。なお、このフローチャートは、図19に示し
たフローチャートのステップS22の実施例である。
FIGS. 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】ステップS371では、隣接ノードリスト
のノードセットNをスキャンする。ステップS372
は、ノードセットNに属する各ノードについてステップ
S373以降の処理を実行するための処理である。ステ
ップS373では、ノードセットからノードNj を抽出
する。
In the step S371, the node set N in the adjacent node list is scanned. Step S372
Is a process for executing the processes from step S373 on for each node belonging to the node set N. In step S373, the node Nj is extracted from the node set.

【0186】ステップS374では、ノードNj のファ
ンインエッジ数が1以上であるか否かを調べる。ファン
インエッジ数が1以上であればステップS375へ進
み、そうでない場合はステップS372に戻る。ステッ
プS375では、転送先ノードがノードNj であるエッ
ジ(ノードNj へのファンインエッジ)の集合Di-Arcs
-into-Njを得る。ステップS376では、ノードNj の
ファンアウトエッジ数が1以上であるか否かを調べる。
出力エッジ数が1以上であればステップS377へ進
み、そうでない場合はステップS377をスキップす
る。
In the step S374, it is checked whether or not the number of fan-in edges of the node Nj is one or more. If the number of fan-in edges is one or more, the process proceeds to step S375; otherwise, the process returns to step S372. In step S375, a set Di-Arcs of edges where the transfer destination node is the node Nj (fan-in edge to the node Nj)
-into-Nj. 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 one or more, the process proceeds to step S377; otherwise, step S377 is skipped.

【0187】ステップS377では、転送元ノードがノ
ードNj であるエッジ(ノードNjからのファンアウト
エッジ)の集合Di-Arcs-out-of-Njを得る。ステップS
378では、ノードNj がレジスタであるか否かを調べ
る。ノードNj がレジスタであればステップS379へ
進み、そうでない場合はステップS411へ進む。ステ
ップS379では、集合Di-Arcs-into-Njに属するファ
ンインエッジが存在するか否かを調べる。集合Di-Arcs
-into-Njに属するファンインエッジが存在する場合はス
テップS380において、それらのファンインエッジ同
士の資源競合プロパティを生成する。そうでない場合は
ステップS372に戻る。
In step S377, a set Di-Arcs-out-of-Nj of edges whose transfer source nodes are the nodes Nj (fan-out edges from the nodes Nj) is obtained. Step S
At 378, it is checked whether the node Nj is a register. If the node Nj is a register, the process proceeds to step S379; otherwise, 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. Set Di-Arcs
If there are fan-in edges belonging to -into-Nj, in step S380, a resource conflict property between the fan-in edges is generated. Otherwise, the process returns to step 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-i
nto-Njおよび集合Di-Arcs-out-of-Njの要素である。一
方、集合Di-Arcs-out-of-Njに属するファンアウトエッ
ジが存在しない場合は、ステップS372に戻る。
In the step S381, the set Di-Arcs-out
Check whether a fan-out edge belonging to -of-Nj exists. If there is a fan-out edge belonging to the set Di-Arcs-out-of-Nj, in step S380,
A product PS1 of the set Di-Arcs-into-Nj and the set Di-Arcs-out-of-Nj is generated. PS1 is represented as "Em, En". Note that "Em" and "En" are each a set Di-Arcs-i
nto-Nj and the elements of the set Di-Arcs-out-of-Nj. On the other hand, when there is no fan-out edge belonging to the set Di-Arcs-out-of-Nj, the process returns to step S372.

【0189】ステップS391では、PS1をスキャン
する。ステップS392は、PS1の各要素についてス
テップS393〜S395の処理を実行するための処理
に相当する。ステップS393では、PS1から要素P
S-k(Ea 、Eb )を抽出する。ステップS394で
は、集合Di-Arcs-out-of-Njの要素Eb の処理タイプが
順次転送であるか否かを調べる。そして、処理タイプが
順次転送であれば、ステップS395において、クロッ
ク歪みによるエラーをチェックするための資源競合プロ
パティを生成する。
In step S391, PS1 is scanned. Step S392 corresponds to processing for executing the processing of steps S393 to S395 for each element of PS1. In step S393, the element P
Sk (Ea, Eb) is extracted. 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 conflict property for checking an error due to clock distortion is generated in step S395.

【0190】ステップS396では、集合Di-Arcs-int
o-Njと集合Di-Arcs-into-Njとの積PS2を生成する。
続いて、ステップS397では、エッジEj のガード表
現を「Gi 」としたときに、集合Di-Arcs-out-of-Njに
属する各ファンアウトエッジEi に対して論理式No-Rea
d=-(OR(Gi)) を生成する。ステップS398では、PS
2をスキャンする。ステップS399は、PS2に属す
る各要素について処理400およびS401を実行する
ための処理に相当する。
In the step S396, the set Di-Arcs-int
A product PS2 of o-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-Rea is applied to each fan-out edge Ei belonging to the set Di-Arcs-out-of-Nj.
Generate d =-(OR (Gi)). In step S398, PS
Scan 2. Step S399 corresponds to processing for executing processing 400 and S401 for each element belonging to PS2.

【0191】ステップS400では、PS2からPS2
-k=(Ec 、Ed )を抽出する。そして、ステップS4
01において、レジスタ漏れプロパティEF(Gl"EX(E(No-
ReadUGm)))を生成する。
In step S400, PS2 is converted to PS2.
-k = (Ec, Ed) is extracted. Then, step S4
01, the register leak property EF (Gl "EX (E (No-
ReadUGm))) is generated.

【0192】ノードNj がレジスタでなかった場合(ス
テップS378:No)は、ステップS411におい
て、そのノードNj が出力ポートであるか否かを調べ
る。ノードNj が出力ポートであれば、ステップS41
2において、集合Di-Arcs-into-Njに要素が存在するか
否かを調べる。すなわち、その出力ポートへのファンイ
ンエッジが存在するか否かを調べる。ファンインエッジ
がある場合には、ステップS413において、それらエ
ッジ同士のすべての組合せに対して資源競合プロパティ
を生成する。
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, step S41
In step 2, it is checked whether or not an element exists in the set Di-Arcs-into-Nj. That is, it is determined whether a fan-in edge to the output port exists. If there is a fan-in edge, in step S413, resource conflict properties are generated for all combinations of the edges.

【0193】ステップS414では、ノードNj が入力
ポートであるか否か調べる。ノードNj が入力ポートで
あれば、ステップS415において、集合Di-Arcs-int
o-Njおよび集合Di-Arcs-into-Njの結合体Union-Arcs-o
f-Njを生成する。そして、ステップS416において、
Union-Arcs-of-NjとUnion-Arcs-of-Njとの積PS3を生
成する。
In the step S414, it is checked whether or not the node Nj is an input port. If the node Nj is an input port, in step S415, the set Di-Arcs-int
Union-Arcs-o, a union of o-Nj and the set Di-Arcs-into-Nj
Generate f-Nj. Then, in step S416,
A product PS3 of Union-Arcs-of-Nj and Union-Arcs-of-Nj is generated.

【0194】ステップS417では、PS3をスキャン
する。ステップS418は、PS3に属する各要素につ
いてステップS419〜S421の処理を実行するため
の処理に相当する。ステップS419では、PS3から
PS3-k=(Ee 、Eg )を抽出する。ステップS42
0では、エッジEe とエッジEg が同じものであるか調
べる。それらのエッジが同じであった場合は、ステップ
S421において、資源競合プロパティを生成する。
In step S417, PS3 is scanned. Step S418 corresponds to processing for executing the processing of steps S419 to S421 for each element belonging to PS3. In step S419, PS3-k = (Ee, Eg) is extracted from PS3. Step S42
At 0, 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】上述したプロパティを生成する機能は、コ
ンピュータを用いて上述のフローチャートに示した処理
を記述したプログラムを実行することにより実現され
る。そのプログラムを実行するコンピュータ100のブ
ロック図を図61に示す。
The function of generating the above-described properties 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 a computer 100 that executes the program.

【0196】CPU101は、上述のフローチャートに
示した処理を記述したプログラムを記憶装置102から
メモリ103にロードして実行する。記憶装置102
は、たとえばハードディスクであり、上記プログラムを
格納する。一方、メモリ103は、例えば半導体メモリ
であり、CPU101の作業領域として使用される。
The CPU 101 loads a program describing the processing shown in the flowchart from the storage device 102 into the memory 103 and executes it. Storage device 102
Is, for example, a hard disk and stores the above program. On the other hand, the memory 103 is, for example, a semiconductor memory and is used as a work area of the CPU 101.

【0197】記録媒体ドライバ104は、CPU101
の指示に従って可搬性記録媒体105にアクセスする。
可搬性記録媒体105は、例えば、半導体デバイス(P
Cカード等)、磁気的作用により情報が入出力される媒
体(フロッピーディスク、磁気テープなど)、光学的作
用により情報が入出力される媒体(光ディスクなど)を
含む。通信制御装置106は、CPU101の指示に従
って網との間でデータを送受信する。
The recording medium driver 104 is the CPU 101
The portable recording medium 105 is accessed according to the instruction.
The portable recording medium 105 is, for example, a semiconductor device (P
C media, etc.), media for inputting / outputting information by magnetic action (floppy disk, magnetic tape, etc.), and media for inputting / outputting information by optical action (optical disc, etc.). The communication control device 106 transmits and receives data to and from a network according to an instruction from the CPU 101.

【0198】図23は、本発明に係わるソフトウェアプ
ログラムなどの提供方法を説明する図である。本発明に
係わるプログラムは、例えば、以下の3つの方法の中の
任意の方法により提供される。
FIG. 23 is a diagram for explaining a method of providing a software program or the like according to the present invention. The program according to the present invention is provided, for example, by any of the following three methods.

【0199】(a) コンピュータ100にインストールさ
れて提供される。この場合、プログラム等は、たとえ
ば、出荷前にプレインストールされる。 (b) 可搬性記録媒体に格納されて提供される。この場
合、可搬性記録媒体105に格納されているプログラム
等は、基本的に、記録媒体ドライバ104を介して記憶
装置102にインストールされる。
(A) Installed and provided in the computer 100. In this case, the program or the like is pre-installed before shipment, for example. (b) Provided by being stored in a portable recording medium. In this case, the programs and the like stored in the portable recording medium 105 are basically installed in the storage device 102 via the recording medium driver 104.

【0200】(c) 網上のサーバから提供される。この場
合、基本的には、コンピュータ100がサーバに格納さ
れているプログラム等をダウンロードすることによって
そのプログラム等を取得する。網は、無線網を含む。
(C) Provided from a server on the network. In this case, basically, the computer 100 obtains the program and the like by downloading the program and the like stored in the server. The network includes a wireless network.

【0201】なお、上述の実施例では、検証すべきプロ
パティとして、資源競合およびレジスタ漏れを採り上げ
ているが、本発明が生成するプロパティはこれに限定さ
れるものではない。
In the above embodiment, resource contention and register omission are taken as properties to be verified, but the properties generated by the present invention are not limited to these.

【0202】また、データ資源としてレジスタ、ポー
ト、バスを採り上げているが、本発明が対象とするの資
源はこれに限定されるものではない。
Although the registers, ports, and buses are used as data resources, the resources to which the present invention is applied are not limited to these.

【0203】[0203]

【発明の効果】本発明によれば、ハードウェア記述言語
で記述された仕様から、そのハードウェアにおいて資源
競合またはレジスタ漏れが発生するか否かを検証するた
めのプロパティを自動的に生成できる。このため、ハー
ドウェアの設計ミスを早い段階で修正でき、IC等の開
発のための時間およびコストが節約される。また、デバ
ッグ作業が減るので、設計者は、余った労力を他の作業
に投入できる。
According to the present invention, it is possible to automatically generate a property for verifying whether or not resource contention or register omission occurs in hardware from a specification described in a 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, the number of debugging operations is reduced, so that the designer can dedicate extra labor to other operations.

【図面の簡単な説明】[Brief description of the drawings]

【図1】本発明の一実施形態のプロパティ作成ツールが
仕様される環境を説明する図である。
FIG. 1 is a diagram illustrating an environment in which a property creation tool according to an embodiment of the present invention is used.

【図2】プロパティ生成ツールの動作を説明するフロー
チャートである。
FIG. 2 is a flowchart illustrating an operation of a property generation tool.

【図3】データ転送グラフの一例である。FIG. 3 is an example of a data transfer graph.

【図4】最適化処理のフローチャートである。FIG. 4 is a flowchart of an optimization process.

【図5】ハードウェアの例である。FIG. 5 is an example of hardware.

【図6】図5に示すハードウェアを記述する階層的に方
法を説明する図である。
FIG. 6 is a diagram for explaining a hierarchical method for describing the hardware shown in FIG. 5;

【図7】「資源の等価」を利用してデータ転送グラフを
最適化する例を示す図である。
FIG. 7 is a diagram illustrating an example of optimizing a data transfer graph using “equivalent of resources”.

【図8】「分岐」を説明する図である。FIG. 8 is a diagram illustrating “branch”.

【図9】レジスタファイルを説明する図である。FIG. 9 is a diagram illustrating a register file.

【図10】Verilog で記述されたハードウェア仕様の一
例(その1)である。
FIG. 10 is an example (part 1) of hardware specifications described in Verilog.

【図11】Verilog で記述されたハードウェア仕様の一
例(その2)である。
FIG. 11 is an example (part 2) of hardware specifications described in Verilog.

【図12】Verilog で記述されたハードウェア仕様の一
例(その3)である。
FIG. 12 is an example (part 3) of hardware specifications described in Verilog.

【図13】Verilog で記述されたハードウェア仕様の一
例(その4)である。
FIG. 13 is an example (part 4) of hardware specifications described in Verilog.

【図14】Verilog で記述されたハードウェア仕様の一
例(その5)である。
FIG. 14 is an example (part 5) of hardware specifications described in Verilog.

【図15】Verilog で記述されたハードウェア仕様の一
例(その6)である。
FIG. 15 is an example (part 6) of hardware specifications described in Verilog.

【図16】図10〜図15に示したハードウェア仕様か
ら生成されたデータ転送グラフである。
FIG. 16 is a data transfer graph generated from the hardware specifications shown in FIGS. 10 to 15;

【図17】疑似資源を説明する図である。FIG. 17 is a diagram illustrating a pseudo resource.

【図18】最適化されたデータ転送グラフの例である。FIG. 18 is an example of an optimized data transfer graph.

【図19】プロパティ作成処理のフローチャートであ
る。
FIG. 19 is a flowchart of a property creation process.

【図20】隣接ノードリストの例である。FIG. 20 is an example of an adjacent node list.

【図21】「資源競合」のプロパティの例である。FIG. 21 is an example of a property of “resource conflict”.

【図22】「レジスタ漏れ」のプロパティの例である。FIG. 22 is an example of a property of “register omission”.

【図23】クロックの歪みを考慮した場合の「資源競
合」のプロパティの例である。
FIG. 23 is an example of a property of “resource conflict” when clock distortion is considered.

【図24】Verilog で記述されたハードウェア仕様の一
例(その1)である。
FIG. 24 is an example (part 1) of hardware specifications described in Verilog.

【図25】Verilog で記述されたハードウェア仕様の一
例(その2)である。
FIG. 25 is an example (part 2) of hardware specifications described in Verilog.

【図26】Verilog で記述されたハードウェア仕様の一
例(その3)である。
FIG. 26 is an example (No. 3) of hardware specifications described in Verilog.

【図27】図24〜図26に示したハードウェア仕様か
ら生成されたデータ転送グラフである。
FIG. 27 is a data transfer graph generated from the hardware specifications shown in FIGS.

【図28】図27に示すグラフにおけるデータ転送の条
件を示す図である。
FIG. 28 is a diagram showing data transfer conditions in the graph shown in FIG. 27;

【図29】レジスタファイルを検出する処理を説明する
図である。
FIG. 29 is a diagram illustrating a process of detecting a register file.

【図30】最適化されたデータ転送グラフの例である。FIG. 30 is an example of an optimized data transfer graph.

【図31】最適化されたグラフにおいて使用される条件
を示す図である。
FIG. 31 is a diagram showing conditions used in an optimized graph.

【図32】データ転送グラフを生成する方法のフローチ
ャート(その1)である。
FIG. 32 is a flowchart (part 1) of a method for generating a data transfer graph.

【図33】データ転送グラフを生成する方法のフローチ
ャート(その2)である。
FIG. 33 is a flowchart (part 2) of a method for generating a data transfer graph.

【図34】データ転送グラフを生成する方法のフローチ
ャート(その3)である。
FIG. 34 is a flowchart (part 3) of a method for generating a data transfer graph.

【図35】データ転送エッジを生成する処理の詳細フロ
ーチャートである。
FIG. 35 is a detailed flowchart of a process for generating a data transfer edge.

【図36】「非フラグメント等価」を検出する処理のフ
ローチャート(その1)である。
FIG. 36 is a flowchart (part 1) of a process for detecting “non-fragment equivalent”;

【図37】「非フラグメント等価」を検出する処理のフ
ローチャート(その2)である。
FIG. 37 is a flowchart (part 2) of a process for detecting “non-fragment equivalent”;

【図38】「フラグメント等価」を検出する処理のフロ
ーチャート(その1)である。
FIG. 38 is a flowchart (part 1) of a process for detecting “fragment equivalence”;

【図39】「フラグメント等価」を検出する処理のフロ
ーチャート(その2)である。
FIG. 39 is a flowchart (part 2) of a process for detecting “fragment equivalence”;

【図40】「フラグメント等価」を検出する処理のフロ
ーチャート(その3)である。
FIG. 40 is a flowchart (part 3) of a process for detecting “fragment equivalence”;

【図41】「フラグメント等価」を検出する処理のフロ
ーチャート(その4)である。
FIG. 41 is a flowchart (part 4) of a process for detecting “fragment equivalent”;

【図42】「名称等価」を検出する処理のフローチャー
トである。
FIG. 42 is a flowchart of a process for detecting “name equivalence”.

【図43】「分岐エッジ」を検出する処理のフローチャ
ートである。
FIG. 43 is a flowchart of a process for detecting a “branch edge”.

【図44】「等価エッジ」を検出する処理のフローチャ
ート(その1)である。
FIG. 44 is a flowchart (part 1) of a process for detecting an “equivalent edge”.

【図45】「等価エッジ」を検出する処理のフローチャ
ート(その2)である。
FIG. 45 is a flowchart (part 2) of a process for detecting an “equivalent edge”;

【図46】「等価エッジ」を検出する処理のフローチャ
ート(その3)である。
FIG. 46 is a flowchart (part 3) of a process of detecting an “equivalent edge”.

【図47】「等価エッジ」を検出する処理のフローチャ
ート(その4)である。
FIG. 47 is a flowchart (part 4) of a process of detecting an “equivalent edge”;

【図48】「等価エッジ」を検出する処理のフローチャ
ート(その5)である。
FIG. 48 is a flowchart (part 5) of a process for detecting an “equivalent edge”;

【図49】データ転送グラフの例である。FIG. 49 is an example of a data transfer graph.

【図50】データ転送の定義である。FIG. 50 is a definition of data transfer.

【図51】インターバルグラフの例である。FIG. 51 is an example of an interval graph.

【図52】「レジスタファイル」を検出する処理のフロ
ーチャート(その1)である。
FIG. 52 is a flowchart (part 1) of a process for detecting a “register file”.

【図53】「レジスタファイル」を検出する処理のフロ
ーチャート(その2)である。
FIG. 53 is a flowchart (part 2) of a process for detecting a “register file”;

【図54】「レジスタファイル」を検出する処理のフロ
ーチャート(その3)である。
FIG. 54 is a flowchart (part 3) of a process for detecting a “register file”;

【図55】「レジスタファイル」を検出する処理のフロ
ーチャート(その4)である。
FIG. 55 is a flowchart (part 4) of a process for detecting a “register file”;

【図56】「レジスタファイル」を検出する処理のフロ
ーチャート(その5)である。
FIG. 56 is a flowchart (part 5) of a process for detecting a “register file”.

【図57】隣接ノードリストを作成する処理のフローチ
ャートである。
FIG. 57 is a flowchart of processing for creating an adjacent node list.

【図58】プロパティスクリプトを生成する処理のフロ
ーチャート(その1)である。
FIG. 58 is a flowchart (part 1) of a process for generating a property script.

【図59】プロパティスクリプトを生成する処理のフロ
ーチャート(その2)である。
FIG. 59 is a flowchart (part 2) of a process for generating a property script.

【図60】プロパティスクリプトを生成する処理のフロ
ーチャート(その3)である。
FIG. 60 is a flowchart (part 3) of a process for generating a property script.

【図61】本発明の機能を記述したプログラムを実行す
るコンピュータのブロック図である。
FIG. 61 is a block diagram of a computer that executes a program describing the functions of the present invention.

【図62】本発明に係わるソフトウェアプログラムなど
の提供方法を説明する図である。
FIG. 62 is a diagram illustrating a method of providing a software program and the like according to the present invention.

【符号の説明】[Explanation of symbols]

1 プロパティ生成ツール 2 ハードウェア仕様 3 検証ツール 1 Property generation tool 2 Hardware specifications 3 Verification tool

───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) H01L 27/04 U (72)発明者 中田 恒夫 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内 Fターム(参考) 5B046 AA08 DA04 DA06 JA01 5F038 CA03 CA17 CD05 DF11 EZ10 EZ20 5F064 BB09 BB18 DD03 DD04 DD25 HH06 HH09 HH10 HH14 ──────────────────────────────────────────────────の Continued on the front page (51) Int.Cl. 7 Identification symbol FI Theme coat ゛ (Reference) H01L 27/04 U (72) Inventor Tsuneo Nakata 4-1-1, Kamiodanaka, Nakahara-ku, Kawasaki City, Kanagawa Prefecture Fujitsu F term (reference) 5B046 AA08 DA04 DA06 JA01 5F038 CA03 CA17 CD05 DF11 EZ10 EZ20 5F064 BB09 BB18 DD03 DD04 DD25 HH06 HH09 HH10 HH14

Claims (17)

【特許請求の範囲】[Claims] 【請求項1】 ハードウェア記述言語により記述された
複数の資源およびそれらの資源を利用したデータ転送を
含むハードウェアについて検証すべきプロパティを生成
する装置であって、 上記ハードウェア記述言語で記述された資源およびデー
タ転送に対応するデータ転送グラフを生成するグラフ生
成手段と、 そのグラフ生成手段により生成されたデータ転送グラフ
を最適化する最適化手段と、 その最適化手段により最適化されたデータ転送グラフを
利用して、上記ハードウェア記述言語により記述されて
いるハードウェアについて検証すべきプロパティを生成
するプロパティ生成手段と、 を有するプロパティ生成装置。
1. A device for generating a plurality of resources described in a hardware description language and properties to be verified for hardware including data transfer using the resources, the device being described in the hardware description language. Generating means for generating a data transfer graph corresponding to resources and data transfer, optimizing means for optimizing the data transfer graph generated by the graph generating means, and data transfer optimized by the optimizing means A property generating unit configured to generate a property to be verified for the hardware described in the hardware description language by using a graph;
【請求項2】 請求項1に記載のプロパティ生成装置で
あって、 上記最適化手段は、データ転送グラフのトポロジに基づ
いてそのグラフを最小化する。
2. The property generating device according to claim 1, wherein said optimizing means minimizes a data transfer graph based on a topology of the graph.
【請求項3】 請求項1に記載のプロパティ生成装置で
あって、 上記グラフ生成手段は、各資源にそれぞれ対応するノー
ド、および各データ転送の転送元および転送先を表すエ
ッジを用いて上記ハードウェアを表すデータ転送グラフ
を生成する。
3. The property generating apparatus according to claim 1, wherein the graph generating means uses the nodes respectively corresponding to the resources, and edges indicating a transfer source and a transfer destination of each data transfer. Generate a data transfer graph representing the ware.
【請求項4】 請求項3に記載のプロパティ生成装置で
あって、 上記最適化手段は、互いに隣接する2つのノードに対応
する各資源のビット幅が互いに同じであり、且つ一方の
資源が他方の資源の子供である場合、それらのノードの
うちの一方を上記データ転送グラフから削除する。
4. The property generating apparatus according to claim 3, wherein said optimizing means has the same bit width of each resource corresponding to two nodes adjacent to each other, and one of the resources is the other. , Delete one of those nodes from the data transfer graph.
【請求項5】 請求項3に記載のプロパティ生成装置で
あって、 上記最適化手段は、第1の資源から第2の資源および第
3資源にデータが転送され、それら第2および第3の資
源のビット幅が上記第1の資源のビット幅よりも小さい
場合、上記第1の資源に対応するノードを上記データ転
送グラフから削除する。
5. The property generating apparatus according to claim 3, wherein said optimizing means transfers data from the first resource to the second resource and the third resource, and transfers the data to the second and third resources. If the bit width of the resource is smaller than the bit width of the first resource, the node corresponding to the first resource is deleted from the data transfer graph.
【請求項6】 請求項3に記載のプロパティ生成装置で
あって、 上記最適化手段は、第1の資源および第2の資源から第
3資源にデータが転送され、且つ上記第1および第2の
資源のビット幅が上記第3の資源のビット幅よりも小さ
い場合、上記第3の資源に対応するノードを上記データ
転送グラフから削除する。
6. The property generating apparatus according to claim 3, wherein said optimizing means transfers data from a first resource and a second resource to a third resource, and said first and second resources. If the bit width of the third resource is smaller than the bit width of the third resource, the node corresponding to the third resource is deleted from the data transfer graph.
【請求項7】 請求項3に記載のプロパティ生成装置で
あって、 上記最適化手段は、レジスタからそのレジスタの名称と
同じ名称が付与されている出力ポートにデータが転送さ
れる場合、上記出力ポートに対応するノードを上記デー
タ転送グラフから削除する。
7. The property generating apparatus according to claim 3, wherein the optimizing means outputs the data when the data is transferred from a register to an output port to which the same name as the name of the register is assigned. The node corresponding to the port is deleted from the data transfer graph.
【請求項8】 請求項3に記載のプロパティ生成装置で
あって、 上記最適化手段は、第1の資源から送出されるデータが
第2の資源のみに転送され、且つ上記第2の資源が上記
第1の資源から転送されてくるデータのみを受け取る場
合、上記第1の資源から上記第2の資源へのデータ転送
を表すエッジを上記データ転送グラフから削除する。
8. The property generating apparatus according to claim 3, wherein the optimizing means is configured to transfer data transmitted from the first resource to only the second resource, and to determine whether the second resource is transmitted to the second resource. When receiving only data transferred from the first resource, an edge representing a data transfer from the first resource to the second resource is deleted from the data transfer graph.
【請求項9】 請求項3に記載のプロパティ生成装置で
あって、 上記最適化手段は、第1の資源から第2の資源へのデー
タ転送と第1の資源から第3資源へのデータ転送との間
で転送すべきビットがオーバラップしない場合に、上記
2つのデータ転送に対応するエッジを上記データ転送グ
ラフから削除する。
9. The property generating apparatus according to claim 3, wherein said optimizing means transfers data from the first resource to the second resource and transfers data from the first resource to the third resource. If the bits to be transferred do not overlap, the edges corresponding to the two data transfers are deleted from the data transfer graph.
【請求項10】 請求項3に記載のプロパティ生成装置
であって、 上記最適化手段は、第1の資源から第2の資源へのデー
タ転送と第3の資源から第2資源へのデータ転送との間
で転送すべきビットがオーバラップしない場合に、上記
2つのデータ転送に対応するエッジを上記データ転送グ
ラフから削除する。
10. The property generating apparatus according to claim 3, wherein said optimizing means transfers data from a first resource to a second resource and transfers data from a third resource to a second resource. If the bits to be transferred do not overlap, edges corresponding to the two data transfers are deleted from the data transfer graph.
【請求項11】 請求項3に記載のプロパティ生成装置
であって、 上記最適化手段は、複数のレジスタが同一のレジスタフ
ァイルに属する場合、それら複数のレジスタに対応する
複数のノードを1つのノードに変換する。
11. The property generating device according to claim 3, wherein, when the plurality of registers belong to the same register file, the optimizing unit sets the plurality of nodes corresponding to the plurality of registers to one node. Convert to
【請求項12】 請求項1に記載のプロパティ生成装置
であって、 上記プロパティ生成手段は、資源競合およびレジスタ漏
れのうちの少なくとも1つに係わるプロパティを生成す
る。
12. The property generation device according to claim 1, wherein the property generation unit generates a property related to at least one of resource conflict and register omission.
【請求項13】 請求項1に記載のプロパティ生成装置
であって、 上記プロパティ生成手段は、あるノードに複数のファン
インエッジが接続されている場合、それら複数のファン
インエッジに対応するデータ転送に対してそれぞれ与え
られている条件に基づいて資源競合プロパティを生成す
る。
13. The property generating device according to claim 1, wherein, when a plurality of fan-in edges are connected to a certain node, the property generating unit performs data transfer corresponding to the plurality of fan-in edges. A resource conflict property is generated based on the conditions given respectively.
【請求項14】 請求項1に記載のプロパティ生成装置
であって、 上記プロパティ生成手段は、あるノードにファンインエ
ッジおよびファンアウトエッジが接続されている場合、
それらのエッジに対応するデータ転送に対してそれぞれ
与えられている条件に基づいてレジスタ漏れプロパティ
を生成する。
14. The property generating device according to claim 1, wherein the property generating unit is configured to connect a fan-in edge and a fan-out edge to a certain node.
A register leakage property is generated based on conditions given for data transfer corresponding to those edges.
【請求項15】 ハードウェア記述言語により記述され
た複数の資源およびそれらの資源を利用したデータ転送
を含むハードウェアについて検証すべきプロパティを生
成する装置であって、 上記ハードウェア記述言語で記述された資源およびデー
タ転送に対応するデータ転送グラフを生成するグラフ生
成手段と、 上記データ転送グラフのトポロジを利用して、上記ハー
ドウェア記述言語により記述されているハードウェアに
ついて検証すべきプロパティを生成するプロパティ生成
手段と、 を有するプロパティ生成装置。
15. An apparatus for generating a plurality of resources described in a hardware description language and properties to be verified for hardware including data transfer using the resources, the apparatus being described in the hardware description language. Graph generation means for generating a data transfer graph corresponding to the resources and data transfer, and a property to be verified for the hardware described in the hardware description language using the topology of the data transfer graph. Property generation means, comprising:
【請求項16】 ハードウェア記述言語により記述され
た複数の資源およびそれらの資源を利用したデータ転送
を含むハードウェアについて検証すべきプロパティを生
成する方法であって、 上記ハードウェア記述言語で記述された資源およびデー
タ転送に対応するデータ転送グラフを生成し、 そのデータ転送グラフを最適化し、 その最適化されたデータ転送グラフを利用して、上記ハ
ードウェア記述言語により記述されているハードウェア
について検証すべきプロパティを生成するプロパティ生
成方法。
16. A method of 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, the method being described in the hardware description language. Generates a data transfer graph corresponding to the resources and data transferred, optimizes the data transfer graph, and verifies the hardware described in the above hardware description language using the optimized data transfer graph A property generation method that generates the properties that should be.
【請求項17】 ハードウェア記述言語により記述され
た複数の資源およびそれらの資源を利用したデータ転送
を含むハードウェアについて検証すべきプロパティを生
成するためのプログラムを格納した記録媒体であって、 上記プログラムがコンピュータにより実行されたとき
に、 上記ハードウェア記述言語で記述された資源およびデー
タ転送に対応するデータ転送グラフを生成する手段と、 そのデータ転送グラフを最適化する手段と、 その最適化されたデータ転送グラフを利用して、上記ハ
ードウェア記述言語により記述されているハードウェア
について検証すべきプロパティを生成する手段とを提供
する記録媒体。
17. A recording medium storing a program for generating a property to be verified for hardware including a plurality of resources described in a hardware description language and data transfer using those resources, wherein: Means for generating a data transfer graph corresponding to the resources and data transfer described in the hardware description language when the program is executed by a computer; means for optimizing the data transfer graph; A means for generating a property to be verified for hardware described in the hardware description language using the data transfer graph.
JP32134699A 1999-11-11 1999-11-11 Apparatus and method for generating properties to be verified for hardware Expired - Fee Related JP3943299B2 (en)

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 true JP2001142918A (en) 2001-05-25
JP3943299B2 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)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7536620B2 (en) 2002-10-09 2009-05-19 Fujitsu Microelectronics Limited Method of and apparatus for validation support, computer product for validation support
JP2009140028A (en) * 2007-12-03 2009-06-25 Sharp Corp Hardware verification programming description generation apparatus, hardware verification programming description generation method, control program, and readable recording medium
JP2009230667A (en) * 2008-03-25 2009-10-08 Nec Corp Property generation system and property verification system
KR20130094932A (en) * 2012-02-17 2013-08-27 (주)에프엑스기어 System and method creating node graph using port-edge system
JP2020514914A (en) * 2017-03-16 2020-05-21 レイセオン カンパニー Property graph data model representing system architecture

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7536620B2 (en) 2002-10-09 2009-05-19 Fujitsu Microelectronics Limited Method of and apparatus for validation support, computer product for validation support
JP2009140028A (en) * 2007-12-03 2009-06-25 Sharp Corp Hardware verification programming description generation apparatus, hardware verification programming description generation method, control program, and readable recording medium
JP2009230667A (en) * 2008-03-25 2009-10-08 Nec Corp Property generation system and property verification system
KR20130094932A (en) * 2012-02-17 2013-08-27 (주)에프엑스기어 System and method creating node graph using port-edge system
JP2020514914A (en) * 2017-03-16 2020-05-21 レイセオン カンパニー Property graph data model representing system architecture

Also Published As

Publication number Publication date
JP3943299B2 (en) 2007-07-11

Similar Documents

Publication Publication Date Title
US7370296B2 (en) Modeling language and method for address translation design mechanisms in test generation
CN111931181B (en) Software logic vulnerability detection method based on graph mining
JP2000148808A (en) Method for verifying correctness of structural rtl for scheduled motion description
CN118571297B (en) A storage circuit verification method and computing device
CN113255258A (en) Logic synthesis method and device, electronic equipment and storage medium
JP4099974B2 (en) Method, apparatus, and program for verifying equivalence between behavior level description and register transfer level description
JP2000207440A (en) Apparatus, method and storage medium for design verification of semiconductor integrated circuit
CN111259619B (en) Control method and device for configuration object, storage medium and verification platform
JP3943299B2 (en) Apparatus and method for generating properties to be verified for hardware
US6516306B1 (en) Model checking of message flow diagrams
JP2801931B2 (en) Logic design processing device, circuit conversion rule translation device, and circuit conversion rule translation method
JP2000242672A (en) Formal logic verification device and formal logic verification method
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
US6377909B1 (en) Method and apparatus for preparing a logic simulation model and recording medium for storing the same
CN119026556B (en) Integrated circuit IC modeling method based on graph theory
US7350162B2 (en) Structure analytic program
CN114417763B (en) Form verification method, system, equipment and storage medium
CN116340145B (en) Simulation software testing method based on sleep area variation
CN120086113B (en) Conversion method of function coverage rate code, computer equipment and medium
CN120145956B (en) Method and system for efficiently simplifying digital logic circuit
CN120597788A (en) Top layer physical design method and device, electronic equipment and chip
JP6102425B2 (en) Test data generation program, test data generation method, and test data generation apparatus
CN120011237A (en) A test case generation method and system based on dependency graph

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