SkillAgentSearch skills...

Corblivar

Corblivar is a simulated-annealing-based floorplanning suite for 3D ICs

Install / Use

/learn @DfX-NYUAD/Corblivar
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Corblivar {#mainpage}

Corblivar is a simulated-annealing-based floorplanning suite for 3D ICs, with special emphasis on planning of large-scale interconnects, timing-driven voltage assignment, and analysis and mitigation of thermal side-channel leakage.

Licence

Copyright (C) 2013-2017 Johann Knechtel, johann aett jknechtel dot de

https://github.com/jknechtel/Corblivar

This file is part of Corblivar.

Corblivar is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Corblivar is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with Corblivar. If not, see http://www.gnu.org/licenses/.

Citation

If you find this tool useful, and apply it for your research and publications, please cite the following:

  • In general: https://github.com/IFTE-EDA/Corblivar
  • Related to timing-driven voltage assignment and 3D floorplanning in general: J. Knechtel, J. Lienig, and I. A. M. Elfadel, "Multi-Objective 3D Floorplanning with Integrated Voltage Assignment," in ACM Transactions on Design Automation of Electronic Systems (TODAES), Vol. 23, No. 2, Article 22, 2017 (PDF: https://18798-presscdn-pagely.netdna-ssl.com/johann/wp-content/uploads/sites/4483/2016/08/knechtel17_TODAES.pdf)
  • Related to thermal side-channel leakage: J. Knechtel, O. Sinanoglu, "On Mitigation of Side-Channel Attacks in 3D ICs: Decorrelating Thermal Patterns from Power and Activity", in Proc. Design Automation Conference, 2017, DOI: http://dx.doi.org/10.1145/3061639.3062293 (PDF: https://wp.nyu.edu/johann/knechtel17_tsc_dac/)
  • Related to planning of large-scale interconnects, fast thermal management, and 3D floorplanning in general: J. Knechtel, E. F. Y. Young, J. Lienig, "Planning Massive Interconnects in 3D Chips", in IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 34(11):1808-1821, 2015, DOI: http://dx.doi.org/10.1109/TCAD.2015.2432141 (PDF: http://www.ifte.de/mitarbeiter/lienig/TCAD_Nov2015_pp1808_1821.pdf)
  • Related to planning of large-scale interconnects, fast thermal management, and 3D floorplanning in general: J. Knechtel, E. F. Y. Young, J. Lienig, "Structural Planning of 3D-IC Interconnects by Block Alignment", in Proc. Asia South Pacific Design Automation Conference, pp. 53-60, 2014, DOI: http://dx.doi.org/10.1109/ASPDAC.2014.6742866 (PDF: http://www.ifte.de/mitarbeiter/lienig/aspdac2014_pp53_60.pdf)

Compile & Run

To compile and run Corblivar, you need the following

  • C++ compiler (clang++ was used; for clang++ at least version 3.1 is required)
  • libboost-dev
  • gnuplot
  • octave
  • perl
  • cairosvg
  • a (slightly) modified copy of the HotSpot thermal analyzer; the code should be provided along with Corblivar or can be retrieved from https://github.com/jknechtel/HotSpot. Note that this code has to be compiled separately. The provided and modified copy is currently based on HotSpot 6.0, and is compiled and tested with SuperLU 5.2.1 (http://crd-legacy.lbl.gov/~xiaoye/SuperLU/#superlu)

Usage

To use Corblivar, the following procedure should be followed

1) Configuration of HotSpot

see exp/hotspot*.config

Most relevant are the specs for the heat sink and heat spreader; they should be adapted to reflect largest chip dimensions under consideration.

Also note that the helper script exp/HotSpot.sh relies on HotSpot being in ~/code/HotSpot; if your local setup differs, adapt the script accordingly.

2) Configuration of Corblivar

see exp/Corblivar.conf and exp/Technology.conf, or other examples in exp/configs/

Technology parameters like die dimensions and TSV sizes are configured in exp/Technology.conf

In exp/Corblivar.conf, the section "SA -- Layout generation options" can be used to configure the optimization heuristic. Reasonable values depend on the experiments under consideration.

The sections "SA -- Loop parameters" and "SA -- Temperature schedule parameters" control the runtime behaviour of the optimization. These values can impact the success rate, especially for ``complex'' experiments with many block-alignment requests and/or dense packing. The latter section, however, is considered to be applicable for different experiments---the adaptive SA-optimization schedule draws the cooling parameters somewhat robust since local minima in the solution space can be escaped easily by iterative temperature increases (cooling phase 3).

