Unverified Commit 15a1728f by Sayak Kundu Committed by GitHub

Merge pull request #36 from TILOS-AI-Institute/flow_scripts

Flow scripts
parents 7f8123c4 185599b0
......@@ -531,7 +531,7 @@ We currently use the physical synthesis tool **Cadence Genus iSpatial** to obtai
<table>
<thead>
<tr>
<th colspan="10"><p align="center">Macro Placement generated Using CT (Ariane 68% Utilization)</p></th>
<th colspan="10"><p align="center"><a id="Ariane133_NG45_4ns_CT">Macro Placement generated Using CT (Ariane 68% Utilization)</p></th>
</tr>
</thead>
<tbody>
......@@ -1855,15 +1855,2361 @@ The following table and screenshots show the CT result.
<img width="300" src="./images/image12.png" alg="NVDLA_68_CT_Route">
</p>
**September 18:**
- To address [Question 8](#Question8), we have performed a sweep of target clock period (TCP) constraint for Ariane133-68 in NG45. Experiments above were performed with a loose TCP of 4.0ns. According to our studies, the “hockey stick” ends at a TCP of 1.3ns, so we have generated netlists and run CT for TCP values of 1.3ns and 1.5ns. The results are shown below (post-physical synthesis summary results with TCP values of 4.0ns, 1.5ns, 1.3ns; CT + Innovus P&R results for 1.5ns, 1.3ns). We see that the wirelength numbers are worse for CT results compared to the CMP result, but the timing numbers for CT are better than CMP.
- The following table shows the post-physical synthesis results of Ariane133-68-NG45 for different TCPs when the macro placement is generated using CMP.
<table>
<thead>
<tr>
<th colspan="10"><p align="center"><a id="Ariane133_NG45_4ns_CMP"></a>TCP: 4.0ns [<a href="#Ariane133_NG45_4ns_CT">Link</a> to corresponding CT result]</p></th>
</tr>
</thead>
<tbody>
<tr>
<td>Physical Design Stage</td>
<td>Core Area<br>(um^2)</td>
<td>Standard Cell Area (um^2)</td>
<td>Macro Area (um^2)</td>
<td>Total Power (mW)</td>
<td>Wirelength<br>(um)</td>
<td>WS<br>(ns)</td>
<td>TNS<br>(ns)</td>
<td>Congestion (H)</td>
<td>Congestion (V)</td>
</tr>
<tr>
<td>preCTS</td>
<td>1814274</td>
<td>215033</td>
<td>1018356</td>
<td>286.199</td>
<td>3535026</td>
<td>-0.001</td>
<td>-0.001</td>
<td>0.04%</td>
<td>0.01%</td>
</tr>
<tr>
<td>postCTS</td>
<td>1814274</td>
<td>216147</td>
<td>1018356</td>
<td>299.635</td>
<td>3544668</td>
<td>0.001</td>
<td>0</td>
<td>0.02%</td>
<td>0.01%</td>
</tr>
<tr>
<td>postRoute</td>
<td>1814274</td>
<td>216147</td>
<td>1018356</td>
<td>299.110</td>
<td>3649892</td>
<td>0.317</td>
<td>0</td>
<td></td>
<td></td>
</tr>
<tr>
<td>postRouteOpt</td>
<td>1814274</td>
<td>215738</td>
<td>1018356</td>
<td>295.127</td>
<td>3653200</td>
<td>0.397</td>
<td>0</td>
<td></td>
<td></td>
</tr>
<tr>
<td colspan="10"><p align="center"><a id="Ariane133_NG45_1.5ns_CMP"></a>TCP: 1.5ns [<a href="#Ariane133_NG45_1.3ns_CT">Link</a> to corresponding CT result]</p></td>
</tr>
<tr>
<td>Physical Design Stage</td>
<td>Core Area<br>(um^2)</td>
<td>Standard Cell Area (um^2)</td>
<td>Macro Area (um^2)</td>
<td>Total Power (mW)</td>
<td>Wirelength<br>(um)</td>
<td>WS<br>(ns)</td>
<td>TNS<br>(ns)</td>
<td>Congestion (H)</td>
<td>Congestion (V)</td>
</tr>
<tr>
<td>preCTS</td>
<td>1814274</td>
<td>232370</td>
<td>1018356</td>
<td>682.777</td>
<td>3635909</td>
<td>-0.008</td>
<td>-0.143</td>
<td>0.01%</td>
<td>0.01%</td>
</tr>
<tr>
<td>postCTS</td>
<td>1814274</td>
<td>234250</td>
<td>1018356</td>
<td>718.592</td>
<td>3663001</td>
<td>-0.002</td>
<td>-0.006</td>
<td>0.03%</td>
<td>0.10%</td>
</tr>
<tr>
<td>postRoute</td>
<td>1814274</td>
<td>234250</td>
<td>1018356</td>
<td>717.410</td>
<td>3777403</td>
<td>-0.221</td>
<td>-86.88</td>
<td></td>
<td></td>
</tr>
<tr>
<td>postRouteOpt</td>
<td>1814274</td>
<td>237178</td>
<td>1018356</td>
<td>718.866</td>
<td>3785973</td>
<td>-0.042</td>
<td>-6.311</td>
<td></td>
<td></td>
</tr>
<tr>
<td colspan="10"><p align="center"><a id="Ariane133_NG45_1.3ns_CMP"></a>TCP: 1.3ns [<a href="#Ariane133_NG45_1.3ns_CT">Link</a> to corresponding CT result]</p></td>
</tr>
<tr>
<td>Physical Design Stage</td>
<td>Core Area<br>(um^2)</td>
<td>Standard Cell Area (um^2)</td>
<td>Macro Area (um^2)</td>
<td>Total Power (mW)</td>
<td>Wirelength<br>(um)</td>
<td>WS<br>(ns)</td>
<td>TNS<br>(ns)</td>
<td>Congestion (H)</td>
<td>Congestion (V)</td>
</tr>
<tr>
<td>preCTS</td>
<td>1814274</td>
<td>251874</td>
<td>1018356</td>
<td>807.994</td>
<td>3885279</td>
<td>-0.15</td>
<td>-242.589</td>
<td>0.02%</td>
<td>0.02%</td>
</tr>
<tr>
<td>postCTS</td>
<td>1814274</td>
<td>254721</td>
<td>1018356</td>
<td>851.977</td>
<td>3923912</td>
<td>-0.127</td>
<td>-133.426</td>
<td>0.04%</td>
<td>0.10%</td>
</tr>
<tr>
<td>postRoute</td>
<td>1814274</td>
<td>254721</td>
<td>1018356</td>
<td>850.483</td>
<td>4049905</td>
<td>-0.239</td>
<td>-410.578</td>
<td></td>
<td></td>
</tr>
<tr>
<td>postRouteOpt</td>
<td>1814274</td>
<td>256230</td>
<td>1018356</td>
<td>851.546</td>
<td>4057140</td>
<td>-0.154</td>
<td>-196.527</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
- The following table shows the post-physical synthesis results of Ariane133-68-NG45 for different TCPs when the macro placement is generated using CT.
<table>
<thead>
<tr>
<th colspan="10"><p align="center"><a id="Ariane133_NG45_1.5ns_CT"></a>Ariane133-68-NG45 CT result for TCP:1.5ns [Corresponding CMP result <a href="#Ariane133_NG45_1.5ns_CMP">link</a>]</th>
</tr>
</thead>
<tbody>
<tr>
<td>Physical Design Stage</td>
<td>Core Area<br>(um^2)</td>
<td>Standard Cell Area (um^2)</td>
<td>Macro Area (um^2)</td>
<td>Total Power (mW)</td>
<td>Wirelength<br>(um)</td>
<td>WS<br>(ns)</td>
<td>TNS<br>(ns)</td>
<td>Congestion (H)</td>
<td>Congestion (V)</td>
</tr>
<tr>
<td>preCTS</td>
<td>1814274</td>
<td>227917</td>
<td>1018356</td>
<td>673.158</td>
<td>4243883</td>
<td>-0.012</td>
<td>-0.648</td>
<td>0.03%</td>
<td>0.03%</td>
</tr>
<tr>
<td>postCTS</td>
<td>1814274</td>
<td>229836</td>
<td>1018356</td>
<td>708.797</td>
<td>4247346</td>
<td>-0.001</td>
<td>-0.007</td>
<td>0.07%</td>
<td>0.12%</td>
</tr>
<tr>
<td>postRoute</td>
<td>1814274</td>
<td>229836</td>
<td>1018356</td>
<td>707.522</td>
<td>4360419</td>
<td>-0.052</td>
<td>-9.218</td>
<td></td>
<td></td>
</tr>
<tr>
<td>postRouteOpt</td>
<td>1814274</td>
<td>230164</td>
<td>1018356</td>
<td>707.829</td>
<td>4364537</td>
<td>-0.009</td>
<td>-0.233</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p align="center">
<img width="300" src="./images/image40.png" alg="Ariane133_68_CT_1.5ns_Place">
<img width="300" src="./images/image41.png" alg="Ariane133_68_CT_1.5ns_Route">
</p>
<table>
<thead>
<tr>
<th colspan="10"><p align="center"><a id="Ariane133_NG45_1.3ns_CT"></a>Ariane133-68-NG45 CT result for TCP:1.3ns [Corresponding CMP result <a href="#Ariane133_NG45_1.3ns_CMP">link</a>]</th>
</tr>
</thead>
<tbody>
<tr>
<td>Physical Design Stage</td>
<td>Core Area<br>(um^2)</td>
<td>Standard Cell Area (um^2)</td>
<td>Macro Area (um^2)</td>
<td>Total Power (mW)</td>
<td>Wirelength<br>(um)</td>
<td>WS<br>(ns)</td>
<td>TNS<br>(ns)</td>
<td>Congestion (H)</td>
<td>Congestion (V)</td>
</tr>
<tr>
<td>postSynth</td>
<td>1814274</td>
<td>244614</td>
<td>1018356</td>
<td>761.754</td>
<td>4884882</td>
<td>-0.764</td>
<td>-533.519</td>
<td></td>
<td></td>
</tr>
<tr>
<td>preCTS</td>
<td>1814274</td>
<td>244373</td>
<td>1018356</td>
<td>792.626</td>
<td>4732895</td>
<td>-0.123</td>
<td>-184.135</td>
<td>0.03%</td>
<td>0.11%</td>
</tr>
<tr>
<td>postCTS</td>
<td>1814274</td>
<td>247965</td>
<td>1018356</td>
<td>837.464</td>
<td>4762751</td>
<td>-0.084</td>
<td>-35.57</td>
<td>0.04%</td>
<td>0.15%</td>
</tr>
<tr>
<td>postRoute</td>
<td>1814274</td>
<td>247965</td>
<td>1018356</td>
<td>835.824</td>
<td>4887126</td>
<td>-0.123</td>
<td>-63.739</td>
<td></td>
<td></td>
</tr>
<tr>
<td>postRouteOpt</td>
<td>1814274</td>
<td>248448</td>
<td>1018356</td>
<td>836.399</td>
<td>4892431</td>
<td>-0.09</td>
<td>-57.448</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p align="center">
<img width="300" src="./images/image42.png" alg="Ariane133_68_CT_1.3ns_Place">
<img width="300" src="./images/image43.png" alg="Ariane133_68_CT_1.3ns_Route">
</p>
**September 19:**
We updated the detailed algorithm for [gridding](https://github.com/TILOS-AI-Institute/MacroPlacement/tree/main/CodeElements/Gridding) in Circuit Training.
We updated the detailed algorithm for [gridding](../../CodeElements/Gridding) in Circuit Training.
In constrast to the open-source [grid_size_selection.py](https://github.com/google-research/circuit_training/blob/main/circuit_training/grouping/grid_size_selection.py) in Circuit Training repo, which still calls the wrapper functions of plc client, our python scripts implement
the gridding from sractch and are easy to understand. The results of our scripts match exactly that of Circuit Training.
**September 21:**
We updated the detailed algorithm for [grouping](https://github.com/TILOS-AI-Institute/MacroPlacement/tree/main/CodeElements/Grouping) and [Clustering](https://github.com/TILOS-AI-Institute/MacroPlacement/tree/main/CodeElements/Clustering). Here we explictly shows how the netlist information such as net model is used during grouping and clustering, while the open-source Circuit Training implementation still calls the wrapper function of plc client to get netlist information.
**September 21:**
We updated the detailed algorithm for [grouping](../../CodeElements/Grouping) and [Clustering](../../CodeElements/Clustering). Here we explictly shows how the netlist information such as net model is used during grouping and clustering, while the open-source Circuit Training implementation still calls the wrapper function of plc client to get netlist information.
Among the more notable details that were not apparent from the Nature paper or the Circuit Training repo:
- For the gridding, we summarized the detailed algorithm for the entire gridding process. We also provided the details for macro packing and metric calculation.
- For the grouping, we identified how to translate the protocol buffer netlist into the hypergraph, which is the input to the hMETIS hypergraph partitioner when the gate-level netlist is clustered into soft macros.
- For the grouping, we also identified the details for each step: grouping the macro pins of the same macro into a cluster; grouping the IOs that are within close proximity of each other, boundary by boundary; grouping the closely-related standard cells, which connect to the same macro or the same IO cluster.
- For the clustering, we solved the following key issues: what exactly is the Hypergraph, and how is it partitioned? How to break up clusters that span a distance larger than breakup_threshold? And how to recursively merge small adjacent clusters?
**September 30:**
<a id="bp_quad_NG45_CT"></a>
**Circuit Training Baseline Result on “Our bp_quad-NanGate45_68”.**
We have trained CT to generate a macro placement for the [bp_quad design](../../Flows/NanGate45/bp_quad/). For this experiment we use the NanGate45 enablement; the initial canvas size is generated by setting utilization to 68%. We use the default hyperparameters used for Ariane to train CT for bp_quad design. The number of hard macros in bp_quad is 220, so we update [max_sequence_length](https://github.com/google-research/circuit_training/blob/6a76e327a70b5f0c9e3291b57c085688386da04e/circuit_training/learning/ppo_collect.py#L53) to 221 in [ppo_collect.py](https://github.com/google-research/circuit_training/blob/6a76e327a70b5f0c9e3291b57c085688386da04e/circuit_training/learning/ppo_collect.py#L53) and [sequence_length](https://github.com/google-research/circuit_training/blob/6a76e327a70b5f0c9e3291b57c085688386da04e/circuit_training/learning/train_ppo.py#L57) to 221 in train_ppo.py.
<table>
<thead>
<tr>
<th colspan="10"><p align="center">bp_quad-NG45-68% CT result (<a href="https://tensorboard.dev/experiment/QCD0s8OaQ1eIBv1njOMtOw/">Link</a> to Tensorboard) (<a href="#bp_quad_NG45_CMP">Link</a> to corresponding CMP result)</p></th>
</tr>
</thead>
<tbody>
<tr>
<td>Physical Design Stage</td>
<td>Core Area<br>(um^2)</td>
<td>Standard Cell Area (um^2)</td>
<td>Macro Area (um^2)</td>
<td>Total Power (mW)</td>
<td>Wirelength<br>(um)</td>
<td>WS<br>(ns)</td>
<td>TNS<br>(ns)</td>
<td>Congestion (H)</td>
<td>Congestion (V)</td>
</tr>
<tr>
<td>postSynth</td>
<td>8449457</td>
<td>1828674</td>
<td>3917822</td>
<td>1903.716</td>
<td>36067460</td>
<td>0.325</td>
<td>0</td>
<td></td>
<td></td>
</tr>
<tr>
<td>preCTS</td>
<td>8449457</td>
<td>1827246</td>
<td>3917822</td>
<td>2042.610</td>
<td>35593805</td>
<td>-0.015</td>
<td>-0.64</td>
<td>0.12%</td>
<td>0.19%</td>
</tr>
<tr>
<td>postCTS</td>
<td>8449457</td>
<td>1836549</td>
<td>3917822</td>
<td>2214.398</td>
<td>35633384</td>
<td>0</td>
<td>0</td>
<td>0.14%</td>
<td>0.22%</td>
</tr>
<tr>
<td>postRoute</td>
<td>8449457</td>
<td>1836549</td>
<td>3917822</td>
<td>2197.750</td>
<td>36681437</td>
<td>-0.11</td>
<td>-63.817</td>
<td></td>
<td></td>
</tr>
<tr>
<td>postRouteOpt</td>
<td>8449457</td>
<td>1836148</td>
<td>3917822</td>
<td>2197.478</td>
<td>36718051</td>
<td>-0.003</td>
<td>-0.013</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p align="center">
<img width="300" src="./images/image44.png" alg="bp_quad_68_CT_Place">
<img width="300" src="./images/image45.png" alg="bp_quad_68_CT_Route">
</p>
<table>
<thead>
<tr>
<th colspan="10"><p align="center"><a id="bp_quad_NG45_CMP"></a>bp_quad-NG45-68% CMP result (<a href="#bp_quad_NG45_CT">Link</a> to corresponding CT result)</p></th>
</tr>
</thead>
<tbody>
<tr>
<td>Physical Design Stage</td>
<td>Core Area<br>(um^2)</td>
<td>Standard Cell Area (um^2)</td>
<td>Macro Area (um^2)</td>
<td>Total Power (mW)</td>
<td>Wirelength<br>(um)</td>
<td>WS<br>(ns)</td>
<td>TNS<br>(ns)</td>
<td>Congestion (H)</td>
<td>Congestion (V)</td>
</tr>
<tr>
<td>postSynth</td>
<td>8449457</td>
<td>1808903</td>
<td>3917822</td>
<td>1875.440</td>
<td>20854975</td>
<td>0.327</td>
<td>0</td>
<td></td>
<td></td>
</tr>
<tr>
<td>preCTS</td>
<td>8449457</td>
<td>1814511</td>
<td>3917822</td>
<td>1990.066</td>
<td>20766279</td>
<td>-0.004</td>
<td>-0.041</td>
<td>0.02%</td>
<td>0.04%</td>
</tr>
<tr>
<td>postCTS</td>
<td>8449457</td>
<td>1824057</td>
<td>3917822</td>
<td>2160.034</td>
<td>20870489</td>
<td>0</td>
<td>0</td>
<td>0.03%</td>
<td>0.05%</td>
</tr>
<tr>
<td>postRoute</td>
<td>8449457</td>
<td>1824057</td>
<td>3917822</td>
<td>2159.687</td>
<td>21535697</td>
<td>-0.343</td>
<td>-307.935</td>
<td></td>
<td></td>
</tr>
<tr>
<td>postRouteOpt</td>
<td>8449457</td>
<td>1824031</td>
<td>3917822</td>
<td>2159.211</td>
<td>21556685</td>
<td>-0.003</td>
<td>-0.029</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p align="center">
<img width="300" src="./images/image46.png" alg="bp_quad_68_CMP_Place">
<img width="300" src="./images/image47.png" alg="bp_quad_68_CMP_Route">
</p>
**October 3:**
We shared the Ariane133-NG45-68% protobuf netlist and clustered netlist with Google engineers. They ran training on the clustered netlist, and the following table shows the Table 1 metrics and proxy cost. **Our training results resemble Google’s results**.
<table>
<thead>
<tr>
<th colspan="10"><a id="Ariane133_68_Google"></a>Ariane-NG45-68%-4ns CMP result (<a href="#Ariane133_68_CT">Link</a> to Our Result) (<a href="https://tensorboard.dev/experiment/bgFbbhJsRAeaW4YzCox5tA/#scalars">Link</a> to tensorboard)</th>
</tr>
</thead>
<tbody>
<tr>
<td>Physical Design Stage</td>
<td>Core Area<br>(um^2)</td>
<td>Standard Cell Area (um^2)</td>
<td>Macro Area (um^2)</td>
<td>Total Power (mW)</td>
<td>Wirelength<br>(um)</td>
<td>WS<br>(ns)</td>
<td>TNS<br>(ns)</td>
<td>Congestion (H)</td>
<td>Congestion (V)</td>
</tr>
<tr>
<td>preCTS</td>
<td>1814274</td>
<td>215608</td>
<td>1018356</td>
<td>288.736</td>
<td>4260100</td>
<td>-0.001</td>
<td>-0.001</td>
<td>0.01%</td>
<td>0.01%</td>
</tr>
<tr>
<td>postCTS</td>
<td>1814274</td>
<td>216693</td>
<td>1018356</td>
<td>302.205</td>
<td>4268402</td>
<td>0.001</td>
<td>0</td>
<td>0.02%</td>
<td>0.02%</td>
</tr>
<tr>
<td>postRoute</td>
<td>1814274</td>
<td>216693</td>
<td>1018356</td>
<td>301.129</td>
<td>4377728</td>
<td>0.193</td>
<td>0</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p align="center">
<table>
<thead>
<tr>
<th>Cost</th>
<th>Ours</th>
<th>Google’s</th>
</tr>
</thead>
<tbody>
<tr>
<td>Wirelength</td>
<td>0.0999</td>
<td>0.1023</td>
</tr>
<tr>
<td>Congestion</td>
<td>0.8906</td>
<td>0.9175</td>
</tr>
<tr>
<td>Density</td>
<td>0.4896</td>
<td>0.4773</td>
</tr>
<tr>
<td>Proxy</td>
<td>0.7900</td>
<td>0.7997</td>
</tr>
</tbody>
</table>
</p>
<p align="center">
<img width="300" src="./images/image48.png" alg="ariane133_68_ct_google_place">
<img width="300" src="./images/image49.png" alg="ariane133_68_ct_google_route">
</p>
**October 8:**
<a id="Question9"></a>
**<span style="color:blue">Question 9.</span>** Are CT results stable? If not, how much does the outcome vary?
We see from the results in the [CT repo](https://github.com/google-research/circuit_training/blob/main/docs/ARIANE.md#results) that the outcomes of three runs with the same seed value are different. We ran six CT runs for Ariane133-NG45-68%-1.3ns design, and the following tables show the Table 1 metrics and the proxy cost details.
<table>
<thead>
<tr>
<th>Metrics</th>
<th><a href="https://tensorboard.dev/experiment/t0aEPJbLQNyQCVtdVpbluA/">Run1</a></th>
<th><a href="https://tensorboard.dev/experiment/WHmeHyVkQhGWJ6PphyUESg/">Run2</a></th>
<th><a href="https://tensorboard.dev/experiment/vi1C12KzS2OiXgWz5PBSDw/">Run3</a></th>
<th><a href="https://tensorboard.dev/experiment/AcoSNxRRR9qoevO4k6NYWg/">Run4</a></th>
<th><a href="https://tensorboard.dev/experiment/k2YYfAuJTPKLQmiAP0KSqA/">Run5</a></th>
<th><a href="https://tensorboard.dev/experiment/yauwzk5JRZCG2NnW32omDA/">Run6</a></th>
</tr>
</thead>
<tbody>
<tr>
<td>core_area(um^2)</td>
<td>1814274</td>
<td>1814274</td>
<td>1814274</td>
<td>1814274</td>
<td>1814274</td>
<td>1814274</td>
</tr>
<tr>
<td>macro_area(um^2)</td>
<td>1018356</td>
<td>1018356</td>
<td>1018356</td>
<td>1018356</td>
<td>1018356</td>
<td>1018356</td>
</tr>
<tr>
<td>postSynth_std_cell_area(um^2)</td>
<td>245871</td>
<td>243223</td>
<td>242695</td>
<td>243382</td>
<td>246725</td>
<td>242711</td>
</tr>
<tr>
<td>preCTS_std_cell_area(um^2)</td>
<td>245235</td>
<td>244615</td>
<td>245921</td>
<td>243693</td>
<td>245426</td>
<td>241760</td>
</tr>
<tr>
<td>postCTS_std_cell_area(um^2)</td>
<td>247138</td>
<td>245862</td>
<td>246186</td>
<td>246099</td>
<td>247774</td>
<td>244237</td>
</tr>
<tr>
<td>postRoute_std_cell_area(um^2)</td>
<td>247138</td>
<td>245862</td>
<td>246186</td>
<td>246099</td>
<td>247774</td>
<td>244237</td>
</tr>
<tr>
<td>postRouteOpt_std_cell_area(um^2)</td>
<td>247725</td>
<td>246159</td>
<td>246776</td>
<td>246498</td>
<td>248151</td>
<td>244594</td>
</tr>
<tr>
<td>postSynth_total_power(mw)</td>
<td>757.853</td>
<td>751.37</td>
<td>755.971</td>
<td>769.154</td>
<td>760.549</td>
<td>759.477</td>
</tr>
<tr>
<td>preCTS_total_power(mw)</td>
<td>795.381</td>
<td>791.633</td>
<td>794.2</td>
<td>793.175</td>
<td>794.542</td>
<td>790.433</td>
</tr>
<tr>
<td>postCTS_total_power(mw)</td>
<td>837.759</td>
<td>833.972</td>
<td>833.019</td>
<td>837.791</td>
<td>837.733</td>
<td>833.350</td>
</tr>
<tr>
<td>postRoute_total_power(mw)</td>
<td>835.807</td>
<td>832.593</td>
<td>831.162</td>
<td>836.205</td>
<td>836.124</td>
<td>831.401</td>
</tr>
<tr>
<td>postRouteOpt_total_power(mw)</td>
<td>836.529</td>
<td>832.975</td>
<td>831.524</td>
<td>836.826</td>
<td>835.521</td>
<td>831.911</td>
</tr>
<tr>
<td>preCTS_wirelength(um)</td>
<td>4792929</td>
<td>4495121</td>
<td>4709296</td>
<td>4673400</td>
<td>4735851</td>
<td>4902798</td>
</tr>
<tr>
<td>postCTS_wirelength(um)</td>
<td>4833093</td>
<td>4529411</td>
<td>4749013</td>
<td>4690341</td>
<td>4777561</td>
<td>4929463</td>
</tr>
<tr>
<td>postRoute_wirelength(um)</td>
<td>4955517</td>
<td>4649621</td>
<td>4869873</td>
<td>4816827</td>
<td>4903796</td>
<td>5054361</td>
</tr>
<tr>
<td>postRouteOpt_wirelength(um)</td>
<td>4960472</td>
<td>4654146</td>
<td>4875070</td>
<td>4821225</td>
<td>4908694</td>
<td>5059042</td>
</tr>
<tr>
<td>postSynt_WS(ns)</td>
<td>-0.764</td>
<td>-0.764</td>
<td>-0.764</td>
<td>-0.764</td>
<td>-0.764</td>
<td>-0.764</td>
</tr>
<tr>
<td>preCTS_WS(ns)</td>
<td>-0.135</td>
<td>-0.104</td>
<td>-0.109</td>
<td>-0.1</td>
<td>-0.086</td>
<td>-0.091</td>
</tr>
<tr>
<td>postCTS_WS(ns)</td>
<td>-0.102</td>
<td>-0.056</td>
<td>-0.069</td>
<td>-0.106</td>
<td>-0.077</td>
<td>-0.08</td>
</tr>
<tr>
<td>postRoute_WS(ns)</td>
<td>-0.134</td>
<td>-0.077</td>
<td>-0.102</td>
<td>-0.13</td>
<td>-0.106</td>
<td>-0.089</td>
</tr>
<tr>
<td>postRouteOpt_WS(ns)</td>
<td>-0.133</td>
<td>-0.076</td>
<td>-0.105</td>
<td>-0.135</td>
<td>-0.081</td>
<td>-0.083</td>
</tr>
<tr>
<td>postSynt_TNS(ns)</td>
<td>-366.528</td>
<td>-592.301</td>
<td>-501.314</td>
<td>-363.351</td>
<td>-405.145</td>
<td>-342.59</td>
</tr>
<tr>
<td>preCTS_TNS(ns)</td>
<td>-196.114</td>
<td>-136.662</td>
<td>-151.307</td>
<td>-122.663</td>
<td>-104.413</td>
<td>-98.21</td>
</tr>
<tr>
<td>postCTS_TNS(ns)</td>
<td>-76.567</td>
<td>-13.883</td>
<td>-40.712</td>
<td>-60.272</td>
<td>-27.453</td>
<td>-21.711</td>
</tr>
<tr>
<td>postRoute_TNS(ns)</td>
<td>-167.965</td>
<td>-58.724</td>
<td>-110.496</td>
<td>-133.653</td>
<td>-45.42</td>
<td>-44.821</td>
</tr>
<tr>
<td>postRouteOpt_TNS(ns)</td>
<td>-123.027</td>
<td>-27.571</td>
<td>-79.826</td>
<td>-105.775</td>
<td>-33.286</td>
<td>-40.314</td>
</tr>
<tr>
<td>preCTS_Congestion (H)</td>
<td>0.06%</td>
<td>0.04%</td>
<td>0.03%</td>
<td>0.03%</td>
<td>0.03%</td>
<td>0.03%</td>
</tr>
<tr>
<td>postCTS_Congestion (H)</td>
<td>0.09%</td>
<td>0.03%</td>
<td>0.04%</td>
<td>0.03%</td>
<td>0.04%</td>
<td>0.05%</td>
</tr>
<tr>
<td>preCTS_Congestion (V)</td>
<td>0.11%</td>
<td>0.10%</td>
<td>0.13%</td>
<td>0.08%</td>
<td>0.16%</td>
<td>0.14%</td>
</tr>
<tr>
<td>postCTS_Congestion (V)</td>
<td>0.13%</td>
<td>0.13%</td>
<td>0.17%</td>
<td>0.12%</td>
<td>0.18%</td>
<td>0.18%</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th></th>
<th>Wirelength cost</th>
<th>Congestion cost</th>
<th>Density cost</th>
<th>Proxy cost</th>
</tr>
</thead>
<tbody>
<tr>
<td>Run1</td>
<td>0.1052</td>
<td>0.97</td>
<td>0.5239</td>
<td>0.85215</td>
</tr>
<tr>
<td>Run2</td>
<td>0.1045</td>
<td>0.9417</td>
<td>0.5063</td>
<td>0.8285</td>
</tr>
<tr>
<td>Run3</td>
<td>0.1033</td>
<td>0.949</td>
<td>0.5193</td>
<td>0.83745</td>
</tr>
<tr>
<td>Run4</td>
<td>0.1034</td>
<td>0.9378</td>
<td>0.5185</td>
<td>0.8316</td>
</tr>
<tr>
<td>Run5</td>
<td>0.1056</td>
<td>0.9328</td>
<td>0.5418</td>
<td>0.8429</td>
</tr>
<tr>
<td>Run6</td>
<td>0.1104</td>
<td>0.96</td>
<td>0.5372</td>
<td>0.8590</td>
</tr>
<tr>
<td>Mean</td>
<td>0.1054</td>
<td>0.9486</td>
<td>0.5245</td>
<td>0.8419</td>
</tr>
<tr>
<td>STD</td>
<td>0.0026</td>
<td>0.0142</td>
<td>0.0131</td>
<td>0.0119</td>
</tr>
</tbody>
</table>
We further ran coordinate descent (CD) placer on the CT outcomes and the following tables show the Table 1 metrics and proxy cost details of the CD placer outcomes. **Even though we see a significant improvement in the proxy cost, we do not see similar improvement in the Table 1 metric**.
<table>
<thead>
<tr>
<th>Metrics</th>
<th>Run1_CD</th>
<th>Run2_CD</th>
<th>Run3_CD</th>
<th>Run4_CD</th>
<th>Run5_CD</th>
<th>Run6_CD</th>
</tr>
</thead>
<tbody>
<tr>
<td>core_area (um2)</td>
<td>1814274</td>
<td>1814274</td>
<td>1814274</td>
<td>1814274</td>
<td>1814274</td>
<td>1814274</td>
</tr>
<tr>
<td>macro_area (um2)</td>
<td>1018356</td>
<td>1018356</td>
<td>1018356</td>
<td>1018356</td>
<td>1018356</td>
<td>1018356</td>
</tr>
<tr>
<td>postSynth_std_cell_area (um2)</td>
<td>243566</td>
<td>244506</td>
<td>244016</td>
<td>244368</td>
<td>242548</td>
<td>247357</td>
</tr>
<tr>
<td>preCTS_std_cell_area (um2)</td>
<td>243267</td>
<td>241949</td>
<td>240051</td>
<td>245803</td>
<td>242336</td>
<td>245297</td>
</tr>
<tr>
<td>postCTS_std_cell_area (um2)</td>
<td>246719</td>
<td>244046</td>
<td>241932</td>
<td>247881</td>
<td>244474</td>
<td>247763</td>
</tr>
<tr>
<td>postRoute_std_cell_area (um2)</td>
<td>246719</td>
<td>244046</td>
<td>241932</td>
<td>247881</td>
<td>244474</td>
<td>247763</td>
</tr>
<tr>
<td>postRouteOpt_std_cell_area (um2)</td>
<td>247000</td>
<td>243860</td>
<td>241282</td>
<td>248055</td>
<td>245020</td>
<td>248377</td>
</tr>
<tr>
<td>postSynth_total_power (mW)</td>
<td>736.564</td>
<td>747.327</td>
<td>758.3497</td>
<td>749.487</td>
<td>752.643</td>
<td>750.437</td>
</tr>
<tr>
<td>preCTS_total_power (mW)</td>
<td>790.601</td>
<td>788.404</td>
<td>785.7521</td>
<td>797.216</td>
<td>789.500</td>
<td>794.160</td>
</tr>
<tr>
<td>postCTS_total_power (mW)</td>
<td>835.029</td>
<td>830.542</td>
<td>827.7217</td>
<td>839.145</td>
<td>832.896</td>
<td>836.920</td>
</tr>
<tr>
<td>postRoute_total_power (mW)</td>
<td>833.305</td>
<td>829.015</td>
<td>825.9415</td>
<td>837.320</td>
<td>830.757</td>
<td>835.113</td>
</tr>
<tr>
<td>postRouteOpt_total_power (mW)</td>
<td>833.109</td>
<td>828.801</td>
<td>824.8444</td>
<td>837.595</td>
<td>831.417</td>
<td>835.770</td>
</tr>
<tr>
<td>preCTS_wirelength (um)</td>
<td>4807227</td>
<td>4481988</td>
<td>4663403</td>
<td>4645833</td>
<td>4742585</td>
<td>4813011</td>
</tr>
<tr>
<td>postCTS_wirelength (um)</td>
<td>4830788</td>
<td>4501231</td>
<td>4680124</td>
<td>4683338</td>
<td>4779530</td>
<td>4839729</td>
</tr>
<tr>
<td>postRoute_wirelength (um)</td>
<td>4955395</td>
<td>4621695</td>
<td>4804536</td>
<td>4809309</td>
<td>4896653</td>
<td>4965139</td>
</tr>
<tr>
<td>postRouteOpt_wirelength (um)</td>
<td>4960842</td>
<td>4626687</td>
<td>4809650</td>
<td>4814381</td>
<td>4901760</td>
<td>4969937</td>
</tr>
<tr>
<td>postSynt_WS (ns)</td>
<td>-0.764</td>
<td>-0.764</td>
<td>-0.764</td>
<td>-0.764</td>
<td>-0.764</td>
<td>-0.764</td>
</tr>
<tr>
<td>preCTS_WS (ns)</td>
<td>-0.11</td>
<td>-0.092</td>
<td>-0.065</td>
<td>-0.115</td>
<td>-0.105</td>
<td>-0.143</td>
</tr>
<tr>
<td>postCTS_WS (ns)</td>
<td>-0.102</td>
<td>-0.058</td>
<td>-0.056</td>
<td>-0.101</td>
<td>-0.094</td>
<td>-0.11</td>
</tr>
<tr>
<td>postRoute_WS (ns)</td>
<td>-0.135</td>
<td>-0.076</td>
<td>-0.088</td>
<td>-0.107</td>
<td>-0.11</td>
<td>-0.14</td>
</tr>
<tr>
<td>postRouteOpt_WS (ns)</td>
<td>-0.129</td>
<td>-0.062</td>
<td>-0.055</td>
<td>-0.101</td>
<td>-0.109</td>
<td>-0.137</td>
</tr>
<tr>
<td>postSynt_TNS (ns)</td>
<td>-351.045</td>
<td>-331.782</td>
<td>-406.717</td>
<td>-431.986</td>
<td>-450.335</td>
<td>-444.635</td>
</tr>
<tr>
<td>preCTS_TNS (ns)</td>
<td>-133.192</td>
<td>-90.187</td>
<td>-57.052</td>
<td>-152.966</td>
<td>-139.133</td>
<td>-196.673</td>
</tr>
<tr>
<td>postCTS_TNS (ns)</td>
<td>-55.003</td>
<td>-19.074</td>
<td>-8.908</td>
<td>-47.75</td>
<td>-52.329</td>
<td>-101.123</td>
</tr>
<tr>
<td>postRoute_TNS (ns)</td>
<td>-145.14</td>
<td>-31.185</td>
<td>-15.033</td>
<td>-82.306</td>
<td>-96.749</td>
<td>-157.245</td>
</tr>
<tr>
<td>postRouteOpt_TNS (ns)</td>
<td>-109.739</td>
<td>-12.692</td>
<td>-8.418</td>
<td>-60.53</td>
<td>-66.632</td>
<td>-126.007</td>
</tr>
<tr>
<td>preCTS_Congestion (H)</td>
<td>0.03%</td>
<td>0.03%</td>
<td>0.07%</td>
<td>0.05%</td>
<td>0.04%</td>
<td>0.04%</td>
</tr>
<tr>
<td>postCTS_Congestion (H)</td>
<td>0.03%</td>
<td>0.03%</td>
<td>0.07%</td>
<td>0.05%</td>
<td>0.04%</td>
<td>0.05%</td>
</tr>
<tr>
<td>preCTS_Congestion (V)</td>
<td>0.16%</td>
<td>0.12%</td>
<td>0.10%</td>
<td>0.15%</td>
<td>0.17%</td>
<td>0.14%</td>
</tr>
<tr>
<td>postCTS_Congestion (V)</td>
<td>0.19%</td>
<td>0.16%</td>
<td>0.10%</td>
<td>0.18%</td>
<td>0.21%</td>
<td>0.15%</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th></th>
<th>Wirelength cost</th>
<th>Congestion cost</th>
<th>Density cost</th>
<th>Proxy cost</th>
</tr>
</thead>
<tbody>
<tr>
<td>Run1_CD</td>
<td>0.0944</td>
<td>0.7942</td>
<td>0.4927</td>
<td>0.73785</td>
</tr>
<tr>
<td>Run2_CD</td>
<td>0.089</td>
<td>0.7829</td>
<td>0.4925</td>
<td>0.7267</td>
</tr>
<tr>
<td>Run3_CD</td>
<td>0.0928</td>
<td>0.796</td>
<td>0.4931</td>
<td>0.73735</td>
</tr>
<tr>
<td>Run4_CD</td>
<td>0.0957</td>
<td>0.8104</td>
<td>0.4951</td>
<td>0.7485</td>
</tr>
<tr>
<td>Run5_CD</td>
<td>0.0909</td>
<td>0.7799</td>
<td>0.4933</td>
<td>0.7275</td>
</tr>
<tr>
<td>Run6_CD</td>
<td>0.0922</td>
<td>0.7843</td>
<td>0.4934</td>
<td>0.7311</td>
</tr>
<tr>
<td>Mean</td>
<td>0.0925</td>
<td>0.7913</td>
<td>0.4934</td>
<td>0.7348</td>
</tr>
<tr>
<td>STD</td>
<td>0.0024</td>
<td>0.0114</td>
<td>0.0009</td>
<td>0.0082</td>
</tr>
</tbody>
</table>
**October 15:**
<a id="Question10"></a>
**<span style="color:blue">Question 10.</span>** What is the correlation between proxy cost and the post RouteOpt metrics?
We have collected macro placement generated by CT runs for Ariane133-NG45-68%-1.3ns that have proxy cost less than 0.9. There are ~40 such macro placements over four CT runs. From that 15 runs are chosen randomly, two runs from each bucket of proxy cost (0.9-i*0.01, 0.9-(i+1)*0.01] s.t. i ε [0, 6] and one run from (0.82, 0.83]. Table 1 metrics and proxy costs of these 15 runs are available in the following table.
<table>
<thead>
<tr>
<th></th>
<th>RUN1</th>
<th>RUN2</th>
<th>RUN3</th>
<th>RUN4</th>
<th>RUN5</th>
<th>RUN6</th>
<th>RUN7</th>
<th>RUN8</th>
<th>RUN9</th>
<th>RUN10</th>
<th>RUN11</th>
<th>RUN12</th>
<th>RUN13</th>
<th>RUN14</th>
<th>RUN15</th>
</tr>
</thead>
<tbody>
<tr>
<td>core_area (um^2)</td>
<td>1814274</td>
<td>1814274</td>
<td>1814274</td>
<td>1814274</td>
<td>1814274</td>
<td>1814274</td>
<td>1814274</td>
<td>1814274</td>
<td>1814274</td>
<td>1814274</td>
<td>1814274</td>
<td>1814274</td>
<td>1814274</td>
<td>1814274</td>
<td>1814274</td>
</tr>
<tr>
<td>macro_area (um^2)</td>
<td>1018356</td>
<td>1018356</td>
<td>1018356</td>
<td>1018356</td>
<td>1018356</td>
<td>1018356</td>
<td>1018356</td>
<td>1018356</td>
<td>1018356</td>
<td>1018356</td>
<td>1018356</td>
<td>1018356</td>
<td>1018356</td>
<td>1018356</td>
<td>1018356</td>
</tr>
<tr>
<td>postSynth_std_cell_area (um^2)</td>
<td>242067</td>
<td>243116</td>
<td>243055</td>
<td>246488</td>
<td>243788</td>
<td>244004</td>
<td>244090</td>
<td>244844</td>
<td>245083</td>
<td>246072</td>
<td>240942</td>
<td>246725</td>
<td>242695</td>
<td>243643</td>
<td>243223</td>
</tr>
<tr>
<td>preCTS_std_cell_area (um^2)</td>
<td>243195</td>
<td>245232</td>
<td>242421</td>
<td>244504</td>
<td>244174</td>
<td>245232</td>
<td>241542</td>
<td>246361</td>
<td>243436</td>
<td>246115</td>
<td>244612</td>
<td>245426</td>
<td>245921</td>
<td>244513</td>
<td>244615</td>
</tr>
<tr>
<td>postCTS_std_cell_area (um^2)</td>
<td>246379</td>
<td>247012</td>
<td>243583</td>
<td>247185</td>
<td>246155</td>
<td>247948</td>
<td>244115</td>
<td>248349</td>
<td>247013</td>
<td>248156</td>
<td>246469</td>
<td>247774</td>
<td>246186</td>
<td>247138</td>
<td>245862</td>
</tr>
<tr>
<td>postRoute_std_cell_area (um^2)</td>
<td>246379</td>
<td>247012</td>
<td>243583</td>
<td>247185</td>
<td>246155</td>
<td>247948</td>
<td>244115</td>
<td>248349</td>
<td>247013</td>
<td>248156</td>
<td>246469</td>
<td>247774</td>
<td>246186</td>
<td>247138</td>
<td>245862</td>
</tr>
<tr>
<td>postRouteOpt_std_cell_area (um^2)</td>
<td>247121</td>
<td>247607</td>
<td>243894</td>
<td>247394</td>
<td>246878</td>
<td>248433</td>
<td>244274</td>
<td>248746</td>
<td>247320</td>
<td>248770</td>
<td>247390</td>
<td>248151</td>
<td>246776</td>
<td>247547</td>
<td>246159</td>
</tr>
<tr>
<td>postSynth_total_power (mw)</td>
<td>769.520</td>
<td>753.509</td>
<td>742.910</td>
<td>752.287</td>
<td>752.254</td>
<td>741.871</td>
<td>756.514</td>
<td>753.901</td>
<td>753.265</td>
<td>749.084</td>
<td>750.949</td>
<td>760.549</td>
<td>755.971</td>
<td>753.220</td>
<td>751.370</td>
</tr>
<tr>
<td>preCTS_total_power (mw)</td>
<td>791.074</td>
<td>793.708</td>
<td>787.915</td>
<td>792.428</td>
<td>791.913</td>
<td>792.947</td>
<td>787.022</td>
<td>791.689</td>
<td>790.387</td>
<td>795.202</td>
<td>791.286</td>
<td>794.542</td>
<td>794.200</td>
<td>791.590</td>
<td>791.633</td>
</tr>
<tr>
<td>postCTS_total_power (mw)</td>
<td>834.752</td>
<td>836.171</td>
<td>829.367</td>
<td>834.354</td>
<td>833.401</td>
<td>836.912</td>
<td>830.593</td>
<td>835.061</td>
<td>831.509</td>
<td>833.914</td>
<td>832.950</td>
<td>837.733</td>
<td>833.019</td>
<td>835.334</td>
<td>833.972</td>
</tr>
<tr>
<td>postRoute_total_power (mw)</td>
<td>833.184</td>
<td>834.695</td>
<td>828.029</td>
<td>833.086</td>
<td>831.875</td>
<td>835.325</td>
<td>828.821</td>
<td>833.941</td>
<td>830.484</td>
<td>832.671</td>
<td>831.772</td>
<td>836.124</td>
<td>831.162</td>
<td>833.983</td>
<td>832.593</td>
</tr>
<tr>
<td>postRouteOpt_total_power (mw)</td>
<td>833.961</td>
<td>835.436</td>
<td>828.254</td>
<td>833.318</td>
<td>832.649</td>
<td>835.803</td>
<td>829.066</td>
<td>834.304</td>
<td>831.652</td>
<td>833.287</td>
<td>832.768</td>
<td>835.521</td>
<td>831.524</td>
<td>834.484</td>
<td>832.975</td>
</tr>
<tr>
<td>preCTS_wirelength (um)</td>
<td>4728745</td>
<td>4717333</td>
<td>4642346</td>
<td>4628632</td>
<td>4659824</td>
<td>4873402</td>
<td>4882098</td>
<td>4543637</td>
<td>4649807</td>
<td>4709934</td>
<td>4486281</td>
<td>4735851</td>
<td>4709296</td>
<td>4585732</td>
<td>4495121</td>
</tr>
<tr>
<td>postCTS_wirelength (um)</td>
<td>4762085</td>
<td>4757761</td>
<td>4674012</td>
<td>4665159</td>
<td>4693884</td>
<td>4912764</td>
<td>4918705</td>
<td>4585918</td>
<td>4677979</td>
<td>4742407</td>
<td>4522423</td>
<td>4777561</td>
<td>4749013</td>
<td>4616680</td>
<td>4529411</td>
</tr>
<tr>
<td>postRoute_wirelength (um)</td>
<td>4885433</td>
<td>4888249</td>
<td>4797431</td>
<td>4795134</td>
<td>4817647</td>
<td>5042041</td>
<td>5043542</td>
<td>4716210</td>
<td>4807107</td>
<td>4869741</td>
<td>4650492</td>
<td>4903796</td>
<td>4869873</td>
<td>4742247</td>
<td>4649621</td>
</tr>
<tr>
<td>postRouteOpt_wirelength (um)</td>
<td>4890958</td>
<td>4893245</td>
<td>4802406</td>
<td>4800104</td>
<td>4822688</td>
<td>5047120</td>
<td>5048498</td>
<td>4720614</td>
<td>4811606</td>
<td>4874840</td>
<td>4655745</td>
<td>4908694</td>
<td>4875070</td>
<td>4746909</td>
<td>4654146</td>
</tr>
<tr>
<td>Wirelength_Cost</td>
<td>0.1042</td>
<td>0.1011</td>
<td>0.1032</td>
<td>0.1014</td>
<td>0.1032</td>
<td>0.1055</td>
<td>0.1064</td>
<td>0.1027</td>
<td>0.1048</td>
<td>0.1027</td>
<td>0.1023</td>
<td>0.1056</td>
<td>0.1033</td>
<td>0.1053</td>
<td>0.1045</td>
</tr>
<tr>
<td>postSynt_WS (ns)</td>
<td>-0.764</td>
<td>-0.764</td>
<td>-0.764</td>
<td>-0.79</td>
<td>-0.764</td>
<td>-0.764</td>
<td>-0.79</td>
<td>-0.764</td>
<td>-0.764</td>
<td>-0.764</td>
<td>-0.764</td>
<td>-0.764</td>
<td>-0.764</td>
<td>-0.764</td>
<td>-0.764</td>
</tr>
<tr>
<td>preCTS_WS (ns)</td>
<td>-0.114</td>
<td>-0.101</td>
<td>-0.08</td>
<td>-0.096</td>
<td>-0.116</td>
<td>-0.101</td>
<td>-0.066</td>
<td>-0.121</td>
<td>-0.117</td>
<td>-0.137</td>
<td>-0.124</td>
<td>-0.086</td>
<td>-0.109</td>
<td>-0.125</td>
<td>-0.104</td>
</tr>
<tr>
<td>postCTS_WS (ns)</td>
<td>-0.088</td>
<td>-0.08</td>
<td>-0.036</td>
<td>-0.066</td>
<td>-0.098</td>
<td>-0.076</td>
<td>-0.021</td>
<td>-0.098</td>
<td>-0.096</td>
<td>-0.053</td>
<td>-0.104</td>
<td>-0.077</td>
<td>-0.069</td>
<td>-0.109</td>
<td>-0.056</td>
</tr>
<tr>
<td>postRoute_WS (ns)</td>
<td>-0.121</td>
<td>-0.094</td>
<td>-0.072</td>
<td>-0.341</td>
<td>-0.118</td>
<td>-0.087</td>
<td>-0.088</td>
<td>-0.118</td>
<td>-0.123</td>
<td>-0.134</td>
<td>-0.137</td>
<td>-0.106</td>
<td>-0.102</td>
<td>-0.13</td>
<td>-0.077</td>
</tr>
<tr>
<td>postRouteOpt_WS (ns)</td>
<td>-0.125</td>
<td>-0.096</td>
<td>-0.063</td>
<td>-0.066</td>
<td>-0.089</td>
<td>-0.087</td>
<td>-0.041</td>
<td>-0.119</td>
<td>-0.13</td>
<td>-0.099</td>
<td>-0.126</td>
<td>-0.081</td>
<td>-0.105</td>
<td>-0.134</td>
<td>-0.076</td>
</tr>
<tr>
<td>postSynt_TNS (ns)</td>
<td>-326.535</td>
<td>-382.684</td>
<td>-477.484</td>
<td>-339.098</td>
<td>-401.614</td>
<td>-414.822</td>
<td>-367.119</td>
<td>-412.85</td>
<td>-422.819</td>
<td>-350.771</td>
<td>-313.919</td>
<td>-405.145</td>
<td>-501.314</td>
<td>-366.866</td>
<td>-592.301</td>
</tr>
<tr>
<td>preCTS_TNS (ns)</td>
<td>-147.905</td>
<td>-129.089</td>
<td>-92.977</td>
<td>-111.456</td>
<td>-141.654</td>
<td>-116.344</td>
<td>-62.661</td>
<td>-171.687</td>
<td>-156.067</td>
<td>-206.043</td>
<td>-169.834</td>
<td>-104.413</td>
<td>-151.307</td>
<td>-168.846</td>
<td>-136.662</td>
</tr>
<tr>
<td>postCTS_TNS (ns)</td>
<td>-69.386</td>
<td>-67.761</td>
<td>-4.902</td>
<td>-34.67</td>
<td>-60.302</td>
<td>-41.497</td>
<td>-2.514</td>
<td>-83.036</td>
<td>-62.184</td>
<td>-27.629</td>
<td>-122.576</td>
<td>-27.453</td>
<td>-40.712</td>
<td>-55.55</td>
<td>-13.883</td>
</tr>
<tr>
<td>postRoute_TNS (ns)</td>
<td>-172.018</td>
<td>-85.027</td>
<td>-48.269</td>
<td>-37.909</td>
<td>-85.811</td>
<td>-70.604</td>
<td>-15.213</td>
<td>-129.351</td>
<td>-128.868</td>
<td>-143.568</td>
<td>-199.374</td>
<td>-45.42</td>
<td>-110.496</td>
<td>-132.265</td>
<td>-58.724</td>
</tr>
<tr>
<td>postRouteOpt_TNS (ns)</td>
<td>-135.838</td>
<td>-70.139</td>
<td>-25.199</td>
<td>-33.755</td>
<td>-68.666</td>
<td>-47.43</td>
<td>-14.211</td>
<td>-118.13</td>
<td>-96.63</td>
<td>-105.577</td>
<td>-152.772</td>
<td>-33.286</td>
<td>-79.826</td>
<td>-94.025</td>
<td>-27.571</td>
</tr>
<tr>
<td>preCTS_Congestion (H)</td>
<td>0.04%</td>
<td>0.03%</td>
<td>0.04%</td>
<td>0.03%</td>
<td>0.02%</td>
<td>0.05%</td>
<td>0.03%</td>
<td>0.02%</td>
<td>0.03%</td>
<td>0.05%</td>
<td>0.04%</td>
<td>0.03%</td>
<td>0.03%</td>
<td>0.02%</td>
<td>0.04%</td>
</tr>
<tr>
<td>postCTS_Congestion (H)</td>
<td>0.05%</td>
<td>0.04%</td>
<td>0.05%</td>
<td>0.06%</td>
<td>0.04%</td>
<td>0.05%</td>
<td>0.04%</td>
<td>0.05%</td>
<td>0.04%</td>
<td>0.04%</td>
<td>0.06%</td>
<td>0.04%</td>
<td>0.04%</td>
<td>0.03%</td>
<td>0.03%</td>
</tr>
<tr>
<td>preCTS_Congestion (V)</td>
<td>0.17%</td>
<td>0.16%</td>
<td>0.11%</td>
<td>0.14%</td>
<td>0.16%</td>
<td>0.11%</td>
<td>0.16%</td>
<td>0.13%</td>
<td>0.15%</td>
<td>0.12%</td>
<td>0.14%</td>
<td>0.16%</td>
<td>0.13%</td>
<td>0.11%</td>
<td>0.10%</td>
</tr>
<tr>
<td>postCTS_Congestion (V)</td>
<td>0.16%</td>
<td>0.14%</td>
<td>0.13%</td>
<td>0.13%</td>
<td>0.15%</td>
<td>0.12%</td>
<td>0.16%</td>
<td>0.14%</td>
<td>0.18%</td>
<td>0.13%</td>
<td>0.15%</td>
<td>0.18%</td>
<td>0.17%</td>
<td>0.14%</td>
<td>0.13%</td>
</tr>
<tr>
<td>Congestion_Cost</td>
<td>1.0192</td>
<td>0.9983</td>
<td>1.0115</td>
<td>1.0062</td>
<td>0.9894</td>
<td>1.006</td>
<td>0.9813</td>
<td>0.9966</td>
<td>0.9932</td>
<td>0.9587</td>
<td>0.9672</td>
<td>0.9328</td>
<td>0.949</td>
<td>0.9439</td>
<td>0.9417</td>
</tr>
<tr>
<td>Wirelength_Cost</td>
<td>0.1042</td>
<td>0.1011</td>
<td>0.1032</td>
<td>0.1014</td>
<td>0.1032</td>
<td>0.1055</td>
<td>0.1064</td>
<td>0.1027</td>
<td>0.1048</td>
<td>0.1027</td>
<td>0.1023</td>
<td>0.1056</td>
<td>0.1033</td>
<td>0.1053</td>
<td>0.1045</td>
</tr>
<tr>
<td>Congestion_Cost</td>
<td>1.0192</td>
<td>0.9983</td>
<td>1.0115</td>
<td>1.0062</td>
<td>0.9894</td>
<td>1.006</td>
<td>0.9813</td>
<td>0.9966</td>
<td>0.9932</td>
<td>0.9587</td>
<td>0.9672</td>
<td>0.9328</td>
<td>0.949</td>
<td>0.9439</td>
<td>0.9417</td>
</tr>
<tr>
<td>Density_Cost</td>
<td>0.5622</td>
<td>0.5923</td>
<td>0.5543</td>
<td>0.5622</td>
<td>0.5523</td>
<td>0.5354</td>
<td>0.5409</td>
<td>0.53</td>
<td>0.5113</td>
<td>0.5439</td>
<td>0.5215</td>
<td>0.5418</td>
<td>0.5193</td>
<td>0.5136</td>
<td>0.5063</td>
</tr>
<tr>
<td>Proxy_Cost</td>
<td>0.8949</td>
<td>0.8964</td>
<td>0.8861</td>
<td>0.8856</td>
<td>0.87405</td>
<td>0.8762</td>
<td>0.8675</td>
<td>0.866</td>
<td>0.85705</td>
<td>0.854</td>
<td>0.84665</td>
<td>0.8429</td>
<td>0.83745</td>
<td>0.83405</td>
<td>0.8285</td>
</tr>
</tbody>
</table>
In the following table we report the Kendall rank correlation coefficient for proxy costs and postPlaceOpt metrics and for proxy costs and postRouteOpt metrics. Here values near +1, -1 indicate high correlation or anti-correlation and values near 0 indicate high miscorrelation.
<table>
<thead>
<tr>
<th colspan="8">Correlation between PostPlaceOpt metrics and proxy cost</th>
</tr>
</thead>
<tbody>
<tr>
<td>Cost</td>
<td>Std Cell Area</td>
<td>Wirelength</td>
<td>Total Power</td>
<td>Worst Slack</td>
<td>TNS</td>
<td>Congestion (V)</td>
<td>Congestion (H)</td>
</tr>
<tr>
<td>Wirelength</td>
<td>-0.09662</td>
<td>0.33655</td>
<td>-0.12501</td>
<td>0.32851</td>
<td>0.29809</td>
<td>-0.06098</td>
<td>0.00000</td>
</tr>
<tr>
<td>Congestion</td>
<td>-0.30622</td>
<td>0.10476</td>
<td>-0.23810</td>
<td>0.17225</td>
<td>0.14286</td>
<td>0.18118</td>
<td>0.13093</td>
</tr>
<tr>
<td>Density</td>
<td>-0.08654</td>
<td>0.21053</td>
<td>0.15311</td>
<td>0.24038</td>
<td>0.19139</td>
<td>0.35399</td>
<td>0.03289</td>
</tr>
<tr>
<td>Proxy</td>
<td>-0.22967</td>
<td>0.23810</td>
<td>-0.06667</td>
<td>0.28708</td>
<td>0.23810</td>
<td>0.32210</td>
<td>0.06547</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th colspan="6">Correlation between PostRouteOpt metrics and proxy cost</th>
</tr>
</thead>
<tbody>
<tr>
<td>Cost</td>
<td>Std Cell Area</td>
<td>Wirelength</td>
<td>Total Power</td>
<td>Worst Slack</td>
<td>TNS</td>
</tr>
<tr>
<td>Wirelength</td>
<td>-0.22116</td>
<td>0.31732</td>
<td>-0.14424</td>
<td>0.16347</td>
<td>0.31732</td>
</tr>
<tr>
<td>Congestion</td>
<td>-0.02857</td>
<td>0.08571</td>
<td>-0.00952</td>
<td>0.10476</td>
<td>-0.04762</td>
</tr>
<tr>
<td>Density</td>
<td>0.09569</td>
<td>0.22967</td>
<td>0.09569</td>
<td>0.26795</td>
<td>0.07656</td>
</tr>
<tr>
<td>Proxy</td>
<td>-0.00952</td>
<td>0.25714</td>
<td>0.04762</td>
<td>0.20000</td>
<td>0.04762</td>
</tr>
</tbody>
</table>
- Kendall rank correlation coefficient indicates poor correlation between proxy cost and postPlaceOpt metrics. Similarly, we see a poor correlation between proxy cost and postRouteOpt metrics.
- We see the proxy costs for RUN3 and RUN7 are 0.8861 and 0.8675 respectively, which is much higher than the best proxy cost 0.8285 (corresponding to RUN15), but the total power and TNS for RUN3 and RUN7 is better than RUN15.
<a id="MemPoolGroup_NG45_68"></a>
**Circuit Training Baseline Result on “Our MemPool_Group-NanGate45_68”.**
We have trained CT to generate a macro placement for the [MemPool Group design](../../Flows/NanGate45/mempool_group/). For this experiment we use the NanGate45 enablement; the initial canvas size is generated by setting utilization to 68%. We use the default hyperparameters used for Ariane to train CT for bp_quad design. The number of hard macros in MemPool Group is 324, so we update [max_sequence_length](https://github.com/google-research/circuit_training/blob/6a76e327a70b5f0c9e3291b57c085688386da04e/circuit_training/learning/ppo_collect.py#L53) to 325 in [ppo_collect.py](https://github.com/google-research/circuit_training/blob/6a76e327a70b5f0c9e3291b57c085688386da04e/circuit_training/learning/ppo_collect.py#L53) and [sequence_length](https://github.com/google-research/circuit_training/blob/6a76e327a70b5f0c9e3291b57c085688386da04e/circuit_training/learning/train_ppo.py#L57) to 325 in [train_ppo.py](https://github.com/google-research/circuit_training/blob/6a76e327a70b5f0c9e3291b57c085688386da04e/circuit_training/learning/train_ppo.py#L57).
<table>
<thead>
<tr>
<th colspan="10">MemPool group-NG45-68%-4ns CT result (Flow2. Final DRC Count: 19367) (<a href="https://tensorboard.dev/experiment/32FLUvjVSjaQ0wYO1m9vJQ/#scalars">Link</a> to Tensorboard)</th>
</tr>
</thead>
<tbody>
<tr>
<td>Physical Design Stage</td>
<td>Core Area<br>(um^2)</td>
<td>Standard Cell Area (um^2)</td>
<td>Macro Area (um^2)</td>
<td>Total Power (mW)</td>
<td>Wirelength<br>(um)</td>
<td>WS<br>(ns)</td>
<td>TNS<br>(ns)</td>
<td>Congestion (H)</td>
<td>Congestion (V)</td>
</tr>
<tr>
<td>postSynth</td>
<td>11371934</td>
<td>4976373</td>
<td>3078071</td>
<td>3149.187</td>
<td>113753318</td>
<td>0</td>
<td>0</td>
<td></td>
<td></td>
</tr>
<tr>
<td>preCTS</td>
<td>11371934</td>
<td>4916168</td>
<td>3078071</td>
<td>2528.429</td>
<td>113557846</td>
<td>-0.033</td>
<td>-42.949</td>
<td>3.03%</td>
<td>1.51%</td>
</tr>
<tr>
<td>postCTS</td>
<td>11371934</td>
<td>4867885</td>
<td>3078071</td>
<td>2707.906</td>
<td>113908550</td>
<td>-0.001</td>
<td>-0.018</td>
<td>3.55%</td>
<td>1.76%</td>
</tr>
<tr>
<td>postRoute</td>
<td>11371934</td>
<td>4867885</td>
<td>3078071</td>
<td>2742.635</td>
<td>123398335</td>
<td>-0.749</td>
<td>-13254.6</td>
<td></td>
<td></td>
</tr>
<tr>
<td>postRouteOpt</td>
<td>11371934</td>
<td>4861749</td>
<td>3078071</td>
<td>2742.982</td>
<td>123578279</td>
<td>-0.206</td>
<td>-26.811</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p align="center">
<img width="300" src="./images/image50.png" alg="MemPool_Group_CT_Place">
<img width="300" src="./images/image51.png" alg="MemPool_Group_CT_Route">
</p>
<table>
<thead>
<tr>
<th colspan="10">MemPool group-NG45-68%-4ns CMP result (Flow2. Final DRC Count: 26)</th>
</tr>
</thead>
<tbody>
<tr>
<td>Physical Design Stage</td>
<td>Core Area<br>(um^2)</td>
<td>Standard Cell Area (um^2)</td>
<td>Macro Area (um^2)</td>
<td>Total Power (mW)</td>
<td>Wirelength<br>(um)</td>
<td>WS<br>(ns)</td>
<td>TNS<br>(ns)</td>
<td>Congestion (H)</td>
<td>Congestion (V)</td>
</tr>
<tr>
<td>postSynth</td>
<td>11371934</td>
<td>4947251</td>
<td>3078071</td>
<td>2938.815</td>
<td>94419498</td>
<td>0</td>
<td>0</td>
<td></td>
<td></td>
</tr>
<tr>
<td>preCTS</td>
<td>11371934</td>
<td>4891095</td>
<td>3078071</td>
<td>2402.835</td>
<td>96594902</td>
<td>-0.018</td>
<td>-150.478</td>
<td>1.72%</td>
<td>0.78%</td>
</tr>
<tr>
<td>postCTS</td>
<td>11371934</td>
<td>4846216</td>
<td>3078071</td>
<td>2584.086</td>
<td>97108227</td>
<td>-0.003</td>
<td>-0.043</td>
<td>1.85%</td>
<td>0.87%</td>
</tr>
<tr>
<td>postRoute</td>
<td>11371934</td>
<td>4846216</td>
<td>3078071</td>
<td>2589.973</td>
<td>102792205</td>
<td>-0.241</td>
<td>-4400.6</td>
<td></td>
<td></td>
</tr>
<tr>
<td>postRouteOpt</td>
<td>11371934</td>
<td>4837150</td>
<td>3078071</td>
<td>2586.602</td>
<td>102907484</td>
<td>-0.02</td>
<td>-1.029</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p align="center">
<img width="300" src="./images/image52.png" alg="MemPool_Group_CMP_Place">
<img width="300" src="./images/image53.png" alg="MemPool_Group_CMP_Route">
</p>
## **Pinned (to bottom) question list:**
......@@ -1875,4 +4221,5 @@ We updated the detailed algorithm for [grouping](https://github.com/TILOS-AI-Ins
**<span style="color:blue">[Question 6](#Question6).</span>** Are we using the industry tool in an “expert” manner? (We believe so.)
**<span style="color:blue">[Question 7](#Question7).</span>** What happens if we skip CT and continue directly to standard-cell P&R (i.e., the Innovus 21.1 flow) once we have a macro placement from the commercial tool?
**<span style="color:blue">[Question 8](#Question8).</span>** How does the tightness of timing constraints affect the (relative) performance of CT?
**<span style="color:blue">[Question 9](#Question9).</span>** Are CT results stable? If not, how much does the outcome vary?
**<span style="color:blue">[Question 10](#Question10).</span>** What is the correlation between proxy cost and the postRouteOpt Table 1 metrics?
\ No newline at end of file
......@@ -136,52 +136,52 @@ In the following table, we provide the status details of each testcase on each o
<td class="tg-0lax"><a href="./Flows/NanGate45/ariane136">Link</a></td>
<td class="tg-0lax"><a href="./Flows/NanGate45/ariane136">Link</a></td>
<td class="tg-0lax"><a href="./Flows/NanGate45/ariane136">Link</a></td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax"><a href="./Flows/NanGate45/ariane136">Link</a></td>
<td class="tg-0lax"><a href="./Flows/ASAP7/ariane136">Link</a></td>
<td class="tg-0lax"><a href="./Flows/ASAP7/ariane136">Link</a></td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax"><a href="./Flows/ASAP7/ariane136">Link</a></td>
<td class="tg-0lax"><a href="./Flows/SKY130HD/ariane136">Link</a></td>
<td class="tg-0lax"><a href="./Flows/SKY130HD/ariane136">Link</a></td>
<td class="tg-0lax"><a href="./Flows/SKY130HD/ariane136">Link</a></td>
<td class="tg-0lax"><a href="./Flows/SKY130HD/ariane136">Link</a></td>
<td class="tg-0lax">N/A</td>
</tr>
<tr>
<td class="tg-0lax">Ariane 133</td>
<td class="tg-0lax"><a href="./Flows/NanGate45/ariane133">Link</a></td>
<td class="tg-0lax"><a href="./Flows/NanGate45/ariane133">Link</a></td>
<td class="tg-0lax"><a href="./Flows/NanGate45/ariane133">Link</a></td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax"><a href="./Flows/NanGate45/ariane133">Link</a></td>
<td class="tg-0lax"><a href="./Flows/ASAP7/ariane133">Link</a></td>
<td class="tg-0lax"><a href="./Flows/ASAP7/ariane133">Link</a></td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax"><a href="./Flows/ASAP7/ariane133">Link</a></td>
<td class="tg-0lax"><a href="./Flows/SKY130HD/ariane133">Link</a></td>
<td class="tg-0lax"><a href="./Flows/SKY130HD/ariane133">Link</a></td>
<td class="tg-0lax"><a href="./Flows/SKY130HD/ariane133">Link</a></td>
<td class="tg-0lax"><a href="./Flows/SKY130HD/ariane133">Link</a></td>
<td class="tg-0lax">N/A</td>
</tr>
<tr>
<td class="tg-0lax">MemPool tile</td>
<td class="tg-0lax"><a href="./Flows/NanGate45/mempool_tile">Link</a></td>
<td class="tg-0lax"><a href="./Flows/NanGate45/mempool_tile">Link</a></td>
<td class="tg-0lax"><a href="./Flows/NanGate45/mempool_tile">Link</a></td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax"><a href="./Flows/NanGate45/mempool_tile">Link</a></td>
<td class="tg-0lax"><a href="./Flows/ASAP7/mempool_tile">Link</a></td>
<td class="tg-0lax"><a href="./Flows/ASAP7/mempool_tile">Link</a></td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax"><a href="./Flows/ASAP7/mempool_tile">Link</a></td>
<td class="tg-0lax"><a href="./Flows/SKY130HD/mempool_tile">Link</a></td>
<td class="tg-0lax"><a href="./Flows/SKY130HD/mempool_tile">Link</a></td>
<td class="tg-0lax"><a href="./Flows/SKY130HD/mempool_tile">Link</a></td>
<td class="tg-0lax"><a href="./Flows/SKY130HD/mempool_tile">Link</a></td>
<td class="tg-0lax">N/A</td>
</tr>
<tr>
<td class="tg-0lax">MemPool Group</td>
<td class="tg-0lax"><a href="./Flows/NanGate45/mempool_group">Link</a></td>
<td class="tg-0lax"><a href="./Flows/NanGate45/mempool_group">Link</a></td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax"><a href="./Flows/NanGate45/mempool_group">Link</a></td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax">N/A</td>
......@@ -196,22 +196,22 @@ In the following table, we provide the status details of each testcase on each o
<td class="tg-0lax"><a href="./Flows/NanGate45/nvdla">Link</a></td>
<td class="tg-0lax"><a href="./Flows/NanGate45/nvdla">Link</a></td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax"><a href="./Flows/NanGate45/nvdla">Link</a></td>
<td class="tg-0lax"><a href="./Flows/ASAP7/nvdla">Link</a></td>
<td class="tg-0lax"><a href="./Flows/ASAP7/nvdla">Link</a></td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax"><a href="./Flows/ASAP7/nvdla">Link</a></td>
<td class="tg-0lax"><a href="./Flows/SKY130HD/nvdla">Link</a></td>
<td class="tg-0lax"><a href="./Flows/SKY130HD/nvdla">Link</a></td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax"><a href="./Flows/SKY130HD/nvdla">Link</a></td>
</tr>
<tr>
<td class="tg-0lax">black parrot</td>
<td class="tg-0lax">BlackParrot</td>
<td class="tg-0lax"><a href="./Flows/NanGate45/bp_quad">Link</a></td>
<td class="tg-0lax"><a href="./Flows/NanGate45/bp_quad">Link</a></td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax"><a href="./Flows/NanGate45/bp_quad">Link</a></td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax">N/A</td>
<td class="tg-0lax">N/A</td>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment