limbo018 / DREAMPlace

Deep learning toolkit-enabled VLSI placement
BSD 3-Clause "New" or "Revised" License
681 stars 199 forks source link

Those parameters affect the location of the global nodes #118

Closed gjhhust closed 1 year ago

gjhhust commented 1 year ago

I currently need Dreamplace to create multiple datasets based on different placings of DAC2012, but when I changed the global_place_stages parameter in the JSON file, the transformation was not significant. I'm not sure why. Here are my two global_place_stages, and for both of them, I have disabled their nctugr and adjust_nctugr_area_flag:0.

two parameters:

"global_place_stages": [
        {
            "num_bins_x": 672,
            "num_bins_y": 672,
            "iteration": 2420,
            "learning_rate": 0.01,
            "wirelength": "weighted_average",
            "optimizer": "nesterov",
            "Llambda_density_weight_iteration": 1,
            "Lsub_iteration": 1,
            "routability_Lsub_iteration": 7
        }
    ],
    "gamma": 7,
    "target_density": 0.8274061305220985,
    "random_seed": 7155,
    "gp_noise_ratio": 0.14,
    "stop_overflow": 0.17,
    "route_num_bins_x": 591,
    "route_num_bins_y": 588,
"global_place_stages": [
        {
            "num_bins_x": 728,
            "num_bins_y": 728,
            "iteration": 1859,
            "learning_rate": 0.01,
            "wirelength": "weighted_average",
            "optimizer": "nesterov",
            "Llambda_density_weight_iteration": 1,
            "Lsub_iteration": 2,
            "routability_Lsub_iteration": 3
        }
    ],
    "gamma": 4.0,
    "target_density": 0.8227919461314643,
    "random_seed": 5139,
    "gp_noise_ratio": 0.04,
    "stop_overflow": 0.11,
    "route_num_bins_x": 800,
    "route_num_bins_y": 415,

Their parameters were assigned to me by a range of random numbers, which I thought was a big difference, but I ended up with NCTUGR's REGULAR mode, set by default, and cabling to calculate the congestion map for each layer

image image

I think the location of the congestion is very similar, so the resulting (location-congestion) data set is also very similar. I would like to get a different global layout of the congestion area, but the current placement is very similar?

In general, these parameters are not very large for global placement changes. Is there such a JSON parameter control, or do you need to modify it yourself in placeDB.py?

limbo018 commented 1 year ago

I think this is an expected behavior if the algorithm converges to the similar local optima given enough iterations. If you want the placer to generate very different results, I suggest the following ways:

  1. Change the initial placement with different random initializations in BasicPlace.py
  2. Inject random noise to cell locations before legalization.

You may try other methods as well, but I don't think modifying the number of bins or number of iterations will lead to significant change in results.