JPH1078973A - 順序処理記述の変換方法および装置 - Google Patents

順序処理記述の変換方法および装置

Info

Publication number
JPH1078973A
JPH1078973A JP23230596A JP23230596A JPH1078973A JP H1078973 A JPH1078973 A JP H1078973A JP 23230596 A JP23230596 A JP 23230596A JP 23230596 A JP23230596 A JP 23230596A JP H1078973 A JPH1078973 A JP H1078973A
Authority
JP
Japan
Prior art keywords
signal
unit
description
processing
conversion
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
Application number
JP23230596A
Other languages
English (en)
Inventor
Hiroshi Nagai
寛志 長井
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 JP23230596A priority Critical patent/JPH1078973A/ja
Publication of JPH1078973A publication Critical patent/JPH1078973A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 順序処理記述をできる限り同時処理記述に変
換し、HDLで記述された回路の動作を並列処理により
シミュレートする際の処理の高速化をはかる。 【解決手段】 HDLで記述された順序処理記述を同時
処理記述に変換する際に、順序処理記述の中から、信号
変化に応じて同期処理される部分を同期部として抽出す
るとともに、その同期部内において信号代入を行なう部
分を信号代入部として抽出し、その信号代入部を順序処
理記述から分割するように構成する。

Description

【発明の詳細な説明】
【0001】(目次) 発明の属する技術分野 従来の技術(図16) 発明が解決しようとする課題(図16,図17) 課題を解決するための手段(図1) 発明の実施の形態(図2〜図15) 発明の効果
【0002】
【発明の属する技術分野】本発明は、ハードウェア記述
言語〔以下、HDL(Hardware Description Language)
という〕で記述された回路の動作を並列処理によってシ
ミュレートする際に用いて好適の方法および装置に関
し、特に、HDLで記述された順序処理記述を同時処理
記述に変換するための変換方法および装置に関する。
【0003】HDLを用いた回路の設計は、設計変更の
容易さや理解し易さなどの面から回路を設計する場合に
は非常に有効であり、回路規模が大きくなるにつれてさ
らにその重要性が増している。HDLのシミュレーショ
ンを行なうことにより実際に回路を作成する前にその動
作を確認することができるため、シミュレーションの高
速化は設計期間を短縮する上で重要な要素といえる。シ
ミュレーションの高速化としてはHDLの言語の性質
上、並列処理が有効である。
【0004】しかし、パイプライン処理や並列処理でシ
ミュレートする場合、順序処理文が並列処理の妨げにな
りシミュレーションの速度を低下させている。これは、
1周期のシミュレーションで同時処理文は1つの処理を
シミュレートするのに対し、順序処理文は複数の処理を
行なうためである。順序処理文と同時処理文とを並列処
理する場合、ある処理部において同時処理は終了してい
ても、その処理部は、他の処理部において順序処理が終
了するまで同期待ちを行なう必要があり、効率のよい並
列処理を行なえない。つまり、シミュレーション時間の
長い順序処理文が、並列度を低下させ、シミュレーショ
ン高速化の妨げになっている。
【0005】その解決策としては、順序処理文を同時処
理文に変換すること(以下、同時処理化と呼ぶ場合もあ
る)が考えられ、多くの順序処理文は同時実行可能(同
時処理化可能)である。しかし、順序回路であるフリッ
プフロップを想定した順序処理文では、信号の変化(立
ち上がり/立ち下がり;クロックエッジ)を条件に処理
を行なっている。この場合、順序処理の多くを占めるフ
リップフロップはクロックエッジの判定と信号代入との
依存関係を保てなくなるため、順序回路(フリップフロ
ップ)をそのまま直接的に同時処理化することができ
ず、何らかの操作が必要になる。
【0006】
【従来の技術】HDLにより記述された文には、他の文
と独立して同時に処理することが可能な同時処理文と、
記述された順序で処理されなければならない順序処理文
とがある。VHDL〔VHSIC(Very High Speed I
C)Hardware Description Language)〕による順序処理
文および同時処理文の具体例を図16に示す。図16に
おける文(1)が順序処理文であり、文(2)および
(3)が同時処理文である。これらの文(1)〜(3)
はそれぞれ同時に動作するが、文(1)は一連の文の動
作が文(2)および(3)の各文と同じ処理単位として
扱われる。なお、順序処理と順次処理とは同義である。
【0007】十分な数の並列処理が可能なシミュレーシ
ョンで同時処理文または順序処理文を1文だけシミュレ
ートするのに要する時間を1として考え、図16に示す
文(1)〜(3)をシミュレートした場合、1文で構成
される文(2)および(3)のシミュレーションはそれ
ぞれ時間1で終了するが、文(1)は3つの文から成る
ため、そのシミュレーション時間は3になり、文(1)
〜(3)を並列処理した場合にHDL全体としてのシミ
ュレーション時間は3になる。
【0008】つまり、順序処理文の処理によってシミュ
レーション速度が決定してしまうことになる。そのた
め、並列処理によるシミュレーション高速化を行なうに
は、順序処理のシミュレーション時間を短くする必要が
ある。順序処理のシミュレーション時間を短くする一手
法としては、前述した、順序処理文の同時処理化が考え
られる。この手法は、順序処理で記述された回路が、例
えば図16に示す文(1)を成す3つの文のように、全
て組合せ回路であるならば、各々の接続関係を保てば同
時処理を行なってもシミュレーション結果は変わらない
という原理を用いたものである。順序処理に、このよう
な変換(同時処理化)を施せば、普通は順序通りに処理
される各文を並列に処理できるようになるため、シミュ
レーション時間が1で済むことになる。
【0009】
【発明が解決しようとする課題】組合せ回路で表せるよ
うな順序処理記述は同時処理するように変換できる。し
かし、順序処理記述中に信号の変化(クロックエッジ)
を判断して処理を行なう記述があると、組合せ回路で表
せないため、その順序処理記述を同時処理化することが
できない。
【0010】例えば、前述した図16に示す順序処理文
(1)や、図17(a)に示す順序処理文は、クロック
clk の変化に関係しないので、その順序処理文を同時処
理文に変換することができるのに対し、図17(b)に
示す順序処理文は、クロックclk の立ち上がりで実行さ
れるため、その順序処理文を同時処理文に変換すること
はできない。なお、図17(b)に示す順序処理文は、
クロックclk の立ち上がりで実行されるもので、その記
述中、“clk'event ”は、クロックclk が変化すること
を示している。
【0011】順序処理記述では、同時処理に変換できる
組合せ回路に比べ、フリップフロップの数がかなり多い
場合がある。予め準備された2種類の回路(No.1,No.
2)についての順序処理記述の内容を調べた結果を表1
に示す。ただし、表1中において、( )内は同時処理
化不可能な記述のうちのフリップフロップの割合であ
る。
【0012】
【表1】
【0013】このようにフリップフロップを多く含む順
序処理記述において、組合せ回路についての記述を同時
処理記述に変換しただけでは、同時処理化によるシミュ
レーションの高速化効果をそれほど期待できない。この
ような回路のシミュレーションを高速化するには、フリ
ップフロップをも同時処理化する必要がある。しかし、
フリップフロップは、クロックの立ち上がりや立ち下が
り(クロックエッジ)に応じて処理を行なう順序回路で
あり、このようなフリップフロップを単純に同時処理化
することができない。従って、信号変化に依存するため
に同時処理記述に変換できない順序処理記述は、変換さ
れることなく、そのまま順序処理されざるを得ず、HD
Lシミュレーションの並列度を低下させる要因になって
いた。
【0014】本発明は、このような課題に鑑み創案され
たもので、順序処理記述をできる限り同時処理記述に変
換して、HDLで記述された回路の動作を並列処理によ
りシミュレートする際の処理の高速化をはかった、順序
処理記述の変換方法および装置を提供することを目的と
する。
【0015】
【課題を解決するための手段】このため、本発明の順序
処理記述の変換方法は、HDLで記述された順序処理記
述を同時処理記述に変換するべく、順序処理記述の中か
ら、信号変化に応じて同期処理される部分を同期部とし
て抽出するとともに、その同期部内において信号代入を
行なう部分を信号代入部として抽出し、さらに、その信
号代入部を順序処理記述から分割することを特徴として
いる(請求項1)。
【0016】そして、順序処理記述から分割された信号
代入部を、その信号代入部と同等の動作を行なうハード
ウェア素子またはソフトウェアに置き換えてもよい(請
求項2,3)。一方、図1は、本発明の順序処理記述の
変換装置を示す原理ブロック図で、この図1に示すよう
に、本発明の順序処理記述の変換装置は、HDLで記述
された順序処理記述を同時処理記述に変換するためのも
のであって、順序処理判定部1,分割判定部2,信号情
報取得部3および分割部4を有して構成されている。
【0017】ここで、順序処理判定部1は、HDLによ
る記述中における順序処理記述の有無を判定するもので
あり、分割判定部2は、順序処理判定部1により順序処
理記述が有ると判定された場合に、その順序処理記述の
中に信号変化に応じて同期処理される部分が存在するこ
とを条件にして順序処理記述を分割可能か否かを判定
し、その部分を同期部として抽出するものである。
【0018】また、信号情報取得部3は、分割判定部2
により抽出された同期部内において信号代入を行なう部
分を信号代入部として抽出し、その信号代入部について
の信号情報を取得するものであり、分割部4は、信号情
報取得部3により抽出された信号代入部を、順序処理記
述から分割するものである(請求項4)。さらに、信号
情報取得部3により取得された信号代入部についての信
号情報に基づいて、分割部4により分割された信号代入
部を、所定の動作を行なうハードウェア素子またはソフ
トウェアに置き換え可能か否かを判定する変換判定部
と、この変換判定部により置き換え可能であると判定さ
れた場合に分割部4により分割された信号代入部をハー
ドウェア素子またはソフトウェアに置き換える変換実行
部とをそなえる(請求項5,6)。
【0019】ところで、順序処理記述の中に信号変化を
判定して同期処理を行なうような記述が含まれている場
合、その記述を同時処理化することができない。しか
し、実際に同時処理化することができないのは信号代入
部であり、それ以外の部分については同期処理化は可能
である。そこで、本発明では、信号変化に応じて同期処
理される同期部内から信号代入部を抽出して分割するこ
とにより、順序処理記述を、信号代入部以外の部分につ
いては同時処理化可能な形に変換している。このように
順序処理記述を信号代入部とそれ以外の部分とに分割し
て取り扱うことで、順序処理記述の長さを短くできる。
また、信号変化に伴う処理は信号代入部だけになり、そ
れ以外の部分は、分割後、組合せ回路になるので、同時
処理化することができる(請求項1,4)。
【0020】さらに、順序処理記述として残る信号代入
部を、その信号代入部と同等の動作を行なうハードウェ
ア素子もしくはソフトウェアに置き換えることにより、
シミュレーションに際して順序処理を行なう必要がなく
なる(請求項2,3,5,6)。
【0021】
【発明の実施の形態】以下、図面を参照して本発明の実
施の形態を説明する。図2は本発明の一実施形態として
の順序処理記述の変換方法の全体的処理フローおよびそ
の変換装置の構成を示す図である。この図2では、本実
施形態による変換方法を成す概略的な6つのステップ1
1〜16が処理順序に従って示されている。そして、こ
れらのステップ11〜16が、それぞれ、本実施形態の
変換装置を機能的に構成する要素(順序処理判定部,分
割判定部,信号情報取得部,分割部,変換判定部および
変換実行部)に対応している。
【0022】変換装置は、HDLで記述された順序処理
記述を同時処理記述に変換するためのもので、実際には
ハードウェアとしてCPUやメモリを有する一般的なプ
ロセッサにより構成されている。そして、CPUが、後
述する回路データベースに基づいて、図3〜図8に示す
フローチャートに従うプログラムを実行することによ
り、各要素(ステップ11〜16)がソフトウェアによ
り実現されるようになっている。
【0023】本実施形態では、処理対象となるデータと
して、HDLで記述されたものを直接的に扱うのではな
く、HDLで記述された回路の構造をデータベース化し
た回路データベース(HDLデータベース)を用いる。
以下では、本実施形態による処理手順を説明するととも
に、その処理手順を図9に示すような具体的な回路デー
タベースに適用した場合についても合わせて説明する。
【0024】ここで、回路データベース(HDLデータ
ベース)の最小単位である各ブロックには、図9〜図1
1に示すように、そのブロックの識別子(id)とそのブ
ロックの名前(name)とが付されている。各ブロックの
識別子(id)はハイフンを挟んだ前後一対の数字として
表記されており、最初の数字はそのブロックの属性
(1:信号,2:順序処理,3:同時処理)を示すとと
もに、後ろの数字はそのブロックの属性についての序数
を示している。
【0025】各ブロックの名前は、そのブロックの属性
が信号ならば信号名〔図9〜図11では、CLK(クロッ
ク),D,E,P, P′〕とし、そのブロックの属性が順序処理
または同時処理ならば機能名とする。なお、図9〜図1
1では、具体的な機能名として"RISE","NOT","OR","ASS
IGN","END","FLIPFLOP" が表記されている。"RISE"は信
号の立ち上がりを調べるブロックの機能名であり、"NO
T" は信号の否定を行なうブロックの機能名であり、"O
R"は信号の論理和を出力するブロックの機能名であり、
"ASSIGN"は信号代入を行なうブロック(信号代入部)の
機能名であり、"END" は終了を示すブロックの機能名で
あり、"FLIPFLOP"はフリップフロップとしての機能を果
たすブロックの機能名である。
【0026】また、図9〜図11において、ブロック相
互間を結ぶ実線の矢印はデータの流れ(入出力方向)を
示し、ブロック相互間を結ぶ点線の矢印は順序処理文
(逐次実行文)の実行順序を示している。本実施形態で
使用される各種データ構造は、以下の通りである。例え
ば、“SYNC PART”の“SIGNAL”のデータは、“SYNC
PART.SIGNAL"として表される。
【0027】SYNC PART:同期部に関するデータ(例
えば図4に示す同期部抽出データテーブル21に格納さ
れるデータ) -SIGNAL :同期部における同期基準となるクロック信号
のid -BODY :同期部の開始ブロックのid
【0028】ASSIGN:信号代入ブロック(信号代入
部)に関するデータ(例えば図5,図6に示す信号情報
取得データテーブル22に格納されるデータ) -SIGNAL :信号代入ブロックで同期基準となるクロック
信号のid - IN SIGNAL:信号代入ブロックへの入力信号を送るブ
ロックのid -OUT SIGNAL:信号代入ブロックからの出力信号を受け
るブロックのid -ASSIGN :信号代入ブロックのid -TEMPORARY:信号代入ブロックを分割すべく挿入する信
号(後述)のid
【0029】FLIPFLOP:フリップフロップ変換用デー
タ〔例えば図7に示すフリップフロップ変換用データテ
ーブル23に格納されるデータ;ここでは図12(a)
に示すフリップフロップ31を変換対象とする〕 -SIGNAL :フリップフロップに対するクロック信号のid - IN SIGNAL:フリップフロップへの入力信号を送るブ
ロックのid -OUT SIGNAL:フリップフロップからの出力信号を受け
るブロックのid -RESET:フリップフロップに対するリセット信号のid -SET:フリップフロップに対するセット信号のid
【0030】さて、HDLで記述された順序処理記述を
同時処理記述に変換するために、本実施形態では、図2
に示すように、順序処理判定ステップ11,分割判定ス
テップ12,信号情報取得ステップ13,信号代入部分
割ステップ14,変換判定ステップ15および変換実行
ステップ16が順次実行される。順序処理判定ステップ
(順序処理判定部)11では、図9に示すような回路デ
ータベース(HDLデータベース)の中から順序処理記
述を探し、順序処理記述が有るか否かを判定する。
【0031】分割判定ステップ(分割判定部)12で
は、順序処理判定ステップ11により順序処理記述が有
ると判定された場合に、その順序処理記述の中に、信号
変化(クロック信号の立ち上がり)に応じて同期処理さ
れる部分が存在することを条件にして順序処理記述を分
割可能か否か(分割条件を満たしているか否か)を判定
し、その部分を同期部として抽出する。抽出されたデー
タ(id情報)は、例えば図4に示すように、メモリ
(図示せず)上の同期部抽出データテーブル21に格納
される。
【0032】信号情報取得ステップ(信号情報取得部)
13では、分割判定ステップ12で抽出された同期部内
において信号代入を行なう部分を信号代入部として抽出
し、その信号代入部についての信号情報を取得する。取
得されたデータ(id情報)は、例えば図5に示すよう
に、メモリ(図示せず)上の信号情報取得データテーブ
ル22に格納される。
【0033】信号代入部分割ステップ(分割部)14で
は、順序処理記述において、信号情報取得ステップ13
で抽出された信号代入部(信号代入ブロック)とその他
の処理部とを、後述するごとく新たな信号を介して分割
する。変換判定ステップ(変換判定部)15では、信号
情報取得ステップ13で取得された信号代入部について
の信号情報に基づいて、信号代入部分割ステップ14で
分割された信号代入部を、図12(a)に示すフリップ
フロップ(ハードウェア素子)31に置き換え可能か否
かを判定する。
【0034】そして、変換実行ステップ(変換実行部)
16では、変換判定ステップ15により置き換え可能で
あると判定された場合に、信号代入部分割ステップ14
で分割された信号代入部を、実際に図12(a)に示す
フリップフロップ31に置き換える。以下に、上述した
各ステップ11〜16のより詳細な処理手順について、
それぞれ図3〜図8を参照しながら説明する。
【0035】図3は、順序処理判定ステップ11の詳細
な処理フローを示す図であり、この図3に示すように、
順序処理判定ステップ11では、回路データベースの全
ての処理部(ブロック)について順序処理部の探索を行
なったか否かを判定し(ステップS11)、未判定の処
理部があれば(ステップS11でNO判定の場合)、そ
の処理部が順序処理記述であるか否かを判定する(ステ
ップS12)。順次処理記述でなければ(NO判定の場
合)、次の処理部を探索し(ステップS13)、ステッ
プS11に戻る。
【0036】そして、回路データベースの全ての処理部
について順次処理部の探索を行ない順次処理部が見つけ
られなかった場合には偽を返し(ステップS11のYE
SルートからステップS14)、順序処理判定ステップ
11を終了する。一方、回路データベース中に1つでも
順次処理部が存在する場合には真を返し(ステップS1
2のYESルートからステップS15)、順序処理判定
ステップ11を終了する。
【0037】図4は、分割判定ステップ12の詳細な処
理フローおよび同期部抽出データの具体例を示す図であ
り、順序処理判定ステップ11から真が返されてきた場
合、この図4に示すように、分割判定ステップ12で
は、まず、順序処理記述中に信号変化の判定部(例えば
図9に示す機能名“RISE”のブロック)が存在するか否
かを判定する(ステップS21)。
【0038】信号変化の判定部が無ければ偽を返して
(ステップS21のNOルートからステップS26)、
分割判定ステップ12を終了する。これに対し、信号変
化の判定部が有れば(ステップS21でYES判定の場
合)、その信号変化の判定に用いられるクロック信号を
得て、そのクロック信号の識別子を同期部抽出データテ
ーブル21のデータ“SYNC PART.SIGNAL"として格納す
る(ステップS22)。図9に示す例では、機能名“RI
SE”のブロック(識別子2−1)が信号変化の判定部で
あり、その信号変化の判定対象のクロック信号は、信号
名CLK で識別子1−1の信号である。従って、図4に示
すように、同期部抽出データテーブル21にはデータ
“SYNC PART.SIGNAL"として“1−1”が格納される。
【0039】クロック信号を得ると、そのクロック判定
部から分岐して処理される部分(同期部)を見つけ出
し、その同期部の始まりを得て、その始まりのブロック
の識別子を同期部抽出データテーブル21のデータ“SY
NC PART.BODY"として格納する(ステップS23)。図
9に示す例では、機能名“RISE”のブロック直後のブロ
ックが同期部の始まりであり、そのブロックの識別子は
2−2である。従って、図4に示すように、同期部抽出
データテーブル21にはデータ“SYNC PART.BODY"とし
て“2−2”が格納される。
【0040】そして、上述したステップS22およびS
23の処理により、“SYNC PART”の2つのデータが揃
った場合には真を返して(ステップS24のYESルー
トからステップS25)、分割判定ステップ12の処理
を終了する一方、その2つのデータが何らかの理由によ
って揃わなかった場合には偽を返して(ステップS24
のNOルートからステップS26)、分割判定ステップ
12の処理を終了する。
【0041】図5は、信号情報取得ステップ13の詳細
な処理フローおよび信号情報取得データの具体例を示す
図であり、この図5に示すように、信号情報取得ステッ
プ13では、まず、同期部抽出データテーブル21にお
けるデータ“SYNC PART.BODY"を参照し、その識別子を
もつブロックから始まる同期部を探索する(ステップS
31)。
【0042】その同期部の最後まで探索を行なったか否
かを判定し(ステップS32)、その同期部についての
探索を終了していなければ(NO判定の場合)、その同
期部に信号代入部(例えば図9に示す機能名“ASSIGN”
のブロック)が有るか否かを判定する(ステップS3
3)。信号代入部が無ければ(NO判定の場合)、ステ
ップS31に戻る一方、信号代入部が有れば(YES判
定の場合)、その信号代入部に関するデータ(後述)を
取得して信号情報取得データテーブル22に格納してか
ら(ステップS34)、ステップS31に戻る。このよ
うな処理が、同期部の全てについて探索を終了するまで
(ステップS32でYES判定となるまで)、繰り返し
実行され、同期部の全てについて探索を終了すると、信
号情報取得ステップ13の処理を終了する。
【0043】なお、ステップS34で取得される信号代
入部に関するデータとしては、その信号代入部の同期基
準となるクロック信号の識別子と、その信号代入部への
入力信号を送るブロックの識別子と、その信号代入部か
らの出力信号を受けるブロックの識別子と、その信号代
入部のブロックの識別子とがあり、これらのデータがそ
れぞれ信号情報取得データテーブル22のデータ“ASSI
GN.SIGNAL", "ASSIGN.IN SIGNAL", "ASSIGN.OUT SIGN
AL", "ASSIGN.ASSIGN"として格納される。
【0044】図9に示す例では、信号代入部(“ASSIG
N”)の同期基準となるクロック信号は識別子1−1の
信号であり、信号代入部への入力信号は識別子2−3の
ブロック(“OR”)から送られ、信号代入部からの出力
信号は識別子1−4のブロック(“P”)へ送られ、信
号代入部のブロックの識別子は2−4である。従って、
図5に示すように、信号情報取得データテーブル22に
は、データ“ASSIGN.SIGNAL", "ASSIGN.IN SIGNAL",
"ASSIGN.OUT SIGNAL", "ASSIGN.ASSIGN"として“1−
1”,“2−3”,“1−4”,“2−4”がそれぞれ
格納される。
【0045】図6は、信号代入部分割ステップ14の詳
細な処理フローおよび信号情報取得データの具体例を示
す図であり、この図6に示すように、信号代入部分割ス
テップ14では、まず、信号情報取得データテーブル2
2のデータ "ASSIGN.OUT SIGNAL”を参照し、その信号
情報と同じ型の仮の出力信号を作成し、その識別子を信
号情報取得データテーブル22のデータ“ASSIGN.TEMPO
RARY”として格納する(ステップS41)。図9および
図10に示す例では、仮の出力信号として、信号名
“P′”で識別子1−5のものを作成し、図6に示すよ
うに、信号情報取得データテーブル22には、データ
“ASSIGN.TEMPORARY”として“1−5”が格納される。
【0046】そして、“ASSIGN.TEMPORARY”で示される
ブロックの入力に、"ASSIGN.IN SIGNAL”で示されるブ
ロックを接続する(ステップS42)。図10に示す例
では、識別子1−5のブロック“P′”の入力に、識別
子2−3のブロック“OR”の出力を接続している。つい
で、“ASSIGN.TEMPORARY”で示されるブロックの出力
を、 "ASSIGN.ASSIGN"で示されるブロックの入力に接続
する(ステップS43)。図10に示す例では、識別子
1−5のブロック“P′”の出力を、識別子2−4のブ
ロック“ASSIGN”の入力を接続している。
【0047】これらの接続処理の後、"ASSIGN.IN SIGN
AL”で示されるブロックが、 "ASSIGN.ASSIGN"で示され
るブロックと同じ順序処理内に含まれているか否かを判
定する(ステップS44)。同じ順序処理内に含まれて
いれば(YES判定の場合)には、"ASSIGN.IN SIGNA
L”で示されるブロックとそのブロックに接続されるブ
ロックとを含む順序処理が、“ASSIGN.TEMPORARY”で示
されるブロックを介して、 "ASSIGN.ASSIGN"で示される
ブロックを含む順序処理から分割され、別の順序処理と
して扱われる(ステップS45)。これにより、クロッ
ク信号に同期して動作する信号代入部が順序処理のその
他の部分から分割されることになる。
【0048】図9に示す例では、識別子2−3のブロッ
ク“OR”が識別子2−4のブロック“ASSIGN”と同じ順
序処理1内に含まれているので、図10に示すように、
識別子2−3のブロック“OR”とこれに接続される識別
子2−2のブロック“NOT"とを含む順序処理部が、新た
に導入した識別子1−5のブロック“P′”を介して、
識別子2−4のブロック“ASSIGN”を含む順序処理1か
ら分割され、別の順序処理2として扱われている。
【0049】そして、ステップS44にて、"ASSIGN.IN
SIGNAL”で示されるブロックが、"ASSIGN.ASSIGN"で
示されるブロックと同じ順序処理内に含まれていないと
判定された場合(NO判定の場合)には、全ての信号代
入部に対して、上述したステップS41〜S45の処理
を行なったか否かを判定し(ステップS46)、未処理
の信号代入部が有れば(NO判定の場合)には、ステッ
プS41に戻る一方、全ての信号代入部に対する処理を
終えている場合(ステップS46でYES判定の場合)
には、信号代入部分割ステップ14の処理を終了する。
【0050】図7は、変換判定ステップ15の詳細な処
理フローおよびフリップフロップ変換用データの具体例
を示す図である。ここでは、変換対象を図12(a)に
示すフリップフロップ31に限定しており、変換判定ス
テップ15では、信号代入部分割ステップ14で分割さ
れた信号代入部を含む順序処理部分が、フリップフロッ
プ31に変換可能であるかを判定している。従って、前
述したフリップフロップ変換用データの構造や以下に説
明する手順なども、それに基づいている。
【0051】この図7に示すように、変換判定ステップ
15では、まず、クロック信号などの判定条件を調べ
(ステップS51)、信号情報取得データテーブル22
を参照して、信号代入部分割ステップ14で分割された
信号代入部を含む順序処理部分が、フリップフロップ3
1に変換できる形式であるか否かを判定する(ステップ
S52)。ここで、フリップフロップ31に変換できな
い形式であると判定された場合(NO判定の場合)に
は、エラー処理を行なう(ステップS57)。
【0052】ステップS52でフリップフロップ31に
変化できる形式であると判定された場合(YES判定の
場合)には、信号情報取得データテーブル22のデータ
“ASSIGN.SIGNAL", “ASSIGN.TEMPORARY", "ASSIGN.OUT
SIGNAL" が、フリップフロップ変換用データテーブル
23のデータ "FLIPFLOP.SIGNAL", "FLIPFLOP.IN SIGN
AL", "FLIPFLOP.OUT SIGNAL" としてそれぞれ格納され
る。図10に示す例、即ち図6に示す信号情報取得デー
タテーブル22の具体例に従うと、図7に示すように、
フリップフロップ変換用データテーブル23には、デー
タ "FLIPFLOP.SIGNAL", "FLIPFLOP.IN SIGNAL", "FLIP
FLOP.OUT SIGNAL" として“1−1”,“1−5”,
“1−4”がそれぞれ格納される。
【0053】ついで、変換対象の順序処理部分に対する
非同期信号(リセット信号やセット信号)が有るか否か
を判定する(ステップS54)。HDLによる記述で、
例えば、“if( reset = '0' ) then”や“if( reset =
'1' ) then”という記述が含まれているか否かを判定
する。非同期信号が有ると判定された場合(YES判定
の場合)、信号の値を条件にして非同期に“0”を信号
代入している部分をリセットとみなし、フリップフロッ
プ変換用データテーブル23のデータ "FLIPFLOP.RESE
T”に、その非同期信号の識別子を格納するとともに、
信号の値を条件にして非同期に“1”を信号代入してい
る部分をセットとみなし、フリップフロップ変換用デー
タテーブル23のデータ "FLIPFLOP.SET”に、その非同
期信号の識別子を格納する(ステップS55)。
【0054】なお、図9〜図11では、リセット信号も
セット信号も存在しない例が示されている。また、ステ
ップS55の処理後、“0”や“1”以外の値を代入し
ている部分が有るか否かを判定し(ステップS56)、
そのような部分があれば(YES判定の場合)には、エ
ラー処理を行なう(ステップS58)。
【0055】そして、ステップS54で非同期信号が無
いと判定された場合や、ステップS56で“0”や
“1”以外の値を代入している部分が無いと判定された
場合には、全ての信号代入部に対して、上述したステッ
プS51〜S58の処理を行なったか否かを判定し(ス
テップS59)、未処理の信号代入部が有れば(NO判
定の場合)には、ステップS51に戻る。一方、全ての
信号代入部に対する処理を終えている場合(ステップS
59でYES判定の場合)には、変換判定ステップ15
の処理を終了する。
【0056】図8は、変換実行ステップ16の詳細な処
理フローを示す図であり、この図8に示すように、変換
実行ステップ16では、まず、変換対象の順序処理部分
に、図12(a)に示すフリップフロップ31を組み込
む記述を加える(ステップS61)。そして、フリップ
フロップ変換用データテーブル23を参照し、そのデー
タである "FLIPFLOP.SIGNAL", "FLIPFLOP.IN SIGNAL",
"FLIPFLOP.OUT SIGNAL”を識別子としてもつ信号を、
フリップフロップ31のクロック端子“clock", 入力端
子“input", 出力端子“output”にそれぞれ接続する
(ステップS62)。図10に示す例では、フリップフ
ロップ31のクロック端子“clock", 入力端子“inpu
t", 出力端子“output”には、識別子1−1のクロック
信号“CLK",識別子1−5の挿入信号“P′”,識別子
1−4の出力信号“P”がそれぞれ接続される。
【0057】ついで、非同期信号が有るか否かを判定し
(ステップS63)、非同期信号が有ると判定された場
合(YES判定の場合)つまりフリップフロップ変換用
データテーブル23のデータ "FLIPFLOP.RESET", "FLIP
FLOP.SET”に識別子が格納されている場合には、これら
の識別子をもつ信号を、フリップフロップ31のリセッ
ト端子“reset",セット端子“set"にそれぞれ接続する
(ステップS64)。前述した通り、図9〜図11で
は、非同期信号が存在しない例が示されているので、リ
セット端子やセット端子の接続処理は行なわれない。
【0058】そして、ステップS63で非同期信号が無
いと判定された場合や、ステップS64での接続処理を
行なった後には、信号代入部に組み込まれるべき全ての
フリップフロップに対して、上述したステップS61〜
S64の処理を行なったか否かを判定し(ステップS6
5)、未処理のフリップフロップが有れば(NO判定の
場合)には、ステップS61に戻る。
【0059】一方、全てのフリップフロップに対する処
理を終えている場合(ステップS65でYES判定の場
合)には、フリップフロップに置き換えられた順次処理
部を削除し(ステップS66)、変換判定ステップ15
の処理を終了する。なお、図10に示す例では順次処理
1に対応する部分が削除される。このようにして、例え
ば図9に示す回路データベースに対して、図2〜図8に
て説明した処理を施すことにより、図11に示すよう
に、クロック信号の変化に同期する信号代入処理が、フ
リップフロップ(識別子3−1のブロック)に置き換え
られて同時処理に変換され、同時処理1として扱われる
ことになる。
【0060】このように、本発明の一実施形態としての
順序処理記述の変換方法および装置によれば、HDLに
よる順序処理記述が、新たに導入した分割用の信号
(“ASSIGN.TEMPORARY”に対応する信号;図9〜図11
に示す例では識別子1−5のブロック“P′”)を介し
て、信号代入部(図10の順序処理1参照)とそれ以外
の部分(図10の順序処理2参照)とに分割して取り扱
われ、順次処理記述の長さを短くできるほか、信号変化
に伴う処理は信号代入部だけになり、それ以外の部分を
同時処理できるので、HDLで記述された回路の動作を
並列処理によりシミュレートする際、そのシミュレーシ
ョン処理を大幅に高速化することができる。
【0061】また、順次処理記述として残る信号代入部
を、その信号代入部と同等の動作を行なうフリップフロ
ップ31に置き換えることで、並列処理によるHDLシ
ミュレーションに際して順次処理を行なう必要がなくな
り、その信号代入部を同時処理(図11の同時処理1参
照)できるので、シミュレーション処理をさらに高速化
することができる。
【0062】ここで、VHDLで、本実施形態の手法を
用いて順序処理記述を信号代入部と組合せ回路とに分割
変換した例を、図15(a),(b)に示す。図15
(a)は、変換前のVHDLによる順序処理記述の具体
例を示し、図15(b)は、図15(a)に示す順序処
理記述を本実施形態により変換(同時処理化)した結果
を示している。
【0063】図15(b)に示す記述において、“qq1"
や“qq2"が分割用の信号(“ASSIGN.TEMPORARY”に対応
する信号)である。このような分割用の信号を挿入する
ため、信号代入部分が1段増えるので、HDLシミュレ
ーション実行時には遅延などが発生しないように考慮す
ることが望ましい。また、分割した組合せ回路は、容易
に同時処理化することができるため、順次処理はクロッ
クに同期した信号代入のみとなる。これによって、シミ
ュレーション時間を大きく短縮することができる。信号
代入部については、前述した通り、フリップフロップに
置き換えることで同時処理可能になり、さらにシミュレ
ーション時間を短縮できる。
【0064】また、表1にて前述した2種類の回路(N
o.1,No.2)に上述した本実施形態による変換を施した
結果を用いて並列処理によるHDLシミュレーションを
行なった際の、シミュレーション時間,発生イベント数
の結果を表2に示す。また、回路の大きさの目安とし
て、シミュレーションを実行するCADアクセラレータ
中で使用される素子(プリミティブ)の数についても表
2に示す。
【0065】下記表2に示すように、変換前と変換後と
では、2種類の回路とも、プリミティブ数はそれほど大
きく変化していないが、シミュレーション時間は約2
割、イベント数は4割も減少している。このことから、
本実施形態による変換は、順序処理記述のフリップフロ
ップを含むHDLの並列シミュレーションに極めて有効
であることが明らかである。
【0066】
【表2】
【0067】なお、上述した実施形態では、信号代入部
を、ハードウェア素子である、図12(a)に示すフリ
ップフロップ31で置き換える場合について説明した
が、このフリップフロップ31と同等の動作をするソフ
トウェアを呼び出し、その信号処理部をそのソフトウェ
アで置き換えるように構成してもよい。このフリップフ
ロップ31をソフトウェアとして実現する際に参照すべ
き真理値テーブルを図12(b)に示す。図12(b)
中、“D”は入力端子、“Q”は出力端子を示してい
る。
【0068】この場合、変換実行ステップ16では、図
8にて説明したステップS61〜S64の処理に代えて
下記のような処理が実行される。つまり、まず、フリッ
プフロップ31と同等の動作を行なうソフトウェア〔図
12(b)に示す真理値テーブル〕を呼び出す。そし
て、フリップフロップ変換用データテーブル23を参照
し、そのデータである "FLIPFLOP.SIGNAL", "FLIPFLOP.
IN SIGNAL", "FLIPFLOP.OUT SIGNAL”を識別子として
もつ信号と、呼び出されたソフトウェアで表現されたフ
リップフロップのクロック端子(ck), 入力端子(D),
出力端子(Q)との間で各値の受渡しを行なうように接
続する。また、非同期信号が有る場合つまりフリップフ
ロップ変換用データテーブル23のデータ "FLIPFLOP.R
ESET", "FLIPFLOP.SET”に識別子が格納されている場合
には、これらの識別子をもつ信号と、ソフトウェアで表
現されたフリップフロップのリセット端子(reset),セ
ット端子(set)との間で各値の受渡しを行なうように接
続する。
【0069】また、上述した実施形態では、図2に示す
ように、6つのステップ11〜16の処理を実行して変
換を行なっているが、例えば、変換対象の順序処理記述
が、図10の順序処理1として示すように、信号変化に
同期する信号代入のみであることが初めから分かってい
る場合には、図2におけるステップ12,14の処理を
省略しステップ11,13,15および16の処理を実
行してもよい。
【0070】さらに、上述した実施形態では、信号代入
部の置き換え対象を、図12(a)に示すハードウェア
素子または図12(b)に示す真理値テーブルでソフト
ウェアとして表される素子である、フリップフロップ3
1のみに限定して説明したが、本発明はこれに限定され
るものではなく、その他の機能を持つハードウェア素子
またはその素子の機能を実現するソフトウェアを用いて
もよい。その場合は、置き換えたい記述が、その素子に
対応しているかの判定(変換判定ステップ)と必要な情
報の取得(テーブル23に対応する変換用データ取得)
とを行なえばよい。このように、置き換え対象の素子の
種類を増やすことにより、順序処理記述から分割された
信号代入部を、より確実にハードウェア素子またはソフ
トウェアに置き換えることができ、信号代入部の同期処
理化を促進できる。
【0071】信号代入部の置き換え対象としては、フリ
ップフロップ31以外に、例えば、図13(a)〜
(c)に示すようなシフトレジスタ32や、図14
(a)〜(c)に示すようなスキャン付きフリップフロ
ップ33を採用することができる。ここで、図13
(a),(b),(c)には、それぞれ、ハードウェア
素子としてのシフトレジスタ32と、そのシフトレジス
タ32をソフトウェアとして実現する際に用いられる真
理値テーブルと、そのシフトレジスタ32に対応するH
DL記述例とが示されている。
【0072】また、図14(a),(b),(c)に
は、それぞれ、ハードウェア素子としてのスキャン付き
フリップフロップ33と、そのスキャン付きフリップフ
ロップ33をソフトウェアとして実現する際に用いられ
る真理値テーブルと、そのスキャン付きフリップフロッ
プ33に対応するHDL記述例とが示されている。上述
した実施形態では、図9に示す回路データベースを処理
対象の具体例として説明しているが、本発明は、これに
限定されるものでなく、他の種々の順序処理記述を同時
処理記述に変換するのに用いられる。
【0073】
【発明の効果】以上詳述したように、本発明の順序処理
記述の変換方法および装置によれば、HDLによる順序
処理記述が信号代入部とそれ以外の部分とに分割して取
り扱われ、順次処理記述の長さを短くできるほか、信号
変化に伴う処理は信号代入部だけになり、それ以外の部
分を同時処理化できるので、HDLで記述された回路の
動作を並列処理によりシミュレートする際に、その処理
を大幅に高速化できる効果がある(請求項1,4)。
【0074】また、順次処理記述として残る信号代入部
を、その信号代入部と同等の動作を行なうハードウェア
素子もしくはソフトウェアに置き換えることで、並列処
理によるシミュレーションに際して順次処理を行なう必
要がなくなり、さらなる高速化に寄与する(請求項2,
3,5,6)。
【図面の簡単な説明】
【図1】本発明の原理ブロック図である。
【図2】本発明の一実施形態としての順序処理記述の変
換方法の全体的処理フローおよびその変換装置の構成を
示す図である。
【図3】本実施形態における順序処理判定ステップ(順
序処理判定部)の詳細な処理フローを示す図である。
【図4】本実施形態における分割判定ステップ(分割判
定部)の詳細な処理フローおよび同期部抽出データの具
体例を示す図である。
【図5】本実施形態における信号情報取得ステップ(信
号情報取得部)の詳細な処理フローおよび信号情報取得
データの具体例を示す図である。
【図6】本実施形態における信号代入部分割ステップ
(分割部)の詳細な処理フローおよび信号情報取得デー
タの具体例を示す図である。
【図7】本実施形態における変換判定ステップ(変換判
定部)の詳細な処理フローおよびフリップフロップ変換
用データの具体例を示す図である。
【図8】本実施形態における変換実行ステップ(変換実
行部)の詳細な処理フローを示す図である。
【図9】本実施形態の処理対象となる回路データベース
の具体例を示す図である。
【図10】本実施形態において信号代入部を分割した結
果得られる回路データベースを示す図である。
【図11】本実施形態において信号代入部をフリップフ
ロップにより置き換えた結果得られる回路データベース
を示す図である。
【図12】(a),(b)はそれぞれ本実施形態におけ
るハードウェア素子としてのフリップフロップとそのフ
リップフロップをソフトウェアとして実現する際の真理
値テーブルとを示す図である。
【図13】(a),(b),(c)はそれぞれ本実施形
態におけるハードウェア素子としてのシフトレジスタと
そのシフトレジスタをソフトウェアとして実現する際に
用いられる真理値テーブルとそのシフトレジスタに対応
するHDL記述例とを示す図である。
【図14】(a),(b),(c)はそれぞれ本実施形
態におけるハードウェア素子としてのスキャン付きフリ
ップフロップとそのスキャン付きフリップフロップをソ
フトウェアとして実現する際に用いられる真理値テーブ
ルとそのスキャン付きフリップフロップに対応するHD
L記述例とを示す図である。
【図15】(a),(b)はそれぞれ変換前の順序処理
記述の具体例とその順序処理記述を本実施形態により変
換した結果得られた記述とを示す図である。
【図16】VHDLによる順序処理文および同時処理文
の具体例を示す図である。
【図17】(a),(b)はそれぞれ従来の手法で同時
処理記述に変換できる順序処理文の具体例と従来の手法
で同時処理記述に変換できない順序処理文の具体例とを
示す図である。
【符号の説明】
1 順序処理判定部 2 分割判定部 3 信号情報取得部 4 分割部 11 順序処理判定ステップ(順序処理判定部) 12 分割判定ステップ(分割判定部) 13 信号情報取得ステップ(信号情報取得部) 14 信号代入部分割ステップ(分割部) 15 変換判定ステップ(変換判定部) 16 変換実行ステップ(変換実行部) 21 同期部抽出データテーブル 22 信号情報取得データテーブル 23 フリップフロップ変換用データテーブル 31 フリップフロップ 32 シフトレジスタ 33 スキャン付きフリップフロップ

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 ハードウェア記述言語で記述された順序
    処理記述を同時処理記述に変換するための変換方法にお
    いて、 前記順序処理記述の中から、信号変化に応じて同期処理
    される部分を同期部として抽出するとともに、 抽出された前記同期部内において信号代入を行なう部分
    を信号代入部として抽出し、 抽出された前記信号代入部を前記順序処理記述から分割
    することを特徴とする、順序処理記述の変換方法。
  2. 【請求項2】 前記順序処理記述から分割された前記信
    号代入部を、その信号代入部と同等の動作を行なうハー
    ドウェア素子に置き換えることを特徴とする、請求項1
    記載の順序処理記述の変換方法。
  3. 【請求項3】 前記順序処理記述から分割された前記信
    号代入部を、その信号代入部と同等の動作を行なうソフ
    トウェアに置き換えることを特徴とする、請求項1記載
    の順序処理記述の変換方法。
  4. 【請求項4】 ハードウェア記述言語で記述された順序
    処理記述を同時処理記述に変換するための変換装置であ
    って、 前記ハードウェア記述言語による記述中における順序処
    理記述の有無を判定する順序処理判定部と、 該順序処理判定部により順序処理記述が有ると判定され
    た場合に、その順序処理記述の中に信号変化に応じて同
    期処理される部分が存在することを条件にして前記順序
    処理記述を分割可能か否かを判定し、その部分を同期部
    として抽出する分割判定部と、 該分割判定部により抽出された前記同期部内において信
    号代入を行なう部分を信号代入部として抽出し、その信
    号代入部についての信号情報を取得する信号情報取得部
    と、 該信号情報取得部により抽出された前記信号代入部を、
    前記順序処理記述から分割する分割部とをそなえたこと
    を特徴とする、順序処理記述の変換装置。
  5. 【請求項5】 該信号情報取得部により取得された前記
    信号代入部についての信号情報に基づいて、該分割部に
    より分割された前記信号代入部を、所定の動作を行なう
    ハードウェア素子に置き換え可能か否かを判定する変換
    判定部と、 該変換判定部により置き換え可能であると判定された場
    合に、該分割部により分割された前記信号代入部を、前
    記ハードウェア素子に置き換える変換実行部とをそなえ
    たことを特徴とする、請求項4記載の順序処理記述の変
    換装置。
  6. 【請求項6】 該信号情報取得部により取得された前記
    信号代入部についての信号情報に基づいて、該分割部に
    より分割された前記信号代入部を、所定の動作を行なう
    ソフトウェアに置き換え可能か否かを判定する変換判定
    部と、 該変換判定部により置き換え可能であると判定された場
    合に、該分割部により分割された前記信号代入部を、前
    記ソフトウェアに置き換える変換実行部とをそなえたこ
    とを特徴とする、請求項4記載の順序処理記述の変換装
    置。
