JP2002175344A - Co-validation method between electronic circuit and control program - Google Patents
Co-validation method between electronic circuit and control programInfo
- Publication number
- JP2002175344A JP2002175344A JP2001274491A JP2001274491A JP2002175344A JP 2002175344 A JP2002175344 A JP 2002175344A JP 2001274491 A JP2001274491 A JP 2001274491A JP 2001274491 A JP2001274491 A JP 2001274491A JP 2002175344 A JP2002175344 A JP 2002175344A
- Authority
- JP
- Japan
- Prior art keywords
- computer system
- electronic circuit
- instruction
- simulation
- signal
- 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
- 238000000034 method Methods 0.000 title claims abstract description 243
- 238000012488 co-validation Methods 0.000 title description 2
- 230000008569 process Effects 0.000 claims abstract description 184
- 238000004088 simulation Methods 0.000 claims abstract description 96
- 238000012360 testing method Methods 0.000 claims description 46
- 230000008685 targeting Effects 0.000 claims description 20
- 238000012545 processing Methods 0.000 claims description 18
- 239000003292 glue Substances 0.000 claims description 15
- 230000008859 change Effects 0.000 claims description 14
- 230000006870 function Effects 0.000 claims description 13
- 230000003542 behavioural effect Effects 0.000 claims description 10
- 230000003993 interaction Effects 0.000 claims description 8
- 238000006467 substitution reaction Methods 0.000 claims description 5
- 238000013507 mapping Methods 0.000 claims description 4
- 238000012795 verification Methods 0.000 claims description 4
- 230000001902 propagating effect Effects 0.000 claims 1
- 238000013461 design Methods 0.000 abstract description 39
- 238000012546 transfer Methods 0.000 abstract description 5
- 101001038970 Apis mellifera Larval-specific very high density lipoprotein Proteins 0.000 description 41
- 101001060519 Pacifastacus leniusculus Fibrinogen Proteins 0.000 description 41
- 239000011800 void material Substances 0.000 description 36
- 239000004744 fabric Substances 0.000 description 20
- 238000004886 process control Methods 0.000 description 16
- 238000013519 translation Methods 0.000 description 15
- 230000014616 translation Effects 0.000 description 15
- 241000238876 Acari Species 0.000 description 9
- 238000004891 communication Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 9
- 238000010200 validation analysis Methods 0.000 description 8
- 238000013459 approach Methods 0.000 description 7
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 7
- 230000000630 rising effect Effects 0.000 description 7
- 230000007704 transition Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 230000010354 integration Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000001351 cycling effect Effects 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 101000604123 Homo sapiens Noggin Proteins 0.000 description 2
- 101000969776 Homo sapiens Protein Mpv17 Proteins 0.000 description 2
- 102100021273 Protein Mpv17 Human genes 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000000638 stimulation Effects 0.000 description 2
- 101150065184 sym-2 gene Proteins 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 102100034339 Guanine nucleotide-binding protein G(olf) subunit alpha Human genes 0.000 description 1
- 108010023302 HDL Cholesterol Proteins 0.000 description 1
- 108010010234 HDL Lipoproteins Proteins 0.000 description 1
- 101000997083 Homo sapiens Guanine nucleotide-binding protein G(olf) subunit alpha Proteins 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012941 design validation Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005429 filling process Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000001046 rapid expansion of supercritical solution Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000013514 software validation Methods 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
- Tests Of Electronic Circuits (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
Description
【0001】[0001]
【発明の属する技術分野】本発明は、軽量のメッセージ
ベースのオペレーティングシステムを用いてハードウェ
アおよびソフトウェアのコデザイン(co-design、協調
設計)およびコバリデーション(co-validation、協調
検証)を行う方法および装置に関する。特に、電気回路
設計はソフトウェアプロセスにマッピングされ、マッピ
ングされた電気回路要素間の状態変化は、軽量オペレー
ティングシステムのメッセージ受渡しプリミティブを用
いて渡される。軽量オペレーティングシステム下で動作
する命令セットシミュレータにより、制御ソフトウェア
要素と、マッピングされた電気回路要素とはコシミュレ
ート(co-simulate、協調シミュレート)され、それら
の相互作用の評価が可能となる。本発明は、ソフトウェ
アおよびハードウェアのコシミュレーション(co-simul
ation、協調シミュレーション)環境を提供するコバリ
デーション方法、コシミュレーション方法をインプリメ
ント(実装)するコンピュータシステム、コシミュレー
ション方法をインプリメントするソフトウェア命令を含
むコンピュータプログラム製品、ならびに、ハードウェ
ア要素のソフトウェアシミュレーションおよび命令セッ
トシミュレーションをサポートするソフトウェア環境と
して、実現される。また、本発明は、ターゲット中央処
理装置(CPU)に対する命令セットシミュレータを開
発する方法としても実現される。[0001] The present invention relates to a method for performing co-design and co-validation of hardware and software using a lightweight message-based operating system. And equipment. In particular, the electrical circuit design is mapped to a software process, and the state changes between the mapped electrical circuit elements are passed using lightweight operating system message passing primitives. An instruction set simulator operating under a lightweight operating system allows the control software elements and the mapped electrical circuit elements to be co-simulated and their interaction evaluated. The present invention provides software and hardware co-simul
, a computer system that implements the co-simulation method, a computer program product that includes software instructions that implement the co-simulation method, and a software simulation and instruction set of hardware elements Implemented as a software environment that supports simulation. The present invention is also realized as a method for developing an instruction set simulator for a target central processing unit (CPU).
【0002】[0002]
【従来の技術】以下の参照事項は、すべて本発明に関連
する示した主題についての有用な背景的情報を提供す
る。BACKGROUND OF THE INVENTION The following references all provide useful background information on the indicated subject matter in connection with the present invention.
【0003】PTOLEMYは、並行(コンカレント)
システムの異種(heterogeneous)モデリング、シミュレ
ーションおよび設計を研究するプロジェクトである。現
在の実装は、JAVA(登録商標)プログラミング言語
で実現されている。http://ptolemy.eecs.berkeley.edu
にあるPTOLEMYウェブサイトは、PTOLEMY
に関するさらに詳細な情報を含む。[0003] PTOLEMY is concurrent.
A project to study heterogeneous modeling, simulation and design of systems. The current implementation is implemented in the Java programming language. http://ptolemy.eecs.berkeley.edu
The PTOLEMY website at
Includes more detailed information about
【0004】POLISは、組込みシステムのハードウ
ェア/ソフトウェアコデザインのためのソフトウェアプ
ログラムである。POLISは、PTOLEMYのため
に開発されたフレームワークを利用する。http://www-c
ad.berkeley.edu/~polis/にあるPOLISウェブサイ
トは、PTOLEMYに関するさらに詳細な情報を含
む。[0004] POLIS is a software program for hardware / software codesign of embedded systems. POLIS utilizes a framework developed for PTOLEMY. http: // www-c
The POLIS website at ad.berkeley.edu/~polis/ contains more detailed information about PTOLEMY.
【0005】次に、本発明を理解するための適当な基礎
を提供するいくつかの主題について記述する。[0005] Some subjects that provide a suitable basis for understanding the present invention will now be described.
【0006】一般に、軽量オペレーティングシステム
は、ハードウェアとアプリケーションレベルのコードと
の間の多くの障壁を除去することによって、アプリケー
ションが高速に動作することを可能にする。1つの直接
的な結果として、システムに残る保護機構は、あるとし
てもわずかとなる。このため、このような環境は、組込
みあるいは専用アプリケーションに適したものにはなる
が、不完全に設計された、あるいは、悪意のある結果を
生じるように意図されたアプリケーションに適したもの
とはならない。従来、このことは、ソフトまたはハード
なリアルタイム組込みコードへの、マイクロカーネルシ
ステムの利用を制限してきた。[0006] In general, lightweight operating systems allow applications to run faster by removing many barriers between hardware and application-level code. One direct result is that few, if any, protection mechanisms remain in the system. This makes such environments suitable for embedded or dedicated applications, but not for applications that are poorly designed or intended to produce malicious results. . Traditionally, this has limited the use of microkernel systems for soft or hard real-time embedded code.
【0007】現在、良好なハードウェア−ソフトウェア
・コシミュレーションツールに対する需要が、次の3つ
の主要な要因によって引き起こされている。 1.コンピュータシステム(ハードウェアおよびソフト
ウェアの両方)のサイズおよび複雑さの増大。 2.費用効果の高いSOC(system-on-a-chip)実装に対
する要求。 3.これまでの投資に対する収益を最大化するようなI
P(intellectual property)の再利用。At present, the demand for good hardware-software co-simulation tools is driven by three main factors: 1. Increasing the size and complexity of computer systems (both hardware and software). 2. The need for cost-effective SOC (system-on-a-chip) implementation. 3. I that maximize return on previous investments
Reuse of P (intellectual property).
【0008】現在、一般に、上記の要因に対する有効な
解決策は、ハードウェアおよびソフトウェアの両方のコ
ンポーネントを必要とすることが認識されている。この
ことは、設計空間を「コデザイン」要求へと切り開い
た。多くのタスクが、汎用の中央処理装置によっても、
専用(あるいはプログラム可能)ハードウェアによって
も実行可能である場合、最も有効な分割はどのようにし
てなされるか。設計ステップは、次のようなフィードバ
ックループで作用する。 1.タスクへの初期分割を行い、タスクアルゴリズムを
コーディングする。 2.タスクをハードウェアまたはソフトウェアコンポー
ネントに割り当て、これらの割当てに従って適当な実行
可能コードを生成する。 3.高レベルシミュレーションを行い、基本機能および
動作制約を確認する。 4.設計基準を満たすように、エラーを訂正し可能な再
分割を行う。 5.ハードウェアコンポーネントの完全な合成と、ソフ
トウェアの最適化を行う。 6.すべてのコンポーネントの低レベル(タイミングの
正確な)シミュレーションを行う。 7.許容可能なあるいは最適な解に向けて反復する。[0008] It is now generally recognized that an effective solution to the above factors requires both hardware and software components. This opened the design space to the "co-design" requirements. Many tasks, even with general-purpose central processing units,
How can the most efficient partitioning be done if it can also be performed by dedicated (or programmable) hardware? The design step works in a feedback loop as follows. 1. Perform initial partitioning into tasks and code task algorithms. 2. Assign tasks to hardware or software components and generate appropriate executable code according to these assignments. 3. Perform high-level simulation to confirm basic functions and operation constraints. 4. Correct errors and perform possible subdivisions to meet design criteria. 5. Performs complete synthesis of hardware components and software optimization. 6. Perform low-level (accurate timing) simulation of all components. 7. Iterate towards an acceptable or optimal solution.
【0009】この点まで採用されたこの手順に対する代
表的なアプローチが、PTOLEMY/POLIS環境
で例証されている。PTOLEMY/POLISは、タ
スクがソフトウェアあるいはハードウェアのいずれの実
装で合成されることも可能にすることによって、真のコ
デザイン環境であることを主張している。PTOLEM
Y/POLIS環境は、与えられた分割の検査を可能に
する統合シミュレーションツールのためのフレームワー
クを提供するとともに、合成された結果を生成する最終
的なコード生成フェーズを提供する。A representative approach to this procedure, taken up to this point, is illustrated in the PTOLEMY / POLIS environment. PTOLEMY / POLIS claims to be a true co-design environment by allowing tasks to be synthesized in either software or hardware implementations. PTOLEM
The Y / POLIS environment provides a framework for an integrated simulation tool that allows inspection of a given partition, as well as a final code generation phase that produces a synthesized result.
【0010】しかし、PTOLEMY/POLIS環境
のアーキテクチャは、その作者およびその一次ユーザ
(すなわち、ハードウェアエンジニア)の先入観を反映
している。PTOLEMY/POLIS環境には、シス
テム設計がコシミュレートされるためのソフトウェアコ
ンポーネントに対する最小限のサポートしかない。この
ことは、ソフトウェア実装のためのものを含めて、ES
TERELにおけるすべてのタスク仕様を書く必要があ
ることから明らかである。ESTERELは、状態マシ
ン型のVHDLに対するフロントエンドとしては適当な
プログラミング言語であるが、ソフトウェアのためにC
へと合成される言語としては大変である。However, the architecture of the PTOLEMY / POLIS environment reflects the prejudice of its author and its primary user (ie, a hardware engineer). The PTOLEMY / POLIS environment has minimal support for software components for the system design to be co-simulated. This includes ES, including for software implementation
It is clear from the need to write all task specifications in TEREL. ESTEREL is a suitable programming language as a front end to state machine type VHDL, but C
It is a difficult language to be synthesized into.
【0011】プログラマの観点から見ると、「良い」E
STERELであっても、「悪い」Cを生成する。実
際、ESTERELは、そのプログラミング様式(単純
なif-thenテストと、goto分岐)において、FORTR
ANに非常に近いコードを生成する。このことは、ある
程度のマシンコードを生成するだけでもCコンパイラに
重い負荷をかけ、よりグローバルな最適化を行う能力を
制限する。また、この条件のため、ソフトウェアエンジ
ニアは、既存のIPを捨てることを余儀なくされ、有用
で試験済みの(しかも信頼された)アルゴリズムを再コ
ーディングしなければならない。オブジェクト指向技術
のサポートがないことはいうに及ばず、最新の言語の高
水準の特徴がないため、ソフトウェア分割は、この階層
における下層階級となる。From a programmer's perspective, "good" E
Even if it is STEREL, "bad" C is generated. In fact, ESTEREL, in its programming style (simple if-then tests and goto branches),
Generate code very close to AN. This puts a heavy load on the C compiler even if only a certain amount of machine code is generated, and limits the ability to perform more global optimizations. Also, this condition forces software engineers to abandon existing IP and re-code useful and tested (and trusted) algorithms. Not to mention the lack of support for object-oriented technology, and the lack of high-level features of modern languages, software partitioning is a lower class in this hierarchy.
【0012】最新のプログラミング言語(例えば、C+
+)および高水準ハードウェア設計言語の両方の表現力
を有する言語がないため、統一されたコデザイン環境に
取り組もうとするのにさえかなりの抵抗がある。A modern programming language (for example, C +
Since there is no language that expresses both +) and a high-level hardware design language, there is considerable resistance even to trying to work on a unified co-design environment.
【0013】PTOLEMYフレームワークの別の実現
も可能であり、以上の問題点の解決に役立つ可能性があ
る。このようなシステムは、ソースコード形式で入手不
可能なこともある市販のIPを含む既存のコードを利用
することができなければ、可能な設計空間を制限し、最
適な結果を排除することになる可能性がある。(コスト
や市場出荷までの期間(time-to-market)の理由から)主
な問題点が、ハードウェアとソフトウェアにすでに分割
された既存の「レガシー」IPの再利用である場合、設
計空間は変わる。例えばCコードやVHDLのような複
数の方式で存在するコンポーネントが容易に思いつく。
この場合、問題は次のようになる。 1.一緒に用いられる場合に設計制約を満たす既存のI
Pのセットが存在するか。 2.存在する場合、制御信号およびデータが正しく流れ
るように、これらのプロセスをどのように「のり付け」
しなければならないか。 3.存在しない場合、まずい点はどこか。また、その点
を解決するのに必要なアプローチは何か。[0013] Other implementations of the PTOLEMY framework are possible and may help solve the above problems. Such a system would limit the possible design space and eliminate optimal results if existing code, including commercially available IP, which might not be available in source code form, could not be utilized. Could be. If the main problem (for cost and time-to-market reasons) is the reuse of existing “legacy” IP already split into hardware and software, the design space is change. For example, components that exist in a plurality of methods such as C code and VHDL can be easily conceived.
In this case, the problem is as follows. 1. Existing I that satisfies design constraints when used together
Does a set of P exist? 2. How to "glue" these processes, if present, so that control signals and data flow correctly
Do you have to? 3. If not, what are the bad points? What is the approach needed to solve that?
【0014】これらの問題は、既存の設計どうしの間の
インタフェースと、システム全体の総合的な正しい動作
とを重要視し、したがって、コシミュレーションおよび
コベリフィケーション(co-verification)の点を重要視
したものである。These issues emphasize the interface between existing designs and the overall correct operation of the overall system, and thus the emphasis on co-simulation and co-verification. It was done.
【0015】動的再分割のことを仮に除いて考えると、
プログラマは、自分の必要に最も適した言語(1つの言
語または複数の言語)で自分の考えを表現する自由があ
る。追加の「のり(glue)」は、ハードウェアエンティテ
ィ(例えば、アドレスデコーディングロジック)やソフ
トウェアモジュール(例えば、CPU外ハードウェアチ
ップのためのドライバ)として提供可能である。この段
階で必要とされるのは、設計を評価するための迅速なフ
ィードバックシステムである。Considering that dynamic subdivision is excluded,
Programmers have the freedom to express their ideas in the language (single or multiple languages) that best suits their needs. Additional "glue" can be provided as a hardware entity (e.g., address decoding logic) or a software module (e.g., a driver for an off-CPU hardware chip). What is needed at this stage is a quick feedback system to evaluate the design.
【0016】ここでも、市販のコシミューレションツー
ルは、約束するもののすべてを提供してはいない。とき
としては、この「ツール」は、市販のシミュレータを接
続することができる単なる統合フレームワークである。
これは、多くの重要な作業を節約し、これが「プラグア
ンドプレイ」フレームワークを提供する場合には、それ
ぞれの要求を解決するのに最適なツールが接続されるこ
とが可能となる。しかし、個々のコンポーネントどうし
の間に直接の通信がなく、したがって直接のフィードバ
ックがない場合には、設計空間が増大すると、このアプ
ローチは最終的に機能しなくなる可能性がある。このよ
うな実装は、現在、あるツールから別のツールにトレー
スを供給して収束を待つ反復的「逐次近似」法によって
特徴づけられる。Again, commercial simulation tools do not offer all of the promises. At times, this "tool" is just an integrated framework to which commercial simulators can be connected.
This saves a lot of important work, and if it provides a "plug and play" framework, the best tools can be connected to solve each requirement. However, in the absence of direct communication between individual components, and thus no direct feedback, this approach may ultimately fail as the design space increases. Such implementations are currently characterized by an iterative "iterative approximation" method that provides a trace from one tool to another and waits for convergence.
【0017】1つの代替アプローチは、要求されるフィ
ードバックパスをすでに備えたアーキテクチャフレーム
ワークおよびコシミュレーション環境を開発し、これ
に、一連の問題群全体にわたり役立つ可能性のあるター
ゲット変更可能(re-targetable)ツールを配置するもの
である。One alternative approach is to develop an architectural framework and co-simulation environment that already has the required feedback path, which can be re-targetable that may be useful across a set of problems. ) To place tools.
【0018】ハードウェアエンジニアリングの観点では
なくソフトウェアの観点からコシミュレーション問題を
検討し、特に、SOC集積の同様のアプリケーションを
考慮すると、次のようないくつかの類似点が浮かび上が
る。Considering the co-simulation problem from a software perspective rather than a hardware engineering perspective, and especially considering similar applications of SOC integration, several similarities emerge:
【0019】1a.軽量ソフトウェアシステムは、小規
模の(ときにはリアルタイムの)スケジューラを通る相
互通信プロセスのセットとして書かれる傾向がある。 1b.VHDLコードは、ワイヤのセットを通る相互通
信エンティティのセットとして書かれる傾向がある。1a. Lightweight software systems tend to be written as a set of interacting processes through a small (sometimes real-time) scheduler. 1b. VHDL code tends to be written as a set of intercommunicating entities through a set of wires.
【0020】2a.ソフトウェアプロセスはイベント駆
動型である傾向がある。すなわち、ソフトウェアプロセ
スは、何らかの他のプロセスまたは外部信号をウェイト
(待機)し、何らかの処理を実行し、そして、次のイベ
ントをウェイトする。 2b.ハードウェアエンティティはイベント駆動型であ
る傾向がある。すなわち、ハードウェアエンティティ
は、入力に現れる何らかの条件をウェイトし、何らかの
処理を実行し、そして、次のイベントをウェイトする。2a. Software processes tend to be event-driven. That is, the software process waits (waits) for some other process or an external signal, performs some processing, and waits for the next event. 2b. Hardware entities tend to be event driven. That is, the hardware entity waits for some condition appearing in the input, performs some processing, and waits for the next event.
【0021】3a.ソフトウェアプロセス間のイベント
は通常、送信側が情報の「パケット」(データ領域)を
用意し、データ同期ポイントとして作用するスケジュー
ラを通して、「信号」を別のプロセスに送ることによっ
て進行する。 3b.ハードウェアプロセス間のイベントは通常、送信
側が「データ」ワイヤのセット(例えば、バス)上に値
を用意し、データ同期ポイントとして作用するグルーロ
ジック(例えば、ラッチ)を通して、信号(例えば、チ
ップ選択(chip-select)信号)を別のチップに送ること
によって進行する。3a. Events between software processes typically proceed by the sender preparing a "packet" (data area) of information and sending a "signal" to another process through a scheduler that acts as a data synchronization point. 3b. Events between hardware processes typically involve signals (e.g., chip select) through glue logic (e.g., latches) where the sender prepares a value on a set of "data" wires (e.g., a bus) and acts as a data synchronization point. (chip-select) signal) to another chip.
【0022】4a.シングルCPUシステムでは、真の
ソフトウェア並列化はなく、見かけの並列化が、オペレ
ーティングシステムがタスク間を切り換えることによっ
て行われる。 4b.きわめて自明なハードウェアを除くすべてのハー
ドウェアでは、真の並列化があり、これは、独立のハー
ドウェアユニットが分散クロックを受信し、それぞれそ
のそのクロックサイクル中に自己のタスクを実行するこ
とによって達成される。4a. In a single CPU system, there is no true software parallelism, but apparent parallelism is performed by the operating system switching between tasks. 4b. In all hardware, except for very trivial hardware, there is true parallelism, in which independent hardware units receive distributed clocks, each performing its own task during that clock cycle. Achieved.
【0023】5a.適切に設計されたソフトウェアシス
テムでは、個々のプロセスは、あらかじめ定義されたプ
ロセス間通信経路(これは、動的に割り当てられること
も可能である)を除いては、独立に動作する。 5b.適切に設計されたハードウェアシステムでは、ハ
ードウェアプロセスの個々のインスタンスは、信号およ
びワイヤを用いて適切に定義された通信経路(これは、
「グルーロジック」内の設定によって決定されることも
可能である)を除いては、単独で動作する。5a. In a well-designed software system, individual processes operate independently, except for a predefined inter-process communication path, which can also be dynamically allocated. 5b. In a well-designed hardware system, each instance of the hardware process has a well-defined communication path using signals and wires,
It operates independently, except that it can be determined by settings in "glue logic."
【0024】VHDLコードのシミュレーションのため
のツール(例えば、Model Technologies社のVSIM)
がすでに存在する。このようなツールは、システム全体
の内部の個々のエンティティの挙動をエミュレートする
ことによって動作し、上記の項目5bに基づいて、ハー
ドウェア並列化の代わりにソフトウェア型の並列化(す
なわち、順次実行)を行う。これは、同期ポイントにお
ける個々のプロセスの状態(例えば、デルタあるいはク
ロック遷移)をそれぞれチェックし、各シミュレーショ
ンサイクルの終端で状態変化を行うことによってなされ
なければならない。通常、シミュレーション環境全体
が、ワークステーション上の単一プロセスとして動作
し、内部スケジューラが、その内部のVHDLプロセス
の状態を追跡する。Tools for simulation of VHDL code (eg, Model Technologies VSIM)
Already exists. Such tools operate by emulating the behavior of individual entities inside the entire system, and based on item 5b above, use software-based parallelization (ie, sequential execution) instead of hardware parallelization. )I do. This must be done by checking the state of each individual process (eg, delta or clock transition) at the synchronization point and making a state change at the end of each simulation cycle. Typically, the entire simulation environment runs as a single process on a workstation, and an internal scheduler tracks the state of its internal VHDL processes.
【0025】図1に、従来のVHDLシミュレーション
を例示する。通常、シミュレーション環境は、マルチプ
ロセシングオペレーティングシステム(例えばUNIX
(登録商標)1)内で実行される。シミュレーションの
コンポーネントは、命令セットシミュレータ4、VHD
Lシミュレーション5、および、信号を受渡しするため
のインタフェース6である。VSIM環境2は、内部ス
ケジューラ3を用いて、シミュレーションコンポーネン
トを制御する。図1に示されているように、割込み7
は、VHDLシミュレーション5から、インタフェース
を通じて、命令セットシミュレータに渡されなければな
らない。外部コンポーネント8との相互作用は、内部ス
ケジューラ3を通してVSIM環境2に渡されなければ
ならず、さらに、VSIMシミュレータ2は、UNIX
システム1を通じてデータを渡さなければならない。オ
ペレーティングシステムにとってVSIM環境2の全体
がUNIXオペレーティングシステムシェル1で実行さ
れる単一のプロセスとして見えるため、内部スケジュー
ラ3は、従来のシミュレーションシステムの本質的コン
ポーネントである。同時に、このプロセスが、システム
の他の外部コンポーネント8と相互作用することを可能
にするため、UNIXオペレーティングシステム1のマ
ルチプロセシングサポートが要求される。FIG. 1 illustrates a conventional VHDL simulation. Typically, the simulation environment is a multi-processing operating system (eg, UNIX)
(Registered trademark) 1). The components of the simulation are instruction set simulator 4, VHD
An L simulation 5 and an interface 6 for transferring signals. The VSIM environment 2 uses the internal scheduler 3 to control the simulation components. As shown in FIG.
Must be passed from the VHDL simulation 5 through the interface to the instruction set simulator. Interactions with external components 8 must be passed to the VSIM environment 2 through the internal scheduler 3, and furthermore, the VSIM simulator 2
Data must be passed through the system 1. The internal scheduler 3 is an essential component of a conventional simulation system because the operating system sees the entire VSIM environment 2 as a single process running in the UNIX operating system shell 1. At the same time, multiprocessing support of the UNIX operating system 1 is required to enable this process to interact with other external components 8 of the system.
【0026】現実のシステムは、単純な「部分の総和」
アプローチが示すようなものよりもしばしばはるかに複
雑であり、システム統合の問題は、個々の設計フェーズ
中に見落とされる設計欠陥を明らかにすることがある。
このことは特に、非決定性システム(例えば、ベストエ
フォート型ネットワークリンクを通じて受信されるデー
タの処理)の設計の際には明らかである。また、設計空
間は、起こりうるさまざまなエラー(パケット損失、デ
ータ破損、リアルタイムデッドライン超過など)と、そ
れが実際に起きたときにエラーを処理するストラテジと
を考慮に入れなければならない。A real system is a simple "sum of parts"
Often much more complex than the approaches show, problems in system integration can reveal design flaws that are overlooked during individual design phases.
This is particularly evident in the design of non-deterministic systems (eg, processing of data received over best-effort network links). Also, the design space must take into account the various errors that can occur (packet loss, data corruption, exceeded real-time deadlines, etc.) and strategies to handle the errors when they actually occur.
【0027】実世界のアプリケーションにおけるもう1
つの問題点は、データの周期性が、マイクロ秒やナノ秒
ではなく、数分の1秒以上となることが多いことであ
る。例として、MPEGデータの表示システムを考え
る。(毎秒30フレームの表示の場合)33msという
基本フレーム周期があるが、これは、データの真の周期
ではない。MPEGは、データの(単一の)フルフレー
ムと、それを修正する一連の補間フレームとを有するG
OP(group of pictures)セグメントへと、フレームを
クラスタ化する。通常、GOPは、15フレーム、すな
わち、0.5秒のオーダーのデータである。フルフレー
ムデータの損失は実質的にそのGOP内の後続フレーム
を無意味にするため、このレイヤはエラーの伝搬を制限
する。Another in real world applications
One problem is that the periodicity of the data is often not more than microseconds or nanoseconds, but a fraction of a second or more. As an example, consider a display system for MPEG data. There is a basic frame period of 33 ms (for a display of 30 frames per second), but this is not the true period of the data. MPEG provides a G with a (single) full frame of data and a series of interpolated frames to modify it.
Cluster the frames into OP (group of pictures) segments. Normally, a GOP is 15 frames, that is, data on the order of 0.5 seconds. This layer limits the propagation of errors as the loss of full frame data effectively renders subsequent frames in the GOP meaningless.
【0028】したがって、このようなシステムの設計に
おいては、1個のGOP全体のデータより短いシミュレ
ーションは、不正なエラー処理状況を見落とす可能性が
高い。実際、秒のオーダーのデータと、1分に達するシ
ミュレートされた実行を要求しない試験ストラテジを考
えることは困難である。このようなシステムでは、任意
の設計に対して、少なくとも2つの「予備」ステップが
あることになる。第1のステップは、その設計がフルス
ピードMPEGデータのリアルタイム制約を処理するこ
との確認である。第2のステップは、ずっと長い期間に
わたるエラー条件をどの程度うまく処理するかについて
調べることである。Therefore, in the design of such a system, a simulation shorter than the data of one entire GOP is likely to overlook an incorrect error processing situation. In fact, it is difficult to consider test strategies that do not require data on the order of seconds and simulated execution up to one minute. In such a system, there will be at least two "preliminary" steps for any given design. The first step is to confirm that the design handles the real-time constraints of full speed MPEG data. The second step is to look at how well it handles error conditions over much longer periods of time.
【0029】[0029]
【発明が解決しようとする課題】より強力な(例えば、
コスト、エネルギーに関して)CPUと、追加のカスタ
ムハードウェア(例えば、FPGAやASIC)の間に
は一般的なトレードオフがある。上記のMPEGの例を
用いると、MIPSプロセッサでハードウェア支援がな
い場合、10フレーム/秒を超える表示は不可能であ
る。しかし、インテルMMXレベルのプロセッサの場
合、追加ハードウェアがなくても、30フレームを優に
超える表示が可能である。このような観察は、ハードウ
ェアおよびソフトウェアの両方に対して単一の設計言語
を使用することに対する強力な反論となる。というの
も、このパフォーマンスは、主要なルーチンをインテル
のアセンブリ言語で直接にコーディングすることによっ
てのみ達成することができるからである。当面する問題
を正しく解決することが可能な機能を無視することによ
って、候補となる可能性のあるCPUを「不自由にす
る」のはほとんど無意味である。The more powerful (for example,
There is a general tradeoff between the CPU and additional custom hardware (e.g., FPGA or ASIC) (in terms of cost, energy). Using the above MPEG example, without hardware support in the MIPS processor, it is not possible to display more than 10 frames per second. However, an Intel MMX level processor can display well over 30 frames without additional hardware. Such observations are a strong objection to using a single design language for both hardware and software. This performance can only be achieved by coding key routines directly in Intel's assembly language. It is almost meaningless to "crimp" a potential CPU by ignoring features that can correctly solve the problem at hand.
【0030】[0030]
【課題を解決するための手段】本発明は、上記の状況に
鑑み、従来技術の上記の問題点と制限を克服するもので
ある。SUMMARY OF THE INVENTION In view of the above circumstances, the present invention overcomes the above-mentioned problems and limitations of the prior art.
【0031】本発明のさらに他の利点については、その
一部は以下の説明に記載されており、一部はその説明か
ら明らかであるか、または、本発明を実施することによ
り知ることができる。本発明の利点は、特許請求の範囲
に特に記載された手段と組合せによって実現され達成さ
れる。[0031] Still other advantages of the invention will be set forth in part in the description which follows, and in part will be obvious from the description, or may be learned by practice of the invention. . The advantages of the invention will be realized and attained by means of the instruments and combinations particularly pointed out in the appended claims.
【0032】本発明の第1の特徴によれば、電子回路
と、その電子回路をターゲットとする制御プログラムと
のコバリデーション(協調検証)を行う方法が実現され
る。ここで、電子回路および制御プログラムは、軽量コ
ンピュータシステムオペレーティング環境で実行される
所定のコンピュータ言語を用いてシミュレートされる。
この方法は、軽量コンピュータシステムオペレーティン
グ環境をターゲットとする構文(construct)からなるハ
ードウェアモデルに、電子回路の動作シミュレーション
を翻訳することを含む。さらに、この方法は、サイクル
精度の命令セットシミュレーションを構成することを含
む。これにより、命令セットシミュレーションは、電子
回路をターゲットとする制御プログラムの一部を実行す
る。さらに、この方法は、電子回路のハードウェアモデ
ルを命令セットシミュレーションに結合して、軽量コン
ピュータオペレーティングシステム環境で実行される試
験対象システムを作成することを含む。さらに、この方
法は、試験対象システムに刺激を入力することにより、
試験対象システムに結果を出力させることを含む。According to the first aspect of the present invention, a method of performing a validation (cooperative verification) between an electronic circuit and a control program targeting the electronic circuit is realized. Here, the electronic circuit and the control program are simulated using a predetermined computer language executed in a lightweight computer system operating environment.
The method includes translating an operation simulation of an electronic circuit into a hardware model consisting of a construct targeted at a lightweight computer system operating environment. Further, the method includes configuring a cycle accurate instruction set simulation. Accordingly, the instruction set simulation executes a part of the control program targeting the electronic circuit. Further, the method includes combining the hardware model of the electronic circuit with the instruction set simulation to create a system under test that executes in a lightweight computer operating system environment. In addition, the method involves inputting a stimulus to the system under test,
Including outputting the result to the system under test.
【0033】本発明の第2の特徴によれば、電子回路
と、その電子回路をターゲットとする制御プログラムと
のコバリデーションを行うコンピュータシステムが実現
される。ここで、電子回路および制御プログラムは、軽
量コンピュータシステムオペレーティング環境で実行さ
れる所定のコンピュータ言語を用いてシミュレートされ
る。このコンピュータシステムは、すべてのグローバル
信号の状態を管理するソフトウェア手段を有する。さら
に、このコンピュータシステムは、クロック信号を生成
するソフトウェア手段を有する。さらに、このコンピュ
ータシステムは、イベントをウェイトするプロセスキュ
ーを管理するソフトウェア手段を有する。さらに、この
コンピュータシステムは、所定のタイミング間隔で少な
くとも1つのプロセスを実行するソフトウェア手段を有
する。さらに、このコンピュータシステムは、中央プロ
セス制御を行うソフトウェア手段を有する。According to the second feature of the present invention, a computer system for validating an electronic circuit and a control program targeting the electronic circuit is realized. Here, the electronic circuit and the control program are simulated using a predetermined computer language executed in a lightweight computer system operating environment. The computer system has software means for managing the state of all global signals. Further, the computer system has software means for generating a clock signal. Further, the computer system has software means for managing a process queue that waits for an event. Further, the computer system has software means for executing at least one process at predetermined timing intervals. Further, the computer system has software means for central process control.
【0034】本発明の第3の特徴によれば、電子回路
と、その電子回路をターゲットとする制御プログラムと
のコバリデーションを行うコンピュータシステムが実現
される。ここで、電子回路および制御プログラムは、軽
量コンピュータシステムオペレーティング環境で実行さ
れる所定のコンピュータ言語を用いてシミュレートされ
る。このコンピュータシステムは、プロセッサと、コン
ピュータシステムが中央制御プロセスを実行することを
可能にするように適応したソフトウェア命令を含むメモ
リとを有する。中央制御プロセスは、複数のグローバル
信号の状態を管理する信号メンテナサブプロセスと、ソ
フトウェアモデルおよび命令セットシミュレータによっ
て使用されるクロック信号を生成するクロック信号ジェ
ネレータサブプロセスとを有する。さらに、中央制御サ
ブプロセスは、ソフトウェアモデルおよび命令セットシ
ミュレータからのイベントをウェイトするプロセスキュ
ーを管理するキューメンテナサブプロセスと、所定のタ
イミング間隔を生成するタイマサブプロセスとを有す
る。さらに、中央制御サブプロセスは、少なくとも信号
メンテナサブプロセス、クロック信号ジェネレータサブ
プロセス、キューメンテナサブプロセスおよびタイマサ
ブプロセスの実行を制御するコントローラサブプロセス
を有する。According to the third feature of the present invention, a computer system for validating an electronic circuit and a control program targeting the electronic circuit is realized. Here, the electronic circuit and the control program are simulated using a predetermined computer language executed in a lightweight computer system operating environment. The computer system has a processor and a memory containing software instructions adapted to enable the computer system to execute a central control process. The central control process has a signal maintainer subprocess that manages the state of the plurality of global signals, and a clock signal generator subprocess that generates clock signals used by the software model and instruction set simulator. Further, the central control subprocess has a queue maintainer subprocess that manages a process queue that waits for events from the software model and the instruction set simulator, and a timer subprocess that generates a predetermined timing interval. Further, the central control subprocess has at least a controller subprocess that controls execution of the signal maintainer subprocess, the clock signal generator subprocess, the queue maintainer subprocess, and the timer subprocess.
【0035】本発明の第4の特徴によれば、マイクロプ
ロセッサによって制御される電子回路と、そのマイクロ
プロセッサをターゲットとする制御プログラムとのコバ
リデーションを行うコンピュータシステムが実現され
る。ここで、電子回路、ターゲットマイクロプロセッサ
および制御プログラムは、所定のコンピュータ言語およ
び所定のインタフェースライブラリを用いてシミュレー
トされる。このコンピュータシステムは、電子回路のソ
フトウェアモデルを有する。電子回路の機能は、所定の
インタフェースライブラリの一部を含む所定のコンピュ
ータ言語構文に翻訳されている。さらに、このコンピュ
ータシステムは、ターゲットマイクロプロセッサの命令
セットシミュレーションを有し、これにより、命令セッ
トシミュレーションは、制御プログラムの一部を実行す
るときにターゲットマイクロプロセッサによって実行さ
れる命令をシミュレートする。さらに、このコンピュー
タシステムは、電子回路のソフトウェアモデルと、ター
ゲットマイクロプロセッサの命令セットシミュレーショ
ンを互いに結合する中央制御プロセスを有する。中央制
御プロセスは、複数のグローバル信号の状態を管理する
信号メンテナサブプロセスと、ソフトウェアモデルおよ
び命令セットシミュレータによって使用されるクロック
信号を生成するクロック信号ジェネレータサブプロセス
とを有する。さらに、中央制御サブプロセスは、ソフト
ウェアモデルおよび命令セットシミュレータからのイベ
ントをウェイトするプロセスキューを管理するキューメ
ンテナサブプロセスと、所定のタイミング間隔を生成す
るタイマサブプロセスとを有する。さらに、中央制御サ
ブプロセスは、少なくとも信号メンテナサブプロセス、
クロック信号ジェネレータサブプロセス、キューメンテ
ナサブプロセスおよびタイマサブプロセスの実行を制御
する制御サブプロセスを有する。According to a fourth aspect of the present invention, a computer system for validating an electronic circuit controlled by a microprocessor and a control program targeting the microprocessor is realized. Here, the electronic circuit, the target microprocessor and the control program are simulated using a predetermined computer language and a predetermined interface library. This computer system has a software model of an electronic circuit. The functions of the electronic circuit have been translated into a predetermined computer language syntax that includes a portion of a predetermined interface library. Further, the computer system has an instruction set simulation of the target microprocessor, whereby the instruction set simulation simulates instructions executed by the target microprocessor when executing a part of the control program. In addition, the computer system has a central control process that couples the software model of the electronic circuit and the instruction set simulation of the target microprocessor to each other. The central control process has a signal maintainer subprocess that manages the state of the plurality of global signals, and a clock signal generator subprocess that generates clock signals used by the software model and instruction set simulator. Further, the central control subprocess has a queue maintainer subprocess that manages a process queue that waits for events from the software model and the instruction set simulator, and a timer subprocess that generates a predetermined timing interval. Further, the central control sub-process includes at least a signal maintainer sub-process,
It has a control sub-process for controlling the execution of the clock signal generator sub-process, the queue maintainer sub-process and the timer sub-process.
【0036】本発明の第5の特徴によれば、電子回路
と、その電子回路をターゲットとする制御プログラムと
のコバリデーションを行うコンピュータシステムのため
の実行可能プログラムが実現される。ここで、電子回路
および制御プログラムは、所定のコンピュータ言語を用
いてシミュレートされる。この実行可能プログラムは、
複数のグローバル信号の状態を管理する第1実行可能コ
ード部分を有する。さらに、この実行可能プログラム
は、複数のクロック信号を生成する第2実行可能コード
部分を有する。さらに、この実行可能プログラムは、イ
ベントをウェイトするプロセスキューを管理する第3実
行可能コード部分を有する。さらに、この実行可能プロ
グラムは、所定のタイミング間隔を生成する第4実行可
能コード部分を有する。さらに、この実行可能プログラ
ムは、少なくとも第1、第2、第3および第4実行可能
コード部分の実行を制御する第5実行可能コード部分を
有する。According to a fifth aspect of the present invention, an executable program for a computer system for validating an electronic circuit and a control program targeting the electronic circuit is realized. Here, the electronic circuit and the control program are simulated using a predetermined computer language. This executable program
A first executable code portion that manages a state of the plurality of global signals. Further, the executable program has a second executable code portion that generates a plurality of clock signals. In addition, the executable program has a third executable code portion that manages a process queue that waits for events. Further, the executable program has a fourth executable code portion that generates a predetermined timing interval. Further, the executable program has a fifth executable code portion that controls execution of at least the first, second, third, and fourth executable code portions.
【0037】本発明の第6の特徴によれば、電子回路と
その電子回路を制御する制御プログラムとを含むシステ
ムの検証のための、ターゲットプロセッサのサイクル精
度の命令セットシミュレーションを導出する方法が実現
される。この方法は、メモリとキャッシュの間の相互作
用をデータバス上の信号のシーケンスとしてモデル化す
ることを含む。ここで、ターゲットプロセッサは、メモ
リオペレーションの完了を待機することによってキャッ
シュがロードされるまでストールされる。さらに、この
方法は、ターゲットプロセッサの内部データフローモデ
ルから導出される信号のシーケンスを用いるとともに、
内部バス幅およびタイミングを用いて、命令パイプライ
ンを充填して、適当なクロックサイクル数だけ遅延を行
うことを含む。さらに、この方法は、ターゲットプロセ
ッサの命令デコードサイクルを実行して、実行のために
利用可能な命令を解釈することを含む。さらに、この方
法は、スケジューリングされた命令がパイプライン切断
をインプリメントしているかどうかを判定し、スケジュ
ーリングされた命令がパイプライン切断をインプリメン
トしている場合、将来の命令のためにスケジューラをス
トールさせることを含む。さらに、この方法は、スケジ
ューリングされた命令を、適当な命令パイプラインまた
はハードウェアコンポーネントに転送し、各命令ごとに
サイクル実行時間を計算することを含む。さらに、この
方法は、非決定性タイミングがあるかどうかを判定す
る。さらに、この方法は、計算された実行サイクルの終
端で利用可能な結果を出力することを含む。さらに、こ
の方法は、ターゲットプロセッサのエミュレートされた
制御レジスタとともに、信号インタフェースを用いて、
割込みハンドラが次のサイクルにスケジューリングされ
るべきかどうかを決定することを含む。According to a sixth aspect of the present invention, there is provided a method for deriving a cycle-accurate instruction set simulation of a target processor for verification of a system including an electronic circuit and a control program for controlling the electronic circuit. Is done. The method involves modeling the interaction between the memory and the cache as a sequence of signals on a data bus. Here, the target processor is stalled until the cache is loaded by waiting for the completion of the memory operation. Further, the method uses a sequence of signals derived from an internal data flow model of the target processor,
Using the internal bus width and timing to fill the instruction pipeline and delay by the appropriate number of clock cycles. Further, the method includes performing an instruction decode cycle of the target processor to interpret instructions available for execution. Further, the method determines whether the scheduled instruction implements pipeline disconnection, and if the scheduled instruction implements pipeline disconnection, causes the scheduler to stall for future instructions. including. Further, the method includes transferring the scheduled instructions to an appropriate instruction pipeline or hardware component and calculating a cycle execution time for each instruction. Further, the method determines whether there is non-deterministic timing. Further, the method includes outputting the results available at the end of the calculated execution cycle. Further, the method uses a signal interface, along with an emulated control register of the target processor,
Including determining whether the interrupt handler should be scheduled for the next cycle.
【0038】本発明の上記の特徴およびその他の利点
は、以下の詳細な説明から、また、添付図面を参照し
て、明らかとなる。The above features and other advantages of the present invention will be apparent from the following detailed description and with reference to the accompanying drawings.
【0039】[0039]
【発明の実施の形態】本発明の特徴について説明する前
に、本発明の理解を助けるため、および、さまざまな用
語の意味を提示するために、従来技術に関していくつか
の詳細な事項について説明する。DESCRIPTION OF THE PREFERRED EMBODIMENTS Before describing the features of the present invention, some detailed matters will be described with respect to the prior art to assist in understanding the present invention and to present the meaning of various terms. .
【0040】本明細書において、「コンピュータシステ
ム」という用語は、可能な限り最も広い意味を含み、独
立(スタンドアローン)のプロセッサ、ネットワーク化
されたプロセッサ、メインフレームプロセッサ、および
クライアント/サーバ関係にあるプロセッサを含むが、
これらに限定されない。「コンピュータシステム」とい
う用語は、少なくともメモリおよびプロセッサを含むも
のと理解されるべきである。一般に、メモリは、いろい
ろなときに、実行可能プログラムコードの少なくとも一
部を格納し、プロセッサは、その実行可能プログラムコ
ードを構成する命令を実行する。As used herein, the term "computer system" has the broadest possible meaning and refers to a stand-alone processor, a networked processor, a mainframe processor, and a client / server relationship. Including the processor,
It is not limited to these. The term "computer system" should be understood to include at least a memory and a processor. Generally, a memory will, at various times, store at least a portion of the executable program code, and a processor will execute the instructions that make up the executable program code.
【0041】本明細書において、「組込みコンピュータ
システム」という用語は、組込み中央プロセッサとオブ
ジェクトコード命令を有するメモリとからなるが、これ
に限定されない。組込みコンピュータシステムの例に
は、携帯情報端末(PDA)、セルラ電話機およびディ
ジタルカメラがあるが、これらに限定されない。一般
に、どんなに原始的であっても、中央プロセッサを用い
てその機能を制御する機器は、組込みコンピュータシス
テムを有するということができる。組込み中央プロセッ
サは、メモリに格納されたオブジェクトコード命令を実
行する。組込みコンピュータシステムは、キャッシュメ
モリ、入出力デバイスおよびその他の周辺装置を有する
ことが可能である。As used herein, the term "embedded computer system" comprises, but is not limited to, an embedded central processor and a memory having object code instructions. Examples of embedded computer systems include, but are not limited to, personal digital assistants (PDAs), cellular telephones, and digital cameras. In general, no matter how primitive, equipment that uses a central processor to control its functions can be said to have an embedded computer system. The embedded central processor executes the object code instructions stored in the memory. Embedded computer systems can have cache memory, input / output devices, and other peripheral devices.
【0042】理解されるように、「所定オペレーショ
ン」という用語および「コンピュータシステムソフトウ
ェア」という用語は、本明細書の目的では、実質的に同
じものを意味する。本発明の実施にとって、メモリおよ
びプロセッサが物理的に同じ場所に位置する必要はな
い。すなわち、プロセッサおよびメモリが物理的に異な
る装置にあることや、地理的に異なる場所にあることも
予期される。As will be appreciated, the terms "predetermined operation" and "computer system software" mean, for the purposes of this specification, substantially the same. The practice of the present invention does not require that the memory and the processor be physically co-located. That is, it is anticipated that the processor and the memory will be in physically different devices and will be in different geographic locations.
【0043】本明細書において、当業者には理解される
ように、「媒体」あるいは「コンピュータ可読媒体」
は、ディスケット、テープ、コンパクトディスク、集積
回路、カートリッジ、通信回線を通じてのリモート伝
送、あるいはその他の同様の、コンピュータが使用可能
な媒体を含むことが可能である。例えば、コンピュータ
システムソフトウェアを分散させるため、供給業者(サ
プライや)は、ディスケットを提供することも可能であ
り、また、衛星伝送、直接電話リンク、あるいはインタ
ーネットを通じて何らかの形で所定オペレーションを実
行する命令を伝送することも可能である。As used herein, as will be understood by those skilled in the art, "medium" or "computer-readable medium"
May include diskettes, tapes, compact disks, integrated circuits, cartridges, remote transmissions over communication lines, or other similar computer-usable media. For example, to distribute computer system software, a supplier (or supply) can provide a diskette and provide instructions to perform some operation in any way through a satellite transmission, a direct telephone link, or the Internet. It is also possible to transmit.
【0044】コンピュータシステムソフトウェアは、デ
ィスケットに「書き込まれる」ことも、集積回路に「格
納される」ことも、通信回線を通じて「伝送される」こ
とも可能であるが、理解されるように、本明細書の目的
では、コンピュータ使用可能媒体は、所定オペレーショ
ンを実行する命令を「有する」ということにする。すな
わち、「有する」という用語は、所定オペレーションを
実行するための命令がコンピュータ使用可能媒体に関わ
る上記およびすべての等価な方法を含むことを意図する
ものである。As will be appreciated, the computer system software can be "written" on a diskette, "stored" on an integrated circuit, or "transmitted" over a communications line. For the purposes of the specification, computer-usable media will “have” instructions that perform certain operations. That is, the term “comprising” is intended to include the above and all equivalent methods of performing instructions for performing a given operation involving a computer-usable medium.
【0045】したがって、簡単のため、「プログラム製
品」という用語は、以下、任意の形式で所定オペレーシ
ョンを実行するための命令を有する(上記で定義)コン
ピュータ使用可能媒体を指すために用いられる。Thus, for simplicity, the term "program product" is used hereinafter to refer to a computer-usable medium (as defined above) that has instructions for performing a given operation in any form.
【0046】次に、添付図面を参照して、本発明の特徴
の詳細な説明を行う。Next, the features of the present invention will be described in detail with reference to the accompanying drawings.
【0047】VHDLプロセスと、軽量オペレーティン
グシステムで実行されるプロセスとの間の顕著な類似性
のため、VHDLプロセスを、個別のソフトウェアプロ
セスとして、軽量オペレーティングシステムを用いて書
き、イベントをスケジューリングすることが可能とな
る。好ましくは、軽量オペレーティングシステムは、メ
ッセージによるプロセス間通信を提供する小さいマイク
ロカーネルをもとに構築される。メッセージは、関連す
るパラメータを有するオペレーションコードであり、上
記の項目3aのイベント駆動モデルを表現する。好まし
くは、メッセージは、プロセス間で受渡しされるシステ
ム構造体にマッピングされるグローバルデータ定義であ
る。イベントのセマンティクスはアプリケーションによ
って定義される。この場合、プロセス間メッセージは、
VHDL信号値の変化についてプロセスに通知するため
に用いられることも可能である。好ましくは、軽量オペ
レーティングシステムは、信号線、アドレスバス、デー
タバスおよびクロック分配方式が少数の基本メッセージ
から構築されることを可能にする一群のメッセージプリ
ミティブを提供する。好ましくは、マイクロカーネルコ
アによって供給されるメッセージに加えて、プロセス
は、アプリケーション固有のインタフェースをインプリ
メントするために自己のメッセージコードおよびパラメ
ータを定義することも可能である。その場合、このイン
タフェースは、共有ライブラリにインプリメントされた
ルーチンコールのセットにまとめられる。Because of the significant similarity between VHDL processes and processes running on lightweight operating systems, writing VHDL processes as separate software processes using the lightweight operating system and scheduling events is a good idea. It becomes possible. Preferably, the lightweight operating system is built on a small microkernel that provides message-to-process communication. The message is an operation code having related parameters, and expresses the event-driven model of item 3a described above. Preferably, the message is a global data definition that maps to a system structure passed between processes. Event semantics are defined by the application. In this case, the interprocess message is
It can also be used to notify processes about changes in VHDL signal values. Preferably, the lightweight operating system provides a set of message primitives that allow signal lines, address buses, data buses and clock distribution schemes to be built from a small number of basic messages. Preferably, in addition to the messages provided by the microkernel core, a process can also define its own message codes and parameters to implement an application-specific interface. In that case, this interface is organized into a set of routine calls implemented in the shared library.
【0048】次に、図2を参照して、電子回路と、その
回路をターゲットとするソフトウェアとのコバリデーシ
ョンを行う本発明の特徴について簡単に説明する。電子
回路および制御プログラムは、軽量コンピュータシステ
ムオペレーティング環境で実行される所定のコンピュー
タ言語を用いてシミュレートされる。S0900で、1
つまたは複数の回路記述言語によってモデル化された、
コンピュータハードウェアの動作の要素を、選択された
軽量オペレーティングシステムの構文およびメソッドに
翻訳する。S1000で、電子回路設計の動作記述を、
軽量コンピュータシステムオペレーティング環境をター
ゲットとする前記構文からなるソフトウェアモデルに翻
訳する。S1100で、電子回路設計をターゲットとす
る制御プログラムの部分を命令セットシミュレーション
が実行するように、命令セットシミュレータを所定のコ
ンピュータ言語で構成する。S1200で、電子回路設
計のソフトウェアモデルを命令セットシミュレーション
に結合して、軽量コンピュータオペレーティングシステ
ム環境で実行される試験対象システムを作成する。最後
に、S1300で、試験対象システムに刺激を入力する
ことにより、試験対象システムに結果を出力させる。Next, with reference to FIG. 2, a brief description will be given of a feature of the present invention for performing validation of an electronic circuit and software targeting the circuit. Electronic circuits and control programs are simulated using a predetermined computer language running in a lightweight computer system operating environment. In S0900, 1
Modeled by one or more circuit description languages,
Translate the elements of operation of the computer hardware into the syntax and methods of the selected lightweight operating system. In S1000, the operation description of the electronic circuit design is
Translate into a software model consisting of the above syntax targeting a lightweight computer system operating environment. In S1100, an instruction set simulator is configured in a predetermined computer language so that an instruction set simulation executes a part of a control program targeted for electronic circuit design. At S1200, a software model of an electronic circuit design is combined with an instruction set simulation to create a system under test that executes in a lightweight computer operating system environment. Finally, in S1300, the stimulus is input to the test target system, thereby causing the test target system to output the result.
【0049】次に、電子回路および制御プログラムのコ
バリデーションを行う本発明の特徴についてさらに詳細
に説明する。Next, the features of the present invention for validating an electronic circuit and a control program will be described in more detail.
【0050】ステップS0900では、ハードウェア記
述言語を調べる。好ましくはVHDL言語がモデル化さ
れるが、本発明の方法および応用は、特定の言語や特定
の軽量オペレーティングシステムに限定されない。動作
レベルVHDLの制御フローおよび様式は、以下の具体
的な点でCに容易にマッピングすることが可能である。In step S0900, a hardware description language is checked. Although the VHDL language is preferably modeled, the methods and applications of the present invention are not limited to a particular language or a particular lightweight operating system. The control flow and style of the behavior level VHDL can be easily mapped to C in the following specific points.
【0051】VHDLの変数はCの変数に似ている。そ
の値は、制御がプロセスを離れて戻ってきたときにも保
持されている。しかし、その名前のスコープは、それが
インスタンス化されたプロセスについてローカルであ
る。したがって、本発明は、VHDLの変数をCのスタ
ティック変数で置き換える。ビットベクタ型は、32ビ
ット幅(32ビットプロセッサで動作する処理系の場
合)までは、Cの符号なし整数型に含めることができ
る。個別ビットアクセスおよびスライス演算はいずれ
も、シフトおよびマスク演算で実行することができる。The variables in VHDL are similar to the variables in C. That value is retained when control returns from the process. However, the scope of that name is local to the process in which it was instantiated. Therefore, the present invention replaces VHDL variables with C static variables. The bit vector type can be included in the unsigned integer type of C up to a 32-bit width (in the case of a processing system operated by a 32-bit processor). Both the individual bit access and the slice operation can be executed by shift and mask operations.
【0052】信号は、プロセス間で値を送信するために
用いられる。信号の値のスコープは、システム全体を通
じてグローバルであるが、その名前は、特定のプロセス
についてローカルである。本発明では、プロセスの複数
のコピーを、それぞれ相異なる信号(例えば、UART_A_C
hip_Select、UART_B_Chip_Select)にアクセスする同一
のローカル信号名(例えば、Chip_Select)でインスタ
ンス化することが可能である。「0」や「1」のような
単純な信号値と、スライス値とは、マシン内のビットパ
ターンとして容易に表現される。VHDLは、用いられ
る電気的モデルに依存して、「Z」や「W」のようなこ
の範囲外の論理値をサポートする。Signals are used to transmit values between processes. The scope of signal values is global throughout the system, but its name is local to a particular process. In the present invention, multiple copies of a process are represented by different signals (eg, UART_A_C
hip_Select, UART_B_Chip_Select) can be instantiated with the same local signal name (eg, Chip_Select). Simple signal values such as "0" or "1" and slice values are easily represented as bit patterns in the machine. VHDL supports logic values outside this range, such as "Z" or "W", depending on the electrical model used.
【0053】個々のVHDLプロセスは、一定のナノ秒
数の間、または、その信号に関する条件のセットが満た
されるまで、その実行をサスペンドすることが可能であ
る。VHDLプロセスが「動作可能」であるための条件
を決定することは、言語構文のマッピングにおいてイン
プリメントされなければならない機能の1つである。An individual VHDL process can suspend its execution for a fixed number of nanoseconds, or until a set of conditions on the signal is satisfied. Determining the conditions for a VHDL process to be "operable" is one of the functions that must be implemented in language syntax mapping.
【0054】また、VHDL言語は、ハードウェアの実
行のフローを制御する構文を提供する。これは、軽量オ
ペレーティングシステムによって用いられるプログラミ
ング言語(この場合はC)の等価な構文にマッピングさ
れなければならない。The VHDL language provides a syntax for controlling the flow of hardware execution. This must be mapped to the equivalent syntax of the programming language (in this case, C) used by the lightweight operating system.
【0055】好ましくは、シミュレーションシステム内
の中央プロセスは、各信号の値を追跡すること、およ
び、その値をモニタするプロセス間に信号変化を分配す
ることの処理を行う。以下の説明でこのプロセスに言及
するときには、「ファブリック」プロセスと呼ぶことに
する。本発明は、軽量オペレーティングシステムのメッ
セージ受渡しオペレーションを用いて、プロセス間で、
信号値の変化やその他の構文の受渡しを行う。例え
ば、"wait for N ns"(Nナノ秒ウェイト)というVH
DL構文は、次のような2つのユーザ定義パラメータを
有するメッセージにより表現される。 Msg WAITFOR{int CLOCKT; int TICKS;} TICKSパラメータは、VHDLにおけるNパラメータか
らナノ秒数を提供し、CLOCKTパラメータは、クロック相
対同期ポイントを提供する。Preferably, a central process in the simulation system is responsible for tracking the value of each signal and distributing signal changes among the processes that monitor that value. When referring to this process in the following description, it will be referred to as the "fabric" process. The present invention uses a lightweight operating system message passing operation to process
Change signal values and pass other syntax. For example, the VH "wait for N ns" (N nanosecond wait)
The DL syntax is expressed by a message having the following two user-defined parameters. Msg WAITFOR {int CLOCKT; int TICKS;} The TICKS parameter provides the number of nanoseconds from the N parameter in VHDL, and the CLOCKT parameter provides the clock relative synchronization point.
【0056】メッセージインタフェースは、アプリケー
ションコードに直接には現れない。すべての相互作用
は、マイクロカーネルコア機能を呼び出す共有ライブラ
リルーチンを通じてなされる。The message interface does not appear directly in the application code. All interactions are through shared library routines that call the microkernel core functions.
【0057】信号は文字列を用いて命名されるが、opaq
ue型ポインタを用いて参照される。以下のインタフェー
スルーチンは、信号名と参照の間のマッピングをインプ
リメントする。さらに、このインタフェースは、信号値
の変化について中央制御プロセッサに通知し、信号の値
の変化をウェイトする、共有ライブラリルーチンを含
む。Although signals are named using character strings, opaq
Referenced using ue type pointer. The following interface routines implement the mapping between signal names and references. In addition, the interface includes a shared library routine that notifies the central control processor about changes in signal values and waits for changes in signal values.
【0058】・void *fabinit(void): このルーチン
は、中央制御プロセスインタフェースライブラリを初期
化する。このルーチンは、信号メンテナを使用すること
になる各プロセスによって1回呼び出されなければなら
ない。Void * fabinit (void): This routine initializes the central control process interface library. This routine must be called once by each process that will use the signal maintainer.
【0059】・void *fabric_find_signal(char *SIGNA
L): このルーチンは、(グローバルに命名された)SI
GNALパラメータを参照するために使用可能なopaque型ポ
インタを返す。このルーチンは、すべての登録された名
前に対する文字列比較を実行し、信号参照が存在すれば
それを返す。信号がリスト内にまだない場合、初期値0
で作成される。このようにして、プロセスは、特定の順
序でインスタンス化あるいは初期化されることは不要で
ある。Void * fabric_find_signal (char * SIGNA
L): This routine uses the (globally named) SI
Returns an opaque pointer that can be used to refer to GNAL parameters. This routine performs a string comparison on all registered names and returns the signal reference, if one exists. Initial value 0 if the signal is not already in the list
Created with In this way, the processes need not be instantiated or initialized in a particular order.
【0060】・uint fabric_read_signal(void *SYM):
このルーチンは、opaque型SYMパラメータによって参
照される信号の現在値を、もしそれが定義された(すな
わち、非浮遊トライステート)値を有していれば、返
す。Uint fabric_read_signal (void * SYM):
This routine returns the current value of the signal referenced by the opaque type SYM parameter, if it has a defined (ie, non-floating tri-state) value.
【0061】・void fabric_set_clock(char *NAME, in
t INITIAL, int PERIOD): このルーチンは、このプロ
セスに対する同期オペレーションで用いられるクロック
信号を定義する。このルーチンは、ファブリックプロセ
ス内への共有ライブラリ呼出しであり、ファブリックプ
ロセスがすべての遷移を内部的に処理する。INITIALパ
ラメータは、信号の開始値(通常0)を指定し、PERIOD
パラメータは、遷移間の間隔(すなわち、クロック周期
の半分)を質する。これは信号を定義するため、クロッ
クはグローバルであり、複数のプロセスが同じくロック
を共有することができる。・ Void fabric_set_clock (char * NAME, in
t INITIAL, int PERIOD): This routine defines the clock signal used in synchronization operations for this process. This routine is a shared library call into the fabric process, which handles all transitions internally. The INITIAL parameter specifies the starting value of the signal (usually 0),
The parameters characterize the interval between transitions (ie, half a clock period). Since this defines a signal, the clock is global and multiple processes can also share a lock.
【0062】・void fabric_tristate(void *SYM, int
VALUE): このルーチンは、IEEE論理システムの拡
張値の設定およびそれとの比較を可能にする多値論理信
号をサポートする。・ Void fabric_tristate (void * SYM, int
VALUE): This routine supports multi-valued logic signals that allow setting and comparison of extended values of the IEEE logic system.
【0063】・void fabric_write_signal(void *SYM,
uint VALUE): このルーチンは、opaque型ポインタSYM
によって参照される信号の値をVALUEにセットする。Void fabric_write_signal (void * SYM,
uint VALUE): This routine uses the opaque pointer SYM
Set the value of the signal referenced by to VALUE.
【0064】ファブリックプロセスは、信号が、単純な
2値ドメイン内で作用しているか、それとも、多値論理
を使用しているかを知らなければならない。このドメイ
ンは、システムにわたり信号変化を送信するために用い
られるインタフェースルーチンによって決定され、処理
系は、多値論理ドメインが表現されることを可能にす
る。それぞれの多値論理ドメインに要求される拡張値の
表現を含む個々のCヘッダファイル(例えば、ieee.h)
は、個々の論理ドメインをカプセル化することが可能で
ある(例えば、std_logicパッケージ)。The fabric process must know whether the signal is working in a simple binary domain or uses multi-valued logic. This domain is determined by the interface routines used to send signal changes across the system, and the implementation allows the multi-valued logic domain to be represented. An individual C header file (eg, ieee.h) that contains the required extended value representation for each multi-valued logical domain
Can encapsulate individual logical domains (eg, the std_logic package).
【0065】以下の形のWaitルーチンはすべて、CLOCKT
パラメータに次の3つの値のうちの1つをとる。0は、
非同期オペレーションを意味する(指定された条件が満
たされるとすぐにプロセスをスケジューリングする)。
−1は、条件がプロセスのクロック信号の立下り端で満
たされる場合にプロセスをスケジューリングし、+1
は、条件がプロセスのクロック信号の立上り端で満たさ
れる場合にプロセスをスケジューリングする。All Wait routines of the form
The parameter takes one of the following three values: 0 is
Refers to an asynchronous operation (scheduling a process as soon as specified conditions are met).
-1 schedules the process if the condition is met at the falling edge of the process clock signal, +1
Schedules a process if the condition is met at the rising edge of the clock signal of the process.
【0066】・void WaitClk(int CLOCKT): このルー
チンは、(CLOCKTパラメータに従って)そのクロックの
次の立上りまたは立下り端まで、現在のプロセスをサス
ペンドする。 ・void WaitForc(uint TICKS, int CLOCKT): このル
ーチンは、TICKS個のクロックティックの間、現在のプ
ロセスをサスペンドする。 ・void WaitUntilc(void *SYM, int OP, uint VALUE, i
nt CLOCKT) ・void WaitUntil2c(void *SYM1, int OP1, uint VALUE
1, void *SYM2, int OP2, uint VALUE2, int CLOCKT) ・void WaitUntil3c(void *SYM1, int OP1, uint VALUE
1, void *SYM2, int OP2, uint VALUE2, void *SYM3, i
nt OP3, uint VALUE3, int CLOCKT): これらのルーチ
ンは、1、2または3個の条件のうちのいずれか1つ以
上が(同時に)真になるのをウェイトする。それぞれの
条件は、信号SYM、オペレーションOPおよびVALUEであ
る。例えば、"EQ"オペレーションは、SIGNALとVALUEの
間の等値性をテストするために用いられる。Void WaitClk (int CLOCKT): This routine suspends the current process until the next rising or falling edge of that clock (according to the CLOCKT parameter). Void WaitForc (uint TICKS, int CLOCKT): This routine suspends the current process for TICKS clock ticks.・ Void WaitUntilc (void * SYM, int OP, uint VALUE, i
nt CLOCKT) void voidUntil2c (void * SYM1, int OP1, uint VALUE
1, void * SYM2, int OP2, uint VALUE2, int CLOCKT) ・ void WaitUntil3c (void * SYM1, int OP1, uint VALUE
1, void * SYM2, int OP2, uint VALUE2, void * SYM3, i
nt OP3, uint VALUE3, int CLOCKT): These routines wait for one or more of one, two or three conditions to be true (simultaneously). Each condition is signal SYM, operation OP and VALUE. For example, the "EQ" operation is used to test for equality between SIGNAL and VALUE.
【0067】上記のルーチンは、プロセス間メッセージ
を形成し、それをファブリックプロセスに送る。このコ
ントローラプロセスは、信号に対するすべての変化を追
跡し、イベントをウェイトしているプロセスをいつ呼び
起こすかを決定する。The above routine forms an inter-process message and sends it to the fabric process. This controller process keeps track of all changes to the signal and determines when to wake up the process waiting for the event.
【0068】これらのルーチンは、共有ライブラリにイ
ンプリメントされ、Cヘッダファイルを通じてエクスポ
ートされた。また、ヘッダファイルは、ファブリックプ
ロセスによって管理されるグローバルナノ秒ティックカ
ウンタもエクスポートするため、個々のプロセスからの
トレース出力は、現在のタイムスタンプでタグ付けされ
ることが可能である。These routines were implemented in a shared library and exported through a C header file. The header file also exports a global nanosecond tick counter managed by the fabric process so that trace output from individual processes can be tagged with the current timestamp.
【0069】図3を参照すると、本発明は、それぞれの
信号名を前処理する。S1010で、それぞれの信号に
対して、本発明は、名前にプレフィクス句"signal_"を
付けることによって、内部変数を生成する。したがっ
て、信号CHIP_SELECTへのopaque型ポインタは"static v
oid *signal_CHIP_SELECT"となる。その後、この新しい
信号名は、プロセスがインスタンス化されるときに、信
号参照に結合される。インスタンス化された信号名がそ
の信号名と同一である必要はない。例えば、signal_CHI
P_SELECTは次のようにインスタンス化されることも可能
である。 signal_CHIP_SELECT=fabric_find_signal("UART_A_CHIP
_SELECT"); VHDLの本体で、プリプロセッサは、信号CHIP_SELEC
Tへの参照を、変数signal_CHIP_SELECTを参照するよう
に修正する。インスタンス化されるとき、変数signal_C
HIP_SELECTは、UART_A_CHIP_SELECT信号に結合される。Referring to FIG. 3, the present invention pre-processes each signal name. In S1010, for each signal, the present invention generates an internal variable by prefixing the name with the prefix phrase "signal_". Therefore, the opaque pointer to the signal CHIP_SELECT is "static v
oid * signal_CHIP_SELECT ". This new signal name is then combined with the signal reference when the process is instantiated. The instantiated signal name does not need to be the same as the signal name, for example , Signal_CHI
P_SELECT can also be instantiated as follows: signal_CHIP_SELECT = fabric_find_signal ("UART_A_CHIP
_SELECT "); In the main body of VHDL, the preprocessor uses the signal CHIP_SELEC
Modify the reference to T to refer to the variable signal_CHIP_SELECT. When instantiated, the variable signal_C
HIP_SELECT is coupled to the UART_A_CHIP_SELECT signal.
【0070】S1015で、前処理すべき信号名がさら
にあるかどうかを判定する。ある場合、S1018で、
前処理すべき次の信号名を取得し、プロセス制御フロー
はS1010に戻って、信号名の前処理を続ける。ない
場合、プロセス制御フローはS1020に進む。In S1015, it is determined whether or not there are more signal names to be preprocessed. If there is, in S1018,
The next signal name to be preprocessed is obtained, and the process control flow returns to S1010 to continue the preprocessing of the signal name. If not, the process control flow proceeds to S1020.
【0071】図3を参照して、プロセス制御フローがS
1020〜S1060に到達すると、どのタイプの動作
言語構文が用いられているか、および、その動作言語
を、軽量コンピュータオペレーティングシステムをター
ゲットとする構文にどのように翻訳するかについて判定
を行う。好ましくは、使用される動作言語はVHDLで
あり、翻訳のために用いられる構文はCベースのもので
ある。Referring to FIG. 3, the process control flow is S
Upon reaching 1200-S1060, a determination is made as to what type of operating language syntax is being used and how to translate that operating language into a syntax targeted at a lightweight computer operating system. Preferably, the operating language used is VHDL and the syntax used for translation is C-based.
【0072】S1020で、翻訳されるべき動作言語構
文が内部変数への代入であるかどうかを判定する。内部
変数への代入である場合、プロセス制御フローはS10
25に進む。内部変数への代入でない場合、プロセス制
御フローはS1030に進む。In S1020, it is determined whether the operation language syntax to be translated is an assignment to an internal variable. If the assignment is to an internal variable, the process control flow is S10
Proceed to 25. If not, the process control flow proceeds to S1030.
【0073】S1025で、VHDL代入からC代入へ
の翻訳が次のように行われる。 VHDL: i_word := 1; C: static uint i_word; i_word = 1; この翻訳の終了後、プロセス制御フローはS1020に
戻る。In S1025, translation from VHDL substitution to C substitution is performed as follows. VHDL: i_word: = 1; C: static uint i_word; i_word = 1; After this translation, the process control flow returns to S1020.
【0074】S1030で、翻訳されるべき動作言語構
文が外部変数への代入であるかどうかを判定する。外部
変数への代入である場合、プロセス制御フローはS10
35に進む。外部変数への代入でない場合、プロセス制
御フローはS1040に進む。In S1030, it is determined whether or not the operation language syntax to be translated is an assignment to an external variable. If the assignment is to an external variable, the process control flow is S10
Proceed to 35. If not, the process control flow proceeds to S1040.
【0075】ほとんどのインタフェースルーチンは、V
HDL−C翻訳が読みやすくかつ理解しやすくなるよう
に設計されたプリプロセッサマクロを通じてアクセスさ
れる。これらのマクロは、信号名と変数名の間の変換を
処理する。以下のマクロにおいて、"signal"はVHDL
信号の名前を意味する。これらの名前は、上記のopaque
型参照へと前処理される。 ・uint GetSignal(signal NAME): このマクロは、NAM
Eという信号の現在値を返す。 ・void Signal(signal NAME, uint VALUE): このマク
ロは、NAMEという信号のVALUEをその(32ビットの)
値にセットする。 ・void SignalZ(signal NAME): このマクロは、NAME
という信号の値をIEEEのZ値にセットする。Most interface routines use V
HDL-C translations are accessed through preprocessor macros designed to be easy to read and understand. These macros handle the conversion between signal names and variable names. In the following macro, "signal" is VHDL
Means the name of the signal. These names are opaque above
Preprocessed to type references.・ Uint GetSignal (signal NAME): This macro is NAM
Returns the current value of the signal E.・ Void Signal (signal NAME, uint VALUE): This macro converts the value of the signal NAME to its (32-bit)
Set to a value.・ Void SignalZ (signal NAME): This macro is called NAME
Is set to the IEEE Z value.
【0076】S1035で、VHDL代入から外部信号
への翻訳が次のように行われる。 VHDL: a_busp <= '0'; マクロ: Signal(a_busp, 0); C: fabric_write_signal(signal_a_busp, 0); 生成される代入は、ランタイムインタフェースを通じて
ファブリックプロセスへの呼出しを生成することにな
る。この翻訳の終了後、プロセス制御フローはS102
0に戻る。At S1035, translation from VHDL substitution to an external signal is performed as follows. VHDL: a_busp <= '0'; Macro: Signal (a_busp, 0); C: fabric_write_signal (signal_a_busp, 0); The generated assignment will generate a call to the fabric process through the runtime interface. After this translation is completed, the process control flow goes to S102.
Return to 0.
【0077】S1040で、翻訳されるべき動作言語構
文がウェイトポイントであるかどうかを判定する。ウェ
イトポイントである場合、プロセス制御フローはS10
45に進む。外部変数への代入でない場合、プロセス制
御フローはS1050に進む。外部信号への代入と同様
に、ウェイトポイントは、次のようなプリプロセッサマ
クロを用いたインタフェース呼出しにマッピングされ
る。 ・void WaitClk{F|R}(void): これらのマクロはそ
れぞれ、プロセスクロック信号の次の立上りまたは立下
り端をウェイトする。 ・void WaitFor{F|R}(uint TICKS): これらのマク
ロは、TICKSナノ秒間ウェイトする。プロセスは、その
ティックにおける、または、次の適当なクロック遷移に
おける実行のためにスケジューリングされる。 ・void WaitUntil{F|R}(signal NAME, int OP, uint
VALUE) ・void WaitUntil2{F|R}(signal NAME, int OP, uint
VALUE, signal NAME2, int OP2, uint VALUE2) ・void WaitUntil3{F|R}(signal NAME, int OP, uint
VALUE, signal NAME2, int OP2, uint VALUE2, signal
NAME3, int OP3, uint VALUE3): これらのマクロ
は、ある条件が1、2、または3個の信号に現れるまで
プロセスがウェイトすること、および、要求されるクロ
ック同期に従ってプロセスがスケジューリングされるこ
とを可能にする。In S1040, it is determined whether or not the operation language syntax to be translated is a weight point. If it is a wait point, the process control flow is S10
Proceed to 45. If not, the process control flow proceeds to S1050. Similar to the assignment to the external signal, the weight point is mapped to an interface call using the following preprocessor macro. Void WaitClk {F | R} (void): Each of these macros waits for the next rising or falling edge of the process clock signal. • void WaitFor {F | R} (uint TICKS): These macros wait for TICKS nanoseconds. The process is scheduled for execution at that tick or at the next appropriate clock transition.・ Void WaitUntil {F | R} (signal NAME, int OP, uint
VALUE) ・ void WaitUntil2 {F | R} (signal NAME, int OP, uint
VALUE, signal NAME2, int OP2, uint VALUE2) ・ void WaitUntil3 {F | R} (signal NAME, int OP, uint
VALUE, signal NAME2, int OP2, uint VALUE2, signal
NAME3, int OP3, uint VALUE3): These macros indicate that a process waits until a condition appears on one, two, or three signals, and that the process is scheduled according to the required clock synchronization. enable.
【0078】S1045で、VHDL構文の翻訳は次の
ように行われる。 VHDL: wait until (startn = '0'); マクロ: WaitUntil(startn, EQ, 0); C: WaitUntilc(signal_startn, EQ, 0, 0); ウェイトポイントの翻訳の終了後、プロセス制御フロー
はS1020に戻る。At S1045, the translation of the VHDL syntax is performed as follows. VHDL: wait until (startn = '0'); Macro: WaitUntil (startn, EQ, 0, 0); C: WaitUntilc (signal_startn, EQ, 0, 0); Return.
【0079】S1050で、VHDL制御構文が、等価
なC言語オペレーションに翻訳される。この翻訳は、追
加のインタフェース呼出しを含むことがある。例とし
て、'if'制御構文の翻訳は次のように行われる。 VHDL: if (resetn = '0') then マクロ: if (GetSignal(resetn) == 0) { C: if (fabric_read_signal(signal_resetn) == 0)
{ 制御構文の翻訳の終了後、プロセス制御フローはS10
20に戻る。At S1050, the VHDL control syntax is translated into equivalent C language operations. This translation may include additional interface calls. As an example, the translation of the 'if' control syntax is performed as follows. VHDL: if (resetn = '0') then Macro: if (GetSignal (resetn) == 0) {C: if (fabric_read_signal (signal_resetn) == 0)
後 After the translation of the control syntax, the process control flow goes to S10
Return to 20.
【0080】図4を参照すると、S1060で、翻訳す
る必要のある動作言語構文がさらにあるかどうかを判定
する。さらにある場合、プロセス制御フローはS102
0に進む。さらにない場合、変換プロセスは完了する。Referring to FIG. 4, at S1060, it is determined whether there is any more operating language syntax that needs to be translated. If there is more, the process control flow is S102
Go to 0. If not, the conversion process is complete.
【0081】これらの少数の基本変換により、動作VH
DLコードをCに翻訳し、そのコードをコンパイルし、
軽量オペレーティングシステム用にそれをリンクするこ
とが可能である。CとVHDLの間のマッピングは一対
一であり可逆であるため、もとの設計がVHDLで定式
化されているか、それとも、翻訳可能Cで定式化されて
いるかで、シミュレーションには差がない。翻訳が正し
く実行される限り、結果は同じになる。この翻訳から生
じるCのサブセットは依然として強力なプログラミング
言語である。これは、ポインタ間接参照や高度なデータ
構造体のような特にCPUベースのアルゴリズムを目的
とするいくつかの機能を欠いているが、それ以外の点で
は、ターゲット変更可能設計の出発点として働くことが
可能である。分割がわかったら、個々の解(ハードウェ
アまたはソフトウェア)の機能を十分に活用すべきであ
る。With these few basic conversions, the operation VH
Translate the DL code into C, compile the code,
It is possible to link it for a lightweight operating system. Since the mapping between C and VHDL is one-to-one and reversible, there is no difference in the simulation whether the original design is formulated in VHDL or in translatable C. As long as the translation is performed correctly, the result will be the same. The subset of C that results from this translation is still a powerful programming language. It lacks some features specifically aimed at CPU-based algorithms, such as pointer dereferencing and advanced data structures, but otherwise serves as a starting point for re-targetable designs Is possible. Once the partitioning is known, the functions of the individual solutions (hardware or software) should be fully utilized.
【0082】本発明の特徴によれば、設計のソフトウェ
アコンポーネントは、ターゲットプロセッサの命令セッ
トシミュレータ(ISS:Instruction-Set Simulato
r)を用いてシミュレートすることが可能である。一般
に、このようなシミュレータは、次の3つの要素を有す
る。 1.ターゲットプロセッサのオペレーションおよびレジ
スタのエミュレーション。 2.エミュレートされるプロセッサの状態を表示し、エ
ミュレータのオペレーションを制御する、外部プログラ
ムへのインタフェース、あるいはヒューマンインタフェ
ース。 3.試験対象システムに存在するデバイスを表す外部ハ
ードウェアのエミュレーションへのインタフェース。According to a feature of the present invention, the software component of the design is an instruction-set simulator (ISS) of the target processor.
It is possible to simulate using r). Generally, such a simulator has the following three elements. 1. Emulation of target processor operations and registers. 2. An interface to an external program or human interface that displays the state of the emulated processor and controls the operation of the emulator. 3. Interface to emulation of external hardware that represents the devices present on the system under test.
【0083】シミュレータの高度化と、外部デバイスと
の相互作用とに依存して、結果は、試験対象システムの
基本機能のみを確認することもあり、あるいは、すべて
のプロセスのサイクル精度のシミュレーションを与える
こともある。非サイクル精度のISSの構成を、本発明
の第1の特徴として以下で説明し、本発明のさらに他の
特徴による変形についてはその後説明する。Depending on the sophistication of the simulator and the interaction with external devices, the results may confirm only the basic functions of the system under test or give a simulation of the cycle accuracy of all processes. Sometimes. The configuration of the non-cycle accurate ISS will be described below as a first feature of the present invention, and modifications according to further features of the present invention will be described later.
【0084】要素1は、ソフトウェアが、指定されたア
ーキテクチャによるプロセッサのレジスタをエミュレー
トすることを要求する。このようなレジスタには、汎用
レジスタ、浮動小数点レジスタ、制御レジスタ、およ
び、ユーザソフトウェアから直接にはアクセス可能でな
い「隠れた」レジスタが含まれるが、これらに限定され
ない。さらに、レジスタに対するオペレーションもま
た、そのようなオペレーションによって引き起こされる
ステータスおよびエラー情報の生成を含めて、正しくエ
ミュレートされなければならない。Element 1 requires that the software emulate registers of the processor according to the specified architecture. Such registers include, but are not limited to, general purpose registers, floating point registers, control registers, and “hidden” registers that are not directly accessible from user software. In addition, operations on registers must also be emulated correctly, including the generation of status and error information caused by such operations.
【0085】要素2は、外部エージェントへのインタフ
ェースを要求する。好ましくは、ISSは、非常に単純
なコマンドラインインタフェースを有し、使用されるコ
マンドは、図5に示したテーブル1にリストされてい
る。Element 2 requires an interface to the external agent. Preferably, the ISS has a very simple command line interface and the commands used are listed in Table 1 shown in FIG.
【0086】要素3は、プロセッサに接続されたメモリ
およびその他の外部デバイスのエミュレーションを要求
する。ISSは、2つの方法のうちの一方を用いてロー
カルRAMをエミュレートする。RAMの量が小さい場
合、ホストマシンのローカルメモリが用いられる。そう
でない場合、ディスクスペースを用いて、エミュレート
されるRAMを保持する。これにより、実際のマシンよ
り多くの物理メモリを有するマシンのエミュレーション
が可能となる。また、これは、障害時のメモリの再検討
可能なチェックポイントを提供する。予想されるよう
に、外部ディスクを用いると、シミュレーションはかな
り遅くなる。Element 3 requires emulation of memory and other external devices connected to the processor. The ISS emulates local RAM using one of two methods. If the amount of RAM is small, the local memory of the host machine is used. Otherwise, disk space is used to hold the emulated RAM. This allows emulation of a machine that has more physical memory than an actual machine. This also provides a reviewable checkpoint of the memory in the event of a failure. As expected, using an external disk slows down the simulation considerably.
【0087】ISSが外部ハードウェアに応答するため
には、そのハードウェアのモデルにアクセスすることが
できなければならない。本発明の第1の特徴によれば、
外部ハードウェアの動作を表すモジュールのセットが、
ISS実行可能ファイルにリンクされる。外部デバイス
は、外部グルーロジックを通じてCPUアドレス空間に
マッピングされると仮定され、ある範囲の(非キャッシ
ュ)メモリアドレスがデバイスへのアクセスを引き起こ
すようになる。このアクセス範囲は、ハードウェアコマ
ンドによって定義される。In order for the ISS to respond to external hardware, it must be able to access the model of that hardware. According to a first aspect of the invention,
A set of modules that represent the operation of external hardware
Linked to the ISS executable. External devices are assumed to be mapped into the CPU address space through external glue logic, and a range of (non-cached) memory addresses will cause access to the device. This access range is defined by a hardware command.
【0088】例えば、一般的なUARTインタフェース
は、次の5つの機能を有することが可能である。For example, a general UART interface can have the following five functions.
【0089】・void uart_reset(void): このルーチ
ンは、ハードウェアリセット信号の送信をシミュレート
するために、ISS初期化中に呼び出される。Void uart_reset (void): This routine is called during ISS initialization to simulate sending a hardware reset signal.
【0090】・uint uart_fetch(int ADDRESS, int LEN
GTH): このルーチンは、プロセッサからデバイスへの
リード(読出し)要求をシミュレートする。デバイス
は、その入力アドレスライン上にADDRESSパラメータが
提示されたかのように、LENGTHパラメータによって指定
される適当な数のビットを返さなければならない。Uint uart_fetch (int ADDRESS, int LEN
GTH): This routine simulates a read request from the processor to the device. The device must return the appropriate number of bits specified by the LENGTH parameter, as if the ADDRESS parameter had been presented on its input address line.
【0091】・void uart_store(int ADDRESS, int LEN
GTH, uint VALUE): このルーチンは、プロセッサから
デバイスへのライト(書込み)要求をエミュレートす
る。このルーチンは、ADDRESSパラメータがその入力ア
ドレスラインに提示され、かつ、VALUEパラメータがそ
の入力データラインに提示されたかのように、作用しな
ければならない。LENGTHパラメータは、有効な値のバイ
ト数を指定する。Void uart_store (int ADDRESS, int LEN
GTH, uint VALUE): This routine emulates a write request from the processor to the device. This routine must act as if the ADDRESS parameter were presented on the input address line and the VALUE parameter was presented on the input data line. The LENGTH parameter specifies the number of valid value bytes.
【0092】・void uart_tick(void): このルーチン
は、プロセッサクロックティックごとに呼び出され、デ
ータストリーミングやタイマオペレーションをシミュレ
ートするために使用可能である。Void uart_tick (void): This routine is called every processor clock tick and can be used to simulate data streaming and timer operations.
【0093】・ハードウェアコンポーネントがプロセッ
サへの割込み信号を発生することを可能にする割込み発
生ルーチン。An interrupt generation routine that allows the hardware component to generate an interrupt signal to the processor.
【0094】このエミュレーションは、タイミング情報
を含まない。UARTは、イベントが提示されるのと同
じクロックティック内に応答している。正確なタイミン
グが問題とはならない試験ソフトウェアの場合、この単
純なモデルで十分であった。This emulation does not include timing information. The UART is responding in the same clock tick where the event is presented. For test software where precise timing is not an issue, this simple model was sufficient.
【0095】プロセッサは数百メガヘルツのクロックで
動作することが可能であるが、このような速度は、命令
およびデータがいずれも高速のオンチップキャッシュか
ら来るときにのみ実現される。遅いキャッシュや外部メ
モリにアクセスすると、CPUの見かけのパフォーマン
スは低下することになる。さらに、多くのコデザイン問
題の場合、外部ハードウェアは、オフチップRAMにの
み書込みが可能である。このこともまた、ソフトウェア
設計に対する制約となる。このようなデータにアクセス
するにはデータキャッシュをバイパスしなければならな
い(結果としてそのデータはキャッシュにロードされる
かもしれないが)からである。もちろん、メモリマップ
ドI/Oロケーションへのアクセスもまた、非キャッシ
ュアクセスを通じて行われなければならない。Although a processor can operate with a clock of hundreds of megahertz, such speed is only realized when both instructions and data come from a fast on-chip cache. Accessing a slow cache or external memory will reduce the apparent performance of the CPU. Furthermore, for many co-design problems, external hardware can only write to off-chip RAM. This is also a constraint on software design. Accessing such data requires bypassing the data cache (although the data may be loaded into the cache as a result). Of course, accesses to memory mapped I / O locations must also be made through non-cached accesses.
【0096】しかし、このインタフェースは、コンポー
ネントに対する異なるアクセス時刻をエミュレートしな
い。すべてのメモリトランザクションは、単一サイクル
で完了すると仮定される。However, this interface does not emulate different access times for components. All memory transactions are assumed to be completed in a single cycle.
【0097】基本インタフェースは、必要に応じて個々
の命令エミュレーションから呼び出される次の3つのル
ーチンを通じて提供される。The basic interface is provided through the following three routines that are called from individual instruction emulations as needed.
【0098】・void fetch(iblock *IN, uint ADDRESS
1, int NBYTE, uint *ADDRESS2):このルーチンは、
(エミュレーション)アドレスADDRESS1からNBYTEバイ
トをロードし、それを(マシン)アドレスADDRESS2に格
納(ストア)する。命令ブロックINは、リソーススコア
ボーディングのために用いられる。このルーチンは、キ
ャッシュ可能領域ではデータキャッシュ探索を行い、そ
れ以外ではエミュレートされたRAMやデバイスにアク
セスする。Void fetch (iblock * IN, uint ADDRESS
1, int NBYTE, uint * ADDRESS2): This routine
(Emulation) Load NBYTE bytes from address ADDRESS1 and store them at (machine) address ADDRESS2. The instruction block IN is used for resource score boarding. This routine performs a data cache search in the cacheable area, and otherwise accesses the emulated RAM or device.
【0099】・void ifetch(uint ADDRESS1, int MAX,
int IX): このルーチンは、命令フェッチアルゴリズ
ムをインプリメントする。これは、(エミュレーショ
ン)アドレスADDRESS1から始まるMAX個までのワード
を、インデックスIXから始まる(4ワード)命令パイプ
にロードする。このルーチンは、まず、命令キャッシュ
を探索した後、データが見つからない場合に8ワードキ
ャッシュラインを充填するためにメモリに進む。Void ifetch (uint ADDRESS1, int MAX,
int IX): This routine implements the instruction fetch algorithm. This loads up to MAX words starting at the (emulation) address ADDRESS1 into the instruction pipe starting at index IX (4 words). The routine first searches the instruction cache and then goes to memory to fill the 8-word cache line if no data is found.
【0100】・void store(block *IN, uint ADDRESS,
int NBYTE, uint *VAL): このルーチンは、(マシ
ン)アドレスVALから(エミュレーション)アドレスADD
RESSにNBYTEバイトを書き込む。また、このルーチン
は、キャッシュ可能メモリのためにデータキャッシュを
更新する。命令ブロックポインタINは、スコアボーディ
ングのために用いられる。また、これらのルーチンは、
キャッシュヒット数、キャッシュミス数、および非キャ
ッシュメモリへのアクセス数についての統計を収集す
る。[0100] void store (block * IN, uint ADDRESS,
int NBYTE, uint * VAL): This routine starts at the (machine) address VAL and ends at the (emulation) address ADD
Write NBYTE byte to RESS. This routine also updates the data cache for cacheable memory. The instruction block pointer IN is used for score boarding. These routines also
Collect statistics on cache hits, cache misses, and access to non-cache memory.
【0101】タイミング測定が不要な場合、CPUの最
も単純(かつ最も高速)なシミュレーションは、命令を
1個ずつフェッチおよびデコードし、次の命令に進む前
に各命令の実行を完了することである。インテルI96
0プロセッサチップを例として用いると、ISSは、キ
ャッシュ動作の十分なエミュレーションを提供する。こ
れは、命令キャッシュおよびデータキャッシュの両方を
サポートし、メモリコントローラレジスタ(mcon0〜mco
n15)を用いて、データをキャッシュするかどうかを決
定する。また、このインタフェースは、メモリマップド
ハードウェアデバイスにアクセスするためのアドレス空
間デコーディングも提供する。ルーチンは、ハードウェ
アルーチンのうちの1つ(例えば、uart_fetch)を呼び
出すか、または、直接にRAMエミュレーションにアク
セスする。If timing measurement is not required, the simplest (and fastest) simulation of the CPU is to fetch and decode instructions one at a time and complete execution of each instruction before proceeding to the next instruction. . Intel I96
Using the 0 processor chip as an example, the ISS provides sufficient emulation of cache operations. It supports both instruction and data caches and uses memory controller registers (mcon0-mco
Use n15) to determine whether to cache the data. This interface also provides address space decoding for accessing memory-mapped hardware devices. The routine calls one of the hardware routines (eg, uart_fetch) or accesses RAM emulation directly.
【0102】ISSは、軽量オペレーティングシステム
の下で組込みアプリケーションとして動作する例示的
な"hello world"プログラムを実行するために用いられ
た。この簡単なプログラムは、4個のプロセス、すなわ
ち、UARTドライバ、コンソールプロセス、'hello'
アプリケーション、およびアイドルプロセスを含む。ま
た、このプログラムは、オペレーティングシステムのコ
アと、Cランタイムライブラリも含む。The ISS was used to execute an exemplary "hello world" program that runs as an embedded application under a lightweight operating system. This simple program has four processes: a UART driver, a console process, 'hello'
Including applications and idle processes. The program also includes an operating system core and a C runtime library.
【0103】ターゲットシステムは、開始エントリポイ
ントから開始される。ターゲットシステムは、ブランク
記憶領域をゼロにクリアし、制御されたプロセッサリセ
ットを実行して、内部制御レジスタを設定する。初期化
ルーチンが、4個のプロセスを作成し、UARTのため
のハードウェア初期化ルーチンを呼び出す。このハード
ウェア初期化ルーチンは割込みハンドラをインストール
する。The target system is started from a starting entry point. The target system clears the blank storage area to zero, performs a controlled processor reset, and sets an internal control register. The initialization routine creates four processes and calls the hardware initialization routine for the UART. This hardware initialization routine installs an interrupt handler.
【0104】コンソールプロセスは、UARTプロセス
へのメッセージチャネルを開き、UARTキーボードイ
ンタフェースからの入力を受け取ることができるように
メッセージのキューをセットアップする。The console process opens a message channel to the UART process and sets up a queue of messages so that it can receive input from the UART keyboard interface.
【0105】アプリケーションは、Cランタイムライブ
ラリを用いて、通常のI/Oファイル(stdin、stdout
およびstderr)をコンソールマルチプレクサプロセスに
対して開いた後、printfルーチンを呼び出して、文字列
をフォーマットしてメッセージをコンソールに送る。こ
れは、コンソールへのコンテクストスイッチを引き起こ
し、文字列の前にプロセス名を付加してそれをUART
プロセスに転送する。The application uses the C runtime library to execute normal I / O files (stdin, stdout
And stderr) to the console multiplexer process, then call the printf routine to format the string and send a message to the console. This causes a context switch to the console, prepending the process name to the string and appending it to the UART
Transfer to process.
【0106】UARTは、ハードウェアによって生成さ
れるTx-Available割込みに応答して、文字列を一時に1
文字ずつハードウェアに送信する。すべての文字が送ら
れた後、メッセージがコンソールプロセスを通じてアプ
リケーションに返され、その後、アプリケーションは終
了する。The UART responds to the Tx-Available interrupt generated by the hardware and stores the character string at one time.
Send to the hardware character by character. After all characters have been sent, a message is returned to the application through the console process, after which the application exits.
【0107】ISSをこのレベルで動作させると、ソフ
トウェアが正しく動作しているというある程度の信頼性
を示すことができる。例えば、アプリケーションとのU
ARTの動作を制御するソフトウェアは、いつCPUが
文字を書くことができるかを示すためにチップによって
供給されるステータスフラグを正しく解釈している。さ
らに、ルーチンは、正しいパラメータおよび連繋で、正
しい順序で呼び出されている。また、検出可能なメモリ
破損がなく、定義されたメモリ領域の外部へのアクセス
もないと仮定することも妥当である。Operating the ISS at this level can provide some degree of confidence that the software is operating correctly. For example, U with application
The software controlling the operation of the ART correctly interprets the status flags provided by the chip to indicate when the CPU can write characters. Further, the routines are called in the correct order with the correct parameters and linkages. It is also reasonable to assume that there is no detectable memory corruption and no access outside the defined memory area.
【0108】しかし、このモードでシミュレータを動作
させても、実行時間に関する実際の情報は得られない。
あらゆる命令は1クロックティックしかかからないと仮
定しているからである。命令タイミングモードを動作さ
せ、パイプライントレースをプリントアウトすれば、命
令サイクルがどこを進んでいるかが示される。However, even if the simulator is operated in this mode, actual information regarding the execution time cannot be obtained.
It is assumed that every instruction takes only one clock tick. Activating the instruction timing mode and printing out the pipeline trace shows where the instruction cycle is going.
【0109】また、ISSを使用すると、回路内エミュ
レータを使用しても通常は入手できない情報にアクセス
することもできる。例えば、実際に使用されたレジスタ
キャッシュの最大深さを決定することや、キャッシュヒ
ット統計とともにフレームこぼれ数をカウントすること
も可能である。The use of the ISS allows access to information that cannot be normally obtained by using an in-circuit emulator. For example, it is possible to determine the maximum depth of the register cache actually used, and to count the number of frame spills together with the cache hit statistics.
【0110】また、それぞれの命令が実行された回数を
カウントすることも可能である。このようなデータは、
特に高集積SOCを製造するとき、プロセッサトレード
オフを決定する際に非常に有益である。これは、例え
ば、より少数の分岐命令によって、ゲート数を少なくす
るためである。I960アーキテクチャは「予測分岐」
命令を備えているが、コンパイラはそれらを使用しな
い。これらの命令を除去することも可能であり、あるい
は、これらの機能を利用可能な別のコンパイラを検討す
ることも可能である。It is also possible to count the number of times each instruction has been executed. Such data,
It is very useful in determining processor trade-offs, especially when manufacturing highly integrated SOCs. This is because, for example, the number of gates is reduced by a smaller number of branch instructions. I960 architecture is "prediction branch"
Have instructions, but the compiler does not use them. It is possible to remove these instructions, or consider another compiler that can take advantage of these features.
【0111】このレベルの詳細さでも、サイクル精度に
はほど遠い。この場合、すべてのバストランザクション
が(マルチワードオペレーションを含めて)同じサイク
ル内で完了するという1サイクルメモリモデルを仮定し
ているからである。このレベルでのタイミングを正確に
モデル化するためには、システムデータバスとそのデバ
イスの精密なモデルが必要であり、これは、完全なコシ
ミュレーション環境を生成することを必要とする。Even this level of detail is far from cycle accurate. In this case, a one-cycle memory model is assumed in which all bus transactions are completed in the same cycle (including multiword operations). To accurately model timing at this level requires a precise model of the system data bus and its devices, which requires creating a complete co-simulation environment.
【0112】次に、完全なサイクル精度の命令セットシ
ミュレーションの構成について説明する。真のハードウ
ェア/ソフトウェアコシミュレーションを可能にするた
めには、本発明の第1の特徴に要求されるISSの機能
を少なくとも含む、選択されたCPUに対する命令セッ
トシミュレータが要求される。Next, the configuration of a complete cycle-accurate instruction set simulation will be described. To enable true hardware / software co-simulation, an instruction set simulator for the selected CPU is required, including at least the ISS functionality required for the first aspect of the invention.
【0113】しかし、この機能は、特定のCPUを選択
する際に次の3つの主要な要素を無視している。However, this function ignores the following three main elements when selecting a specific CPU.
【0114】1.例えば乗算や除算のように、多くの命
令は、単一サイクルで実行を完了しない。1. Many instructions, such as multiplication and division, do not complete execution in a single cycle.
【0115】2.CPUは、リソース使用衝突がないと
仮定して、バスオペレーションがレジスタ間オペレーシ
ョンと同時に実行可能なように、複数の専用ユニットに
わたる内部並列処理をインプリメントしていることがあ
る。[0115] 2. The CPU may have implemented internal parallelism across multiple dedicated units so that bus operations can be performed concurrently with inter-register operations, assuming no resource usage conflicts.
【0116】3.内部キャッシュメモリ、外部RAMメ
モリおよびデバイスへのアクセスは、互いに非常に異な
る応答時間を有することがある。これによる通常の効果
は単に実行が遅延されるだけであるが、ある重大な場合
には(例えば、到来する割込みの相対的タイミングがあ
るタスクの処理順序を決定する場合)、全体のパフォー
マンスにおいて多大な役割を演ずることがある。3. Accesses to internal cache memory, external RAM memory, and devices may have very different response times from each other. The usual effect of this is simply to delay execution, but in some critical cases (for example, when the relative timing of incoming interrupts determines the order of processing of certain tasks), a significant effect on overall performance. May play an important role.
【0117】次に、電子回路とその電子回路を制御する
制御プログラムとを有するシステムの検証のための、タ
ーゲットプロセッサのサイクル精度の命令セットシミュ
レーションを導出する方法について詳細に説明する。Next, a method for deriving a cycle-accurate instruction set simulation of a target processor for verifying a system having an electronic circuit and a control program for controlling the electronic circuit will be described in detail.
【0118】インテルI960プロセッサを例として用
いると、ISSは、命令キャッシュに加えて、次の機能
をインプリメントすることによって、I960命令スケ
ジューラをモデル化する。 ・並列デコーディングを有する4ワード命令パイプ。 ・5個のI960命令パスのエミュレーション。 ・結果が利用可能になる前には使用されないことを保証
するためのレジスタスコアボーディング。 ・分岐や呼出し(コール)のようなパイプライン切断命
令の実装。 ・完了するのに単一クロック時間より長くかかる命令に
対するパイプラインストール。Using the Intel I960 processor as an example, the ISS models the I960 instruction scheduler by implementing the following functions in addition to the instruction cache. A 4-word instruction pipe with parallel decoding. Emulation of five I960 instruction paths. • Register scoreboarding to ensure that the result is not used before it is available. -Implementation of pipeline disconnection instructions such as branch and call. Pipelining for instructions that take longer than a single clock time to complete.
【0119】図6を参照すると、命令パイプラインは、
各プロセッサクロックティックの最初に検査される。パ
イプが完全に満たされてはいない場合、満たすためにif
etchルーチンが呼び出される。パイプを満たすのに必要
な命令が命令キャッシュに見つからない場合、ifetch擬
似命令がスケジューリングされる。この命令は、CPU
のバス制御ユニット(BCU:Bus Control Unit)およ
びメモリパスにおいて実行される(そのため、これらの
ユニットがビジーである場合には遅延されることがあ
る)。結果的に、この命令が実行されると、8ワードが
命令キャッシュラインにロードされる。これらのワード
のうちの4個までが、fill_Ipipeルーチンによって、命
令パイプラインを満たすために使用される。使用される
ワード数は、パイプの状態と、命令キャッシュバウンダ
リに関する現在の命令ポインタのアラインメントとに依
存する。Referring to FIG. 6, the instruction pipeline is:
Checked at the beginning of each processor clock tick. If pipe is not completely filled, if to fill
The etch routine is called. If the instruction needed to fill the pipe is not found in the instruction cache, an ifetch pseudo-instruction is scheduled. This instruction is executed by the CPU
In the bus control unit (BCU) and the memory path (and may be delayed if these units are busy). Consequently, when this instruction is executed, eight words are loaded into the instruction cache line. Up to four of these words are used by the fill_Ipipe routine to fill the instruction pipeline. The number of words used depends on the state of the pipe and the current instruction pointer alignment with respect to the instruction cache boundary.
【0120】命令パイプラインにデータがある場合、そ
の値が命令へとデコードされる。一部のI960命令は
複数ワードを占めるため、不完全な命令がパイプに存在
する可能性があり、その場合(図6の第2のcallx命令
の場合のように)、それはデコードすることができな
い。命令は一度だけでコードされ、デコードされた形が
データ構造体に格納される。また、デコーディングに
は、命令をスケジューリングするために必要な内部処理
ユニット、パイプラインおよびレジスタリソースを識別
することも関連する。If there is data in the instruction pipeline, its value is decoded into an instruction. Because some I960 instructions occupy multiple words, incomplete instructions may be present in the pipe, in which case (as in the case of the second callx instruction in FIG. 6) it cannot be decoded . The instructions are coded once and the decoded form is stored in a data structure. Decoding also involves identifying the internal processing units, pipelines and register resources needed to schedule the instruction.
【0121】CPUが使用中のリソースは、ティックご
とに、スコアボード構造体によって表される。命令は、
パイプラインから順に取り出され、1つずつスケジュー
リングされる。スケジューリングは、命令がこのティッ
クの間にすでにコミットされたリソースを要求すると
き、もしくは、命令がパイプライン切断を生じるとき、
または、パイプライン内にもはやデコードされた命令が
ないときのいずれかに、停止する。The resources being used by the CPU are represented by a scoreboard structure for each tick. The instruction is
It is taken out of the pipeline in order and scheduled one by one. Scheduling occurs when an instruction requests a resource that has already been committed during this tick, or when an instruction causes a pipeline disconnection.
Alternatively, it stops either when there are no more decoded instructions in the pipeline.
【0122】スケジューラがパイプライン内のスロット
を消費した場合、残りのデータが繰り上がり、命令ポイ
ンタが更新される。When the scheduler consumes a slot in the pipeline, the remaining data is carried up and the instruction pointer is updated.
【0123】スケジューリングが完了すると、現在のテ
ィックにおいてユニットに入る命令が実行される。完了
するのに単一ティックより長くかかる命令は、パイプラ
インがストールすると、そのリソースを後続のティック
に伝搬させる。When the scheduling is completed, the instruction to enter the unit at the current tick is executed. Instructions that take longer than a single tick to complete will propagate their resources to subsequent ticks when the pipeline stalls.
【0124】図6を参照すると、AGU、MEMパス、
ソースレジスタとしてのフレームポインタ、および、デ
スティネーションレジスタとしてのスタックポインタを
ロックして、lda命令が現在のティックにおいてスケジ
ューリングされることが可能である。これは、次のcall
x命令がスケジューリングされないようにするため、次
のcallx命令はパイプにとどまる。lda命令は、実行する
のに複数サイクルかかるため、AGUは次のティックで
ストールし、この命令からのリソースは、この命令がA
GUを占有する限り、スコアボードにコピーされる。ld
aは、完了すると、そのリソースを解放し、callx命令が
開始することができる。次のcallx(これはここで完全
にデコードされることが可能となる)は、次の2つの理
由で、スケジューリングされない。第1に、このcallx
でのリソースクラッシュのためであるが、それだけでな
く第2に、callx命令はパイプライン切断(および新し
い命令ポインタへの転送)を引き起こすからである。Referring to FIG. 6, AGU, MEM path,
Locking the frame pointer as the source register and the stack pointer as the destination register, the lda instruction can be scheduled at the current tick. This is the next call
The next callx instruction stays in the pipe to prevent the x instruction from being scheduled. Because the lda instruction takes multiple cycles to execute, the AGU stalls on the next tick and the resources from this instruction are
As long as it occupies the GU, it is copied to the scoreboard. ld
When a completes, it releases its resources and the callx instruction can begin. The next callx, which can now be completely decoded, is not scheduled for two reasons. First, this callx
Second, but not only because of a resource crash in, because the callx instruction causes a pipeline disconnection (and transfer to a new instruction pointer).
【0125】図6を参照すると、lda命令のエミュレー
ションは特に複雑ではない。命令デコーディングルーチ
ンは、デスティネーションレジスタおよびメモリオペラ
ンドをすでに評価しているため、ルーチンは、レジスタ
を保持している(ISSメモリ内の)ロケーションを単
に更新するだけである。その結果は、検査のために外部
観察者に対して表示することが可能であり、スコアボー
ドは、この命令に対する全部で4ティックについてマー
クされる。Referring to FIG. 6, emulation of the lda instruction is not particularly complicated. Because the instruction decoding routine has already evaluated the destination register and the memory operand, the routine simply updates the location (in ISS memory) holding the register. The results can be displayed to an external observer for examination, and the scoreboard is marked for a total of 4 ticks for this instruction.
【0126】エミュレーションにおいては、デスティネ
ーションレジスタが命令の期間中にアクセス不能とマー
クされている限り、現実のCPUの場合のように「最
終」ティックまで結果の代入を遅延させる必要はない。
この便法は、ハードウェアがコシミュレートされている
ときにはもはや成り立たない。In emulation, as long as the destination register is marked inaccessible during the instruction, there is no need to delay the assignment of the result until the "final" tick as in a real CPU.
This expedient no longer holds when the hardware is being simulated.
【0127】図7〜図9を参照して、サイクル精度のタ
ーゲットプロセッサのモデル化のプロセスについて説明
する。S1105で、ターゲットプロセッサがオンボー
ドキャッシュメモリを有するかどうかを判定する。ター
ゲットプロセッサがオンボードキャッシュメモリを有す
る場合、プロセスフローはS1115に進み、オンボー
ドキャッシュアクセスを制御するアルゴリズムがモデル
化される。ターゲットプロセッサがオンボードキャッシ
ュメモリを有しない場合、プロセスフローはS1120
に進む。The process of modeling a cycle-accurate target processor will be described with reference to FIGS. In S1105, it is determined whether the target processor has an on-board cache memory. If the target processor has an on-board cache memory, the process flow proceeds to S1115, where the algorithm controlling on-board cache access is modeled. If the target processor has no on-board cache memory, the process flow goes to S1120
Proceed to.
【0128】S1120で、ターゲットプロセッサが命
令パイプラインアーキテクチャを有するかどうかを判定
する。ターゲットプロセッサが命令パイプラインアーキ
テクチャを有する場合、S1130で、命令パイプライ
ン充填プロセスがモデル化される。そうでない場合、プ
ロセスフローはS1135に進む。In S1120, it is determined whether or not the target processor has an instruction pipeline architecture. If the target processor has an instruction pipeline architecture, at S1130, the instruction pipeline filling process is modeled. Otherwise, the process flow proceeds to S1135.
【0129】S1135で、命令およびリソースの表現
を作成する。ターゲットプロセッサのアーキテクチャに
依存して、各命令の効果、その命令が要求しロックする
ターゲットプロセッサ内のリソース、および、その命令
の継続時間または終了条件を表現するデータ構造体が定
義され初期化される。In step S1135, an instruction and a resource are created. Depending on the architecture of the target processor, a data structure is defined and initialized that represents the effect of each instruction, the resources in the target processor that the instruction requires and locks on, and the duration or termination condition of the instruction. .
【0130】図8を参照すると、S1140で、上記で
定義されたリソース定義と、現在のマシン状態における
命令のアクションとに対するインタプリタを作成するこ
とによって、命令がシミュレートされる。Referring to FIG. 8, at S1140, an instruction is simulated by creating an interpreter for the resource definition defined above and the action of the instruction in the current machine state.
【0131】S1145で、ターゲットプロセッサがマ
ルチパスアーキテクチャを有するかどうかを判定する。
ターゲットプロセッサがマルチパスアーキテクチャを有
しない場合、プロセスフローはS1165に進む。これ
に対して、ターゲットプロセッサがマルチパスアーキテ
クチャを有する場合、S1155で、現在のマシン状態
において、他の命令が並列に実行されるべきかどうかを
判定するアルゴリズムが生成される。他の命令が並列に
実行されるべきである場合、プロセスフローはS114
0に戻り、並列命令が実行される。そうでない場合、プ
ロセスフローはS1165に進む。At S1145, it is determined whether or not the target processor has a multi-path architecture.
If the target processor does not have a multi-pass architecture, the process flow proceeds to S1165. In contrast, if the target processor has a multi-pass architecture, an algorithm is generated at S1155 that determines whether other instructions should be executed in parallel in the current machine state. If other instructions are to be executed in parallel, the process flow proceeds to S114
Returning to 0, the parallel instruction is executed. Otherwise, the process flow proceeds to S1165.
【0132】図8および図9を参照すると、S1165
で、シミュレートされる命令がマルチサイクル命令であ
るかどうかを判定する。シミュレートされる命令がマル
チサイクル命令である場合、S1170で、上記のよう
にスコアボードが用意される。次に、S1175で、上
記のようにリソースが伝搬され、プロセスフローはS1
180に進む。Referring to FIG. 8 and FIG. 9, S1165
Determines whether the simulated instruction is a multi-cycle instruction. If the instruction to be simulated is a multi-cycle instruction, a scoreboard is prepared at S1170 as described above. Next, in S1175, the resource is propagated as described above, and the process flow is S1
Go to 180.
【0133】S1180で、非決定性タイミングが存在
するかどうかを判定する。非決定性タイミングが存在す
る場合、終了の評価を行う。S1190で、現在のマシ
ン状態における非決定性タイミングオペレーションに対
する終了条件を判定するアルゴリズムを生成する。ター
ゲットプロセッサのアーキテクチャに従って、これは、
エミュレートされるマシンレジスタ内の値に基づく計算
を含むこともあり、また、外部信号の状態を調べるコー
ドを生成することを含むこともある。S1192で、終
了条件がチェックされ、命令が終了していない場合、プ
ロセスフローはS1175に進む。命令が終了している
場合、前に伝搬されたリソースがクリアされ、命令のシ
ミュレーションは完了する。In S1180, it is determined whether non-deterministic timing exists. If non-deterministic timing is present, termination is evaluated. At S1190, an algorithm is generated that determines the termination condition for a non-deterministic timing operation in the current machine state. According to the architecture of the target processor, this is
It may involve calculating based on values in emulated machine registers, and may also include generating code that checks the state of external signals. In S1192, the termination condition is checked, and if the instruction is not terminated, the process flow proceeds to S1175. If the instruction has completed, the previously propagated resources are cleared and the simulation of the instruction is complete.
【0134】図10〜図13を参照して、電子回路と、
その電子回路を制御する制御プログラムとを含むシステ
ムのコバリデーションの実行について説明する。S13
10で、刺激が試験対象システムに入力される。S13
15で、CPUが「動作可能」であるかどうかを判定す
る。動作可能である場合、プロセスフローはS1340
に進む。動作可能でない場合、S1320で、ターゲッ
トプロセッサはストールされ、S1325で、エミュレ
ートされているキャッシュメモリに命令がロードされ
る。S1330で、キャッシュメモリがロードされてい
るかを判定する。メモリが十分にロードされている場
合、S1335で、ターゲットプロセッサがアンストー
ル(ストール解除)される。Referring to FIGS. 10 to 13, an electronic circuit,
The execution of system validation including a control program for controlling the electronic circuit will be described. S13
At 10, a stimulus is input to the system under test. S13
At 15, it is determined whether the CPU is "operable". If so, the process flow goes to S1340
Proceed to. If not, at S1320, the target processor is stalled, and at S1325, the instruction is loaded into the emulated cache memory. In S1330, it is determined whether the cache memory has been loaded. If the memory has been sufficiently loaded, the target processor is uninstalled (stall release) in S1335.
【0135】S1340で、命令パイプラインが、ター
ゲットプロセッサの内部データフローモデルから導出さ
れる信号のシーケンスを用いて充填される。図11を参
照すると、S1345で、ターゲットプロセッサの内部
データバスのアクションをエミュレートするために、所
定数のクロックサイクルに基づく遅延が実行される。こ
の所定数は、内部データバスの幅に基づき、1〜数クロ
ックサイクルの範囲とすることが可能である。At S1340, the instruction pipeline is filled with a sequence of signals derived from the internal data flow model of the target processor. Referring to FIG. 11, at S1345, a delay based on a predetermined number of clock cycles is performed to emulate the action of the internal data bus of the target processor. This predetermined number can range from one to several clock cycles based on the width of the internal data bus.
【0136】次に、S1350で、実行に利用可能な命
令を解釈するために、ターゲットプロセッサの内部デコ
ードサイクルが実行される。この命令デコードサイクル
は、上記のように実行される。Next, at S1350, an internal decode cycle of the target processor is executed to interpret instructions available for execution. This instruction decode cycle is executed as described above.
【0137】ターゲットプロセッサの内部デコードサイ
クルが実行された後、S1355で、スケジューリング
された命令が上記のようにパイプライン切断をインプリ
メントしているかどうかを判定する。パイプライン切断
が要求される場合、S1365で、命令スケジューラが
ストールされる。パイプライン切断が要求されない場
合、プロセス制御フローはS1370に進む。After the internal decode cycle of the target processor has been executed, it is determined in S1355 whether the scheduled instruction implements pipeline disconnection as described above. If pipeline disconnection is requested, the instruction scheduler is stalled in S1365. If pipeline disconnection is not required, the process control flow proceeds to S1370.
【0138】次に、S1320で、スケジューリングさ
れた命令が、適当な命令パイプラインあるいはハードウ
ェアコンポーネントに転送される。適当な命令パイプラ
インへの命令の転送後、S1375で、各命令のサイク
ル実行時間が計算される。Next, at S1320, the scheduled instruction is transferred to an appropriate instruction pipeline or hardware component. After transferring the instructions to the appropriate instruction pipeline, the cycle execution time of each instruction is calculated in S1375.
【0139】図12を参照すると、S1380で、非決
定性タイミングが存在するかどうかを判定する。非決定
性タイミングが存在する場合、S1390で、S119
0で生成された終了条件を判定するアルゴリズムが、各
クロックサイクルの終端で実行される。Referring to FIG. 12, in S1380, it is determined whether or not nondeterministic timing exists. If nondeterministic timing exists, in S1390, S119
The algorithm for determining the end condition generated at 0 is executed at the end of each clock cycle.
【0140】S1400で、エミュレーションは、計算
された命令時間に対するリソース割当てを伝搬させる。
S1405で、計算された実行サイクルの終端で利用可
能な結果が出力される。この結果は、エミュレートされ
たレジスタやフラグの値を更新することや、外部信号の
値を変化させることを含むことがある。At S1400, the emulation propagates the resource allocation for the calculated instruction time.
In S1405, a result available at the end of the calculated execution cycle is output. This result may include updating the value of the emulated register or flag, or changing the value of an external signal.
【0141】次に、S1410で、次の命令サイクルで
割込みハンドラがスケジューリングされるべきかどうか
を判定する。スケジューリングされるべきである場合、
S1420で、次の命令サイクルで実行するために割込
みハンドラがスケジューリングされる。Next, in S1410, it is determined whether an interrupt handler should be scheduled in the next instruction cycle. If it should be scheduled,
At S1420, an interrupt handler is scheduled for execution in the next instruction cycle.
【0142】図13を参照すると、S1425で、刺激
からの結果が試験対象システムから出力される。この出
力は、外部観察者に対して示されるシミュレーションの
進行の視覚的表示であることも可能であり、あるいは、
後の検討や後処理のためのそのような変化のログ(例え
ば、図20によって例示されるようなトレース出力)の
生成であることも可能である。S1430で、試験対象
システムに入力されるべき刺激がまだあるかどうかを判
定し、もうない場合、プロセスは終了する。まだある場
合、プロセス制御はS1310に進む。Referring to FIG. 13, at S1425, the result from the stimulus is output from the system under test. This output can be a visual indication of the progress of the simulation shown to an external observer, or
It can also be the generation of a log of such changes for later review and post-processing (eg, a trace output as illustrated by FIG. 20). At S1430, it is determined whether there are any more stimuli to be input to the system under test, and if there are no more, the process ends. If there is, the process control proceeds to S1310.
【0143】次に、試験対象システムへの刺激の入力に
より、試験対象システムに結果を出力させることについ
て詳細に説明する。Next, a detailed description will be given of how to output a result to the test target system by inputting a stimulus to the test target system.
【0144】一般に、いくつかの異なるプロセスが、試
験対象システムの異なる部分をシミュレートする。これ
らのプロセスは試験対象システムに固有であり、ケース
バイケースで修正されなければならない。図14を参照
すると、設計された試験サイクルを継続的に繰り返し
て、コシミュレートされるハードウェアおよびソフトウ
ェアを十分に作用させるために、例として、グローバル
ループコントローラ23が用いられる。試験刺激プロセ
ス24は、「外界」から試験対象システムに刺激を提供
する。試験刺激プロセス24のもう1つの機能は、誤っ
た入力がどのように処理されるかを見るために、誤入力
を試験対象システムに入力することである。例えば、試
験刺激プロセス24は、データ転送トランザクションの
応答側として作用し、試験対象システムの再試行メカニ
ズムを試験するために、プロトコルエラーで応答するこ
とが可能である。バスアービトレーションプロセス22
は、試験対象システムと試験刺激プロセスの間のバスア
ービトレーションを提供する。試験対象回路21は、単
一のプロセスであることも可能であり、あるいは代替例
では、回路設計の複雑さに依存して、数個のプロセスで
あることも可能である。In general, several different processes simulate different parts of the system under test. These processes are specific to the system under test and must be modified on a case-by-case basis. Referring to FIG. 14, a global loop controller 23 is used as an example to continuously repeat the designed test cycle to make the co-simulated hardware and software fully operate. The test stimulus process 24 provides stimulus to the system under test from the “outside world”. Another function of the test stimulus process 24 is to input erroneous inputs to the system under test to see how erroneous inputs are handled. For example, the test stimulus process 24 can act as a responder to a data transfer transaction and respond with a protocol error to test the retry mechanism of the system under test. Bus arbitration process 22
Provides bus arbitration between the system under test and the test stimulus process. The circuit under test 21 can be a single process or, in the alternative, several processes, depending on the complexity of the circuit design.
【0145】さらに、信号表示プロセスにより、ステッ
プ実行を行い、グローバル状態に対する個々のステート
メントの効果をウォッチすることが可能である。In addition, the signal display process allows step execution and monitoring of the effects of individual statements on the global state.
【0146】次に、電子回路のハードウェアモデルを命
令セットシミュレーションに結合して、軽量コンピュー
タオペレーティングシステム環境で実行される試験対象
システムを作成することについて、さらに詳細に説明す
る。Next, combining the hardware model of the electronic circuit with the instruction set simulation to create a system under test that executes in a lightweight computer operating system environment will be described in further detail.
【0147】第1段階として、ハードウェアの動作記述
を調べ、各ハードウェアプロセスが個別のソフトウェア
プロセスによって表現されるプロセス構造が構成され
る。各プロセス内では、動作記述が、軽量オペレーティ
ングシステムのプログラミング言語に翻訳される。命令
セットシミュレータがこの言語で同様にコーディングさ
れる。シミュレータに必要なファブリックプロセスおよ
び刺激生成プログラムも同様である。第2段階として、
プログラミング言語ソースファイルは、軽量オペレーテ
ィングシステムが動作するプロセッサに対するオブジェ
クトコードにコンパイルされる。第3段階として、これ
らのファイルが、軽量オペレーティングシステムに対す
るオブジェクトコードとリンクされ、完全な実行環境が
形成される。第4段階として、シミュレータが実行され
るシステムに、実行可能ファイルがロードされる。第5
段階として、シミュレータが、軽量オペレーティングシ
ステムの制御下で実行され、出力が観察される。In the first stage, the operation description of the hardware is examined, and a process structure in which each hardware process is represented by an individual software process is configured. Within each process, the behavioral description is translated into a lightweight operating system programming language. An instruction set simulator is similarly coded in this language. The same applies to the fabric process and the stimulus generation program required for the simulator. As the second stage,
The programming language source files are compiled into object code for a processor running a lightweight operating system. Third, these files are linked with the object code for the lightweight operating system to form a complete execution environment. As a fourth step, the executable file is loaded into the system where the simulator runs. Fifth
As a step, the simulator is run under the control of a lightweight operating system and the output is observed.
【0148】次に、図14を参照して、電子回路と、そ
の電子回路をターゲットとする制御プログラムとのコバ
リデーションのためのコンピュータシステムについて、
簡単に説明する。電子回路および制御プログラムは、軽
量コンピュータシステムオペレーティング環境で実行さ
れる所定のコンピュータ言語を用いてシミュレートされ
る。また、このコンピュータシステムは、上記のルーチ
ンを使用する。S0900の設計ステップの終了後、コ
ンピュータシステムは、ファブリックプロセス10を有
する。ファブリックプロセス10は、複数のグローバル
信号の状態を管理する信号メンテナサブシステム12
と、ソフトウェアモデルおよび命令セットシミュレータ
によって使用されるクロック信号を生成するクロックジ
ェネレータサブシステム13と、ソフトウェアモデルお
よび命令セットシミュレータからのイベントをウェイト
するプロセスキューを管理するキューメンテナサブシス
テム14と、所定のタイミング間隔で少なくとも1つの
プロセスを実行するスケジューラサブシステム16と、
少なくとも信号メンテナサブシステム12、クロック信
号ジェネレータサブシステム13、キューメンテナサブ
システム14およびスケジューラサブシステムの実行を
制御する中央制御プロセス11とを有する。Next, referring to FIG. 14, a computer system for validating an electronic circuit and a control program targeting the electronic circuit will be described.
A brief description will be given. Electronic circuits and control programs are simulated using a predetermined computer language running in a lightweight computer system operating environment. The computer system uses the above routine. After the end of the design step of S0900, the computer system has a fabric process 10. The fabric process 10 includes a signal maintainer subsystem 12 that manages the state of a plurality of global signals.
A clock generator subsystem 13 that generates a clock signal used by the software model and the instruction set simulator; a queue maintainer subsystem 14 that manages a process queue that waits for events from the software model and the instruction set simulator; A scheduler subsystem 16 for executing at least one process at a timing interval;
It has at least a signal maintainer subsystem 12, a clock signal generator subsystem 13, a queue maintainer subsystem 14, and a central control process 11 that controls the execution of the scheduler subsystem.
【0149】マイクロカーネルサポートプロセス以外
に、コンピュータシステムは、ファブリックプロセス1
0、命令セットシミュレーションプロセス、ならびに、
ハードウェアコンポーネントおよび刺激システムを表す
プロセスを有し、これらはすべて互いに関連して動作す
る。コシミュレーション環境の中央制御プロセス11
は、次の5個の主要なサブシステムの全体の機能および
相互作用を管理する。 (a)すべてのグローバル信号の状態を管理する信号メ
ンテナ12。 (b)クロック信号を生成するクロックジェネレータ1
3。 (c)イベントをウェイトするプロセスのキューを管理
するキューメンテナ14。 (d)各ナノ秒ティックごとにそれぞれのアクティブプ
ロセスを実行するスケジューラ16。 (e)ユーザに対して信号変化を示すディスプレイを駆
動するディスプレイジェネレータ15。 試験刺激の例としては、外部インタフェース上でのデー
タ利用可能性を示す信号がある。また、刺激は、エラー
条件、例えば、ECCメモリによって生成されるパリテ
ィ検査エラーをシミュレートすることも可能である。In addition to the microkernel support process, the computer system operates in the fabric process 1
0, instruction set simulation process, and
It has processes that represent hardware components and stimulation systems, all of which operate in conjunction with each other. Central control process 11 for co-simulation environment
Manages the overall function and interaction of the following five major subsystems. (A) A signal maintainer 12 that manages the state of all global signals. (B) Clock generator 1 for generating clock signal
3. (C) A queue maintainer 14 that manages a queue of a process that waits for an event. (D) A scheduler 16 that executes a respective active process for each nanosecond tick. (E) a display generator 15 that drives a display that indicates a signal change to the user. An example of a test stimulus is a signal indicating data availability on an external interface. The stimulus can also simulate an error condition, for example, a parity check error generated by an ECC memory.
【0150】図15を参照すると、シミュレーション環
境の全体は、軽量オペレーティングシステム30内の複
数のプロセスとして動作する。個々のプロセスには、フ
ァブリックプロセス31、命令セットシミュレーション
プロセス32およびVHDLプロセス33、34が含ま
れる。VHDLプロセス33、34は、モデル化されて
いるハードウェアのインスタンス化されたハードウェア
プロセスと一対一に対応する。すべての信号相互作用3
5は、オペレーティングシステム30によってスケジュ
ーリングされたメッセージとして、ファブリックプロセ
ス31を通る。Referring to FIG. 15, the entire simulation environment operates as a plurality of processes in the lightweight operating system 30. The individual processes include a fabric process 31, an instruction set simulation process 32, and VHDL processes 33 and 34. The VHDL processes 33, 34 correspond one-to-one with the instantiated hardware processes of the hardware being modeled. All signal interactions 3
5 passes through the fabric process 31 as a message scheduled by the operating system 30.
【0151】このようなソフトウェアベースのシミュレ
ーションシステム内では、シングルプロセッサシステム
では真の並行性はないため、見かけ上の並列処理しか達
成することができない。これは、信号に対する「同時」
変化と時間の概念の問題を引き起こす。考慮すべき次の
3つの問題がある。In such a software-based simulation system, since there is no true concurrency in a single processor system, only apparent parallel processing can be achieved. This is the "simultaneous"
Causes the problem of the concept of change and time. There are three issues to consider:
【0152】・問題1: 2つのプロセスが動作可能で
あり、それらの実行の期間中に、ある信号の値を変化さ
せる場合、その結果は、プロセスが実行される順序に依
存することがある。例えば、信号"test"が実行の最初に
値'1'を有する場合、 プロセス1: if (test = '1') then test <= '0'; en
d if; プロセス2: test <= '1';Problem 1: If two processes are operational and change the value of certain signals during their execution, the result may depend on the order in which the processes are performed. For example, if the signal "test" has the value '1' at the beginning of the run, process 1: if (test = '1') then test <= '0'; en
d if; process 2: test <= '1';
【0153】プロセス1がプロセス2の前に実行される
場合、(素朴な)結果は、実行の終了時に"test"が'1'
にセットされるというものである。プロセス2がプロセ
ス1の前に実行される場合、結果は、実行の終了時に"t
est"が'0'にセットされるというものである。If the process 1 is executed before the process 2, the (simple) result is that "test" is "1" at the end of the execution.
It is set to. If process 2 runs before process 1, the result will be "t" at the end of the run.
est "is set to '0'.
【0154】・問題2: プロセスが変化し、同じ実行
期間に、ある信号を読み出す場合、結果は非決定性とな
る。例えば、次のコードフラグメントを考える。 プロセス1: test <= '1'; if (test = '1') then output <= '1'; end if; 現実のシステムでは、これはoutputを'1'にセットする
こともしないこともある。Problem 2: If the process changes and a certain signal is read during the same execution period, the result is non-deterministic. For example, consider the following code fragment: Process 1: test <= '1'; if (test = '1') then output <= '1'; end if; In a real system, this may or may not set output to '1' .
【0155】・問題3: プロセスは、既知の周波数で
動作するクロック信号に対する絶対時間の値を必要とす
る。さらに、絶対時間は、より複雑なデューティサイク
ルとともに、次のような構文に必要である。 クロックプロセス: clk <= !clk after 5 ns;Problem 3: The process requires an absolute time value for a clock signal operating at a known frequency. In addition, absolute time, along with more complex duty cycles, is required for syntax such as: Clock process: clk <=! Clk after 5 ns;
【0156】従来のVHDLシミュレータは通常、最初
の2つの問題を、「デルタ」、すなわち、サブティック
同期ポイントの概念により処理する。サブティック同期
ポイントを使用すると、すべての信号値は、デルタの最
初に固定される。これらの値が信号値に対する要求に応
答して出され、デルタの最後にのみ値が更新される。こ
れは、シミュレーションを決定性にし、プロセスのシミ
ュレーションの順序とは独立にするという利点がある。
これは、VHDLプログラマに対して、次のデルタへの
アラインメントを強制するように余分のウェイト(wait)
ステートメントをコードに挿入することを要求する。上
記の問題2の場合、この非決定性問題を解決するため
に、デルタバウンダリを強制するステートメントが挿入
される。 プロセス1: test <= '1'; wait for 0 ns; if (test = '1') then output <= '1'; end if; プロセス1は一貫してoutputを'1'にセットすることに
なる。しかし、合成された結果が期待通りに動作すると
いう保証はない。Conventional VHDL simulators typically address the first two issues by the concept of a "delta", or subtick synchronization point. Using the subtick sync point, all signal values are fixed at the beginning of the delta. These values are issued in response to requests for signal values, and the values are updated only at the end of the delta. This has the advantage of making the simulation deterministic and independent of the process simulation order.
This causes the VHDL programmer to extra wait to force alignment to the next delta.
Require that statements be inserted into the code. In case 2 above, a statement to force a delta boundary is inserted to solve this nondeterministic problem. Process 1: test <= '1'; wait for 0 ns; if (test = '1') then output <= '1'; end if; Process 1 consistently sets output to '1' Become. However, there is no guarantee that the combined result will work as expected.
【0157】ファブリックプロセスの現在の実装では、
瞬時値が出される(そのため、この例は、ウェイトが暗
黙のうちに挿入されているかのように動作する)が、結
果は、プロセスの実行の順序に依存する。当業者には明
らかなように、システムは、1つの信号に対する単一の
「デルタ」内の複数の変化を検出して、これをシミュレ
ーション出力に報告するか、あるいは、他の動作をまね
るように実装を変更するように、修正することも可能で
ある。In the current implementation of the fabric process,
An instantaneous value is issued (so this example acts as if the weights were implicitly inserted), but the result depends on the order of execution of the process. As will be apparent to those skilled in the art, the system detects multiple changes in a single "delta" for one signal and reports this to the simulation output or otherwise mimics other operations. Modifications can be made to change the implementation.
【0158】シミュレータは、絶対時間の値を生成す
る。ファブリックプロセスのクロックサブシステムは、
現在、1ナノ秒の基本タイムスライスを使用している
が、これは、現在のクロック信号の必要な精度を追跡す
るのに十分である。これは、数GHzのシステムがさら
に広まるに応じて、変更される必要があるかもしれな
い。クロック信号のサポートは、共通のオペレーション
のためのインタフェースを単純化するために、中央プロ
セスに組み込まれた。The simulator generates an absolute time value. The clock subsystem of the fabric process is
Currently, a basic time slice of 1 nanosecond is used, which is sufficient to track the required accuracy of the current clock signal. This may need to be changed as several GHz systems become more widespread. Clock signal support has been built into the central process to simplify the interface for common operations.
【0159】ほとんどの動作VHDLは、2つのモード
のうちの一方で動作するトリガで書かれる。非同期モー
ドでは、信号変化は、その信号に反応するプロセスを、
次のナノ秒で動作可能にした。同期(クロック)モード
では、信号は、クロック信号の端(立上りあるいは立下
り)でのみ調べられた。これらのモードは、図2のS1
000における動作翻訳中に決定される。プロセスの動
作可能性は、前のティックに生じた信号変化と、そのと
きに起こっているクロック遷移とに基づいて、各ナノ秒
ティックの最初に決定された。そのナノ秒ティック中に
動作可能となったプロセスは次のティックまで開始され
ず、「デルタ」メカニズムに類似の環境提供した。Most operating VHDLs are written with a trigger that operates in one of two modes. In asynchronous mode, a signal change describes a process that responds to the signal,
Enabled in the next nanosecond. In synchronous (clock) mode, the signal was only examined at the edge (rising or falling) of the clock signal. These modes correspond to S1 in FIG.
000 is determined during translation. The operability of the process was determined at the beginning of each nanosecond tick, based on the signal change that occurred in the previous tick and the clock transition that was taking place at that time. The process enabled during that nanosecond tick did not start until the next tick, providing an environment similar to the "delta" mechanism.
【0160】このインタフェース方法の顕著な特徴は、
イベントをウェイトしているプロセスが、マイクロカー
ネルコア内で真のウェイト状態にあることである。すな
わち、それらのプロセスは、各クロックティックでチェ
ックされず、システムの残りの部分におけるオーバーヘ
ッドを生じない。ファブリックプロセスは、条件のすべ
てのチェックを処理する。従来のオペレーティングシス
テムのオーバーヘッドを除去し、軽量オペレーティング
システムの直下でシミュレーションを実行することによ
って、本発明は、より高速に動作するのみならず、エミ
ュレートされる状態の表現は、オペレーティングシステ
ム自体のスケジューリングコアを通じて直接にインプリ
メントされる。The salient features of this interface method are:
The process that is waiting for an event is in a true wait state in the microkernel core. That is, those processes are not checked at each clock tick and do not create overhead in the rest of the system. The fabric process handles all checks of the condition. By eliminating the overhead of traditional operating systems and running simulations directly under a lightweight operating system, the present invention not only runs faster, but also expresses the state to be emulated by scheduling the operating system itself. Implemented directly through the core.
【0161】個々のプロセスが翻訳されたコードを実行
するため、トレース出力はコンソールに表示することが
できる。システム全体のECHOVHDL変数が0でない場合、
シミュレーション環境は、ナノ秒ティックのタイムスタ
ンプを前に付した文字列を印字することによって信号値
の変化が観察者に見えるようにする。コシミュレーショ
ン環境内の信号表示サブシステムと組み合わせて、ステ
ップ実行を行い、グローバル状態に対する個々のVHD
Lステートメントの効果をウォッチすることが可能であ
る。Trace output can be displayed on the console as individual processes execute the translated code. If the ECHOVHDL variable of the whole system is not 0,
The simulation environment prints a character string prefixed with a nanosecond tick timestamp so that the change in signal value is visible to the observer. Perform step execution in combination with the signal display subsystem in the co-simulation environment and individual VHD
It is possible to watch the effect of the L statement.
【0162】図16に、プロセッサ40、I/Oデバイ
ス43およびビデオディスプレイ端末41を有するコン
ピュータシステムの実施例を示す。I/Oデバイス43
は、キーボードおよびマウスを含むが、これらに限定さ
れない。タッチパッドのような他のデバイスも使用可能
である。さらに、コンピュータシステムは、このコンピ
ュータシステムが本発明のステップを実行することを可
能にするように適応したソフトウェア命令を含むメモリ
42(図示していないが、プロセッサ40に組み込まれ
ている)を有する。FIG. 16 shows an embodiment of a computer system having the processor 40, the I / O device 43, and the video display terminal 41. I / O device 43
Include, but are not limited to, a keyboard and a mouse. Other devices such as touchpads can be used. In addition, the computer system has a memory 42 (not shown, but incorporated in processor 40) containing software instructions adapted to enable the computer system to perform the steps of the present invention.
【0163】また、コンピュータシステムは、データリ
ンク44によってプロセッサ40に接続されたサーバ4
5も含むことが可能である。データリンク44は、従来
のデータリンク(例えば、イーサーネット、ツイストペ
ア、FTP、HTTPなど)である。サーバ45は、こ
のサーバに接続されたプログラムライブラリ46へのア
クセスを提供する。また、プログラムライブラリ46
は、コンピュータシステムが本発明のステップを実行す
ることを可能にするように適応したソフトウェア命令を
提供することも可能である。上記のように、プログラム
ライブラリ46は、当業者に周知の任意のさまざまな媒
体(例えば、フロッピー(登録商標)ディスク、ハード
ディスク、光ディスク、カートリッジ、テープ、CD−
ROM、書き込み可能CDなど)上に実現可能である。
図16に示したコンピュータシステムでは、メモリ42
上のソフトウェア命令により、プロセッサ40は、デー
タリンク44を通じてサーバ45にアクセスすることに
よって、プログラムライブラリ46にアクセスすること
ができる。図16に示したコンピュータシステムは、い
かなる意味でも限定的であることは意図しておらず、本
発明を実施する多数のさまざまなコンピュータシステム
を組み合わせることが可能である。The computer system is connected to the server 4 connected to the processor 40 by the data link 44.
5 can also be included. The data link 44 is a conventional data link (for example, Ethernet, twisted pair, FTP, HTTP, etc.). The server 45 provides access to a program library 46 connected to the server. The program library 46
Can also provide software instructions adapted to allow a computer system to perform the steps of the present invention. As noted above, the program library 46 may be implemented on any of a variety of media known to those skilled in the art (eg, floppy disks, hard disks, optical disks, cartridges, tapes, CD-
ROM, writable CD, etc.).
In the computer system shown in FIG.
The above software instructions allow processor 40 to access program library 46 by accessing server 45 via data link 44. The computer system shown in FIG. 16 is not intended to be limiting in any way, and many different computer systems embodying the present invention may be combined.
【0164】図17に、本発明によってモデル化される
例示的なシステムのブロックレベル設計を示す。システ
ムは、I960プロセッサ35、グルーロジック36お
よびUART37を有する。この例示的システムは、本
発明の適用範囲を制限するものではなく、以下の説明に
役立てるためのものである。このサンプルシステムは、
外部データバスがメモリサブシステム38およびアドレ
スデコーディンググルーロジック36の両方に接続され
たI960命令セットシミュレータを有する。矢印は、
信号の一方向性または双方向性を示す。グルーロジック
36は、メモリおよびUARTチップ37に対するchip
-select信号をドライブするとともに、UART37に
対してさまざまな信号提示要求を提供する。この設計
は、プロセッサクロックおよびバスクロックという2つ
のクロックにより、意図的に複数のタイミングドメイン
に分割された。FIG. 17 shows a block-level design of an exemplary system modeled by the present invention. The system has an I960 processor 35, glue logic 36 and UART 37. This exemplary system is not intended to limit the scope of the present invention, but to assist in the following description. This sample system
An external data bus has an I960 instruction set simulator connected to both the memory subsystem 38 and the address decoding glue logic 36. The arrow is
Indicates one-way or two-way signal. The glue logic 36 is a chip for the memory and UART chip 37.
-Drives the select signal and provides UART 37 with various signal presentation requests. This design was intentionally divided into multiple timing domains by two clocks, a processor clock and a bus clock.
【0165】コシミュレーション環境を実証するため、
I960命令セットシミュレータは、NEC VR43
00プロセッサのユーザガイド(User Guide)からの情報
を用いて、MIPSアーキテクチャに基づくデータバス
にリンクされた。バス上には外部バスマスタリングデバ
イスがなかったため、システムは、フルMIPSバスの
サブセットを使用した。選択された信号のセットは、さ
まざまなバースト能力とともに、さまざまな応答時間
で、デバイスをインプリメントするのに十分であった。To demonstrate the co-simulation environment,
The I960 instruction set simulator is NEC VR43
Using information from the 00 processor User Guide, it was linked to a data bus based on the MIPS architecture. Because there were no external bus mastering devices on the bus, the system used a subset of the full MIPS bus. The selected set of signals, with varying burst times, and varying response times, were sufficient to implement the device.
【0166】バスは同期モードで動作し、アクティビテ
ィはbusclk信号の立上り端でスケジューリングされる。
信号およびプロトコルは以下に記載するとおりである。
次のバス信号が用いられる。 ・SysAD [31..0] 多重化システムアドレスおよびデー
タバス。 ・SysCmd [4..0] データおよびトランザクションタイ
プを識別するコマンドバス。これは、リードモードに8
ワードのバーストを追加するが、エラー指示コマンドお
よび外部非応答モードを使用しない。 ・EOK 外部デバイスがコマンドを受け入れることがで
きるときにローにセットされる。 ・EValid 外部デバイスがバス上に有効なデータを置い
たときにローにセットされる。 ・PMaster プロセッサが(外部デバイスがリード応答
を発行することができるように)バス所有権を解放した
ときにハイにセットされる。外部バスマスタリングデバ
イスのないこの簡単なモデルでは、フルMIPSバスか
らの他のプロトコル信号は使用されなかった。The bus operates in a synchronous mode, with activity scheduled on the rising edge of the busclk signal.
The signals and protocols are as described below.
The following bus signals are used: • SysAD [31..0] Multiplexed system address and data bus. • SysCmd [4..0] Command bus that identifies data and transaction type. This is 8 in read mode
Adds bursts of words but does not use error indication commands and external non-response mode. EOK Set low when the external device can accept the command. EValid Set low when an external device places valid data on the bus. Set high when the PMaster processor releases bus ownership (so that external devices can issue read responses). In this simple model without an external bus mastering device, no other protocol signals from the full MIPS bus were used.
【0167】プロセッサの視点から、図18を参照する
と、バスは次の順序でドライブされる。 1.プロセッサは、EOKがローになる(これは、バスを
使用中の外部デバイスがないことを示す)のをウェイト
する。 2.プロセッサは、SysAD上にアドレスを、また、SysCm
d上に適当なWriteコマンドをドライブする。また、プロ
セッサは、PValidをローにセットする(これは、バス上
に有効なデータがあることを示す)。 3.プロセッサは、EOKがハイになる(これは、外部デ
バイスがコマンドを受け入れたことを示す)のをウェイ
トする。 4.プロセッサは、SysADバスに、busclkサイクルごと
に1個ずつデータワードを順次ドライブし、最後(また
は唯一)のワードを'no-more'フラグでマークする。 5.最後のデータサイクルの終わりに、プロセッサは、
PValidをハイにセットし(これは、プロセッサがもはや
バスをドライブしていないことを示す)、SysADおよびS
ysCmdをトライステートにする。Referring to FIG. 18 from the processor's point of view, the bus is driven in the following order. 1. The processor waits for EOK to go low, indicating that no external device is using the bus. 2. The processor writes the address on SysAD and SysCm
Drive the appropriate Write command on d. The processor also sets PValid low (this indicates that there is valid data on the bus). 3. The processor waits for EOK to go high, indicating that the external device has accepted the command. 4. The processor sequentially drives the SysAD bus with one data word every busclk cycle and marks the last (or only) word with the 'no-more' flag. 5. At the end of the last data cycle, the processor
Set PValid high (indicating that the processor is no longer driving the bus), SysAD and S
ysCmd is tri-stated.
【0168】図19を参照すると、プロセッサリードは
次のようになる。 1.プロセッサは、EOKがローになる(これは、バスを
使用中の外部デバイスがないことを示す)のをウェイト
する。 2.プロセッサは、SysAD上にアドレスを、また、SysCm
d上に適当なReadコマンドをドライブする。また、プロ
セッサは、PValidをローにセットする(これは、バス上
に有効なデータがあることを示す)。 3.プロセッサは、EOKがハイになる(これは、外部デ
バイスがコマンドを受け入れたことを示す)のをウェイ
トする。 4.プロセッサは、PValidをハイにセットし(これは、
プロセッサがもはやバスをドライブしていないことを示
す)、PMasterをハイにセットしてバスの制御を解放す
る。 5.プロセッサは、EValidがローにセットされる(これ
は、外部デバイスがバス上に有効なデータを置いたこと
を示す)のをウェイトする。次に、プロセッサは、SysA
Dバスから、busclkサイクルごとに1個ずつデータワー
ドを順次読み出す。 6.プロセッサは、EValidがハイにセットされるのをウ
ェイトしてから、PMasterをローにセットし、バスの制
御を再び獲得する。Referring to FIG. 19, the processor read is as follows. 1. The processor waits for EOK to go low, indicating that no external device is using the bus. 2. The processor writes the address on SysAD and SysCm
Drive the appropriate Read command on d. The processor also sets PValid low (this indicates that there is valid data on the bus). 3. The processor waits for EOK to go high, indicating that the external device has accepted the command. 4. The processor sets PValid high (this is
(Indicating that the processor is no longer driving the bus), set PMaster high to release control of the bus. 5. The processor waits for EValid to be set low, indicating that the external device has placed valid data on the bus. Next, the processor
Data words are sequentially read from the D bus one by one every busclk cycle. 6. The processor waits for EValid to be set high, then sets PMaster low and regains control of the bus.
【0169】UARTは、次のような非常に単純な信号
モデルを使用した。 ・uartD{7..0}は、チップとの間での単一データ(非
バースト)アクセスをサポートするバイト幅双方向デー
タバスである。 ・uartAは、2つの内部レジスタのうちの一方を選択す
るために用いられる1ビット「アドレス」バスである。
アドレス'0'は制御レジスタであり、アドレス'1'はデー
タレジスタである。 ・uartRは、プロセッサがリード要求を発行した場合に
ローにセットされる。 ・uartWは、プロセッサがライト要求を発行した場合に
ローにセットされる。 ・uartSは、UARTを選択するためにローにセットさ
れる。アドレスおよびデータバスの値は、チップが選択
されている間中有効でなければならない。 ・uartIは、UARTからプロセッサに割込みを通知す
るためにハイにセットされる。The UART used a very simple signal model as follows: UartD {7..0} is a byte-wide bidirectional data bus that supports single data (non-burst) access to and from the chip. UartA is a 1-bit "address" bus used to select one of the two internal registers.
Address '0' is a control register and address '1' is a data register. UartR is set low when the processor issues a read request. UartW is set low when the processor issues a write request. UartS is set low to select UART. The address and data bus values must be valid as long as the chip is selected. UartI is set high to signal an interrupt from the UART to the processor.
【0170】busclkは、チップに対する同期クロック信
号であり、すべての遷移は、クロックの立上り端でサン
プリングされる。Busclk is the synchronous clock signal to the chip, and all transitions are sampled on the rising edge of the clock.
【0171】UARTは、アドレスおよびデータの値が
同時に提示されることを要求するため、グルーロジック
は、多重化されたSysADバスからの翻訳を処理しなけれ
ばならない。Since the UART requires that the address and data values be presented simultaneously, glue logic must handle the translation from the multiplexed SysAD bus.
【0172】[0172]
【表1】 [Table 1]
【0173】制御レジスタは、まずインデックス番号を
書き込んだ後に8ビットのデータを書き込むという2段
階アクセスによって、内部UARTレジスタにアクセス
するために用いられる。制御レジスタ0は、制御アドレ
スに制御オペレーションを書き込むことによって直接に
アクセスされることが可能である(制御オペレーション
は、間接レジスタ番号の範囲外のバイナリ値を有す
る)。この最小モデルでは、上記テーブル2にリストし
た制御オペレーションのみがインプリメントされた。こ
れらは、割込み駆動およびポーリングモードの出力(入
力はない)を提供するのに十分であった。The control register is used to access the internal UART register by two-step access in which an index number is first written and then 8-bit data is written. Control register 0 can be accessed directly by writing a control operation to the control address (the control operation has a binary value outside the range of the indirect register number). In this minimal model, only the control operations listed in Table 2 above were implemented. These were sufficient to provide an interrupt driven and polled mode output (no input).
【0174】システムメモリは、busclkの速度でSysAD
ラインを通じてのバックツーバックバーストモード転送
をサポートすると仮定された。メモリコントローラに
は、プロセッサバス上のSysAD、SysCmd、PMasterおよび
EValid信号へのアクセスが許可され、busclkでクロック
された。メモリコントローラは、グルーロジックへのさ
らに2つの次の信号を使用した。 ・memSはメモリchip-selectであり、これは、メモリ
が、バス上のコマンドおよびアドレスデータのターゲッ
トであったときにローにセットされる。 ・memEOKは、メモリコントローラがコマンドを受け入れ
ることができるときに、メモリコントローラによってロ
ーにセットされる。The system memory stores the SysAD at the speed of busclk.
It was assumed to support back-to-back burst mode transfer over the line. Memory controllers include SysAD, SysCmd, PMaster and
Access to the EValid signal was granted and clocked by busclk. The memory controller used two additional signals to glue logic. MemS is the memory chip-select, which is set low when the memory was the target for command and address data on the bus. MemEOK is set low by the memory controller when it can accept commands.
【0175】「現実の」コントローラの内部の詳細(例
えば、RASおよびCAS生成)はモデル化されず、す
べてのメモリアクセスは単一の(バス)クロックサイク
ルで応答された。The internal details of the "real" controller (eg, RAS and CAS generation) were not modeled, and all memory accesses were responded in a single (bus) clock cycle.
【0176】UARTおよびメモリの実装はいずれも、
上記のアーキテクチャ仕様によるそれらのオペレーショ
ンを制御するために、VHDL信号ライブラリを用いて
直接にbehavioral Cで書かれた。さらに、UART実装
は、ISSログファイルに出力されるように命令された
文字列を格納した。このことは、シミュレータは、シミ
ュレートされたシステムの出力の視覚的記録を生成した
ことを意味する。グルーロジックは、アドレスでコーデ
ィングおよび信号翻訳のための状態マシンを実装するV
HDLで、単一のエンティティとして書かれた。VHD
Lは、S1000の方法に従ってCに翻訳された。The UART and memory implementations are both
Written directly in behavioral C using the VHDL signal library to control their operation according to the above architectural specifications. In addition, the UART implementation stored a string instructed to be output to the ISS log file. This means that the simulator has generated a visual record of the output of the simulated system. Glue logic implements a state machine for coding and signal translation at addresses.
Written in HDL as a single entity. VHD
L was translated into C according to the method of S1000.
【0177】次に、上記の命令セットシミュレータをコ
シミュレーション環境に統合することについて説明す
る。ISSをファブリック環境に統合するためには、I
SSにいくつかの変更が必要とされた。いったんI/O
オペレーションが予測可能な継続時間のものでなくなる
と、その変更のほとんどは、タイミングの変更に関する
ものであった。Next, integration of the above instruction set simulator into a co-simulation environment will be described. To integrate the ISS into the fabric environment, I
Some changes were needed for SS. Once I / O
When the operation was no longer of predictable duration, most of the changes were related to timing changes.
【0178】ファブリックインタフェース、プロセスの
同期クロックおよび信号のセットを初期化するために、
次のコードがプロセス初期化シーケンスに追加された。To initialize the fabric interface, a set of process synchronization clocks and signals,
The following code has been added to the process initialization sequence:
【0179】 FabInit(); /* pclock周期を指定する */ fabric_set_clock("pclk", 0, 5); /* プロセッサ信号の初期状態 */ Signal(PMaster, 0); Signal(PValid, 1); /* ドライブされるまでデータおよびコマンドバスは浮遊 */ SignalZ(SysAD); SignalZ(SysCmd);FabInit (); / * Specify pclock cycle * / fabric_set_clock ("pclk", 0, 5); / * Initial state of processor signal * / Signal (PMaster, 0); Signal (PValid, 1); / * Data and command bus are floating until driven * / SignalZ (SysAD); SignalZ (SysCmd);
【0180】単一のプロセッサクロックティックをシミ
ュレートするルーチンは、各ティックを実行する前に、 WaitClkR(); への呼出しを追加することによって、中央ファブリック
プロセスからのpclk上の立上り端変化をウェイトするよ
うに変更された。これはまた、プロセッサを他のハード
ウェアコンポーネントと同期させる効果を有する。注意
すべき点であるが、このオペレーションのシーケンス
は、選択されたデータバスモデルのアーキテクチャによ
って決定されているため、モデル化されているシステム
に固有である。このような統合ステップは、コシミュレ
ートされるそれぞれの設計ごとに実行されることにな
る。The routine that simulates a single processor clock tick waits for rising edge changes on the pclk from the central fabric process by adding a call to WaitClkR (); before executing each tick. Was changed to This also has the effect of synchronizing the processor with other hardware components. It should be noted that this sequence of operations is specific to the system being modeled, as it is determined by the architecture of the selected data bus model. Such an integration step will be performed for each cosimulated design.
【0181】入出力(フェッチおよびストア)オペレー
ションの基本的なストラテジは同じままであった。メモ
リ領域デスクリプタに依存して、データキャッシュ(ま
たは命令キャッシュ)をまず参照した後、データがキャ
ッシュにない場合には、外部デバイスのうちの1つがア
クセスされる。主な変更は、すべてのアドレスデコーデ
ィングがグルーロジックで行われ、「ハードウェア」記
述およびdevice_storeルーチンが使用されなかったこと
である。The basic strategy for input / output (fetch and store) operations remained the same. Depending on the memory area descriptor, after first referring to the data cache (or instruction cache), if the data is not in the cache, one of the external devices is accessed. The main change is that all address decoding was done in glue logic and the "hardware" description and device_store routine were not used.
【0182】インタフェース自体は、上記の説明に従っ
た。例えば、新たなオペレーションは次のように開始さ
れた(変数thisはI/O要求データ構造体を指すと仮定
する)。The interface itself complies with the above description. For example, a new operation was started as follows (assuming the variable this points to an I / O request data structure):
【0183】 すなわち、EOKがローにセットされるのをウェイトした
後、バス上に信号をドライブする。なお、コマンドが開
始されたかどうかにかかわらず、ユニットは次のティッ
クの間ストールされ、リソースは利用可能でないとマー
クされなければならない。また、このルーチンはそのす
べての信号に対してポーリングを行う。ウェイトポイン
トが'step'ルーチンにあるからである。[0183] That is, after waiting for EOK to be set low, the signal is driven onto the bus. Note that the unit must be stalled for the next tick, regardless of whether the command has been initiated and resources must be marked as unavailable. This routine also polls all its signals. This is because the weight point is in the 'step' routine.
【0184】外部バスマスタリングデバイス、あるい
は、エラー処理がない場合、外部インタフェースは、状
態が10個より少ない小規模な状態マシンで捕捉され
た。また、このマシンは、命令フェッチサイクルも処理
した。In the absence of an external bus mastering device or error handling, the external interface was captured by a small state machine with fewer than 10 states. This machine also handled the instruction fetch cycle.
【0185】このようなシステムに割込み信号を統合す
る際には特別の注意をしなければならない。シングルプ
ロセス実装では、シミュレートされるプロセッサの割込
み処理中の制御レジスタを直接修正することが可能であ
る。コシミュレーションシステムでは、これは、UAR
Tコードにおける Signal(uartI, 1); への呼出しと、ISSプロセスにおける対応するテスト によって置き換えなければならない。このアプローチ
は、バス制御ユニット(BusControl Unit)がビジーであ
りプロセッサが割込みを直ちに処理することができない
とき、または、割込みが実行可能になる前に命令フェッ
チを要求するときに問題を引き起こした。特別の対処が
なければ、プロセッサの優先度レジスタが割込み優先度
に更新されるまで、割込みは各クロックティックにおい
て処理されることになる。Special care must be taken when integrating interrupt signals into such systems. In a single process implementation, it is possible to directly modify the control registers during the interrupt processing of the simulated processor. In the co-simulation system, this is the UAR
Call to Signal (uartI, 1); in T code and corresponding test in ISS process Must be replaced by This approach caused problems when the Bus Control Unit was busy and the processor could not service the interrupt immediately, or when requesting an instruction fetch before the interrupt could be executed. Unless otherwise specified, interrupts will be serviced at each clock tick until the processor's priority register is updated to the interrupt priority.
【0186】これは、割込み処理が開始されるとセット
されるフラグにより処理された。このフラグは、バス制
御ユニットにおけるアクティビティ(割込みディスパッ
チャによってスケジューリングされるアクティビティを
含む)がある限り、すべてのパイプラインスケジューリ
ングをバイパスした。このフラグをセットすることは、
割込み処理中のレジスタを検査するオペレーションが再
びスケジューリングされる前にすべてのI/Oオペレー
ションが完了してプロセッサ優先度が更新されることを
保証した。This was handled by the flag set when the interrupt processing was started. This flag bypassed all pipeline scheduling as long as there was activity in the bus control unit, including activities scheduled by the interrupt dispatcher. Setting this flag
Ensured that all I / O operations were completed and the processor priority was updated before the operation to check the register during the interrupt was rescheduled.
【0187】プロセッサクロックは、100MHzで動
作するようにセットされた。プロセッサ内では、命令キ
ャッシュと命令パイプの間の内部バスは、フルスピード
で動作するフル128ビット幅と仮定された。したがっ
て、命令パイプはキャッシュからレイテンシ0で充填さ
れる。データキャッシュは、レベル1、すなわち、フル
プロセッサスピードにあると仮定された。メモリアクセ
スはbusclkで動作したため、アクセスあたり1個の(プ
ロセッサ)ウェイト状態を必要とした。The processor clock was set to operate at 100 MHz. Within the processor, the internal bus between the instruction cache and the instruction pipe was assumed to be full 128 bits wide running at full speed. Therefore, the instruction pipe is filled with zero latency from the cache. The data cache was assumed to be at level 1, ie, full processor speed. Since the memory access was operated by the busclk, one (processor) wait state was required for each access.
【0188】UARTは、9600ボーの外部シリアル
ラインに接続されていると仮定された。したがって、文
字は1ミリ秒ごとに送出された。UART内部にはバッ
ファリングがないため、'Tx Available'信号は、ライト
オペレーションごとに1ミリ秒だけ遅延された。The UART was assumed to be connected to an 9600 baud external serial line. Thus, characters were sent every millisecond. Because there is no buffering inside the UART, the 'Tx Available' signal was delayed by 1 millisecond for each write operation.
【0189】このシステムは、前述のコード例、すなわ
ち"Hello World"プログラムの実行を繰り返すために使
用された。図20に示す出力は、MIPS−IIIアー
キテクチャCPUを含む開発ボード上で実行された、動
作中のシステムを実証している。このアーキテクチャ
は、シミュレートされているCPU(インテルI96
0)のアーキテクチャとは異なり、より能力の高いプロ
セッサがどのようにシミュレーションのために用いられ
るかを実証している。This system was used to repeat the above code example, the execution of the "Hello World" program. The output shown in FIG. 20 demonstrates a running system running on a development board that includes a MIPS-III architecture CPU. This architecture is based on the simulated CPU (Intel I96
Unlike the architecture of 0), it demonstrates how a more powerful processor is used for simulation.
【0190】ターゲットCPU自体の処理能力が低い場
合、ターゲットCPUは、シミュレーション環境をサポ
ートしておらず、適当な時間で結果を出さない可能性が
ある。軽量オペレーティングシステムのためのデバイス
ドライバを容易に書くことができるため、迅速なプロト
タイピングとシミュレーション環境が提供可能である。
シミュレータをシングルCPUに制約する理由はない。When the processing capability of the target CPU itself is low, the target CPU does not support the simulation environment and may not produce a result in an appropriate time. Because a device driver for a lightweight operating system can be easily written, a rapid prototyping and simulation environment can be provided.
There is no reason to limit the simulator to a single CPU.
【0191】軽量オペレーティングシステムコア自体を
除いて、シミュレーションシステムは、特定のマシンア
ーキテクチャとは独立である。その非常に低いオーバー
ヘッドおよびメモリ要求により、軽量オペレーティング
システムは、ページングやスワッピングによらずに、利
用可能なRAMをシミュレーションのために最大限に利
用させることができる。また、このようなシステムは一
般に、最小限の外部周辺装置のセットしか必要としない
ため、従来のワークステーションのためのシミュレーシ
ョンエンジンあるいはアクセラレータとして高性能CP
Uの利用することも考えられる。Except for the lightweight operating system core itself, the simulation system is independent of the specific machine architecture. Its very low overhead and memory requirements allow lightweight operating systems to maximize available RAM for simulation without paging or swapping. Also, since such systems generally require a minimal set of external peripherals, high performance CPs can be used as simulation engines or accelerators for traditional workstations.
U may be used.
【0192】図16を参照すると、本発明のもう1つの
特徴によれば、目的とするターゲットCPUは、通信媒
体51を通じてシミュレーションシステム40に接続さ
れた開発ボード50上に位置する。通信媒体51は、シ
ステム40内に共存するデータバスであることも可能で
ある。ターゲットアプリケーションは、開発ボード50
のCPU上で直接実行され、命令セットシミュレータの
必要性が回避される。このアプローチは、サイクルレベ
ルの制度を維持するためにCPU命令セットからのサポ
ートを必要とし、任意の与えられたCPUに対するその
実現は、すでに説明した原理から導出することが可能で
ある。Referring to FIG. 16, according to another feature of the present invention, a target CPU of interest is located on a development board 50 connected to the simulation system 40 through a communication medium 51. The communication medium 51 can be a data bus that coexists in the system 40. The target application is the development board 50
Directly on the CPU, thereby avoiding the need for an instruction set simulator. This approach requires support from the CPU instruction set to maintain cycle-level accuracy, and its implementation for any given CPU can be derived from the principles already described.
【0193】本発明のさまざまな特徴についての以上の
記載は、例示および説明の目的で提示したものである。
これは、網羅的であることや、開示したとおりの形に本
発明を限定することは意図しておらず、さまざまな修正
および変更が、上記の説明に照らして可能であり、ま
た、本発明の実施により得られる。当業者が、考えてい
る個々の用途に合わせて、さまざまな実施例においてさ
まざまな修正を施して本発明を利用することができるよ
うに、本発明の原理およびその実際的な応用について説
明した。The foregoing description of various features of the invention has been presented for purposes of illustration and description.
It is not intended to be exhaustive or to limit the invention to the precise form disclosed, and various modifications and changes are possible in light of the above description. By carrying out the following. The principles of the present invention and its practical applications have been described so that those skilled in the art can make use of the present invention with various modifications in various embodiments to suit the particular application contemplated.
【0194】したがって、本発明のいくつかの特徴につ
いてしか具体的には説明しなかったが、明らかなよう
に、本発明の技術思想および技術的範囲から離れること
なく、さまざまな変形を行うことが可能である。さら
に、頭字語は、単に、本明細書の可読性を高めるために
用いられている。注意すべき点であるが、このような頭
字語は、用いられている用語の一般性を狭めることを意
図しておらず、特許請求の範囲を限定すると解釈されて
はならない。Therefore, although only some features of the present invention have been specifically described, it is apparent that various modifications can be made without departing from the spirit and scope of the present invention. It is possible. In addition, acronyms are used merely to increase the readability of this specification. It should be noted that such acronyms are not intended to reduce the generality of the terminology used and should not be construed as limiting the scope of the claims.
【図1】マルチレイヤシミュレーション環境を有する従
来のシミュレーションシステムを示す図である。FIG. 1 is a diagram showing a conventional simulation system having a multi-layer simulation environment.
【図2】本発明の特徴による、電子回路と、その回路を
ターゲットとするソフトウェアとのコバリデーション方
法の基本プロセスフローを示す図である。FIG. 2 illustrates a basic process flow of a method for validating an electronic circuit and software targeting the circuit, according to a feature of the present invention.
【図3】本発明の特徴による、ハードウェアの動作記述
をソフトウェアモデルに翻訳する方法の詳細なプロセス
フローを示す図である。FIG. 3 illustrates a detailed process flow of a method for translating a hardware behavioral description into a software model, in accordance with an aspect of the present invention.
【図4】本発明の特徴による、ハードウェアの動作記述
をソフトウェアモデルに翻訳する方法の詳細なプロセス
フローを示す図である。FIG. 4 illustrates a detailed process flow of a method for translating a hardware behavioral description into a software model, in accordance with an aspect of the present invention.
【図5】命令セットシミュレータへのコマンドラインイ
ンタフェースの例示的なコマンドのセットを示す図であ
る。FIG. 5 illustrates an exemplary set of commands for a command line interface to an instruction set simulator.
【図6】インテル1960プロセッサによる代表的な命
令フローを示す図である。FIG. 6 is a diagram showing a typical instruction flow by the Intel 1960 processor.
【図7】本発明の特徴による、命令がターゲットマイク
ロプロセッサを通る際の命令のサイクリングを決定する
プロセスフローを示す図である。FIG. 7 illustrates a process flow for determining cycling of an instruction as it passes through a target microprocessor, in accordance with an aspect of the invention.
【図8】本発明の特徴による、命令がターゲットマイク
ロプロセッサを通る際の命令のサイクリングを決定する
プロセスフローを示す図である。FIG. 8 illustrates a process flow for determining cycling of an instruction as it passes through a target microprocessor, in accordance with an aspect of the present invention.
【図9】本発明の特徴による、命令がターゲットマイク
ロプロセッサを通る際の命令のサイクリングを決定する
プロセスフローを示す図である。FIG. 9 illustrates a process flow for determining cycling of an instruction as it passes through a target microprocessor, in accordance with an aspect of the present invention.
【図10】本発明の特徴による、軽量コンピュータオペ
レーティングシステム環境でコバリデーションシミュレ
ーションが実行される場合の、エミュレートされるター
ゲットプロセッサのプロセスフローを示す図である。FIG. 10 illustrates a process flow of an emulated target processor when a validation simulation is performed in a lightweight computer operating system environment, in accordance with an aspect of the invention.
【図11】本発明の特徴による、軽量コンピュータオペ
レーティングシステム環境でコバリデーションシミュレ
ーションが実行される場合の、エミュレートされるター
ゲットプロセッサのプロセスフローを示す図である。FIG. 11 illustrates a process flow of an emulated target processor when a validation simulation is performed in a lightweight computer operating system environment, in accordance with an aspect of the invention.
【図12】本発明の特徴による、軽量コンピュータオペ
レーティングシステム環境でコバリデーションシミュレ
ーションが実行される場合の、エミュレートされるター
ゲットプロセッサのプロセスフローを示す図である。FIG. 12 illustrates a process flow of an emulated target processor when a validation simulation is performed in a lightweight computer operating system environment, in accordance with an aspect of the invention.
【図13】本発明の特徴による、軽量コンピュータオペ
レーティングシステム環境でコバリデーションシミュレ
ーションが実行される場合の、エミュレートされるター
ゲットプロセッサのプロセスフローを示す図である。FIG. 13 illustrates a process flow of an emulated target processor when a validation simulation is performed in a lightweight computer operating system environment, in accordance with an aspect of the invention.
【図14】本発明の特徴による、軽量コンピュータシス
テム環境におけるコバリデーションの例示的なソフトウ
ェアプロセスを示す図である。FIG. 14 illustrates an exemplary software process for validation in a lightweight computer system environment, in accordance with an aspect of the invention.
【図15】本発明の特徴による、軽量コンピュータオペ
レーティングシステム環境における信号フローパスを示
す図である。FIG. 15 illustrates a signal flow path in a lightweight computer operating system environment, in accordance with an aspect of the present invention.
【図16】本発明の特徴による、ターゲットマイクロプ
ロセッサおよび電気回路のハードウェアおよびソフトウ
ェアコバリデーションのための例示的なコンピュータシ
ステムを示す図である。FIG. 16 illustrates an exemplary computer system for hardware and software validation of target microprocessors and electrical circuits, in accordance with aspects of the present invention.
【図17】本発明を用いて協調検証されるターゲットマ
イクロプロセッサ、グルーロジック、I/Oハードウェ
アおよびメモリからなる例示的なシステムを示す図であ
る。FIG. 17 illustrates an exemplary system consisting of a target microprocessor, glue logic, I / O hardware and memory co-verified using the present invention.
【図18】図17に示した例示的システムのバスリード
タイミングを示す図である。18 illustrates bus read timing for the exemplary system shown in FIG.
【図19】図17に示した例示的システムのバスライト
タイミングを示す図である。FIG. 19 illustrates bus write timing for the exemplary system shown in FIG.
【図20】図17に示した例示的システムに対して、本
発明によって生成される信号タイミングを示す図であ
る。FIG. 20 illustrates the signal timing generated by the present invention for the exemplary system shown in FIG. 17;
1 UNIXシステム 2 VSIM環境 3 内部スケジューラ 4 命令セットシミュレータ 5 VHDLシミュレーション 6 インタフェース 7 割込み 8 外部コンポーネント 10 ファブリックプロセス 11 中央制御プロセス 12 信号メンテナサブシステム 13 クロックジェネレータサブシステム 14 キューメンテナサブシステム 15 ディスプレイジェネレータ 16 スケジューラサブシステム 21 試験対象回路 22 バスアービトレーションプロセス 23 グローバルループコントローラ 24 試験刺激プロセス 30 軽量オペレーティングシステム 31 ファブリックプロセス 32 命令セットシミュレーションプロセス 33 VHDLプロセス 34 VHDLプロセス 35 I960プロセッサ 36 グルーロジック 37 UART 38 メモリサブシステム 40 プロセッサ 41 ビデオディスプレイ端末 42 メモリ 43 I/Oデバイス 44 データリンク 45 サーバ 46 プログラムライブラリ 50 開発ボード 51 通信媒体 DESCRIPTION OF SYMBOLS 1 UNIX system 2 VSIM environment 3 Internal scheduler 4 Instruction set simulator 5 VHDL simulation 6 Interface 7 Interrupt 8 External component 10 Fabric process 11 Central control process 12 Signal maintainer subsystem 13 Clock generator subsystem 14 Queue maintainer subsystem 15 Display generator 16 Scheduler Subsystem 21 Test Circuit 22 Bus Arbitration Process 23 Global Loop Controller 24 Test Stimulation Process 30 Lightweight Operating System 31 Fabric Process 32 Instruction Set Simulation Process 33 VHDL Process 34 VHDL Process 35 I960 Processor 36 Glue Logic 37 UART 38 Memory subsystem 40 processor 41 video display terminal 42 memory 43 I / O device 44 data link 45 server 46 program library 50 development board 51 communication medium
Claims (25)
る制御プログラムとのコバリデーションを行う方法にお
いて、前記電子回路および前記制御プログラムが軽量コ
ンピュータシステムオペレーティング環境で実行される
所定のコンピュータ言語を用いてシミュレートされ、 前記方法は、 前記軽量コンピュータシステムオペレーティング環境を
ターゲットとする構文からなるソフトウェアモデルに、
前記電子回路の動作シミュレーションを翻訳するステッ
プと、 命令セットシミュレーションが前記電子回路をターゲッ
トとする制御プログラムの一部を実行するように、サイ
クル精度の命令セットシミュレーションを構成するステ
ップと、 前記電子回路のソフトウェアモデルを前記命令セットシ
ミュレーションに結合して、前記軽量コンピュータオペ
レーティングシステム環境で実行される試験対象システ
ムを作成するステップと、 前記試験対象システムに刺激を入力することにより、前
記試験対象システムに結果を出力させるステップと、 を有することを特徴とする電子回路と制御プログラムと
のコバリデーション方法。1. A method for validating an electronic circuit and a control program targeting the electronic circuit, wherein the electronic circuit and the control program are executed using a predetermined computer language executed in a lightweight computer system operating environment. Simulated, the method comprising: a software model comprising a syntax targeting the lightweight computer system operating environment;
Translating an operation simulation of the electronic circuit; configuring a cycle-accurate instruction set simulation such that the instruction set simulation executes a part of a control program targeting the electronic circuit; Combining a software model with the instruction set simulation to create a system under test that executes in the lightweight computer operating system environment; and inputting a stimulus to the system under test to provide a result to the system under test. A method for validating an electronic circuit and a control program, comprising the steps of:
テップは、複数の規則を用いて、前記動作シミュレーシ
ョンを、前記軽量コンピュータシステムオペレーティン
グ環境をターゲットとする構文に変換するステップを有
することを特徴とする請求項1記載の方法。2. The method of claim 2, wherein translating the behavioral simulation comprises using a plurality of rules to translate the behavioral simulation into a syntax targeted at the lightweight computer system operating environment. The method of claim 1.
ミュレーション代入を、前記軽量コンピュータシステム
オペレーティング環境をターゲットとする内部変数構文
に変換することを特徴とする請求項2記載の方法。3. The method of claim 2, wherein one of the plurality of rules translates a behavioral simulation substitution into an internal variable syntax targeted at the lightweight computer system operating environment.
ミュレーション信号代入を、前記軽量コンピュータシス
テムオペレーティング環境をターゲットとする外部変数
構文に変換することを特徴とする請求項2記載の方法。4. The method of claim 2, wherein one of the plurality of rules translates a behavioral simulation signal substitution into an external variable syntax targeted at the lightweight computer system operating environment.
ミュレーションウェイトポイントを、前記軽量コンピュ
ータシステムオペレーティング環境をターゲットとする
ウェイト構文に変換することを特徴とする請求項2記載
の方法。5. The method of claim 2, wherein one of the plurality of rules translates a behavioral simulation weight point into a weight syntax targeted at the lightweight computer system operating environment.
ミュレーション制御構文を、前記軽量コンピュータシス
テムオペレーティング環境をターゲットとする制御構文
に変換することを特徴とする請求項2記載の方法。6. The method of claim 2, wherein one of the plurality of rules translates a behavioral simulation control syntax into a control syntax targeted at the lightweight computer system operating environment.
ーションを構成するステップは、中央処理装置をターゲ
ットとするシミュレーションを構成するステップを含む
ことを特徴とする請求項1記載の方法。7. The method of claim 1, wherein configuring a cycle-accurate instruction set simulation comprises configuring a simulation targeting a central processing unit.
するステップは、グルーロジックを通じてターゲット中
央処理装置に接続されたハードウェアデバイスを表すよ
うにアドレス範囲をマッピングするステップを含むこと
を特徴とする請求項7記載の方法。8. The method of claim 7, wherein configuring the instruction set simulation comprises mapping an address range to represent a hardware device connected to the target central processing unit through glue logic. the method of.
するステップは、ターゲット中央処理装置のキャッシュ
動作をエミュレートするステップを含むことを特徴とす
る請求項7記載の方法。9. The method of claim 7, wherein configuring the instruction set simulation comprises emulating a cache operation of a target central processing unit.
成するステップは、ターゲット中央処理装置の命令スケ
ジューリングをエミュレートするステップを含むことを
特徴とする請求項7記載の方法。10. The method of claim 7, wherein configuring the instruction set simulation comprises emulating instruction scheduling of a target central processing unit.
ーティング環境をターゲットとする構文は、前記軽量コ
ンピュータシステムオペレーティング環境をターゲット
とするインタフェースライブラリの一部を含むことを特
徴とする請求項1記載の方法。11. The method of claim 1, wherein the syntax targeting the lightweight computer system operating environment includes a portion of an interface library targeting the lightweight computer system operating environment.
とする制御プログラムとのコバリデーションを行うコン
ピュータシステムにおいて、 前記電子回路および制御プログラムは、軽量コンピュー
タシステムオペレーティング環境で実行される所定のコ
ンピュータ言語を用いてシミュレートされ、 前記コンピュータシステムは、 すべてのグローバル信号の状態を管理するソフトウェア
手段と、 クロック信号を生成するソフトウェア手段と、 イベントをウェイトするプロセスキューを管理するソフ
トウェア手段と、 所定のタイミング間隔で少なくとも1つのプロセスを実
行するソフトウェア手段と、 中央プロセス制御を行うソフトウェア手段と、 を有することを特徴とするコンピュータシステム。12. A computer system for validating an electronic circuit and a control program targeting the electronic circuit, wherein the electronic circuit and the control program execute a predetermined computer language executed in a lightweight computer system operating environment. Simulated using: a computer means for managing the state of all global signals; a software means for generating a clock signal; a software means for managing a process queue to wait for an event; and a predetermined timing interval. A computer system, comprising: software means for executing at least one process in; and software means for controlling central processes.
を表示するディスプレイを駆動するソフトウェア手段を
さらに有することを特徴とする請求項12記載のコンピ
ュータシステム。13. The computer system according to claim 12, further comprising software means for driving a display for displaying a state change with respect to the global signal.
とする制御プログラムとのコバリデーションを行うコン
ピュータシステムにおいて、 前記電子回路および制御プログラムは、軽量コンピュー
タシステムオペレーティング環境で実行される所定のコ
ンピュータ言語を用いてシミュレートされ、 前記コンピュータシステムは、 プロセッサと、 前記コンピュータシステムが中央制御プロセスを実行す
ることを可能にするように適応したソフトウェア命令を
含むメモリと、を有し、 前記中央制御プロセスは、 複数のグローバル信号の状態を管理する信号メンテナサ
ブプロセスと、 ソフトウェアモデルおよび命令セットシミュレータによ
って使用されるクロック信号を生成するクロック信号ジ
ェネレータサブプロセスと、 ソフトウェアモデルおよび命令セットシミュレータから
のイベントをウェイトするプロセスキューを管理するキ
ューメンテナサブプロセスと、 所定のタイミング間隔を生成するタイマサブプロセス
と、 少なくとも前記信号メンテナサブプロセス、クロック信
号ジェネレータサブプロセス、キューメンテナサブプロ
セスおよびタイマサブプロセスの実行を制御するコント
ローラサブプロセスと、を有することを特徴とするコン
ピュータシステム。14. A computer system for validating an electronic circuit and a control program targeting the electronic circuit, wherein the electronic circuit and the control program execute a predetermined computer language executed in a lightweight computer system operating environment. Simulated using the computer system, comprising: a processor; and a memory containing software instructions adapted to enable the computer system to execute a central control process, wherein the central control process comprises: A signal maintainer subprocess for managing the state of a plurality of global signals; a clock signal generator subprocess for generating clock signals used by a software model and an instruction set simulator; and a software model. Maintainer sub-process for managing a process queue that waits for events from the CPU and the instruction set simulator; a timer sub-process for generating a predetermined timing interval; And a controller sub-process for controlling execution of the timer sub-process.
秒以上の時間間隔をシミュレートすることを特徴とする
請求項14記載のコンピュータシステム。15. The computer system according to claim 14, wherein said predetermined timing interval simulates a time interval of 1 nanosecond or more.
秒未満の時間間隔をシミュレートすることを特徴とする
請求項14記載のコンピュータシステム。16. The computer system of claim 14, wherein said predetermined timing interval simulates a time interval of less than one nanosecond.
を表示するグローバルディスプレイサブプロセスをさら
に有することを特徴とする請求項14記載のコンピュー
タシステム。17. The computer system according to claim 14, further comprising a global display sub-process for displaying a state change with respect to the global signal.
る電子回路と、該マイクロプロセッサをターゲットとす
る制御プログラムとのコバリデーションを行うコンピュ
ータシステムにおいて、 前記電子回路、ターゲットマイクロプロセッサおよび制
御プログラムは、所定のコンピュータ言語および所定の
インタフェースライブラリを用いてシミュレートされ、 前記コンピュータシステムは、 前記電子回路の機能が所定のインタフェースライブラリ
の一部を含む所定のコンピュータ言語構文に翻訳されて
いる前記電子回路のソフトウェアモデルと、 前記制御プログラムの一部を実行するときに命令セット
シミュレーションが前記ターゲットマイクロプロセッサ
によって実行される命令をシミュレートするような、前
記ターゲットマイクロプロセッサの命令セットシミュレ
ーションと、 前記電子回路のソフトウェアモデルと、前記ターゲット
マイクロプロセッサの命令セットシミュレーションを互
いに結合する中央制御プロセスと、を有し、 前記中央制御プロセスは、 複数のグローバル信号の状態を管理する信号メンテナサ
ブプロセスと、 前記ソフトウェアモデルおよび命令セットシミュレータ
によって使用されるクロック信号を生成するクロック信
号ジェネレータサブプロセスと、 前記ソフトウェアモデルおよび命令セットシミュレータ
からのイベントをウェイトするプロセスキューを管理す
るキューメンテナサブプロセスと、 所定のタイミング間隔を生成するタイマサブプロセス
と、 少なくとも前記信号メンテナサブプロセス、クロック信
号ジェネレータサブプロセス、キューメンテナサブプロ
セスおよびタイマサブプロセスの実行を制御する制御サ
ブプロセスと、を有することを特徴とするコンピュータ
システム。18. A computer system for validating an electronic circuit controlled by a microprocessor and a control program targeting the microprocessor, wherein the electronic circuit, the target microprocessor and the control program are provided in a predetermined computer language. And simulated using a predetermined interface library, the computer system comprising: a software model of the electronic circuit in which a function of the electronic circuit is translated into a predetermined computer language syntax including a part of the predetermined interface library; The target microprocessor, wherein an instruction set simulation simulates instructions executed by the target microprocessor when executing a portion of the control program. And a central control process that couples the software model of the electronic circuit and the instruction set simulation of the target microprocessor to one another, the central control process comprising: A signal maintainer subprocess for managing; a clock signal generator subprocess for generating a clock signal used by the software model and the instruction set simulator; and a queue for managing a process queue that waits for events from the software model and the instruction set simulator. A maintainer subprocess, a timer subprocess for generating a predetermined timing interval, at least the signal maintainer subprocess, a clock signal generator subprocess, and a queue subprocess. Computer system, comprising a control sub-process that controls the execution of the maintainer subprocesses and timer subprocesses, the.
秒以上の時間間隔をシミュレートすることを特徴とする
請求項18記載のコンピュータシステム。19. The computer system according to claim 18, wherein the predetermined timing interval simulates a time interval of 1 nanosecond or more.
秒未満の時間間隔をシミュレートすることを特徴とする
請求項18記載のコンピュータシステム。20. The computer system of claim 18, wherein said predetermined timing interval simulates a time interval of less than one nanosecond.
態変化を表示する信号ディスプレイサブプロセスをさら
に有することを特徴とする請求項18記載のコンピュー
タシステム。21. The computer system according to claim 18, further comprising a signal display sub-process for displaying a state change for the plurality of global signals.
とする制御プログラムとのコバリデーションを行うコン
ピュータシステムのための実行可能プログラムにおい
て、 前記電子回路および制御プログラムは、所定のコンピュ
ータ言語を用いてシミュレートされ、 前記実行可能プログラムは、 コンピュータ上で実行されるときに、複数のグローバル
信号の状態を管理する第1実行可能コード部分と、 コンピュータ上で実行されるときに、複数のクロック信
号を生成する第2実行可能コード部分と、 コンピュータ上で実行されるときに、イベントをウェイ
トするプロセスキューを管理する第3実行可能コード部
分と、 コンピュータ上で実行されるときに、所定のタイミング
間隔を生成する第4実行可能コード部分と、 コンピュータ上で実行されるときに、少なくとも前記第
1、第2、第3および第4実行可能コード部分の実行を
制御する第5実行可能コード部分と、 を有することを特徴とする、電子回路と制御プログラム
のコバリデーションを行うコンピュータシステムのため
の実行可能プログラム。22. An executable program for a computer system for validating an electronic circuit and a control program targeting the electronic circuit, wherein the electronic circuit and the control program are simulated using a predetermined computer language. The executable program, when executed on a computer, generates a first executable code portion that manages a state of a plurality of global signals; and, when executed on a computer, generates a plurality of clock signals. Generating a second executable code portion, a third executable code portion that manages a process queue that waits for an event when executed on the computer, and a predetermined timing interval when executed on the computer. Fourth executable code portion to be executed on a computer And at least a fifth executable code portion for controlling execution of the first, second, third and fourth executable code portions when the electronic circuit and the control program are validated. Executable program for a computer system that does
御プログラムとを含むシステムの検証のための、ターゲ
ットプロセッサのサイクル精度の命令セットシミュレー
ションを導出する方法において、 メモリオペレーションの完了を待機することによってキ
ャッシュがロードされるまで前記ターゲットプロセッサ
がストールされるように、メモリとキャッシュの間の相
互作用をデータバス上の信号のシーケンスとしてモデル
化するステップと、 前記ターゲットプロセッサの内部データフローモデルか
ら導出される信号のシーケンスを用いるとともに、内部
バス幅およびタイミングを用いて、命令パイプラインを
充填して、適当なクロックサイクル数だけ遅延を行うス
テップと、 前記ターゲットプロセッサの命令デコードサイクルを実
行して、実行のために利用可能な命令を解釈するステッ
プと、 スケジューリングされた命令がパイプライン切断をイン
プリメントしているかどうかを判定し、スケジューリン
グされた命令がパイプライン切断をインプリメントして
いる場合、将来の命令のためにスケジューラをストール
させるステップと、 スケジューリングされた命令を、適当な命令パイプライ
ンまたはハードウェアコンポーネントに転送し、各命令
ごとにサイクル実行時間を計算するステップと、 非決定性タイミングがあるかどうかを判定するステップ
と、 計算された実行サイクルの終端で利用可能な結果を出力
するステップと、 前記ターゲットプロセッサのエミュレートされた制御レ
ジスタとともに、信号インタフェースを用いて、割込み
ハンドラが次のサイクルにスケジューリングされるべき
かどうかを決定するステップと、 を有することを特徴とする命令セットシミュレーション
を導出する方法。23. A method for deriving a cycle-accurate instruction set simulation of a target processor for verification of a system including an electronic circuit and a control program for controlling the electronic circuit, wherein waiting for completion of a memory operation. Modeling the interaction between memory and cache as a sequence of signals on a data bus such that the target processor is stalled until the cache is loaded by the processor; and deriving from an internal data flow model of the target processor Using an internal bus width and timing to fill the instruction pipeline and delay by an appropriate number of clock cycles, and executing an instruction decode cycle of the target processor, Interpreting the instructions available for execution and determining if the scheduled instruction implements pipeline disconnection, and if the scheduled instruction implements pipeline disconnection, a future instruction Stalling the scheduler for each; transferring the scheduled instructions to the appropriate instruction pipeline or hardware component; calculating the cycle execution time for each instruction; and determining if there is non-deterministic timing. Determining; outputting the result available at the end of the calculated execution cycle; and using the signal interface with the emulated control register of the target processor to schedule the interrupt handler for the next cycle. Method of deriving a set of instructions simulations characterized by having the steps of: determining whether to be a ring.
かを判定するステップは、 非決定性タイミングがある場合、各クロックサイクルに
おいて終了条件を評価するステップと、 非決定性タイミングがない場合、計算されたタイミング
に対するリソース割当てを伝搬させるステップと、 を含むことを特徴とする請求項23記載の方法。24. The step of determining whether there is nondeterministic timing includes: evaluating the end condition in each clock cycle if there is nondeterministic timing; and determining whether there is no nondeterministic timing. The method of claim 23, comprising: propagating a resource assignment.
イプライン切断をインプリメントしているかどうかを判
定するステップは、 スケジューリングされた命令がパイプライン切断をイン
プリメントしている場合、将来の命令のためにスケジュ
ーラをストールさせるステップを有することを特徴とす
る請求項23記載の方法。25. The step of determining whether the scheduled instruction implements pipeline disconnection comprises, if the scheduled instruction implements pipeline disconnection, stalling the scheduler for future instructions. The method of claim 23, comprising the step of:
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US68874500A | 2000-10-17 | 2000-10-17 | |
US09/688745 | 2000-10-17 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004367468A Division JP4422011B2 (en) | 2000-10-17 | 2004-12-20 | Method of co-validation between electronic circuit and control program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2002175344A true JP2002175344A (en) | 2002-06-21 |
Family
ID=24765595
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001274491A Pending JP2002175344A (en) | 2000-10-17 | 2001-09-11 | Co-validation method between electronic circuit and control program |
JP2004367468A Expired - Fee Related JP4422011B2 (en) | 2000-10-17 | 2004-12-20 | Method of co-validation between electronic circuit and control program |
JP2007336117A Pending JP2008140405A (en) | 2000-10-17 | 2007-12-27 | Co-validation method between electronic circuit and control program |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004367468A Expired - Fee Related JP4422011B2 (en) | 2000-10-17 | 2004-12-20 | Method of co-validation between electronic circuit and control program |
JP2007336117A Pending JP2008140405A (en) | 2000-10-17 | 2007-12-27 | Co-validation method between electronic circuit and control program |
Country Status (1)
Country | Link |
---|---|
JP (3) | JP2002175344A (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006505056A (en) * | 2002-10-31 | 2006-02-09 | エス・アール・シィ・コンピューターズ・インコーポレイテッド | System and method for converting a control flow graph representation to a control data flow graph representation |
US7155690B2 (en) | 2003-01-31 | 2006-12-26 | Seiko Epson Corporation | Method for co-verifying hardware and software for a semiconductor device |
JP2008204006A (en) * | 2007-02-16 | 2008-09-04 | Fujitsu Ltd | Software generation apparatus and simulation system |
JP2009524138A (en) * | 2006-01-20 | 2009-06-25 | メンター グラフィックス コーポレイション | Modeling and simulation methods |
JP2013521583A (en) * | 2010-03-04 | 2013-06-10 | シノプシイス インコーポレイテッド | Concurrent and serial logic simulation of hardware design |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007048019A (en) * | 2005-08-10 | 2007-02-22 | Sony Computer Entertainment Inc | Emulation method, emulator, computer embedded device, and program for emulator |
JP2007048020A (en) * | 2005-08-10 | 2007-02-22 | Sony Computer Entertainment Inc | Emulation method, emulator, computer embedded device, and program for emulator |
JP7618450B2 (en) | 2021-01-19 | 2025-01-21 | キヤノン株式会社 | Image capture device, image capture device control method and program |
-
2001
- 2001-09-11 JP JP2001274491A patent/JP2002175344A/en active Pending
-
2004
- 2004-12-20 JP JP2004367468A patent/JP4422011B2/en not_active Expired - Fee Related
-
2007
- 2007-12-27 JP JP2007336117A patent/JP2008140405A/en active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006505056A (en) * | 2002-10-31 | 2006-02-09 | エス・アール・シィ・コンピューターズ・インコーポレイテッド | System and method for converting a control flow graph representation to a control data flow graph representation |
US7155690B2 (en) | 2003-01-31 | 2006-12-26 | Seiko Epson Corporation | Method for co-verifying hardware and software for a semiconductor device |
JP2009524138A (en) * | 2006-01-20 | 2009-06-25 | メンター グラフィックス コーポレイション | Modeling and simulation methods |
JP2008204006A (en) * | 2007-02-16 | 2008-09-04 | Fujitsu Ltd | Software generation apparatus and simulation system |
JP2013521583A (en) * | 2010-03-04 | 2013-06-10 | シノプシイス インコーポレイテッド | Concurrent and serial logic simulation of hardware design |
Also Published As
Publication number | Publication date |
---|---|
JP2008140405A (en) | 2008-06-19 |
JP4422011B2 (en) | 2010-02-24 |
JP2005135436A (en) | 2005-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Gauthier et al. | Automatic generation and targeting of application-specific operating systems and embedded systems software | |
Bergeron | Writing testbenches: functional verification of HDL models | |
Gligor et al. | Using binary translation in event driven simulation for fast and flexible MPSoC simulation | |
JP2008140405A (en) | Co-validation method between electronic circuit and control program | |
US12093752B2 (en) | Processor based logic simulation acceleration and emulation system | |
Engblom et al. | Full-system simulation from embedded to high-performance systems | |
Merz et al. | Simgrid mc: Verification support for a multi-api simulation platform | |
Bacivarov et al. | Timed HW-SW cosimulation using native execution of OS and application SW | |
Varona-Gomez et al. | AADL simulation and performance analysis in SystemC | |
Cox | Ritsim: Distributed systemc simulation | |
Chevalier et al. | SPACE: A hardware/software SystemC modeling platform including an RTOS | |
Ortega et al. | Models and methods for hw/sw intellectual property interfacing | |
Lapalme et al. | . NET framework-a solution for the next generation tools for system-level modeling and simulation | |
Varona-Gómez et al. | Architectural optimization & design of embedded systems based on AADL performance analysis | |
Lantreibecq et al. | Model checking and co-simulation of a dynamic task dispatcher circuit using CADP | |
Chen et al. | Out-of-order parallel discrete event simulation for electronic system-level design | |
Wilkes et al. | Application of high level interface-based design to telecommunications system hardware | |
Bailey et al. | Codesign experiences based on a virtual platform | |
Yu | Software synthesis for System-on-Chip | |
Kwon et al. | Embedded software generation from system level specification for multi-tasking embedded systems | |
Weinstock | Parallel SystemC simulation for electronic system level design | |
Ganjehloo | Integrating Cycle-Accurate RTL Models with gem5's System Simulation | |
Sharma | PGAS Communication for Heterogeneous Clusters with FPGAs | |
Walters | A practical objected-oriented approach for distributed real-time simulation | |
Martin et al. | Configurable, extensible processor system simulation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041019 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20050301 |