基本的に知りたいのは、ARMシミュレータとは何ですか?アセンブリ言語シミュレータのようなものですか?もしそうなら、Verilog シミュレータと比較してどのような違いがありますか?
1 に答える
あなたの質問はかなり広範/漠然としています。しかし、ここに行きます。
あなたが求めていることの文脈から、アームシミュレーターはおそらく命令セットシミュレーターです。プロセッサと同じように命令をデコードし、レジスタを追跡し、実行をシミュレートするソフトウェア (命令が r1 に 1 を追加すると言う場合、ソフトウェアには r1 を表す変数があり、それに 1 を追加します)。
Verilog シミュレーターは、言語が異なるだけで実際には違いはありません。verilog はハードウェア設計言語です。シミュレートする前に、コンパイルする必要があります。他の高級言語と同様に、ターゲットに関連するものにコンパイルする必要があります。シミュレータには、独自のターゲット ロジック ブロックがあります。verilog はこれらのブロックにコンパイルされ、アーム シミュレータとは異なり、そのロジックがシミュレートされます。クロック サイクルごとに、前のサイクルから接続されたブロックの出力に基づいて各ロジック エレメントへの入力を更新し、各ロジック エレメントを評価して出力を決定します。永遠に繰り返します。Verilog シミュレーターごとに、コアに異なるターゲットがあります。これは、同じコードに対して各シミュレーターから異なる結果を得る (ことができる) 理由の一部です。同様に、実際のターゲット、fpga、asic などのためにコンパイルすると、
これらのシミュレーターのいずれにも魔法はまったくありません。命令セット シミュレーターは一般的に簡単に作成でき、命令セットやコンピューターのしくみについて十分な知識を得たいと考えている人にとっては価値のある作業です (lc- のような小さなものから始めます)。 3、30分もかからないはずです)。FAST シミュレーターは別の話ですが、FUNCTIONAL シミュレーターはかなり簡単に作成できます。単純なロジック コンポーネントのネットリストにコンパイルされると、Verilog シミュレーターはおそらく簡単であり、最大のタスクでもありますが、信号とロジック関数のリストを取得するためにコードを評価および解析し、誰が何に関連付けられているかを評価するための信号とアイテムの量です。 . 命令セット シミュレーターほど簡単ではありませんが、それがどのように機能し、どのようなタスクになるかは非常に理解できます...Verilator は、C++ コードの行、多くの行、また、かなりの規模のプロジェクトは、絶叫マシンでもコンパイルに数時間から数日かかることがあります。(コンパイル時間を大幅に短縮するために、波形をオフにするヒント)。しかし、何が起こっているのかを見ると、そのタスクは理解できます。