Optimize the “Croc.” SoC core with custom arithmetic units and design-space parameterization.
Sample floorplan: 0.85 aspect ratio + 3 SRAM banks (in OpenROAD)
- Team
- Project Overview
- Repository Structure
- Optimizations
- Build & Run
- Results
- Conclusions
- Division of Labor
- License & Acknowledgments
- Team Name: Filet-O-Croc
- Repo URL: https://github.com/ABKCourses/ece260c-final-filet-o-croc
In this project, we took the baseline Croc SoC and implemented two major improvements:
- Custom arithmetic units via the VLSIFFRA library (Han-Carlson multipliers & adders) to boost PPA.
- Design-Space Exploration (DSE) tooling to parameterize die aspect ratio and number of SRAM banks, enabling rapid exploration of trade-offs between timing, area, and power.
- Goal: Replace vanilla 34-bit multipliers/adders in the CVE2 core with Han-Carlson variants for better PPA.
- Implementation
- Cloned and installed the VLSIFFRA repo as a Python package.
- Added IHP130 technology support + built full/half-adder primitives.
- Generated
adder.v&multiplier.vviatech.py. - Created SV wrappers in
rtl/cve2_alu.svand updatedMakefile+bender.ymlto include them. - Manually instantiated wrappers at critical ALU sites (failed auto-techmap due to memory blowup).
- Goal: Let users pass in
ASPECT_RATIOandSRAM_BANKSat build time to drive floorplanning and RTL instantiation. - Implementation
- Extended the
Makefileto exportASPECT_RATIO&SRAM_BANKSas environment variables. - In
tcl/chip.tcl&tcl/floorplan.tcl, dynamically set die width/height. - Parametrized
instance.tcl& RTL (crpc_pkg.sv) to generate up to 6 SRAM banks. - Discovered max safe banks = 5; beyond that OpenROAD placed pins inside SRAM blocks.
- Explored combinations (e.g.
ASPECT_RATIO=0.85,SRAM_BANKS=3) for best trade-off.
- Extended the
# 1. Clone repo and enter working directory
git clone https://github.com/ABKCourses/ece260c-final-filet-o-croc.git
cd ece260c-final-filet-o-croc/croc
# 2. Checkout and synthesize baseline (fast multiplier variant):
make clean
make yosys FAST_MULT=1
# 3. Floorplan + PnR (default ASP=1.0, SRAM=2):
make openroad
# 4. To explore params, e.g. AR=0.85, 3 banks:
make clean
ASPECT_RATIO=0.85 SRAM_BANKS=3 make all
make openroad