66 dst->NElements = src->NElements ;
68 floorplan_element_list_copy (&dst->ElementsList, &src->ElementsList) ;
72 if (src->Bpowers == NULL)
79 dst->Bpowers = (
Power_t *) malloc (
sizeof (
Power_t) * src->NElements) ;
81 if (dst->Bpowers == NULL)
83 fprintf (stderr,
"ERROR: malloc Bpowers in floorplan copy\n") ;
88 memcpy (dst->Bpowers, src->Bpowers, sizeof (
Power_t) * src->NElements) ;
101 floorplan_element_list_destroy (&floorplan->
ElementsList) ;
113 if (floorplan != NULL)
124 if (floorplan == NULL)
141 if (floorplan == NULL)
154 FloorplanElementListNode_t *flpeln ;
156 for (flpeln = floorplan_element_list_begin (&floorplan->
ElementsList) ;
158 flpeln = floorplan_element_list_next (flpeln))
164 fprintf (stream,
"%s\n", prefix) ;
189 if (floorplan->
Bpowers == NULL)
191 fprintf (stderr,
"Malloc Bpowers failed\n") ;
198 FloorplanElementListNode_t *flpeln ;
200 for (flpeln = floorplan_element_list_begin (&floorplan->
ElementsList) ;
202 flpeln = floorplan_element_list_next (flpeln))
206 ICElementListNode_t *iceln ;
208 for (iceln = ic_element_list_begin(&flpel->
ICElements) ;
210 iceln = ic_element_list_next (iceln))
258 floorplan_element_list_find (&floorplan->
ElementsList, &flpel) ;
271 FloorplanElementListNode_t *flpeln ;
273 for (flpeln = floorplan_element_list_begin (&floorplan->
ElementsList) ;
275 flpeln = floorplan_element_list_next (flpeln))
305 FloorplanElementListNode_t *flpeln ;
307 for (flpeln = floorplan_element_list_begin (&floorplan->
ElementsList) ;
309 flpeln = floorplan_element_list_next (flpeln))
334 if (max_temperatures == NULL)
336 *n_floorplan_elements =
347 FloorplanElementListNode_t *flpeln ;
349 for (flpeln = floorplan_element_list_begin (&floorplan->
ElementsList) ;
351 flpeln = floorplan_element_list_next (flpeln))
357 (flpel, dimensions, temperatures) ;
360 return max_temperatures ;
374 if (min_temperatures == NULL)
376 *n_floorplan_elements =
387 FloorplanElementListNode_t *flpeln ;
389 for (flpeln = floorplan_element_list_begin (&floorplan->
ElementsList) ;
391 flpeln = floorplan_element_list_next (flpeln))
397 (flpel, dimensions, temperatures) ;
400 return min_temperatures ;
414 if (avg_temperatures == NULL)
416 *n_floorplan_elements =
428 FloorplanElementListNode_t *flpeln ;
430 for (flpeln = floorplan_element_list_begin (&floorplan->
ElementsList) ;
432 flpeln = floorplan_element_list_next (flpeln))
438 (flpel, dimensions, temperatures) ;
441 return avg_temperatures ;
455 if (gradient_temperatures == NULL)
457 *n_floorplan_elements =
461 gradient_temperatures =
468 FloorplanElementListNode_t *flpeln ;
470 for (flpeln = floorplan_element_list_begin (&floorplan->
ElementsList) ;
472 flpeln = floorplan_element_list_next (flpeln))
478 (flpel, dimensions, temperatures) ;
481 return gradient_temperatures ;
CellIndex_t get_layer_area(Dimensions_t *dimensions)
Floorplan_t * floorplan_calloc(void)
FloorplanElement_t * get_floorplan_element(Floorplan_t *floorplan, String_t floorplan_element_id)
void floorplan_print(Floorplan_t *floorplan, FILE *stream, String_t prefix)
Error_t fill_sources_floorplan(Floorplan_t *floorplan, Source_t *sources)
void floorplan_free(Floorplan_t *floorplan)
void floorplan_copy(Floorplan_t *dst, Floorplan_t *src)
Temperature_t * get_all_gradient_temperatures_floorplan(Floorplan_t *floorplan, Dimensions_t *dimensions, Temperature_t *temperatures, Quantity_t *n_floorplan_elements, Temperature_t *gradient_temperatures)
Quantity_t get_number_of_floorplan_elements_floorplan(Floorplan_t *floorplan)
void floorplan_destroy(Floorplan_t *floorplan)
Floorplan_t * floorplan_clone(Floorplan_t *floorplan)
Error_t insert_power_values_floorplan(Floorplan_t *floorplan, PowersQueue_t *pvalues)
Temperature_t * get_all_min_temperatures_floorplan(Floorplan_t *floorplan, Dimensions_t *dimensions, Temperature_t *temperatures, Quantity_t *n_floorplan_elements, Temperature_t *min_temperatures)
Temperature_t * get_all_avg_temperatures_floorplan(Floorplan_t *floorplan, Dimensions_t *dimensions, Temperature_t *temperatures, Quantity_t *n_floorplan_elements, Temperature_t *avg_temperatures)
Error_t fill_floorplan(Floorplan_t *floorplan, Dimensions_t *dimensions, String_t file_name)
void floorplan_init(Floorplan_t *floorplan)
Temperature_t * get_all_max_temperatures_floorplan(Floorplan_t *floorplan, Dimensions_t *dimensions, Temperature_t *temperatures, Quantity_t *n_floorplan_elements, Temperature_t *max_temperatures)
Temperature_t get_gradient_temperature_floorplan_element(FloorplanElement_t *flpel, Dimensions_t *dimensions, Temperature_t *temperatures)
Temperature_t get_min_temperature_floorplan_element(FloorplanElement_t *flpel, Dimensions_t *dimensions, Temperature_t *temperatures)
void floorplan_element_print(FloorplanElement_t *flpel, FILE *stream, String_t prefix)
void floorplan_element_init(FloorplanElement_t *flpel)
Error_t insert_power_values_floorplan_element(FloorplanElement_t *flpel, PowersQueue_t *pvalues)
Temperature_t get_avg_temperature_floorplan_element(FloorplanElement_t *flpel, Dimensions_t *dimensions, Temperature_t *temperatures)
void floorplan_element_destroy(FloorplanElement_t *flpel)
Temperature_t get_max_temperature_floorplan_element(FloorplanElement_t *flpel, Dimensions_t *dimensions, Temperature_t *temperatures)
Error_t parse_floorplan_file(String_t filename, Floorplan_t *floorplan, Dimensions_t *dimensions)
void floorplan_matrix_copy(FloorplanMatrix_t *dst, FloorplanMatrix_t *src)
void floorplan_matrix_init(FloorplanMatrix_t *flpmatrix)
Error_t floorplan_matrix_build(FloorplanMatrix_t *flpmatrix, CellIndex_t nrows, CellIndex_t ncolumns, CellIndex_t nnz)
void floorplan_matrix_fill(FloorplanMatrix_t *flpmatrix, FloorplanElementList_t *list, Dimensions_t *dimensions)
void floorplan_matrix_multiply(FloorplanMatrix_t *flpmatrix, Source_t *x, Source_t *b)
void floorplan_matrix_destroy(FloorplanMatrix_t *flpmatrix)
bool is_empty_powers_queue(PowersQueue_t *pqueue)
Power_t get_from_powers_queue(PowersQueue_t *pqueue)
void string_init(String_t *string)
void string_destroy(String_t *string)
void string_copy(String_t *dst, String_t *src)
Collections of all the structures that are needed for the thermal simulation.
Structure containing information about a floorplan element.
PowersQueue_t * PowerValues
ICElementList_t ICElements
The floorplan representing the IC as a set of floorplan elements.
FloorplanMatrix_t SurfaceCoefficients
FloorplanElementList_t ElementsList
A First In - First Out circular queue to store power values.
@ TDICE_SUCCESS
The function returns with success.
@ TDICE_FAILURE
The function retuerns with a generic error.