Corblivar
Corblivar is a simulated-annealing-based floorplanning suite for 3D ICs
Install / Use
/learn @DfX-NYUAD/CorblivarREADME
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
node-connect
347.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
107.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
347.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
347.0kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
