Hardware
This is the landing page for all hardware development.
This page describes the directory structure, presents the comportable hardware IP block dashboard, lists supported CPU cores, and lists supported top-level designs.
Directory organization
Hardware development happens at both the top-level and the block-level.
Top-level designs serve as reference designs instantiating a specific combination and connection of hardware IP blocks.
The present top-level designs – Egret, Dragonfly, and Scafi_Deprecated – are found in top_egret/, top_dragonfly/, and top_scafi_deprecated/ respectively.
These top-level designs are by no means fixed; they serve as suggested starting points for further development and experimentation.
Hardware IP blocks can be top-agnostic or top-specific, and the organization of this directory reflects this distinction.
The ip/ directory contains blocks that are generically useful to any top.
Primitive libraries (e.g. prim_fifo) are found in ip/prim/.
Technology-specific primitive libraries (e.g. FPGA-specific specialized primitives) also belong to ip/prim_*/.
Hardware IP blocks that are specific to a given top belong in that top’s top_*/ip/ directory.
Some hardware IP blocks require parameterization beyond the capabilities of ordinary SystemVerilog parameters.
To carry out parameterization, these IP blocks’ files are written in Mako templates and are indicated with filenames ending in *.tpl.
These hardware IP blocks are said to be “templatized”.
Templatized hardware IP blocks are found in the ip_templates/ directory.
Prior to compilation, the templates for these hardware IP blocks are filled for a given top and copied in that top’s top_*/ip_autogen/ directory.
For a more complete description of the remaining directories, see Directory Structure
Comportable hardware IP block dashboard
The following autogenerated table contains links to design/verification specifications for each hardware IP block. See the Hardware Development Stages for a description of the hardware stages and how they are determined.
Processor cores
Ibex
The Ibex core (at ip_templates/rv_core_ibex/) is a 32-bit RISC-V CPU core.
Ibex is an in-order, 2- or 3-stage (configurable) pipelined processor that can support the compressed and bit manipulation instruction set extensions (RV32IMCB).
Top-level designs
Egret top-level
Egret-specific comportable IPs
| Design Spec | DV Document | Spec Version | Development Stage | Notes | |||
|---|---|---|---|---|---|---|---|
sensor_ctrl |
DV | 2.0.0 | L1 | D3 | N/A | - | Verified at the top-level. |
alert_handler |
DV | 1.0.1 | L1 | D3 | V2S | S2 | Use both FPV and DV to perform block level verification. |
clkmgr |
DV | 1.0.1 | L1 | D3 | V2S | S2 |
|
flash_ctrl |
DV | 0.1.0 | L1 | D1 | V1 | - |
|
| 2.0.0 | L1 | D2S | V2S | S2 |
|
||
gpio |
DV | 1.0.0 | L2 | D3 | V3 | - |
|
| 1.2.0 | L1 | D3 | V2S | S2 |
|
||
otp_ctrl |
DV | 0.1.0 | L1 | D2 | V2 | S1 |
|
| 1.0.0 | L1 | D3 | V2S | S2 |
|
||
| 3.0.0 | L1 | D1 | V1 | S2 |
|
||
pinmux |
DV | 1.1.1 | L1 | D3 | V2S | S2 | Use FPV to perform block level verification. |
pwm |
DV | 1.0.0 | L1 | D2S | V2S | S2 |
|
pwrmgr |
DV | 0.1.0 | L1 | D1 | V0 | S0 |
|
| 1.0.1 | L1 | D3 | V2S | S2 |
|
||
rstmgr |
DV | 1.0.0 | L1 | D3 | V2S | S2 |
|
rv_core_ibex |
DV | 2.1.0 | L1 | D2S | V2S | S2 | Ibex Verification is tracked in the Ibex documentation. |
rv_plic |
DV | 2.0.0 | L1 | D3 | V2 | S2 | Use FPV to perform block level verification. |