ChipletPart
No description available
Install / Use
/learn @ABKGroup/ChipletPartREADME
ChipletPart
ChipletPart is an efficient framework designed for partitioning driven by chiplets technology. It aids in organizing and optimizing the design and layout of chiplets within a semiconductor module. An example of an SoC netlist is the Mempool testcase.
Overall Flow
The overall flow is shown below:
.
Review Directions
- The source codes to ChipletPart are in the directory
graph_part - The testcases are uploaded in the directory
test_data - The netlist generator file is implemented in the script
generateSystemDefinition.pyavailable in the directorytest_case_genTo generate a testcase wih Z wafer scale, A tiles, B cores, C shared memories, D area scale and E power scale, we run the script:python3 systemSystemDefinition.py Z A B C D E - ChipletPart has depencies on
METIS,PugiXML,Eigen,Boost,OpenMPandGKLib. - The run scripts are uploaded in the parent directory.
List of testcases
| Benchmark | # Tiles | # IP Blocks | Area (mm²) | Area Scaling | Power Scaling | |--------------|---------|-------------|---------------------|--------------|---------------| | WS₁ | 1 | 48 | 1582 (45nm) | 1600 | 1600 | | WS₂ | 2 | 96 | 3165 (45nm) | 1600 | 1600 | | WS₃ | 4 | 192 | 6330 (45nm) | 1600 | 1600 | | WS₄ | 8 | 384 | 12,660 (45nm) | 1600 | 1600 | | MP | 16 | 40 | 494 (45nm) | 100 | 100 | | ADI₁ | N/A | 14 | 567 (16nm) | 16 | 16 | | ADI₂ | N/A | 17 | 567 (16nm) | 16 | 16 | | EPYC | N/A | 32 | 148 (7nm) | 1 | 1 | | GA100 | N/A | 180 | 548 (7nm) | 1 | 1 |
Note: MP and WS benchmarks use tile terminology; the other benchmarks do not.
Some examples to run the test_case generator is below:
- To generate the WS_1 netlist run
python3 generateSystemDefinition ws-48 1 14 4 1600 1600 - To generate the WS_2 netlist run
python3 generateSystemDefinition.py ws-48 2 14 4 1600 1600 - To generate the WS_3 netlist run
python3 generateSystemDefinition.py ws-48 4 14 4 1600 1600 - To generate the WS_4 netlist run
python3generateSystemDefinition.py ws-48 8 14 4 1600 1600
Building ChipletPart
Follow these steps to build the ChipletPart from the source:
Prerequisites
Ensure you have CMake 3.10 or higher and a suitable (9.3.0 or higher) C++ compiler installed on your system.
Build Instructions
- Create and Enter Build Directory:
mkdir build && cd build - Generate Makefiles:
cmake .. - Compile the Project:
make -j 40 # Adjust the number 40 according to the number of cores you wish to use for a faster build process - Run the run-script
./run_chiplet_test.sh ga100 --seed 1 - Our cost model implementation is available in the
cost_modeldirectory.
ChipletPart operates in three modes: (1) homogeneous, (2) heterogeneous and (3) evaluation.
Homogeneous mode
In this mode ChipletPart works with a single technology node. To run in homogeneous mode do the following:
./run_chiplet_test.sh ga100 --seed 1
To change the technology node, modify the default tech variable in run_chiplet_test.sh, e.g., DEFAULT_TECH="7nm"
Sample output
Running standard partitioning for test case: adi_sku3_1x
Tech node: 7nm
[INFO] Random seed set to 1
------------------------------------------------------------
ChipletPart Partitioner / Evaluator
Version: 1.0
------------------------------------------------------------
Developed by: UC San Diego and UC Los Angeles
------------------------------------------------------------
[INFO] Random seed set to 1
[INFO] Partitioning using XML input files
Reading Chiplet Files and Generating Hypergraph
Parameter Value
--------------------------------------------------------------------------------
IO file /home/fetzfs_projects/TritonPart/bodhi/branch_chiplet/branch_JETCAS/ChipletPart/test_data/adi_sku3_1x/io_definitions.xml
Layer file /home/fetzfs_projects/TritonPart/bodhi/branch_chiplet/branch_JETCAS/ChipletPart/test_data/adi_sku3_1x/layer_definitions.xml
Wafer process file /home/fetzfs_projects/TritonPart/bodhi/branch_chiplet/branch_JETCAS/ChipletPart/test_data/adi_sku3_1x/wafer_process_definitions.xml
Assembly process file /home/fetzfs_projects/TritonPart/bodhi/branch_chiplet/branch_JETCAS/ChipletPart/test_data/adi_sku3_1x/assembly_process_definitions.xml
Test file /home/fetzfs_projects/TritonPart/bodhi/branch_chiplet/branch_JETCAS/ChipletPart/test_data/adi_sku3_1x/test_definitions.xml
Netlist file /home/fetzfs_projects/TritonPart/bodhi/branch_chiplet/branch_JETCAS/ChipletPart/test_data/adi_sku3_1x/block_level_netlist.xml
Blocks file /home/fetzfs_projects/TritonPart/bodhi/branch_chiplet/branch_JETCAS/ChipletPart/test_data/adi_sku3_1x/block_definitions.txt
Reach 0.500000
Separation 0.250000
Technology 7nm
[==================================================] 100%
[SUCCESS] Parallel floorplanning and refinement completed in 17 seconds
Best Partition Results
Metric Value
------------------------------------------------------------
Partition index 6
Number of parts 4
Cost 50.790554
Feasibility Yes
Aspect Ratios [4.677498, 0.338730, 0.200000, 0.200000]
Top 3 Partition Results by Cost:
Rank Partition Index Parts Cost Feasible
----------------------------------------------------------------------
1 6 4 50.790554 Yes
2 7 4 51.204288 Yes
3 3 2 52.260674 Yes
[SUCCESS] Best partition saved to /home/fetzfs_projects/TritonPart/bodhi/branch_chiplet/branch_JETCAS/ChipletPart/test_data/adi_sku3_1x/block_level_netlist.xml.cpart.4
Timing Summary
Stage Time (seconds)
------------------------------------------------------------
Parallel floorplanning and refinement 17
Total partitioning process 17.163105
[SUCCESS] Partitioning completed successfully
Test completed successfully!
Heterogeneous mode
ChipletPart can handle multiple technology nodes -- in this case it will run the genetic algorithm.
./run_chiplet_test.sh ga100 --genetic --tech-nodes 7nm,10nm,45nm --seed 1
Sample output
./run_chiplet_test.sh ga100 --genetic --tech-nodes 7nm,10nm,45nm --seed 1
Running genetic tech partitioning for test case: adi_sku3_1x
Tech nodes: 7nm,10nm,45nm
Generations: 50, Population size: 50
/home/fetzfs_projects/TritonPart/bodhi/branch_chiplet/branch_JETCAS/ChipletPart/build/bin/chipletPart /home/fetzfs_projects/TritonPart/bodhi/branch_chiplet/branch_JETCAS/ChipletPart/test_data/adi_sku3_1x/io_definitions.xml /home/fetzfs_projects/TritonPart/bodhi/branch_chiplet/branch_JETCAS/ChipletPart/test_data/adi_sku3_1x/layer_definitions.xml /home/fetzfs_projects/TritonPart/bodhi/branch_chiplet/branch_JETCAS/ChipletPart/test_data/adi_sku3_1x/wafer_process_definitions.xml /home/fetzfs_projects/TritonPart/bodhi/branch_chiplet/branch_JETCAS/ChipletPart/test_data/adi_sku3_1x/assembly_process_definitions.xml /home/fetzfs_projects/TritonPart/bodhi/branch_chiplet/branch_JETCAS/ChipletPart/test_data/adi_sku3_1x/test_definitions.xml /home/fetzfs_projects/TritonPart/bodhi/branch_chiplet/branch_JETCAS/ChipletPart/test_data/adi_sku3_1x/block_level_netlist.xml /home/fetzfs_projects/TritonPart/bodhi/branch_chiplet/branch_JETCAS/ChipletPart/test_data/adi_sku3_1x/block_definitions.txt 0.50 0.25 --genetic-tech-part --tech-nodes 7nm,10nm,45nm --generations 50 --population 50 --seed 1
[INFO] Random seed set to 1
------------------------------------------------------------
ChipletPart Partitioner / Evaluator
Version: 1.0
------------------------------------------------------------
Developed by: UC San Diego and UC Los Angeles
------------------------------------------------------------
[INFO] Random seed set to 1
[INFO] Converting netlist XML to hypergraph...
[INFO] Created hypergraph with 11 vertices and 20 hyperedges
[INFO] Number of IP blocks in chiplet graph: 11
[INFO] Number of nets in chiplet graph: 20
[INFO] Wrote vertex mapping to output.map
Running Enhanced Genetic Algorithm for Co-optimization
Parameter Value
--------------------------------------------------------------------------------
IO file /home/fetzfs_projects/TritonPart/bodhi/branch_chiplet/branch_JETCAS/ChipletPart/test_data/adi_sku3_1x/io_definitions.xml
Layer file /home/fetzfs_projects/Trit
Related Skills
node-connect
344.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
99.2kCreate 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
344.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