JP23230596A 1996-09-02 1996-09-02 順序処理記述の変換方法および装置 Pending JPH1078973A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP23230596A JPH1078973A (ja) 1996-09-02 1996-09-02 順序処理記述の変換方法および装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP23230596A JPH1078973A (ja) 1996-09-02 1996-09-02 順序処理記述の変換方法および装置

Publications (1)

Publication Number Publication Date
JPH1078973A true JPH1078973A (ja) 1998-03-24

Family

ID=16937133

Family Applications (1)

Application Number Title Priority Date Filing Date
JP23230596A Pending JPH1078973A (ja) 1996-09-02 1996-09-02 順序処理記述の変換方法および装置

Country Status (1)

Country Link
JP (1) JPH1078973A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7000213B2 (en) * 2001-01-26 2006-02-14 Northwestern University Method and apparatus for automatically generating hardware from algorithms described in MATLAB

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7000213B2 (en) * 2001-01-26 2006-02-14 Northwestern University Method and apparatus for automatically generating hardware from algorithms described in MATLAB

Similar Documents

Publication Publication Date Title
US5353433A (en) Method and apparatus for organizing and analyzing timing information
JPH1078973A (ja) 順序処理記述の変換方法および装置
JPH11224271A (ja) シミュレーション装置
JP7215244B2 (ja) 記述変換方法、シミュレーション方法及び記述変換プログラム
JPH09311882A (ja) 論理回路検証支援装置
JPH1091677A (ja) シミュレーション/エミュレーションの効率を増すための論理変換方法
US6377909B1 (en) Method and apparatus for preparing a logic simulation model and recording medium for storing the same
US20020143511A1 (en) Method and computer program product for system design support
JP3759007B2 (ja) 非同期回路のタイミング検証装置とそのタイミング検証方法
JP2853649B2 (ja) 論理シミュレーション用モデルの作成方法
JPH04248675A (ja) Lsi設計支援装置
JP4205525B2 (ja) 並列シミュレーション装置および並列シミュレーション方法
JP4448048B2 (ja) 構造解析プログラム
JP3191183B2 (ja) スキャンテスト制御ゲート挿入方式
JP2003036283A (ja) 論理シミュレーション装置およびその方法
JP2980761B2 (ja) 論理回路最適化装置
JP2976640B2 (ja) 設計支援装置
JPH1078975A (ja) 論理検証装置
JPH0195365A (ja) クリティカルパスの解析処理方式
JP2990882B2 (ja) 機能シミュレーション装置
JPH0415733A (ja) データベース変換処理方式
JPS6177967A (ja) 論理回路シミユレ−シヨン方法
JPH1125138A (ja) 論理回路の合成方法及びその装置
JPH05143667A (ja) 論理シミユレーシヨン方式
JP2005107575A (ja) 大規模集積回路の設計方法

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20031209