xspice api update
This commit is contained in:
parent
806227a164
commit
1fe8cbbf26
|
|
@ -20,3 +20,8 @@ Makefile
|
|||
depcomp
|
||||
ylwrap
|
||||
*.tar.gz
|
||||
autogen-new.log
|
||||
make.log
|
||||
distrib
|
||||
visualc
|
||||
vs-dll
|
||||
49
ChangeLog
49
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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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)));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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 ***/
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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 ***/
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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; i<den_size; i++) {
|
||||
integrator[i] = cm_analog_alloc(i,sizeof(double));
|
||||
old_integrator[i] = cm_analog_get_ptr(i,0);
|
||||
}
|
||||
|
||||
integrator = (double **) calloc(den_size, sizeof(double *));
|
||||
old_integrator = (double **) calloc(den_size, sizeof(double *));
|
||||
|
||||
/* Allocate storage for coefficient values */
|
||||
|
||||
den_coefficient = (double **) calloc(den_size,sizeof(double *));
|
||||
old_den_coefficient = (double **) calloc(den_size,sizeof(double *));
|
||||
den_coefficient = (double **) calloc(den_size,sizeof(double *));
|
||||
old_den_coefficient = (double **) calloc(den_size,sizeof(double *));
|
||||
|
||||
num_coefficient = (double **) calloc(num_size,sizeof(double *));
|
||||
old_num_coefficient = (double **) calloc(num_size,sizeof(double *));
|
||||
num_coefficient = (double **) calloc(num_size,sizeof(double *));
|
||||
old_num_coefficient = (double **) calloc(num_size,sizeof(double *));
|
||||
|
||||
for(i=den_size;i<(2*den_size);i++){
|
||||
old_den_coefficient[i-den_size] = den_coefficient[i-den_size] =
|
||||
cm_analog_alloc(i,sizeof(double));
|
||||
}
|
||||
|
||||
|
||||
for(i=2*den_size;i<(2*den_size + num_size);i++){
|
||||
old_num_coefficient[i-2*den_size] = num_coefficient[i-2*den_size] =
|
||||
cm_analog_alloc(i,sizeof(double));
|
||||
}
|
||||
|
||||
|
||||
out = cm_analog_alloc(2*den_size+num_size,sizeof(double));
|
||||
in = cm_analog_alloc(2*den_size+num_size+1,sizeof(double));
|
||||
for (i=0; i < (2*den_size + num_size + 3); i++)
|
||||
cm_analog_alloc(i,sizeof(double));
|
||||
|
||||
/* ITP_VAR_SIZE(den) = den_size; */
|
||||
|
||||
gain = cm_analog_alloc(2*den_size+num_size+2,sizeof(double));
|
||||
|
||||
/* gain = (double *) calloc(1,sizeof(double));
|
||||
ITP_VAR(total_gain) = gain;
|
||||
ITP_VAR_SIZE(total_gain) = 1.0; */
|
||||
/* gain = (double *) calloc(1,sizeof(double));
|
||||
ITP_VAR(total_gain) = gain;
|
||||
ITP_VAR_SIZE(total_gain) = 1.0; */
|
||||
|
||||
// Retrieve pointers
|
||||
|
||||
for (i=0; i<den_size; i++) {
|
||||
integrator[i] = cm_analog_get_ptr(i,0);
|
||||
|
||||
for (i=0; i<den_size; i++) {
|
||||
integrator[i] = cm_analog_get_ptr(i,0);
|
||||
old_integrator[i] = cm_analog_get_ptr(i,0);
|
||||
}
|
||||
out = cm_analog_get_ptr(2*den_size+num_size,0);
|
||||
in = cm_analog_get_ptr(2*den_size+num_size+1,0);
|
||||
|
||||
for(i=den_size;i<2*den_size;i++){
|
||||
den_coefficient[i-den_size] = cm_analog_get_ptr(i,0);
|
||||
old_den_coefficient[i-den_size] = cm_analog_get_ptr(i,0);
|
||||
}
|
||||
for(i=den_size;i<2*den_size;i++) {
|
||||
den_coefficient[i-den_size] = cm_analog_get_ptr(i,0);
|
||||
old_den_coefficient[i-den_size] = cm_analog_get_ptr(i,0);
|
||||
}
|
||||
|
||||
for(i=2*den_size;i<2*den_size+num_size;i++){
|
||||
num_coefficient[i-2*den_size] = cm_analog_get_ptr(i,0);
|
||||
old_num_coefficient[i-2*den_size] = cm_analog_get_ptr(i,0);
|
||||
}
|
||||
for(i=2*den_size;i<2*den_size+num_size;i++) {
|
||||
num_coefficient[i-2*den_size] = cm_analog_get_ptr(i,0);
|
||||
old_num_coefficient[i-2*den_size] = cm_analog_get_ptr(i,0);
|
||||
}
|
||||
|
||||
gain = cm_analog_get_ptr(2*den_size+num_size+2,0);
|
||||
out = cm_analog_get_ptr(2*den_size+num_size, 0);
|
||||
in = cm_analog_get_ptr(2*den_size+num_size+1, 0);
|
||||
|
||||
gain = cm_analog_get_ptr(2*den_size+num_size+2,0);
|
||||
|
||||
}else { /* Allocation was not necessary...retrieve previous values */
|
||||
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@ void cm_sine(ARGS) /* structure holding parms,
|
|||
|
||||
if(INIT == 1){
|
||||
|
||||
phase = cm_analog_alloc(INT1,sizeof(double));
|
||||
cm_analog_alloc(INT1,sizeof(double));
|
||||
|
||||
}
|
||||
if(ANALYSIS == MIF_DC){
|
||||
|
|
|
|||
|
|
@ -147,10 +147,10 @@ void cm_slew(ARGS)
|
|||
|
||||
/* First pass...allocate storage for previous state. */
|
||||
|
||||
ins = cm_analog_alloc(INT1,sizeof(double));
|
||||
outs = cm_analog_alloc(INT4,sizeof(double));
|
||||
out_old = cm_analog_alloc(INT2,sizeof(double));
|
||||
in_old = cm_analog_alloc(INT3,sizeof(double));
|
||||
cm_analog_alloc(INT1,sizeof(double));
|
||||
cm_analog_alloc(INT4,sizeof(double));
|
||||
cm_analog_alloc(INT2,sizeof(double));
|
||||
cm_analog_alloc(INT3,sizeof(double));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -200,11 +200,11 @@ void cm_square(ARGS) /* structure holding parms,
|
|||
|
||||
/* First time throught allocate memory */
|
||||
if(INIT==1){
|
||||
phase = cm_analog_alloc(INT1,sizeof(double));
|
||||
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));
|
||||
cm_analog_alloc(INT1,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));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -193,10 +193,10 @@ void cm_triangle(ARGS) /* structure holding parms,
|
|||
/* Allocate memory */
|
||||
|
||||
if(INIT==1){
|
||||
phase = cm_analog_alloc(INT1,sizeof(double));
|
||||
t1 = cm_analog_alloc(T1,sizeof(double));
|
||||
t2 = cm_analog_alloc(T2,sizeof(double));
|
||||
t_end = cm_analog_alloc(T3,sizeof(double));
|
||||
cm_analog_alloc(INT1,sizeof(double));
|
||||
cm_analog_alloc(T1,sizeof(double));
|
||||
cm_analog_alloc(T2,sizeof(double));
|
||||
cm_analog_alloc(T3,sizeof(double));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -175,12 +175,10 @@ void cm_adc_bridge(ARGS)
|
|||
|
||||
|
||||
/* Allocate storage for inputs */
|
||||
|
||||
in = in_old = cm_analog_alloc(0,size * sizeof(double));
|
||||
|
||||
cm_analog_alloc(0,size * sizeof(double));
|
||||
|
||||
/* Allocate storage for outputs */
|
||||
out = out_old = (Digital_State_t *) cm_event_alloc(1,size * sizeof(Digital_State_t));
|
||||
cm_event_alloc(1,size * sizeof(Digital_State_t));
|
||||
|
||||
/* Get analog addresses */
|
||||
in = in_old = cm_analog_get_ptr(0,0);
|
||||
|
|
|
|||
|
|
@ -148,7 +148,7 @@ void cm_d_and(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));
|
||||
|
||||
/* set loading for inputs */
|
||||
for (i=0; i<size; i++) LOAD(in[i]) = PARAM(input_load);
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ void cm_d_buffer(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));
|
||||
|
||||
/* define input loading... */
|
||||
LOAD(in) = PARAM(input_load);
|
||||
|
|
|
|||
|
|
@ -219,13 +219,10 @@ void cm_d_dff(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(data) = PARAM(data_load);
|
||||
|
|
|
|||
|
|
@ -223,11 +223,11 @@ void cm_d_dlatch(ARGS)
|
|||
if(INIT) { /* initial pass */
|
||||
|
||||
/* allocate storage */
|
||||
data = data_old = (Digital_State_t *) cm_event_alloc(0,sizeof(Digital_State_t));
|
||||
enable = enable_old = (Digital_State_t *) cm_event_alloc(1,sizeof(Digital_State_t));
|
||||
set = set_old = (Digital_State_t *) cm_event_alloc(2,sizeof(Digital_State_t));
|
||||
reset = reset_old = (Digital_State_t *) cm_event_alloc(3,sizeof(Digital_State_t));
|
||||
out = out_old = (Digital_State_t *) cm_event_alloc(4,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));
|
||||
cm_event_alloc(4,sizeof(Digital_State_t));
|
||||
|
||||
/* declare load values */
|
||||
LOAD(data) = PARAM(data_load);
|
||||
|
|
|
|||
|
|
@ -147,9 +147,9 @@ void cm_d_fdiv(ARGS)
|
|||
if(INIT) { /* initial pass */
|
||||
|
||||
/* allocate storage */
|
||||
freq_in = freq_in_old = (Digital_State_t *) cm_event_alloc(0,sizeof(Digital_State_t));
|
||||
freq_out = freq_out_old = (Digital_State_t *) cm_event_alloc(1,sizeof(Digital_State_t));
|
||||
count = count_old = (Digital_State_t *) cm_event_alloc(2,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));
|
||||
|
||||
/* declare load values */
|
||||
LOAD(freq_in) = PARAM(freq_in_load);
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ void cm_d_inverter(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));
|
||||
|
||||
/* define load value on inputs */
|
||||
LOAD(in) = PARAM(input_load);
|
||||
|
|
|
|||
|
|
@ -312,10 +312,10 @@ void cm_d_jkff(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(j) = PARAM(jk_load);
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ void cm_d_nand(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; i<size; i++) LOAD(in[i]) = PARAM(input_load);
|
||||
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ void cm_d_nor(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; i<size; i++) LOAD(in[i]) = PARAM(input_load);
|
||||
|
||||
|
|
|
|||
|
|
@ -137,7 +137,6 @@ void cm_d_open_c(ARGS)
|
|||
if(INIT) { /* initial pass */
|
||||
|
||||
/* allocate storage for the outputs */
|
||||
out = out_old = (Digital_State_t *)
|
||||
cm_event_alloc(0,sizeof(Digital_State_t));
|
||||
|
||||
/* define input loading... */
|
||||
|
|
|
|||
|
|
@ -137,7 +137,6 @@ void cm_d_open_e(ARGS)
|
|||
if(INIT) { /* initial pass */
|
||||
|
||||
/* allocate storage for the outputs */
|
||||
out = out_old = (Digital_State_t *)
|
||||
cm_event_alloc(0,sizeof(Digital_State_t));
|
||||
|
||||
/* define input loading... */
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ void cm_d_or(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; i<size; i++) LOAD(in[i]) = PARAM(input_load);
|
||||
|
||||
|
|
|
|||
|
|
@ -209,11 +209,9 @@ void cm_d_osc(ARGS)
|
|||
|
||||
|
||||
/* Allocate storage for internal variables */
|
||||
phase = phase_old = cm_analog_alloc(0,sizeof(double));
|
||||
|
||||
t1 = cm_analog_alloc(1,sizeof(double));
|
||||
|
||||
t3 = cm_analog_alloc(2,sizeof(double));
|
||||
cm_analog_alloc(0, sizeof(double));
|
||||
cm_analog_alloc(1, sizeof(double));
|
||||
cm_analog_alloc(2, sizeof(double));
|
||||
|
||||
/* assign internal variables */
|
||||
phase = phase_old = cm_analog_get_ptr(0,0);
|
||||
|
|
|
|||
|
|
@ -953,13 +953,13 @@ void cm_d_ram(ARGS)
|
|||
if(INIT) { /* initial pass */
|
||||
|
||||
/* allocate storage */
|
||||
address = address_old = (Digital_State_t *) cm_event_alloc(0,address_size * sizeof(Digital_State_t));
|
||||
write_en = write_en_old = (Digital_State_t *) cm_event_alloc(1,sizeof(Digital_State_t));
|
||||
select = select_old = (Digital_State_t *) cm_event_alloc(2,select_size * sizeof(Digital_State_t));
|
||||
cm_event_alloc(0,address_size * sizeof(Digital_State_t));
|
||||
cm_event_alloc(1,sizeof(Digital_State_t));
|
||||
cm_event_alloc(2,select_size * sizeof(Digital_State_t));
|
||||
|
||||
|
||||
/* allocate storage for ram memory */
|
||||
ram = ram_old = (short *) cm_event_alloc(3,num_of_ram_ints * sizeof(short));
|
||||
cm_event_alloc(3,num_of_ram_ints * sizeof(short));
|
||||
|
||||
/* declare load values */
|
||||
for (i=0; i<word_width; i++) {
|
||||
|
|
|
|||
|
|
@ -1088,7 +1088,6 @@ void cm_d_source(ARGS)
|
|||
|
||||
/*** allocate storage for *index, *bits & *timepoints ***/
|
||||
|
||||
info = info_old = (Source_Table_Info_t *)
|
||||
cm_event_alloc(0,sizeof(Source_Table_Info_t));
|
||||
|
||||
|
||||
|
|
@ -1096,9 +1095,8 @@ void cm_d_source(ARGS)
|
|||
modf( (PORT_SIZE(out) * i / 4), &double_dummy );
|
||||
dummy = double_dummy + 1;
|
||||
|
||||
bits = bits_old = (short *) cm_event_alloc(1,(dummy * sizeof(short)));
|
||||
cm_event_alloc(1,(dummy * sizeof(short)));
|
||||
|
||||
timepoints = timepoints_old = (double *)
|
||||
cm_event_alloc(2,i * sizeof(double));
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -311,10 +311,10 @@ void cm_d_srff(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(s) = PARAM(sr_load);
|
||||
|
|
|
|||
|
|
@ -313,12 +313,12 @@ void cm_d_srlatch(ARGS)
|
|||
if(INIT) { /* initial pass */
|
||||
|
||||
/* allocate storage */
|
||||
s = s_old = (Digital_State_t *) cm_event_alloc(0,sizeof(Digital_State_t));
|
||||
r = r_old = (Digital_State_t *) cm_event_alloc(1,sizeof(Digital_State_t));
|
||||
enable = enable_old = (Digital_State_t *) cm_event_alloc(2,sizeof(Digital_State_t));
|
||||
set = set_old = (Digital_State_t *) cm_event_alloc(3,sizeof(Digital_State_t));
|
||||
reset = reset_old = (Digital_State_t *) cm_event_alloc(4,sizeof(Digital_State_t));
|
||||
out = out_old = (Digital_State_t *) cm_event_alloc(5,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));
|
||||
cm_event_alloc(4,sizeof(Digital_State_t));
|
||||
cm_event_alloc(5,sizeof(Digital_State_t));
|
||||
|
||||
/* declare load values */
|
||||
LOAD(s) = PARAM(sr_load);
|
||||
|
|
|
|||
|
|
@ -1936,7 +1936,8 @@ void cm_d_state(ARGS)
|
|||
|
||||
/*** allocate storage for *states... ***/
|
||||
|
||||
states = states_old = (State_Table_t *) cm_event_alloc(0,sizeof(State_Table_t));
|
||||
cm_event_alloc(0,sizeof(State_Table_t));
|
||||
states = states_old = (State_Table_t *) cm_event_get_ptr(0,0);
|
||||
|
||||
/* Store depth value */
|
||||
states->depth = 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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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; i<size; i++) LOAD(in[i]) = PARAM(input_load);
|
||||
|
||||
|
|
|
|||
|
|
@ -198,7 +198,7 @@ void cm_d_xor(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; i<size; i++) LOAD(in[i]) = PARAM(input_load);
|
||||
|
||||
|
|
|
|||
|
|
@ -206,7 +206,7 @@ void cm_dac_bridge(ARGS)
|
|||
|
||||
|
||||
/* Allocate storage for inputs */
|
||||
in = in_old = (Digital_State_t *) cm_event_alloc(0,size * sizeof(Digital_State_t));
|
||||
cm_event_alloc(0, size * sizeof(Digital_State_t));
|
||||
|
||||
|
||||
/* Allocate storage for outputs */
|
||||
|
|
@ -215,8 +215,8 @@ void cm_dac_bridge(ARGS)
|
|||
/* allocate storage for analog output values. */
|
||||
|
||||
/* allocate output space and obtain adresses */
|
||||
out = out_old = cm_analog_alloc(0,size * sizeof(double));
|
||||
breakpoint = cm_analog_alloc(1,sizeof(double));
|
||||
cm_analog_alloc(0, size * sizeof(double));
|
||||
cm_analog_alloc(1, sizeof(double));
|
||||
|
||||
/* assign discrete addresses */
|
||||
in = in_old = (Digital_State_t *) cm_event_get_ptr(0,0);
|
||||
|
|
|
|||
|
|
@ -261,8 +261,8 @@ double cm_analog_ramp_factor(void) {
|
|||
return (coreitf->dllitf_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) {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue