|
| 1 | +# BKDR_LOADER Technical Specification |
| 2 | +<!-- BEGIN CMDGEN util/mdbook_regression_links.py --hjson hw/ip/bkdr_loader/data/bkdr_loader.hjson --top earlgrey --> |
| 3 | +| Regression | Version | [Stages](https://opentitan.org/book/doc/project_governance/development_stages.html) | Results | |
| 4 | +|-|-|-|-| |
| 5 | + [`bkdr_loader`](https://dashboard.reports.lowrisc.org/opentitan/earlgrey/dashboard.html) | 0.1.0 | D1, V0 |     | |
| 6 | + |
| 7 | +<!-- END CMDGEN --> |
| 8 | + |
| 9 | +# Overview |
| 10 | + |
| 11 | +This document specifies the FPGA-only memory Backdoor Loader which is used to preload non-volatile |
| 12 | +and volatile memories on FPGA targets. |
| 13 | + |
| 14 | + |
| 15 | +## Features |
| 16 | + |
| 17 | +- No impact on ASIC implementation: loader RTL only in FPGA-specific files |
| 18 | +- Exposes FPGA-only registers such as the `USR_TIMESTAMP` |
| 19 | +- Up to 64 memory r/w targets supported |
| 20 | +- Automatic discovery of available targets by presenting a 32-bit target ID as well as width and depth |
| 21 | +- Access to raw BRAM data allowing to set both data and ECC arbitrarily for each target |
| 22 | + |
| 23 | +## Description |
| 24 | + |
| 25 | +The BKDR_LOADER intercepts the reset and JTAG signals between the FPGA pad array and the top-level |
| 26 | +OpenTitan instance. On reset, the IP samples the tap strap pins and becomes active if both strap |
| 27 | +signals are high (DFT mode on the ASIC). |
| 28 | + |
| 29 | +When active, the module keeps the reset to both the AST and OpenTitan asserted to prevent any access |
| 30 | +to non-initialized memory regions. It presents an internal RISC-V DTM over which the loader's internal |
| 31 | +[registers](doc/registers.md) can be accessed. The BKDR_LOADER presents both the number of targets and key target |
| 32 | +information through its register space. |
| 33 | + |
| 34 | +After completing preloading and data validation, the loader is deactivated until the next |
| 35 | +button reset via the control register. In this case, the JTAG signals are forwarded to OpenTitan |
| 36 | +and the reset to the AST and OpenTitan is de-asserted. |
0 commit comments