Heating element on the substrate

Using Femtet’s heat conduction analysis solver, we explain an example of searching for the substrate dimensions that minimize the size of the substrate while keeping the maximum temperature of an IC chip on the substrate to a minimum.

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 / Heat Conduction Analysis / Example 14.

Design Variables

../../_images/wat_ex14_model.png

Appearance of the Model

Variable Name

Description

substrate_w

Width of the substrate

substrate_d

Depth 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

wat_ex14_parametric.py
 1"""Multi-objective optimization: heating element on substrate.
 2
 3Using Femtet's heat conduction analysis solver, we will design
 4to reduce the chip temperature and shrink the board size.
 5
 6Corresponding project: wat_ex14_parametric.femprj
 7"""
 8from pyfemtet.opt import FEMOpt
 9
10
11def chip_temp(Femtet, chip_name):
12    """Obtain the maximum temperature of the chip.
13
14    Note:
15        The objective or constraint function should take Femtet
16        as its first argument and return a float as the output.
17
18    Params:
19        Femtet: An instance for manipulating Femtet with macros. For detailed information, please refer to "Femtet Macro Help".
20        chip_name (str): The body attribute name defined in femprj. Valid values are 'MAINCHIP' or 'SUBCHIP'.
21
22    Returns:
23        float: The maximum temperature of the body with the specified body attribute name.
24    """
25    Gogh = Femtet.Gogh
26
27    max_temperature, min_temperature, mean_temperature = Gogh.Watt.GetTemp(chip_name)
28
29    return max_temperature  # unit: degree
30
31
32def substrate_size(Femtet):
33    """Calculate the occupied area on the XY plane of the substrate."""
34    substrate_w = Femtet.GetVariableValue('substrate_w')
35    substrate_d = Femtet.GetVariableValue('substrate_d')
36    return substrate_w * substrate_d  # unit: mm2
37
38
39if __name__ == '__main__':
40
41    # Initialize the FEMOpt object.
42    # (establish connection between the optimization problem and Femtet)
43    femopt = FEMOpt()
44
45    # Add design variables to the optimization problem.
46    # (Specify the variables registered in the femprj file.)
47    femopt.add_parameter("substrate_w", 40, lower_bound=22, upper_bound=40)
48    femopt.add_parameter("substrate_d", 60, lower_bound=33, upper_bound=60)
49
50    # Add the objective function to the optimization problem.
51    # The target bending angle is 90 degrees.
52    femopt.add_objective(fun=chip_temp, name='max temp. of<br>MAINCHIP (degree)', direction='minimize', args=('MAINCHIP',))
53    femopt.add_objective(fun=chip_temp, name='max temp. of<br>SUBCHIP (degree)', direction='minimize', args=('SUBCHIP',))
54    femopt.add_objective(fun=substrate_size, name='substrate size')
55
56    # Run optimization.
57    femopt.set_random_seed(42)
58    femopt.optimize(n_trials=15)

Execution Result of the Sample Code

../../_images/wat_ex14_result.png

Execution result of wat_ex14_parametric.py. This is a pair plot with the combination of each objective function on the vertical axis and horizontal axis.

From the results of the 20 trials, the following can be observed.

  • The temperature of the main chip and the temperature of the sub chip can both be reduced by decreasing one of them.

  • Reducing the substrate size increases the temperature of the main chip.

  • Reducing the substrate size increases the temperature of the sub chip.

From this, it can be seen that it is possible to design both the main chip and the sub chip to minimize temperature, but there is a trade-off relationship between the temperature of each chip and the substrate size, and it is understood that these minimizations are not compatible.

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.

In this problem, it can be inferred that the reduced substrate size has decreased the heat dissipation capacity to the environment, causing the chip temperature to rise because heat is not escaping from the substrate.

Note

Results may vary slightly depending on the versions of Femtet, PyFemtet, and the optimization engine it depends on.