blob: 70302809b18c987c61a69a1b5d4361d6fbf74175 [file] [log] [blame] [view]
Hugo McNallyeb1350f2023-02-09 11:47:21 +00001# Summary
2
3[OpenTitan](./doc/introduction.md)
4
5# Hardware
6
7- [Introduction](./hw/README.md)
8
9- [Top Earlgrey](./hw/top_earlgrey/README.md)
10 - [Datasheet](./hw/top_earlgrey/doc/specification.md)
11 - [Design](./hw/top_earlgrey/doc/design/README.md)
12 - [Design Verification](./hw/top_earlgrey/dv/README.md)
13 - [Analog Sensor Top](./hw/top_earlgrey/ip/ast/README.md)
14 - [Alert Handler](./hw/top_earlgrey/ip_autogen/alert_handler/README.md)
15 - [Design Verification](./hw/top_earlgrey/ip_autogen/alert_handler/dv/README.md)
16 - [Checklist](./hw/top_earlgrey/ip_autogen/alert_handler/doc/checklist.md)
17 - [Interrupt Controller](./hw/top_earlgrey/ip_autogen/rv_plic/README.md)
18 - [Design Verification](./hw/top_earlgrey/ip_autogen/rv_plic/doc/dv/README.md)
19 - [Checklist](./hw/top_earlgrey/ip_autogen/rv_plic/doc/checklist.md)
20 - [Sensor Control](./hw/top_earlgrey/ip/sensor_ctrl/README.md)
21 - [Checklist](./hw/top_earlgrey/ip/sensor_ctrl/doc/checklist.md)
22 - [TL-UL Checklist](./hw/top_earlgrey/ip/xbar/doc/checklist.md)
23 - [Pinmux Targets](./hw/top_earlgrey/ip/pinmux/doc/autogen/targets.md)
24 - [ASIC Target Pinout and Pinmux Connectivity](./hw/top_earlgrey/ip/pinmux/doc/autogen/pinout_asic.md)
25 - [CW310 Target Pinout and Pinmux Connectivity](./hw/top_earlgrey/ip/pinmux/doc/autogen/pinout_cw310.md)
26 - [NEXYSVIDEO Target Pinout and Pinmux Connectivity](./hw/top_earlgrey/ip/pinmux/doc/autogen/pinout_nexysvideo.md)
27
28- [Cores](./hw/doc/cores.md)
29 - [Ibex RISC-V Core Wrapper](./hw/ip/rv_core_ibex/README.md)
30 - [Design Verification](./hw/ip/rv_core_ibex/dv/README.md)
31 - [Checklist](./hw/ip/rv_core_ibex/doc/checklist.md)
32 - [OTBN](./hw/ip/otbn/README.md)
33 - [Developer Guide](./hw/ip/otbn/doc/developer-guide.md)
34 - [ISA Guide](./hw/ip/otbn/doc/isa.md)
35 - [Design Verification](./hw/ip/otbn/dv/README.md)
36 - [Random Instruction Generator](./hw/ip/otbn/dv/rig/README.md)
37 - [Internals](./hw/ip/otbn/dv/rig/rig/README.md)
38 - [Configuration](./hw/ip/otbn/dv/rig/rig/configs/README.md)
39 - [memutil wrapper](./hw/ip/otbn/dv/memutil/README.md)
40 - [OTBN Simulation Software](./hw/ip/otbn/dv/otbnsim/README.md)
41 - [Tracer](./hw/ip/otbn/dv/tracer/README.md)
42 - [Formal Masking Verification Using Alma](./hw/ip/otbn/pre_sca/alma/README.md)
43 - [Functional Coverage](./hw/ip/otbn/dv/doc/fcov.md)
44 - [Checklist](./hw/ip/otbn/doc/checklist.md)
45
46- [Hardware IP Blocks](./hw/ip/README.md)
47 - [Analog to Digital Converter Control](./hw/ip/adc_ctrl/README.md)
48 - [Design Verification](./hw/ip/adc_ctrl/dv/README.md)
49 - [Checklist](./hw/ip/adc_ctrl/doc/checklist.md)
50 - [AES](./hw/ip/aes/README.md)
51 - [Design Verification](./hw/ip/aes/dv/README.md)
52 - [Checklist](./hw/ip/aes/doc/checklist.md)
53 - [AON Timer](./hw/ip/aon_timer/README.md)
54 - [Design Verification](./hw/ip/aon_timer/dv/README.md)
55 - [Checklist](./hw/ip/aon_timer/doc/checklist.md)
56 - [Clock Manager](./hw/ip/clkmgr/README.md)
57 - [Design Verification](./hw/ip/clkmgr/dv/README.md)
58 - [Checklist](./hw/ip/clkmgr/doc/checklist.md)
59 - [CSRNG](./hw/ip/csrng/README.md)
60 - [Design Verification](./hw/ip/csrng/dv/README.md)
61 - [Checklist](./hw/ip/csrng/doc/checklist.md)
62 - [EDN](./hw/ip/edn/README.md)
63 - [Design Verification](./hw/ip/edn/dv/README.md)
64 - [Checklist](./hw/ip/edn/doc/checklist.md)
65 - [Entropy Source](./hw/ip/entropy_src/README.md)
66 - [Design Verification](./hw/ip/entropy_src/dv/README.md)
67 - [Checklist](./hw/ip/entropy_src/doc/checklist.md)
68 - [Flash Controller](./hw/ip/flash_ctrl/README.md)
69 - [Design Verification](./hw/ip/flash_ctrl/dv/README.md)
70 - [Checklist](./hw/ip/flash_ctrl/doc/checklist.md)
71 - [GPIO](./hw/ip/gpio/README.md)
72 - [Design Verification](./hw/ip/gpio/dv/README.md)
73 - [Checklist](./hw/ip/gpio/doc/checklist.md)
74 - [HMAC](./hw/ip/hmac/README.md)
75 - [Design Verification](./hw/ip/hmac/dv/README.md)
76 - [Checklist](./hw/ip/hmac/doc/checklist.md)
77 - [I2C](./hw/ip/i2c/README.md)
78 - [Design Verification](./hw/ip/i2c/dv/README.md)
79 - [Checklist](./hw/ip/i2c/doc/checklist.md)
80 - [Key Manager](./hw/ip/keymgr/README.md)
81 - [Design Verification](./hw/ip/keymgr/dv/README.md)
82 - [Checklist](./hw/ip/keymgr/doc/checklist.md)
83 - [KMAC](./hw/ip/kmac/README.md)
84 - [Design Verification](./hw/ip/kmac/dv/README.md)
85 - [Checklist](./hw/ip/kmac/doc/checklist.md)
86 - [Life Cycle Controller](./hw/ip/lc_ctrl/README.md)
87 - [Design Verification](./hw/ip/lc_ctrl/dv/README.md)
88 - [Checklist](./hw/ip/lc_ctrl/doc/checklist.md)
89 - [OTP Controller](./hw/ip/otp_ctrl/README.md)
90 - [Design Verification](./hw/ip/otp_ctrl/dv/README.md)
91 - [Checklist](./hw/ip/otp_ctrl/doc/checklist.md)
92 - [Pattern Generator](./hw/ip/pattgen/README.md)
93 - [Design Verification](./hw/ip/pattgen/dv/README.md)
94 - [Checklist](./hw/ip/pattgen/doc/checklist.md)
95 - [Pinmux](./hw/ip/pinmux/README.md)
96 - [Design Verification](./hw/ip/pinmux/doc/dv/README.md)
97 - [Checklist](./hw/ip/pinmux/doc/checklist.md)
98 - [Pulse Width Modulator](./hw/ip/pwm/README.md)
99 - [Design Verification](./hw/ip/pwm/dv/README.md)
100 - [Checklist](./hw/ip/pwm/doc/checklist.md)
101 - [Power Management](./hw/ip/pwrmgr/README.md)
102 - [Design Verification](./hw/ip/pwrmgr/dv/README.md)
103 - [Checklist](./hw/ip/pwrmgr/doc/checklist.md)
104 - [ROM Control](./hw/ip/rom_ctrl/README.md)
105 - [Design Verification](./hw/ip/rom_ctrl/dv/README.md)
106 - [Checklist](./hw/ip/rom_ctrl/doc/checklist.md)
107 - [Reset Manager](./hw/ip/rstmgr/README.md)
108 - [Design Verification](./hw/ip/rstmgr/dv/README.md)
109 - [Checklist](./hw/ip/rstmgr/doc/checklist.md)
110 - [RISC-V Debug Manager](./hw/ip/rv_dm/README.md)
111 - [Design Verification](./hw/ip/rv_dm/dv/README.md)
112 - [Checklist](./hw/ip/rv_dm/doc/checklist.md)
113 - [SPI Device](./hw/ip/spi_device/README.md)
114 - [Design Verification](./hw/ip/spi_device/dv/README.md)
115 - [Checklist](./hw/ip/spi_device/doc/checklist.md)
116 - [SPI Host](./hw/ip/spi_host/README.md)
117 - [Design Verification](./hw/ip/spi_host/dv/README.md)
118 - [Checklist](./hw/ip/spi_host/doc/checklist.md)
119 - [SRAM Controller](./hw/ip/sram_ctrl/README.md)
120 - [Design Verification](./hw/ip/sram_ctrl/dv/README.md)
121 - [Checklist](./hw/ip/sram_ctrl/doc/checklist.md)
122 - [System Reset Controller](./hw/ip/sysrst_ctrl/README.md)
123 - [Design Verification](./hw/ip/sysrst_ctrl/dv/README.md)
124 - [Checklist](./hw/ip/sysrst_ctrl/doc/checklist.md)
125 - [Timer](./hw/ip/rv_timer/README.md)
126 - [Design Verification](./hw/ip/rv_timer/dv/README.md)
127 - [Checklist](./hw/ip/rv_timer/doc/checklist.md)
128 - [TL-UL Bus](./hw/ip/tlul/README.md)
129 - [Design Verification](./hw/ip/tlul/doc/dv/README.md)
130 - [Protocol Checker](./hw/ip/tlul/doc/TlulProtocolChecker.md)
131 - [UART](./hw/ip/uart/README.md)
132 - [Design Verification](./hw/ip/uart/dv/README.md)
133 - [Checklist](./hw/ip/uart/doc/checklist.md)
134 - [USB 2.0](./hw/ip/usbdev/README.md)
135 - [Design Verification](./hw/ip/usbdev/dv/README.md)
136 - [Suspending and Resuming](./hw/ip/usbdev/doc/wake_resume.md)
137 - [Checklist](./hw/ip/usbdev/doc/checklist.md)
138 - [lowRISC Hardware Primitives](./hw/ip/prim/README.md)
139 - [Two Input Clock](./hw/ip/prim/doc/prim_clock_gp_mux2.md)
140 - [Flash Wrapper](./hw/ip/prim/doc/prim_flash.md)
141 - [Keccak Permutation](./hw/ip/prim/doc/prim_keccak.md)
142 - [Linear Feedback Shift Register](./hw/ip/prim/doc/prim_lfsr.md)
143 - [Packer](./hw/ip/prim/doc/prim_packer.md)
144 - [Packer FIFO](./hw/ip/prim/doc/prim_packer_fifo.md)
145 - [Present Scrambler](./hw/ip/prim/doc/prim_present.md)
146 - [Prince Scrambler](./hw/ip/prim/doc/prim_prince.md)
147 - [SRAM Scrambler](./hw/ip/prim/doc/prim_ram_1p_scr.md)
148 - [Pseudo Random Number Generator](./hw/ip/prim/doc/prim_xoshiro256pp.md)
149
150- [Common SystemVerilog and UVM Components](./hw/dv/sv/README.md)
151 - [ALERT_ESC Agent](./hw/dv/sv/alert_esc_agent/README.md)
152 - [Bus Params Package](./hw/dv/sv/bus_params_pkg/README.md)
153 - [Comportable IP Testbench Architecture](./hw/dv/sv/cip_lib/README.md)
154 - [Common Interfaces](./hw/dv/sv/common_ifs/README.md)
155 - [CSR Utils](./hw/dv/sv/csr_utils/README.md)
156 - [CSRNG Agent](./hw/dv/sv/csrng_agent/README.md)
157 - [DV Library Classes](./hw/dv/sv/dv_lib/README.md)
158 - [DV Utils](./hw/dv/sv/dv_utils/README.md)
159 - [FLASH_PHY_PRIM Agent](./hw/dv/sv/flash_phy_prim_agent/README.md)
160 - [I2C Agent](./hw/dv/sv/i2c_agent/README.md)
161 - [JTAG Agent](./hw/dv/sv/jtag_agent/README.md)
162 - [JTAG DMI Agent](./hw/dv/sv/jtag_dmi_agent/README.md)
163 - [JTAG RISCV Agent](./hw/dv/sv/jtag_riscv_agent/README.md)
164 - [KEY_SIDELOAD Agent](./hw/dv/sv/key_sideload_agent/README.md)
165 - [KMAC_APP Agent](./hw/dv/sv/kmac_app_agent/README.md)
166 - [Memory Backdoor Scoreboard](./hw/dv/sv/mem_bkdr_scb/README.md)
167 - [Memory Backdoor Utility](./hw/dv/sv/mem_bkdr_util/README.md)
168 - [Memory Model](./hw/dv/sv/mem_model/README.md)
169 - [PATTGEN Agent](./hw/dv/sv/pattgen_agent/README.md)
170 - [PUSH_PULL Agent](./hw/dv/sv/push_pull_agent/README.md)
171 - [PWM Monitor](./hw/dv/sv/pwm_monitor/README.md)
172 - [RNG Agent](./hw/dv/sv/rng_agent/README.md)
173 - [Scoreboard](./hw/dv/sv/scoreboard/README.md)
174 - [Simulation SRAM](./hw/dv/sv/sim_sram/README.md)
175 - [SPI Agent](./hw/dv/sv/spi_agent/README.md)
176 - [String Utils](./hw/dv/sv/str_utils/README.md)
177 - [Test Vectors](./hw/dv/sv/test_vectors/README.md)
178 - [Tile Link Agent](./hw/dv/sv/tl_agent/README.md)
179 - [UART Agent](./hw/dv/sv/uart_agent/README.md)
180 - [USB20 Agent](./hw/dv/sv/usb20_agent/README.md)
181
182# Software
183- [Introduction](./sw/README.md)
184- [Build Software](./sw/doc/build_software.md)
185
186- [Device Software](./sw/device/README.md)
187 - [Device Libraries](./sw/device/lib/README.md)
188 - [DIF Library](./sw/device/lib/dif/README.md)
189 - [ADC Checklist](sw/device/lib/dif/dif_adc_ctrl.md)
190 - [AES Checklist](sw/device/lib/dif/dif_aes.md)
191 - [Alert Handler Checklist](sw/device/lib/dif/dif_alert_handler.md)
192 - [Always-On Timer Checklist](sw/device/lib/dif/dif_aon_timer.md)
193 - [Clock Manager Checklist](sw/device/lib/dif/dif_clkmgr.md)
194 - [CSRNG Checklist](sw/device/lib/dif/dif_csrng.md)
195 - [EDN Checklist](sw/device/lib/dif/dif_edn.md)
196 - [Entropy Source Checklist](sw/device/lib/dif/dif_entropy_src.md)
197 - [Flash Controller Checklist](sw/device/lib/dif/dif_flash_ctrl.md)
198 - [GPIO Checklist](sw/device/lib/dif/dif_gpio.md)
199 - [HMAC Checklist](sw/device/lib/dif/dif_hmac.md)
200 - [I2C Checklist](sw/device/lib/dif/dif_i2c.md)
201 - [Key Manager Checklist](sw/device/lib/dif/dif_keymgr.md)
202 - [KMAC Checklist](sw/device/lib/dif/dif_kmac.md)
203 - [Lifecycle Checklist](sw/device/lib/dif/dif_lc_ctrl.md)
204 - [OTBN Checklist](sw/device/lib/dif/dif_otbn.md)
205 - [OTP Controller Checklist](sw/device/lib/dif/dif_otp_ctrl.md)
206 - [Pattern Generator Checklist](sw/device/lib/dif/dif_pattgen.md)
207 - [Pin Multiplexer Checklist](sw/device/lib/dif/dif_pinmux.md)
208 - [PWM Checklist](sw/device/lib/dif/dif_pwm.md)
209 - [Power Manager Checklist](sw/device/lib/dif/dif_pwrmgr.md)
210 - [ROM Checklist](sw/device/lib/dif/dif_rom_ctrl.md)
211 - [Reset Manager Checklist](sw/device/lib/dif/dif_rstmgr.md)
212 - [RV Core Ibex Checklist](sw/device/lib/dif/dif_rv_core_ibex.md)
213 - [PLIC Checklist](sw/device/lib/dif/dif_rv_plic.md)
214 - [RV Timer Checklist](sw/device/lib/dif/dif_rv_timer.md)
215 - [Sensor Controller Checklist](sw/device/lib/dif/dif_sensor_ctrl.md)
216 - [SPI Device Checklist](sw/device/lib/dif/dif_spi_device.md)
217 - [SPI Host Checklist](sw/device/lib/dif/dif_spi_host.md)
218 - [SRAM Controller Checklist](sw/device/lib/dif/dif_sram_ctrl.md)
219 - [System Reset Controller Checklist](sw/device/lib/dif/dif_sysrst_ctrl.md)
220 - [UART Checklist](sw/device/lib/dif/dif_uart.md)
221 - [USB Checklist](sw/device/lib/dif/dif_usbdev.md)
222 - [Top-Level Test Libraries](./sw/device/lib/testing/README.md)
223 - [On-Device Test Framework](./sw/device/lib/testing/test_framework/README.md)
224 - [OpenTitan Standard Library](./sw/device/lib/base/README.md)
225 - [Freestanding C Headers](./sw/device/lib/base/freestanding/README.md)
226 - [Silicon Creator Software](./sw/device/silicon_creator/README.md)
227 - [Manufacturing Firmware](./sw/device/silicon_creator/manuf/README.md)
228 - [ROM](./sw/device/silicon_creator/rom/README.md)
229 - [Memory Protection](./sw/device/silicon_creator/rom/doc/memory_protection.md)
230 - [Signing Keys](./sw/device/silicon_creator/rom/keys/README.md)
231 - [Manifest Format](./sw/device/silicon_creator/rom_ext/doc/manifest.md)
232 - [Top-Level Tests](./sw/device/tests/README.md)
233 - [Manufacturer Test Hooks](./sw/device/tests/closed_source/README.md)
234 - [Crypto Library Tests](./sw/device/tests/crypto/README.md)
235
236- [Host Software](./sw/host/README.md)
237
238
239# Tooling
240
241- [Tools Overview](./util/README.md)
242- [Design-Related Tooling](./util/design/README.md)
243
244- [dvsim: Testplanner](./util/dvsim/README.md)
245- [fpvgen: Initial FPV Testbench Generation](./util/fpvgen/README.md)
246- [reggen & regtool: Register Generator](./util/reggen/README.md)
247 - [Setup and use of regtool](./util/reggen/doc/setup_and_use.md)
248
249- [ralgen: FuseSoC UVM RAL Generator](./hw/dv/tools/ralgen/README.md)
250- [uvmdvgen: Initial Testbench Auto-generation](./util/uvmdvgen/README.md)
251- [tlgen: Crossbar Generation](./util/tlgen/README.md)
252- [ipgen: Generate IP Blocks from IP Templates](./util/ipgen/README.md)
253- [topgen: Top Generator](./util/topgen/README.md)
254- [vendor: Vendoring In Tool](./util/doc/vendor.md)
255- [i2csvg: Generate SVGs of I2C Commands](./util/i2csvg/README.md)
256
257
258# Contributing
259
260- [Contributing](./doc/contributing/README.md)
261 - [Detailed Contribution Guide](./doc/contributing/detailed_contribution_guide/README.md)
262 - [Directory Structure](./doc/contributing/directory_structure.md)
263 - [Continueous Intergration](./doc/contributing/ci/README.md)
264 - [Top-Level Design and Targets](./doc/contributing/system_list.md)
265 - [GitHub Notes](./doc/contributing/github_notes.md)
266 - [Bazel Notes](./doc/contributing/bazel_notes.md)
267 - [Using the Container](./util/container/README.md)
268
269- [Contributing to Hardware]()
270 - [Comportability](./doc/contributing/hw/comportability/README.md)
271 - [Hardware Design](./doc/contributing/hw/design.md)
272 - [Design Methodology](./doc/contributing/hw/methodology.md)
273 - [Vendoring in Hardware](./doc/contributing/hw/vendor.md)
274 - [Linting](./hw/lint/README.md)
275 - [Synthesis Flow](./hw/syn/README.md)
276
277- [Contributing to Verification]()
278 - [Verification Methodology](./doc/contributing/dv/methodology/README.md)
279 - [Security Countermeasure Verification Framework](./doc/contributing/dv/sec_cm_dv_framework/README.md)
280 - [Assertions](./hw/formal/README.md)
281
282- [Contributing to Software]()
283 - [Device Interface Functions](./doc/contributing/sw/device_interface_functions.md)
284 - [Writing and Building Software for OTBN](./doc/contributing/sw/otbn_sw.md)
285
286- [Style Guides](./doc/contributing/style_guides/README.md)
287 - [HJSON](./doc/contributing/style_guides/hjson_usage_style.md)
288 - [Python](./doc/contributing/style_guides/python_coding_style.md)
289 - [C & C++](./doc/contributing/style_guides/c_cpp_coding_style.md)
290 - [Markdown](./doc/contributing/style_guides/markdown_usage_style.md)
291 - [RISC-V Assembly](./doc/contributing/style_guides/asm_coding_style.md)
292 - [OTBN Assembly](./doc/contributing/style_guides/otbn_style_guide.md)
293 - [Guidance for Volatile](./doc/contributing/style_guides/guidance_for_volatile.md)
294
295- [Developing on an FPGA]()
296 - [Get a Board](./doc/contributing/fpga/get_a_board.md)
297 - [FPGA Reference Manual](./doc/contributing/fpga/ref_manual_fpga.md)
298
299# Project Governance
300
301- [Introduction](./doc/project_governance/README.md)
302- [Committers](./doc/project_governance/committers.md)
303- [RFC Process](./doc/project_governance/rfc_process.md)
304- [Generalized Priority Definitions](./doc/project_governance/priority_definitions.md)
305- [OpenTitan Technical Committee](./doc/project_governance/technical_committee.md)
306- [Hardware Development Stages](./doc/project_governance/development_stages.md)
307- [Signoff Checklist](./doc/project_governance/checklist/README.md)
308
309# Security
310
311- [Security](./doc/security/README.md)
312- [Implementation Guidelines](./doc/security/implementation_guidelines/README.md)
313 - [Secure Hardware Design Guidelines](./doc/security/implementation_guidelines/hardware/README.md)
314
315- [Logical Security Model](./doc/security/logical_security_model/README.md)
316- [Security Model Specification](./doc/security/specs/README.md)
317 - [Device Attestation](./doc/security/specs/attestation/README.md)
318 - [Device Life Cycle](./doc/security/specs/device_life_cycle/README.md)
319 - [Device Provisioning](./doc/security/specs/device_provisioning/README.md)
320 - [Firmware Update](./doc/security/specs/firmware_update/README.md)
321 - [Identities and Root Keys](./doc/security/specs/identities_and_root_keys/README.md)
322 - [Ownership Transfer](./doc/security/specs/ownership_transfer/README.md)
323 - [Secure Boot](./doc/security/specs/secure_boot/README.md)
324
325- [Lightweight Threat Model](./doc/security/threat_model/README.md)
326
327# Use Cases
328
329- [Use Cases](./doc/use_cases/README.md)
330- [Platform Integrity Module](./doc/use_cases/platform_integrity_module/README.md)
331- [Trusted Platform Module](./doc/use_cases/tpm/README.md)
332- [Universal 2nd-Factor Security Key](./doc/use_cases/u2f/README.md)
333
334
335# Rust for C Developers
336
337- [Rust for Embedded C Programmers](./doc/rust_for_c_devs.md)