This repository provides an I3C Core, which will be:
- compliant with
- MIPI Alliance Specification for I3C Basic, Version 1.1.1
- MIPI Alliance Specification for I3C HCI, Version 1.2
- MIPI Alliance Specification for I3C TCRI, Version 1.0
- operational in both Active and Secondary Controller Mode
A login with MIPI Alliance account is required to access the document on MIPI website.
This repository provides:
This repository depends on:
This repository is currently tested on Debian 12 and Ubuntu 22.04. In order to use all features, you need to install:
- RISC-V toolchain == 12.1.0
- Verilator >= 5.012
- LCOV == v1.16
- Verible == v0.0-3624-gd256d779
- Icarus Verilog >= 12.0
Make sure submodules are checked out. Use the --recursive
flag when cloning, or run
git submodule update --init --recursive
if you already cloned the repository.
Python 3.11.0 is recommended for this project. A bootstrap script is provided:
bash install.sh
This script installs pyenv
. Then, you can activate the environment:
. activate.sh
Activate script creates a virtual environment with Python3.11 and installs python packages from the requirements.txt
.
This core is verified by 2 approaches:
- rapid tests written in cocotb
- UVM test suite
To check if the environment is properly configured, run tests:
make tests
More details can be found in verification README
.
Tools developed for this project are located in tools
directory. You can find more detailed information in README of each tool:
i3c_config
- manage configuration and produce header filespyenv
- enable usage of pyenv in BASHreg_gen
- scripts to generate SystemVerilog description from the SystemRDL filestiming
- helper script to estimate timings on the busverible-scripts
- scripts to manage configuration and runs of Verible formatter and linter