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.
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/.
If you find this tool useful, and apply it for your research and publications, please cite the following:
To compile and run Corblivar, you need the following
To use Corblivar, the following procedure should be followed
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.
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.
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.
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.
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 binaries are the same as with the main Corblivar binary; see exp/*TSC.sh
The further comments elaborate on the folders and scripts of Corblivar
Various experiments can be started using exp/run*.sh; these scripts are not a complete set for running all experiments but rather a guideline for different setups.
The folder exp/benches/ includes MCNC (some are not working, i.e., have issues with their content), GSRC, and IBM-HB+ benchmarks, all in the GSRC format
The folder thermal_analysis_octave/ includes Octave scripts for the parameterization of the power-blurring-based thermal analysis; they can be also included e.g. in run*.sh scripts. Note that these scripts will produce temporary output data in thermal_analysis_octave/, i.e., you might want to copy thermal_analysis_octave/ into separate working directories for parallel execution of different experiments, to avoid mixed up data. See for example exp/run*.sh
The script exp/gp.sh delegates to gnuplot for generating various output plots, e.g., thermal map and floorplan, after running Corbilvar.
The script exp/HotSpot.sh calls a (slightly modified) version of BU's 3D HotSpot program; the related code should be provided along with Corblivar. Note that the script contains a path to the HotSpot binary which has to be adapted for your local setup.
The script exp/extract_numeric_results.sh and the spreadsheet exp/evaluate_via_charts.ods can be used to evaluate experimental batches, generated via some run script in exp/run*.sh
The file exp/Corblivar.conf is a template for the config file required by Corblivar, further examples can be found in exp/configs/.
June 2017: updates and bugfixes
May 2017: new feature: system-level static timing analysis; various updates and bugfixes
May 2017: new cost critiera: level shifter; updates config/experimental files for "regular", "VA_*" and "voltage_assignment"
April 2017: new feature: analysis and mitigation of thermal side-channel (TSC); further updates and fixes
November 2016: updates related to HotSpot to 6.0; various other updates and fixes
July 2016: updates and fixes; added Doxygen documentation
November 2015: updates and fixes for layout operations / floorplanner and voltage assignment; further general updates/fixes
August 2015: major updates and fixes for voltage assignment, mainly related to memory/runtime efforts
July 2015: new feature: delay-aware voltage assignment, minor other updates and fixes
May 2015: minor updates and fixes
May 2015: considerable updates and fixes (interconnects handling, clustering, layout operations (HotSpot data, etc), new feature: routing-congestion estimation
October 13, 2014: major updates (alignment encoding and handling, consideration of interconnects' HPWL); new features (clustering of signal TSVs and related hotspot determination), and various fixes and cleanups
May 7, 2014: updates, consideration of heterogeneous TSV densities
Nov 13, 2013: new feature, consideration of heterogeneous TSV densities
Aug 21, 2013: fixes and updates, thermal analysis
Aug 1, 2013: fix, compiling error for 64-bit libaries
Jul 29, 2013: update, enable fixed-position block alignment
Jul 29, 2013: bugfixes and updates
Jul 22, 2013: initial public release