The section "SA -- Factors for second-phase cost function" controls the various optimization modules; the related values should be adapted to reflect the desired cost function. Note that zero values deactivate the respective optimization completely and thus allows to save runtime.

The section "Power blurring (thermal analysis) -- Default thermal-mask parameters" can be left as is; the related parametrization is done via separate scripts, as described in the next step.

3) Parametrization of Power-Blurring Thermal Analysis

see thermal_analysis_octave/ and doc/therma_analysis_octave.pdf

As indicated in 2), the thermal-mask parameters are determined separately. The related Octave scripts should be run whenever the 3D-IC setup changes notably, i.e., when the number of layers, the outline, the heatsink, and/or the (magnitude of) power consumption of the benchmarks changes.

To configure the Octave scripts, see thermal_analysis_octave/parameters.m Note that given default parameters should be applicable for most GSRC-benchmarks-based experiments.

To run the Octave scripts, either change directory to thermal_analysis_octave/ and start scripts from there (octave optimization.m BENCH CORBLIVAR.CONF), or copy the scripts from thermal_analysis_octave/ to separate working directories; see below and/or exp/run*.sh for further details.

It's important to note that parallel runs of different of the Octave scripts have to be avoided; they will result in runtime errors and undermine parametrization!

The Octave scripts work roughly like this: first, generate an initial floorplan solution, used as a baseline reference; second, run HotSpot on this solution (note that specific values for heterogeneous TSV densities are already considered here); third, match the power-blurring temperature map to the HotSpot map via a local search; fourth, output the related power-blurring parameters for the best match, which describes the HotSpot estimate most closely. For further details, see documentation_Octave.pdf.

Note that Corblivar models the thermal impact of both regular signal TSVs and vertical buses, i.e., large TSV groups. Regular signal TSVs may be clustered into vertical buses as well, when the layout-generation option "Clustering of signal TSVs" is activated. Vertical buses are assumed to have tightest possible packing of multiple TSVs (100% TSV density) for the whole bus region, even if fewer TSVs would suffice for signal transmission.

4) Running Corblivar

see exp/run*.sh or directly start ./Corblivar

To run Corblivar, one can start the binary directly, for example from the exp/ folder as

../Corblivar BENCH CORBLIVAR.CONF benches/

The other option is to call Corblivar in a batch mode, as outlined in the scripts exp/run*.sh

Note that for generation of plotted data, one has to call the script exp/gp.sh afterwards in the related working directory.

5) Optional: Running Correlation_TSC, Postprocessing_TSC, and Variation_TSC after running Corblivar

see exp/*TSC.sh or directly start the above binaries after running Corblivar

A new feature introduced in v1.5.0 regards the analysis and optimization (i.e., reduction) of the thermal side-channel (TSC). This feature serves to dissolve the correlation between power and thermal maps. It is implemented in Corblivar itself and in the three auxiliary binaries. All auxilarly binaries should be run on a previously obtained solution which may or may not have been optimized with respect to thermal leakage; see the sections on "thermal-related leakage mitigation" in the experimental configuration files.

Variation_TSC: initialy, this binary reads in a Corblivar solution. Then, it iteratively samples all the blocks' power densities as Gaussian distribution, calls HotSpot for detailed thermal analysis, reads in the results, and computes the Pearson correlation between the power and temperature values over all dies. Finally, the average correlation values over all sampling iterations are reported.

Postprocessing_TSC: initialy, this binary reads in a Corblivar solution. Then, it iteratively samples all the blocks' power densities as Gaussian distribution, calls HotSpot for detailed thermal analysis, reads in the results, and computes the Pearson correlation between the power and temperature values over all dies. Next, the average correlation values over all sampling iterations are reported. Based on these results, additional TSVs are inserted in a post-processing fashion, to locally reduce correlation. TSV are inserted for those locations where the average correlation was the highest (with some threshold) over the previous sampling run. Then, the sampling process is repeated. Overall, this two-fold sampling and post-processing loop is repeated until no further reduction in the average correlation can be achieved.

Correlation_TSC: this binary simply reads in a Corblivar solution and the related HotSpot results, and it calculates the Pearson correlation (over all power and temperature values) and the spatial entropies (over the power maps) for all dies.

The configuration files are currently only provided for 2 dies; see exp/configs/2dies/TSC

The parameters to run the above

Related Skills

View on GitHub
GitHub Stars34
CategoryDevelopment
Updated2mo ago
Forks12

Languages

C++

Security Score

95/100

Audited on Jan 20, 2026

No findings