module V_log_amp(in,out); input in; output out; voltage in,out; parameter real vin_offset = 0, // input dc offset vout_offset= 0, // output dc offset gain = 1, // amplifier gain min_arg = 1.0e-9 from (0:inf); // minimum arg for log function real log_vin_min,vin; analog begin @(initial_step) log_vin_min = log(min_arg); vin = abs(V(in)-vin_offset); if (vin < vin_min) vin = log_vin_min; else vin = log(vin); V(out) <+ gain * vin + vout_offset; end endmodule