Applied changes to cfunc.mod sent by Hitoshi
This commit is contained in:
parent
9bb78c2d28
commit
f805d7ab71
10
ChangeLog
10
ChangeLog
|
|
@ -1,3 +1,13 @@
|
|||
2005-08-23 Paolo Nenzi <p.nenzi@ieee.org>
|
||||
|
||||
* src/xspice/icm/xtradev/aswitch/cfunc.mod: Added minimum on resistance
|
||||
for aswitch to avoid unreasonable high values (due to near zero
|
||||
resistance) in current of connected voltage source. Change supplied by
|
||||
Hitoshi Tanaka.
|
||||
|
||||
* src/xspice/icm/{cfunc.mod}: updated cfunc.mod files. Changes sent by
|
||||
Hitoshi Tanaka.
|
||||
|
||||
2005-08-22 Paolo Nenzi <p.nenzi@ieee.org>
|
||||
|
||||
* src/frontend/plotting/x11.c: removed casting in a macro. It conflicts
|
||||
|
|
|
|||
|
|
@ -182,6 +182,11 @@ void cm_adc_bridge(ARGS)
|
|||
/* Allocate storage for outputs */
|
||||
out = out_old = (Digital_State_t *) cm_event_alloc(1,size * sizeof(Digital_State_t));
|
||||
|
||||
/* Get analog addresses */
|
||||
in = in_old = cm_analog_get_ptr(0,0);
|
||||
|
||||
/* Get discrete addresses */
|
||||
out = out_old = (Digital_State_t *) cm_event_get_ptr(1,0);
|
||||
}
|
||||
|
||||
else { /*** This is not an initialization pass...retrieve storage
|
||||
|
|
|
|||
|
|
@ -153,6 +153,9 @@ void cm_d_and(ARGS)
|
|||
/* set loading for inputs */
|
||||
for (i=0; i<size; i++) LOAD(in[i]) = PARAM(input_load);
|
||||
|
||||
/* retrieve storage for the outputs */
|
||||
out = out_old = (Digital_State_t *) cm_event_get_ptr(0,0);
|
||||
|
||||
}
|
||||
else { /* Retrieve previous values */
|
||||
|
||||
|
|
|
|||
|
|
@ -141,6 +141,10 @@ void cm_d_buffer(ARGS)
|
|||
|
||||
/* define input loading... */
|
||||
LOAD(in) = PARAM(input_load);
|
||||
|
||||
/* retrieve storage for the outputs */
|
||||
out = out_old = (Digital_State_t *) cm_event_get_ptr(0,0);
|
||||
|
||||
}
|
||||
else { /* Retrieve previous values */
|
||||
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ NON-STANDARD FEATURES
|
|||
|
||||
NONE
|
||||
|
||||
=============================================================================*/
|
||||
/*=============================================================================*/
|
||||
|
||||
/*=== CM_TOGGLE_BIT ROUTINE ===*/
|
||||
|
||||
|
|
@ -235,7 +235,13 @@ void cm_d_dff(ARGS)
|
|||
}
|
||||
if ( !PORT_NULL(reset) ) {
|
||||
LOAD(reset) = PARAM(reset_load);
|
||||
}
|
||||
}
|
||||
|
||||
/* retrieve storage for the outputs */
|
||||
clk = clk_old = (Digital_State_t *) cm_event_get_ptr(0,0);
|
||||
set = set_old = (Digital_State_t *) cm_event_get_ptr(1,0);
|
||||
reset = reset_old = (Digital_State_t *) cm_event_get_ptr(2,0);
|
||||
out = out_old = (Digital_State_t *) cm_event_get_ptr(3,0);
|
||||
|
||||
}
|
||||
else { /* Retrieve previous values */
|
||||
|
|
|
|||
|
|
@ -237,7 +237,14 @@ void cm_d_dlatch(ARGS)
|
|||
}
|
||||
if ( !PORT_NULL(reset) ) {
|
||||
LOAD(reset) = PARAM(reset_load);
|
||||
}
|
||||
}
|
||||
|
||||
/* retrieve storage for the outputs */
|
||||
data = data_old = (Digital_State_t *) cm_event_get_ptr(0,0);
|
||||
enable = enable_old = (Digital_State_t *) cm_event_get_ptr(1,0);
|
||||
set = set_old = (Digital_State_t *) cm_event_get_ptr(2,0);
|
||||
reset = reset_old =(Digital_State_t *) cm_event_get_ptr(3,0);
|
||||
out = out_old = (Digital_State_t *) cm_event_get_ptr(4,0);
|
||||
|
||||
}
|
||||
else { /* Retrieve previous values */
|
||||
|
|
|
|||
|
|
@ -154,6 +154,11 @@ void cm_d_fdiv(ARGS)
|
|||
/* declare load values */
|
||||
LOAD(freq_in) = PARAM(freq_in_load);
|
||||
|
||||
/* retrieve storage for the outputs */
|
||||
freq_in = freq_in_old = (Digital_State_t *) cm_event_get_ptr(0,0);
|
||||
freq_out = freq_out_old = (Digital_State_t *) cm_event_get_ptr(1,0);
|
||||
count = count_old = (Digital_State_t *) cm_event_get_ptr(2,0);
|
||||
|
||||
}
|
||||
else { /* Retrieve previous values */
|
||||
|
||||
|
|
|
|||
|
|
@ -145,6 +145,9 @@ void cm_d_inverter(ARGS)
|
|||
/* define load value on inputs */
|
||||
LOAD(in) = PARAM(input_load);
|
||||
|
||||
/* retrieve storage for the outputs */
|
||||
out = out_old = (Digital_State_t *) cm_event_get_ptr(0,0);
|
||||
|
||||
}
|
||||
else { /* Retrieve previous values */
|
||||
|
||||
|
|
|
|||
|
|
@ -326,7 +326,13 @@ void cm_d_jkff(ARGS)
|
|||
}
|
||||
if ( !PORT_NULL(reset) ) {
|
||||
LOAD(reset) = PARAM(reset_load);
|
||||
}
|
||||
}
|
||||
|
||||
/* retrieve storage for the outputs */
|
||||
clk = clk_old = (Digital_State_t *) cm_event_get_ptr(0,0);
|
||||
set = set_old = (Digital_State_t *) cm_event_get_ptr(1,0);
|
||||
reset = reset_old = (Digital_State_t *) cm_event_get_ptr(2,0);
|
||||
out = out_old = (Digital_State_t *) cm_event_get_ptr(3,0);
|
||||
|
||||
}
|
||||
else { /* Retrieve previous values */
|
||||
|
|
|
|||
|
|
@ -147,6 +147,10 @@ void cm_d_nand(ARGS)
|
|||
|
||||
for (i=0; i<size; i++) LOAD(in[i]) = PARAM(input_load);
|
||||
|
||||
/* retrieve storage for the outputs */
|
||||
out = out_old = (Digital_State_t *) cm_event_get_ptr(0,0);
|
||||
|
||||
|
||||
}
|
||||
else { /* Retrieve previous values */
|
||||
|
||||
|
|
|
|||
|
|
@ -148,6 +148,9 @@ void cm_d_nor(ARGS)
|
|||
|
||||
for (i=0; i<size; i++) LOAD(in[i]) = PARAM(input_load);
|
||||
|
||||
/* retrieve storage for the outputs */
|
||||
out = out_old = (Digital_State_t *) cm_event_get_ptr(0,0);
|
||||
|
||||
}
|
||||
else { /* Retrieve previous values */
|
||||
|
||||
|
|
|
|||
|
|
@ -142,6 +142,10 @@ void cm_d_open_c(ARGS)
|
|||
|
||||
/* define input loading... */
|
||||
LOAD(in) = PARAM(input_load);
|
||||
|
||||
/* retrieve storage for the outputs */
|
||||
out = out_old = (Digital_State_t *) cm_event_get_ptr(0,0);
|
||||
|
||||
}
|
||||
else { /* Retrieve previous values */
|
||||
|
||||
|
|
|
|||
|
|
@ -142,6 +142,10 @@ void cm_d_open_e(ARGS)
|
|||
|
||||
/* define input loading... */
|
||||
LOAD(in) = PARAM(input_load);
|
||||
|
||||
/* retrieve storage for the outputs */
|
||||
out = out_old = (Digital_State_t *) cm_event_get_ptr(0,0);
|
||||
|
||||
}
|
||||
else { /* Retrieve previous values */
|
||||
|
||||
|
|
|
|||
|
|
@ -148,6 +148,9 @@ void cm_d_or(ARGS)
|
|||
|
||||
for (i=0; i<size; i++) LOAD(in[i]) = PARAM(input_load);
|
||||
|
||||
/* retrieve storage for the outputs */
|
||||
out = out_old = (Digital_State_t *) cm_event_get_ptr(0,0);
|
||||
|
||||
}
|
||||
else { /* Retrieve previous values */
|
||||
|
||||
|
|
|
|||
|
|
@ -214,7 +214,13 @@ void cm_d_osc(ARGS)
|
|||
t1 = cm_analog_alloc(1,sizeof(double));
|
||||
|
||||
t3 = cm_analog_alloc(2,sizeof(double));
|
||||
|
||||
|
||||
/* assign internal variables */
|
||||
phase = phase_old = cm_analog_get_ptr(0,0);
|
||||
|
||||
t1 = cm_analog_get_ptr(1,0);
|
||||
|
||||
t3 = cm_analog_get_ptr(2,0);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -394,8 +400,8 @@ void cm_d_osc(ARGS)
|
|||
|
||||
|
||||
|
||||
free(x);
|
||||
free(y);
|
||||
if(x) free(x);
|
||||
if(y) free(y);
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -944,7 +944,7 @@ void cm_d_ram(ARGS)
|
|||
word_width = PORT_SIZE(data_in);
|
||||
|
||||
|
||||
num_of_ram_ints = ram_size * word_width / 8;
|
||||
num_of_ram_ints = ram_size * word_width / 8 + 1;
|
||||
|
||||
|
||||
|
||||
|
|
@ -976,6 +976,14 @@ void cm_d_ram(ARGS)
|
|||
LOAD(select[i]) = PARAM(select_load);
|
||||
}
|
||||
|
||||
/* retrieve storage for the outputs */
|
||||
address = address_old = (Digital_State_t *) cm_event_get_ptr(0,0);
|
||||
write_en = write_en_old = (Digital_State_t *) cm_event_get_ptr(1,0);
|
||||
select = select_old = (Digital_State_t *) cm_event_get_ptr(2,0);
|
||||
|
||||
/* retrieve ram base addresses */
|
||||
ram = ram_old = (short *) cm_event_get_ptr(3,0);
|
||||
|
||||
}
|
||||
else { /* Retrieve previous values */
|
||||
|
||||
|
|
@ -990,6 +998,9 @@ void cm_d_ram(ARGS)
|
|||
/* retrieve ram base addresses */
|
||||
ram = (short *) cm_event_get_ptr(3,0);
|
||||
ram_old = (short *) cm_event_get_ptr(3,1);
|
||||
|
||||
for(i=0;i<num_of_ram_ints;i++)
|
||||
ram[i] = ram_old[i];
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1084,11 +1095,13 @@ void cm_d_ram(ARGS)
|
|||
for (j=0; j<ram_size; j++) {
|
||||
cm_initialize_ram(UNKNOWN,word_width,i,j,ram);
|
||||
}
|
||||
OUTPUT_STATE(data_out[i]) = UNKNOWN;
|
||||
}
|
||||
else {
|
||||
out = INPUT_STATE(data_in[i]);
|
||||
cm_store_ram_value(out,word_width,i,address,
|
||||
address_size,ram);
|
||||
OUTPUT_STATE(data_out[i]) = out;
|
||||
}
|
||||
OUTPUT_STRENGTH(data_out[i]) = HI_IMPEDANCE;
|
||||
OUTPUT_DELAY(data_out[i]) = PARAM(read_delay);
|
||||
|
|
@ -1101,6 +1114,7 @@ void cm_d_ram(ARGS)
|
|||
case ZERO: /* output goes tristate unless already so... */
|
||||
if ( ZERO == *write_en ) { /* output needs tristating */
|
||||
for (i=0; i<word_width; i++) {
|
||||
OUTPUT_STATE(data_out[i]) = UNKNOWN;
|
||||
OUTPUT_STRENGTH(data_out[i]) = HI_IMPEDANCE;
|
||||
OUTPUT_DELAY(data_out[i]) = PARAM(read_delay);
|
||||
}
|
||||
|
|
@ -1129,11 +1143,13 @@ void cm_d_ram(ARGS)
|
|||
for (j=0; j<ram_size; j++) {
|
||||
cm_initialize_ram(UNKNOWN,word_width,i,j,ram);
|
||||
}
|
||||
OUTPUT_STATE(data_out[i]) = UNKNOWN;
|
||||
}
|
||||
else {
|
||||
out = INPUT_STATE(data_in[i]);
|
||||
cm_store_ram_value(out,word_width,i,address,
|
||||
address_size,ram);
|
||||
OUTPUT_STATE(data_out[i]) = out;
|
||||
}
|
||||
OUTPUT_STRENGTH(data_out[i]) = HI_IMPEDANCE;
|
||||
OUTPUT_DELAY(data_out[i]) = PARAM(read_delay);
|
||||
|
|
|
|||
|
|
@ -167,7 +167,7 @@ static char *CNVgettok(char **s)
|
|||
switch(**s) {
|
||||
|
||||
case '\0': /* End of string found */
|
||||
free(buf);
|
||||
if(buf) free(buf);
|
||||
return(NULL);
|
||||
|
||||
|
||||
|
|
@ -200,7 +200,7 @@ static char *CNVgettok(char **s)
|
|||
ret_str = (void *) malloc(strlen(buf) + 1);
|
||||
ret_str = strcpy(ret_str,buf);
|
||||
|
||||
free(buf);
|
||||
if(buf) free(buf);
|
||||
|
||||
return(ret_str);
|
||||
}
|
||||
|
|
@ -1071,17 +1071,19 @@ void cm_d_source(ARGS)
|
|||
|
||||
/*** open file and count the number of vectors in it ***/
|
||||
source = fopen( PARAM(input_file), "r");
|
||||
|
||||
|
||||
/* increment counter if not a comment until EOF reached... */
|
||||
i = 0;
|
||||
s = temp;
|
||||
while ( fgets(s,MAX_STRING_SIZE,source) != NULL) {
|
||||
if ( '*' != s[0] ) {
|
||||
while(isspace(*s) || (*s == '*'))
|
||||
(s)++;
|
||||
if ( *s != '\0' ) i++;
|
||||
}
|
||||
s = temp;
|
||||
i = 0;
|
||||
if (source) {
|
||||
s = temp;
|
||||
while ( fgets(s,MAX_STRING_SIZE,source) != NULL) {
|
||||
if ( '*' != s[0] ) {
|
||||
while(isspace(*s) || (*s == '*'))
|
||||
(s)++;
|
||||
if ( *s != '\0' ) i++;
|
||||
}
|
||||
s = temp;
|
||||
}
|
||||
}
|
||||
|
||||
/*** allocate storage for *index, *bits & *timepoints ***/
|
||||
|
|
@ -1100,7 +1102,7 @@ void cm_d_source(ARGS)
|
|||
cm_event_alloc(2,i * sizeof(double));
|
||||
|
||||
|
||||
/**** Patch assignment for memory...remove in final version ****/
|
||||
/**** Get all pointers again (to avoid realloc problems) ****/
|
||||
info = info_old = (Source_Table_Info_t *) cm_event_get_ptr(0,0);
|
||||
bits = bits_old = (short *) cm_event_get_ptr(1,0);
|
||||
timepoints = timepoints_old = (double *) cm_event_get_ptr(2,0);
|
||||
|
|
@ -1135,8 +1137,12 @@ void cm_d_source(ARGS)
|
|||
/* vectors will be loaded and the width and depth */
|
||||
/* values supplied. */
|
||||
|
||||
rewind(source);
|
||||
err = cm_read_source(source,bits,timepoints,info);
|
||||
if (source) {
|
||||
rewind(source);
|
||||
err = cm_read_source(source,bits,timepoints,info);
|
||||
} else {
|
||||
err=1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -1151,7 +1157,8 @@ void cm_d_source(ARGS)
|
|||
}
|
||||
|
||||
/* close source file */
|
||||
fclose(source);
|
||||
if (source)
|
||||
fclose(source);
|
||||
|
||||
}
|
||||
else { /*** Retrieve previous values ***/
|
||||
|
|
@ -1196,7 +1203,7 @@ void cm_d_source(ARGS)
|
|||
if ( 0.0 == TIME ) {
|
||||
|
||||
test_double = timepoints[info->index];
|
||||
if ( 0.0 == test_double ) { /* Set DC value */
|
||||
if ( 0.0 == test_double && info->depth > 0 ) { /* Set DC value */
|
||||
|
||||
/* reset current breakpoint */
|
||||
test_double = timepoints[info->index];
|
||||
|
|
@ -1232,6 +1239,10 @@ void cm_d_source(ARGS)
|
|||
test_double = timepoints[info->index] - 1.0e-10;
|
||||
cm_event_queue( test_double );
|
||||
}
|
||||
for(i=0; i<info->width; i++) {
|
||||
OUTPUT_STATE(out[i]) = UNKNOWN;
|
||||
OUTPUT_STRENGTH(out[i]) = UNDETERMINED;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ NON-STANDARD FEATURES
|
|||
|
||||
NONE
|
||||
|
||||
=============================================================================*/
|
||||
/*=============================================================================*/
|
||||
|
||||
/*=== CM_TOGGLE_BIT ROUTINE ===*/
|
||||
|
||||
|
|
@ -325,7 +325,13 @@ void cm_d_srff(ARGS)
|
|||
}
|
||||
if ( !PORT_NULL(reset) ) {
|
||||
LOAD(reset) = PARAM(reset_load);
|
||||
}
|
||||
}
|
||||
|
||||
/* retrieve storage for the outputs */
|
||||
clk = clk_old = (Digital_State_t *) cm_event_get_ptr(0,0);
|
||||
set = set_old = (Digital_State_t *) cm_event_get_ptr(1,0);
|
||||
reset = reset_old = (Digital_State_t *) cm_event_get_ptr(2,0);
|
||||
out = out_old = (Digital_State_t *) cm_event_get_ptr(3,0);
|
||||
|
||||
}
|
||||
else { /* Retrieve previous values */
|
||||
|
|
|
|||
|
|
@ -329,7 +329,15 @@ void cm_d_srlatch(ARGS)
|
|||
}
|
||||
if ( !PORT_NULL(reset) ) {
|
||||
LOAD(reset) = PARAM(reset_load);
|
||||
}
|
||||
}
|
||||
|
||||
/* retrieve storage for the outputs */
|
||||
s = s_old = (Digital_State_t *) cm_event_get_ptr(0,0);
|
||||
r = r_old = (Digital_State_t *) cm_event_get_ptr(1,0);
|
||||
enable = enable_old = (Digital_State_t *) cm_event_get_ptr(2,0);
|
||||
set = set_old = (Digital_State_t *) cm_event_get_ptr(3,0);
|
||||
reset = reset_old = (Digital_State_t *) cm_event_get_ptr(4,0);
|
||||
out = out_old = (Digital_State_t *) cm_event_get_ptr(5,0);
|
||||
|
||||
}
|
||||
else { /* Retrieve previous values */
|
||||
|
|
|
|||
|
|
@ -227,7 +227,7 @@ static char *CNVgettok(char **s)
|
|||
switch(**s) {
|
||||
|
||||
case '\0': /* End of string found */
|
||||
free(buf);
|
||||
if(buf) free(buf);
|
||||
return(NULL);
|
||||
|
||||
|
||||
|
|
@ -260,7 +260,7 @@ static char *CNVgettok(char **s)
|
|||
ret_str = (void *) malloc(strlen(buf) + 1);
|
||||
ret_str = strcpy(ret_str,buf);
|
||||
|
||||
free(buf);
|
||||
if(buf) free(buf);
|
||||
|
||||
return(ret_str);
|
||||
}
|
||||
|
|
@ -1530,7 +1530,9 @@ static int cm_read_state_file(FILE *state_file,State_Table_t *states)
|
|||
state.in file which needs to be stored */
|
||||
/*base;*/ /* holding variable for existing
|
||||
non-masked bits[] integer */
|
||||
|
||||
if (!state_file) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
i = 0;
|
||||
s = temp;
|
||||
|
|
@ -1655,7 +1657,7 @@ static int cm_read_state_file(FILE *state_file,State_Table_t *states)
|
|||
}
|
||||
else { /* need to store this value in the inputs[] array */
|
||||
|
||||
cm_store_inputs_value(states,i,(j-1),bit_value);
|
||||
cm_store_inputs_value(states,i,(j-1-states->num_outputs),bit_value);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -1685,8 +1687,7 @@ static int cm_read_state_file(FILE *state_file,State_Table_t *states)
|
|||
/* set bits values to previous bits values */
|
||||
for (j=0; j<states->num_outputs; j++) {
|
||||
|
||||
/*** Retrieve the previous bit value ***/
|
||||
/*
|
||||
/*** Retrieve the previous bit value ***?
|
||||
cm_get_bits_value(*states,i,j,&out);
|
||||
|
||||
switch (out.state) {
|
||||
|
|
@ -1755,7 +1756,8 @@ static int cm_read_state_file(FILE *state_file,State_Table_t *states)
|
|||
break;
|
||||
|
||||
}
|
||||
*/
|
||||
*/
|
||||
|
||||
/*** Store this bit value ***/
|
||||
|
||||
cm_store_bits_value(states,i,j,bit_value);
|
||||
|
|
@ -1874,7 +1876,7 @@ void cm_d_state(ARGS)
|
|||
err=0, /* integer for storage of error status */
|
||||
test; /* testing integer */
|
||||
|
||||
State_Table_t *states; /* pointer to base address structure
|
||||
State_Table_t *states, /* pointer to base address structure
|
||||
for all state arrays. *states
|
||||
contains the pointers to
|
||||
state[], bits[], input[]
|
||||
|
|
@ -1883,7 +1885,7 @@ void cm_d_state(ARGS)
|
|||
calloc, so they do not take up
|
||||
rotational storage space...only
|
||||
the *states structure does this. */
|
||||
|
||||
*states_old;
|
||||
FILE *state_file; /* pointer to the state.in input
|
||||
vector file */
|
||||
|
||||
|
|
@ -1901,9 +1903,12 @@ void cm_d_state(ARGS)
|
|||
input from state.in */
|
||||
*s; /* main string variable */
|
||||
|
||||
char *loading_error = "\n***ERROR***\nD_STATE: state.in file was not read successfully. \nThe most common cause of this problem is a\ntrailing blank line in the state.in file \n";
|
||||
char *open_error = "\n***ERROR***\nD_STATE: failed to open state file.\n";
|
||||
|
||||
char *loading_error = "\n***ERROR***\nD_STATE: state file was not read successfully. \nThe most common cause of this problem is a\ntrailing blank line in the state.in file \n";
|
||||
|
||||
char *index_error = "\n***ERROR***\nD_STATE: An error exists in the ordering of states values\n in the states->state[] array. This is usually caused \nby non-contiguous state definitions in the state.in file \n";
|
||||
char buf[100];
|
||||
|
||||
|
||||
|
||||
|
|
@ -1916,22 +1921,23 @@ void cm_d_state(ARGS)
|
|||
|
||||
/*** open file and count the number of vectors in it ***/
|
||||
state_file = fopen( PARAM(state_file), "r");
|
||||
|
||||
|
||||
/* increment counter if not a comment until EOF reached... */
|
||||
i = 0;
|
||||
s = temp;
|
||||
while ( fgets(s,MAX_STRING_SIZE,state_file) != NULL) {
|
||||
if ( '*' != s[0] ) {
|
||||
while(isspace(*s) || (*s == '*'))
|
||||
(s)++;
|
||||
if ( *s != '\0' ) i++;
|
||||
if (state_file!=NULL)
|
||||
while ( fgets(s,MAX_STRING_SIZE,state_file) != NULL) {
|
||||
if ( '*' != s[0] ) {
|
||||
while(isspace(*s) || (*s == '*'))
|
||||
(s)++;
|
||||
if ( *s != '\0' ) i++;
|
||||
}
|
||||
s = temp;
|
||||
}
|
||||
s = temp;
|
||||
}
|
||||
|
||||
/*** allocate storage for *states... ***/
|
||||
|
||||
states = (State_Table_t *) cm_event_alloc(0,sizeof(State_Table_t));
|
||||
states = states_old = (State_Table_t *) cm_event_alloc(0,sizeof(State_Table_t));
|
||||
|
||||
/* Store depth value */
|
||||
states->depth = i;
|
||||
|
|
@ -1942,10 +1948,10 @@ void cm_d_state(ARGS)
|
|||
|
||||
|
||||
/* assign storage for arrays to pointers in states table */
|
||||
states->state = (int *) calloc(states->depth,sizeof(int));
|
||||
states->bits = (short *) calloc((states->num_outputs * states->depth / 4),sizeof(short));
|
||||
states->inputs = (short *) calloc((states->num_inputs * states->depth / 8),sizeof(short));
|
||||
states->next_state = (int *) calloc(states->depth,sizeof(int));
|
||||
states->state = (int *) calloc(states->depth + 1,sizeof(int));
|
||||
states->bits = (short *) calloc((states->num_outputs * states->depth / 4 + 1),sizeof(short));
|
||||
states->inputs = (short *) calloc((states->num_inputs * states->depth / 8 + 1),sizeof(short));
|
||||
states->next_state = (int *) calloc(states->depth + 1,sizeof(int));
|
||||
|
||||
|
||||
/* Initialize *state, *bits, *inputs & *next_state to zero */
|
||||
|
|
@ -1963,7 +1969,9 @@ void cm_d_state(ARGS)
|
|||
|
||||
reset = reset_old = (Digital_State_t *) cm_event_alloc(2,sizeof(Digital_State_t));
|
||||
|
||||
|
||||
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);
|
||||
|
||||
/*** Send file pointer and the four storage pointers ***/
|
||||
/*** to "cm_read_state_file()". This will return after ***/
|
||||
|
|
@ -1973,9 +1981,12 @@ void cm_d_state(ARGS)
|
|||
/*** and the num_inputs, num_outputs and depth ***/
|
||||
/*** values supplied. ***/
|
||||
|
||||
rewind(state_file);
|
||||
err = cm_read_state_file(state_file,states);
|
||||
|
||||
if (state_file) {
|
||||
rewind(state_file);
|
||||
err = cm_read_state_file(state_file,states);
|
||||
} else {
|
||||
err = 1;
|
||||
}
|
||||
|
||||
if (err) { /* problem occurred in load...send error msg. */
|
||||
|
||||
|
|
@ -1993,12 +2004,14 @@ void cm_d_state(ARGS)
|
|||
}
|
||||
|
||||
/* close state_file */
|
||||
fclose(state_file);
|
||||
if (state_file)
|
||||
fclose(state_file);
|
||||
|
||||
|
||||
/* declare load values */
|
||||
|
||||
for (i=0; i<states->num_outputs; i++) {
|
||||
// for (i=0; i<states->num_outputs; i++) {
|
||||
for (i=0; i<states->num_inputs; i++) {
|
||||
LOAD(in[i]) = PARAM(input_load);
|
||||
}
|
||||
|
||||
|
|
@ -2010,6 +2023,9 @@ void cm_d_state(ARGS)
|
|||
else { /**** Retrieve previous values ****/
|
||||
|
||||
states = (State_Table_t *) cm_event_get_ptr(0,0);
|
||||
states_old = (State_Table_t *) cm_event_get_ptr(0,1);
|
||||
// Copy storage
|
||||
*states = *states_old;
|
||||
|
||||
clk = (Digital_State_t *) cm_event_get_ptr(1,0);
|
||||
clk_old = (Digital_State_t *) cm_event_get_ptr(1,1);
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ NON-STANDARD FEATURES
|
|||
|
||||
NONE
|
||||
|
||||
=============================================================================*/
|
||||
/*=============================================================================*/
|
||||
|
||||
/*=== CM_TOGGLE_BIT ROUTINE ===*/
|
||||
|
||||
|
|
@ -196,7 +196,7 @@ NON-STANDARD FEATURES
|
|||
|
||||
NONE
|
||||
|
||||
=============================================================================*/
|
||||
/*=============================================================================*/
|
||||
|
||||
/*=== CM_D_TFF ROUTINE ===*/
|
||||
|
||||
|
|
@ -248,7 +248,13 @@ void cm_d_tff(ARGS)
|
|||
}
|
||||
if ( !PORT_NULL(reset) ) {
|
||||
LOAD(reset) = PARAM(reset_load);
|
||||
}
|
||||
}
|
||||
|
||||
/* retrieve storage for the outputs */
|
||||
clk = clk_old = (Digital_State_t *) cm_event_get_ptr(0,0);
|
||||
set = set_old = (Digital_State_t *) cm_event_get_ptr(1,0);
|
||||
reset = reset_old = (Digital_State_t *) cm_event_get_ptr(2,0);
|
||||
out = out_old = (Digital_State_t *) cm_event_get_ptr(3,0);
|
||||
|
||||
}
|
||||
else { /* Retrieve previous values */
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ NON-STANDARD FEATURES
|
|||
|
||||
NONE
|
||||
|
||||
=============================================================================*/
|
||||
/*=============================================================================*/
|
||||
|
||||
/*=== CM_TOGGLE_BIT ROUTINE ===*/
|
||||
|
||||
|
|
@ -188,7 +188,7 @@ NON-STANDARD FEATURES
|
|||
|
||||
NONE
|
||||
|
||||
=============================================================================*/
|
||||
/*=============================================================================*/
|
||||
|
||||
/*=== CM_D_XNOR ROUTINE ===*/
|
||||
|
||||
|
|
@ -228,6 +228,9 @@ void cm_d_xnor(ARGS)
|
|||
|
||||
for (i=0; i<size; i++) LOAD(in[i]) = PARAM(input_load);
|
||||
|
||||
/* retrieve storage for the outputs */
|
||||
out = out_old = (Digital_State_t *) cm_event_get_ptr(0,0);
|
||||
|
||||
}
|
||||
else { /* Retrieve previous values */
|
||||
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ NON-STANDARD FEATURES
|
|||
NONE
|
||||
|
||||
|
||||
==============================================================================
|
||||
/*==============================================================================
|
||||
|
||||
FUNCTION cm_toggle_bit()
|
||||
|
||||
|
|
@ -93,7 +93,7 @@ NON-STANDARD FEATURES
|
|||
|
||||
NONE
|
||||
|
||||
=============================================================================*/
|
||||
/*=============================================================================*/
|
||||
|
||||
|
||||
/*=== CM_TOGGLE_BIT ROUTINE ===*/
|
||||
|
|
@ -162,7 +162,7 @@ NON-STANDARD FEATURES
|
|||
|
||||
NONE
|
||||
|
||||
=============================================================================*/
|
||||
/*=============================================================================*/
|
||||
|
||||
/*=== CM_D_XOR ROUTINE ===*/
|
||||
|
||||
|
|
@ -202,6 +202,9 @@ void cm_d_xor(ARGS)
|
|||
|
||||
for (i=0; i<size; i++) LOAD(in[i]) = PARAM(input_load);
|
||||
|
||||
/* retrieve storage for the outputs */
|
||||
out = out_old = (Digital_State_t *) cm_event_get_ptr(0,0);
|
||||
|
||||
}
|
||||
else { /* Retrieve previous values */
|
||||
|
||||
|
|
|
|||
|
|
@ -217,6 +217,14 @@ void cm_dac_bridge(ARGS)
|
|||
/* allocate output space and obtain adresses */
|
||||
out = out_old = cm_analog_alloc(0,size * sizeof(double));
|
||||
breakpoint = cm_analog_alloc(1,sizeof(double));
|
||||
|
||||
/* assign discrete addresses */
|
||||
in = in_old = (Digital_State_t *) cm_event_get_ptr(0,0);
|
||||
|
||||
/* assign analog addresses */
|
||||
out = out_old = cm_analog_get_ptr(0,0);
|
||||
breakpoint = cm_analog_get_ptr(1,0);
|
||||
|
||||
|
||||
/* read current input values */
|
||||
for (i=0; i<size; i++) {
|
||||
|
|
|
|||
|
|
@ -151,6 +151,7 @@ void cm_aswitch(ARGS) /* structure holding parms,
|
|||
if ( PARAM(log) == MIF_TRUE ) { /* Logarithmic Variation in 'R' */
|
||||
intermediate = log(r_off / r_on) / (cntl_on - cntl_off);
|
||||
r = r_on * exp(intermediate * (cntl_on - INPUT(cntl_in)));
|
||||
if(r<=1.0e-9) r=1.0e-9;/* minimum resistance limiter */
|
||||
pi_pvout = 1.0 / r;
|
||||
pi_pcntl = intermediate * INPUT(out) / r;
|
||||
}
|
||||
|
|
@ -158,11 +159,12 @@ void cm_aswitch(ARGS) /* structure holding parms,
|
|||
intermediate = (r_on - r_off) / (cntl_on - cntl_off);
|
||||
r = INPUT(cntl_in) * intermediate + ((r_off*cntl_on -
|
||||
r_on*cntl_off) / (cntl_on - cntl_off));
|
||||
if(r<=1.0e-9) r=1.0e-9;/* minimum resistance limiter */
|
||||
pi_pvout = 1.0 / r;
|
||||
pi_pcntl = -intermediate * INPUT(out) / (r*r);
|
||||
}
|
||||
|
||||
pi_pvout = 1.0 / r;
|
||||
/*pi_pvout = 1.0 / r;*/
|
||||
|
||||
|
||||
if(ANALYSIS != MIF_AC) { /* Output DC & Transient Values */
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ Null_Allowed: no
|
|||
|
||||
PARAMETER_TABLE:
|
||||
|
||||
Parameter_Name: H_array B_array
|
||||
Parameter_Name: h_array b_array
|
||||
Description: "magnetic field array" "flux density array"
|
||||
Data_Type: real real
|
||||
Default_Value: - -
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ void ucm_real_delay (ARGS)
|
|||
|
||||
if(INIT) {
|
||||
state = (void *) 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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,6 +19,8 @@ void ucm_real_to_v (ARGS)
|
|||
if(INIT) {
|
||||
t = (void *) cm_event_alloc(TS, 2 * sizeof(double));
|
||||
v = (void *) 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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue