commit | e3a7c579dc0d4785156ea3999e84004cc6c4ecf2 | [log] [tgz] |
---|---|---|
author | Timothy Trippel <ttrippel@google.com> | Thu Feb 17 17:30:47 2022 -0800 |
committer | Timothy Trippel <5633066+timothytrippel@users.noreply.github.com> | Wed Mar 02 19:22:54 2022 -0800 |
tree | f3be57956eaf35dcb9f52d07bfc7e4879c5e0be8 | |
parent | 23fe8dd7e4b16bac1b220aa7515de6dbcee22411 [diff] |
[bazel] Restructure `opentitan_binary` and `opentitan_functest` macros Verilator simulations can take as input either a scrambled VMEM file or an ELF file to load the simulated flash memory with. However, the existing signing tool, can only sign BIN files, and BIN files can only be converted to VMEM files (since ELF section header info is lost). Therefore, in order to run Verilator simulations with signed flash images, for mask ROM testing, the bazel `opentitan_binary` macro must be able to convert singed BIN files into scrambled VMEM files. Currently, the `opentitan_binary` macro is used to generate both ROM and flash images for simulations, since the simulated ROM takes as input a scrambled VMEM file, that can be generated from an ELF file (so the same macro could generate ELFs for either ROM or flash, and if the image was destined for ROM, it could just be processed further). Unfortunately, the scrambled VMEM format used for ROM, is different from that used for flash (i.e., 32 vs. 64 bit words), and, using the same bazel macro (i.e., `opentitan_binary`) to generate two different scrambled VMEM files (one for ROM and one for flash) adds too much complexity to the macro. Therefore, this commit, brakes the original `opentitan_binary` macro intro three macros, to simplify the implementation of each, while maximizing code reuse. These include: 1. `opentitan_binary`: a macro used to generate ".elf", ".bin", and ".dis" files for RV32I targets, 2. `opentitan_rom_binary`: a macro that invokes `opentitan_binary` under the hood, and then translates the resulting ".elf" into a scrambled 32-bit VMEM file (required for ROM), and 3. `opentitan_flash_binary`: a macro that invokes `opentitan_binary` under the hood, and then (optionally) signs, and translates the resulting ".bin" files into scrambled 64-bit VMEM files (required for flash). This fixes #10876, and enables running `opentitan_functest`s with mask ROM (and test ROM) on both Verilator and CW310 hardware targets. Signed-off-by: Timothy Trippel <ttrippel@google.com>
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.
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.
The project contains comprehensive documentation of all IPs and tools. You can access it online at docs.opentitan.org.
Have a look at CONTRIBUTING and our documentation on project organization and processes for guidelines on how to contribute code to this repository.
Unless otherwise noted, everything in this repository is covered by the Apache License, Version 2.0 (see LICENSE for full text).