68 dst->SW_X = src->SW_X ;
69 dst->SW_Y = src->SW_Y ;
70 dst->Length = src->Length ;
71 dst->Width = src->Width ;
72 dst->Discr_X = src->Discr_X ;
73 dst->Discr_Y = src->Discr_Y ;
74 dst->SW_Row = src->SW_Row ;
75 dst->SW_Column = src->SW_Column ;
76 dst->NE_Row = src->NE_Row ;
77 dst->NE_Column = src->NE_Column ;
78 dst->Index_start = src->Index_start ;
79 dst->Index_end = src->Index_end ;
154 "%s rectangle (%.1f, %.1f, %.1f, %.1f ) ;\n",
168 return ( cellx >= icelement->
SW_X
169 && celly >= icelement->
SW_Y
170 && cellx < icelement->SW_X + icelement->
Length
171 && celly < icelement->SW_Y + icelement->
Width) ;
182 if (icelement_a == icelement_b)
186 if ( (icelement_a->
SW_X + icelement_a->
Length)
193 if ( (icelement_a->
SW_Y + icelement_a->
Width)
196 >= (icelement_b->
SW_Y + icelement_b->
Width))
207 return ( (icel->
SW_X < 0.0)
211 || (icel->
SW_Y < 0.0)
251 icel->
SW_Row = row_index-- ;
259 icel->
NE_Row = row_index ;
277 max_temperature = *(temperatures + icel->
Index_start) ;
280 max_temperature =
MAX
293 for (row = icel->
SW_Row ; row <= icel->NE_Row ; row++)
295 for (column = icel->
SW_Column ; column <= icel->NE_Column ; column++)
297 max_temperature =
MAX
307 return max_temperature ;
330 min_temperature =
MIN
343 for (row = icel->
SW_Row ; row <= icel->NE_Row ; row++)
345 for (column = icel->
SW_Column ; column <= icel->NE_Column ; column++)
347 min_temperature =
MIN
359 return min_temperature ;
381 avg_temperature += *(temperatures + i) ;
387 for (row = icel->
SW_Row ; row <= icel->NE_Row ; row++)
389 for (column = icel->
SW_Column ; column <= icel->NE_Column ; column++)
ChipDimension_t get_chip_length(Dimensions_t *dimensions)
ChipDimension_t get_cell_location_y(Dimensions_t *dimensions, CellIndex_t row_index)
ChipDimension_t get_chip_width(Dimensions_t *dimensions)
ChipDimension_t get_cell_location_x(Dimensions_t *dimensions, CellIndex_t column_index)
CellIndex_t get_cell_offset_in_layer(Dimensions_t *dimensions, CellIndex_t row_index, CellIndex_t column_index)
CellIndex_t first_column(Dimensions_t *dimensions)
CellIndex_t first_row(Dimensions_t *dimensions)
bool check_intersection(ICElement_t *icelement_a, ICElement_t *icelement_b)
Temperature_t get_avg_temperature_ic_element(ICElement_t *icel, Dimensions_t *dimensions, Temperature_t *temperatures)
void ic_element_print(ICElement_t *icel, FILE *stream, String_t prefix)
bool ic_element_equal(ICElement_t *icel, ICElement_t *other)
Temperature_t get_min_temperature_ic_element(ICElement_t *icel, Dimensions_t *dimensions, Temperature_t *temperatures)
Temperature_t get_max_temperature_ic_element(ICElement_t *icel, Dimensions_t *dimensions, Temperature_t *temperatures)
void ic_element_copy(ICElement_t *dst, ICElement_t *src)
ICElement_t * ic_element_clone(ICElement_t *icel)
ICElement_t * ic_element_calloc(void)
void ic_element_destroy(ICElement_t *icel)
void ic_element_free(ICElement_t *icel)
bool check_location(ICElement_t *icel, Dimensions_t *dimensions)
void align_to_grid(ICElement_t *icel, Dimensions_t *dimensions)
void ic_element_init(ICElement_t *icel)
bool ic_element_has_center(ICElement_t *icelement, CellDimension_t cellx, CellDimension_t celly)
Collections of all the structures that are needed for the thermal simulation.