//被テスト回路 module test_circuit( output wire wire_a); pullup (wire_a), (wire_b); // pulldown (wire_a),(wire_b); // pulldown (strong0) (wire_a),(wire_b); // pullup (strong1) (wire_a),(wire_b); endmodule module bus; wire wire_a; test_circuit dut(wire_a);//このモジュールは、プルアップされている?信号強度で処理を変えたいが。。 reg enable; //wire_aの信号強度をNMOSでバッファする。wire_aには影響を与えず、かつ信号強度を減衰なく伝播する nmos ck1(st1,wire_a,enable);// wire_a---| > ---st1 nmos ck2(pl1,wire_a,enable);//以下同じ nmos ck3(st0,wire_a,enable);// nmos ck4(pl0,wire_a,enable);// pullup (strong1) n_ck1(st1);//ストロング1をぶつけて、Xになるかどうかを調べる strong1 ----st1 pullup (pull1) n_ck2(pl1);//以下同じ pulldown (strong0) n_ck3(st0);// pulldown (pull0) n_ck4(pl0);// initial begin enable=1;//測定回路オン #1;//wireを見るのでDelay挿入 $display("wire_a=%v st1=%v pl1=%v st0=%v pl0=%v",wire_a,st1,pl1,st0,pl0);//信号強度を表示 if(wire_a===1'bz) $display("ハイインピーダンスです。"); else if (st1===1'b1 && st0===1'b0 && pl1===1'b1 && pl0===1'bx) $display("信号強度は pull1 です。");//zxを比較するので===を使う else if(st1===1'b1 && st0===1'b0 && pl1===1'bx && pl0===1'b0) $display("信号強度は pull0 です。"); else if (st1===1'b1 && st0===1'bx ) $display("信号強度は strong1 です。"); else if (st1===1'bx && st0===1'b0) $display("信号強度は strong0 です。"); else $display("assert(0)");//strong0/1 もしくはpull0/1のみを前提にしている end endmodule