34 lines
844 B
Coq
34 lines
844 B
Coq
|
|
/*
|
||
|
|
* This should produce x StL x StL
|
||
|
|
*
|
||
|
|
* When using both nmos and pmos you get the correct
|
||
|
|
* result if only one of the control signals is X, but
|
||
|
|
* when used individually you get StX not StL. This
|
||
|
|
* appears to be a vec4 vs vec8 problem. R versions
|
||
|
|
* give similar results.
|
||
|
|
*
|
||
|
|
* If both control inputs are X and the input is 0 the
|
||
|
|
* value is calculated incorrectly.
|
||
|
|
*/
|
||
|
|
|
||
|
|
module top;
|
||
|
|
reg nctl, pctl, b;
|
||
|
|
wire c, d;
|
||
|
|
initial begin
|
||
|
|
$display("These should all produce:\nx StL x StL\n-----------");
|
||
|
|
$monitor("c=%b(%v), d=%b(%v), b=%b, nctl=%b, pctl=%b", c, c, d, d, b, nctl, pctl);
|
||
|
|
b = 0;
|
||
|
|
nctl = 0;
|
||
|
|
pctl = 1'bx;
|
||
|
|
#1 nctl = 1'bx;
|
||
|
|
#1 b = 1;
|
||
|
|
end
|
||
|
|
|
||
|
|
nmos n1 (c, b, nctl);
|
||
|
|
pmos p1 (c, b, pctl);
|
||
|
|
pmos p2 (d, b, pctl);
|
||
|
|
// bufif1 n1 (c, b, nctl);
|
||
|
|
// bufif0 p1 (c, b, pctl);
|
||
|
|
// bufif0 p2 (d, b, pctl);
|
||
|
|
endmodule
|