diff --git a/src/xspice/icm/xtradev/seegenerator/cfunc.mod b/src/xspice/icm/xtradev/seegenerator/cfunc.mod index dfcd3b758..d1e380a77 100644 --- a/src/xspice/icm/xtradev/seegenerator/cfunc.mod +++ b/src/xspice/icm/xtradev/seegenerator/cfunc.mod @@ -176,6 +176,10 @@ void cm_seegen(ARGS) /* structure holding parms, STATIC_VAR(last_ctrl) = (double *) malloc(sizeof(double)); last_ctrl = (double *) STATIC_VAR(last_ctrl); *last_ctrl = ctrl; + /* set breakpoints at new pulse start and pulse maximum times */ + double tatmax = *last_t_value + tfall * trise * log(trise/tfall) / (trise - tfall); + cm_analog_set_perm_bkpt(*last_t_value); + cm_analog_set_perm_bkpt(tatmax); } else { @@ -201,12 +205,15 @@ void cm_seegen(ARGS) /* structure holding parms, } if (tcurr > *last_t_value + tperiod * 0.9) { /* return some info */ - cm_message_printf("port no.: %d, port name: %s, time: %e", - *pulse_number, cm_get_node_name("out", *pulse_number - 1), *last_t_value); + cm_message_printf("port no.: %d, port name: out, \nnode names: %s, %s, pulse time: %e", + *pulse_number, cm_get_node_name("out", *pulse_number - 1), + cm_get_neg_node_name("out", *pulse_number - 1), *last_t_value); /* set the time for the next pulse */ *last_t_value = *last_t_value + tperiod; - /* set breakpoint at new pulse start time */ + /* set breakpoints at new pulse start and pulse maximum times */ + double tatmax = *last_t_value + tfall * trise * log(trise/tfall) / (trise - tfall); cm_analog_set_perm_bkpt(*last_t_value); + cm_analog_set_perm_bkpt(tatmax); (*pulse_number)++; if (*pulse_number > PORT_SIZE(out)) { if (PARAM(perlim) == FALSE)