Air cooling of IC substrate
Using Femtet’s simple fluid-thermal analysis solver, we explain an example of searching for the substrate dimensions and its angle that minimize the size of the substrate while keeping the maximum temperature of an IC chip on the substrate to a minimum.
Note
Related example: Heating element on the substrate
Sample File
Note
Keep the sample project
open in Femtet, and double-click on the sample code
to execute it.
Note
For details on the FEM problem, please refer to FemtetHelp / Examples / Simple Fluid-Thermal Analysis / Example 1.
Analysis Model and Design Variables
Appearance of the Model
Variable Name |
Description |
|---|---|
substrate_w |
Width of the substrate |
substrate_d |
Depth of the substrate |
rot |
Rotation angle of the substrate |
Objective Function
Maximum temperature of the main chip (to minimize)
Maximum temperature of the sub chip (to minimize)
Occupied area on the substrate plane (to minimize)
Sample Code
1"""Multi-objective optimization: Air cooling of IC on a printed circuit board (forced convection).
2
3Using Femtet's simple fluid-thermal analysis solver,
4design a solution that reduces the chip temperature
5while minimizing the substrate size.
6
7Related project: paswat_ex1_parametric.femprj
8"""
9from pyfemtet.opt import FEMOpt
10
11
12def chip_temp(Femtet, chip_name):
13 """Obtain the maximum temperature of the chip.
14
15 Note:
16 The objective or constraint function should take Femtet
17 as its first argument and return a float as the output.
18
19 Params:
20 Femtet: An instance for manipulating Femtet with macros. For detailed information, please refer to "Femtet Macro Help".
21 chip_name (str): The body attribute name defined in femprj. Valid values are 'MAINCHIP' or 'SUBCHIP'.
22
23 Returns:
24 float: The maximum temperature of the body with the specified body attribute name.
25 """
26 Gogh = Femtet.Gogh
27
28 max_temperature, min_temperature, mean_temperature = Gogh.Watt.GetTemp(chip_name)
29
30 return max_temperature # unit: degree
31
32
33def substrate_size(Femtet):
34 """Calculate the occupied area on the XY plane of the substrate."""
35 substrate_w = Femtet.GetVariableValue('substrate_w')
36 substrate_d = Femtet.GetVariableValue('substrate_d')
37 return substrate_w * substrate_d # unit: mm2
38
39
40if __name__ == '__main__':
41
42 # Initialize the FEMOpt object.
43 # (establish connection between the optimization problem and Femtet)
44 femopt = FEMOpt()
45
46 # Add design variables to the optimization problem.
47 # (Specify the variables registered in the femprj file.)
48 femopt.add_parameter("substrate_w", 40, lower_bound=22, upper_bound=60)
49 femopt.add_parameter("substrate_d", 60, lower_bound=34, upper_bound=60)
50 femopt.add_parameter("rot", 0, lower_bound=0, upper_bound=180)
51
52 # Add the objective function to the optimization problem.
53 # The target bending angle is 90 degrees.
54 femopt.add_objective(fun=chip_temp, name='max temp. of<br>MAINCHIP (degree)', direction='minimize', args=('MAINCHIP',))
55 femopt.add_objective(fun=chip_temp, name='max temp. of<br>SUBCHIP (degree)', direction='minimize', args=('SUBCHIP',))
56 femopt.add_objective(fun=substrate_size, name='substrate size (mm2)', direction='minimize')
57
58 # Run optimization.
59 femopt.set_random_seed(42)
60 femopt.optimize(n_trials=15)
Execution Result of the Sample Code
Execution result of paswat_ex1 _parametric.py. This is a pair plot with the combination of each objective function on the vertical axis and horizontal axis.
- From this result, we can see the following:
MAINCHIP temperature and SUBCHIP temperature have a positive correlation.
Substrate size and CHIP temperature have a negative correlation and cannot be reduced at the same time.
Depending on the combination of design variables, there are conditions under which MAINCHIP and SUBCHIP temperatures can be further reduced even with the same substrate size.
In multi-objective optimization, a solution for which all objective function values are far from the goal compared to other solutions (that is, there is no reason to choose it) is called a “dominated solution.”
On the other hand, the set of “non-dominated solutions” is called the Pareto set.
Pareto sets generally have tradeoffs. In parameter optimization for product design, the Pareto set is determined by the rough design of the product and how variables are set.
Therefore, it is important for the designer to perform a rough design so that the entire Pareto set approaches the target values of all objective functions.
Finally, select a solution from the Pareto set and reflect it in the design.
Tip
In multi-objective optimization, it is possible that the optimization of objective functions may not be compatible. In such cases, the designer needs to select the appropriate design from among the trade-off solutions.
Note
Since the physical reasons for these trade-offs cannot be derived from optimization algorithms, designers need to interpret the analysis results of Femtet.
Note
Results may vary slightly depending on the versions of Femtet, PyFemtet, and the optimization engine it depends on.