問題タブ [test-bench]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
package - テストベンチ スティミュラスのパッケージ プロシージャ コール
FPGA をマイクロコントローラ付きのパラレル バスで使用するさまざまな設計があります。設計ごとにテストベンチを用意し、MCU タイミングをエミュレートする手順を使用して、バス上でいくつかの読み取り/書き込み操作をシミュレートしました。
簡単に再利用できるように、これらの手順をパッケージに入れる良い方法を知りたいです。現在、手順が定義されており、テストベンチ エンティティの範囲内で信号に作用します。私はむしろこのようなものが欲しいです。
パッケージ mcu_sim には、MCU バス操作をエミュレートするために必要なすべてが含まれており、プロシージャ コールを使用してスティミュラス プログラムを簡単に調整できます。mcu1内で何が起こっているかを制御する手順が必要になることを認識しています。これを行うことは可能ですか?
そうでない場合、テスト刺激の再利用可能な手順をどのように作成しますか?
vhdl - VHDL 97 および ISim でテストベンチに内部信号を取得する方法を教えてください。
VHDL 97 とザイリンクス ISim を使用してテストベンチで作業しており、波形ではなくコードから UUT 内部信号 (Modelsim のスパイ機能など) の値を知る方法を探しています。
私はVHDL-2008で簡単にできることを知っていますがalias
、誰かが別の方法を知っていますか?
ありがとう、
vhdl - vivado で固定小数点値を表示する
VHDL (std_logic_vector として定義されているコード) に固定小数点値があるとします。最後の 4 ビットが 10 進数であることはわかっています。
シミュレーターを使用すると、もちろん最後の 4 ビットが 10 進数として表示されません。シミュレーションでそれを変更する可能性はありますか?シミュレーションは、3 番目のビットの値が 0.5 、2 番目のビットの値が 0.25 であることを認識します。等々 ?
verilog - TestBench がインスタンス モジュールを実行しない
私は Verilog を初めて使用し、直接マップされたキャッシュをモデル化する Verilog コードを構築しようとしています。コンパイル プロセス内ではすべて正常に動作していますが、テストベンチ モジュールが「メモリ」モジュール (インスタンス) を実行していないようです。出力変数は、テストベンチ自体で値を割り当てたものを除いて、常に不明です。メイン モジュールでデータを入力した RAM レジスタも例外ではありません。何が問題だと思いますか?事前に感謝 これはインスタンスモジュールコードです:
これは、RAM を埋めるデータをファイルに書き込むモジュールです。
テストベンチ モジュール:
verilog - テスト ベンチの問題を使用した Verilog でのコーヒー自動販売機のシミュレーション
入力のある単純なコーヒー自動販売機の Verilog コードを作成しました。
25ps、50ps、75psと1台
なので
「00」「01」「10」「11」
それぞれ。コーヒー代は1ルピー。1rs以上投入された場合は残高が戻ってきます。そのバランスは
01、10、11
なので
25ps、50ps、1rs
それぞれ。これをテストベンチなしでシミュレートします。シミュレーションでは、出力に 2 倍のクロック パルスが必要です (25 ps を 8 回入力した場合、または出力を取得するには 8 クロック パルスが必要です。予想されるクロック パルスは 4 です)。なぜこれが起こるのですか?また、テストベンチを使用しても出力が得られませんでした。テストベンチと私のプログラムを修正するのを手伝ってください。fpgaボードでプログラムを実行して出力を確認する際に、クロック分周器が必要ですか? fpga ボードにプログラムすると、期待どおりに動作します。Xilinx vivado 2015.2 ツールと zynq ボードを使用しています。これらの問題を解決するのを手伝ってください。
vhdl - VHDL テストベンチで信号を遅延させる
テストベンチで信号に遅延を設定したいと考えています。問題は、何百ものクロック サイクルが必要なため、何百もの中間信号を使用したくないことです。
これはシミュレーション用なので、合成できないコード (おそらく WAIT または AFTER) で遅延を追加する方法はありますか?
vhdl - VHDL シミュレーションの正しいデルタは?
私は現在 MUX を実装しています。これをテストするために、入力としてデータを適切に生成し、その出力を監視するためのジェネレーターとモニターを作成しました。
MUX は Avalon Streaming インターフェイスを入力および出力として使用するため、バック プレッシャもサポートされます。
私の質問はです。テスト ベンチは立ち下がりエッジで実行され、DUT と入力データは立ち上がりエッジで生成されます。入力クロックと入力データの両方がデルタ サイクル 0 で生成されます。ただし、DUT から返され、ジェネレータを制御するバック プレッシャ レディ信号はデルタ 3 に設定されています。発生器からの時間データ (デルタ 0) は有効で、DUT の準備は有効です (デルタ 3 の背圧信号)。
ここで、DUT 入力クロックを 1 ピコ秒でスキューすると、問題が修正されます。しかし、それは間違ったアプローチのように感じます。ここでの正しい設計原則は何ですか。?
クロックを 1 ps ずらすか、少なくとも 4 デルタ移動して、すべての信号が raise_edge の前に設定されていることを確認します。
また
生成したデータを移動して、DUT の出力準備完了信号に合わせますか?
また
テストベンチからテストベンチへの決定だけですか?
また、テスト ベンチのクロックはデルタ 0 で生成し、他のすべてのクロックはその後に生成する必要があると考えていました。
Riviera-proでシミュレーションしています
system-verilog - Systemverilog Testbench 構成可能な数のインターフェイスを処理する方法
検証するデザインがあります。設計はネットワーク ルーターに似ています。複数の FIFO 入力インターフェイスと複数の FIFO 出力インターフェイスがあります。したがって、同じインターフェイスのグループが何度も繰り返されます。DUT の例:
したがって、テストベンチでは、各 FIFO インターフェイスを個別に駆動したいので、ドライバーの数も構成可能である必要があると思います。
したがって、最初の問題は、このインターフェイスを DUT に接続する方法です。私は次のようなものを見ています
また、FIFO インターフェイスの数がパラメータ化されているため、トップ インターフェイス ラッパーを env に渡す方が簡単かもしれないと思います。そう、
次に、接続インターフェイスから fifo インターフェイスへのルーティングを行う必要があります
しかし、top_intf をテストベンチ環境に渡すと、いくつかの問題が発生します。
これはNUM_In and
NUM_OUT が 1 より大きい場合に問題なく動作します。ただし、NUM が 1 の場合に問題が発生します。エラーは次のとおりです。
私が今行っていることは、たとえば、NUM_IN 値が何であるかを示すためにいくつかの定義を設定することです。
それから
別のインクルードファイルで
スクリプトを使用してテストベンチ コードを生成できると思いますが、スクリプトを使用しない方法を探しています。私は提案を受け入れます。テストベンチでこの設計状況にどのように対処しますか?
どうもありがとう!