MacroPlacement

Simulated Annealing

Simulated Annealing (SA) is a powerful, but slow, optimization method. In the Nature Paper, the Simulated Annealing is used as one of the baselines. We implement the Simulated Annealing approach based on the descriptions in the Nature Paper.

Implementation details

The implementation details of Simulated Annealing is presented as following.

How to run the scripts

We implement the Simulated Annealing based on the APIs of Circuit Training. Please install Circuit Training before you run our scripts. You also need to update your Circuit Training directory in the scripts. You can also change the default configurations by updating the config.json. The config.json has following parameters:

After setting the config.json, the scripts can be run with following command:

python sa_multicore.py

Experimental Results

We have tested our codes with the ariane133 (NanGate45, utilization = 0.68, clock_period = 1.3ns). Our configuration is as following:

The cost curves are shown below. We can see that Spiral placement is better than Greedy packer.

Figure 1. Cost curves of Simulated Annealing. The black and red curves respectively represent the results from spiral placement and greedy packer.

The processes of Simulated Annealing are shown below. The left figure represents the result from spiral placement and the right figure represents the result from greedy packer.

Figure 2. The processes of Simulated Annealing. The left figure represents the result from spiral placement and the right figure represents the result from greedy packer.