こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Verilog-HDLでの記述方法

Verilog-HDLで回路を記述しているのですが、疑問点があるので質問させていただきます。
回路記述はおおまかに以下のようなものです。

module Adder(A, B, S, C);
input [3:0] A;
input [3:0] B;
output [3:0] S;
output C;

4ビット加算器のインスタンス(.A(A), .B(B), .S(S), .C(C));
endmodule

この回路への入力は上位モジュールから与えられるとします。
このような回路記述をしていたとして、たとえば入力線Aの特定のビットが常に0になってしまう故障を記述したいとき
wire err = 1'b0;
assign A[0] = err;
という記述を追加してみたのですが、どうもA[0]には不定値が入り込んでいるようです。
このような記述ではA[0]を常に0にすることはできないのでしょうか?またこのような故障を仮定したい場合はどのように記述すべきなのでしょうか?

投稿日時 - 2009-12-09 17:00:39

QNo.5509983

困ってます

質問者が選んだベストアンサー

テストベンチで下記のように記述するのが普通です。
initial
begin
#0; //←故障させたい時間
force ***.***.A[0] = 1'b0;
end

***はインスタンス名です。
不定が入ったのは信号がぶつかっているからです。

投稿日時 - 2009-12-09 19:24:47

補足

ご回答ありがとうございます。

やはりテストベンチで記述するのが普通なんですか。
ということは、たとえばこの回路への入力が他のモジュールの出力だった場合、この上のモジュールで故障の仮定をしないといけないっていうことになるわけですね。

投稿日時 - 2009-12-10 00:18:46

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

#1です。

> たとえばこの回路への入力が他のモジュールの出力だった場合、この上のモジュールで故障の仮定をしないといけないっていうことになるわけですね。

ん?
force TestBench.MOD_A.ADD.A[0] = 1'b0;
と書けば、
インスタンスTestBenchの下のインスタンスMOD_Aの下のインスタンスADDの下のwire A[0]を直接1'b0にできますよ。
上のモジュールでは1'b0にならないはずです。

投稿日時 - 2009-12-10 20:36:53

お礼

非常に言葉足らずで申し訳ないです。

究極の目的としてはこのモジュール内で故障を仮定できるかどうかということを知りたかったのですが、それはできないということで解決いたしました。
ありがとうございました。

投稿日時 - 2009-12-11 19:13:17

あなたにオススメの質問