問題タブ [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.
unit-testing - VHDL デザインの複数のテストベンチの実行
VHDL デザインを作成するときは常に、多くのモジュールを使用する傾向があります。これらのモジュールはそれぞれ 1 つのメイン ファイルに接続され、すべてが合成されます。しかし、これらのモジュールごとに個別のテスト ベンチを作成し、グローバル プロセス用に 1 つのテスト ベンチを作成したいと考えています。これらのテストベンチをすべてリンクして連続して実行し、設計全体を 1 回の実行でテストできるようにできればよいのですが。どうすればこれを行うことができますか? 私はGHDLとアサートを使用するのが好きです。スーパーテストベンチを 1 つ作成することは可能ですか? それとも、それらを反復処理するシェルスクリプトの方が優れていますか?
verilog - Verilog Arbiter 回路が予期した出力を生成しない
次のように設定されたアービターモジュールがあります。
私のテストベンチは次のとおりです。
しかし、私が得る出力は
どの時点でも、出力の 1 ビットのみが High になります。アイドル状態の間に要求入力がアサートされると、回路は出力の対応するビットをアサートすることによってその要求を許可する必要があります。これは、対応する入力ビットがデアサートされるまでハイのままである必要があり、その時点で回路はアイドル状態に移行する必要があります。複数の入力ビットがアサートされると、最も優先度の高い要求が許可され、一番左のビットが最も優先度が高くなります。しかし、私の出力は最後まで 010 のままです。何が悪かったのか?
system-verilog - SystemVerilog テストベンチでは、インターリーブ可能なマルチサイクル トランザクションをどのように説明するのが最適ですか?
タスクを使ったトランザクションについて説明したいと思います。クロッキングブロックCBを使用しています。このタスクは私がやりたいことのようなものですが、このようにする場合、書き込みシームの値はランダムになるため、誰が最後に書き込みを行うかについて定義された順序はないと思います。
したがって、トランザクションwrite
を 1 つだけ実行すると、次のクロック サイクルで Low になります。
testing - サイズが不明なファイル行を VHDL の文字列として読み取る
私が持っているもの
可能な文字が「1」と「0」である1行のファイルがあるテストベンチを作成しようとしています。それらをすべて読み、DUT の入力として 1 つずつ使用する必要があります。
そのため、私の TB では、ファイルを読み取ってその値を DUT に渡すために、次のようなプロセスを定義しました。
何が起こっていると思いますか
最初の実行でファイルの最初の (そして唯一の) 行を読んでいますreadline
。その後、このループは再び実行されません。
次に、ファイルからのデータは内部にある必要がありますrdline
。だから私はそれを処理しなければなりません。それを行うために、rdline
長さを超えてループしようとしましたが、このループは実行されません。
そのため、ループするにはこの行を読み取る必要があると考え、そのデータをstring
変数に移動しようとしました。問題は、文字列のようなベクトル var には定義されたサイズが必要であり、ファイルの行サイズがわからないことです。
私は何を試しましたか
毎回4文字をrdline
文字列に読み込み、処理してから繰り返すなど、さまざまな方法でそれを達成しようとしました。しかし、私はそれを機能させることができませんでした。
VHDL を使用したファイルの読み取りについて、Google で非常に多くの例を見つけましたが、それらはすべてほとんど同じであり、列や予想される整数などの行形式が定義されており、1 行の不明なテキストしかありません。
rdline
何らかの方法で varから読み取ることで実現できると思いますが、実現できません。コーディングを手伝ってもらえますか?
前もって感謝します
verilog - Quartus から起動する Modelsim のシミュレーションが正しく機能しない
これがテストベンチです
そしてこれがウット
Quartus でうまくコンパイルされました。次に、Modelsim を次のように起動します: [ツール] > [RTL シミュレーション] 。Modelsim を起動しますが、入力にzzzzzzzzzzzzzが多く、出力にxxxxxxxxxxxxxxしか出力されず、波形には何も表示されません。
このテストベンチをプロジェクトに正しく追加したかどうかはわかりません。私は初心者です。私がしたことは: Assignments > Settings > Compile Test: Test Benches > newをクリックし、ファイルを探して追加し、OK です。複雑すぎるため、これが正しい方法かどうかはわかりません。これについて助けてください。
また、Quartus でテスト ベンチ ライター テンプレートを開始したことをコメントしますが、ファイルからすべてを変更して終了しました。最終結果は上記のコードです。
specman - Specman: MAIN シーケンスが終了した後、テストが終了していないのはなぜですか?
MAIN シーケンスが終了した後、私が書いたテストが終了しません。私は TEST_DONE 異議を申し立てませんでした..私が提起した異議はすべて取り下げられました。実際には、すべてのシーケンスのフローが完了してからしばらくして、テストベンチのタイムアウトでテストが終了しました..何がテストの終了を妨げているのか分かりますか? あなたが提供できる助けに本当に感謝します。