3D-ICE 3.0.0
dimensions.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_DIMENSIONS_H_
40#define _3DICE_DIMENSIONS_H_
41
44#ifdef __cplusplus
45extern "C"
46{
47#endif
48
49/******************************************************************************/
50
51#include <stdio.h> // For the file type FILE
52
53#include "types.h"
54#include "string_t.h"
55#include "non_uniform_cell_list.h"
56#include "connection_list.h"
57
58struct HeatSink_t; //Forward decalration
59
60/******************************************************************************/
61
80 {
86
92
97
103
107
111
116
117 } ;
118
122
123
124
131
132
133
143
144
145
155
156/******************************************************************************/
157
165 {
174
183
198
204
208 } ;
209
213
214
215
222
223
224
234
235
236
246
247/******************************************************************************/
248
255 {
259
263 } ;
264
268
269
270
277
278
279
289
290
291
301
302/******************************************************************************/
303
311 {
315
319
323
326 uint8_t NonUniform ;
327
331
335
337 Non_uniform_cellList_t Cell_list;
338
340 ConnectionList_t connections_list;
341
342 } ;
343
346 typedef struct Dimensions_t Dimensions_t ;
347
348
349
350/******************************************************************************/
351
352
353
359 void dimensions_init (Dimensions_t *dimensions) ;
360
361
362
371 void dimensions_copy (Dimensions_t *dst, Dimensions_t *src) ;
372
373
374
383 void dimensions_destroy (Dimensions_t *dimensions) ;
384
385
386
397
398
399
410
411
412
424 void dimensions_free (Dimensions_t *dimensions) ;
425
426
427
437
438 (Dimensions_t *dimensions, FILE *stream, String_t prefix) ;
439
440
441
448 void print_axes (Dimensions_t *dimensions) ;
449
450
451
463 (
464 Dimensions_t *dimensions,
465 Quantity_t num_channels,
466 ChannelModel_t channel_model,
467 struct HeatSink_t *topSink
468 ) ;
469
470
471
480
481
482
490 CellIndex_t last_row (Dimensions_t *dimensions) ;
491
492
493
502
503
504
512 CellIndex_t last_column (Dimensions_t *dimensions) ;
513
514
515
524
525
526
534 CellIndex_t last_layer (Dimensions_t *dimensions) ;
535
536
537
551
552 (Dimensions_t *dimensions, CellIndex_t column_index) ;
553
554
555
569
570 (Dimensions_t *dimensions, CellIndex_t row_index) ;
571
572
573
589
590 (Dimensions_t *dimensions, CellIndex_t layer_index) ;
591
592
593
604
605 (Dimensions_t *dimensions, CellIndex_t column_index) ;
606
607
608
619
620 (Dimensions_t *dimensions, CellIndex_t row_index) ;
621
622
623
635
636 (Dimensions_t *dimensions, CellIndex_t column_index) ;
637
638
639
651
652 (Dimensions_t *dimensions, CellIndex_t row_index) ;
653
654
655
664
665
666
675
676
677
686
687
688
697
698
699
709
710
711
720
721
722
736 (
737 Dimensions_t *dimensions,
738 CellIndex_t row_index,
739 CellIndex_t column_index
740 ) ;
741
742
743
759 (
760 Dimensions_t *dimensions,
761 CellIndex_t layer_index,
762 CellIndex_t row_index,
763 CellIndex_t column_index
764 ) ;
765
766
767
776
777
778
787
788
789
798
813 (
814 Dimensions_t *dimensions,
815 struct HeatSink_t *hsink,
816 CellIndex_t row_index,
817 CellIndex_t column_index
818 );
819
838 (
839 Dimensions_t *dimensions,
840 struct HeatSink_t *hsink,
841 CellIndex_t row_index,
842 CellIndex_t column_index
843 );
844
862 (
863 Dimensions_t *dimensions,
864 struct HeatSink_t *hsink,
865 CellIndex_t row_index,
866 CellIndex_t column_index
867 );
868
888 (
889 Dimensions_t *dimensions,
890 struct HeatSink_t *hsink,
891 CellIndex_t layer_index,
892 CellIndex_t row_index,
893 CellIndex_t column_index
894 );
895
896/******************************************************************************/
897
898#ifdef __cplusplus
899}
900#endif
901
902#endif /* _3DICE_DIMENSIONS_H_ */
void cell_dimensions_copy(CellDimensions_t *dst, CellDimensions_t *src)
Definition: dimensions.c:61
void dimensions_destroy(Dimensions_t *dimensions)
Definition: dimensions.c:205
ChipDimension_t get_chip_length(Dimensions_t *dimensions)
Definition: dimensions.c:699
CellIndex_t get_number_of_connections(Dimensions_t *dimensions)
Definition: dimensions.c:659
CellDimension_t get_cell_height(Dimensions_t *dimensions, CellIndex_t layer_index)
Definition: dimensions.c:536
void cell_dimensions_init(CellDimensions_t *celld)
Definition: dimensions.c:48
ChipDimension_t get_cell_location_y(Dimensions_t *dimensions, CellIndex_t row_index)
Definition: dimensions.c:621
void grid_dimensions_init(GridDimensions_t *gridd)
Definition: dimensions.c:109
CellIndex_t get_number_of_layers(Dimensions_t *dimensions)
Definition: dimensions.c:631
ChipDimension_t get_chip_width(Dimensions_t *dimensions)
Definition: dimensions.c:706
ChipDimension_t get_cell_location_x(Dimensions_t *dimensions, CellIndex_t column_index)
Definition: dimensions.c:602
void dimensions_print(Dimensions_t *dimensions, FILE *stream, String_t prefix)
Definition: dimensions.c:263
CellIndex_t get_layer_cell_offset_from_spreader_coordinates(Dimensions_t *dimensions, struct HeatSink_t *hsink, CellIndex_t layer_index, CellIndex_t row_index, CellIndex_t column_index)
Definition: dimensions.c:783
void dimensions_init(Dimensions_t *dimensions)
Definition: dimensions.c:173
CellIndex_t get_cell_offset_in_stack(Dimensions_t *dimensions, CellIndex_t layer_index, CellIndex_t row_index, CellIndex_t column_index)
Definition: dimensions.c:686
CellIndex_t get_spreader_cell_offset(Dimensions_t *dimensions, struct HeatSink_t *hsink, CellIndex_t row_index, CellIndex_t column_index)
Definition: dimensions.c:721
CellIndex_t get_spreader_cell_offset_from_layer_coordinates(Dimensions_t *dimensions, struct HeatSink_t *hsink, CellIndex_t row_index, CellIndex_t column_index)
Definition: dimensions.c:747
void dimensions_free(Dimensions_t *dimensions)
Definition: dimensions.c:249
void grid_dimensions_copy(GridDimensions_t *dst, GridDimensions_t *src)
Definition: dimensions.c:120
CellDimension_t get_cell_length(Dimensions_t *dimensions, CellIndex_t column_index)
Definition: dimensions.c:478
CellDimension_t get_cell_width(Dimensions_t *dimensions, CellIndex_t row_index)
Definition: dimensions.c:515
void cell_dimensions_destroy(CellDimensions_t *celld)
Definition: dimensions.c:96
ChipDimension_t get_chip_area(Dimensions_t *dimensions)
Definition: dimensions.c:713
void chip_dimensions_init(ChipDimensions_t *chipd)
Definition: dimensions.c:144
Dimensions_t * dimensions_calloc(void)
Definition: dimensions.c:219
CellIndex_t last_column(Dimensions_t *dimensions)
Definition: dimensions.c:456
void dimensions_copy(Dimensions_t *dst, Dimensions_t *src)
Definition: dimensions.c:189
CellIndex_t get_cell_offset_in_layer(Dimensions_t *dimensions, CellIndex_t row_index, CellIndex_t column_index)
Definition: dimensions.c:674
void print_axes(Dimensions_t *dimensions)
Definition: dimensions.c:284
ChipDimension_t get_cell_center_x(Dimensions_t *dimensions, CellIndex_t column_index)
Definition: dimensions.c:564
void chip_dimensions_destroy(ChipDimensions_t *chipd)
Definition: dimensions.c:162
CellIndex_t get_number_of_cells(Dimensions_t *dimensions)
Definition: dimensions.c:652
void chip_dimensions_copy(ChipDimensions_t *dst, ChipDimensions_t *src)
Definition: dimensions.c:152
ChipDimension_t get_cell_center_y(Dimensions_t *dimensions, CellIndex_t row_index)
Definition: dimensions.c:590
void compute_number_of_connections(Dimensions_t *dimensions, Quantity_t num_channels, ChannelModel_t channel_model, struct HeatSink_t *topSink)
Definition: dimensions.c:322
CellIndex_t last_layer(Dimensions_t *dimensions)
Definition: dimensions.c:470
CellIndex_t get_number_of_rows(Dimensions_t *dimensions)
Definition: dimensions.c:638
bool has_layer_underneath(Dimensions_t *dimensions, struct HeatSink_t *hsink, CellIndex_t row_index, CellIndex_t column_index)
Definition: dimensions.c:764
CellIndex_t first_layer(Dimensions_t *dimensions)
CellIndex_t first_column(Dimensions_t *dimensions)
void grid_dimensions_destroy(GridDimensions_t *gridd)
Definition: dimensions.c:133
Dimensions_t * dimensions_clone(Dimensions_t *dimensions)
Definition: dimensions.c:232
CellIndex_t get_number_of_columns(Dimensions_t *dimensions)
Definition: dimensions.c:645
CellIndex_t get_layer_area(Dimensions_t *dimensions)
Definition: dimensions.c:666
CellIndex_t first_row(Dimensions_t *dimensions)
CellIndex_t last_row(Dimensions_t *dimensions)
Definition: dimensions.c:442
char * String_t
Definition: string_t.h:55
Structure that collects the dimensions of a thermal cell.
Definition: dimensions.h:80
CellDimension_t LastWallLength
Definition: dimensions.h:102
CellDimension_t * Heights
Definition: dimensions.h:115
CellDimension_t Width
Definition: dimensions.h:106
CellDimension_t ChannelLength
Definition: dimensions.h:96
CellDimension_t FirstWallLength
Definition: dimensions.h:85
CellDimension_t WallLength
Definition: dimensions.h:91
Quantity_t NHeights
Definition: dimensions.h:110
Structure that collects the main dimensions of the IC.
Definition: dimensions.h:255
ChipDimension_t Length
Definition: dimensions.h:258
ChipDimension_t Width
Definition: dimensions.h:262
Collections of all the structures that are needed for the thermal simulation.
Definition: dimensions.h:311
GridDimensions_t Grid
Definition: dimensions.h:318
ConnectionList_t connections_list
Definition: dimensions.h:340
CellIndex_t Discr_Y
Definition: dimensions.h:334
uint8_t NonUniform
Definition: dimensions.h:326
ChipDimensions_t Chip
Definition: dimensions.h:322
CellDimensions_t Cell
Definition: dimensions.h:314
Non_uniform_cellList_t Cell_list
Definition: dimensions.h:337
CellIndex_t Discr_X
Definition: dimensions.h:330
Structure that collects the dimensions of a 3d thermal grid of cells.
Definition: dimensions.h:165
CellIndex_t NCells
Definition: dimensions.h:203
CellIndex_t NLayers
Definition: dimensions.h:173
CellIndex_t NRows
Definition: dimensions.h:182
CellIndex_t NColumns
Definition: dimensions.h:197
CellIndex_t NConnections
Definition: dimensions.h:207
Structure used to store data about the heat dissipation through the top or bottom surfaces of the 2D/...
Definition: heat_sink.h:69
ChannelModel_t
Definition: types.h:346
double ChipDimension_t
Definition: types.h:187
double CellDimension_t
Definition: types.h:177
uint32_t Quantity_t
Definition: types.h:59
uint32_t CellIndex_t
Definition: types.h:213