**3. How to improve traditional simulated annealing**

There are at least two shortcomings which impact the search speed of traditional SA. (1) Inefficient global search: In order to assure a final convergence effectively, the moving methods with relatively small changes should be used, so the global search within a short runtime is quite limited. Even using higher temperature, it is still slow to explore the huge search space of layout problem. (2) Informational waste: It does not use the information of past experience, including past solutions and past moves. It is quite possible to get a very good configuration of past solutions at the beginning but to lose it at last.

A Simulated Annealing Based Approach to Integrated Circuit Layout Design 245

an iterative improvement method and a stochastic algorithm. The main difference between 2-stage SA and MSA is the special crossover operator to use a part of configuration of the current best and to reduce the informational waste. Although we can get a rough solution by producing solutions randomly, it is with low improving efficiency. The proposed crossover operator has a search direction, which is based on the configuration from past

The intuitive comparison shows several intuitive advantage of MSA comparing with traditional SA and 2-stage SA. For global search ability, 2-stage SA is better than traditional SA due to big changes in the first stage, and MSA is even better than 2-stage SA due to the crossover operator and even bigger changes in the first stage. Traditional SA and 2-stage SA do not use past experience, while MSA is using past good solutions by using the crossover

The detailed IC design process includes system specification, architectural design, functional design, logic design, circuit design, layout design and verification. The layout is near the last stage of IC design, and it is a critical stage of electronic product development. As one of the

Let us start with the formulation of 3D placement. Let *M =* {*m1*, *m2*, *...*, *mn*} denote the modules or blocks to be placed, where *n* is the number of modules. Each *mi*, where *1*≤*i*≤*n*, has height *hi*, length *li* and width *wi*. The packing volume is defined by the minimum bounding rectangular parallelepiped including all modules. For the placement, we need to optimize the interconnect networks. Let *N =* {*n1, n2, …, nl*} be the set of interconnect nets between modules, where *l* is total net number. Let *leni* denote the estimated wire length of each net *ni*, *1*≤*i*≤*l*. Let *Pi* denote the estimated dynamic power, i.e. the interconnect power of net *ni*. Let (*xi, yi, zi, rx-i, ry-i, rz-i*) be the location and rotation on 3D orthogonal coordinate system for each module *mi*, *1*≤*i*≤*k*, where (*xi, yi, zi*) means the coordinates of the below-rearleft corner of module *mi*, and (*rx-i, ry-i, rz-i*) denotes the rotation (0, 1) of *mi* on yz-, zx- and xy-

In short, The input is a set of modules *M =* {*m1, m2,...*} with height, length and width {(*h1, l1, w1*)*,* (*h2, l2, w2*)*,...*} and a net list *N =* {*n1, n2,* ...}. The constraint is no overlap between *mi* and *mj*, where *i*≠*j*. The output is a set of location and rotation for each module {(*x1, y1, z1, rx-1, ry-1, rz-1*)*,*  (*x2, y2, z2, rx-2, ry-2, rz-2*)*,...*} such that: (1) Minimize the power consumption; (2) Minimize the

The 3D-packing problem is a special case of 3D placement with no consideration of power and delay. The 2D placement problem is regarded as a special case of 3D placement with z=0, as shown in Figure 3. The 2D-packing problem is a special case of 3D packing with z=0.

key steps of IC layout, the placement has big impact on the overall quality of IC chip.

plane. *rz-i* =1 is the normal state of modules, while *rz-i* =0 is rotated by 90 degree.

maximal delay; (3) Minimize the volume of bounding box.

All of the mentioned three problems are formulated so far.

good solutions, to get high improving efficiency.

**5. Application to integrated circuit layout optimization** 

operator.

**5.1. Problem definition** 

First of all, to overcome the shortcoming of inefficient global search, a two-stage algorithm is considered as follows. The first stage is named rough search, and the second stage is named focusing search. The rough search tends to big changes, such as crossover from genetic algorithm, to improve global search ability, while the focusing search tends to small changes, such as exchange, move and rotation, to get final convergence and reach better near-optimal solution.

Secondly, to overcome the shortcoming of informational waste, a special crossover operator from genetic algorithm, which reuses the information of past solutions, is considered. Comparing with random operator, the crossover operator has a search direction, which is based on the configuration from past good solutions, by use a part of configuration of the current best to reduce the informational waste. Besides, a guide with the probabilities to select running method adaptively according to the short-term improving speed is also considered.

In real implementation of 2-stage SA, the temperature scheduling of the second stage is same with that of the first stage using a geometric scheduling (*Tk+1 = qTk, 0<q<1*) with repeated inside loop (*p* times) as the equation (1). The only difference is the parameter setting. In the second stage, *T'i* (instead of *Ti* in the first stage) is the variable temperature at the *i th* step in the second stage, *T'0* (instead of *T0*) is the initial temperature of the second stage, *p'* (instead of *p*) is the inside loop number of the second stage and *q'* (instead of *q*) the temperature coefficient of the second stage. The detailed temperature scheduling setting depends on the requirement of runtime. As a reference, two sets of the parameters are set separately as follows: *T0* = 100000, *Te* = 100, *p* = 1000, *q* = 0.98, *T'0* = 1000, *T'e* = 1, *p'* = 1000, *q'* = 0.98. For different benchmarks, the inside loop number can be increased from 1000 to 2000, 5000, etc. Also the temperature coefficient can be closer to 1, such as 0.99, 0.995, etc. The parameter setting with a given runtime is adjusted by selecting the initial temperature, the final temperature, the temperature coefficient and the inside loop number.
