One would not use idtmod to write an event driven VCO. The idtmod operator is implemented in the continuous kernel, which would slow the simulation. It is pretty easy to write a event driven VCO model without it. Just do something like the following:
Code:module vco (out, in);
parameter real kvco = 1e9;
output out;
input in;
wreal in;
reg out = 0;
real freq, half_period = 100e-12;
always #half_period begin
freq = kvco * in;
half_period = 0.5/freq;
out = ~out;
end
endmodule