diff --git a/.cvsignore b/.cvsignore index 035792cce..0ede33b8e 100644 --- a/.cvsignore +++ b/.cvsignore @@ -20,3 +20,8 @@ Makefile depcomp ylwrap *.tar.gz +autogen-new.log +make.log +distrib +visualc +vs-dll \ No newline at end of file diff --git a/ChangeLog b/ChangeLog index 2e1b8b72b..461645b57 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,52 @@ +2010-05-26 Holger Vogt + * xspice api update: cmcm_analog_alloc() and cm_event_alloc() + ng-spice-rework/src/include/cmproto.h + ng-spice-rework/src/include/dllitf.h + ng-spice-rework/src/xspice/cm/cm.c + ng-spice-rework/src/xspice/cm/cmevt.c + ng-spice-rework/src/xspice/examples/nco/cfunc.mod + .../src/xspice/examples/real_delay/cfunc.mod + .../src/xspice/examples/real_to_v/cfunc.mod + .../src/xspice/icm/analog/d_dt/cfunc.mod + .../src/xspice/icm/analog/hyst/cfunc.mod + .../src/xspice/icm/analog/int/cfunc.mod + .../src/xspice/icm/analog/oneshot/cfunc.mod + .../src/xspice/icm/analog/s_xfer/cfunc.mod + .../src/xspice/icm/analog/sine/cfunc.mod + .../src/xspice/icm/analog/slew/cfunc.mod + .../src/xspice/icm/analog/square/cfunc.mod + .../src/xspice/icm/analog/triangle/cfunc.mod + .../src/xspice/icm/digital/adc_bridge/cfunc.mod + .../src/xspice/icm/digital/d_and/cfunc.mod + .../src/xspice/icm/digital/d_buffer/cfunc.mod + .../src/xspice/icm/digital/d_dff/cfunc.mod + .../src/xspice/icm/digital/d_dlatch/cfunc.mod + .../src/xspice/icm/digital/d_fdiv/cfunc.mod + .../src/xspice/icm/digital/d_inverter/cfunc.mod + .../src/xspice/icm/digital/d_jkff/cfunc.mod + .../src/xspice/icm/digital/d_nand/cfunc.mod + .../src/xspice/icm/digital/d_nor/cfunc.mod + .../src/xspice/icm/digital/d_open_c/cfunc.mod + .../src/xspice/icm/digital/d_open_e/cfunc.mod + .../src/xspice/icm/digital/d_or/cfunc.mod + .../src/xspice/icm/digital/d_osc/cfunc.mod + .../src/xspice/icm/digital/d_ram/cfunc.mod + .../src/xspice/icm/digital/d_source/cfunc.mod + .../src/xspice/icm/digital/d_srff/cfunc.mod + .../src/xspice/icm/digital/d_srlatch/cfunc.mod + .../src/xspice/icm/digital/d_state/cfunc.mod + .../src/xspice/icm/digital/d_tff/cfunc.mod + .../src/xspice/icm/digital/d_xnor/cfunc.mod + .../src/xspice/icm/digital/d_xor/cfunc.mod + .../src/xspice/icm/digital/dac_bridge/cfunc.mod + ng-spice-rework/src/xspice/icm/dlmain.c + .../src/xspice/icm/xtradev/capacitor/cfunc.mod + .../src/xspice/icm/xtradev/core/cfunc.mod + .../src/xspice/icm/xtradev/inductor/cfunc.mod + .../src/xspice/icm/xtradev/lcouple/cfunc.mod + .../src/xspice/icm/xtraevt/real_delay/cfunc.mod + .../src/xspice/icm/xtraevt/real_to_v/cfunc.mod + 2010-05-22 Holger Vogt * inpfindl.c: bugfix 3004317 allow level value number given by scientific notation diff --git a/src/include/cmproto.h b/src/include/cmproto.h index 9f8baf5ed..ea48cf1fe 100755 --- a/src/include/cmproto.h +++ b/src/include/cmproto.h @@ -67,7 +67,7 @@ double cm_smooth_pwl(double x_input, double *x, double *y, int size, double input_domain, double *dout_din); double cm_analog_ramp_factor(void); -void *cm_analog_alloc(int tag, int bytes); +void cm_analog_alloc(int tag, int bytes); void *cm_analog_get_ptr(int tag, int timepoint); int cm_analog_integrate(double integrand, double *integral, double *partial); int cm_analog_converge(double *state); @@ -76,7 +76,7 @@ int cm_analog_set_perm_bkpt(double time); void cm_analog_not_converged(void); void cm_analog_auto_partial(void); -void *cm_event_alloc(int tag, int bytes); +void cm_event_alloc(int tag, int bytes); void *cm_event_get_ptr(int tag, int timepoint); int cm_event_queue(double time); diff --git a/src/include/dllitf.h b/src/include/dllitf.h index 3d2ee14e2..fc7f93406 100755 --- a/src/include/dllitf.h +++ b/src/include/dllitf.h @@ -44,7 +44,7 @@ struct coreInfo_t { double *, double *)); double ((*dllitf_cm_smooth_pwl)(double, double *, double *, int, double, double *)); double ((*dllitf_cm_analog_ramp_factor)(void)); - void * ((*dllitf_cm_analog_alloc)(int, int)); + void ((*dllitf_cm_analog_alloc)(int, int)); void * ((*dllitf_cm_analog_get_ptr)(int, int)); int ((*dllitf_cm_analog_integrate)(double, double *, double *)); int ((*dllitf_cm_analog_converge)(double *)); @@ -52,7 +52,7 @@ struct coreInfo_t { int ((*dllitf_cm_analog_set_perm_bkpt)(double)); void ((*dllitf_cm_analog_not_converged)(void)); void ((*dllitf_cm_analog_auto_partial)(void)); - void * ((*dllitf_cm_event_alloc)(int, int)); + void ((*dllitf_cm_event_alloc)(int, int)); void * ((*dllitf_cm_event_get_ptr)(int, int)); int ((*dllitf_cm_event_queue)(double)); char * ((*dllitf_cm_message_get_errmsg)(void)); diff --git a/src/xspice/cm/cm.c b/src/xspice/cm/cm.c index 6c5df7380..37277b729 100755 --- a/src/xspice/cm/cm.c +++ b/src/xspice/cm/cm.c @@ -76,7 +76,7 @@ of the state storage area can be found by cm_analog_get_ptr(). */ -void *cm_analog_alloc( +void cm_analog_alloc( int tag, /* The user-specified tag for this block of memory */ int bytes) /* The number of bytes to allocate */ { @@ -97,7 +97,7 @@ void *cm_analog_alloc( for(i = 0; i < here->num_state; i++) { if(tag == here->state[i].tag) { g_mif_info.errmsg = "ERROR - cm_analog_alloc() - Tag already used in previous call\n"; - return(NULL); + return; } } @@ -132,10 +132,6 @@ void *cm_analog_alloc( ckt->CKTstates[i] = (double *) REALLOC(ckt->CKTstates[i], ckt->CKTnumStates * sizeof(double)); } - - /* Return pointer to the allocated space in state 0 */ - return( (void *) (ckt->CKTstates[0] + (ckt->CKTnumStates - doubles_needed))); - } diff --git a/src/xspice/cm/cmevt.c b/src/xspice/cm/cmevt.c index 7508e69e0..99dfca03f 100755 --- a/src/xspice/cm/cmevt.c +++ b/src/xspice/cm/cmevt.c @@ -61,7 +61,7 @@ timesteps. */ -void *cm_event_alloc( +void cm_event_alloc( int tag, /* The user-specified tag for the memory block */ int bytes) /* The number of bytes to be allocated */ { @@ -90,7 +90,7 @@ void *cm_event_alloc( if(here->initialized) { g_mif_info.errmsg = "ERROR - cm_event_alloc() - Cannot alloc when not initialization pass\n"; - return(NULL); + return; } @@ -108,7 +108,7 @@ void *cm_event_alloc( if(desc->tag == tag) { g_mif_info.errmsg = "ERROR - cm_event_alloc() - Duplicate tag\n"; - return(NULL); + return; } desc_ptr = &(desc->next); desc = *desc_ptr; @@ -139,11 +139,6 @@ void *cm_event_alloc( state_data->total_size[inst_index]); state->step = g_mif_info.circuit.evt_step; - - - /* Return allocated memory */ - ptr = ((char *)state->block) + desc->offset; - return(ptr); } diff --git a/src/xspice/examples/nco/cfunc.mod b/src/xspice/examples/nco/cfunc.mod index 993248863..bd025adba 100755 --- a/src/xspice/examples/nco/cfunc.mod +++ b/src/xspice/examples/nco/cfunc.mod @@ -1,90 +1,92 @@ -/* $Id$ */ - -void *malloc(unsigned); - -#define OUT_STATE 0 -#define NXT_TIME 1 -#define NUM_NOTES 128 - - -/* A numerically controlled oscillator. Output frequencies */ -/* are determined according to the MIDI note number at input */ - -void ucm_nco (ARGS) -{ - - double *freq; - - int *output_state; - double *next_time; - - int i; - int index; - int scale_factor; - - double half_period; - - - if(INIT) { - - /* Setup storage for the toggled output state */ - output_state = (int *) cm_event_alloc(OUT_STATE, sizeof(int)); - next_time = (double *) cm_event_alloc(NXT_TIME, sizeof(double)); - - /* Allocate storage for frequencies */ - STATIC_VAR(freq) = malloc(NUM_NOTES * sizeof(double)); - freq = STATIC_VAR(freq); - - /* Initialize the frequency array */ - for(i = 0; i < NUM_NOTES; i++) { - if(i == 0) - freq[0] = 8.17578 * PARAM(mult_factor); - else - freq[i] = freq[i-1] * 1.059463094; - } - } - else { - - /* Get old output state */ - output_state = (int *) cm_event_get_ptr(OUT_STATE, 0); - next_time = (double *) cm_event_get_ptr(NXT_TIME, 0); - } - - - /* Convert the input bits to an integer */ - index = 0; - scale_factor = 64; - for(i = 0; i < 7; i++) { - if(INPUT_STATE(in[i]) == ONE) - index += scale_factor; - scale_factor /= 2; - } - - /* Look up the frequency and compute half its period */ - freq = STATIC_VAR(freq); - half_period = 1.0 / freq[index]; - - - /* Queue up events and output the new state */ - if(TIME == 0.0) { - *next_time = half_period; - cm_event_queue(*next_time); - OUTPUT_STATE(out) = *output_state; - } - else { - if(TIME == *next_time) { - *next_time = TIME + half_period; - cm_event_queue(*next_time); - *output_state = 1 - *output_state; - OUTPUT_STATE(out) = *output_state; - OUTPUT_DELAY(out) = PARAM(delay); - } - else - OUTPUT_CHANGED(out) = FALSE; - } - -} - - - - +/* $Id$ */ + +void *malloc(unsigned); + +#define OUT_STATE 0 +#define NXT_TIME 1 +#define NUM_NOTES 128 + + +/* A numerically controlled oscillator. Output frequencies */ +/* are determined according to the MIDI note number at input */ + +void ucm_nco (ARGS) +{ + + double *freq; + + int *output_state; + double *next_time; + + int i; + int index; + int scale_factor; + + double half_period; + + + if(INIT) { + + /* Setup storage for the toggled output state */ + cm_event_alloc(OUT_STATE, sizeof(int)); + cm_event_alloc(NXT_TIME, sizeof(double)); + output_state = (int *) cm_event_get_ptr(OUT_STATE, 0); + next_time = (double *) cm_event_get_ptr(NXT_TIME, 0); + + /* Allocate storage for frequencies */ + STATIC_VAR(freq) = malloc(NUM_NOTES * sizeof(double)); + freq = STATIC_VAR(freq); + + /* Initialize the frequency array */ + for(i = 0; i < NUM_NOTES; i++) { + if(i == 0) + freq[0] = 8.17578 * PARAM(mult_factor); + else + freq[i] = freq[i-1] * 1.059463094; + } + } + else { + + /* Get old output state */ + output_state = (int *) cm_event_get_ptr(OUT_STATE, 0); + next_time = (double *) cm_event_get_ptr(NXT_TIME, 0); + } + + + /* Convert the input bits to an integer */ + index = 0; + scale_factor = 64; + for(i = 0; i < 7; i++) { + if(INPUT_STATE(in[i]) == ONE) + index += scale_factor; + scale_factor /= 2; + } + + /* Look up the frequency and compute half its period */ + freq = STATIC_VAR(freq); + half_period = 1.0 / freq[index]; + + + /* Queue up events and output the new state */ + if(TIME == 0.0) { + *next_time = half_period; + cm_event_queue(*next_time); + OUTPUT_STATE(out) = *output_state; + } + else { + if(TIME == *next_time) { + *next_time = TIME + half_period; + cm_event_queue(*next_time); + *output_state = 1 - *output_state; + OUTPUT_STATE(out) = *output_state; + OUTPUT_DELAY(out) = PARAM(delay); + } + else + OUTPUT_CHANGED(out) = FALSE; + } + +} + + + + diff --git a/src/xspice/examples/real_delay/cfunc.mod b/src/xspice/examples/real_delay/cfunc.mod index 5f3c41cbe..6e58ffe95 100755 --- a/src/xspice/examples/real_delay/cfunc.mod +++ b/src/xspice/examples/real_delay/cfunc.mod @@ -1,46 +1,47 @@ -/* $Id$ */ - - -#define CLK_STATE 0 - - -void ucm_real_delay (ARGS) -{ - - double *in; - double *out; - - Digital_State_t *state; - Digital_State_t *old_state; - - - if(INIT) { - state = (void *) cm_event_alloc(CLK_STATE, sizeof(Digital_State_t)); - old_state = state; - *state = INPUT_STATE(clk); - } - else { - state = (void *) cm_event_get_ptr(CLK_STATE, 0); - old_state = (void *) cm_event_get_ptr(CLK_STATE, 1); - } - - if(ANALYSIS != TRANSIENT) - OUTPUT_CHANGED(out) = FALSE; - else { - *state = INPUT_STATE(clk); - if(*state == *old_state) - OUTPUT_CHANGED(out) = FALSE; - else if(*state != ONE) - OUTPUT_CHANGED(out) = FALSE; - else { - in = INPUT(in); - out = OUTPUT(out); - *out = *in; - OUTPUT_DELAY(out) = PARAM(delay); - } - } -} - - - - +/* $Id$ */ + + +#define CLK_STATE 0 + + +void ucm_real_delay (ARGS) +{ + + double *in; + double *out; + + Digital_State_t *state; + Digital_State_t *old_state; + + + if(INIT) { + cm_event_alloc(CLK_STATE, sizeof(Digital_State_t)); + state = (void *) cm_event_get_ptr(CLK_STATE, 0); + old_state = state; + *state = INPUT_STATE(clk); + } + else { + state = (void *) cm_event_get_ptr(CLK_STATE, 0); + old_state = (void *) cm_event_get_ptr(CLK_STATE, 1); + } + + if(ANALYSIS != TRANSIENT) + OUTPUT_CHANGED(out) = FALSE; + else { + *state = INPUT_STATE(clk); + if(*state == *old_state) + OUTPUT_CHANGED(out) = FALSE; + else if(*state != ONE) + OUTPUT_CHANGED(out) = FALSE; + else { + in = INPUT(in); + out = OUTPUT(out); + *out = *in; + OUTPUT_DELAY(out) = PARAM(delay); + } + } +} + + + + diff --git a/src/xspice/examples/real_to_v/cfunc.mod b/src/xspice/examples/real_to_v/cfunc.mod index f6b699391..ab50a85f8 100755 --- a/src/xspice/examples/real_to_v/cfunc.mod +++ b/src/xspice/examples/real_to_v/cfunc.mod @@ -1,75 +1,77 @@ -/* $Id$ */ - - -#define TS 0 -#define VS 1 - - -void ucm_real_to_v (ARGS) -{ - - double *t, *v; - double *in; - - double out; - - - in = INPUT(in); - - if(INIT) { - t = (void *) cm_event_alloc(TS, 2 * sizeof(double)); - v = (void *) cm_event_alloc(VS, 2 * sizeof(double)); - t[0] = -2.0; - t[1] = -1.0; - v[0] = *in; - v[1] = *in; - } - else { - t = (void *) cm_event_get_ptr(TS, 0); - v = (void *) cm_event_get_ptr(VS, 0); - } - - switch(CALL_TYPE) { - - case ANALOG: - if(TIME == 0.0) { - OUTPUT(out) = *in; - v[0] = *in; - v[1] = *in; - } - else { - if(TIME <= t[0]) - OUTPUT(out) = v[0]; - else if(TIME >= t[1]) - OUTPUT(out) = v[1]; - else { - OUTPUT(out) = v[0] + (v[1] - v[0]) * - (TIME - t[0]) / (t[1] - t[0]); - } - } - break; - - case EVENT: - if(TIME == 0.0) - return; - if(TIME >= t[1]) { - v[0] = v[1]; - v[1] = *in; - t[0] = TIME; - t[1] = TIME + PARAM(transition_time); - } - else { - v[0] = v[0] + (v[1] - v[0]) * - (TIME - t[0]) / (t[1] - t[0]); - v[1] = *in; - t[0] = TIME; - t[1] = TIME + PARAM(transition_time); - } - break; - - } -} - - - - +/* $Id$ */ + + +#define TS 0 +#define VS 1 + + +void ucm_real_to_v (ARGS) +{ + + double *t, *v; + double *in; + + double out; + + + in = INPUT(in); + + if(INIT) { + cm_event_alloc(TS, 2 * sizeof(double)); + cm_event_alloc(VS, 2 * sizeof(double)); + t = (void *) cm_event_get_ptr(TS, 0); + v = (void *) cm_event_get_ptr(VS, 0); + t[0] = -2.0; + t[1] = -1.0; + v[0] = *in; + v[1] = *in; + } + else { + t = (void *) cm_event_get_ptr(TS, 0); + v = (void *) cm_event_get_ptr(VS, 0); + } + + switch(CALL_TYPE) { + + case ANALOG: + if(TIME == 0.0) { + OUTPUT(out) = *in; + v[0] = *in; + v[1] = *in; + } + else { + if(TIME <= t[0]) + OUTPUT(out) = v[0]; + else if(TIME >= t[1]) + OUTPUT(out) = v[1]; + else { + OUTPUT(out) = v[0] + (v[1] - v[0]) * + (TIME - t[0]) / (t[1] - t[0]); + } + } + break; + + case EVENT: + if(TIME == 0.0) + return; + if(TIME >= t[1]) { + v[0] = v[1]; + v[1] = *in; + t[0] = TIME; + t[1] = TIME + PARAM(transition_time); + } + else { + v[0] = v[0] + (v[1] - v[0]) * + (TIME - t[0]) / (t[1] - t[0]); + v[1] = *in; + t[0] = TIME; + t[1] = TIME + PARAM(transition_time); + } + break; + + } +} + + + + diff --git a/src/xspice/icm/analog/d_dt/cfunc.mod b/src/xspice/icm/analog/d_dt/cfunc.mod index cad9159a9..2f0d06c12 100644 --- a/src/xspice/icm/analog/d_dt/cfunc.mod +++ b/src/xspice/icm/analog/d_dt/cfunc.mod @@ -171,17 +171,15 @@ void cm_d_dt(ARGS) /* Also, calculate roughly where the current output */ /* will be and use this value to define current state. */ - in = cm_analog_alloc(TRUE,sizeof(double)); - in_old = cm_analog_get_ptr(TRUE,1); + cm_analog_alloc(TRUE,sizeof(double)); } - else { /* Allocation not necessary...retrieve previous values */ + /* retrieve previous values */ in = cm_analog_get_ptr(TRUE,0); /* Set out pointer to current time storage */ in_old = cm_analog_get_ptr(TRUE,1); /* Set old-output-state pointer to previous time storage */ - } if ( 0.0 == TIME ) { /*** Test to see if this is the first ***/ diff --git a/src/xspice/icm/analog/hyst/cfunc.mod b/src/xspice/icm/analog/hyst/cfunc.mod index 02c003858..9c419472c 100644 --- a/src/xspice/icm/analog/hyst/cfunc.mod +++ b/src/xspice/icm/analog/hyst/cfunc.mod @@ -244,7 +244,9 @@ void cm_hyst(ARGS) /* structure holding parms, /* Also, calculate roughly where the current output */ /* will be and use this value to define current state. */ - hyst_state = cm_analog_alloc(TRUE,sizeof(Boolean_t)); + cm_analog_alloc(TRUE,sizeof(Boolean_t)); + + hyst_state = cm_analog_get_ptr(TRUE,0); old_hyst_state = cm_analog_get_ptr(TRUE,1); if (in < x_rise_zero + input_domain) { /* Set state to X_RISING */ diff --git a/src/xspice/icm/analog/int/cfunc.mod b/src/xspice/icm/analog/int/cfunc.mod index 13e5d9db3..aa8383b7d 100644 --- a/src/xspice/icm/analog/int/cfunc.mod +++ b/src/xspice/icm/analog/int/cfunc.mod @@ -163,14 +163,13 @@ void cm_int(ARGS) /* structure holding parms, if (INIT==1) { /* First pass...allocate storage for previous value. */ - in = cm_analog_alloc(INT1,sizeof(double)); - out = cm_analog_alloc(INT2,sizeof(double)); + cm_analog_alloc(INT1,sizeof(double)); + cm_analog_alloc(INT2,sizeof(double)); } - else { /* Allocation not necessary...retrieve previous value */ + /* retrieve previous value */ in = cm_analog_get_ptr(INT1,0); /* Set out pointer to input storage location */ out = cm_analog_get_ptr(INT2,0); /* Set out pointer to output storage location */ - } /*** Read input value for current time, and calculate pseudo-input ***/ diff --git a/src/xspice/icm/analog/oneshot/cfunc.mod b/src/xspice/icm/analog/oneshot/cfunc.mod index b19e1b685..262cdaf0d 100644 --- a/src/xspice/icm/analog/oneshot/cfunc.mod +++ b/src/xspice/icm/analog/oneshot/cfunc.mod @@ -226,15 +226,15 @@ void cm_oneshot(ARGS) /* structure holding parms, if(INIT == 1){ /* first time through, allocate memory */ - t1 = cm_analog_alloc(T1,sizeof(double)); - t2 = cm_analog_alloc(T2,sizeof(double)); - t3 = cm_analog_alloc(T3,sizeof(double)); - t4 = cm_analog_alloc(T4,sizeof(double)); - set = cm_analog_alloc(SET,sizeof(int)); - state = cm_analog_alloc(STATE,sizeof(int)); - clock = cm_analog_alloc(CLOCK,sizeof(double)); - locked = cm_analog_alloc(LOCKED,sizeof(int)); - output_old = cm_analog_alloc(OUTPUT_OLD,sizeof(double)); + cm_analog_alloc(T1,sizeof(double)); + cm_analog_alloc(T2,sizeof(double)); + cm_analog_alloc(T3,sizeof(double)); + cm_analog_alloc(T4,sizeof(double)); + cm_analog_alloc(SET,sizeof(int)); + cm_analog_alloc(STATE,sizeof(int)); + cm_analog_alloc(CLOCK,sizeof(double)); + cm_analog_alloc(LOCKED,sizeof(int)); + cm_analog_alloc(OUTPUT_OLD,sizeof(double)); } diff --git a/src/xspice/icm/analog/s_xfer/cfunc.mod b/src/xspice/icm/analog/s_xfer/cfunc.mod index c8653e580..823431eb5 100644 --- a/src/xspice/icm/analog/s_xfer/cfunc.mod +++ b/src/xspice/icm/analog/s_xfer/cfunc.mod @@ -281,66 +281,47 @@ void cm_s_xfer(ARGS) /* structure holding parms, inputs, outputs, etc. */ /* We have to allocate memory and use cm_analog_alloc, because the ITP variables are not functional */ - integrator = (double **) calloc(den_size,sizeof(double *)); - old_integrator = (double **) calloc(den_size,sizeof(double *)); - - for (i=0; idepth = i; @@ -1964,10 +1965,11 @@ void cm_d_state(ARGS) /*** allocate storage for *clk, *clk_old, *reset & *reset_old... ***/ - clk = clk_old = (Digital_State_t *) cm_event_alloc(1,sizeof(Digital_State_t)); + cm_event_alloc(1,sizeof(Digital_State_t)); - reset = reset_old = (Digital_State_t *) cm_event_alloc(2,sizeof(Digital_State_t)); + cm_event_alloc(2,sizeof(Digital_State_t)); + /* fetch states again, it might have moved per realloc */ states = states_old = (State_Table_t *) cm_event_get_ptr(0,0); clk = clk_old = (Digital_State_t *) cm_event_get_ptr(1,0); reset = reset_old = (Digital_State_t *) cm_event_get_ptr(2,0); diff --git a/src/xspice/icm/digital/d_tff/cfunc.mod b/src/xspice/icm/digital/d_tff/cfunc.mod index d4dc0c2a1..084bfa4b5 100644 --- a/src/xspice/icm/digital/d_tff/cfunc.mod +++ b/src/xspice/icm/digital/d_tff/cfunc.mod @@ -235,10 +235,10 @@ void cm_d_tff(ARGS) if(INIT) { /* initial pass */ /* allocate storage */ - clk = clk_old = (Digital_State_t *) cm_event_alloc(0,sizeof(Digital_State_t)); - set = set_old = (Digital_State_t *) cm_event_alloc(1,sizeof(Digital_State_t)); - reset = reset_old = (Digital_State_t *) cm_event_alloc(2,sizeof(Digital_State_t)); - out = out_old = (Digital_State_t *) cm_event_alloc(3,sizeof(Digital_State_t)); + cm_event_alloc(0,sizeof(Digital_State_t)); + cm_event_alloc(1,sizeof(Digital_State_t)); + cm_event_alloc(2,sizeof(Digital_State_t)); + cm_event_alloc(3,sizeof(Digital_State_t)); /* declare load values */ LOAD(t) = PARAM(t_load); diff --git a/src/xspice/icm/digital/d_xnor/cfunc.mod b/src/xspice/icm/digital/d_xnor/cfunc.mod index 7e5c9a611..981c37032 100644 --- a/src/xspice/icm/digital/d_xnor/cfunc.mod +++ b/src/xspice/icm/digital/d_xnor/cfunc.mod @@ -224,7 +224,7 @@ void cm_d_xnor(ARGS) if(INIT) { /* initial pass */ /* allocate storage for the outputs */ - out = out_old = (Digital_State_t *) cm_event_alloc(0,sizeof(Digital_State_t)); + cm_event_alloc(0,sizeof(Digital_State_t)); for (i=0; idllitf_cm_analog_ramp_factor)(); } -void *cm_analog_alloc(int tag, int bytes) { - return (coreitf->dllitf_cm_analog_alloc)(tag,bytes); +void cm_analog_alloc(int tag, int bytes) { + (coreitf->dllitf_cm_analog_alloc)(tag,bytes); } void *cm_analog_get_ptr(int tag, int timepoint) { @@ -293,8 +293,8 @@ void cm_analog_auto_partial(void) { (coreitf->dllitf_cm_analog_auto_partial)(); } -void *cm_event_alloc(int tag, int bytes){ - return (coreitf->dllitf_cm_event_alloc)(tag,bytes); +void cm_event_alloc(int tag, int bytes){ + (coreitf->dllitf_cm_event_alloc)(tag,bytes); } void *cm_event_get_ptr(int tag, int timepoint) { diff --git a/src/xspice/icm/xtradev/capacitor/cfunc.mod b/src/xspice/icm/xtradev/capacitor/cfunc.mod index 53724e130..a9cff6556 100644 --- a/src/xspice/icm/xtradev/capacitor/cfunc.mod +++ b/src/xspice/icm/xtradev/capacitor/cfunc.mod @@ -57,7 +57,8 @@ void cm_capacitor (ARGS) /* Initialize/access instance specific storage for capacitor voltage */ if(INIT) { - vc = cm_analog_alloc(VC, sizeof(double)); + cm_analog_alloc(VC, sizeof(double)); + vc = cm_analog_get_ptr(VC, 0); *vc = PARAM(ic) * cm_analog_ramp_factor(); } else { diff --git a/src/xspice/icm/xtradev/core/cfunc.mod b/src/xspice/icm/xtradev/core/cfunc.mod index 973ddcca8..252b5dc34 100644 --- a/src/xspice/icm/xtradev/core/cfunc.mod +++ b/src/xspice/icm/xtradev/core/cfunc.mod @@ -454,7 +454,9 @@ void cm_core(ARGS) /* structure holding parms, - hyst_state = cm_analog_alloc(TRUE,sizeof(Boolean_t)); + cm_analog_alloc(TRUE,sizeof(Boolean_t)); + + hyst_state = cm_analog_get_ptr(TRUE,0); old_hyst_state = cm_analog_get_ptr(TRUE,1); if (in < x_rise_zero + input_domain) { /* Set state to X_RISING */ diff --git a/src/xspice/icm/xtradev/inductor/cfunc.mod b/src/xspice/icm/xtradev/inductor/cfunc.mod index d848694f5..d37b6b523 100644 --- a/src/xspice/icm/xtradev/inductor/cfunc.mod +++ b/src/xspice/icm/xtradev/inductor/cfunc.mod @@ -56,7 +56,8 @@ void cm_inductor (ARGS) /* Initialize/access instance specific storage for capacitor voltage */ if(INIT) { - li = cm_analog_alloc(LI, sizeof(double)); + cm_analog_alloc(LI, sizeof(double)); + li = cm_analog_get_ptr(LI, 0); *li = PARAM(ic) * ramp_factor; } else { diff --git a/src/xspice/icm/xtradev/lcouple/cfunc.mod b/src/xspice/icm/xtradev/lcouple/cfunc.mod index edae159cd..1e7286a6e 100644 --- a/src/xspice/icm/xtradev/lcouple/cfunc.mod +++ b/src/xspice/icm/xtradev/lcouple/cfunc.mod @@ -169,27 +169,21 @@ void cm_lcouple(ARGS) /* structure holding parms, /* Also, calculate roughly where the current output */ /* will be and use this value to define current state. */ - in_flux = cm_analog_alloc(1,sizeof(double)); - in_flux_old = cm_analog_get_ptr(1,1); - - /* assign fake input and output values for truncation - error checking */ - in_flux_fake = cm_analog_alloc(2,sizeof(double)); - output_voltage_fake = cm_analog_alloc(3,sizeof(double)); - + cm_analog_alloc(1,sizeof(double)); + cm_analog_alloc(2,sizeof(double)); + cm_analog_alloc(3,sizeof(double)); } - else { /* Allocation not necessary...retrieve previous values */ + /* Allocation not necessary...retrieve previous values */ - in_flux = cm_analog_get_ptr(TRUE,0); /* Set out pointer to current + in_flux = cm_analog_get_ptr(1,0); /* Set out pointer to current time storage */ - in_flux_old = cm_analog_get_ptr(TRUE,1); /* Set old-output-state pointer + in_flux_old = cm_analog_get_ptr(1,1); /* Set old-output-state pointer to previous time storage */ /* retrieve fake input and output values for truncation error checking */ in_flux_fake = cm_analog_get_ptr(2,0); output_voltage_fake = cm_analog_get_ptr(3,0); - } diff --git a/src/xspice/icm/xtraevt/real_delay/cfunc.mod b/src/xspice/icm/xtraevt/real_delay/cfunc.mod index cb254cf84..6e58ffe95 100644 --- a/src/xspice/icm/xtraevt/real_delay/cfunc.mod +++ b/src/xspice/icm/xtraevt/real_delay/cfunc.mod @@ -15,7 +15,7 @@ void ucm_real_delay (ARGS) if(INIT) { - state = (void *) cm_event_alloc(CLK_STATE, sizeof(Digital_State_t)); + cm_event_alloc(CLK_STATE, sizeof(Digital_State_t)); state = (void *) cm_event_get_ptr(CLK_STATE, 0); old_state = state; *state = INPUT_STATE(clk); diff --git a/src/xspice/icm/xtraevt/real_to_v/cfunc.mod b/src/xspice/icm/xtraevt/real_to_v/cfunc.mod index 3e70dea2e..a246b5949 100644 --- a/src/xspice/icm/xtraevt/real_to_v/cfunc.mod +++ b/src/xspice/icm/xtraevt/real_to_v/cfunc.mod @@ -17,8 +17,8 @@ void ucm_real_to_v (ARGS) in = INPUT(in); if(INIT) { - t = (void *) cm_event_alloc(TS, 2 * sizeof(double)); - v = (void *) cm_event_alloc(VS, 2 * sizeof(double)); + cm_event_alloc(TS, 2 * sizeof(double)); + cm_event_alloc(VS, 2 * sizeof(double)); t = (void *) cm_event_get_ptr(TS, 0); v = (void *) cm_event_get_ptr(VS, 0); t[0] = -2.0;