d_source d_state d_ram, rewrite index operations
This commit is contained in:
parent
c57c3fe972
commit
560126526a
|
|
@ -1,3 +1,9 @@
|
|||
2010-11-21 Robert Larice
|
||||
* src/xspice/icm/digital/d_ram/cfunc.mod ,
|
||||
* src/xspice/icm/digital/d_source/cfunc.mod ,
|
||||
* src/xspice/icm/digital/d_state/cfunc.mod :
|
||||
d_source d_state d_ram, rewrite index operations
|
||||
|
||||
2010-11-21 Robert Larice
|
||||
* src/xspice/icm/digital/d_source/cfunc.mod ,
|
||||
* src/xspice/icm/digital/d_state/cfunc.mod :
|
||||
|
|
|
|||
|
|
@ -589,21 +589,13 @@ static void cm_initialize_ram(Digital_State_t out,int word_width,int bit_number,
|
|||
short base; /* variable to hold current base integer for
|
||||
comparison purposes. */
|
||||
|
||||
double double1, /* holding variable for doubles */
|
||||
double2; /* holding variable for doubles */
|
||||
|
||||
|
||||
|
||||
/* obtain offset value from word_number, word_width &
|
||||
bit_number */
|
||||
int1 = word_number * word_width + bit_number;
|
||||
double1 = int1 / 8.0;
|
||||
modf(double1, &double2);
|
||||
ram_offset = int1 - (double2 * 8.0);
|
||||
|
||||
/* obtain ram_index value */
|
||||
modf( int1/8.0, &double1);
|
||||
ram_index = double1;
|
||||
ram_index = int1 >> 3;
|
||||
ram_offset = int1 & 7;
|
||||
|
||||
/* retrieve entire base_address ram integer... */
|
||||
base = ram[ram_index];
|
||||
|
|
@ -690,10 +682,6 @@ static void cm_store_ram_value(Digital_State_t out,int word_width,int bit_number
|
|||
short base; /* variable to hold current base integer for
|
||||
comparison purposes. */
|
||||
|
||||
double double1,
|
||||
double2; /* holding variables for modf routine */
|
||||
|
||||
|
||||
/** first obtain word_number from *address values **/
|
||||
err = cm_address_to_decimal(address,address_size,&word_number);
|
||||
|
||||
|
|
@ -702,13 +690,9 @@ static void cm_store_ram_value(Digital_State_t out,int word_width,int bit_number
|
|||
/* obtain offset value from word_number, word_width &
|
||||
bit_number */
|
||||
int1 = word_number * word_width + bit_number;
|
||||
double1 = int1 / 8.0;
|
||||
modf(double1, &double2);
|
||||
ram_offset = int1 - (double2 * 8.0);
|
||||
|
||||
/* obtain ram_index value */
|
||||
modf( int1/8.0, &double1);
|
||||
ram_index = double1;
|
||||
ram_index = int1 >> 3;
|
||||
ram_offset = int1 & 7;
|
||||
|
||||
/* retrieve entire base_address ram integer... */
|
||||
base = ram[ram_index];
|
||||
|
|
@ -796,9 +780,6 @@ static void cm_get_ram_value(int word_width,int bit_number,Digital_State_t *addr
|
|||
short base; /* variable to hold current base integer for
|
||||
comparison purposes. */
|
||||
|
||||
double double1,
|
||||
double2; /* holding variables for modf routine */
|
||||
|
||||
|
||||
/** first obtain word_number from *address values **/
|
||||
err = cm_address_to_decimal(address,address_size,&word_number);
|
||||
|
|
@ -808,13 +789,9 @@ static void cm_get_ram_value(int word_width,int bit_number,Digital_State_t *addr
|
|||
/* obtain offset value from word_number, word_width &
|
||||
bit_number */
|
||||
int1 = word_number * word_width + bit_number;
|
||||
double1 = int1 / 8.0;
|
||||
modf(double1, &double2);
|
||||
ram_offset = int1 - (double2 * 8.0);
|
||||
|
||||
/* obtain ram_index value */
|
||||
modf( int1/8.0, &double1);
|
||||
ram_index = double1;
|
||||
ram_index = int1 >> 3;
|
||||
ram_offset = int1 & 7;
|
||||
|
||||
/* retrieve entire base_address ram integer... */
|
||||
base = ram[ram_index];
|
||||
|
|
|
|||
|
|
@ -739,17 +739,13 @@ static void cm_get_source_value(int word_width,int bit_number,int index,
|
|||
short base; /* variable to hold current base integer for
|
||||
comparison purposes. */
|
||||
|
||||
double double1,
|
||||
double2; /* holding variables for modf routine */
|
||||
|
||||
|
||||
|
||||
/* obtain offset value from index, word_width & bit_number */
|
||||
int1 = index * word_width + bit_number;
|
||||
double1 = int1 / 4.0;
|
||||
modf(double1, &double2);
|
||||
bit_index = double2;
|
||||
bit_offset = int1 - (double2 * 4.0);
|
||||
|
||||
bit_index = int1 >> 2;
|
||||
bit_offset = int1 & 3;
|
||||
|
||||
/* retrieve entire base_address bits integer... */
|
||||
base = bits[bit_index];
|
||||
|
|
@ -838,9 +834,6 @@ static int cm_read_source(FILE *source,short *bits,double *timepoints,
|
|||
|
||||
double number; /* holding variable for timepoint values */
|
||||
|
||||
double double1, /* temporary holding variable */
|
||||
double2; /* temporary holding variable */
|
||||
|
||||
short bit_value, /* holding variable for value read from
|
||||
source file which needs to be stored */
|
||||
base; /* holding variable for existing
|
||||
|
|
@ -931,10 +924,8 @@ static int cm_read_source(FILE *source,short *bits,double *timepoints,
|
|||
/* obtain offset value from word_number, word_width &
|
||||
bit_number */
|
||||
int1 = i * info->width + (j-1);
|
||||
double1 = int1 / 4.0;
|
||||
modf(double1, &double2);
|
||||
bit_index = double2;
|
||||
bit_offset = int1 - (double2 * 4.0);
|
||||
bit_index = int1 >> 2;
|
||||
bit_offset = int1 & 3;
|
||||
|
||||
/* retrieve entire base_address bits integer... */
|
||||
base = bits[bit_index];
|
||||
|
|
@ -1033,8 +1024,7 @@ void cm_d_source(ARGS)
|
|||
timepoints...this will have size equal
|
||||
to "depth" */
|
||||
*timepoints_old, /* the storage array for the old timepoints */
|
||||
test_double, /* test variable for doubles */
|
||||
double_dummy; /* fake holding double */
|
||||
test_double; /* test variable for doubles */
|
||||
|
||||
|
||||
|
||||
|
|
@ -1091,8 +1081,7 @@ void cm_d_source(ARGS)
|
|||
|
||||
|
||||
|
||||
modf( (PORT_SIZE(out) * i / 4), &double_dummy );
|
||||
dummy = double_dummy + 1;
|
||||
dummy = (PORT_SIZE(out) * i + 3) >> 2;
|
||||
|
||||
cm_event_alloc(1, dummy * (int) sizeof(short));
|
||||
|
||||
|
|
@ -1176,8 +1165,7 @@ void cm_d_source(ARGS)
|
|||
bits_old = (short *) cm_event_get_ptr(1,1);
|
||||
|
||||
/* Set old values to new... */
|
||||
modf( (info->width * info->depth / 4), &double_dummy );
|
||||
dummy = double_dummy + 1;
|
||||
dummy = (info->width * info->depth + 3) >> 2;
|
||||
|
||||
|
||||
for (i=0; i<dummy; i++) bits[i] = bits_old[i];
|
||||
|
|
|
|||
|
|
@ -789,18 +789,14 @@ static int cm_compare_to_inputs(State_Table_t *states,int index,int bit_number,
|
|||
short base; /* variable to hold current base integer for
|
||||
comparison purposes. */
|
||||
|
||||
double double1,
|
||||
double2; /* holding variables for modf routine */
|
||||
|
||||
Digital_t out; /* output variable for state retrieved */
|
||||
|
||||
|
||||
/* obtain offset value from index, word_width & bit_number */
|
||||
int1 = index * states->num_inputs + bit_number;
|
||||
double1 = int1 / 8.0;
|
||||
modf(double1, &double2);
|
||||
bit_index = double2;
|
||||
bit_offset = int1 - (double2 * 8.0);
|
||||
|
||||
bit_index = int1 >> 3;
|
||||
bit_offset = int1 & 7;
|
||||
|
||||
/* retrieve entire base_address bits integer... */
|
||||
base = states->inputs[bit_index];
|
||||
|
|
@ -998,18 +994,14 @@ static void cm_store_inputs_value(State_Table_t *states,int index, int bit_numbe
|
|||
short base; /* variable to hold current base integer for
|
||||
comparison purposes. */
|
||||
|
||||
double double1,
|
||||
double2; /* holding variables for modf routine */
|
||||
|
||||
|
||||
|
||||
/* obtain offset value from word_number, word_width &
|
||||
bit_number */
|
||||
int1 = index * states->num_inputs + bit_number;
|
||||
double1 = int1 / 8.0;
|
||||
modf(double1, &double2);
|
||||
bit_index = double2;
|
||||
bit_offset = int1 - (double2 * 8.0);
|
||||
|
||||
bit_index = int1 >> 3;
|
||||
bit_offset = int1 & 7;
|
||||
|
||||
/* retrieve entire base_address bits integer... */
|
||||
base = states->inputs[bit_index];
|
||||
|
|
@ -1319,17 +1311,13 @@ static void cm_get_bits_value(State_Table_t *states,int index, int bit_number,
|
|||
short base; /* variable to hold current base integer for
|
||||
comparison purposes. */
|
||||
|
||||
double double1,
|
||||
double2; /* holding variables for modf routine */
|
||||
|
||||
|
||||
|
||||
/* obtain offset value from index, word_width & bit_number */
|
||||
int1 = index * states->num_outputs + bit_number;
|
||||
double1 = int1 / 4.0;
|
||||
modf(double1, &double2);
|
||||
bit_index = double2;
|
||||
bit_offset = int1 - (double2 * 4.0);
|
||||
|
||||
bit_index = int1 >> 2;
|
||||
bit_offset = int1 & 3;
|
||||
|
||||
/* retrieve entire base_address bits integer... */
|
||||
base = states->bits[bit_index];
|
||||
|
|
@ -1412,18 +1400,14 @@ static void cm_store_bits_value(State_Table_t *states,int index, int bit_number,
|
|||
short base; /* variable to hold current base integer for
|
||||
comparison purposes. */
|
||||
|
||||
double double1,
|
||||
double2; /* holding variables for modf routine */
|
||||
|
||||
|
||||
|
||||
/* obtain offset value from word_number, word_width &
|
||||
bit_number */
|
||||
int1 = index * states->num_outputs + bit_number;
|
||||
double1 = int1 / 4.0;
|
||||
modf(double1, &double2);
|
||||
bit_index = double2;
|
||||
bit_offset = int1 - (double2 * 4.0);
|
||||
|
||||
bit_index = int1 >> 2;
|
||||
bit_offset = int1 & 3;
|
||||
|
||||
/* retrieve entire base_address bits integer... */
|
||||
base = states->bits[bit_index];
|
||||
|
|
|
|||
Loading…
Reference in New Issue