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

../../_images/paswat_ex1_model.png

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

paswat_ex1 _parametric.py
 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

../../_images/paswat_ex1_result.png

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.