Browse Source

d_source d_state d_ram, rewrite index operations

pre-master-46
rlar 16 years ago
parent
commit
560126526a
  1. 6
      ChangeLog
  2. 35
      src/xspice/icm/digital/d_ram/cfunc.mod
  3. 28
      src/xspice/icm/digital/d_source/cfunc.mod
  4. 40
      src/xspice/icm/digital/d_state/cfunc.mod

6
ChangeLog

@ -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 :

35
src/xspice/icm/digital/d_ram/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];

28
src/xspice/icm/digital/d_source/cfunc.mod

@ -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];

40
src/xspice/icm/digital/d_state/cfunc.mod

@ -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…
Cancel
Save