To specify a weak inverter:
not (weak1,weak0) u0 (out0,in1);
IV0(.c(ctrl), .in(d), .out(a)); //out is z when crtl==0
IV1( .in(a), .out(b));
IVW( .in(b), .out(a)); //out has weak drive
When ctrl is 1 we only really have this in play :
IV1( .in(a), .out(b));
IVW( .in(b), .out(a));
This is a timing loop likely resulting in an unstable oscilator.