JP4014080B2 - デジタル回路の設計装置および設計方法、並びに、プログラムおよび格納媒体 - Google Patents
デジタル回路の設計装置および設計方法、並びに、プログラムおよび格納媒体 Download PDFInfo
- Publication number
- JP4014080B2 JP4014080B2 JP2001378776A JP2001378776A JP4014080B2 JP 4014080 B2 JP4014080 B2 JP 4014080B2 JP 2001378776 A JP2001378776 A JP 2001378776A JP 2001378776 A JP2001378776 A JP 2001378776A JP 4014080 B2 JP4014080 B2 JP 4014080B2
- Authority
- JP
- Japan
- Prior art keywords
- model
- simulation
- processes
- unit
- digital circuit
- 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 - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Description
【発明の属する技術分野】
本発明は、デジタル回路のコ・シミュレーション方法に関する。本方法は、例えば、VLSIタイプの集積回路の設計および製造プロセスの一部として用いられ得る。
【0002】
【従来の技術】
重要なデジタルハードウェア回路は、通常、その回路を、ハードウェア記述言語(HDL)で記述し、かつ合成ツールを用いてハードウェアに合成する、合成に基づくアプローチを用いて設計される。VHDL(例えば、IEEE Computer Society、「IEEE Standard VHDL Language Reference Manual」、New York、USA、March 1988、IEEE Std 1076−1987、およびIEEE Computer Society、「IEEE Standard VHDL Language Reference Manual」、New York、USA、June 1994、IEEE Std 1076−1993で開示されている)およびVerilog HDL(例えば、IEEE computer Society、「IEEE Standard Hardware Description Language Based on theVerilog Hardware Description Language」、New York、USA 1996、IEEE Std 1364−1995で開示されている)が、一般に用いられるハードウェア記述言語である。しかしながら、回路の複雑さが増すにつれて、通常は、レジスタ転送の代わりに、C(例えば、Brian W.KernighanおよびDennis M.Ritchieの「The C Programming Language、Prentice−Hall、USA、second edition、1988」で開示されている)およびC++(例えば、Bjarne Stroustrupの「The C++ programming language」、Addison−Wesley series in computer science、Addison−Wesley、Reading、MA、USAで開示されている)等のプログラミング言語に基づく高位ハードウェア記述言語を用いる傾向がある。
【0003】
このような言語は、アルゴリズムでのハードウェア設計を可能にする。そして、高位合成ツール(例えば、Daniel Gajski、Nikil Dutt、Allen Wu、およびSteve Linの「High−Level Synthesis、introduction to Chip and System Design」、Kluwer Academic Publishers、Boston/Dordrecht/London、1992で開示されている)が、所与のアルゴリズムレベルの記述から低位のHDL記述を生成するために用いられる。ソフトウェア設計と同様に、通常、高位言語を用いることにより設計期間が短縮される。
【0004】
システムの中には、用いられる高位HDLが、単純に周知のプログラミング言語であるシステムもある。例をあげると、システムC(例えば、Synopsys Inc.、「Overview of the Open System C initiative」、(データシートがwww.systemc.orgからインターネット上で入手可能である)、1999に開示されている)は、システム記述言語としてC++を用いている。他の場合では、ハードウェア設計関連の拡張をしたプログラミング言語が用いられる。そのようなシステムの例としては、Tangramシステム(K.van Berkel、J.Kessel、M.Roncken、R.Saeijs、およびF.Schalijの「The VLSI−Programming Language Tangramand its Translation into Handshake Circuits」、Proceeding of the EuropeanDesign Automation Conference (EDAC 91)、pages 384−389、Amsterdam、February1991、IEEE、IEEE Computer Society Press、およびKees van Berkelの「Handshake Circuits」、volume 5 of Cambridge International Series on Parallel Computation、Cambridge University Press、Cambridge、UK、1993で開示されている)、およびBachシステム(Akihisa Yamada、Koichi Nishida、Ryoji Sakurai、Andrew Kay、Toshio Nomura、およびTakashi Kambeの「Hardware Synthesis with the BACH system」、International Symposium on Circuits and Systems、1999、ならびにGB 231724Sで開示されている)が含まれる。
【0005】
Bachハードウェアコンパイラにより用いられる言語は、(他の機能の中でも特に)明示的な並列コミュニケーションおよび同期コミュニケーションを表わす構成でC言語を拡張する。Bach言語は、通信逐次プロセス(CSP)モデルに基づいており、これは、C.A.R.Hoareの「Communicating sequential processes」、Communications of the ACM、21(8):666−677、August 1978、およびC.A.R.Hoareの「Communicating sequential processes」、Prentice−Hall International、Englewood Cliffs(NJ)、USA、1990、first edition published in 1985 by Prentice−Hallで開示されており、同時処理を支持する演算の1モデルである。Tangram言語もCSPに基づく。
【0006】
高位HDLを用いる別の重要な利点は、設計記述の抽象化レベルによる高速なシミュレーション速度である。非常に高速なシミュレーション速度も、ハードウェア記述を、シミュレーションエンジンにより解釈するのではなく、実行可能なフォーマットにコンパイルするシミュレーションに基づくコンパイル(例えば、L.T.Wang、N.E.Hoover、E.H.Porter、およびJ.J.Zasioの「SSIM:A software levelised compiled−code simulator」、Proceeding of the 24th Design Automation Conference、pages 2−8、IEEE、IEEE Computer Society Press、1987参照)により達成することができる。順次プログラミング言語(C++等)をHDLとして用いる場合、特定の言語用の標準コンパイラを単純に用いることにより、ハードウェア記述をコンパイルおよびシミュレーションすることができる。用いられるプログラミング言語を、並列処理等のハードウェア関連の機能で拡張する場合、コンパイルの前に、ハードウェア記述を順次プログラムに変換することができる。例えば、Tangramシステムでは、ハードウェア記述を、Kees van Berkelの「Handshake Circuits」、volume 5 of Cambridge University Press、Cambridge、UK、1993で開示されるようなCプログラムに変換することができる。また、JP 1121939が、CSP機能を順次言語に変換する単純なメカニズムを記載している。
【0007】
1以上の構成要素を含むシステムでは、全ての構成要素が、その特定の能力および表現力により選択された言語で記述され得る。例えば、ハードウェア記述言語がハードウェア構成要素に用いられ、ソフトウェアプログラミング言語がソフトウェア構成要素に用いられる。よって、システム内の構成要素が数種類の言語で記述されることが非常に一般的である。添付図面の図4は、そのようなシステム記述の一例を示す。完全なシステム記述は、相互にコミュニケーションを行う複数の構成要素モデル記述を含む。前述したBach C言語は、復調構成要素およびエラー訂正デコーダ構成要素の記述を提供するために、2および3で用いられる。前述したVHDL言語は、RAM(ランダムアクセスメモリ)構成要素および高速フーリエ変換(FFT)構成要素を記述するために、4および5で用いられる。C言語は、テストベンチ構成要素を記述するために、6で用いられる。
【0008】
【発明が解決しようとする課題】
このようなシステムの検証が、その設計プロセスの必須部分であるため、多量のシミュレーションデータが処理されなければならない場合があり得、検証またはシミュレーションが高速であることが必要とされる。システムが異なる成分から成る性質を有するため、このシミュレーションプロセスは、しばしば、コ・シミュレーションと呼ばれる。コ・シミュレーションの間、異なるシステム構成要素モデルが相互にコミュニケーションを行う必要があり、US 5335191に開示されるような公知の方法を用いることができる。高位HDLで設計されたハードウェア構成要素のコ・シミュレーションの方法の1つは、添付図面の図2に示すような高位合成ツールまたはシミュレーションエンジン8を用いて、ハードウェア記述を合成して低位HDLにし、次いで、ハードウェアシミュレーションツールを用いて、その低位記述をコ・シミュレーションするものである。しかしながら、この方法は、シミュレーションのために高位記述を用いることができるという点を利用せず、以下の欠点(a)〜(c)を有する。
【0009】
(a) 合成時間のオーバーヘッド、
(b) 低位HDLを用いることによる遅いシミュレーション、
(c) 合成可能な記述にのみ利用可能である。
【0010】
現在入手可能なハードウェアシミュレータは、異質モデル、すなわちシミュレータが理解するHDL以外の手段を用いて記述されたモデル、および異なるHDLで記述されたモデルのシミュレーションを可能にする。例えば、最新の標準VHDL(例えば、IEEE Computer Society、「IEEE Standard VHDL Language Reference Manual」、New York、USA、June 1994、IEEE Std 1076−1993に開示されている)は、異質エンティティの詳記を許容する。Synopsys VSSシミュレータ(Synopsys Inc. VSS Reference Manual、USA、1998に開示されている)は、C言語を用いる異質エンティティのインプリメンテーション用のC言語インターフェース(CLI)(Synopsys Inc. VSS Interfaces Manual、USA、1998に開示されている)を提供する。同様に、Model Technology ModelSimシミュレータ(Model Technology Inc. ModelSim SE/EE User’s Manual、USA、1999に開示されている)は、同様の理由で、異質言語インターフェース(Foreign Language Interface)(FLI)を提供する。David A.Burgoonの「A mixed−language simulator for concurrent engineering」、In The Proceedings for the 1998 International Verilog HDL Conference and VHDL International Users Forum、US、March 1998、IEEE Computer Societyに記載のシミュレーションエンジンも、Cモデルと低位Verilog Modelsとのコ・シミュレーションを行うことができる。これらの特定の方法は、高位ハードウェアがC等の順次言語で記述される場合にのみ適用される。さらに、Cコードは、純粋にはアルゴリズムではない、特別な刺激−応答様式で書かれなければならない。
【0011】
【課題を解決するための手段】
本発明は、デジタル回路を設計する装置であって、該デジタル回路の少なくとも1つの第1の部分の少なくとも1つの第1のモデルが、相互にコミュニケーションを行う複数の同時プロセスに対応する少なくとも1つの高位ハードウェア記述言語で表現されたものとして提供されると、該第1のモデルを、少なくとも1つの第1のプログラミング言語の少なくとも1つのソフトウェアモデルに変換するシミュレーションモデル生成部と、前記デジタル回路の少なくとも1つの第2の部分の少なくとも1つの第2のモデルが、少なくとも1つの第2のプログラミング言語で提供されるとともに、前記ソフトウェアモデルが提供されると、異質言語インターフェースにより、前記第1のプログラミング言語とコミュニケーションを行い、かつ前記第2のプログラミング言語と直接的にコミュニケーションを行って、前記ソフトウェアモデルと前記第2のモデルとのコ・シミュレーションを行って、前記同時プロセスを順次ソフトウェアプロセスに変換するシミュレーションエンジンと、前記シミュレーションエンジンによる前記コ・シミュレーションの結果が正しいかを確認する第1確認手段と、該第1確認手段による前記コ・シミュレーションの結果が正しい場合に、前記第1の部分と前記第2の部分とが合成可能であるかを確認する第2確認手段と、該第2確認手段により合成可能である場合に、前記デジタル回路の低位ハードウェア記述を生成する低位ハードウェア記述生成手段と、を備え、前記シミュレーションエンジンが、前記同時プロセスのそれぞれのために、ジャンプ命令およびループ終了条件を有するプロセスループを含むソフトウェアコードを生成し、前記同時プロセスのそれぞれのループ終了条件を解析することにより、前記同時プロセスの全てのループが非終了であり得るかどうかを判定し、ループが非終了である場合に、該非終了の前記同時プロセスにおける前記ジャンプ命令をイグジットポイントと置き換えることを特徴とする。
【0012】
また、本発明は、前記デジタル回路の設計装置によって実施されるデジタル回路の設計方法であって、該デジタル回路の少なくとも1つの第1の部分の少なくとも1つの第1のモデルが、相互にコミュニケーションを行う複数の同時プロセスに対応する少なくとも1つの高位ハードウェア記述言語で表現されたものとして前記シミュレーションモデル生成部に提供されると、該シミュレーションモデル生成部によって、該第1のモデルを、少なくとも1つの第1のプログラミング言語の少なくとも1つのソフトウェアモデルに変換する工程と、前記デジタル回路の少なくとも1つの第2の部分の少なくとも1つの第2のモデルが、少なくとも1つの第2のプログラミング言語で前記シミュレーションエンジンに提供されるとともに、前記ソフトウェアモデルが該シミュレーションエンジンに提供されると、該シミュレーションエンジンが、異質言語インターフェースにより、前記第1のプログラミング言語とコミュニケーションを行い、かつ前記第2のプログラミング言語と直接的にコミュニケーションを行って、前記ソフトウェアモデルと前記第2のモデルとのコ・シミュレーションを行って、前記同時プロセスを順次ソフトウェアプロセスに変換する工程と、前記第1確認手段によって、前記シミュレーションエンジンによる前記コ・シミュレーションの結果が正しいかを確認する工程と、該第1確認手段による前記コ・シミュレーションの結果が正しい場合に、前記第2確認手段によって、前記第1の部分と前記第2の部分とが合成可能であるかを確認する工程と、該第2確認手段により合成可能である場合に、前記低位ハードウェア記述生成手段によって、前記デジタル回路の低位ハードウェア記述を生成する工程と、を包含し、前記シミュレーションエンジンによる前記コ・シミュレーションを行う工程が、前記同時プロセスのそれぞれのために、ジャンプ命令およびループ終了条件を有するプロセスループを含むソフトウェアコードを生成し、前記同時プロセスのそれぞれのループ終了条件を解析することにより、前記同時プロセスの全てのループが非終了であり得るかどうかを判定し、ループが非終了である場合に、該非終了の前記同時プロセスにおける前記ジャンプ命令をイグジットポイントと置き換える工程とを包含することを特徴とする。
【0013】
前記コ・シミュレーションを行う工程が、前記高位ハードウェア記述言語の前記第1のモデルを、前記第1のプログラミング言語の前記ソフトウェアモデルにコンパイルする工程を包含してもよい。
【0014】
前記高位ハードウェア記述言語が、通信逐次プロセスモデルに基づいていもよい。
【0015】
前記ソフトウェアプロセスが、所定の刺激を検出する少なくとも1つの刺激ユニット、および該少なくとも1つの刺激ユニットに応じて、所定の応答を提供する少なくとも1つの応答ユニットを含んでいてもよい。
【0016】
前記応答ユニットのうちの少なくとも1つが、前記デジタル回路の前記第1の部分の前記同時プロセスを実施するプロセス応答ユニットを含んでいてもよい。
【0017】
前記同時プロセスが、一の共通のイベントにより引き起こされる複数の別々のプロセスを含み、前記プロセス応答ユニットが、該別々のプロセスをスケジューリングするスケジューラ、および該スケジューリングに従って、該別々のプロセスを実施するプロセスハンドラを含んでいてもよい。
【0018】
前記スケジューラが、個々のイグジットポイントを有するアクティブ未処理プロセスのリストを作り、該リストからカレントプロセスを選び、該カレントプロセス用のエントリポイントを選択してもよい。
【0019】
前記各イグジットポイントで、前記スケジューラが、前記リストから、さらなるカレントプロセスを選び、該さらなるカレントプロセス用のさらなるエントリポイントを選択してもよい。
【0020】
前記イグジットポイントにおいて、前記スケジューラが、前記同時プロセスの少なくとも1つを、新たなエントリポイントを有する前記アクティブ未処理プロセスのリストに入れてもよい。
【0021】
また、本発明は、前記デジタル回路の設計方法の各工程をコンピュータに実行させるためのプログラムである。
【0022】
また、本発明は、前記プログラムが記録されたコンピュータ読み取り可能な格納媒体である。
【0045】
本発明の方法では、同期ハードウェアモデルの高位順次記述を、同時処理モデルの演算に基づく高位ハードウェア記述から自動的に生成することができる。モデル記述は、実行可能コードにコンパイルすることができ、かつ他のシステム構成要素とのコ・シミュレーションを行うことができる。よって、高位ハードウェア記述と、他のシステム構成要素とのコ・シミュレーション用のシミュレーションに基づく、高位HDLシミュレーションおよびコンパイルの双方の利点が得られる。
【0046】
本方法の使用例の1つは、システム設計および開発中に、CSPに基づく高位言語でアルゴリズムとして記述されたハードウェア回路を、他のシステム構成要素とコ・シミュレーションするものである。例えば、本方法は、Bach C言語で記述されたハードウェア回路と、他のシステム構成要素との高速コ・シミュレーションに用いることができる。添付図面の図1は、Bachハードウェア設計フローを示し、ここでは、ハードウェアがBach高位言語で記述され、低位合成可能ハードウェア記述が自動的に生成される。ハードウェア設計者が低位言語(VHDL等)の代わりに、高位言語を用いるため、設計プロセスは、従来の設計プロセスよりも非常に速くなり、よって、より安価でもある。本方法の使用により、ハードウェア構成要素のコ・シミュレーションを、アルゴリズムレベルで行うことが可能になり、よって、低位ハードウェア記述が用いられるコ・シミュレーションプロセスをより速くする。結果として、ハードウェア設計に費やす時間が低減される。
【0047】
本方法の利点には以下の(a)〜(d)が含まれる。
【0048】
(a) ハードウェア構成要素のコ・シミュレーションをアルゴリズムレベルで行うことが可能になる。よって、
(i) シミュレーションが標的アーキテクチャから独立する。
【0049】
(ii) シミュレーションされる細部の量が相当に少なくなるため、シミュレーションが、低位レベルでのシミュレーションよりも相当に速い。
【0050】
(b) 構成要素モデルを、アルゴリズム記述から、シミュレーションに用いられる機械の元々のコードにコンパイルすることができる。このアプローチは、非常に高速なシミュレーション速度を提供する。
【0051】
(c) シミュレーションに用いられるハードウェア構成要素モデルの生成には、複雑な事前計算が必要とされないため、非常に効率的である。
【0052】
(d) ハードウェア開発の初期段階、すなわち、効率的で十分に合成可能なハードウェア記述が開発される前に、ハードウェア記述と他のシステム構成要素とのコ・シミュレーションを行うことが、多くの場合において好ましい。コ・シミュレーションに用いられるハードウェア記述が、低位記述に合成される必要がないため、この設計フローの初期段階で、このコ・シミュレーション方法を用いることができる。
【0053】
上記要因の全てが、高位ハードウェア(およびシステム)設計フローと関連付けられた下記の利点(A)および(B)に寄与する。
【0054】
(A) 市場に出すまでの時間がより早い、
(B) 大きな設計空間を探す能力、およびそれによるより効率的な設計の開発。
【0055】
【発明の実施の形態】
添付の図面を参照し、例示することにより本発明をさらに説明する。
【0056】
本発明の方法は、高位ハードウェア設計のテキストの記述を用いることができ、かつシミュレーションエンジンとコミュニケーションを行うことができる構成要素モデルを生成することができる。これにより、シミュレーションエンジン、およびシステム構成要素モデルがシミュレーションエンジンとコミュニケーションを行うための手段を用いることができる。このような手段の一例が、US 5335191に記載されている。このようなコミュニケーション手段、およびシミュレーションエンジンを用いることにより、本方法は、高位ハードウェア設計と他のシステム構成要素とのコ・シミュレーションを可能にする。
【0057】
高位ハードウェア記述言語は、同時処理(並列性)を考慮した計算モデルに基づくものと仮定しているため、純粋には順次的ではない。いくつかの実施形態では、通信逐次プロセス(CSP)モデルを用いるが、本方法は、任意の同時処理モデルに適用され得る。CSPモデルに基づく記述は、同期チャネルを用いて、相互にコミュニケーションを行う複数の順次プロセスを伴う並列アルゴリズムを記述する。この並列性は、特別な言語構成(通常、parまたはPAR構成)を用いて明示的に示される。同期コミュニケーションも、送信構成および受信構成により、順次プロセスで明示的に示される。順次プロセスは、命令型プログラミング言語の通常の構成(順次成分、条件命題、およびループ)を用いて構成することができる。
【0058】
CSPモデルは、その環境とコミュニケーションを行い、かつ作用する必要があるハードウェア構成要素を記述するために用いられる。これは、チャネルを用いるか、またはなんらかのデバイスによる同期コミュニケーションにより行われる。それらのデバイスは、メモリ(RAM、ROM、およびレジスタ)であり、(CSPモデル内に記述される)内部デバイス、または(その環境内の)外部デバイスのいずれであってもよい。図6は、相互にコミュニケーションを行い、かつ内部および外部デバイス18,19にアクセスする7つのプロセス11〜17として構成されるCSPモデルとして記述されるハードウェア構成要素10を示す。図7は、CSPに基づく高位モデルにより特定される低位の標的ハードウェアモデル20のインターフェースを示す。これは、同期回路であり、外部クロック、初期化、レポーティング状態、同期外部コミュニケーション、ならびに内部デバイスおよび外部デバイスに対するアクセスのためのポートを含む。
【0059】
このコ・シミュレーション方法により自動的に作成される構成要素モデル(シミュレーションモデル)は、シミュレーションエンジンとの非同期コミュニケーション用の複数のコミュニケーション命令を含む順次アルゴリズムとして記述される。多量の入力コミュニケーションは、構成要素モデルへの刺激と見なされ、基本的に、入力データを読み出してプロセスし、そのモデルの内部状態を変更して、出力データを送信することを含むアクションを実施するように、モデルに命令をする。図8は、シミュレーションモデル21の外部入力および外部出力を示す。
【0060】
図12は、初期化ユニット24、仕上げユニット25、いくつかの刺激ユニット26、およびいくつかの応答ユニット27を含む生成刺激モデルの全体構成を示す。シミュレーションモデルが受け取る入力刺激タイプごとに刺激ユニット26が存在する。刺激ユニット26は、対応する応答ユニット27をアクティブ化するかどうかを決定する。以下の(a)〜(c)は応答ユニットの例である。
【0061】
(a) そのモデルの内部状態を初期値に設定するリセット応答ユニット。対応する刺激が、リセットポートのアクティブ値である。
【0062】
(b) 内部デバイスを処理する内部デバイス応答ユニット。これらは、レジスタ、RAM、ROM等の表現を処理し、非同期デバイスの場合には、入力ポートの値により刺激され、同期デバイスの場合には、クロックエッジにより刺激される。
【0063】
(c) 高位ハードウェア記述により記述される実際のビヘイビアを実施し、かつ高位CSPモデルのプロセスを表現するプロセス応答ユニット。高位モデルが同期回路を表現するため、プロセス応答ユニットは、クロックエッジにより刺激される。高位モデルにより記述された並列性のため、プロセス応答ユニットは順次プロセスを表現するタスクをスケジューリングするメカニズムを含む。
【0064】
ハードウェア構成要素のテキストの記述から、刺激モデルを生成する方法は、以下のステップ(1)および(2)からなる。
【0065】
(1) シミュレーションモデル生成部を用いてシミュレーションモデル記述を生成する工程、
(2) 標準コンパイラを用いて刺激モデルをコンパイルする工程。
【0066】
次いで、コ・シミュレーション中に、コンパイルされたシミュレーションモデルを、シミュレーションエンジンにより用いることができる。
【0067】
シミュレーションモデル生成部の構成は、コンパイラの構成と同様であり、構文解析ユニット、コードプロセスおよび生成ユニット、ならびにコードプリンティングユニットからなる。コードプロセスおよび生成ユニットは、構文解析された高位モデルの内部表現を用い、シミュレーションモデルの内部表現を生成する。これは、以下のユニット(1)〜(3)を含む。
【0068】
(1) 特定の刺激にデバイスおよびプロセスを適用する刺激セレクタ、
(2) 個々のリセット、内部デバイス、およびプロセス応答ユニットを、所与のCSPハードウェアモデルから生成する応答ユニット生成部、
(3) 個々の応答ユニットから刺激モデル記述を作成する総体的なコード生成部。
【0069】
プロセス応答生成ユニットは、シミュレーションモデル生成部の最も重要な構成要素であり、以下の(a)〜(e)の役割を果たす。
【0070】
(a) CSPモデルにより記述された並列アルゴリズムの順次化、
(b) 同期チャネルコミュニケーション用のコードの生成、
(c) 外部デバイス用のアクセスインターフェースのコードの生成、
(d) CSPモデルのデータに局所性を持たせる。例えば、このユニットは、同じモデルの全てのインスタンスがあるデータを共有することができるか否かを判定する。
【0071】
(e) CSPモデル内のプロセスにより記述された並列性を管理するスケジューラを生成する。
【0072】
本方法は、複数のシステム構成要素がCSPに基づく高位ハードウェア記述言語で記述されているシステム記述のシミュレーションで用いることができる。そのようなシステムの設計フローを図1に示す。ここでは、システム構成要素のコ・シミュレーションが、システム設計のビヘイビアを検証するための重要な手順である。
【0073】
高位ハードウェア記述が、ステップ30でインプリメントされ、Bachソースコードとなる。他のシステム構成要素記述が、ステップ31で展開または取得され、Bachソースコードとともに、ステップ32で、高位ハードウェア記述と他のシステム構成要素とをコ・シミュレーションするために用いられる。ステップ33で、コ・シミュレーションの結果が確認され、それが正しくない場合には、高位ハードウェア記述を変更するために、ステップ30が繰り返される。このコ・シミュレーションの結果が正しい場合、テスト34で、結果的に得られた回路記述の合成が可能かどうかを判定する。合成が不可能な場合、制御はステップ30に戻る。回路記述が合成可能である場合、ステップ35で、低位ハードウェア記述を生成し、最終的に、集積回路またはシリコンチップ36を製造する合成を実施する。
【0074】
図3は、システム記述40の一例を示す。システム記述は、異なるレベルでの抽象化で記述された複数の構成要素41〜44を含み、構成要素モデル41および42のいくつかは高位言語で記述されている。
シミュレーションメカニズムは、構成要素モデル記述からシミュレーションモデルを生成し、シミュレーションエンジンを用いて、それらのシミュレーションモデルをコ・シミュレーションする。図5に示すとおり、シミュレーションエンジン45は、シミュレーションモデル46〜49(それぞれ、図3の記述41〜44と対応する)とコミュニケーションを行う。
【0075】
高位ハードウェアモデルは、CSPモデルの演算に基づく言語で記述される。図6は、それらのモデルの各々が同期チャネルを用いて相互にコミュニケーションを行う複数の順次プロセス11〜16を含むことを示す。プロセス11〜16は、同期チャネルを用いるか、またはデバイス18および19にアクセスすることにより、外部リソースとコミュニケーションを行うことができる。本実施形態では、それらのデバイスはレジスタ、RAM、およびROMであるが、主に、本発明の方法は、任意のI/Oデバイス(例えば、ディスプレイ、センサ等)に適用される。デバイス(18、19)は、(モデルの)内部デバイス、または(環境内の)外部デバイスであり得る。このモデルでは、その複数の内部デバイスへのアクセスを環境に設けることもできる。
【0076】
高位CSPモデルは、ハードウェア構成要素を記述する。標的ハードウェア構成要素モデル20の一例を図7に示す。このモデルは、外部同期コミュニケーションチャネルに対応するポート、ならびに内部デバイスおよび外部デバイスへのアクセスを有する。標的モデル20は、同期ハードウェア構成要素を表現するため、外部クロック用のポートを含む。回路の初期化、および内部状態のレポート用に他のポートが含まれる。本実施形態では、回路を初期状態にリセットするリセットポート、および回路が最終状態であるかどうかをレポートする仕上げポートの例を用いる。コ・シミュレーションに用いられるシミュレーションモデルは、(合成および製造に用いられる)標的ハードウェアモデルと同じビヘイビアを有するべきである。
【0077】
図9に示すとおり、シミュレーションモデルを生成するメカニズムは、シミュレーションモデル生成ユニット50およびコンパイラ51を含む。モデル生成ユニット50は、高位モデル記述を受け取り、シミュレーションモデル記述を返す。自動的に生成されたシミュレーションモデルは、C言語等の標準的な命令言語で記述される。次いで、シミュレーションモデルは、生成モデルを記述するために用いられる言語用の標準的なコンパイラ51を用いてコンパイルされる。図4に示す特定の例に関する本方法の例証を図10に示す。
【0078】
コ・シミュレーション方法は、シミュレーションエンジン45、およびシステム構成要素モデル2〜6がシミュレーションエンジン45とコミュニケーションを行うための手段を必要とする。このような手段の一例が、US 5335191に記載されており、その内容を、本明細書中において参考として援用する。図8に示すとおり、このようなコミュニケーション手段を用いる場合、シミュレーションモデルが、複数の刺激によりアクティブ化され、複数の入力を受け取り、複数の出力を返す。
【0079】
他のあらゆるコンピュータコードと同様に、コンパイルされたシミュレーションモデルのコード52は、メモリ内に格納されたデータを用いる。図11は、シミュレーションモデルが3種類のデータ記憶装置(a)〜(c)を用いることを示す。
【0080】
(a) 一時記憶装置53(ここに格納されたデータは素早くアクセスすることができる。)
(b) モデル−ローカル記憶装置54(ここに格納されたデータも同様に高速アクセスされるが、同じシミュレーションモデルの全てのインスタンスにより用いられる。)
(c) インスタンス−ローカル記憶装置55(この記憶装置は、シミュレーションモデルインスタンスごとに個別に割り当てられる。この記憶装置へのアクセスは、一時記憶装置53およびモデル−ローカル記憶装置54へのアクセスよりも、計算的に高価である。)
実行モードと呼ばれるインスタンス−ローカルデータオブジェクトは、全てのシミュレーションモデルにより用いられる。このデータは、以下の値(1)〜(3)のうちの1つを有する。
【0081】
(1) 初期化されていない(シミュレーションモデルが、まだリセット信号により初期化されていない。)
(2) 実行中(シミュレーションモデルが初期化されたが、最終状態に達していない)
(3) 完了(シミュレーションモデルが最終状態に達している。)
シミュレーションモデルが作成されるときには、実行モードの初期値は初期化されていない。このことを初期化されていないフラグが設定されると呼ぶ。同様に、実行モードの値により、実行中フラグまたは完了フラグ設定されると呼ぶ。
【0082】
図12は、生成シミュレーションモデルの構成を示す。このモデルは、初期化ユニット24、仕上げユニット25、いくつかの刺激ユニット26、およびいくつかの応答ユニット27を含む。初期化ユニット24および仕上げユニット25は、複数のブックキーピングタスクを実施する。例えば、初期化ユニット24は、シミュレーションモデルがアクティブ化されたときに、インスタンス−ローカル記憶装置から読出しを行う役割を果たす。仕上げユニット25は、後に検索を行うことができるように、インスタンス−ローカル記憶装置に記録する役割を果たす。シミュレーションモデルは、そのシミュレーションモデルが受け取ることができる異なる種類の刺激ごとに刺激ユニット26を含む。刺激ユニット26ごとに応答ユニット27が存在する。刺激ユニット26が刺激を検出すると、それに関連付けられた応答ユニット27をアクティブ化する。この異なる種類の応答ユニット27は以下の(a)〜(c)を含む。
【0083】
(a) モデルの内部状態を初期値に設定するリセット応答ユニット、
(b) 内部デバイスを処理する内部デバイス応答ユニット、
(c) 高位ハードウェア記述により記述された実際のビヘイビアを実施し、高位CSPモデルのプロセスを表現するプロセス応答ユニット。
【0084】
図13は、リセット応答ユニットを示す。このユニットがアクティブ化されると、特定の初期−ローカルデータの値を(高位モデルで記述される)初期値に設定する(ステップ57)。また、出力ポート信号を高位記述により企図される初期値にも設定する(ステップ58)。例えば、全ての外部デバイスインターフェースおよび外部コミュニケーションポートを設定するため、回路は、外部デバイスにアクセスしておらず、かつ外部リソースとのコミュニケーションも試みない。次いで、実行中フラグ59を設定し、そのモデルが初期化されたことを示す。リセット応答ユニットの対応する刺激ユニットが、リセットポートがアクティブな値を有するかどうかを確認する。
【0085】
図14に示すとおり、内部デバイス応答ユニットは、アクティブ化されたときには常に、デバイスの適切なビヘイビアをモデル化するデバイスハンドラー60を含む。対応する刺激ユニットは、非同期デバイスの場合には、入力ポートの値が変更されたかどうかを確認し、同期デバイスの場合には、適切なクロックエッジを確認する。
【0086】
プロセス応答ユニットは、同じクロックにより刺激される全てのモデルプロセスを処理する。単一クロックの標的モデルの場合、そのモデルの全てのプロセスが、同じプロセス応答ユニットにより処理される。図15は、実行中フラグを確認するメカニズム61、スケジューラ62、およびプロセスハンドラユニット63を含むプロセス応答ユニットの構成を示す。スケジューラ62は、高位ハードウェアモデル内で記述された並列性を管理する。プロセスハンドラユニット63は、関連付けられたプロセスのビヘイビアを表現する。プロセスハンドラコードへの複数の位置は、エントリポイントと呼ばれ、これらは、スケジューラが実行を転送することができる位置である。プロセスハンドラコード内の別の複数の位置は、イグジットポイントと呼ばれ、これらの位置から、実行をスケジューラへ返送することができる。スケジューラ62は、プロセスハンドラユニット63内の適切なエントリポイントを決定する。次いで、プロセスハンドラユニット63が、イグジットポイントに達するまで実行され、この場合、実行はスケジューラ62へと戻る。プロセス応答ユニットに対応する刺激ユニットは、適切なクロックエッジを確認する。
【0087】
スケジューラ62は、図16に示すようなプロセスリストを用いることにより、プロセスハンドラユニット63内のエントリポイントを決定する。プロセスリストは、インスタンス−ローカル記憶装置内に格納され、プロセスレコードのリストを含む。各プロセスレコードは、以下の情報を含む:プロセス識別子、状態情報、およびエントリポイント位置。1つのプロセスリスト内の2つのプロセスレコードが同じ識別子を有し得ることはない。状態情報は、プロセスが実行中であるか否か、およびスケジューラ62によって既に処理されているか否かを示す。よって、プロセス状態は、アクティブ(実行中とも呼ばれる)、または非アクティブ(休止中とも呼ばれる)のいずれかである。スケジューラ62は、全てのアクティブプロセスが少なくとも1度処理され、かつ各スケジューリングステージが一定時間の後に終了することを確実にする。本実施形態では、スケジューラ62は、各アクティブプロセスをちょうど1度処理する。異なるアプローチは、スケジューリングメカニズムを一定回数、またはプロセスリストが空になるまで繰り返すことである。
【0088】
各アクティブプロセスをちょうど1度処理するメカニズムは以下のとおりである。アクティブプロセスは、処理しても処理しなくてもいずれでもよい。アクティブな未処理プロセスのうちの1つは、カレントプロセスと呼ばれる。
【0089】
スケジューラは、以下の機能(1)〜(10)を実行することができるべきである。
【0090】
(1) 全てのアクティブプロセスを未処理に設定する、
(2) プロセスリスト内にアクティブ未処理プロセスがあるかどうかを確認する、
(3) アクティブな未処理プロセスをカレントプロセスとして選択する、
(4) 所与のプロセスのエントリポイントを探す、
(5) カレントプロセスを処理済みと設定し、かつそのエントリポイントを所与の位置に設定する、
(6) カレントプロセスを非アクティブ化し、かつそのエントリポイントを所与の位置に設定する、
(7) プロセスリストからカレントプロセスを削除する、
(8) 特定の非アクティブプロセスをアクティブ化する、
(9) 新たなアクティブプロセスを作成し、かつカレントプロセスとして選択する、
(10) 新たな未処理プロセスを作成し、かつそのエントリポイントを所与の位置に設定する。
【0091】
図17は、プロセスハンドラユニット63内のエントリポイントを選択するために用いられるスケジューリングメカニズムを示す。スケジューラ62は、ステップ64で、シミュレーションモデルへの入力値により、複数の休止中プロセスをアクティブ化することにより開始される。例えば、特定の入力ポート値を待っているために、プロセスが非アクティブである場合、スケジューリングメカニズムが、この入力ポート値を確認し、かつ休止中プロセスをアクティブ化すべきか否かを決定しようと試みる。アクティブプロセスが存在する場合には、ステップ65で、未処理と印される。スケジューラ62は、ステップ66で、プロセスリストが未処理のアクティブプロセスを含んでいるかどうかを確認し、ステップ67で、そのうちの1つをカレントプロセスとして選択する。次いで、ステップ68で、カレントプロセスレコード内に与えられたエントリポイントが用いられる。プロセス応答ユニットの実行が、イグジットポイントに達するまで実行し続けるプロセス処理ユニット内のこのエントリポイントに転送される。プロセスハンドリングユニット63は、スケジューリング機能のいくつかを用いることができ、カレントプロセスは、通常、イグジットポイントに達する直前に、未処理、または非アクティブ化に設定されるか、あるいはプロセスリストからの削除されるかのいずれかである。この時点で、実行は、スケジューラ62に戻り、新たなカレントプロセスおよびエントリポイントが選択される。これは、未処理のアクティブプロセスがプロセスリストからなくなるまで繰り返される。
【0092】
これにより、高位ハードウェアモデルから自動的に生成されるシミュレーションモデルの記述が完了する。以下に、シミュレーションモデル記述を生成するために用いられる、図9に示されるシミュレータモデル生成部50を説明する。次いで、コンパイラ51がそのモデルをコンパイルするために用いられる。
【0093】
図18は、シミュレーションモデル生成部が、標準的なコンパイラ技術(例えば、Alfred V.Aho、Ravi SethiおよびJeffery D.Ullmanの「Compilers:Principles, Techniques, and Tools」、Addison Wesley Publishing Company、October 1985を参照)で通常用いられる主要構成要素(a)〜(c)を含むことを示す。
【0094】
(a) 高位ハードウェアモデルのテキストの記述を受け取り、かつその内部表現を生成する字句解析および構文解析部70、
(b) 高位ハードウェアモデルの内部記述を受け取り、かつシミュレーションモデルの内部表現を生成するハードウェアモデルコードプロセスおよび生成ユニット71、
(c) シミュレーションモデルのテキストの記述を内部表現から生成するコードプリンタ72。
【0095】
シミュレーションモデル生成部は、字句解析および構文解析部70用、およびコードプリンタ72用の標準技術を用いる。図19に詳細に示すハードウェアモデルコード処理および生成ユニットは、ポートセレクタおよびインターフェース生成部73、全ての異なるタイプの刺激/応答ユニット用の刺激ユニット生成部74および応答ユニット生成部75、ならびに総合シミュレータモデルコードビルダ76を含む。
【0096】
ポートセレクタおよびインターフェース生成部73は、高位モデルのインターフェースからシミュレーションモデルのインターフェースを生成する。高位モデルのインターフェースは、外部コミュニケーション、内部デバイスに与えられるアクセス、外部デバイスに必要とされるアクセスのために用いられるチャネルを記述する。シミュレーションモデルのインターフェースは、図7に示すような合成に用いられる標的ハードウェアモデル20のインターフェースと同じであり、かつそのモデルの入力ポートおよび出力ポートを含む。インターフェース生成部により生成されるポートは以下のとおりである。
【0097】
(1) 初期/状態ポート:リセット入力ポート信号が、シミュレーションモデルをリセットするために用いられ、シミュレーションモデルがその最終段階に達したときに、終了出力ポートがシミュレーションモデルによりアクティブ化される。
【0098】
(2) 外部チャネルコミュニケーションポート:これらは、他のシステム構成要素との同期コミュニケーションに用いられ、1つのデータポートを有する二方向ハンドシェークコミュニケーションメカニズム、ならびに2つの二方向ハンドシェークポート:sender_readyポート、およびreceiver_readyポートを含む。sender_readyポート信号、およびreceiver_readyポート信号の双方がアクティブである場合、コミュニケーションが同期する。この時点で、データが、データポートを介して、送信側から受信側へと転送される。
【0099】
(3) 内部デバイスアクセスポート:これらのポートは、デバイスブロックの通常のインターフェースに対応する。例えば、SRAMデバイスは、通常のアドレスおよびデータバスポート、書き込み許可ポート、ならびに読出し許可ポートを有し、書き込み認識ポート、および読出し認識ポートも有し得る。同期RAMの場合にはクロックポートを有する。
【0100】
(4) 外部デバイスアクセスポート:これらのポートも、デバイスブロックの通常のインターフェースに対応する。
【0101】
総合シミュレーションモデルコードビルダ76は、刺激ユニット生成部74および応答ユニット生成部75により生成される個々の構成要素からシミュレーションモデルを生成する。図12は、シミュレーションモデルが、刺激/応答ユニット26および27、初期化ユニット24、ならびに仕上げユニット25からどのようにして構築されるかを示す。初期化ユニット24および仕上げユニット25は、シミュレーションエンジン、およびシミュレーションエンジンと構成要素モデル間で用いられるコミュニケーションメカニズムに依存する通常のブックキーピングユニットである。
【0102】
リセット応答ユニット生成部は、図13に示す構成を有するリセット応答ユニットを構築する。インスタンスローカルデータを初期化するブロックは、ハードウェアモデルの内部表現からイニシャライザを受け取り、次いで、それらを初期化するために必要とされる命令を生成することにより生成される。信号値を初期化するブロックは、インターフェース生成部により選択された出力ポートを用い、それらを初期化するための命令を生成することにより生成される。次いで、実行中フラグを設定するための適切な命令が生成される。リセット刺激ユニット生成部は、単純に、リセット入力ポートの値を確認するユニットを構築する。
【0103】
内部デバイス応答生成部は、環境がアクセスすることができる全ての内部デバイスをリストにし、デバイスの標準ビヘイビアを単純にモデル化する内部デバイスの各々用の応答ユニットを作成する。内部デバイスは、適切なデータ構成により、シミュレーションモデル内で表現される。RAMおよびROMはアレイにより表現され、レジスタはインスタンスローカル変数により表現される。デバイス応答ユニットは、適切なビヘイビアをモデル化する。RAMまたはROMへの読出しアクセスは、アレイインデクシングによりモデル化される。RAMへの書き込みアクセスは、アレイエレメント割当てによりモデル化される。レジスタへの読出しアクセスは、変数アクセスによりモデル化される。レジスタへの書き込みアクセスは、変数割当てによりモデル化される。内部デバイス刺激ユニット生成部は、同期デバイスの場合には、適切なクロック信号値を確認し、非同期デバイスの場合には、入力信号値の変化を確認する適切なユニットを作成する。
【0104】
モデルコードプロセッサおよび生成部の主要部は、図20に示すプロセス応答ユニット生成部であり、以下の(a)〜(e)を含む。
【0105】
(a) 高位モデル内に設けられる並列アルゴリズムの順次版を作成する役割を果たす順次コード生成部80、
(b) プロセスと外部環境間のコミュニケーションの役割を果たす命令を生成する役割を果たすチャネルコミュニケーションコード生成部81、
(c) 外部デバイスに正しくアクセスするための命令を生成する役割を果たす外部デバイスアクセスコード生成部82、
(d) 高位モデル内のデータを表現するシミュレーションモデル内のデータに適切な局所性を割り当てる役割を果たすデータ局所性割当部83、
(e) スケジューリング機能を生成するスケジューラ生成部84。
【0106】
順次コード生成部80は、高位モデルの内部表現を解析することにより開始され、図15に示すプロセスハンドラユニットの順次コードの内部記述を構築する。コミュニケーション命令が出されると、チャネルコミュニケーションコード生成部81は、コミュニケーションをモデル化するための適切な命令を構築する。同様に、外部デバイスアクセス命令が出されると、外部デバイスアクセスコード生成部82は、デバイスアクセスを実施するための適切な命令を生成する。次いで、各データアイテムに適切な局所性を与えるために、プロセスハンドラユニットの内部表現がデータ局所性アサイナ83により解析される。最後に、スケジューラ生成部84が、プロセスハンドラユニット63の内部表現を用い、スケジューラ62を作成することによりプロセス応答ユニットを生成する。
【0107】
順次コード生成部80は、高位モデルの構成を解析することにより必要とされる順次コードを構築する。高位モデルは、並列アルゴリズムに基づくため、並列成分、ならびに順次成分およびループ等の順次構成による順次命令から構成される。コミュニケーションおよび外部デバイスアクセスを除いては、高位モデル内の個々の(微細な)順次命令を、公知の方法を用いてシミュレーションモデル内で順次命令を生成するために用いることができる。これら微細な命令の例としては、演算式および割当が含まれる。この方法を用いたとして、次に、高位モデルの構成が、どのようにして必要とされる順次コードを構築するために用いられるかを示す。以下の:
(1) 順次成分、
(2) 並列成分、および
(3) ループ
により構成されるコードが、プロセスハンドラユニット内で順次コードを生成するために、どのようにして扱われるかを示す。
【0108】
順次成分は、図21に示すとおり、非常に単純に扱われる。プロセスが、順次的に組み合わされたいくつかのプロセス:H1、H2、...、Hnからなる場合、必要とされる順次コードは、一般に以下により生成される。
【0109】
(a) プロセスH1、H2、...、Hnごとに、順次コードS1、S2、...、Snを生成する、
(b) S1、S2、...、Snを順次的に正しい順番で組み合わせることにより、必要とされる順次コードを構築する。
【0110】
並列成分が、さらに複雑な方式で取り扱われる。図22は、並列する複数のプロセス:H1、H2、...、Hnからなるプロセスを示す。説明を容易にするため、このプロセスが、順次的にHbとHa間で組み合わされていると仮定する。図22は、順次コードS1、S2、...、Snのブロック、および他の命令から生成された、結果の順次コードを示している。ブロックS1、S2、...、Snは、高位レベルプロセスH1、H2、...、Hnから生成された順次コードブロックである。同様に、SbおよびSaは、プロセスHbおよびHaから生成されている。その生成された順次コードに関して、以下の点に留意されたい。
【0111】
(1) Snを除くブロックS1、S2、...、Snの各々の後には、「終了状態フラグの設定」により始まるブロックへのジャンプ命令が続く。ブロックSnは、そのようなジャンプ命令を必要としない。
【0112】
(2) 順次ブロックS1、S2、...、Snごとの新たなプロセスが作成される。ここでは、これらもS1、S2、...、Snと呼ぶ。同様に、プロセス名SbおよびSaが用いられる。
【0113】
(3) ブロックS2、...、Snの各々には、エントリポイントのラベルが付けられる。生成された順次コードは、1つのイグジットポイントを含む。
【0114】
(4) ブロックS1、S2、...、Snは別として、順次コードはまた、複数のスケジューラ機能の呼び出し、および以下の3種類の命令を含む。
【0115】
(i) 複数のプロセスに対する非終了状態フラグの設定、
(ii) 複数のプロセスにおけるカレントプロセスに対する終了状態フラグの設定、
(iii) 所与の数のプロセス内の全てのプロセスが終了状態フラグを有するかの確認。
【0116】
これらの命令は、S1、S2、...、Sn内の全てのコードが実行された後のみに、Sb内のコードの実行を開始するために必要とされる同期メカニズムのために用いられる。これらの命令を以下に説明する。
【0117】
並列に組み合わされた高位プロセスのリストを表わすプロセスS1、S2、...、Snの各リストに対して、終了状態フラグと呼ばれるインスタンスローカルデータ構成が生成される。このデータ構造は、全てのプロセスがちょうどアクティブ化されたことを示すため、それら(カレントプロセス)のうちの1つがちょうど非アクティブ化されたことを示すため、およびそれらの全てが非アクティブ化されたかどうかを確認するために用いられる。これらの命令をインプリメントするための簡単で安価な方法がいくつか存在する。一例として、データ構造に整数iを用いて、以下の工程が挙げられる。
【0118】
(a) S1、...、Snに対する非終了状態フラグの設定が、iの値をnに設定することによりインプリメントされる、
(b) S1、...、Sn内のカレントに対する終了状態フラグの設定が、Iの値をデクリメントすることによりインプリメントされる、
(c) S1、...、Snの全てが終了したかどうかの確認が、iが0であるかどうか確認することによりインプリメントされる。
【0119】
一般に、ループは、そのループの終了状態を確認するための式、およびループ本体からなる。順次コード生成部は以下のように機能する。
【0120】
(1) 終了状態(S状態と呼ぶ)用の順次コードを同じ終了状態(H状態と呼ぶ)用の高位コードから生成する。また、ループボディ(Sボディ)用の順次コードを、そのボディ(Hボディ)用の高位コードからも生成する。
【0121】
(2) ループが、非終了状態であり得るかどうか、または完全に終了しているかどうかを確認するためにループを解析する。ループが完全に終了しているかどうかを確認する方法は以下の工程を含む。
【0122】
(a) ループが、ループ用の標準を表わすかどうかを確認する工程(すなわち、カウンタが初期値に設定され、終了状態が、カウンタが最大/最小値に達したかどうかを確認し、カウンタが、ループボディの実行ごとに、単調に増加/減少される)、
(b) Sボディの実行ごとにイグジットポイントに達するかどうかを確認する工程。
【0123】
(3) ループが完全に終了している場合、同様のループがH状態をS状態と置きかえ、かつHボディをSボディと置き換えることにより作成される。図24は、終了状態がループの実行前に確認されるループの場合を示す。
【0124】
(4) ループが終了し得ない場合、ループの開始部がエントリポイントで印され、ループを繰り返すために用いられるジャンプ命令が、イグジットポイント、およびカレントプロセスを処理済みとして設定する命令により置き換えられる。この一例を図25に示す。
【0125】
シミュレーションモデルの内部表現を生成した後、順次コード生成部80は、完了出力信号をアクティブに設定し、完了フラグをモデルのコードの最後に設定する命令を加える。
【0126】
チャネルコミュニケーションコード生成部81は、プロセス間コミュニケーション構成をモデル化するための命令を生成する。CSPに基づく並列アルゴリズムを順次化するために用いられる標準的な方法を、2つの内部プロセス間のコミュニケーションをモデル化するために用いることができる。従って、内部プロセスと外部環境間のコミュニケーションをモデル化するために用いられる方法のみを記載することにする。外部コミュニケーションチャネル用のインターフェースが、receiver_ready信号、sender_ready信号、およびデータ信号を含むと仮定すると、receiver_ready信号、およびsender_ready信号の双方がアクティブであるときに、データが転送される。
【0127】
高位モデル内の各外部チャネルcごとに、インスタンスローカル変数cプロセスが生成される。この変数は、0値とともに、シミュレーションモデル内のプロセスごとに、プロセス識別子を含むことができる。この0値は、cプロセス変数の初期値でもある。この0値は、データがチャネルcを介して転送されることを待つプロセスがない状態を表わすために用いられる。プロセスp用の識別子に対応する値が、データがチャネルcを介して転送されることをプロセスpが待つ状態を表わすために用いられる。
【0128】
チャネルコミュニケーションコード生成部81は、コミュニケーション命令ごとに2ブロックのコードを生成する。一方のブロックが、プロセスハンドラユニット63に挿入され、高位モデル内のコミュニケーション命令と置き換わる。他方のブロックは、休止中プロセスを図17に示すようにアクティブ化するスケジューリングユニット62内のブロックに付加される。
【0129】
2つのコミュニケーション命令(外部チャネルを介する値の送信、外部チャネルを介する値の受信)について考察する。
【0130】
外部チャネルcを介して値を送信するためのコミュニケーション命令は、図26に示すコードにより置き換えられる。このコードは、データチャネルを介してその値を転送し、sender_ready信号をハイに設定し、cプロセス変数をカレントプロセスに設定し、カレントプロセスを非アクティブ化して終了する。データが受け取られた後にプロセスを再度アクティブ化するコードを図27に示す。このコードは、スケジューリングユニットのアクティブ化休止中プロセスブロック内に挿入される。図27に示すコードは、データがチャネルcを介して転送されることをプロセスが待っているかどうか、およびreceiver_ready信号がアクティブであるかどうかを確認し、cプロセス内での待機プロセスがアクティブ化されている場合には、cプロセス変数を0値に設定し直し、sender_ready信号を非アクティブに設定し直す。
【0131】
外部チャネルcを介して値を受信するためのコミュニケーション命令は、図28に示すコードにより置き換えられる。転送された値が、1値により与えられた記憶装置の位置に格納されると仮定する。生成されたコードは、receiver_ready信号をハイに設定し、cプロセス変数をカレントプロセスに設定し、カレントプロセスを非アクティブ化して終了する。プロセスが再度アクティブ化されると、データ信号からその値を受信し、1値内に格納する。データが受け取られた後にプロセスを再度アクティブ化するコードを図29に示す。このコードは、スケジューリングユニットのアクティブ化休止中プロセスブロック内に挿入される。図29に示すコードは、データがチャネルcを介して転送されることをプロセスが待っているかどうか、およびsender_ready信号がアクティブであるかどうかを確認し、cプロセス内での待機プロセスがアクティブ化されている場合には、cプロセス変数を0値に設定し直し、receiver_ready信号を非アクティブに設定し直す。
【0132】
外部デバイスアクセスコード生成部82は、外部デバイスアクセスを処理するための同様のブロックを構築する。これらのブロックに関しては、ここでは詳細には記載しない。基本的に、インスタンスローカル変数は、プロセスがデバイスアクセスの効果を待っているか否かを確認するために用いられる。外部デバイスアクセスコード生成部82は、高位モデル内のデバイスアクセス命令を、プロセスハンドラユニット63内のコードブロックと置き換える。コードブロックは、デバイスアクセスを実施するように適切な信号を設定し、次いで、プロセスの値をカレントプロセスに設定し、カレントプロセスを非アクティブ化して終了する。このプロセスが再度アクティブ化されると、生成されたコードが、デバイスアクセスの効果がある場合には、それを適切に用いる。また、外部デバイスアクセスコード生成部82が、デバイスアクセスの効果があったかどうかを確認するためのコードブロックを生成し、次いで、この効果を待つプロセスを再度アクティブ化する。このコードブロックは、スケジューリングユニットのアクティブ休止中プロセスブロックに付加される。
【0133】
局所性アサイナ83は、高位モデル表現内のデータを表わすシミュレーションモデル表現内のデータに以下の3つの局所性(i)〜(iii)のうちの1つを割り当てる。
【0134】
(i) 一時、
(ii) モデルローカル、
(iii) インスタンスローカル。
【0135】
局所性アサイナ83は、全ての一定データ(例えば、ROMデバイスの値を表わすデータ)にモデルローカル局所性を割り当てる。図30に示すとおり、インスタンスローカル局所性が、エントリポイントの前に書き込まれ、エントリポイント後に読み出されたデータに与えられる。次いで、残りの部分が、ローカル高位モデルデータを表わす場合には、一時局所性が与えられ、また、残りの部分がグローバル高位モデルデータを表わす場合にはモデルローカル局所性が与えられる。局所性アサイナ83により用いられるこの方法は、インスタンスローカルデータへのアクセスが最も費用がかかるために、そのデータ量を低減する。
【0136】
スケジューラ生成部84は、以下の2つのアクションを実施する。
【0137】
(1) スケジューリング機能用のコードを生成する。当業者が、これらの機能用の効果的なインプリメンテーションを設計することが可能である。
【0138】
(2) モデルコードプロセッサおよび生成部の他の成分により生成されるプロセスハンドラユニット63、ならびにチャネルコミュニケーションコード生成部81および外部デバイスアクセスコード生成部82により生成される休止中プロセスをアクティブ化するためのブロックを用い、次いで、図17に示すスケジューリングユニット62を作成する。
【0139】
【発明の効果】
本発明によれば、シミュレーションエンジンを用いてデジタル回路のコ・シミュレーションを行う方法が提供される。上記デジタル回路が、異質言語インターフェースにより、1つ以上の第1のプログラミング言語とコミュニケーションを行い、かつ1つ以上の第2のプログラミング言語と直接的にコミュニケーションを行う方法を提供する。少なくとも1つの第1のモデル、またはデジタル回路の少なくとも1つの第1の部分が、相互にコミュニケーションを行う同時プロセスを支持する少なくとも1つの高位ハードウェア記述言語で提供される。少なくとも1つの第1のモデルは、少なくとも1つの第1の言語の少なくとも1つのソフトウェアモデルに変換される。デジタル回路の少なくとも1つの第2の部分の少なくとも1つの第2のモデルが、少なくとも1つの第2の言語で提供される。少なくとも1つの第1の言語の少なくとも1つのソフトウェアモデル、および少なくとも1つの第2の言語の少なくとも1つの第2のモデルが、シミュレーションエンジンに適用される。
【0140】
本発明によれば、高位シミュレーションモデルをコ・シミュレーションに使用することができる。従って、高速シミュレーションおよびシミュレーション前の合成に時間がかからない、モデルが完全に合成可能となる前、または、標的となるアーキテクチャが選択される前に、モデルのコ・シミュレーションを行うことが可能である。本発明の方法は、高位シミュレーション技術であるだけでなく、コンパイルに基づくシミュレーション技術でもあり、これにより、非常に高速なシミュレーション速度を得ることができる。
【図面の簡単な説明】
【図1】図1は、高位言語を用い、本発明の一実施形態を構成する方法を含むハードウェアの設計フローを示す。
【図2】図2は、最初に高位記述を用いて低位標的モデルを生成し、次いで共同シミュレーションにその低位標的モデルを用いる公知の方法を示す。
【図3】図3は、相互にコミュニケーションを行い、かつ高位言語で記述されたいくつかの構成要素モデルとコミュニケーションを行う構成要素モデル記述を含むシステム記述の概略図である。
【図4】図4は、相互にコミュニケーションを行い、かつBach C高位言語で記述されたいくつかの構成要素モデルとコミュニケーションを行う構成要素モデル記述を含むシステム記述の特定の例を示す。
【図5】図5は、シミュレーションモデルがシミュレーションエンジンとコミュニケーションを行うための手段を含む、シミュレーションエンジンを用いるシステム記述のシミュレーションを示す。
【図6】図6は、相互におよび環境とコミュニケーションを行い、かつ内部デバイスまたは外部デバイスにアクセスするプロセスとして記述される高位モデルを示す。
【図7】図7は、シミュレーションモデルのインターフェースでもある標的ハードウェアモデルのインターフェースを示す。
【図8】図8は、入力値をプロセスし、出力値を返し、かつ複数の刺激により刺激されるシミュレーションモデルを示す。
【図9】図9は、シミュレーションモデル生成部、コンパイラ、およびシミュレーションエンジンを用いて、シミュレーションモデルを生成するために用いられる総体的な方法を示す。
【図10】図10は、図4に示す特定の例のためのシミュレーションモデルを生成するために用いられる総体的な方法を示す。
【図11】図11は、シミュレーションモデルがアクセスすることができる3種類の記憶装置を示す。
【図12】図12は、シミュレーションモデルの構成を示す。
【図13】図13は、シミュレーションモデルのリセット応答ユニットを示す。
【図14】図14は、シミュレーションモデルの内部デバイス応答ユニットを示す。
【図15】図15は、シミュレーションモデルのプロセス応答ユニットを示す。
【図16】図16は、シミュレーションモデルのスケジューラにより用いられるプロセスリストを示す。
【図17】図17は、現在のエントリポイントをスケジューリングし、選択するために用いられるメカニズムを示す。
【図18】図18は、コンパイル前のシミュレーションモデル生成ユニットを示す。
【図19】図19は、シミュレーションモデルコードプロセッサおよび生成部を示す。
【図20】図20は、シミュレーションモデルコードプロセッサおよび生成部のプロセス応答ユニットを示す。
【図21】図21は、順次成分のコード生成を示す。
【図22】図22は、並列成分を示す。
【図23】図23は、並列成分から生成されたコードを示す。
【図24】図24は、完全に終了したループのコード生成を示す。
【図25】図25は、終了し得ないループのコード生成を示す。
【図26】図26は、外部チャネルを介して値を送信するための生成コードを示す。
【図27】図27は、外部チャネルを介してデータが送信されることを待つプロセスをアクティブ化するブロックを示す。
【図28】図28は、外部チャネルを介して値を受信するための生成コードを示す。
【図29】図29は、外部チャネルを介してデータが受信されることを待つプロセスをアクティブ化するブロックを示す。
【図30】図30は、シミュレーションモデル内のデータにインスタンスローカル局所性を持たせるために用いられる基準を示す。
【符号の説明】
45 シミュレーションエンジン
50 シミュレーションモデル生成部
51 コンパイラ
Claims (13)
- デジタル回路を設計する装置であって、
該デジタル回路の少なくとも1つの第1の部分の少なくとも1つの第1のモデルが、相互にコミュニケーションを行う複数の同時プロセスに対応する少なくとも1つの高位ハードウェア記述言語で表現されたものとして提供されると、該第1のモデルを、少なくとも1つの第1のプログラミング言語の少なくとも1つのソフトウェアモデルに変換するシミュレーションモデル生成部と、
前記デジタル回路の少なくとも1つの第2の部分の少なくとも1つの第2のモデルが、少なくとも1つの第2のプログラミング言語で提供されるとともに、前記ソフトウェアモデルが提供されると、異質言語インターフェースにより、前記第1のプログラミング言語とコミュニケーションを行い、かつ前記第2のプログラミング言語と直接的にコミュニケーションを行って、前記ソフトウェアモデルと前記第2のモデルとのコ・シミュレーションを行って、前記同時プロセスを順次ソフトウェアプロセスに変換するシミュレーションエンジンと、
前記シミュレーションエンジンによる前記コ・シミュレーションの結果が正しいかを確認する第1確認手段と、
該第1確認手段による前記コ・シミュレーションの結果が正しい場合に、前記第1の部分と前記第2の部分とが合成可能であるかを確認する第2確認手段と、
該第2確認手段により合成可能である場合に、前記デジタル回路の低位ハードウェア記述を生成する低位ハードウェア記述生成手段と、
を備え、
前記シミュレーションエンジンが、前記同時プロセスのそれぞれのために、ジャンプ命令およびループ終了条件を有するプロセスループを含むソフトウェアコードを生成し、前記同時プロセスのそれぞれのループ終了条件を解析することにより、前記同時プロセスの全てのループが非終了であり得るかどうかを判定し、ループが非終了である場合に、該非終了の前記同時プロセスにおける前記ジャンプ命令をイグジットポイントと置き換えることを特徴とするデジタル回路の設計装置。 - 請求項1に記載のデジタル回路の設計装置によって実施されるデジタル回路の設計方法であって、
該デジタル回路の少なくとも1つの第1の部分の少なくとも1つの第1のモデルが、相互にコミュニケーションを行う複数の同時プロセスに対応する少なくとも1つの高位ハードウェア記述言語で表現されたものとして前記シミュレーションモデル生成部に提供されると、該シミュレーションモデル生成部によって、該第1のモデルを、少なくとも1つの第1のプログラミング言語の少なくとも1つのソフトウェアモデルに変換する工程と、
前記デジタル回路の少なくとも1つの第2の部分の少なくとも1つの第2のモデルが、少なくとも1つの第2のプログラミング言語で前記シミュレーションエンジンに提供されるとともに、前記ソフトウェアモデルが該シミュレーションエンジンに提供されると、該シミュレーションエンジンが、異質言語インターフェースにより、前記第1のプログラミング言語とコミュニケーションを行い、かつ前記第2のプログラミング言語と直接的にコミュニケーションを行って、前記ソフトウェアモデルと前記第2のモデルとのコ・シミュレーションを行って、前記同時プロセスを順次ソフトウェアプロセスに変換する工程と、
前記第1確認手段によって、前記シミュレーションエンジンによる前記コ・シミュレーションの結果が正しいかを確認する工程と、
該第1確認手段による前記コ・シミュレーションの結果が正しい場合に、前記第2確認手段によって、前記第1の部分と前記第2の部分とが合成可能であるかを確認する工程と、
該第2確認手段により合成可能である場合に、前記低位ハードウェア記述生成手段によって、前記デジタル回路の低位ハードウェア記述を生成する工程と、
を包含し、
前記シミュレーションエンジンによる前記コ・シミュレーションを行う工程が、前記同 時プロセスのそれぞれのために、ジャンプ命令およびループ終了条件を有するプロセスループを含むソフトウェアコードを生成し、前記同時プロセスのそれぞれのループ終了条件を解析することにより、前記同時プロセスの全てのループが非終了であり得るかどうかを判定し、ループが非終了である場合に、該非終了の前記同時プロセスにおける前記ジャンプ命令をイグジットポイントと置き換える工程とを包含することを特徴とするデジタル回路のコ・シミュレーション方法。 - 前記コ・シミュレーションを行う工程が、前記高位ハードウェア記述言語の前記第1のモデルを、前記第1のプログラミング言語の前記ソフトウェアモデルにコンパイルする工程を包含する、請求項2に記載の方法。
- 前記高位ハードウェア記述言語が、通信逐次プロセスモデルに基づく、請求項2に記載の方法。
- 前記ソフトウェアプロセスが、所定の刺激を検出する少なくとも1つの刺激ユニット、および該少なくとも1つの刺激ユニットに応じて、所定の応答を提供する少なくとも1つの応答ユニットを含む、請求項2に記載の方法。
- 前記応答ユニットのうちの少なくとも1つが、前記デジタル回路の前記第1の部分の前記同時プロセスを実施するプロセス応答ユニットを含む、請求項5に記載の方法。
- 前記同時プロセスが、一の共通のイベントにより引き起こされる複数の別々のプロセスを含み、前記プロセス応答ユニットが、該別々のプロセスをスケジューリングするスケジューラ、および該スケジューリングに従って、該別々のプロセスを実施するプロセスハンドラを含む、請求項6に記載の方法。
- 前記スケジューラが、個々のイグジットポイントを有するアクティブ未処理プロセスのリストを作り、該リストからカレントプロセスを選び、該カレントプロセス用のエントリポイントを選択する、請求項7に記載の方法。
- 前記各イグジットポイントで、前記スケジューラが、前記リストから、さらなるカレントプロセスを選び、該さらなるカレントプロセス用のさらなるエントリポイントを選択する、請求項8に記載の方法。
- 前記イグジットポイントにおいて、前記スケジューラが、前記同時プロセスの少なくとも1つを、新たなエントリポイントを有する前記アクティブ未処理プロセスのリストに入れる、請求項8に記載の方法。
- 前記イグジットポイントにおいて、前記スケジューラが、前記同時プロセスの少なくとも1つを、新たなエントリポイントを有する前記アクティブ未処理プロセスのリストに入れる、請求項9に記載の方法。
- 請求項2に記載されたデジタル回路の設計方法の各工程をコンピュータに実行させるためのプログラム。
- 請求項12に記載のプログラムが記録されたコンピュータ読み取り可能な格納媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0030735A GB2370134A (en) | 2000-12-15 | 2000-12-15 | Method of co-simulating a digital circuit |
GB0030735.5 | 2000-12-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002183234A JP2002183234A (ja) | 2002-06-28 |
JP4014080B2 true JP4014080B2 (ja) | 2007-11-28 |
Family
ID=9905238
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001378776A Expired - Lifetime JP4014080B2 (ja) | 2000-12-15 | 2001-12-12 | デジタル回路の設計装置および設計方法、並びに、プログラムおよび格納媒体 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7146300B2 (ja) |
JP (1) | JP4014080B2 (ja) |
GB (1) | GB2370134A (ja) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6973639B2 (en) * | 2000-01-25 | 2005-12-06 | Fujitsu Limited | Automatic program generation technology using data structure resolution unit |
US6701494B2 (en) * | 2002-05-01 | 2004-03-02 | Adc Dsl Systems, Inc. | Method of using testbench tests to avoid task collisions in hardware description language |
US7478398B2 (en) * | 2002-10-31 | 2009-01-13 | Hewlett-Packard Development Company, L.P. | Management apparatus and method for data collection including accumulating messages and determining message handlers for processing the accumulated messages |
US7307972B2 (en) * | 2003-02-24 | 2007-12-11 | Autocell Laboratories, Inc. | Apparatus for selecting an optimum access point in a wireless network on a common channel |
US7194705B1 (en) * | 2003-03-14 | 2007-03-20 | Xilinx, Inc. | Simulation of integrated circuitry within a high-level modeling system using hardware description language circuit descriptions |
US6907584B1 (en) * | 2003-03-14 | 2005-06-14 | Xilinx, Inc. | Method and apparatus for providing an interface to an electronic design of an integrated circuit |
US7184946B2 (en) * | 2003-06-19 | 2007-02-27 | Xilinx, Inc. | Co-simulation via boundary scan interface |
US20050114826A1 (en) * | 2003-07-11 | 2005-05-26 | Phil Barthram | Apparatus and method for self management of information technology component |
US7580962B1 (en) * | 2003-08-08 | 2009-08-25 | The Mathworks, Inc. | Automatic code generation for co-simulation interfaces |
US8645927B2 (en) * | 2003-11-24 | 2014-02-04 | The Boeing Company | Methods and apparatus for simulation speedup |
US7260798B2 (en) * | 2003-12-29 | 2007-08-21 | Mentor Graphics Corporation | Compilation of remote procedure calls between a timed HDL model on a reconfigurable hardware platform and an untimed model on a sequential computing platform |
US7340727B2 (en) * | 2004-01-27 | 2008-03-04 | Broadcom Corporation | Verilog to C++ language translator |
US7617084B1 (en) * | 2004-02-20 | 2009-11-10 | Cadence Design Systems, Inc. | Mechanism and method for simultaneous processing and debugging of multiple programming languages |
US7571082B2 (en) * | 2004-06-22 | 2009-08-04 | Wells Fargo Bank, N.A. | Common component modeling |
US7567893B2 (en) * | 2004-12-30 | 2009-07-28 | Vast Systems Technology Corporation | Clock simulation system and method |
US7533373B2 (en) * | 2005-01-25 | 2009-05-12 | Taiwan Semiconductor Manufacturing Co., Ltd | Method for prevention of system execution malfunction |
US20060171305A1 (en) * | 2005-02-03 | 2006-08-03 | Autocell Laboratories, Inc. | Access point channel forecasting for seamless station association transition |
US7493578B1 (en) * | 2005-03-18 | 2009-02-17 | Xilinx, Inc. | Correlation of data from design analysis tools with design blocks in a high-level modeling system |
US7509619B1 (en) * | 2005-06-22 | 2009-03-24 | Xilinx, Inc. | Auto generation of a multi-staged processing pipeline hardware implementation for designs captured in high level languages |
US7496869B1 (en) | 2005-10-04 | 2009-02-24 | Xilinx, Inc. | Method and apparatus for implementing a program language description of a circuit design for an integrated circuit |
US8411616B2 (en) | 2005-11-03 | 2013-04-02 | Piccata Fund Limited Liability Company | Pre-scan for wireless channel selection |
US7783467B2 (en) * | 2005-12-10 | 2010-08-24 | Electronics And Telecommunications Research Institute | Method for digital system modeling by using higher software simulator |
US7380232B1 (en) | 2006-03-10 | 2008-05-27 | Xilinx, Inc. | Method and apparatus for designing a system for implementation in a programmable logic device |
US8402409B1 (en) | 2006-03-10 | 2013-03-19 | Xilinx, Inc. | Method and apparatus for supporting run-time reconfiguration in a programmable logic integrated circuit |
US7761272B1 (en) | 2006-03-10 | 2010-07-20 | Xilinx, Inc. | Method and apparatus for processing a dataflow description of a digital processing system |
WO2008013968A2 (en) | 2006-07-28 | 2008-01-31 | Vast Systems Technology Corporation | Virtual processor generation model for co-simulation |
US8359585B1 (en) * | 2007-01-18 | 2013-01-22 | Advanced Testing Technologies, Inc. | Instrumentation ATS/TPS mitigation utilizing I/O data stream |
WO2008091575A2 (en) | 2007-01-22 | 2008-07-31 | Vast Systems Technology Corporation | Method and system for modeling a bus for a system design incorporating one or more programmable processors |
JP4952317B2 (ja) * | 2007-03-16 | 2012-06-13 | 富士通株式会社 | 退避データ判別方法、退避データ判別プログラムおよび退避データ判別装置 |
JP5293165B2 (ja) * | 2008-12-25 | 2013-09-18 | 富士通セミコンダクター株式会社 | シミュレーション支援プログラム、シミュレーション装置、およびシミュレーション支援方法 |
AT508852B1 (de) | 2009-09-18 | 2015-11-15 | Kompetenzzentrum Das Virtuelle Fahrzeug Forschungsgmbh Vif | Verfahren zum umschalten von heterogenen simulationsmodellen zur laufzeit |
KR20140021389A (ko) * | 2012-08-10 | 2014-02-20 | 한국전자통신연구원 | 모델 제작 및 실행 분리형 시뮬레이션 장치 및 그 방법 |
WO2014141457A1 (ja) * | 2013-03-15 | 2014-09-18 | 株式会社日立製作所 | 異なる言語間のコード変換方法、コード変換プログラムおよびコード変換装置 |
US9442696B1 (en) * | 2014-01-16 | 2016-09-13 | The Math Works, Inc. | Interactive partitioning and mapping of an application across multiple heterogeneous computational devices from a co-simulation design environment |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2815281B2 (ja) * | 1993-04-19 | 1998-10-27 | 株式会社ピーエフユー | デジタル回路設計支援システムおよびその方法 |
US5493672A (en) * | 1994-05-16 | 1996-02-20 | Sun Microsystems, Inc. | Concurrent simulation of host system at instruction level and input/output system at logic level with two-way communication deadlock resolution |
US5600579A (en) * | 1994-07-08 | 1997-02-04 | Apple Computer, Inc. | Hardware simulation and design verification system and method |
US5870585A (en) * | 1995-10-10 | 1999-02-09 | Advanced Micro Devices, Inc. | Design for a simulation module using an object-oriented programming language |
US5870588A (en) * | 1995-10-23 | 1999-02-09 | Interuniversitair Micro-Elektronica Centrum(Imec Vzw) | Design environment and a design method for hardware/software co-design |
US6006022A (en) * | 1996-11-15 | 1999-12-21 | Microsystem Synthesis, Inc. | Cross-linked development and deployment apparatus and method |
US6178542B1 (en) * | 1997-02-24 | 2001-01-23 | Lucent Technologies Inc. | Hardware-software co-synthesis of embedded system architectures using quality of architecture metrics |
US6112023A (en) * | 1997-02-24 | 2000-08-29 | Lucent Technologies Inc. | Scheduling-based hardware-software co-synthesis of heterogeneous distributed embedded systems |
US6117180A (en) * | 1997-02-24 | 2000-09-12 | Lucent Technologies Inc. | Hardware-software co-synthesis of heterogeneous distributed embedded systems for low overhead fault tolerance |
US6182258B1 (en) * | 1997-06-03 | 2001-01-30 | Verisity Ltd. | Method and apparatus for test generation during circuit design |
US6427224B1 (en) * | 2000-01-31 | 2002-07-30 | International Business Machines Corporation | Method for efficient verification of system-on-chip integrated circuit designs including an embedded processor |
-
2000
- 2000-12-15 GB GB0030735A patent/GB2370134A/en not_active Withdrawn
-
2001
- 2001-12-11 US US10/014,831 patent/US7146300B2/en not_active Expired - Fee Related
- 2001-12-12 JP JP2001378776A patent/JP4014080B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US7146300B2 (en) | 2006-12-05 |
JP2002183234A (ja) | 2002-06-28 |
GB0030735D0 (en) | 2001-01-31 |
GB2370134A (en) | 2002-06-19 |
US20020083420A1 (en) | 2002-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4014080B2 (ja) | デジタル回路の設計装置および設計方法、並びに、プログラムおよび格納媒体 | |
JP3835754B2 (ja) | 集積回路の設計方法及びそれによって設計された集積回路 | |
De Micheli et al. | The Olympus synthesis system | |
EP2062175B1 (en) | Hardware definition language generation for frame-based processing | |
US5870588A (en) | Design environment and a design method for hardware/software co-design | |
US6993469B1 (en) | Method and apparatus for unified simulation | |
JP5475996B2 (ja) | モデル化およびシミュレーション方法 | |
EP0853792B1 (en) | Method of producing a digital signal processor | |
WO2002061576A2 (en) | System, method and article of manufacture for interface constructs in a programming language capable of programming hardware architectures | |
EP0772140B1 (en) | A design environment and a design method for hardware/software co-design | |
CN111176926A (zh) | 一种基于双口sram的ip核仿真系统及仿真方法 | |
EP1065611A2 (en) | A design environment for hardware/software co-design | |
Dömer et al. | Specfic methodology for high-level modeling | |
Curzel et al. | End-to-end synthesis of dynamically controlled machine learning accelerators | |
US5960171A (en) | Dynamic signal loop resolution in a compiled cycle based circuit simulator | |
US20040153301A1 (en) | Integrated circuit development methodology | |
Gajski et al. | The specc methodology | |
EP0969395B1 (en) | Design of an application specific processor (asp) | |
Ku et al. | Synthesis of asics with hercules and hebe | |
Lund | Design and Application of a Co-Simulation Framework for Chisel | |
van Wijk et al. | An abstract modeling approach towards system-level design-space exploration | |
Thompson et al. | A high-level programming paradigm for SystemC | |
Damaševičius et al. | Wrapping of Soft IPs for Interface‐based Design Using Heterogeneous Metaprogramming | |
Doucet et al. | A methodology to take credit for high-level verification during RTL verification | |
Öberg et al. | Grammar-based design of embedded systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040611 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070528 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070629 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070906 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070906 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100921 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110921 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120921 Year of fee payment: 5 |