- 締切済み
Verilogのinoutをシミュレートする方法について
Verilogのinoutをシミュレートする方法について わからないので質問させてください。 SRAMのシミュレーションモデルを書いてみて、いざ、シミュレータで シミュレーションしようと思ったのですが、テストモジュールから inoutであるdataへ接続する方法をwireでやるべきか、regでやるべきか不明で 困っています。 良い方法があれば教えていただけますでしょうか? (できれば、シミュレーション対象のソースを変更しない方法がいいです) また、Verilogのシミュレーションモデルを配布しているHPなどありましたら教えていただけますか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- bug_bug
- ベストアンサー率78% (36/46)
> ということは、O2海シミュレーションをかけなくてはならないのでしょうか? 質問の意図がよく分かりませんが, "2回"シミュレーションを実施しなければならないか?という疑問であれば, 1度で済みますがシミュレーションは必要な確認項目をすべて実施しなければなりません. 満たすべき仕様に応じて検討し, initial構文内に列挙すれば事足りるでしょう. > 出力を見るときはそのままで、入力波形を見るときは出力をHi_Zするということでしょうか? 入出力の用語定義があいまいですが, 検証対象である擬似SRAMからの出力を見る場合(READ), テストベンチ内のregと信号が衝突しますのでregを事前にHi-zにしておく必要があります. 擬似SRAMへのWRITEを行う場合は入力値をregに書き込んであれげばwireを経由し検証対象へ入力される仕組みです. 誰が信号線をドライブしているのか?をイメージできると割と簡単に理解できると思います.
- bug_bug
- ベストアンサー率78% (36/46)
inout信号のシミュレーションはwireとregを組み合わせて実施可能. 出力値を取得する場合, regをHi-zにする必要があります. 以下, 参考(ただし未検証. 適当にインデントが必要) module tb_target() paramter STEP = 10; wire DIO; reg DO; target U1( .DIO(DIO), ... ); assign DIO = DO; initial begin //-- WRITE DO = 1'b0; #STEP DO = 1'b1; //-- READ #STEP DO = 1'bz; #STEP if ( DIO == ... ) ... end end module
お礼
お礼が遅れてしまい申し訳ありません。 図も入れていただき丁寧な説明ありがとうございました。 ということは、O2海シミュレーションをかけなくてはならないのでしょうか? 出力を見るときはそのままで、入力波形を見るときは出力をHi_Zするということでしょうか?