SPDX-License-Identifier: Apache-2.0
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Last Update: 2024/09/17
HW Design Collateral for Caliptra Subsystem, which comprises Caliptra RoT IP and additional infrastructure to support manufacturer custom controls.
OS:
- Build instructions assume a Linux environment
Simulation:
- Synopsys VCS with Verdi
Version U-2023.03-SP1-1_Full64
- Mentor Graphics AVERY
avery/2023.2
AXI interconnect and I3C VIP
- UVM installation
Version 1.1d
GCC:
- RISCV Toolchain for generating memory initialization files
Version 2023.04.29
riscv64-unknown-elf-gcc (g) 12.2.0
- G++ Used to compile Verilator objects and test firmware
g++ (GCC) 11.2.0
Other:
- Playbook (Microsoft Internal workflow management tool)
There is significant configurability when installing the RISCV toolchain. These instructions may be used to create a RISCV installation that will be compatible with the provided Makefile for compiling test C programs.
- Install from this repository:
- https://github.com/riscv-collab/riscv-gnu-toolchain
- Follow the included README in that repository for installation instructions
- The most recently tested toolchain build that was confirmed to work was 2023-04-29
- A compatible tool installation requires newlib cross-compiler, multilib support, and the zicsr/zifencei extensions. Use this configure command:
./configure --enable-multilib --prefix=/path/to/tools/riscv-gnu/2023.04.29 --with-multilib-generator="rv32imc-ilp32--a*zicsr*zifencei"
- Use
make
instead ofmake linux
to install the tool (using newlib option)
├── config
│ └── compilespecs.yml
├── docs
│ ├── Caliptra 2.0 Subsystem Specification 1.pdf
│ ├── CaliptraSSHardwareSpecification.md
│ ├── CaliptraSSIntegrationSpecification.md
│ └── images
├── LICENSE
├── README.md
├── Release_Notes.md
├── SECURITY.md
├── src
│ ├── ast
│ ├── axi2tlul
│ ├── axi_mem
│ ├── dmi
│ ├── fuse_ctrl
│ ├── i3c-core
│ ├── integration
│ ├── lc_ctrl
│ ├── mci
│ ├── mcu
│ ├── pwrmgr
│ ├── riscv_core
│ └── tlul
├── third_party
│ ├── caliptra-rtl
│ ├── cocotbext-i3c
│ └── i3c-core
└── tools
└── scripts
Verilog file lists are generated via VCS and included in the config directory for each unit. New files added to the design must be included in the vf list. They can be included manually or by using VCS to regenerate the vf file. File lists define the compilation sources (including all dependencies) required to build and simulate a given module or testbench, and should be used by integrators for simulation, lint, and synthesis.