JPH06290230A - Logical simulation device - Google Patents
Logical simulation deviceInfo
- Publication number
- JPH06290230A JPH06290230A JP5073988A JP7398893A JPH06290230A JP H06290230 A JPH06290230 A JP H06290230A JP 5073988 A JP5073988 A JP 5073988A JP 7398893 A JP7398893 A JP 7398893A JP H06290230 A JPH06290230 A JP H06290230A
- Authority
- JP
- Japan
- Prior art keywords
- circuit
- logic
- primitive
- loop
- primitives
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
(57)【要約】
【目的】本発明は、レベルソート法を用いた論理シミュ
レーションにおいてループを含む論理回路をシミュレー
ションすることができる論理シミュレーション装置を提
供する。
【構成】シミュレーション対象の論理回路から分離され
る組合せ回路部より複数のプリミティブA、B、Pのル
ープ回路を抽出し、この回路中のプリミティブPの出力
を除去して第1の回路を生成するとともに、プリミティ
ブPの前回の出力信号値を記憶するプリミティブPOを
用意して、第1の回路を複製したプリミティブA´、B
´、P´の第2の回路を用い、第2および第1の回路と
プリミティブPOによる縦続接続回路を構成し、さらに
第2の回路の各プリミティブに対し第1の回路の各プリ
ミティブに対する入力と同じ入力を接続する。
(57) [Summary] [Object] The present invention provides a logic simulation apparatus capable of simulating a logic circuit including a loop in a logic simulation using a level sorting method. [Structure] A loop circuit of a plurality of primitives A, B, and P is extracted from a combinational circuit section separated from a logic circuit to be simulated, and the output of the primitive P in this circuit is removed to generate a first circuit. At the same time, a primitive PO that stores the previous output signal value of the primitive P is prepared, and the primitives A ′ and B that duplicate the first circuit are prepared.
The second circuit of 'and P'is used to form a cascade connection circuit of the second and first circuits and the primitive PO, and further, for each primitive of the second circuit, as an input to each primitive of the first circuit. Connect the same inputs.
Description
【0001】[0001]
【産業上の利用分野】本発明はプログラム可能な素子を
用いて論理回路の検証を行なうシミュレーションシステ
ムに関するものである。BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a simulation system for verifying a logic circuit using programmable elements.
【0002】[0002]
【従来の技術】LSIの集積度の向上にともない、近年
の計算機の大規模化、複雑化は著しいものがある。従っ
て、このような大規模計算機を開発するについては、そ
の開発に要する期間、コストを低く抑えることが益々重
要になっており、このために、シミュレーションによる
システム機能、システム性能の検証の重要性が一段と高
まっている。2. Description of the Related Art With the improvement in the degree of integration of LSIs, there has been a remarkable increase in the scale and complexity of computers in recent years. Therefore, when developing such a large-scale computer, it is becoming more and more important to keep the development period and cost low. For this reason, it is important to verify the system function and system performance by simulation. It is increasing.
【0003】そこで、論理回路を用いたシステムを設計
する場合も、論理回路をモデル化し、それを論理シミュ
レーションすることにより設計検証することが、システ
ムの開発期間を短縮するため、また設計の完成度を高め
るために必要な工程として用いられている。Therefore, when designing a system using a logic circuit, it is necessary to model the logic circuit and verify the design by performing a logic simulation to shorten the development period of the system, and also the degree of completion of the design. It is used as a necessary process to increase the
【0004】論理回路をソフトウエアで論理シミュレー
ションする場合、回路規模が大きくなるとモデルの記述
量が膨大になるためシミュレーション時間は必然的に膨
大になる。In the case of logic simulation of a logic circuit by software, the simulation time inevitably increases because the description amount of the model increases as the circuit scale increases.
【0005】そこで、シミュレーションの高速化のため
さまざまな工夫がなされているが、その一つにレベルソ
ート法がある。Therefore, various efforts have been made to speed up the simulation, one of which is the level sorting method.
【0006】このレベルソート法は、あらかじめゲート
の評価順序を決定しておき、シミュレーション実行時に
はこの静的な順序にしたがって評価を行なうようにして
いる。そして、レベルソート法における評価順序の決定
は、「ゲートgの評価は、gの入力側にあるゲートの評
価を修了した後に行なう」というルールの下に行なうよ
うにしており、同期回路の組合せ回路部に関して、回路
安定時の最終値を計算することを目的としている。In this level sorting method, the evaluation order of gates is determined in advance, and the evaluation is performed according to this static order when the simulation is executed. The evaluation order in the level sorting method is determined under the rule that "the evaluation of the gate g is performed after the evaluation of the gate on the input side of g is completed". The purpose is to calculate the final value when the circuit is stable.
【0007】一方、特開平4−243755号公報によ
り時分割エミュレータの提案もなされているが、このよ
うな時分割エミュレータにおいては、各タイムスライス
に割り当てる論理演算はレベルソートされていることが
必要である。On the other hand, Japanese Patent Laid-Open No. 4-243755 proposes a time-division emulator. However, in such a time-division emulator, the logical operation assigned to each time slice needs to be level-sorted. is there.
【0008】しかして、このようなレベルソート法によ
れば、通常、組合せ回路部はループを含まないように設
計され、組合せ回路部のモデルもループを含まないの
で、先ほど述べたルールで評価順序を決めるレベルソー
ト法でシミュレーションするのにほとんどの場合は問題
はないが、実際には組合せ回路部にループが含まれる論
理回路が設計されることがあり、このような回路では先
ほど述べたルールに沿った評価順序が決定できないため
レベルソート法では扱うことができなかった。However, according to such a level sorting method, the combinational circuit section is usually designed so as not to include a loop, and the model of the combinational circuit section does not include a loop. In most cases, there is no problem in simulating with the level sorting method that decides, but in practice, a logic circuit that includes a loop in the combinational circuit part may be designed. Since the evaluation order along the line cannot be determined, it cannot be handled by the level sorting method.
【0009】一方、論理回路をシミュレートするシステ
ムの一つに、ハードウェアエミュレータがある。ハード
ウェアエミュレータは、相互接続された複数の論理ブロ
ックからなり、各論理ブロックが、検証対象の回路の動
作と同じ動作をすることにより、回路の論理シミュレー
ションを高速に行なう。論理ブロックとして、例えばF
PGA(Field Programmable Ga
te Array)と呼ばれるプログラム可能なゲート
アレイがある。FPGAは多数のプログラム可能素子か
らなり、それぞれのプログラム可能素子が一つまたは複
数の回路素子の動作をシミュレートする。On the other hand, one of the systems for simulating a logic circuit is a hardware emulator. The hardware emulator is composed of a plurality of interconnected logic blocks, and each logic block performs the same operation as the operation of the circuit to be verified, thereby performing a logic simulation of the circuit at high speed. As a logical block, for example, F
PGA (Field Programmable Ga)
There are programmable gate arrays called te Arrays. FPGAs consist of a number of programmable elements, each programmable element simulating the operation of one or more circuit elements.
【0010】シミュレーション対象回路のプログラム可
能素子への割り付け(マッピング)及びプログラム可能
素子間の接続の決定は、コンパイラが行なう。コンパイ
ラによるマッピングの結果得られたそれらのプログラム
情報は、通常シミュレーションの前にエミュレータ内の
メモリにロードされ、シミュレーション時にエミュレー
タがプログラム可能素子の動作を決定するのに使われ
る。The compiler determines the allocation (mapping) of the circuit to be simulated to the programmable elements and the connection between the programmable elements. The program information obtained as a result of the mapping by the compiler is usually loaded into the memory in the emulator before the simulation and used by the emulator during the simulation to determine the behavior of the programmable device.
【0011】ハードウェアエミュレータの欠点の一つは
コンパイル時間が膨大なことである。これは次の理由に
よる。従来のエミュレータアーキテクチャは、隣接する
者同士のみを結ぶメッシュ構造に代表されるようにFP
GA間の配線の自由度が小さい。また、FPGAは組み
込み用途のものが大部分であるため、やはり配線の自由
度が少ない。従って、FPGAの回路充填率を上げるた
めには、自由度の少ない配線手段でいかに対象回路のマ
ッピングを実現するかが重要である。One of the drawbacks of hardware emulators is the huge compilation time. This is for the following reason. The conventional emulator architecture uses a FP as represented by a mesh structure that connects only adjacent persons.
The flexibility of wiring between GAs is small. Moreover, since most FPGAs are for embedded use, the degree of freedom in wiring is also low. Therefore, in order to increase the circuit filling rate of the FPGA, it is important to realize the mapping of the target circuit with the wiring means having a small degree of freedom.
【0012】このような問題に対する解決策として確率
的アルゴリズム以外に効率のよいものは知られていな
い。通常はシミュレーティッドアニーリング法のよう
に、望ましいマッピングができるまで最適化を繰り返す
確率的方法が採られている。しかし、このような方法で
は回路規模が大きくなるに従い、マッピングに膨大な時
間がかかり、回路が1Mゲート規模と大きい場合、コン
パイルが終了するのに数日かかってしまうこともある。
コンパイル時間の増加はシステム検証のターンアラウン
ドの増加につながるため、マッピングアルゴリズムの高
速化は極めて重要である。As a solution to such a problem, no efficient one is known other than the stochastic algorithm. Usually, a stochastic method such as a simulated annealing method is used in which optimization is repeated until a desired mapping is achieved. However, in such a method, as the circuit scale becomes large, it takes a huge amount of time for mapping, and when the circuit is as large as 1M gate, it may take several days to complete the compilation.
Since the increase of compile time leads to the increase of turnaround of system verification, the speedup of mapping algorithm is extremely important.
【0013】このように配線自由度が少ないエミュレー
タでは、効率の良いマッピング方式を実現することは容
易でない。このため、上述した特開平4−243755
号公報では、完全クロスバに代表される配線の自由度が
豊富なエミュレータアーキテクチャが開示されている。
このアーキテクチャでは、プログラム可能素子は多段に
結合された構造であり、プログラム可能素子を時分割に
利用できるという特長もある。また、予めシミュレーシ
ョン対象回路をレベルソートしておき、回路素子のうち
入力から数えたレベルの小さいものから大きいものへと
順にエミュレータ中のプログラム可能素子にマッピング
することによって、バックトラックをほとんど必要とし
ない、高速なマッピングが可能であることが示されてい
る。As described above, it is not easy to implement an efficient mapping method with an emulator having a low degree of wiring freedom. Therefore, the above-mentioned JP-A-4-243755.
The publication discloses an emulator architecture represented by a perfect crossbar, which has a large degree of freedom in wiring.
In this architecture, the programmable elements have a structure in which they are connected in multiple stages, and the programmable elements can be used for time division. Also, back-tracking is almost unnecessary by preliminarily level-sorting the circuit to be simulated and mapping the circuit elements in order from the smallest to the largest level counted from the input to the programmable elements in the emulator. It has been shown that fast mapping is possible.
【0014】しかし、このような単純なアルゴリズムで
は、マッピングが単純な分、「プログラム可能素子の回
路充填率」(プログラム可能素子1個当りに割当てられ
ている平均回路素子数)が不十分になるという傾向があ
る。However, in such a simple algorithm, since the mapping is simple, the "circuit filling factor of the programmable element" (the average number of circuit elements allocated per programmable element) becomes insufficient. Tends to.
【0015】プログラム可能素子を同数有するエミュレ
ータでは、シミュレーション可能な回路規模は回路充填
率に比例するため、回路充填率が低いことは、シミュレ
ーション可能な回路規模が小さいことを意味しており、
従って、多段結合アーキテクチャのエミュレータにおい
ては、マッピング方式の工夫により、回路充填率を向上
させることが重要である。In an emulator having the same number of programmable elements, the circuit size that can be simulated is proportional to the circuit filling rate. Therefore, a low circuit filling rate means that the circuit size that can be simulated is small.
Therefore, it is important to improve the circuit filling rate by devising the mapping method in the emulator of multi-stage connection architecture.
【0016】[0016]
【発明が解決しようとする課題】このように従来のシミ
ュレーションの高速化のために適用されるレベルソート
法によると、組合せ回路部にループが含まれるような論
理回路が設計された場合、このような回路ではレベルソ
ート法によるルールで評価順序が決定できないことから
扱うことができないという問題点があった。As described above, according to the level sorting method applied for speeding up the conventional simulation, when a logic circuit including a loop in a combinational circuit is designed, However, there is a problem that such circuits cannot be handled because the evaluation order cannot be determined by the rule based on the level sorting method.
【0017】また、従来の多段に結合されたプログラム
可能素子から構成される論理回路シミュレーションシス
テムでは、論理回路の割り付けにおけるプログラム可能
素子の回路充填率が十分でなく、大規模の回路のシミュ
レーションが難しいと言う問題点があった。Further, in the conventional logic circuit simulation system composed of programmable elements connected in multiple stages, the circuit filling rate of the programmable elements in the allocation of the logic circuit is not sufficient, and it is difficult to simulate a large-scale circuit. There was a problem called.
【0018】本発明は、上記事情に鑑みてなされたもの
で、レベルソート法を用いた論理シミュレーションにお
いてループを含む論理回路をシミュレーションすること
ができ、しかも論理回路中のループがシミュレーション
時に発振するか否かも検出できる論理シミュレーション
装置を提供することを目的とする。The present invention has been made in view of the above circumstances, and it is possible to simulate a logic circuit including a loop in a logic simulation using the level sorting method, and whether the loop in the logic circuit oscillates during the simulation. It is an object of the present invention to provide a logic simulation device capable of detecting whether or not there is no.
【0019】また、本発明は、多段に結合されたプログ
ラム可能素子から構成される論理回路シミュレーション
システムにおいて、論理回路の割り付けにおけるプログ
ラム可能素子の回路充填率の向上させ、より大規模の回
路をシミュレーション可能にした論理エミュレータを提
供することを目的とする。Further, according to the present invention, in a logic circuit simulation system composed of programmable elements connected in multiple stages, the circuit filling rate of the programmable elements in the allocation of the logic circuit is improved to simulate a larger scale circuit. The purpose is to provide an enabled logic emulator.
【0020】[0020]
【課題を解決するための手段】本発明は、論理回路をレ
ベルソート法を用いてシミュレーションを行なう論理シ
ミュレーション装置において、シミュレーション対象と
なる論理回路を格納する手段と、前記論理回路を組み合
わせ回路部と状態記憶部とに分離する手段と、この手段
で分離された組合せ回路部より複数の論理素子から構成
されるループからなる回路Aを抽出する手段と、前記回
路A中の論理素子の一つの論理素子Zについてその出力
を取り去った回路Xを作成する手段、前記論理素子Zの
前回の出力信号値を記憶する記憶素子Uを作成する手
段、前記回路Xを複製した回路Yを用いて、前記回路
Y、回路Xおよび記憶素子Uの縦続接続回路を構成する
手段を有する回路変換手段とを具備し、前記回路Yの各
論理素子に対し前記回路Xの各論理素子に対する入力と
同じ入力を接続するようにしている。According to the present invention, in a logic simulation apparatus for simulating a logic circuit by using a level sort method, a means for storing a logic circuit to be simulated, a combinational circuit section for combining the logic circuits, and Means for separating into a state storage section, means for extracting a circuit A consisting of a loop composed of a plurality of logic elements from the combinational circuit section separated by this means, and one logic of the logic elements in the circuit A A circuit X is obtained by using means for creating a circuit X from which the output of the element Z is removed, means for creating a memory element U for storing the previous output signal value of the logic element Z, and a circuit Y replicating the circuit X. Y, a circuit X, and a circuit conversion means having means for forming a cascade connection circuit of the memory elements U. X is to be connected to the same input as the input for the logic elements.
【0021】また、本発明は、再プログラム可能な複数
の論理ブロックを多段結合した論理エミュレータにおい
て、入力側からの信号の流れの順にレベルソートされた
プリミティブグラフを入力側から数えて一定のレベルご
とに区切ることで複数の連結成分を生成し、これら連結
成分ごとに論理ブロックに割り付けるようにしている。Further, the present invention is, in a logic emulator in which a plurality of reprogrammable logic blocks are connected in multiple stages, a primitive graph level-sorted in the order of signal flow from the input side is counted from the input side at a constant level. A plurality of connected components are generated by partitioning into, and each connected component is assigned to a logical block.
【0022】[0022]
【作用】この結果、本発明によれば、組合せ回路部にル
ープを含む論理回路モデルに対し、切断したループを二
つ縦続接続して等価回路モデルに変換することによりレ
ベルソート法によるシミュレーションを行うことがで
き、また、変換前の回路のループの発振の検証も可能に
なる。つまり、論理回路モデルにおいて扱う信号値が2
値(例えば“0”、“1”)しかとらないことから、ル
ープを2周分だけ評価することにより、論理回路モデル
のループの評価、すなわちループの発振の検出とループ
が発振しない場合によりループ中の論理素子の評価を行
うことができる。As a result, according to the present invention, a logic circuit model including a loop in a combinational circuit section is converted into an equivalent circuit model by connecting two disconnected loops in cascade to perform simulation by the level sorting method. It is also possible to verify the oscillation of the loop of the circuit before conversion. That is, the signal value handled in the logic circuit model is 2
Since it takes only a value (for example, “0” or “1”), the loop is evaluated for two rounds to evaluate the loop of the logic circuit model, that is, the detection of the loop oscillation and the loop depending on the case where the loop does not oscillate. An evaluation of the logic elements inside can be performed.
【0023】また、再プログラム可能な複数の論理ブロ
ックからなる論理エミュレータにおいて、各論理ブロッ
クへの論理回路の割り付けの際に、入力側から数えて一
定のレベルごとに区切って得られる回路の連結成分を単
位として割り付けを行なうことで、接続が内部で閉じて
いる回路部分を同一の論理ブロックに割り付けることが
できるようになり、その結果として、プログラム可能素
子の回路充填率が向上し、より大規模の回路のシミュレ
ーションが可能になる。In addition, in a logic emulator composed of a plurality of reprogrammable logic blocks, when allocating a logic circuit to each logic block, a connected component of the circuit obtained by dividing from the input side by a certain level is obtained. By assigning as a unit, it becomes possible to assign the circuit part whose connection is internally closed to the same logic block, and as a result, the circuit filling factor of the programmable element is improved and the scale is increased. It is possible to simulate the circuit.
【0024】[0024]
【実施例】以下、本発明の一実施例を図面に従い説明す
る。DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS An embodiment of the present invention will be described below with reference to the drawings.
【0025】図1は、実施例の概略構成を示している。
この場合、シミュレーション部11、回路モデルを格納
する回路モデル格納部12、組合せ回路部と状態記憶部
を分離する分離部13、ループからなる回路を検出する
ループ回路検出部14、ループからなる回路を等価な回
路に変換する変換部15から構成されている。FIG. 1 shows a schematic configuration of the embodiment.
In this case, the simulation unit 11, the circuit model storage unit 12 that stores the circuit model, the separation unit 13 that separates the combinational circuit unit and the state storage unit, the loop circuit detection unit 14 that detects a loop circuit, and the loop circuit It is composed of a conversion unit 15 for converting into an equivalent circuit.
【0026】そして、このように構成した装置は、図2
に示すステップ2001〜ステップ2006の手順に従
って処理が進められる。The apparatus thus constructed is shown in FIG.
The process proceeds according to the procedure of steps 2001 to 2006 shown in FIG.
【0027】この場合、論理シミュレータへ入力される
論理回路はネットリストによって表現されている。そし
て、これをシステムの内部表現にモデル化する。In this case, the logic circuit input to the logic simulator is represented by a netlist. Then, this is modeled as an internal representation of the system.
【0028】シミュレーション部11は、このようなモ
デル化手段を有している。本実施例ではこのモデル化
は、ネットリスト中の論理素子間接続情報を、プリミテ
ィブのノードとしてそれら間の配線を枝とするプリミテ
ィブグラフに変換することによって行なわれる。ここ
で、プリミティブとは、シミュレーションの1単位であ
り、一つあるいは複数の論理素子の集まりに対応する。
ここでは、信号値は“0”または“1”の2値しか取ら
ないとする。また、外部入力信号端子・外部出力信号端
子は論理素子ではないが、便宜上それらを特別なプリミ
ティブで表現する。以後これらのプリミティブを入力プ
リミティブ・出力プリミティブと呼ぶことにする。ま
た、各プリミティブにはそれぞれ異なるidをつける。The simulation section 11 has such modeling means. In this embodiment, this modeling is performed by converting the connection information between the logic elements in the netlist into a primitive graph having the wiring between them as the nodes of the primitives. Here, the primitive is one unit of simulation and corresponds to a group of one or a plurality of logic elements.
Here, it is assumed that the signal value takes only two values of "0" or "1". Although the external input signal terminal and the external output signal terminal are not logic elements, they are represented by special primitives for convenience. Hereinafter, these primitives will be referred to as input primitives and output primitives. Also, each primitive is given a different id.
【0029】回路モデル格納部12では、プリミティブ
グラフに関する情報を記憶している。この場合、プリミ
ティブグラフは配列の形で格納される。この場合、プリ
ミティブを表す配列要素は、図3に示すように、そのプ
リミティブのid、そのプリミティブの機能(AND,
OR,NOT,フリップフロップなど)、そのプリミテ
ィブからの出力先のプリミティブのidのリスト、その
プリミティブへの入力元のプリミティブのidのリス
ト、その他入力からのレベルの情報、ループ検出に必要
な情報などを格納するフィールドからなっている。The circuit model storage unit 12 stores information about the primitive graph. In this case, the primitive graph is stored in the form of an array. In this case, the array element representing the primitive is, as shown in FIG. 3, the id of the primitive, the function (AND,
OR, NOT, flip-flop, etc.), a list of ids of primitives of the output destination from the primitive, a list of ids of primitives of the input source to the primitive, other level information from the input, information necessary for loop detection, etc. Consists of a field that stores.
【0030】そして、組合せ回路と状態記憶部を分離す
る分離部13により回路モデル格納部12に格納された
回路モデル中のフリップフロップそれぞれに対し、新た
に入力ブリミティブと出力プリミティブを作成し、回路
モデルからフリップフロップを強連結成分に分離し、フ
リップフロップへの入力枝を出力プリミティブに、フリ
ップフロップからの入力枝を入力プリミティブにそれぞ
れ接続する。Then, an input primitive and an output primitive are newly created for each flip-flop in the circuit model stored in the circuit model storage unit 12 by the separation unit 13 for separating the combinational circuit and the state storage unit, and the circuit model is created. To a strongly connected component, the input branch to the flip-flop is connected to the output primitive, and the input branch from the flip-flop is connected to the input primitive.
【0031】ここで、図4(a)(b)に示すように強
連結成分Aは、有向グラフにおいて有向枝を経由して互
いに行き来できる(到達可能である)ようなノードの集
合と、その集合の要素であるノード間を結ぶ有向枝の集
合の対で定義される。ただし自分自身は到達可能である
ので、ノード一つからなる強連結成分も存在し、もし強
連結成分中に複数のノードが含まれればそれはループの
存在を意味する。Here, as shown in FIGS. 4 (a) and 4 (b), the strongly connected component A is a set of nodes which can come and go (reach) to each other via a directional branch in a directed graph, and its set. It is defined by a pair of directed branches that connect the nodes that are the elements of the set. However, since it is reachable by itself, there is also a strongly connected component consisting of one node, and if multiple nodes are included in the strongly connected component, it means the existence of a loop.
【0032】ここで、プリミティブグラフを強連結成分
に分解する方法を簡単に述べる。Here, a method of decomposing the primitive graph into strongly connected components will be briefly described.
【0033】まず、グラフ中のプリミティブPOを選択
しそこから有向枝に沿って探索を開始する。もし、PO
に戻るようなことがあれば探索パスはループになってい
る。この様なループをまとめることにより強連結成分が
得られる。POに戻るパスがなければPOはそれ自身が
強連結成分になる。探索を開始するプリミティブPO
は、それまでに得られたどの強連結成分にも含まれない
プリミティブから選ぶ。そして、選択できるプリミティ
ブがなくなるまで上記操作を行えば、最終的に強連結成
分に分解されたプリミティブグラフが得られることにな
る。First, the primitive PO in the graph is selected and the search is started from there along the directed edge. If PO
If there is something like returning to, the search path is a loop. Strongly connected components can be obtained by putting together such loops. If there is no path to return to PO, PO itself becomes a strongly connected component. Primitive PO to start searching
Selects from primitives that are not included in any strongly connected components obtained so far. Then, if the above operation is performed until there are no more selectable primitives, a primitive graph decomposed into strongly connected components is finally obtained.
【0034】このような方法は、グラフを強連結成分へ
分解する一例であり、より効率的な手順およびその詳細
は、例えば「アルゴリズムの設計と解析I,II(サイ
エンス社、1977)p.170〜p.177」に開示
されている。Such a method is an example of decomposing a graph into strongly connected components, and a more efficient procedure and its details are described in, for example, “Algorithm Design and Analysis I, II (Science Co., 1977) p. 170. ~ P. 177 ".
【0035】もし、プリミティブグラフにループがなけ
れば、各強連結成分はプリミティブを一つだけしか含ま
ない。プリミティブグラフがループを含めば、そのルー
プは二つ以上のプリミティブからなる強連結成分が存在
することと同値である。If there are no loops in the primitive graph, each strongly connected component contains only one primitive. If the primitive graph contains a loop, the loop is equivalent to the existence of a strongly connected component consisting of two or more primitives.
【0036】従って、各強連結成分に含まれるプリミテ
ィブが一つだけなら、プリミティブグラフはループは含
まないので、そのままプリミティブグラフの交換は行わ
なくて良い。Therefore, if only one primitive is included in each strongly connected component, the primitive graph does not include a loop, and the primitive graphs do not need to be exchanged as they are.
【0037】問題は、ある強連結成分が複数のプリミテ
ィブを含む場合である。この場合はグラフはループを含
んでいるので、ループからなる回路を等価な回路に変換
する変換部5を用いるようになる。The problem is that a strongly connected component contains multiple primitives. In this case, since the graph includes a loop, the conversion unit 5 that converts a circuit including the loop into an equivalent circuit is used.
【0038】ここで、かかる変換部15での変換動作は
次のようになる。Here, the conversion operation in the conversion unit 15 is as follows.
【0039】まず、単純な例として図5に示すようにプ
リミティブA、B、Pからなる一重のループを考える。
このとき回路モデル格納部2においてループLは、図6
に示すように表現されている。First, as a simple example, consider a single loop consisting of primitives A, B, and P as shown in FIG.
At this time, the loop L in the circuit model storage unit 2 is as shown in FIG.
It is expressed as shown in.
【0040】この状態から、 (1)図7のようにループL中のプリミティブを一つ選
ぶ。選び方は任意であるが、ここではPを選ぶことにす
る。この場合、ループ中でPからの出力を受けているの
はAであるが、ループLを構成する枝の中からプリミテ
ィブPからAへ向かう枝を除去する。From this state, (1) one primitive in the loop L is selected as shown in FIG. The method of selection is arbitrary, but here P is selected. In this case, although it is A that receives the output from P in the loop, the branch from the primitive P to A is removed from the branches forming the loop L.
【0041】次に、プリミティブPの前クロックにおけ
る値を出力するようなプリミティブPFを状態記憶部に
加え、PFからの出力を与える入力プリミティブPI
と、PFへの入力を与える出力プリミティブPOを新た
にプリミティブグラフに加える。 図8は回路モデルを
格納する回路モデル格納部12に格納された図7に示す
プリミティブグラフを図3に示すデータ構造で表したも
のである。プリミティブPを表す配列要素の出力先プリ
ミティブのリストからAのidが取り除かれ、Aを表す
配列要素のAへの入力元プリミティブのリストからPの
idが取り除かれる。また、PI、POを表す配列要素
が配列に加えられる。Next, an input primitive PI that gives an output from the PF is added to the state storage unit with a primitive PF that outputs the value at the previous clock of the primitive P.
Then, an output primitive PO that gives an input to the PF is newly added to the primitive graph. FIG. 8 shows the primitive graph shown in FIG. 7 stored in the circuit model storage unit 12 that stores the circuit model, in the data structure shown in FIG. The id of A is removed from the list of the output destination primitives of the array element representing the primitive P, and the id of P is removed from the list of the input source primitives of the array element representing A to A. Further, array elements representing PI and PO are added to the array.
【0042】(2)次に、図9に示すように、(1)に
よってLから得られるループを含まない部分グラフをL
1とし、部分グラフL1と同一構造の部分グラフL1′
を作る。A′とP′も同様に定義する。(2) Next, as shown in FIG. 9, a subgraph that does not include a loop obtained from L by (1) is L
1 and a subgraph L1 ′ having the same structure as the subgraph L1
make. A'and P'are similarly defined.
【0043】図10は、図9に示すプリミティブグラフ
を図3に示すデータ構造で表したものである。L1内の
プリミティブを表す配列要素の複製が新たに加えられ
る。L1内での接続関係を保存するように作成した配列
要素の入出力リストにidが加えられる。FIG. 10 shows the primitive graph shown in FIG. 9 in the data structure shown in FIG. A new copy of the array element representing the primitive in L1 is added. The id is added to the input / output list of the array element created so as to save the connection relation in L1.
【0044】(3)L1′への入力枝として、L1への
入力枝に対応する入力枝を付ける。(図11では、11
01〜1104に対応する2101〜2104を付け
る。)また、L1′のP′からAへの枝と、PIから
A′への枝、PからPOへの枝をプリミティブグラフに
付け加える。(3) As an input branch to L1 ', an input branch corresponding to the input branch to L1 is attached. (In FIG. 11, 11
2101 to 2104 corresponding to 01 to 1104 are attached. ) Also, add a branch from P'to A of L1 ', a branch from PI to A', and a branch from P to PO to the primitive graph.
【0045】図10は、図9に示すプリミティブグラフ
を図3に示すデータ構造で表したものである。(2)で
作成した配列要素A´B´P´(idすなわちL1´中
のプリミティブを示す配列要素)の入力リストにS、
T、Uのidが付け加えられる。また、図に記入してい
ないが、S、T、Uの出力リストには、A´、B´、P
´idが付け加えられる。次に、A´の入力リストにP
のidが、PIの出力リストにA´のidがそれぞれ付
け加えられ(すなわち、PIからA´への入力枝が付け
加えられ)、Aの入力リストにP´のid、P´の出力
リストにAのidがそれぞれ付け加えられ(すなわち、
P´からAへの入力枝が付け加えられる)。また、Pの
出力リストにPOのid、POの入力リストにPのid
が付け加えられる。すなわち、PからPOへの枝が付け
加えられる。FIG. 10 shows the primitive graph shown in FIG. 9 in the data structure shown in FIG. S in the input list of the array element A'B'P '(id, that is, the array element indicating the primitive in L1') created in (2),
T and U ids are added. Although not shown in the figure, the output lists of S, T, and U have A ′, B ′, P.
'Id is added. Next, P in the input list of A '
Id of A'is added to the output list of PI (that is, the input branch from PI to A'is added), the id of P'is added to the input list of A, and the output list of P'is A. Id of each is added (ie,
The input branch from P'to A is added). In addition, the PO output list has a PO id, and the PO input list has a P id.
Is added. That is, a branch from P to PO is added.
【0046】この様にして得られたプリミティブグラフ
がもとのプリミティブグラフと論理的に等価であること
と、ループの発振の検出が可能であることを、図5およ
び図11を用いて説明する。ここでいう発振とは、ルー
プ中に信号値の反転が奇数回現われ、信号値の確定がで
きなくなることをいう。The fact that the primitive graph thus obtained is logically equivalent to the original primitive graph and that the oscillation of the loop can be detected will be described with reference to FIGS. 5 and 11. . The oscillation referred to here means that the signal value is inverted an odd number of times in the loop, and the signal value cannot be determined.
【0047】図11において、ループを展開した部分E
LへはPIおよびS、T、Uの四つのプリミティブから
の入力がある。プリミティブS、T、Uの評価が行なわ
れた後EL中のプリミティブの評価が行なわれる。図1
1におけるP′、Pの値は、それぞれ図5におけるルー
プの一周目、二周目のPの値に相当する。In FIG. 11, the part E where the loop is expanded
L has inputs from PI and four primitives S, T, and U. After the primitives S, T and U have been evaluated, the primitives in EL are evaluated. Figure 1
The values of P ′ and P in 1 correspond to the values of P on the first and second rounds of the loop in FIG. 5, respectively.
【0048】いま、あるクロックでのEL中のプリミテ
ィブの信号値の評価が行なわれたとする。そして、ま
ず、評価の結果P′の信号値とPIの信号値が同じにな
った場合、同じ入力が変換前のプリミティブグラフに与
えられるとPの信号値は変化しないことになる。Now, it is assumed that the signal value of the primitive in EL at a certain clock is evaluated. Then, when the signal value of P'is equal to the signal value of PI as a result of the evaluation, the signal value of P does not change when the same input is given to the pre-conversion primitive graph.
【0049】次に、P′の信号値とPIの信号値が異な
るがP′とPの信号値が同じである場合、同じ入力を変
換前のループに与えるとPの信号値は一度だけ変化し確
定する。これは図5においてループを何周か順をおって
評価するとわかりやすい。Next, when the signal value of P'is different from the signal value of PI but the signal values of P'and P are the same, if the same input is given to the loop before conversion, the signal value of P changes only once. And confirm. This can be easily understood by evaluating the loop several times in order in FIG.
【0050】一周目においてPの値は内部状態として持
っていた自分自身の値とS、T、Uからの入力によって
変化する。二周目においてPの値は、一周目において得
られたPの信号値とS、T、Uの信号値によってきまる
が、もし、二周目のPの値が一周目のPの値と等しけれ
ば(図11でP′とPの信号値が等しければ)、二周目
以後のループ評価においてPの値は変化しない。なぜな
ら、二周目以後はPを評価するための入力、すなわち前
の周でのPの信号値とS、T、Uが変化しないからであ
る。よって、ループは発振しない。In the first round, the value of P changes depending on its own value held as an internal state and the inputs from S, T, and U. The value of P on the second lap depends on the signal value of P and the signal values of S, T, and U obtained on the first lap, but if the value of P on the second lap is equal to the value of P on the first lap, In this case (if the signal values of P'and P in FIG. 11 are equal), the value of P does not change in the loop evaluation after the second round. This is because after the second round, the input for evaluating P, that is, the signal value of P and S, T, and U in the previous round do not change. Therefore, the loop does not oscillate.
【0051】P′の信号値とPFの信号値が異なりP′
とPの信号値も異なる時、同じ入力を変換前のループに
与えるとPの値は定まらないことが同様の説明でわか
る。すなわち、各信号は二値しかとらないのでPとPF
の値は等しいことに注意すれば、三周目のPの信号値は
一周目のP信号値と同じになり、以後、奇数周と偶数周
でPの信号値が異なり、よって、ループは発振する。The signal value of P'is different from the signal value of PF, and P'is different.
It can be seen from the same explanation that when the signal values of P and P are different, the value of P cannot be determined by giving the same input to the loop before conversion. That is, since each signal takes only two values, P and PF
Note that the value of P is the same as the value of P on the third cycle, and the signal value of P on the odd cycles is different from that on the even cycles, so the loop oscillates. To do.
【0052】以上より、PとP′が等しいか否かをみる
とループの発振がわかり、発振していなければ、変換後
の回路のシミュレーション結果が論理的に正しいことが
分かる。From the above, it can be seen that the oscillation of the loop is seen by checking whether P and P'are equal, and if not oscillating, the simulation result of the circuit after conversion is logically correct.
【0053】発振の検出を行なうためのモデル変換は次
のように行なう。すなわち、図13に示すように二つの
プリミティブPとP′の出力信号を入力とし比較をする
プリミティブ(例えば二つの入力のXORをとるプリミ
ティブ)Xoと、Xoからの出力を受けるアウトプット
プリミティブをモデルに加える。図14はこのステップ
において変更された回路モデル格納部12のデータを表
している。発振の検出は、その出力値を例えばホスト計
算機などで監視すればよい。以上がループが単純な場合
の回路モデル変換方法である。Model conversion for detecting oscillation is performed as follows. That is, as shown in FIG. 13, a model is made of a primitive Xo (for example, a primitive that takes an XOR of two inputs) Xo that receives and compares the output signals of the two primitives P and P ', and an output primitive that receives the output from Xo. Add to. FIG. 14 shows the data of the circuit model storage unit 12 changed in this step. To detect oscillation, the output value may be monitored by, for example, a host computer. The above is the circuit model conversion method when the loop is simple.
【0054】これを具体的な回路に適用すると、図15
(a)(b)に示すようになる。この場合、同図(a)
に示す回路Nは、S、T、Uの値がそれぞれ1の時、ル
ープに沿って1周すると、論理が反転してしまい発振す
る。しかし、S、T、Uの値のうちどれか一つが0なら
ば、信号値の反転は偶数回なので発振は生じない。When this is applied to a concrete circuit, FIG.
As shown in (a) and (b). In this case, the same figure (a)
When the values of S, T, and U are 1, the circuit N shown in FIG. 1 oscillates because the logic is inverted when it makes one round along the loop. However, if any one of the S, T, and U values is 0, the signal value is inverted at an even number of times, so that oscillation does not occur.
【0055】これを上記方法で同図(b)に示す回路N
´に等価変換した際に回路N´の各論理素子の評価を行
ってみると次のようになる。The circuit N shown in FIG.
When the respective logic elements of the circuit N ′ are evaluated when they are equivalently converted into ′, the following is obtained.
【0056】PIは前クロックでのPの信号値を入力す
るプリミティブでありクロック0においては不定Xとす
る。PI is a primitive for inputting the signal value of P in the previous clock, and is indeterminate X at clock 0.
【0057】XoはPとP´の出力のXORを取るプリ
ミティブである。PとP´の出力が等しい時は、Xoの
出力は0であるが、PとP´の出力が異なる時は、Xo
の出力は1である。レベルソート法に従って各クロック
での信号値の評価をA´、B´、P´、A、B、P、X
oの順で行った結果は次のようになる。Xo is a primitive that takes the XOR of the outputs of P and P '. When the outputs of P and P'are equal, the output of Xo is 0, but when the outputs of P and P'are different, Xo is
Has an output of 1. A ', B', P ', A, B, P, X are evaluated for the signal value at each clock according to the level sorting method.
The results obtained in the order of o are as follows.
【0058】まず、クロック0でのPI、S、T、Uの
入力をそれぞれX、1、1、0とすれば、各素子の出力
信号値はそれぞれX、0、1、1、0、1、0となり、
クロック1でのS、T、Uの入力をそれぞれ1、1、1
とすれば、PIの値は1なので、各素子の出力信号値は
それぞれ1、1、0、0、0、1、1となる。これによ
り発振が起こらない場合には、正しいシミュレーション
結果が得られ、発振が起こる場合は、Xoの出力で発振
を検知できる。First, if the inputs of PI, S, T, and U at clock 0 are X, 1, 1, and 0, the output signal values of the respective elements are X, 0, 1, 1, 0, 1 respectively. , 0,
Inputs S, T, and U at clock 1 are 1, 1, and 1, respectively.
Then, since the value of PI is 1, the output signal values of the respective elements are 1, 1, 0, 0, 0, 1, 1. As a result, when the oscillation does not occur, a correct simulation result is obtained, and when the oscillation occurs, the oscillation can be detected by the output of Xo.
【0059】一般の複数プリミティブからなる強連結成
分は、複数ループから構成される場合もあり(図1
6)、また、複数複数プリミティブからなる強連結成分
は回路全体で一つだけとは限らない。この場合前述の方
法を拡張した次のような処理を繰り返し用いればよい。In general, a strongly connected component composed of a plurality of primitives may be composed of a plurality of loops (see FIG. 1).
6) Also, the number of strongly connected components composed of a plurality of primitives is not limited to one in the entire circuit. In this case, the following processing, which is an extension of the above method, may be repeatedly used.
【0060】(1)プリミティブを二つ以上含む強連結
成分を一つ選びSPGとする。また、SPG内のプリミ
ティブを一つ選びPとする(図17)。(1) One strongly connected component including two or more primitives is selected as SPG. Also, one primitive in the SPG is selected and designated as P (FIG. 17).
【0061】(2)プリミティブPに対応するフリップ
フロップPFを新たに状態記憶部に加え、PFの出力を
与える入力プリミティブPIとPFへの入力を与える出
力プリミティブPOを、新たに回路モデルに格納する回
路モデル格納部12のプリミティブグラフに加える。次
に、Pから部分グラフSPGに出力する枝を除去し部分
グラフSPG1を作成する。この操作によりSPG1内
には、Pを含むループは存在しなくなる(図18)。(2) A flip-flop PF corresponding to the primitive P is newly added to the state storage unit, and an input primitive PI that gives an output of the PF and an output primitive PO that gives an input to the PF are newly stored in the circuit model. Add to the primitive graph in the circuit model storage unit 12. Next, the branch output from P to the subgraph SPG is removed to create the subgraph SPG1. By this operation, the loop containing P does not exist in SPG1 (FIG. 18).
【0062】(3)SPG1の強連結成分を求め、も
し、二つ以上のプリミティブを含む強連結成分があれ
ば、そのような強連結成分に対し再帰的にこの処理を行
い、ループに含まない部分グラフSPG2を作成する
(図19)。(3) Obtain the strongly connected component of SPG1, and if there is a strongly connected component including two or more primitives, this processing is recursively performed on such strongly connected component and it is not included in the loop. A partial graph SPG2 is created (FIG. 19).
【0063】(4)この時点ではすでにSPG2にはル
ープは含まれないので、部分グラフSPG2と同一構造
の部分グラフSPG2′を作り、GからSPG2′へ対
応する入力枝を付ける。その際、Pからの出力を受けて
いたプリミティブへの入力にはフリップフロップPFの
出力(すなわちPIからの入力)を割り当てる。また、
複製した部分グラフSPG2′に含まれるPからの出力
を、SPG2に含まれるプリミティブでPからの出力を
受けていたプリミティブへの入力とする(図20)。さ
らに、PFへの出力としてPOへPからの出力を繋ぐ。(4) Since the loop is not already included in SPG2 at this point, a subgraph SPG2 'having the same structure as the subgraph SPG2 is created, and a corresponding input branch from G to SPG2' is attached. At this time, the output of the flip-flop PF (that is, the input from PI) is assigned to the input to the primitive that has received the output from P. Also,
The output from P included in the duplicated subgraph SPG2 'is used as the input to the primitive that has received the output from P in the primitive included in SPG2 (FIG. 20). Furthermore, the output from P is connected to PO as the output to PF.
【0064】ステップ2で強連結成分に含まれるプリミ
ティブの数が少なくとも一つ以上減るので、もし、残り
のグラフ中にループ(即ち複数のプリミティブを含む強
連結成分)があったとしても、そのループ中のプリミテ
ィブ数はもとの強連結成分より一つ以上少ない。よっ
て、この手順を繰り返すことにより最終的に得られるグ
ラフにおいては、全ての強連結成分中はプリミティブを
1個からなる。すなわち、ループを含まない回路に変換
できる。In step 2, since the number of primitives included in the strongly connected component is reduced by at least one, even if there is a loop (that is, a strongly connected component including a plurality of primitives) in the remaining graph, that loop The number of primitives inside is one or more less than the original strongly connected components. Therefore, in the graph finally obtained by repeating this procedure, one primitive is included in all strongly connected components. That is, it can be converted into a circuit that does not include a loop.
【0065】発振を検出するためには、例えば上記手順
におけるPとP′の組に対して、PとP′の信号値を入
力とし比較をするプリミティブを加えて回路外部に出力
し(すなわち出力プリミティブの入力とし)ホスト計算
機などで監視することにより行う。In order to detect the oscillation, for example, to the pair of P and P'in the above procedure, a primitive for inputting and comparing the signal values of P and P'is added and output to the outside of the circuit (that is, output). Performed by monitoring with a host computer etc.) (as input of primitive).
【0066】ループからなる回路を等価な回路に変換す
る変換部15は、上記の方法で等価変換を施してループ
をなくし、かつ発振を検出できるようになったプリミテ
ィブグラフを記憶装置に格納してシミュレーション部1
に引き渡すようになる。The conversion unit 15 for converting a circuit composed of a loop into an equivalent circuit stores the primitive graph in which the equivalent conversion is performed by the above method to eliminate the loop and the oscillation can be detected in the storage device. Simulation part 1
Will be handed over to.
【0067】なお、上述した発振の検出法はレベルソー
ト法にのみ限定されるものではない。ループを二周だけ
評価すれば発振を検出できるということは、レベルソー
ト法以外のシミュレーションアルゴリズムに適用でき
る。The oscillation detection method described above is not limited to the level sorting method. The fact that oscillation can be detected by evaluating the loop only twice can be applied to simulation algorithms other than the level sorting method.
【0068】例えば、ソフトウエアシミュレータなどで
はモデルの複製を作らずに次のようにシミュレーション
する方法も考えられる。すなわち、図21に示すように
プリミティブグラフに対して、まず、あるクロックにお
けるL′の評価を行ないPの信号値を記憶装置PMに格
納する。次に、PMの値がPFの値と等しければ回路は
発振せずPの評価結果は正しい。PMの値がPFの値と
異なればPFのかわりにPMの値を用いてもう一度L′
の評価すなわちPの評価を行なう。そして、Pの値とP
Mの値が同じなら回路は発振せず、Pの値とPMの値が
異なれば回路は発振する。For example, in a software simulator or the like, the following simulation method can be considered without making a copy of the model. That is, as shown in FIG. 21, with respect to the primitive graph, first, L ′ at a certain clock is evaluated and the signal value of P is stored in the storage device PM. Next, if the value of PM is equal to the value of PF, the circuit does not oscillate and the evaluation result of P is correct. If the value of PM is different from the value of PF, the value of PM is used instead of PF and L '
, That is, P is evaluated. And the value of P and P
If the value of M is the same, the circuit does not oscillate, and if the value of P and the value of PM are different, the circuit oscillates.
【0069】また、上述では、信号値が2値の場合のみ
述べたが、多値の場合への拡張も可能である。Further, in the above description, only the case where the signal value is binary is described, but it is possible to extend to the case where it is multi-valued.
【0070】従って、このようにすれば、従来レベルソ
ート法では原理的にシミュレーションできなかった組合
せ回路部にループを含む論理回路について、これを等価
回路モデルに変換することによりレベルソート法でシミ
ュレーションすることができるようになる。また、変換
前の回路ループの発振の検証も行うことができるように
なる。Therefore, in this way, a logic circuit including a loop in the combinational circuit portion, which could not be simulated in principle by the conventional level sorting method, is simulated by the level sorting method by converting it into an equivalent circuit model. Will be able to. It also becomes possible to verify the oscillation of the circuit loop before conversion.
【0071】次に、本発明の他の実施例として、ハード
ウェアエミュレータの例を図22、図23により説明す
る。Next, as another embodiment of the present invention, an example of a hardware emulator will be described with reference to FIGS.
【0072】図22はハードウェアエミュレータの構成
図である。この場合、エミュレータ221は論理ブロッ
クが専用のFPGA222で実現される。そして、FP
GA222は完全クロスバスイッチ223を介して多段
に結合されており、信号は入力側から出力側へ一方向に
流れる。なお、FPGA222間の結合は部分クロスバ
スイッチで構成されていてもよい。FIG. 22 is a block diagram of the hardware emulator. In this case, the emulator 221 is realized by the FPGA 222 having a dedicated logic block. And FP
The GA 222 is connected in multiple stages via the complete crossbar switch 223, and the signal flows in one direction from the input side to the output side. Note that the coupling between the FPGAs 222 may be composed of partial crossbar switches.
【0073】図23はFPGA222の構成図である。
ここでのプログラム可能素子は4入力1出力の万能素子
222aからなっている。一般にはM入力N出力型
(M、Nは正の整数)の万能素子であってもよい。そし
て、万能素子222aは完全クロスバスイッチ222b
を介して多段に結合されており、信号は入力側から出力
側へ一方向に流れる。なお、万能素子222a間の結合
は部分クロスバであってもよい。FIG. 23 is a block diagram of the FPGA 222.
The programmable element here consists of a 4-input 1-output universal element 222a. Generally, it may be a universal device of M input N output type (M and N are positive integers). And the universal element 222a is a complete crossbar switch 222b.
Are connected in multiple stages via, and the signal flows in one direction from the input side to the output side. The coupling between the universal elements 222a may be a partial crossbar.
【0074】FPGA内の万能素子222aは、4入力
1出力単位にまとめあげられた、複数個の回路素子のシ
ミュレーションを担当する(入力数が4を越える回路素
子がある場合は、それらを4入力1出力の制約を満たす
まで分解して、それらを複数の回路素子として扱
う。)。以下、この4入力1出力単位にまとめあげられ
た回路素子集合をプリミティブと呼ぶことにする。The universal element 222a in the FPGA is in charge of simulating a plurality of circuit elements, which are grouped in units of 4 inputs and 1 output (when there are circuit elements having more than 4 inputs, those are input 4 inputs 1 Disassemble until the output constraints are met and treat them as multiple circuit elements). Hereinafter, the circuit element set put together in units of 4 inputs and 1 output will be referred to as a primitive.
【0075】図24から図26に、回路のプリミティブ
への変換例を示している。図24はシミュレーション対
象の回路例を示すもので、ここでは9入力2出力の回路
としてテキサス・インスツルメント製の9ビットのパリ
ティ生成器(SN74ALS280)を示している。そ
して、図25は、図24の回路を4入力1出力の制約を
満たすプリミティブへまとめあげた例で、図26は、図
25のまとめあげの結果得られたプリミティブグラフで
ある。FIGS. 24 to 26 show examples of conversion of circuit primitives. FIG. 24 shows an example of a circuit to be simulated. Here, a 9-bit parity generator (SN74ALS280) manufactured by Texas Instruments is shown as a 9-input 2-output circuit. 25 is an example in which the circuits in FIG. 24 are grouped into primitives that satisfy the constraint of 4 inputs and 1 output, and FIG. 26 is a primitive graph obtained as a result of the grouping in FIG.
【0076】これら図24から図26において、Aから
Iは入力信号、X、Yは出力信号で、1〜37はプリミ
ティブを示している。そして、各プリミティブ1〜37
は、入力側から出力へ向かって数えた最長パスの長さの
順にレベルソートされている。24 to 26, A to I are input signals, X and Y are output signals, and 1 to 37 are primitives. Then, each primitive 1 to 37
Are level-sorted in order of the length of the longest path counted from the input side to the output.
【0077】レベルソートは、例えば「演算グラフ理論
(コロナ社)」p80およびp320に示された手続き
によって、計算機上で容易に実現できる。また、この手
続きによればレベルソートはグラフの枝数に比例する計
算の手間で高速に行うことができる。The level sort can be easily realized on a computer by the procedure shown in p80 and p320 of "Operational Graph Theory (Corona Corp.)", for example. Further, according to this procedure, the level sorting can be performed at high speed with the labor of calculation proportional to the number of branches of the graph.
【0078】ここで、万能素子は隣のレベル同士としか
結合されていないため、2レベル以上離れたプリミティ
ブ間での信号値の受渡しは、途中の万能素子にその信号
値を記憶させて実現する。このため、図26に示すプリ
ミティブグラフに、信号の受渡し用のダミープリミティ
ブを挿入する。このようにして変換されたプリミティブ
グラフを図27に示している。図27において38〜4
4が、出力信号10、11、12、22、23、24、
28を保持するダミープリミティブである。これらダミ
ープリミティブ38〜44は図中では陰影をつけて表現
した。Here, since the universal element is coupled only to the adjacent levels, the signal value transfer between the primitives separated by two levels or more is realized by storing the signal value in the universal element on the way. . Therefore, a dummy primitive for passing signals is inserted in the primitive graph shown in FIG. The primitive graph converted in this way is shown in FIG. In FIG. 27, 38-4
4 are output signals 10, 11, 12, 22, 23, 24,
28 is a dummy primitive that holds 28. These dummy primitives 38 to 44 are represented by shading in the drawing.
【0079】次に、このような手続きを実行するための
プリミティブグラフを表現するデータ構造例を説明す
る。Next, an example of a data structure expressing a primitive graph for executing such a procedure will be described.
【0080】ここで、プリミティブグラフは配列で表さ
れており、各配列要素は、それぞれ一つのプリミティブ
に関する情報を含んでいる。そして、各配列要素は図2
8に示すように、(1)プリミティブid、(2)入力
プリミティブidのリスト、(3)出力先プリミティブ
idのリスト、(4)ダミービット、(5)オリジナル
プリミティブid、(6)レベル、(7)連結成分id
からなっている。Here, the primitive graph is represented by an array, and each array element contains information on one primitive. Each array element is shown in FIG.
As shown in FIG. 8, (1) primitive id, (2) input primitive id list, (3) output destination primitive id list, (4) dummy bit, (5) original primitive id, (6) level, ( 7) Connected component id
It consists of
【0081】この場合、上述の(1)〜(3)はグラフ
の接続情報、(4)〜(5)はダミープリミティブ情
報、(6)〜(7)はマッピングに関する情報である。
上記の例では、これらの情報をすべてまとめて一つの配
列として実現したが、それぞれ別々の配列として実現し
ても構わない。ダミービットはプリミティブがダミーの
とき1、そうでないとき0である。オリジナルプリミテ
ィブidは、プリミティブがダミーの場合に、もとのプ
リミティブidを格納する。プリミティブがダミーでな
いときは意味を持たない。In this case, the above (1) to (3) are graph connection information, (4) to (5) are dummy primitive information, and (6) to (7) are information related to mapping.
In the above example, all of these pieces of information are collectively realized as one array, but they may be realized as separate arrays. The dummy bit is 1 when the primitive is a dummy and 0 otherwise. The original primitive id stores the original primitive id when the primitive is a dummy. It has no meaning if the primitive is not a dummy.
【0082】以下、論理回路をダミープリミティブを含
むプリミティブグラフとして表現する。Hereinafter, the logic circuit will be expressed as a primitive graph including dummy primitives.
【0083】次に、図27に示す回路を、幅方向に4
個、段数方向に3個のプリミティブが並んでいるFPG
Aから構成される多段結合エミュレータにマッピングす
る場合を考える。Next, the circuit shown in FIG.
FPG in which three primitives are lined up in the direction of the number of stages
Consider the case of mapping to a multistage emulator composed of A.
【0084】ここでのマッピングは、図29に示すステ
ップ2901〜ステップ2908までの処理に従い実行
される。The mapping here is executed according to the processing from step 2901 to step 2908 shown in FIG.
【0085】この場合、まず、プリミティブグラフを入
力側からFPGAの段数である3段で区切る。図30に
示す101から104は、このようにして得られた連結
成分を示している。In this case, first, the primitive graph is divided from the input side by three stages which is the number of FPGA stages. Reference numerals 101 to 104 shown in FIG. 30 represent the connected components thus obtained.
【0086】なお、グラフによっては、FPGAの段数
以下(例えばこの場合では2段)で区切った方が望まし
い場合もあり、これは適宜使い分けて構わない。また、
レベルで区切るという操作を適用するのは、最初に回路
全体を区切るときだけとは限らない。FPGA一段のマ
ッピングが終了するたびに回路のウェーブフロントから
改めて動的にレベルを計算して、そのレベルソートされ
た回路に対して、レベルで区切りなおしてもよい。Depending on the graph, it may be desirable to divide the number of stages into the number of stages of the FPGA or less (for example, two stages in this case), which may be appropriately used. Also,
The operation of dividing by level is not limited to the first division of the entire circuit. It is also possible to dynamically calculate the level again from the wavefront of the circuit each time the mapping of one stage of the FPGA is completed, and re-divide the level-sorted circuit by the level.
【0087】連結成分の番号づけ(id)は、レベルが
大きいものほど大きい番号になるようにするが、10
1、102、103のように同じレベルに対応する連結
成分どうしは、どのような順番に番号づけしても構わな
い。ここでは101、102、103、104の順にそ
れぞれ連結成分番号1、2、3、4と番号づけがなされ
ていると仮定する。図28は、連結成分101中のプリ
ミティブ15を表現するデータ構造であり、ここでのプ
リミティブ15のレベルは3、連結成分番号は1であ
る。As for the numbering (id) of the connected components, the higher the level, the higher the number.
The connected components corresponding to the same level, such as 1, 102, and 103, may be numbered in any order. Here, it is assumed that connected component numbers 1, 2, 3, and 4 are numbered in order of 101, 102, 103, and 104, respectively. FIG. 28 is a data structure expressing the primitive 15 in the connected component 101, where the level of the primitive 15 is 3 and the connected component number is 1.
【0088】マッピングは、番号の小さい連結成分から
順に行なう。図30の回路のマッピングを例にとると、
101、102、103の連結成分はFPGAのサイズ
に収まっており、FPGA一個ずつにそれぞれマッピン
グを適用する。ここで、ある回路がFPGAのサイズよ
り大きいとは、その回路をレベルの順にソートしたとき
に、FPGAの幅を越えてしまうことを指す。Mapping is performed in order from the connected component with the smallest number. Taking the mapping of the circuit in FIG. 30 as an example,
The connected components 101, 102, and 103 fit within the size of the FPGA, and mapping is applied to each FPGA. Here, the fact that a circuit is larger than the size of the FPGA means that when the circuit is sorted in order of level, it exceeds the width of the FPGA.
【0089】図31の111から113はそれぞれ、1
01から103の連結成分のマッピングを適用したFP
GAを示している。このように、一段目のレベルのFP
GA(111、112、113)へのマッピングは、レ
ベルで区切った連結成分情報を利用して効率良く行なう
ことができる。In FIG. 31, 111 to 113 are 1 respectively.
FP to which the mapping of connected components from 01 to 103 is applied
The GA is shown. In this way, the first level FP
Mapping to the GA (111, 112, 113) can be efficiently performed by using the connected component information separated by level.
【0090】次に、連結成分104のマッピングを考え
る。104は、FPGAのサイズより大きく、FPGA
一個には収まらない。この場合、104に対しては以下
のいずれかのマッピング方式を適用する。Next, consider the mapping of the connected component 104. 104 is larger than the size of the FPGA,
It doesn't fit in one. In this case, one of the following mapping methods is applied to 104.
【0091】 (1)接続するプリミティブを順にマッピング (2)プリミティブの番号順にマッピング (3)レベルの低いプリミティブの順にマッピング (4)プリミティブの複製を作り連結成分を複数の連結
成分に分割し、新しく得られた連結成分ごとにマッピン
グ (1)のマッピング方式では、構成成分104中のプリ
ミティブの中から適当なプリミティブを出発点として、
FPGA114へのマッピングを開始する。出発点とな
るプリミティブは最小レベルのものの中で任意で構わな
い。この例では番号が最も小さいプリミティブ25を選
ぶ。次にプリミティブ25の出力先の一つプリミティブ
29を選び、この入力であるプリミティブ42、43を
マッピングする。プリミティブ25、42、43の出力
先のプリミティブにはまだマッピングされていないもの
が含まれるため、これらはダミープリミティブとしてピ
ンまでつなぐ必要がある。従って、ピン数の制約からも
うこれ以上プリミティブをマッピングはできず、FPG
A114へのマッピングは終了する。同様の操作をFP
GA115、116へと適用する。FPGA116への
マッピングが終了すると次段のFPGAへのマッピング
を行なう。ここでも同様の操作により、図31のような
マッピング結果が得られる。(1) Mapping the connected primitives in order (2) Mapping in the order of primitive numbers (3) Mapping in the order of lower level primitives (4) Creating a duplicate of the primitive and dividing the connected component into a plurality of connected components Mapping for each obtained connected component In the mapping method of (1), an appropriate primitive is selected from the primitives in the component 104 as a starting point,
Start mapping to FPGA 114. The starting point primitive can be any of the minimum levels. In this example, the primitive 25 having the smallest number is selected. Next, one primitive 29, which is the output destination of the primitive 25, is selected, and the primitives 42 and 43 that are this input are mapped. Since the primitives to which the primitives 25, 42, and 43 are output include those that have not been mapped yet, it is necessary to connect these to the pins as dummy primitives. Therefore, because of the pin count constraint, the primitives cannot be mapped anymore and the FPG
The mapping to A114 ends. Same operation as FP
It applies to GA115 and 116. When the mapping to the FPGA 116 is completed, the mapping to the next FPGA is performed. In this case as well, a mapping result as shown in FIG. 31 is obtained by the same operation.
【0092】(2)のマッピング方式では、構成成分1
04中でまだマッピングされていないプリミティブの中
から、最も番号の小さいものを選ぶ。この例では、FP
GA124へのマッピングは、プリミティブ25から2
8をマッピングして終了する。次のFPGA125に
は、プリミティブ29をマッピングする。そのために2
9への入力であるプリミティブ25、42、43を前段
にマッピングする。このとき、プリミティブ30、3
1、32、33は万能素子及びピンの制約を満たさない
のでマッピングすることはできないが、プリミティブ3
4は制約を満たすため、34をマッピングして、終了す
る。以下同様の操作により図32のようなマッピング結
果が得られる。In the mapping method of (2), the component 1
Among the primitives that have not been mapped yet in 04, the one with the smallest number is selected. In this example, FP
The mapping to GA124 is from primitive 25 to 2
Map 8 and end. The primitive 29 is mapped to the next FPGA 125. For that 2
The primitives 25, 42 and 43 which are the inputs to 9 are mapped to the preceding stage. At this time, the primitives 30, 3
1, 32, and 33 cannot be mapped because they do not satisfy the constraints of universal elements and pins, but primitive 3
Since 4 satisfies the constraint, 34 is mapped and the process ends. By the same operation, the mapping result as shown in FIG. 32 is obtained.
【0093】ところで、回路の充填率の向上させるため
には、レベルの小さい順にプリミティブをマッピングす
る方が望ましい。なぜなら、単純にプリミティブの接続
を辿るときに比べて、入力から出力への信号の流れの中
のクリティカルパスを構成する回路素子をできるだけ早
い時期にマッピングするからである。(3)のマッピン
グ方式は、これを実現するものである。By the way, in order to improve the filling rate of the circuit, it is desirable to map the primitives in ascending order of level. This is because the circuit elements that form the critical path in the signal flow from the input to the output are mapped at the earliest possible time as compared with simply following the connection of the primitives. The mapping method of (3) realizes this.
【0094】図33のステップ3301〜ステップ33
06に示すアルゴリズムは、(3)のマッピング方式で
ある。これは図29中の連結成分iのマッピングをさら
に詳細化して示したもので、構成成分104中のプリミ
ティブをレベルの小さい順にマッピングする。FPGA
134にはプリミティブ25から28をマッピングして
終了する。FPGA135には、プリミティブ41から
43をマッピングする。さらに万能素子に余裕があるた
め、プリミティブ29をマッピングして終了する。ここ
で、104中の最小レベルのプリミティブがすべてマッ
ピングできたので、FPGA136には、次の段のプリ
ミティブのうち、まだマッピングされていないプリミテ
ィブ30をマッピングする。同様の操作により、プリミ
ティブ33をマッピングして終了する。この結果を図3
4に示す。Steps 3301 to 33 in FIG. 33
The algorithm indicated by 06 is the mapping method of (3). This shows the mapping of the connected component i in FIG. 29 in more detail, and the primitives in the constituent component 104 are mapped in ascending order of level. FPGA
The primitives 25 to 28 are mapped to 134, and the process ends. The primitives 41 to 43 are mapped on the FPGA 135. Further, since there is a margin in the universal element, the primitive 29 is mapped and the process is completed. Here, since all the minimum-level primitives in 104 can be mapped, the primitives 30 which are not yet mapped among the primitives in the next stage are mapped to the FPGA 136. By the same operation, the primitive 33 is mapped and the process is completed. This result is shown in Figure 3.
4 shows.
【0095】なお、FPGA136へのプリミティブ3
0、33のマッピングは、次段のFPGAへのマッピン
グ結果をみると、本来不必要なものである。従って、3
のマッピング方式では図30の回路をエミュレータにF
PGA7個でマッピング完了したことになり、(1)あ
るいは(2)のマッピング方式に比べ、FPGAの充填
率が向上していることが分かる。Primitive 3 to FPGA 136
The mapping of 0 and 33 is essentially unnecessary when looking at the mapping result to the FPGA in the next stage. Therefore, 3
In the mapping method of F, the circuit of FIG.
It means that the mapping is completed with 7 PGAs, and it is understood that the packing rate of the FPGA is improved as compared with the mapping method of (1) or (2).
【0096】このように、FPGAのサイズを越える連
結成分に対しては、単純にレベルの小さい順にマッピン
グするのが望ましい。この方式は計算時間のオーバーヘ
ッドがほとんどないため、マッピングの高速性も保持さ
れる。As described above, it is desirable that the connected components that exceed the size of the FPGA are simply mapped in order of increasing level. Since this method has almost no calculation time overhead, high speed mapping is also maintained.
【0097】もう一つ、連結成分の大きさがFPGAの
サイズを越えたときに有効であるのは、他のプリミティ
ブとの接続が多いプリミティブの複製を作り、もとの連
結成分をFPGAのサイズ以下の部分回路に分割する方
法である。これは(4)のマッピング方式である。On the other hand, when the size of the connected component exceeds the size of the FPGA, it is effective to make a copy of the primitive that has many connections with other primitives and to make the original connected component the size of the FPGA. This is a method of dividing into the following partial circuits. This is the mapping method of (4).
【0098】次に、図35に示す回路を段数、幅方向に
4個、段数方向に2個のプリミティブが並んでいるFP
GAから構成されたエミュレータにマッピングする場合
を考える。Next, the FP in which the number of stages of the circuit shown in FIG. 35 is four in the width direction and two primitives in the number of stages direction are arranged in the FP.
Consider the case of mapping to an emulator composed of GA.
【0099】FPGAの段数である2段でこの回路を区
切ったとき、図35のように連結成分201〜204に
分割される。ここで、FPGAのサイズを越えている連
結成分203に着目する。連結成分203を番号の順あ
るいはレベルの低い順にマッピングした結果が図36で
ある。使用したFPGAは213から216の4個であ
る。ここで、連結成分203中で最もレベルの低いプリ
ミティブのうち、最も出力先のプリミティブ数が多いも
のを選び、それの複製を作る。この例では、そのような
プリミティブの候補として、プリミティブ15、16、
17の3つがあるが、番号が最も小さいプリミティブ1
5を選ぶ。図37(a)は連結成分203を構成するプ
リミティブグラフである。図37(b)はプリミティブ
15の複製を作成することによって、連結成分203が
新たな3つの連結成分221、222、223に分解さ
れた結果を示している。ここで図37(b)のプリミテ
ィブ151、152はともにプリミティブ15の複製を
表している。When this circuit is divided into two stages which is the number of FPGA stages, it is divided into connected components 201 to 204 as shown in FIG. Here, pay attention to the connected component 203 that exceeds the size of the FPGA. FIG. 36 shows the result of mapping the connected components 203 in the order of the numbers or in the order of lower levels. Four FPGAs 213 to 216 were used. Here, among the lowest level primitives in the connected component 203, the one having the largest number of primitives at the output destination is selected, and a duplicate thereof is created. In this example, candidates for such primitives are primitives 15, 16,
Primitive 1 with the smallest number
Choose 5. FIG. 37 (a) is a primitive graph forming the connected component 203. FIG. 37B shows a result of the connected component 203 being decomposed into three new connected components 221, 222, and 223 by creating a copy of the primitive 15. Here, the primitives 151 and 152 in FIG. 37B both represent a copy of the primitive 15.
【0100】ここで、15の複製を作成した後も、依然
としてFPGAのサイズを越えているため、連結成分2
21に対して再び上記のプリミティブの複製による分解
を適用する。この結果、プリミティブ16、17の順に
複製を作成して得られた分解を図37(c)に示す。こ
のようにして連結成分203は、231から237のF
PGAのサイズ以下の計7個の連結成分に分解された。
連結成分231から237にそれぞれ連結成分番号3〜
9を付け、連結成分204に連結成分番号10を付ける
と、図35のプリミティブグラフは10個のFPGAの
サイズ以下の連結成分に分けられたことになる。Here, since the size of the FPGA is still exceeded even after making 15 copies, the connected component 2
Again apply the decomposition by duplication of the primitive to 21. As a result, FIG. 37C shows the decomposition obtained by creating a copy of the primitives 16 and 17 in this order. In this way, the connected component 203 has the F of 231 to 237.
It was decomposed into a total of 7 connected components below the size of PGA.
Connected components Nos. 3 to 237 are connected components 231 to 237, respectively.
If 9 is added and the connected component number 10 is added to the connected component 204, it means that the primitive graph in FIG. 35 is divided into 10 connected components each having a size equal to or smaller than the FPGA.
【0101】以上の複製の作成の際に、プリミティブ1
5に関する情報がどの様に変化するするかを図38と図
39に示す。図38は、複製作成前のプリミティブ情報
であり、図39は、複製作成後のプリミティブ情報であ
る。図39は、プリミティブ15の出力先が1つだけの
3つのプリミティブ15、151,152に分かれる。
ここでは、ダミープリミティブへ出力しているプリミテ
ィブに、元のプリミティブ15と同じidを付けてい
る。At the time of creating the above duplication, primitive 1
38 and 39 show how the information regarding 5 changes. FIG. 38 shows the primitive information before the copy creation, and FIG. 39 shows the primitive information after the copy creation. In FIG. 39, the output destination of the primitive 15 is divided into three primitives 15, 151, 152.
Here, the same id as the original primitive 15 is attached to the primitive output to the dummy primitive.
【0102】次に、新たに得られた複数個の連結成分を
FPGAのサイズ以下という条件を満たしながら、適当
に組み合わせてまとめ上げを行なう。まとめあげの方法
として、例えば次のような手続きがある。Next, the plurality of newly obtained connected components are appropriately combined and assembled while satisfying the condition that the size is equal to or smaller than the size of FPGA. For example, the following procedure is available as a method of summarizing.
【0103】ステップ1 C、Tを空集合、Uを上記の
手続きで得られた連結成分を要素とする集合とする。Step 1 C and T are an empty set, and U is a set whose connected components obtained by the above procedure are elements.
【0104】ステップ2 Uが空ならば終了。Step 2 If U is empty, end.
【0105】ステップ3 Uの中から最もサイズが大き
いものAを選ぶ。Step 3 Select the largest size A from U.
【0106】ステップ4 TとAをマージしてできたグ
ラフをSとする。Step 4 Let S be a graph formed by merging T and A.
【0107】ステップ5 UがFPGAのサイズ以下な
らば、TをSに置換え、UからAを除き、そうでなけれ
ば、CにTを登録する。Step 5 If U is less than or equal to the size of the FPGA, replace T with S, remove A from U, otherwise register T with C.
【0108】ステップ6 ステップ2へ行く。Step 6 Go to step 2.
【0109】ステップ4でのマージの結果、上記の手続
きを終了した時、Cには、FPGAの大きさになるまで
まとめあげられた連結成分が要素として含まれる。この
過程で、あるダミープリミティブに対するオリジナルプ
リミティブidと別のプリミティブのidが一致してい
る場合は、プリミティブ同士をまとめることができる。When the above procedure is completed as a result of the merging in step 4, C contains the connected components grouped up to the size of the FPGA as an element. In this process, if the original primitive id for a dummy primitive and the id of another primitive match, the primitives can be put together.
【0110】図37(c)の複数の連結成分に対して、
上記の手続きを適用する。ステップ3のAとして、サイ
ズが一番大きいものを選ぶことにする(サイズが等しい
ときは、番号が小さい順に選ぶ)。手続きの終了時に
は、図40に示すように連結成分241、242、24
3にまとめあげが行なわれる。このまとめ上げの際のプ
リミティブ情報の書き換えは、連結成分の分解のときと
同様に行えば良い。必要ならば、生成した複製に対応し
たプリミティブ情報を消去する。For a plurality of connected components in FIG. 37 (c),
Apply the above procedure. As the A in step 3, the largest size is selected (when the sizes are the same, the smallest number is selected). At the end of the procedure, the connected components 241, 242, 24 as shown in FIG.
It is summarized in 3. The rewriting of the primitive information in this grouping may be performed in the same manner as in the case of decomposing the connected components. If necessary, the primitive information corresponding to the generated copy is deleted.
【0111】以上で得られた連結成分をもとに、図35
の回路をプリミティブの複製を作り、グラフを再構成し
たのが、図41である。図35での連結成分203が、
図41では、連結成分311、312、313になって
いる。Based on the connected components obtained above, FIG.
FIG. 41 shows a graph reconstructed by making a duplicate of a primitive of the circuit of FIG. The connected component 203 in FIG.
In FIG. 41, they are connected components 311, 312, 313.
【0112】図41のグラフをマッピングした結果を図
42に示す。連結成分311、312、313のマッピ
ングに要したFPGAは3個であり、図36に示したよ
うに(3)のマッピング方式を用いた時に、FPGAを
4個要した場合に比べ、改善されたことが分かる。The result of mapping the graph of FIG. 41 is shown in FIG. The number of FPGAs required for mapping the connected components 311, 312, 313 is three, which is improved compared to the case where four FPGAs are required when the mapping method of (3) is used as shown in FIG. I understand.
【0113】従って、(4)のマッピング方式を用いれ
ば、再プログラム可能な複数の論理ブロックからなる論
理エミュレータにおいて、高速性をほとんど失うことな
くFPGAの充填率を向上させることができる。また、
プリミティブの複製によるグラフの連結成分の分割およ
び纏め上げ手続きは、機械化が容易であり、また、それ
に要する計算時間もほぼグラフの探索に要する時間と同
等である。つまり、連結成分のまとめあげも機械的であ
り、ほとんどバックトラックをしないため、同様に短時
間で実行できる。これにより、図43のステップ420
1〜ステップ4205に示すようにプリミティブの複製
による連結成分の割り付けの手続きについても、多段結
合のエミュレータにおけるマッピングの高速性を失うこ
となく、FPGAの充填率を向上を図ることができる。Therefore, by using the mapping method of (4), the filling rate of the FPGA can be improved in the logic emulator composed of a plurality of reprogrammable logic blocks with almost no loss of high speed. Also,
The division and grouping procedure of the connected components of the graph by copying the primitives is easy to mechanize, and the calculation time required for this is almost the same as the time required for searching the graph. In other words, the grouping of connected components is also mechanical, and backtracking is rarely performed, so that it can be similarly executed in a short time. This results in step 420 of FIG.
In the procedure of allocating connected components by duplicating primitives as shown in 1 to step 4205, the filling rate of FPGA can be improved without losing the high-speed mapping in the emulator of multistage connection.
【0114】なお、プログラム可能素子同士の結合が多
段接続方式以外の接続であるようなエミュレータにも本
発明のアルゴリズムは適用可能である。The algorithm of the present invention can be applied to an emulator in which the programmable elements are connected by a connection other than the multistage connection method.
【0115】[0115]
【発明の効果】本発明によれば、従来、組合せ回路部に
ループを含む論理回路は、レベルソート法では原理的に
シミュレーションできなかったが、このような論理回路
モデルを等価回路モデルに変換することによりレベルソ
ート法でシミュレーションすることができるようにな
る。また、変換前の回路のループの発振の検証も行うこ
とができる。According to the present invention, a logic circuit including a loop in a combinational circuit section could not be simulated in principle by the level sorting method, but such a logic circuit model is converted into an equivalent circuit model. As a result, it becomes possible to perform simulation by the level sorting method. Also, the oscillation of the loop of the circuit before conversion can be verified.
【0116】また、本発明によれば、再プログラム可能
な複数の論理ブロックからなる論理エミュレータにおい
て、高速性をほとんど失うことなくFPGAの充填率を
向上させるマッピング方式を実現することができ、同時
に、これら分割の手続きの機械化が容易なことから計算
機上のプログラムとして実現することもできる。Further, according to the present invention, in a logic emulator composed of a plurality of reprogrammable logic blocks, it is possible to realize a mapping method for improving the filling rate of FPGA with almost no loss of high speed, and at the same time, Since it is easy to mechanize these dividing procedures, it can be implemented as a program on a computer.
【図1】本発明の一実施例の概略構成を示す図。FIG. 1 is a diagram showing a schematic configuration of an embodiment of the present invention.
【図2】一実施例のモデル変換の手続きを示す図。FIG. 2 is a diagram showing a model conversion procedure according to an embodiment.
【図3】配列要素の構成を示す図。FIG. 3 is a diagram showing a configuration of array elements.
【図4】強連結成分の分解を説明する図。FIG. 4 is a diagram for explaining decomposition of strongly connected components.
【図5】ループを含む回路モデルを示す図。FIG. 5 is a diagram showing a circuit model including a loop.
【図6】ループを含む回路モデルを示す図。FIG. 6 is a diagram showing a circuit model including a loop.
【図7】切断点を指定したループを含む回路モデルを示
す図。FIG. 7 is a diagram showing a circuit model including a loop in which a cut point is designated.
【図8】切断点を指定したループを含む回路モデルを示
す図。FIG. 8 is a diagram showing a circuit model including a loop in which a cut point is designated.
【図9】ループを切断した部分回路を二重化した回路モ
デルを示す図。FIG. 9 is a diagram showing a circuit model in which a partial circuit in which a loop is cut is duplicated.
【図10】ループを切断した部分回路を二重化した回路
モデルを示す図。FIG. 10 is a diagram showing a circuit model in which a partial circuit in which a loop is cut is duplicated.
【図11】対応する枝を加えた等価回路モデルを示す
図。FIG. 11 is a diagram showing an equivalent circuit model to which corresponding branches are added.
【図12】対応する枝を加えた等価回路モデルを示す
図。FIG. 12 is a diagram showing an equivalent circuit model to which corresponding branches are added.
【図13】発振検出のためのプリミティブを加えた回路
モデルを示す図。FIG. 13 is a diagram showing a circuit model to which a primitive for oscillation detection is added.
【図14】発振検出のためのプリミティブを加えた回路
モデルを示す図。FIG. 14 is a diagram showing a circuit model to which a primitive for oscillation detection is added.
【図15】回路変換の例を示す図。FIG. 15 is a diagram showing an example of circuit conversion.
【図16】強連結成分(複数のループ)を含む回路モデ
ルを示す図。FIG. 16 is a diagram showing a circuit model including a strongly connected component (a plurality of loops).
【図17】切断点を指定して一つのループの切断を行な
った回路モデル1を示す図。FIG. 17 is a diagram showing the circuit model 1 in which one loop is cut by designating a cut point.
【図18】切断点を指定して一つのループの切断を行な
った回路モデル2を示す図。FIG. 18 is a diagram showing a circuit model 2 in which one loop is cut by designating a cut point.
【図19】ループ切断後の回路モデルと強連結成分を示
す図。FIG. 19 is a diagram showing a circuit model and a strongly connected component after the loop is broken.
【図20】等価回路を示す図。FIG. 20 is a diagram showing an equivalent circuit.
【図21】ソフトウエアシミュレータの場合のシミュレ
ーション法を説明する図。FIG. 21 is a diagram illustrating a simulation method in the case of a software simulator.
【図22】本発明の他の実施例のエミュレータの構成を
示す図。FIG. 22 is a diagram showing a configuration of an emulator according to another embodiment of the present invention.
【図23】FPGAの構成を示す図。FIG. 23 is a diagram showing a configuration of an FPGA.
【図24】シミュレーション対象回路例を示す図。FIG. 24 is a diagram showing an example of a simulation target circuit.
【図25】プリミティブへのまとめあげの例を示す図。FIG. 25 is a diagram showing an example of grouping into primitives.
【図26】プリミティブグラフを示す図。FIG. 26 is a diagram showing a primitive graph.
【図27】ダミープリミティブの挿入例を示す図。FIG. 27 is a diagram showing an example of inserting a dummy primitive.
【図28】プリミティブ情報を表現するデータ構造を示
す図。FIG. 28 is a diagram showing a data structure expressing primitive information.
【図29】回路割り付け手続きの流れを示す図。FIG. 29 is a diagram showing the flow of a circuit allocation procedure.
【図30】レベルで区切ったときの連結成分を示す図。FIG. 30 is a diagram showing connected components when separated by level.
【図31】回路割り付け結果(プリミティブ接続をたど
る方式)を示す図。FIG. 31 is a diagram showing a circuit allocation result (a method of tracing a primitive connection).
【図32】回路割り付け結果(プリミティブ番号順方
式)を示す図。FIG. 32 is a diagram showing a circuit allocation result (primitive number ordering method).
【図33】連結成分の割り付け手続き(レベルの小さい
順に割り付け)を示す図。FIG. 33 is a diagram showing a connected component allocation procedure (allocated in ascending order of level).
【図34】回路割り付け結果(レベルの小さい順方式)
を示す図。FIG. 34 is a circuit allocation result (a method of increasing level)
FIG.
【図35】プリミティブグラフを示す図。FIG. 35 is a diagram showing a primitive graph.
【図36】回路割り付け結果(レベルの小さい順方式)
を示す図。FIG. 36 is a circuit allocation result (smallest level order method)
FIG.
【図37】プリミティブの複製による連結成分の分解を
示す図。FIG. 37 is a diagram showing decomposition of connected components by copying a primitive.
【図38】複製作成前のプリミティブ情報を示す図。FIG. 38 is a diagram showing primitive information before copy creation.
【図39】複製作成後のプリミティブ情報を示す図。FIG. 39 is a view showing primitive information after the copy is created.
【図40】連結成分のまとめあげを示す図。FIG. 40 is a diagram showing a summary of connected components.
【図41】プリミティブまとめあげ後のプリミティブグ
ラフを示す図。FIG. 41 is a view showing a primitive graph after the primitives are put together.
【図42】回路割り付け結果(プリミティブまとめあげ
後)を示す図。FIG. 42 is a diagram showing a circuit allocation result (after grouping primitives).
【図43】連結成分の割り付け手続き(プリミティブの
複製による連結成分の分割)を示す図。FIG. 43 is a view showing a procedure for allocating connected components (division of connected components by copying a primitive).
11…シミュレーション部、12…回路モデル格納部、
13…組合せ回路部と状態記憶部を分離する分離部、1
4…ループ回路検出部、15…ループからなる回路を等
価な回路に変換する変換部、221…エミュレータ、2
22…FPGA222a…万能素子、222b…完全ク
ロスバスイッチ。11 ... Simulation unit, 12 ... Circuit model storage unit,
13 ... Separation unit for separating the combinational circuit unit and the state storage unit, 1
4 ... Loop circuit detection unit, 15 ... Conversion unit for converting a loop circuit into an equivalent circuit, 221 ... Emulator, 2
22 ... FPGA 222a ... Universal element, 222b ... Complete crossbar switch.
Claims (4)
ュレーションを行なう論理シミュレーション装置におい
て、 シミュレーション対象となる論理回路を格納する手段
と、 前記論理回路を組み合わせ回路部と状態記憶部とに分離
する手段と、 この手段で分離された組合せ回路部より複数の論理素子
から構成されるループからなる回路Aを抽出する手段
と、 前記回路A中の論理素子の一つの論理素子Zについてそ
の出力を取り去った回路Xを作成する手段、前記論理素
子Zの前回の出力信号値を記憶する記憶素子Uを作成す
る手段、前記回路Xを複製した回路Yを用いて、前記回
路Y、回路Xおよび記憶素子Uの縦続接続回路を構成す
る手段を有する回路変換手段とを具備し、 前記回路Yの各論理素子に対し前記回路Xの各論理素子
に対する入力と同じ入力を接続することを特徴とする論
理シミュレーション装置。1. A logic simulation device for simulating a logic circuit using a level sorting method, means for storing a logic circuit to be simulated, and means for separating the logic circuit into a combinational circuit section and a state storage section. And a means for extracting a circuit A consisting of a loop composed of a plurality of logic elements from the combinational circuit section separated by this means, and the output of one logic element Z of the logic elements in the circuit A is removed. The circuit Y, the circuit X, and the storage element U are formed by using means for creating the circuit X, means for creating the storage element U that stores the previous output signal value of the logic element Z, and circuit Y that is a duplicate of the circuit X. Circuit conversion means having means for forming a cascade connection circuit of the circuit Y, and for each logic element of the circuit Y with respect to each logic element of the circuit X. Logic simulation apparatus characterized by connecting the same input as the input.
製された回路Yの前記論理素子Zに相当する論理素子の
出力を比較する手段を有し、前記ループの発振するか否
かを検出可能にした請求項1記載の論理シミュレーショ
ン装置。2. A means for comparing the output of the logic element Z of the circuit X and the output of the logic element corresponding to the logic element Z of the duplicated circuit Y, and determining whether or not the loop oscillates. The logic simulation device according to claim 1, which is made detectable.
を多段結合した論理エミュレータにおいて、 入力側からの信号の流れの順にレベルソートされたプリ
ミティブグラフを入力側から数えて一定のレベルごとに
区切ることで複数の連結成分を生成し、これら連結成分
ごとに論理ブロックに割り付けるようにしたことを特徴
とする論理エミュレータ。3. A logic emulator in which a plurality of reprogrammable logic blocks are connected in multiple stages, wherein a primitive graph level-sorted in the order of signal flow from the input side is counted from the input side and divided into constant levels. A logic emulator characterized in that a plurality of connected components are generated and each connected component is allocated to a logic block.
のサイズが前記論理ブロックのサイズを越えるとき、該
連結成分中で入力側から数えたレベルが最も小さい回路
素子の複製を作ることで該連結成分を前記論理ブロック
のサイズ以下の複数の連結成分に分解するとともに、こ
れら連結成分を前記論理ブロックのサイズ以下という条
件の下でまとめて前記論理ブロックに割り付けるように
したことを特徴とする請求項3記載の論理エミュレー
タ。4. When the size of the connected component allocated to the logical block exceeds the size of the logical block, the connected component is created by making a duplicate of the circuit element having the smallest level counted from the input side in the connected component. Is decomposed into a plurality of connected components having a size equal to or smaller than the size of the logical block, and these connected components are collectively assigned to the logical block under the condition that the size is smaller than the size of the logical block. The described logic emulator.
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5073988A JPH06290230A (en) | 1993-03-31 | 1993-03-31 | Logical simulation device |
| US08/120,220 US5572710A (en) | 1992-09-11 | 1993-09-13 | High speed logic simulation system using time division emulation suitable for large scale logic circuits |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5073988A JPH06290230A (en) | 1993-03-31 | 1993-03-31 | Logical simulation device |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH06290230A true JPH06290230A (en) | 1994-10-18 |
Family
ID=13534007
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP5073988A Pending JPH06290230A (en) | 1992-09-11 | 1993-03-31 | Logical simulation device |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH06290230A (en) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2006318266A (en) * | 2005-05-13 | 2006-11-24 | Nec Electronics Corp | Semiconductor device, and apparatus and method for designing semiconductor |
| WO2020068988A1 (en) * | 2018-09-25 | 2020-04-02 | Synopsys, Inc. | Hardware simulation systems and methods for identifying state-holding loops and oscillating loops |
-
1993
- 1993-03-31 JP JP5073988A patent/JPH06290230A/en active Pending
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2006318266A (en) * | 2005-05-13 | 2006-11-24 | Nec Electronics Corp | Semiconductor device, and apparatus and method for designing semiconductor |
| WO2020068988A1 (en) * | 2018-09-25 | 2020-04-02 | Synopsys, Inc. | Hardware simulation systems and methods for identifying state-holding loops and oscillating loops |
| US11475197B2 (en) | 2018-09-25 | 2022-10-18 | Synopsys, Inc. | Hardware simulation systems and methods for identifying state-holding loops and oscillating loops |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3441645B2 (en) | Verification Method of Combinational Circuit Using Filtering Approach | |
| JP3119646B2 (en) | Evaluation device and arithmetic processing method for reconfigurable hardware system | |
| US6957404B2 (en) | Model checking with layered localization reduction | |
| US6473885B1 (en) | Digital circuit layout techniques using circuit decomposition and pin swapping | |
| US5574893A (en) | Computer logic simulation with dynamic modeling | |
| JP3857961B2 (en) | Computer-aided design method and apparatus based on digital circuit logic network | |
| US5572710A (en) | High speed logic simulation system using time division emulation suitable for large scale logic circuits | |
| US6321363B1 (en) | Incremental simulation using previous simulation results and knowledge of changes to simulation model to achieve fast simulation time | |
| US7865346B2 (en) | Instruction encoding in a hardware simulation accelerator | |
| US7712059B1 (en) | Coverage metric and coverage computation for verification based on design partitions | |
| WO1996004608A1 (en) | System and method for simulating discrete functions using ordered decision arrays | |
| US20020010899A1 (en) | Digital circuit layout techniques | |
| EP1769407A2 (en) | Loop manipulation in a behavioral synthesis tool | |
| Pelz et al. | Pattern matching and refinement hybrid approach to circuit comparison | |
| Nagayama et al. | Minimization of average path length in BDDs by variable reordering | |
| JPH06290230A (en) | Logical simulation device | |
| US20030046649A1 (en) | Model-based logic design | |
| Mishchenko et al. | A semi-canonical form for sequential AIGs | |
| JPH1091677A (en) | Logical conversion method for increasing efficiency of simulation/emulation | |
| US6898562B2 (en) | Method and system for efficiently overriding net values in a logic simulator machine | |
| Singh et al. | SIS: A system for sequential circuit synthesis | |
| JP3037263B2 (en) | Configurable hardware system to achieve Boolean satisfiability and method therefor | |
| Biliński et al. | An efficient verification algorithm for parallel controllers | |
| EP0592076B1 (en) | Compilation mechanism for a simulation model | |
| Sedaghat | Routability estimation of FPGA-based fault injection |