3D-ICE 3.0.0
thermal_data.h
Go to the documentation of this file.
1/******************************************************************************
2 * This file is part of 3D-ICE, version 3.1.0 . *
3 * *
4 * 3D-ICE is free software: you can redistribute it and/or modify it under *
5 * the terms of the GNU General Public License as published by the Free *
6 * Software Foundation, either version 3 of the License, or any later *
7 * version. *
8 * *
9 * 3D-ICE is distributed in the hope that it will be useful, but WITHOUT *
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
12 * more details. *
13 * *
14 * You should have received a copy of the GNU General Public License along *
15 * with 3D-ICE. If not, see <http://www.gnu.org/licenses/>. *
16 * *
17 * Copyright (C) 2021 *
18 * Embedded Systems Laboratory - Ecole Polytechnique Federale de Lausanne *
19 * All Rights Reserved. *
20 * *
21 * Authors: Arvind Sridhar Alessandro Vincenzi *
22 * Giseong Bak Martino Ruggiero *
23 * Thomas Brunschwiler Eder Zulian *
24 * Federico Terraneo Darong Huang *
25 * Luis Costero Marina Zapater *
26 * David Atienza *
27 * *
28 * For any comment, suggestion or request about 3D-ICE, please register and *
29 * write to the mailing list (see http://listes.epfl.ch/doc.cgi?liste=3d-ice) *
30 * Any usage of 3D-ICE for research, commercial or other purposes must be *
31 * properly acknowledged in the resulting products or publications. *
32 * *
33 * EPFL-STI-IEL-ESL Mail : 3d-ice@listes.epfl.ch *
34 * Batiment ELG, ELG 130 (SUBSCRIPTION IS NECESSARY) *
35 * Station 11 *
36 * 1015 Lausanne, Switzerland Url : http://esl.epfl.ch/3d-ice *
37 ******************************************************************************/
38
39#ifndef _3DICE_THERMAL_DATA_H_
40#define _3DICE_THERMAL_DATA_H_
41
44#ifdef __cplusplus
45extern "C"
46{
47#endif
48
49/******************************************************************************/
50
51#include "types.h"
52#include "string_t.h"
53
54#include "analysis.h"
55#include "stack_element_list.h"
56#include "system_matrix.h"
57#include "thermal_grid.h"
58#include "power_grid.h"
59#include "dimensions.h"
60#include "connection_list.h"
61
62#include "slu_ddefs.h"
63
64/******************************************************************************/
65
73 {
77
81
85
89
98
101 SuperMatrix SLUMatrix_B ;
102 } ;
103
104
108
109
110
111/******************************************************************************/
112
113
114
120 void thermal_data_init (ThermalData_t *tdata) ;
121
128 void update_number_of_cells (Dimensions_t *dimensions, StackElementList_t *stack_elements_list);
129
137 void get_cell_position(ChipDimension_t (*position_info)[4], CellIndex_t *layer_cell_record, CellIndex_t *layer_type_record, StackElementList_t *stack_elements_list, Dimensions_t* dimensions);
138
145 void get_minkowski_difference(ChipDimension_t *minkowski_diff, ChipDimension_t (*position_info)[4], int i_x, int i_y);
146
154 (
155 CellIndex_t* layer_cell_record,
156 CellIndex_t* layer_type_record,
157 ChipDimension_t (*position_info_ptr)[4],
158 Dimensions_t* dimensions
159
160 );
161
169 (
170 CellIndex_t* layer_cell_record,
171 CellIndex_t* layer_type_record,
172 ChipDimension_t (*position_info_ptr)[4],
173 Dimensions_t* dimensions
174 );
175
189 (
190 ThermalData_t *tdata,
191 StackElementList_t *list,
192 Dimensions_t *dimensions,
193 Analysis_t *analysis
194 ) ;
195
196
197
206 void thermal_data_destroy (ThermalData_t *tdata) ;
207
208
209
216 void reset_thermal_state (ThermalData_t *tdata, Analysis_t *analysis) ;
217
218
219
238 (
239 ThermalData_t *tdata,
240 Dimensions_t *dimensions,
241 Analysis_t *analysis
242 ) ;
243
244
245
261 (
262 ThermalData_t *tdata,
263 Dimensions_t *dimensions,
264 Analysis_t *analysis
265 ) ;
266
267
268
284 (
285 ThermalData_t *tdata,
286 Dimensions_t *dimensions,
287 Analysis_t *analysis
288 ) ;
289
290
291
309 (
310 ThermalData_t *tdata,
311 Dimensions_t *dimensions,
312 Analysis_t *analysis,
313 CoolantFR_t new_flow_rate
314 ) ;
315
316
317
333 (
334 ThermalData_t *tdata,
335 Dimensions_t *dimensions,
336 CellIndex_t layer_index,
337 CellIndex_t row_index,
338 CellIndex_t column_index
339 ) ;
340
341
342
358 (
359 ThermalData_t *tdata,
360 StackElementList_t *list,
361 Dimensions_t *dimensions,
362 String_t stack_element_id,
363 String_t file_name
364 ) ;
365
366/******************************************************************************/
367
368#ifdef __cplusplus
369}
370#endif
371
372#endif /* _3DICE_THERMAL_DATA_H_ */
char * String_t
Definition: string_t.h:55
Informations about the type of thermal simulation to be run, timing and its initial settings.
Definition: analysis.h:65
Collections of all the structures that are needed for the thermal simulation.
Definition: dimensions.h:311
Structure used to store data about the power sources.
Definition: power_grid.h:70
Structure representing the squared matrix storing the coefficients of the linear system that is solve...
Definition: system_matrix.h:73
Structure to collect data to run thermal simulations.
Definition: thermal_data.h:73
ThermalGrid_t ThermalGrid
Definition: thermal_data.h:80
SystemMatrix_t SM_A
Definition: thermal_data.h:97
PowerGrid_t PowerGrid
Definition: thermal_data.h:84
CellIndex_t Size
Definition: thermal_data.h:88
Temperature_t * Temperatures
Definition: thermal_data.h:76
SuperMatrix SLUMatrix_B
Definition: thermal_data.h:101
Structure used to store data about the thermal cells / RC nodes.
Definition: thermal_grid.h:68
void get_cell_position(ChipDimension_t(*position_info)[4], CellIndex_t *layer_cell_record, CellIndex_t *layer_type_record, StackElementList_t *stack_elements_list, Dimensions_t *dimensions)
Definition: thermal_data.c:154
void get_minkowski_difference(ChipDimension_t *minkowski_diff, ChipDimension_t(*position_info)[4], int i_x, int i_y)
Definition: thermal_data.c:629
void reset_thermal_state(ThermalData_t *tdata, Analysis_t *analysis)
void get_connections_in_layer(CellIndex_t *layer_cell_record, CellIndex_t *layer_type_record, ChipDimension_t(*position_info_ptr)[4], Dimensions_t *dimensions)
Definition: thermal_data.c:661
void get_connections_between_layer(CellIndex_t *layer_cell_record, CellIndex_t *layer_type_record, ChipDimension_t(*position_info_ptr)[4], Dimensions_t *dimensions)
Definition: thermal_data.c:734
SimResult_t emulate_slot(ThermalData_t *tdata, Dimensions_t *dimensions, Analysis_t *analysis)
SimResult_t emulate_step(ThermalData_t *tdata, Dimensions_t *dimensions, Analysis_t *analysis)
Temperature_t get_cell_temperature(ThermalData_t *tdata, Dimensions_t *dimensions, CellIndex_t layer_index, CellIndex_t row_index, CellIndex_t column_index)
void thermal_data_destroy(ThermalData_t *tdata)
void update_number_of_cells(Dimensions_t *dimensions, StackElementList_t *stack_elements_list)
Definition: thermal_data.c:69
Error_t update_coolant_flow_rate(ThermalData_t *tdata, Dimensions_t *dimensions, Analysis_t *analysis, CoolantFR_t new_flow_rate)
Error_t print_thermal_map(ThermalData_t *tdata, StackElementList_t *list, Dimensions_t *dimensions, String_t stack_element_id, String_t file_name)
Error_t thermal_data_build(ThermalData_t *tdata, StackElementList_t *list, Dimensions_t *dimensions, Analysis_t *analysis)
Definition: thermal_data.c:877
void thermal_data_init(ThermalData_t *tdata)
Definition: thermal_data.c:54
SimResult_t emulate_steady(ThermalData_t *tdata, Dimensions_t *dimensions, Analysis_t *analysis)
double CoolantFR_t
Definition: types.h:149
Error_t
Definition: types.h:401
double ChipDimension_t
Definition: types.h:187
double Temperature_t
Definition: types.h:71
uint32_t CellIndex_t
Definition: types.h:213
SimResult_t
Definition: types.h:418