Convert Figma logo to code with AI

lowRISC logoopentitan

OpenTitan: Open source silicon root of trust

2,496
742
2,496
1,483

Top Related Projects

1,007

RISC-V Open Source Supervisor Binary Interface

Rocket Chip Generator

1,103

Source files for SiFive's Freedom platforms

Spike, a RISC-V ISA Simulator

Quick Overview

OpenTitan is an open-source silicon root of trust (RoT) project led by lowRISC. It aims to produce a high-quality, logically secure silicon design and integration guidelines for use in data center servers, storage, peripherals, and other devices. OpenTitan provides a transparent, trustworthy, and secure foundation for computing systems.

Pros

  • Open-source design, promoting transparency and community-driven development
  • Comprehensive security features, including secure boot and key management
  • Flexible and customizable for various applications and use cases
  • Backed by industry leaders, ensuring high-quality standards and support

Cons

  • Complex implementation, requiring significant expertise in hardware design and security
  • Still in active development, with potential changes and updates
  • Limited ecosystem compared to proprietary solutions
  • May require additional resources for integration into existing systems

Getting Started

To get started with OpenTitan:

  1. Clone the repository:

    git clone https://github.com/lowRISC/opentitan.git
    cd opentitan
    
  2. Install dependencies:

    ./mach install-vendor-tools
    
  3. Build the OpenTitan software:

    ./mach build
    
  4. Run tests:

    ./mach test
    

For more detailed instructions and documentation, refer to the OpenTitan documentation.

Competitor Comparisons

1,007

RISC-V Open Source Supervisor Binary Interface

Pros of OpenSBI

  • Focused specifically on RISC-V firmware and bootloader implementation
  • Lightweight and modular design, easier to integrate into various RISC-V systems
  • More mature project with wider adoption in the RISC-V ecosystem

Cons of OpenSBI

  • Limited scope compared to OpenTitan's full-stack approach
  • Less emphasis on security features and hardware root of trust
  • Smaller community and fewer contributors

Code Comparison

OpenSBI (platform-specific initialization):

static int fdt_fixup_cpu(void *fdt)
{
    int err, cpu_offset, cpus_offset;
    uint64_t *val;
    uint32_t *timebase_freq;
    
    // ... (implementation details)
}

OpenTitan (hardware abstraction layer):

static void aon_timer_init(void) {
  uint32_t reg;
  reg = mmio_region_read32(AON_TIMER_BASE_ADDR, AON_TIMER_WKUP_CTRL_REG_OFFSET);
  reg = bitfield_field32_write(reg, AON_TIMER_WKUP_CTRL_ENABLE_FIELD, 1);
  mmio_region_write32(AON_TIMER_BASE_ADDR, AON_TIMER_WKUP_CTRL_REG_OFFSET, reg);
}

Rocket Chip Generator

Pros of rocket-chip

  • More mature and established project with a longer history
  • Wider adoption in academic and research environments
  • Highly configurable and extensible RISC-V core generator

Cons of rocket-chip

  • Less focus on security features compared to OpenTitan
  • Steeper learning curve for newcomers to the project
  • Limited documentation and support for commercial applications

Code Comparison

OpenTitan (SystemVerilog):

module uart_tx (
  input  logic clk_i,
  input  logic rst_ni,
  input  logic tx_en_i,
  input  logic [7:0] tx_data_i,
  output logic tx_o
);

rocket-chip (Chisel):

class UART extends Module {
  val io = IO(new Bundle {
    val txd = Output(Bool())
    val rxd = Input(Bool())
    val tx = Flipped(Decoupled(UInt(8.W)))
    val rx = Decoupled(UInt(8.W))
  })

Both projects use hardware description languages, but OpenTitan primarily uses SystemVerilog while rocket-chip uses Chisel, a Scala-based HDL. OpenTitan focuses on creating a secure, open-source silicon root of trust, while rocket-chip aims to generate configurable RISC-V cores for various applications.

1,103

Source files for SiFive's Freedom platforms

Pros of Freedom

  • More mature project with longer development history
  • Broader ecosystem support and commercial backing from SiFive
  • Includes full SoC designs and development boards

Cons of Freedom

  • Less focus on security features compared to OpenTitan
  • More complex codebase and architecture
  • Limited documentation for newcomers

Code Comparison

OpenTitan (Verilog):

module uart_tx (
  input  logic clk_i,
  input  logic rst_ni,
  input  logic tx_en_i,
  input  logic [7:0] tx_data_i,
  output logic tx_o
);

Freedom (Chisel):

class UART(c: UARTParams) extends Module {
  val io = IO(new Bundle {
    val txd = Output(Bool())
    val rxd = Input(Bool())
    val tx  = Flipped(new DecoupledIO(UInt(8.W)))
    val rx  = new DecoupledIO(UInt(8.W))
  })

OpenTitan focuses on a more traditional Verilog implementation, while Freedom utilizes Chisel, a modern hardware description language built on Scala. This reflects the different approaches and target audiences of the two projects.

Spike, a RISC-V ISA Simulator

Pros of riscv-isa-sim

  • Focused specifically on RISC-V ISA simulation, providing a lightweight and efficient tool for RISC-V software development
  • Supports a wide range of RISC-V extensions and custom instructions
  • Actively maintained with frequent updates and contributions from the RISC-V community

Cons of riscv-isa-sim

  • Limited to ISA simulation, lacking hardware-specific features and security-focused elements
  • Does not provide a complete system-on-chip (SoC) design or hardware implementation
  • Less comprehensive documentation compared to OpenTitan

Code Comparison

riscv-isa-sim (Spike):

void processor_t::step(size_t n)
{
  for (size_t i = 0; i < n; i++)
    step(PC_SERIALIZE | INSTRET_SERIALIZE);
  host->tick(n);
}

OpenTitan:

void top_earlgrey_verilator::RunUntilNextReset() {
  while (!DutHalted()) {
    TickOne();
  }
}

Both projects use C/C++ for core functionality, but OpenTitan's codebase is more extensive, covering hardware description, firmware, and security features. riscv-isa-sim focuses on efficient ISA simulation, while OpenTitan provides a complete open-source silicon root of trust implementation.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

OpenTitan

OpenTitan logo

About the project

OpenTitan is an open source silicon Root of Trust (RoT) project. OpenTitan will make the silicon RoT design and implementation more transparent, trustworthy, and secure for enterprises, platform providers, and chip manufacturers. OpenTitan is administered by lowRISC CIC as a collaborative project to produce high quality, open IP for instantiation as a full-featured product. See the OpenTitan site and OpenTitan docs for more information about the project.

About this repository

This repository contains hardware, software and utilities written as part of the OpenTitan project. It is structured as monolithic repository, or "monorepo", where all components live in one repository. It exists to enable collaboration across partners participating in the OpenTitan project.

Documentation

The project contains comprehensive documentation of all IPs and tools. You can access it online at docs.opentitan.org.

How to contribute

Have a look at CONTRIBUTING and our documentation on project organization and processes for guidelines on how to contribute code to this repository.

Licensing

Unless otherwise noted, everything in this repository is covered by the Apache License, Version 2.0 (see LICENSE for full text).