JP3766872B2 - 論理シミュレーション装置 - Google Patents
論理シミュレーション装置 Download PDFInfo
- Publication number
- JP3766872B2 JP3766872B2 JP23584895A JP23584895A JP3766872B2 JP 3766872 B2 JP3766872 B2 JP 3766872B2 JP 23584895 A JP23584895 A JP 23584895A JP 23584895 A JP23584895 A JP 23584895A JP 3766872 B2 JP3766872 B2 JP 3766872B2
- Authority
- JP
- Japan
- Prior art keywords
- packing
- signal
- processing
- array object
- packing processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明はハードウェアの設計を支援するCAD(計算機支援設計)システムに適用して好適な論理シミュレーション装置に係り、特に複数要素単位でアクセスされる配列オブジェクトをスカラーオブジェクトとして扱うことによりシミュレーションの高速化を実現する論理シミュレーション装置に関する。
【0002】
【従来の技術】
近年、LSIなどの設計対象ハードウェアの大規模化に伴ない、設計効率の向上を目的として機能設計のような設計の上位工程から設計を支援するCADシステムが種々開発されている。
【0003】
このようなCADシステムでは、HDLを用いて設計対象ハードウェアの機能記述を行ない、HDL記述をシミュレーションすることによって設計の正しさを確認する。
【0004】
HDL記述における信号や変数等のオブジェクトには、一要素のみから成るもの(以下、スカラーオブジェクトと呼ぶ)と、複数要素から成るもの(以下、配列オブジェクトと呼ぶ)がある。また、配列オブジェクトには、図2中におけるRcodeのように、取りうる値の集合および演算の集合(以下、型と呼ぶ)の異なった要素から成るものも含むとする。
【0005】
さらに、前述のHDLでは、ディレイや非同期動作を扱うことを可能としているため、イベントドリブンシミュレーションの概念に基づいて言語仕様が設計されている。なお、このイベントドリブンシミュレーションとは、ある時刻においてあるモジュールの出力信号値が変化したときのみ、その出力信号を入力とするモジュールについて演算処理を行ない、シミュレーションを進行させていくシミュレーション方式をいう。
【0006】
このイベントドリブン型の記述においては、並列動作の記述単位をプロセスと呼ぶ。そして、このプロセスを起動する誘因となる信号をセンシティビティ信号という。
【0007】
VHDLでは、予約語processや、wait on(場合によっては、wait until)の次に記述されるものをセンシティビティリストと呼び、このリストに記述されている信号がそのプロセスのセンシティビティ信号となる。また、センシティビティリストには、信号全体の参照だけでなく、複数要素から成る信号の部分要素を記述することも可能である。
【0008】
また、代入および参照についても、配列オブジェクトの部分要素単位で行なうことが可能となっている。
【0009】
このような特徴から、HDLでは、配列オブジェクト全てについて、1スカラー要素単位で別々に取り扱っている。しかしながら、HDL記述中の配列オブジェクト中には、たとえばデータの転送に用いられる信号のように、全要素単位で代入や参照等の処理をされることが多いといった性質をもつものも存在する。
【0010】
すなわち、従来の論理シミュレーション装置においては、前述したような性質が考慮されておらず、配列オブジェクト全てを1スカラー要素ずつ取り扱っており、このことがシミュレーション速度を遅くする原因のひとつとなっていた。
【0011】
【発明が解決しようとする課題】
前述したように、シミュレーションモデル中には、大部分の場合に全要素単位でアクセスが行なわれる配列オブジェクトが存在するが、従来の機能・論理シミュレーション装置では、このような特徴が考慮されておらず、配列オブジェクト全てを1スカラー要素ずつの処理で行なっていたため、シミュレーション速度を低下させるという問題があった。
【0012】
本発明は、このような実情に鑑みてなされたものであり、複数要素単位でアクセスされる場合が多い配列オブジェクトについて、その複数要素をひとまとめにしてスカラーオブジェクトとして扱い、複数要素分の処理を一度に行なうことによってシミュレーションを高速化する論理シミュレーション装置を提供することを目的とする。以下、複数要素をひとまとめにすることをパッキングと記す。
【0013】
【課題を解決するための手段】
この発明の論理シミュレーション装置は、シミュレーション対象となるハードウェア記述を入力する入力手段と、前記ハードウェア記述に含まれる各配列オブジェクトについて、部分要素に対するアクセス有無に関わる1以上の性質に着目した特徴の抽出を実行する特徴抽出手段と、前記特徴抽出手段により抽出された特徴に基づき、部分要素に対するアクセス有無を判定し、部分要素に対するアクセスが無い場合に、その配列オブジェクトの全要素を1つの信号として取り扱うためのパッキング処理を適用すべきと判定するパッキング処理判定手段と、前記パッキング処理判定手段がパッキング処理を適用すると判定したときに、その配列オブジェクトに対してパッキング処理を施したシミュレーションコードを生成するシミュレーションコード生成手段とを具備してなることを特徴とする。
【0014】
また、この発明の論理シミュレーション装置は、前記パッキング処理判定手段が、さらに、前記パッキング処理を適用した場合のシミュレーション処理の処理量と前記パッキング処理を適用しない場合のシミュレーション処理の処理量との差分量を評価し、その評価結果に基づき、パッキング処理の適用有無を判定することを特徴とする。
【0015】
また、本発明は、ユーザがパッキング処理の適用候補として指定した配列オブジェクトを抽出するパッキング処理指定抽出手段をさらに具備し、前記パッキング処理判定手段が、前記パッキング処理指定抽出手段により抽出された配列オブジェクトのみを処理対象として動作することを特徴とする。
【0016】
本発明によれば、入力手段により入力されたシミュレーション対象となるハードウェア記述について、パッキング処理判定手段が、ハードウェア記述に含まれる配列オブジェクトが複数要素単位でアクセスされている程度を判定するための判定基準に基づき、その各配列オブジェクトに対しパッキング処理を適用するか否かを判定する。
【0017】
または、入力手段により入力されたシミュレーション対象となるハードウェア記述について、まず特徴抽出手段が、この入力されたハードウェア記述をもとにシミュレーションモデル中の配列オブジェクトに関する特徴を抽出し、パッキング処理判定手段が、この抽出された特徴とハードウェア記述に含まれる配列オブジェクトが複数要素単位でアクセスされている程度を判定するための判定基準とに基づき、その各配列オブジェクトに対しパッキング処理を適用するか否かを判定する。
【0018】
この特徴抽出手段は、
(1)ポートへのマッピングの有無。
【0019】
(2)配列オブジェクトをドライブするソースの数。
【0020】
(3)センシティビティリストにおける参照。
【0021】
(4)部分要素についての代入の有無。
【0022】
(5)代入ターゲットとしての参照。
【0023】
(6)代入の種類。
【0024】
(7)式における参照。
【0025】
の少なくとも一つ以上に基づいて、配列オブジェクトの特徴を抽出する。
【0026】
そして、パッキング処理判定手段は、予め与えられた判断基準に基づき、または各配列オブジェクトについて抽出された特徴と予め与えられた判断基準とに基づき、パッキング処理を適用するか否かを判定し、シミュレーションコード生成手段が、パッキング処理を適用すると判定された配列オブジェクトに対しパッキング処理を施したシミュレーションコードを生成する。
【0027】
このパッキング処理判定手段は、判定対象となる配列オブジェクトが、
(1)部分要素がセンシティビティリストに書かれている。
【0028】
(2)部分要素についての0よりも大きな遅延時間をもつ代入がある。
【0029】
の条件のうち少なくともいずれかを満たす場合にはパッキング処理を適用しないことを判定基準として保持し、この判定基準に基づいて各配列オブジェクトのパッキング処理の適用有無を判定する。
【0030】
また、パッキング処理の方法としては、たとえば、Bit型配列の(右から)i番目(1≧i)の要素を、整数型の右からiビット目に対応させる形でBit型配列を整数型に置き換えを行なうことで、Bit型配列の32要素分をひとつの整数型として扱う方法があげられる。
【0031】
この方法によれば、32要素から成るBit型配列の値“01101100101101110101111100001010”は、1番目の要素が0,2番目の要素が1,3番目の要素が0…であるから、右から1ビット目を0,2ビット目を1,3ビット目を0…として置き換えた整数01101100101101110101111100001010(2)すなわち6cb75f0a(16)として扱われる。
【0032】
さらにこの場合、配列の全要素数jが1≦j<32のときは、(j+1)ビット目から32ビット目を0として整数型に置き換え、配列の要素数jが32<jの場合は、32要素分ずつひとつの整数型に置き換えるものとする。
【0033】
これにより、配列オブジェクト全てを1スカラー要素単位で別々に取り扱うのと比較して、シミュレーションを高速化することができることとなる。
【0034】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
【0035】
(第1実施形態)
図1は本発明の第1実施形態に係る論理シミュレーション装置の機能ブロック図である。
【0036】
図1に示すように、第1実施形態の論理シミュレーション装置9は、記述入力部1、特徴抽出部2、パッキング処理判定部3およびコード生成部4を具備してなる。
【0037】
記述入力部1は、シミュレーション対象となるハードウェア記述を入力する。特徴抽出部2は、記述入力部1から入力されたハードウェア記述から、シミュレーションモデル中の配列オブジェクトについて、
(1)ポートにマッピングされているか否か(ポートへのマッピングの有無)。
【0038】
(2)ドライブするソースが複数ある信号か否か(配列オブジェクトをドライブするソースの数)。
【0039】
(3)部分要素がセンシティビティリストに書かれているか否か(センシティビティリストにおける参照)。
【0040】
(4)部分要素についての代入の有無(代入ターゲットとしての参照)。
【0041】
(5)論理演算の引数になっているか否か(式における参照)。
【0042】
(6)部分要素についての参照の有無(式における参照)。
【0043】
(7)その配列オブジェクトと関係{*}がある他の配列オブジェクトの集合。
【0044】
に着目して特徴を抽出する。
【0045】
なお、ここでいう関係{*}とは、たとえば以下のように定義される。
【0046】
<1>AとBが、あるオペレータ(代入や論理演算等)のオペランドであるとき、AとBとは関係{*}がある。
【0047】
<2>AがポートBにマッピングされているとき、AとBとは関係*がある。
【0048】
<3>AとBとに関係{*}があり、BとCとに関係{*}があるならば、AとCとは関係{*}がある。
【0049】
また、ドライブするソースが複数ある信号は、たとえばバスの表現として用いられる。
【0050】
パッキング処理判定部3は、特徴抽出部2において抽出された結果を評価基準をもとに各配列オブジェクトについてパッキング処理するか否かを判定する。そして、コード生成部4は、パッキング処理判定部3での判定をもとに、記述入力部1に入力されたハードウェア記述に対応するCプログラムとして、ハードウェア記述のエラボレーションを行なうコードとステートメントの実行を行なうコードとを生成する。
【0051】
ここで、図1の記述入力部1に図3のVHDL記述が入力された場合を例にとって各部の動作を示す。
【0052】
まず、図3に示したVHDL記述を簡単に説明する。
【0053】
<0〜1行>module0という名のモジュールと外部とのインターフェイスを定義する。ここでは、入力、出力ともにないことを示している。
【0054】
<2〜22行>module0の内部の動作の一つとしてbehaviorを定義する。
【0055】
<4〜5行>behavilrの内部の信号を定義する。信号S1は、bit型スカラー信号であり、信号A、信号B、信号C、信号D、信号E、信号Fおよび信号Gは、32要素のbit型配列信号である。
【0056】
<7〜11行>信号Aまたは信号Cにイベントが発生した時に動作するプロセスを定義する。このプロセスが動作すると、信号Bに信号Aの値の否定が代入され、信号S1に信号Cの3要素目の値C(2)が代入される。また、信号Dに信号Bの値が代入される。
【0057】
<12〜17行>信号Dの1要素目であるD(0)にイベントが発生した時に動作するプロセスを定義する。このプロセスが動作すると、信号Eの要素E(2)に、1ns後に信号Dの要素D(0)の値が、2ns後には要素D(1)の値が、3ns後には要素D(2)の値がそれぞれ代入される。
【0058】
<18〜21行>信号Fにイベントが発生した時に動作するプロセスを定義する。このプロセスが動作すると、信号Gに信号Fの値が代入される。
【0059】
次に、このVHDL記述が図1の記述入力部1に入力された場合の各部の動作原理を示す。
【0060】
記述入力部1にVHDL記述が入力されると、特徴抽出部2では、この記述入力部1に入力されたVHDL記述をもとに各配列型オブジェクトの特徴を抽出する。
【0061】
たとえば、信号Aはポートにマッピングされておらず、また、ドライブするソースが複数ある信号ではない。さらに、どの部分要素もセンシティビティリストに書かれていないし、部分要素について代入も参照も行なわれていないが、プロセスP0 において論理演算の引数なっていて、信号Bへの代入のソースになっているという性質があることがわかる。また、信号Bは信号Aの他にプロセスP0 で信号Dと関係{*}があることがわかる。よって、図4に示すテーブルにおいて、信号Aは、1から7の性質が、それぞれ×、×、×、×、○、×、および{B,D}となる(○:成立、×:不成立。以下同じ)。
【0062】
一方、信号Cは、ポートにマッピングされておらず、ドライブするソースが複数ある信号でもない。さらに、部分要素がセンシティビティリストに書かれておらず、部分要素についての代入も行なわれていない。また、信号が論理演算の引数にもなっていないが、プロセスP0 において部分要素について参照が行われているという性質があることがわかる。また、信号Cと前記関係{*}か関ある配列オブジェクトは存在しない。したがって、図4に示すテーブルでは、×、×、×、×、×、○、およびφとなる。
【0063】
また、パッキング処理判定部3では、この様にして抽出された特徴結果を判定基準をもとに評価して各配列オブジェクトについてパッキング処理するか否かを判定する。
【0064】
図5にパッキング処理判定のアルゴリズム例を示す。このアルゴリズムは、性質1〜6が全て成り立たず、かつ、性質7にあげられた全てのオブジェクトについて性質1〜6が全て成り立たないオブジェクトにおいてのみパッキングを行なうとするものである。
【0065】
パッキング処理判定部3の判定基準が図5に示したものであるとすると、パッキング処理が行なわれるのは、信号Fと信号Gである。
【0066】
次に、コード生成部4は、パッキング処理判定部3での判定をもとに、シミュレーションのためのCプログラムを生成する。Cプログラムには、VHDL記述内のプロセスや信号等のオブジェクトを生成するエラボレーションコードと、VHDL記述内のステートメントを実行するコードとがある。図6にコード生成部4が生成するエラボレーションコードの一例を示し、図9にコード生成部4が生成する実行コードの一例を示す。ただし、図6のエラボレーションコードについては本発明に関する部分のみを図示する。
【0067】
図6の<3行〜162行>までは、信号の情報を生成するコードである。信号Aは、パッキング処理判定が×であるため、<4行〜35行>において信号A(0)から信号A(31)までの32要素がそれぞれ生成されている。また、信号Fはパッキング処理判定が○であるから、32要素をひとつにまとめてひとつの信号として生成される(<161行>)。パッキング処理を行なわなかった場合は、32要素それぞれ生成される(図7の<194行〜221行>参照)から、パッキング処理を行なったことで信号情報の生成が減少しており高速化が可能となる。
【0068】
図6の<164行〜166行>までは、プロセスの情報を生成するコードである。
【0069】
<167行〜226行>は、プロセスとセンシティビティリストに書かれた信号のセットを行なう。信号Fは、パッキング処理判定が○であるため、32要素ひとまとめにしてひとつの信号としてセットされる(<226行>)。パッキング処理を行なわなかった場合、1要素ずつセットされる(図8の<323行〜354行>参照)ことと比較して、処理量が減少しており高速化が可能となる。
【0070】
図9の実行コードは、図3のVHDL記述におけるプロセスP2に関するものである。ここで、信号GおよびFは、パッキング判定が○であるため、信号Fから信号Gへ全体の代入を行なうのに、ひとつの代入文が生成される。パッキング処理を行なわなかった場合には、一要素ずつ代入が行われるから代入文が全要素数である32個の代入文が生成される(図10の<3行〜34行>)ことと比較して、処理量が減少しており高速化が可能となる。
【0071】
以上のように、同実施形態の論理シミュレーション装置によれば、配列オブジェクトのうち間接的なものも含めて該配列オブジェクトと関係{*}のある配列オブジェクト全てが、
(1)ポートにマッピングされていない。
【0072】
(2)ドライブするソースが複数ある信号でない。
【0073】
(3)部分要素がセンシティビティリストに書かれていない。
【0074】
(4)部分要素について代入がない。
【0075】
(5)論理演算の引数になっていない。
【0076】
(6)部分要素について参照がない。
【0077】
という特徴を持つ場合のみ該配列オブジェクトについてパッキング処理を行なったシミュレーションコードを生成することにより、シミュレーションを高速に行なうことができるようになる。
【0078】
これは、部分要素がセンシティビティリストに書かれている、および部分要素についての0よりも大きな遅延時間をもつ代入がある、の条件のうち少なくともいずれかが満たされる場合にはパッキング処理を適用しない上に、さらにパッキング処理を適用する場合を制限する方向の判断基準を用いたことを意味する。
【0079】
(第2実施形態)
次に、本発明の第2実施形態を説明する。
【0080】
同実施形態では、特徴抽出部2が、記述入力部1により入力されたハードウェア記述から、シミュレーションモデル中の各配列オブジェクトについて、
(1)ポートにマッピングされている(ポートへのマッピングの有無)。
【0081】
(2)ドライブするソースが複数ある信号である(配列オブジェクトをドライブするソースの数)。
【0082】
(3)部分要素がセンシティビティリストに書かれている(センシティビティリストにおける参照)。
【0083】
(4)部分要素について遅延が0よりも大きな代入がある(代入ターゲットとしての参照、代入の種類)。
【0084】
(5)論理演算の引数になっている(式における参照)。
【0085】
が成り立つか否かと、
(6)全要素数(パラメータX)(代入ターゲットとしての参照、式における参照に関連)。
【0086】
(7)全要素数単位での参照(センシティビティリストへのセットを含む)および代入の回数(パラメータY)(式における参照)。
【0087】
(8)部分要素についての参照の回数(パラメータZ)(式における参照)。
【0088】
(9)その配列オブジェクトと関係{*}がある他の配列オブジェクトの集合。
【0089】
とに着目して特徴を抽出する。
【0090】
パッキング処理判定部3は、特徴抽出部2において抽出された特徴結果とこの特徴結果をパラメータとする評価関数とから、各配列オブジェクトについてのパッキング処理判定を行なう。
【0091】
そして、コード生成部4は、パッキング処理判定部3での結果をもとに、記述入力部1に入力されたハードウェア記述に対応するCプログラムとして、VHDL記述のエラボレーションを行なうコードとステートメントの実行を行なうコードとを生成する。
【0092】
ここで、記述入力部1に図11のVHDL記述が入力された場合の各部の動作原理を示す。
【0093】
記述入力部1にVHDL記述が入力されると、特徴抽出部2では、この記述入力部1に入力されたVHDL記述をもとに、各配列オブジェクトの特徴を抽出する。
【0094】
たとえば、信号Fは、1〜5の性質は全て成り立たず、要素数が32であり、プロセスP1において信号Bと関係{*}があり信号BはプロセスP0 において信号Aおよび信号Cと関係{*}があるから、図12のテーブルでは、×、×、×、×、×、X=32、Y=0、Z=0、および{A,B,C}となる。
【0095】
また、パッキング処理判定部3は、この様にして抽出された特徴結果と判定基準とをもとに、各配列オブジェクトについてパッキング処理の判定を行なう。ここで、判定基準のうちのひとつの基準として、評価関数を与える。
【0096】
評価関数とは、該配列オブジェクトについて、例えば、
(パッキング処理を行ったことで省略された処理量)−(パッキング処理を行ったことにより新たに生じた処理量)
を見積もるための関数である。
【0097】
評価関数の例を以下に示す。
【0098】
関数FF(x,y,z)=(x−1)+x*y−z*3
この評価関数は、当該の配列オブジェクトをパッキングすることで減少するオブジェクト情報生成数、および代入や参照を実行するための処理量と、パッキング処理した信号の部分要素の参照のために新たに生じる処理量との差を計算することで、パッキング処理のシミュレーション高速化への効果を見積もろうとするものである。
【0099】
図13にパッキング処理判定のアルゴリズム例を示す。このアルゴリズムは、各配列オブジェクトのうち性質1〜5が全て成り立たなくて、評価関数の値が正であるような場合であり、かつ、性質9にあげられた各配列オブジェクト全てについても性質1〜5が全て成り立たず、評価関数の値が正であるような場合においてのみパッキング判定を○とするものである。
【0100】
パッキング処理判定部3の判定基準が、前述した評価関数と図13のアルゴリズムとであるとする場合、図6のハードウェア記述のうちでパッキング処理が行なわれるのは、信号A、B、CおよびFである。
【0101】
なお、評価関数を(パッキング処理を行ったことで省略された処理量)を見積もるための関数とし、この関数の値が所定値以下の場合にパッキング判定を○にする、あるいは評価関数を(パッキング処理を行ったことにより新たに生じた処理量)を見積もるための関数とし、この関数の値が所定値以下の場合にパッキング判定を○にする等、種々の変形が可能である。
【0102】
次に、コード生成部4は、パッキング処理判定部3においてパッキング判定が○であるものについてパッキング処理を行なった上で、シミュレーションのためのCプログラムを生成する。Cプログラムには、VHDL記述内のプロセスや信号等のオブジェクを生成するエラボレーションコードと、VHDL記述内のステートメントを実行するコードとがある。
【0103】
図14にコード生成部が生成する実行コードの一例を示す。この実行コードは、図11に示したVHDL記述におけるプロセスP0 に関するものである。信号A、BおよびCは、パッキング処理されているため,信号Aから信号B、信号Bから信号Cへの全体の値の代入を行うのにそれぞれひとつの代入文が生成される(図14の<4行、6行>)。これは、パッキング処理されていない場合に、それぞれの代入を行なうのにその全要素数分の代入文が生成される(図15の<4行〜35行>および<36行〜67行>参照)ことと比較して、そのシミュレーションの高速化を可能にしている。
【0104】
また、パッキング処理されている信号Cから、信号S1に代入する要素C(2)を切り出すために以下のコードが生成される(図14の<8行>)。
【0105】
((gt_val(C) & MASKO301)>>26) & MASK3201
すなわち、パッキングされた信号Cをマスクして要素C(2)以外を0にした後、右に26シフトすることで要素C(2)の領域を右端に動かす。さらに、マスクして低位1ビット以外を0にする。
【0106】
これは、パッキング処理しなかった場合に生成されるコード(図15の<68行>)と比較して、信号Cをパッキング処理したことにより新たな処理が生じたことを示している。
【0107】
しかしながら、前述の信号Cをパッキング処理することにより得られる効果の方が大きいため、シミュレーション全体としては、高速化が実現されることになる。
【0108】
なお、前述した第1および第2実施形態では、2値(‘0’,‘1’)についてパッキング処理を行なう場合について説明したが、4値(‘X’‘0’,‘1’,‘Z’)や、9値(‘U’,‘X’,‘0’,‘1’,‘Z’,‘W’,‘L’,‘H’,‘−’)についても適用が可能である。たとえば、4値の場合はひとつの値を2ビットで表現でき、9値の場合はひとつの値を3ビットで表現できることを利用すればよい。4値の場合、‘X’を00、‘0’を01、‘1’を10、‘Z’を11と表現すれば、16要素配列“ZX1Z010Z00XX11ZZ”は、整数cb6750af(16)にパッキングして扱うことができる。
【0109】
以上のように、第2実施形態の論理シミュレーション装置によれば、配列オブジェクトのうち間接的なものも含めて該配列オブジェクトと関係{*}のある配列オブジェクト全てが、
(1)ポートにマッピングされていない。
【0110】
(2)ドライブするソースが複数ある信号ではない。
【0111】
(3)部分要素がセンシティビティリストに書かれていない。
【0112】
(4)部分要素について0よりも大きな遅延時間をもつ代入がない。
【0113】
(5)論理演算の引数になっていない。
【0114】
という特徴をもち、かつ、
(6)処理量についての評価関数が所定の値よりも良い。
【0115】
場合のみ、該配列オブジェクトについてパッキング処理を行なったシミュレーションコードを生成することにより、シミュレーションを高速に行なうことができるようになる。
【0116】
これは、部分要素がセンシティビティリストに書かれている、および部分要素についての0よりも大きな遅延時間をもつ代入がある、の条件のうち少なくともいずれかが満たされる場合にはパッキング処理を適用しない上に、さらにパッキング処理を適用する場合を制限する方向の判断基準を用いたことを意味するが、その制限は、第1実施形態の制限よりも、部分要素の代入について0よりも大きな遅延時間をもつか否かを見るという点で緩和されている(パッキング処理が適用される配列オブジェクトがより多くなるようになっている)。また、処理量についての評価関数を用いるようにした点で、パッキング処理を適用する効果が大きい場合を選んでパッキングすることができるようになっている。
【0117】
また、前述した第1および第2実施形態では、一階層に記述された例を挙げたが、複数の階層のまたがって記述されたシミュレーションモデルについても適用できる。たとえば、この場合着目する性質を、
(1)ポートに部分要素単位でマッピングされている。
【0118】
(2)ドライブするソースが複数ある信号である。
【0119】
(3)部分要素がセンシティビティリストに書かれている。
【0120】
(4)部分要素について遅延が0よりも大きな代入がある。
【0121】
(5)論理演算の引数になっている。
【0122】
が成り立つか否かと、
(6)全要素数(パラメータX)。
【0123】
(7)全要素数単位での参照(センシティビティリストへのセットを含む)および代入の回数(パラメータY)。
【0124】
(8)部分要素についての参照の回数(パラメータZ)。
【0125】
(9)その配列型オブジェクトと関係{*}がある配列型オブジェクトの集合。
【0126】
と変更して行なう方法があげられる。これは、部分要素がセンシティビティリストに書かれている、および部分要素についての0よりも大きな遅延時間をもつ代入がある、の条件のうち少なくともいずれかが満たされる場合にはパッキング処理を適用しない上に、さらにパッキング処理を適用する場合を制限する方向の判定基準を用いたことを意味するが、その制限は、第2実施形態の制限よりも、ポートへのマッピングの有無については部分要素単位でか否かを見るという点で緩和されている(パッキング処理が適用される配列オブジェクトがより多くなるようになっている)。
【0127】
その他にも、入力されたVHDL記述に関して階層展開を行ない階層をフラットにした後で、VHDL記述が一階層であるときと同様の方法を用いることにより適用することも可能である。
【0128】
(第3実施形態)
次に、本発明の第3実施形態を説明する。
【0129】
図16は本発明の第3実施形態に係る論理シミュレーション装置の機能ブロック図である。
【0130】
同実施形態の論理シミュレーション装置9は、前述した記述入力部1、パッキング処理判定部3およびコード生成部4に加え、パッキング処理指定抽出部5と配列オブジェクト指示部6を具備した構成となっている。
【0131】
ここでは、この記述入力部1に図17に示すようなシミュレーションモデル記述が入力されたとする。このとき、パッキング処理指定抽出部5は、記述中の各配列オブジェクトのうちパッキング指定されているものを抽出する。図17の記述においては、信号Yおよび信号Zがパッキング指定として抽出される。
【0132】
また、配列オブジェクト指示部6は、設計者からのパッキング指定を受け付け、図17の記述のようにパッキング指定を書き込む(A)か、あるいは通常のシミュレーションモデル記述中の配列オブジェクトを直接指定する(B)。
【0133】
そして、パッキング処理判定部3は、パッキング処理指定抽出部5によって抽出された各配列型オブジェクト、および配列オブジェクト指示部6によって指定された各配列型オブジェクトについてパッキング処理を適用するかどうかを判定する。ここで、パッキング処理を適用すると判定されたときに、コード生成部4がパッキング処理を行ない、第1および第2実施形態と同様に、入力されたVHDL記述に対応するCプログラムとして、VHDL記述のエラボレーションを行なうコードとステートメントの実行を行なうコードとを生成する。
【0134】
これにより、設計者によりパッキング処理候補として予め指定された配列オブジェクトについて、パッキング処理を施すことが適当であるかどうかを判断したうえでパッキング処理を行なうことにより、その処理効率および操作性をより向上させることができる。
【0135】
また、前述した第1乃至第3実施形態では、VHDL記述を例に説明したが、他のHDL言語で記述されたシミュレーションモデルについても適用可能である。
【0136】
また、前述した第1、第2、第3実施形態ではコード生成部より生成されるコードとしてCプログラムが生成される例を説明したが、他の言語で記述されたコードを生成することも可能である。
【0137】
さらに、前述した第1乃至第3実施形態では、コンパイル方式の論理シミュレーション装置を前提に説明したが、これに限るものではなく、たとえばインタープリタ方式のシミュレータにも適用可能である。
【0138】
【発明の効果】
以上詳述したように本発明の論理シミュレーション装置によれば、配列オブジェクトのうち部分要素ごとの処理のないものについてはパッキング処理を行なったシミュレーションコードを生成することになり、シミュレーションを高速に行なうことができるようになる。
【0139】
また、設計者によってパッキング処理候補予め指定された配列オブジェクトについては、パッキング処理を施すことが適当であるかどうかを判断したうえでパッキング処理を行なうことにより、その処理効率および操作性をより向上させることができることとなる。
【図面の簡単な説明】
【図1】本発明の第1実施形態に係る論理シミュレーション装置の機能ブロック図。
【図2】配列オブジェクトの一例を示す図。
【図3】第1実施形態のシミュレーション対象となるVHDL記述を示す図。
【図4】第1実施形態の各配列オブジェクトの特徴を抽出するための性質の一例を示す図。
【図5】第1実施形態のパッキング処理判定のアルゴリズムの一例を示す図。
【図6】第1実施形態のコード生成部より生成されるエラボレーションコードの一例を示す図。
【図7】第1実施形態のコード生成部より生成されるエラボレーションコードの一例を示す図。
【図8】第1実施形態のコード生成部より生成されるエラボレーションコードの一例を示す図。
【図9】第1実施形態のコード生成部より生成される実行コードの一例を示す図。
【図10】第1実施形態のコード生成部より生成される実行コードの一例を示す図。
【図11】第2実施形態のシミュレーション対象となるVHDL記述を示す図。
【図12】第2実施形態の各配列オブジェクトの特徴を抽出するための性質の一例を示す図。
【図13】第2実施形態のパッキング処理判定のアルゴリズムの一例を示す図。
【図14】第2実施形態のコード生成部が生成する実行コードの一例を示す図。
【図15】第2実施形態のコード生成部が生成する実行コードの一例を示す図。
【図16】第3実施形態に係る論理シミュレーション装置の機能ブロック図。
【図17】第3実施形態のシミュレーション対象となるVHDL記述を示す図。
【符号の説明】
1…記述入力部、2…特徴抽出部、3…パッキング処理判定部、4…コード生成部、5…パッキング処理指定抽出部。
Claims (5)
- シミュレーション対象となるハードウェア記述を入力する入力手段と、
前記ハードウェア記述に含まれる各配列オブジェクトについて、部分要素に対するアクセス有無に関わる1以上の性質に着目した特徴の抽出を実行する特徴抽出手段と、
前記特徴抽出手段により抽出された特徴に基づき、部分要素に対するアクセス有無を判定し、部分要素に対するアクセスが無い場合に、その配列オブジェクトの全要素を1つの信号として取り扱うためのパッキング処理を適用すべきと判定するパッキング処理判定手段と、
前記パッキング処理判定手段がパッキング処理を適用すると判定したときに、その配列オブジェクトに対してパッキング処理を施したシミュレーションコードを生成するシミュレーションコード生成手段と
を具備してなることを特徴とする論理シミュレーション装置。 - 前記パッキング処理判定手段は、さらに、前記パッキング処理を適用した場合のシミュレーション処理の処理量と前記パッキング処理を適用しない場合のシミュレーション処理の処理量との差分量を評価し、その評価結果に基づき、パッキング処理の適用有無を判定することを特徴とする請求項1記載の論理シミュレーション装置。
- 前記特徴抽出手段は、ポートへのマッピングの有無、ドライブするソースの数、センシティビティリストにおける参照、代入ターゲットとしての参照、代入の種類、式における参照、のうちの1以上に基づき、各配列オブジェクトの特徴を抽出することを特徴とする請求項1記載の論理シミュレーション装置。
- 前記パッキング処理判定手段は、各配列オブジェクトが、部分要素がセンシティビティリストに書かれている、部分要素についての0よりも大きな遅延時間をもつ代入がある、の条件のうちの少なくとも一方を満たす場合には、パッキング処理を適用しないように判定することを特徴とする請求項1記載の論理シミュレーション装置。
- パッキング処理の適用候補として指定された配列オブジェクトを抽出するパッキング処理指定抽出手段をさらに具備し、
前記パッキング処理判定手段は、前記パッキング処理指定抽出手段により抽出された配列オブジェクトのみを対象として判定を行うことを特徴とする請求項1記載の論理シミュレーション装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP23584895A JP3766872B2 (ja) | 1995-09-13 | 1995-09-13 | 論理シミュレーション装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP23584895A JP3766872B2 (ja) | 1995-09-13 | 1995-09-13 | 論理シミュレーション装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0981597A JPH0981597A (ja) | 1997-03-28 |
JP3766872B2 true JP3766872B2 (ja) | 2006-04-19 |
Family
ID=16992161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP23584895A Expired - Fee Related JP3766872B2 (ja) | 1995-09-13 | 1995-09-13 | 論理シミュレーション装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3766872B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102449875B1 (ko) * | 2017-10-18 | 2022-09-30 | 삼성전자주식회사 | 음성 신호 번역 방법 및 그에 따른 전자 장치 |
-
1995
- 1995-09-13 JP JP23584895A patent/JP3766872B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH0981597A (ja) | 1997-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Brayton et al. | MIS: A multiple-level logic optimization system | |
US6449762B1 (en) | Maintaining correspondence between text and schematic representations of circuit elements in circuit synthesis | |
US6848085B2 (en) | System for converting hardware designs in high-level programming languages to hardware implementations | |
JP2637914B2 (ja) | テスト・プログラム・ジェネレータ及びテスト・プログラムを生成する方法 | |
Kumar et al. | A framework for hardware/software codesign | |
US20160299998A1 (en) | Logic circuit generation device and method | |
US7302670B2 (en) | Interactive interface resource allocation in a behavioral synthesis tool | |
US20100050145A1 (en) | Optimizing a Netlist Circuit Representation by Leveraging Binary Decision Diagrams to Perform Rewriting | |
JP2007087215A (ja) | ハードウェアモデルの変換処理に用いられるデータ構造、コンピュータプログラム、方法、及びシステム | |
US5912819A (en) | Method for designing an architectural system | |
US6519742B1 (en) | Local naming for HDL compilation | |
JPH08129569A (ja) | コンピュータ援用設計方法 | |
US6308324B1 (en) | Multi-stage profiler | |
JP2004030638A (ja) | マイクロプロセッサキャッシュ設計初期化 | |
Berstis | The V compiler: automatic hardware design | |
JP3766872B2 (ja) | 論理シミュレーション装置 | |
O'Donnell | Overview of Hydra: A concurrent language for synchronous digital circuit design | |
JP2022536648A (ja) | 平坦化されたネットリストからの挙動設計回復 | |
US7636914B1 (en) | System and method for providing context to operator overloading | |
Shirazi et al. | Framework and tools for run-time reconfigurable designs | |
Keutzer | The need for formal methods for integrated circuit design | |
O'Donnell | Overview of hydra: a concurrent language for synchronous digital circuit design | |
JP2004013190A (ja) | ソフトウエア開発環境、シミュレータ及び記録媒体 | |
JP5571928B2 (ja) | 集積回路設計方法及びプログラム | |
Duke et al. | Alex: A conversational, hierarchical logic design system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20050415 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20050606 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060110 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100210 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100210 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110210 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120210 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120210 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130210 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |