/cheshire-ihp130-o

Primary LanguageTclOtherNOASSERTION

Basilisk

Basilisk is an end-to-end open source Linux-capable SoC targeting IHP's 130nm BiCMOS Open Source PDK. It is based on our Linux-capable toolkit called Cheshire. Basilisk is part of the PULP (Parallel Ultra-Low-Power) platform.

Basilisk was initially developed under the name Iguana; hence, the top-level design is called iguana_chip, but the current project name (used in most scripts) is basilisk.

Disclaimer

This project is still under active development; some parts may not yet be fully functional, and existing interfaces, toolflows, and conventions may be broken without prior notice. We target a stable release as soon as possible.

License

Unless specified otherwise in the respective file headers, all code checked into this repository is made available under a permissive license. All hardware sources and tool scripts are licensed under the Solderpad Hardware License 0.51 (see LICENSE). All software sources are licensed under Apache 2.0.

Tools

Docker

As long as you do not want to tinker with the tools, the easiest setup is with the docker image.

  1. Install Docker
    1. Optional but recommended: Docker as non-root user
  2. Install docker-compose
  3. clone repository
  4. in the repo-root, execute ./use-docker.sh

Local install

Make sure the following tools are installed. Then check tools.mk, it contains the paths to all tools. They either need to be in the PATH or set directly.

  • Bender: Dependency manager
  • Morty: SystemVerilog pickler
  • SVase: SystemVerilog pre-elaborator
  • SV2V: SystemVerilog to Verilog
  • Yosys: Synthesis tool; The used version must include PR-4343 to be able to use the newest synthesis script. At time of writing this means it must be built from source as there is no newer release version.
  • OpenRoad: Backend tool

The following tools are only required to build software and simulate the design:

  • riscv64-unknown-elf-gcc
  • Modelsim

Additionally the following python packages are required:

# requirement from register_interface
pip3 install hjson Mako PyYAML setuptools tabulate

# memory and cpu profiler (optional)
pip3 install procpath

Quick Start

More documentation specifically for Iguana/Basilisk is currently not available. However, the Cheshire Documentation gives a good overview of this project as well.

# download RTL, generate register-files, configure units
make ig-hw-all
# pickle to Verilog
make pickle-all
# Yosys synthesis (~4-5h)
make synth-all
# OpenRoad backend (>24h)
make backend-all

# build Cheshire test software
make ig-sw-all
# prepare for simulation
make ig-sim-all
# run simulation, select one in [...] and optinally add -gui
make ig-sim-[rtl/sv2v/synth](-gui)

Flow

graph LR;
	Bender-->Morty;
	Morty-->SVase;
	SVase-->SV2V;
	SV2V-->yosys;
	yosys-->OpenRoad;
Loading
  1. Bender provides a list of SystemVerilog files
  2. These files are pickled into one context using Morty
  3. The pickled file is simplified using SVase
  4. The simplified SystemVerilog code is run through SV2V
  5. This gives us synthesizable Verilog which is then loaded into yosys
  6. In yosys the Verilog RTL goes through various passes and is mapped to the technology cells
  7. The netlist, constraints and floorplan are loaded into OpenRoad for Place&Route