Skip to content

antmicro/i3c-core

 
 

Repository files navigation

I3C Core

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:

Setup

System requirements

This repository is currently tested on Debian 12 and Ubuntu 22.04. In order to use all features, you need to install:

Submodules

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

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.

Verification

Tools used for the core verification

  • Simulation:

    • VCS R-2020.12-SP2-8
    • Verilator v5.024
  • Lint:

    • Spyglass VC Static U-2023.03-SP2-4
  • RDC:

    • Spyglass VC Static U-2023.03-SP2-4
    • MeridianRDC 2022.A.P10.2.RDC for RHEL7.0-64, Rev 189206

This core is verified with the following set of tests:

  • rapid tests written in cocotb
  • Avery I3C VIP based tests
  • Selected tests from the Avery I3C Compliance Test Suite

To check if the environment is properly configured, run the cocotb tests:

make tests

More details can be found in verification README.

Coverage data is available in GitHub pages.

Tools

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 files
  • pyenv - enable usage of pyenv in BASH
  • reg_gen - scripts to generate SystemVerilog description from the SystemRDL files
  • timing - helper script to estimate timings on the bus
  • verible-scripts - scripts to manage configuration and runs of Verible formatter and linter

Packages

No packages published

Languages

  • SystemVerilog 84.9%
  • Python 13.7%
  • Makefile 0.9%
  • Filebench WML 0.2%
  • Tcl 0.1%
  • Shell 0.1%
  • Forth 0.1%