Skip to content

Commit 1fab97d

Browse files
committed
[ipgen,otp_ctrl] Change otp_ctrl to ipgen
This commit is similar to other ipgen conversions, but changes a few extra things because it needs to change the generation of otp memory images. It merges the following 32 individual commits: - Fix OtpMemMap exception message - Improve handling template parameters by ipgen - Add doc and avoid redundant declaration. - Move otp_ctrl images and mmap hjson out of hw/ip - The files that are top-specific moved to hw/top_earlgrey/data/otp - Adjust lots of paths to match this change - Move otp_ctrl_img.c.tpl to util/design/data since it is generic - Move the documentation of otp image generation to util/design/README.md - Add otp_ctrl ipgen tpldesc hjson file - Copy all hw/ip/otp_ctrl files to ip_templates - This is a straight copy with no changes to the files. - Remove generated files - There is no use for files in ip_templates that will end up being generated. - Move template files to their specific directories - Turn a few more files into templates and fix paths - The template files are almost identical to the previous ones, except - they use ${topname} instead of a specific name - consecutive '#' are escaped so they are not considered hugo comments; for example, ### is replaced by ${"###"} - text bracketed by CMDGEN is removed - Adjust some relative paths to account for the change in the file locations. - Use {self_dir} to simplify some paths: it points to the location of the hjson file used to process the contents of a given file. - Fix some incorrect links to docs. - Move top-specific items out of otp_ctrl_pkg - Move top-specific and implementation items to otp_ctrl_top_specific_pkg. - Create separate core files for both packages. - Adjust multiple sv files to use the right package. - Remove unused lc_otp_token_{req,rsp}_t. - Fix core files - Change most core file into templates, use instance_vlnv, and declare a virtual target. - Change otp_ctrl_sim_cfg.hjson into a template since it uses a template fusesoc core. - Change templates to use plain dictionaries - In practice this just removes redundant config token. - Block building template targets - Add otp_ctrl in hw/ip_templates/BUILD all_files. - Template files are only intended for code generation, so it makes no sense to use them to build targets. - Remove gen_comment from templates - The comment regarding generation for ipgen artifacts will be dealt with uniformly in the PR that fixes #25444. - Remove gen_comment from the tpldesc file. - Add code in OtpMemMap to support ipgen - Create packages for design.lib and design.mubi. - gen-flash-img depends on modules that import topgen modules so it needs to have topgen in sys.path. This was not needed for some reason, perhaps the introduction of packages ends up requiring it. - Place darjeeling mmap and img files under hw/top_darjeeling - This is similar to the new placement of the corresponding earlgrey files. - Fix the copyright banner. - Block generation of dif artifacts - These artifacts need to be placed under top-specific directories. - When the sw side is ready for that, change the flow to create the per top generated files in the right place. - Create otp_ctrl with ipgen - Create both earlgrey and darjeeling otp_ctrl with topgen.py via ipgen. - As a side effect some random constants are changed, since there are more requests for random numbers in topgen. - Make util/design/gen-otp-mmap.py compatible with otp_ctrl ipgen - This tool may become obsolete, but it is best to upgrade it per the ipgen flow. - Comment out dif generation, and add a TODO with an explicit issue. - Add mmap_def argument in bazel's otp_image_consts - Remove unnecessary otp link in md file - This avoids the confusion about which top to refer to. - Generate otp_ctrl difs via ipgen - Fix top level core files - Fix BUILD files - Use ip_autogen path for otp_ctrl_c_regs. - Use ip_autogen path for rust artifacts. - Change a few hw BUILD files for ipgen changes. - Fix reference to data/otp_ctrl.hjson in BUILD.tpl. - Fix image handling in dvsim sim.mk - Fix hjson files - Fix md files - Describe references to top-specific otp_ctrl as examples. - Fix BLOCKFILE - Fix documentation collateral - Fix englishbreakfast build - Remove otp_ctrl from top_englishbreakfast because it is not instantiated, but keep otp_ctrl_pkg since it shows in types of unconnected ports. - Remove obsolete otp-mmap check from ci - Remove legacy files - Update hw/ip/README.md file Fixes #25019 Signed-off-by: Guillermo Maturana <[email protected]>
1 parent bd9ed9d commit 1fab97d

File tree

491 files changed

+65732
-1501
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

491 files changed

+65732
-1501
lines changed

BLOCKFILE

+14-15
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# If a PR changes a file that matches a pattern in this file it will be blocked
22
# from merged by CI. The patterns as glob-like patterns matched using python
33
# fnmatch. In particular note there is no special handling for '/' so '*' can
4-
# match multiple directory levels e.g. 'this/is/*/a/path' matches both
4+
# match multiple directory levels e.g. 'this/is/a/*/path' matches both
55
# 'this/is/a/foo/path' and 'this/is/a/foo/bar/path'.
66
#
77
# Anyone on the COMMITTERS list can authorize a change by adding a comment
@@ -49,7 +49,6 @@ hw/ip/keymgr/rtl/*
4949
hw/ip/kmac/rtl/*
5050
hw/ip/lc_ctrl/rtl/*
5151
hw/ip/otbn/rtl/*
52-
hw/ip/otp_ctrl/rtl/*
5352
hw/ip/pattgen/rtl/*
5453
hw/ip/prim/rtl/*
5554
hw/ip/prim_generic/rtl/*
@@ -92,19 +91,19 @@ hw/ip/otbn/data/otbn.hjson
9291
hw/ip/entropy_src/data/entropy_src.hjson
9392
hw/ip/aes/data/aes.hjson
9493
hw/ip/i2c/data/i2c.hjson
95-
hw/ip/otp_ctrl/data/otp_ctrl.hjson
96-
hw/ip/otp_ctrl/data/otp_ctrl_img_rma.hjson
97-
hw/ip/otp_ctrl/data/otp_ctrl_img_dev.hjson
98-
hw/ip/otp_ctrl/data/otp_ctrl_img_test_locked0.hjson
99-
hw/ip/otp_ctrl/data/otp_ctrl_img_test_locked1.hjson
100-
hw/ip/otp_ctrl/data/otp_ctrl_img_test_unlocked0.hjson
101-
hw/ip/otp_ctrl/data/otp_ctrl_img_creator_sw_cfg.hjson
102-
hw/ip/otp_ctrl/data/otp_ctrl_img_hw_cfg.hjson
103-
hw/ip/otp_ctrl/data/otp_ctrl_img_raw.hjson
104-
hw/ip/otp_ctrl/data/otp_ctrl_mmap.hjson
105-
hw/ip/otp_ctrl/data/otp_ctrl_img_test_unlocked1.hjson
106-
hw/ip/otp_ctrl/data/otp_ctrl_img_prod.hjson
107-
hw/ip/otp_ctrl/data/otp_ctrl_img_test_unlocked2.hjson
94+
hw/top_earlgrey/data/otp/otp_ctrl.hjson
95+
hw/top_earlgrey/data/otp/otp_ctrl_img_rma.hjson
96+
hw/top_earlgrey/data/otp/otp_ctrl_img_dev.hjson
97+
hw/top_earlgrey/data/otp/otp_ctrl_img_test_locked0.hjson
98+
hw/top_earlgrey/data/otp/otp_ctrl_img_test_locked1.hjson
99+
hw/top_earlgrey/data/otp/otp_ctrl_img_test_unlocked0.hjson
100+
hw/top_earlgrey/data/otp/otp_ctrl_img_creator_sw_cfg.hjson
101+
hw/top_earlgrey/data/otp/otp_ctrl_img_hw_cfg.hjson
102+
hw/top_earlgrey/data/otp/otp_ctrl_img_raw.hjson
103+
hw/top_earlgrey/data/otp/otp_ctrl_mmap.hjson
104+
hw/top_earlgrey/data/otp/otp_ctrl_img_test_unlocked1.hjson
105+
hw/top_earlgrey/data/otp/otp_ctrl_img_prod.hjson
106+
hw/top_earlgrey/data/otp/otp_ctrl_img_test_unlocked2.hjson
108107
hw/ip/rv_core_ibex/data/rv_core_ibex.hjson
109108
hw/ip/pwm/data/pwm.hjson
110109
hw/ip/aon_timer/data/aon_timer.hjson

SUMMARY.md

+19-10
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,15 @@
4848
- [Interface and Registers](./hw/top_earlgrey/ip_autogen/rv_plic/data/rv_plic.hjson)
4949
- [Device Interface Functions](./sw/device/lib/dif/dif_rv_plic.h)
5050
- [Checklist](./hw/top_earlgrey/ip_autogen/rv_plic/doc/checklist.md)
51+
- [OTP Controller](./hw/top_earlgrey/ip_autogen/otp_ctrl/README.md)
52+
- [Theory of Operation](./hw/top_earlgrey/ip_autogen/otp_ctrl/doc/theory_of_operation.md)
53+
- [Design Verification](./hw/top_earlgrey/ip_autogen/otp_ctrl/dv/README.md)
54+
- [Testplan](./hw/top_earlgrey/ip_autogen/otp_ctrl/data/otp_ctrl_testplan.hjson)
55+
- [Programmer's Guide](./hw/top_earlgrey/ip_autogen/otp_ctrl/doc/programmers_guide.md)
56+
- [Hardware Interfaces](./hw/top_earlgrey/ip_autogen/otp_ctrl/doc/interfaces.md)
57+
- [Registers](./hw/top_earlgrey/ip_autogen/otp_ctrl/doc/registers.md)
58+
- [Device Interface Functions](./sw/device/lib/dif/dif_otp_ctrl.h)
59+
- [Checklist](./hw/top_earlgrey/ip_autogen/otp_ctrl/doc/checklist.md)
5160
- [Sensor Control](./hw/top_earlgrey/ip/sensor_ctrl/README.md)
5261
- [Theory of Operation](./hw/top_earlgrey/ip/sensor_ctrl/doc/theory_of_operation.md)
5362
- [Programmer's Guide](./hw/top_earlgrey/ip/sensor_ctrl/doc/programmers_guide.md)
@@ -63,6 +72,15 @@
6372

6473
- [Top Darjeeling](./hw/top_darjeeling/README.md)
6574
- [Datasheet](./hw/top_darjeeling/doc/datasheet.md)
75+
- [OTP Controller](./hw/top_darjeeling/ip_autogen/otp_ctrl/README.md)
76+
- [Theory of Operation](./hw/top_darjeeling/ip_autogen/otp_ctrl/doc/theory_of_operation.md)
77+
- [Design Verification](./hw/top_darjeeling/ip_autogen/otp_ctrl/dv/README.md)
78+
- [Testplan](./hw/top_darjeeling/ip_autogen/otp_ctrl/data/otp_ctrl_testplan.hjson)
79+
- [Programmer's Guide](./hw/top_darjeeling/ip_autogen/otp_ctrl/doc/programmers_guide.md)
80+
- [Hardware Interfaces](./hw/top_darjeeling/ip_autogen/otp_ctrl/doc/interfaces.md)
81+
- [Registers](./hw/top_darjeeling/ip_autogen/otp_ctrl/doc/registers.md)
82+
- [Device Interface Functions](./sw/device/lib/dif/dif_otp_ctrl.h)
83+
- [Checklist](./hw/top_darjeeling/ip_autogen/otp_ctrl/doc/checklist.md)
6684

6785
- [Cores](./hw/doc/cores.md)
6886
- [Ibex RISC-V Core Wrapper](./hw/ip/rv_core_ibex/README.md)
@@ -229,15 +247,6 @@
229247
- [Registers](./hw/ip/lc_ctrl/doc/registers.md)
230248
- [Device Interface Functions](./sw/device/lib/dif/dif_lc_ctrl.h)
231249
- [Checklist](./hw/ip/lc_ctrl/doc/checklist.md)
232-
- [OTP Controller](./hw/ip/otp_ctrl/README.md)
233-
- [Theory of Operation](./hw/ip/otp_ctrl/doc/theory_of_operation.md)
234-
- [Design Verification](./hw/ip/otp_ctrl/dv/README.md)
235-
- [Testplan](./hw/ip/otp_ctrl/data/otp_ctrl_testplan.hjson)
236-
- [Programmer's Guide](./hw/ip/otp_ctrl/doc/programmers_guide.md)
237-
- [Hardware Interfaces](./hw/ip/otp_ctrl/doc/interfaces.md)
238-
- [Registers](./hw/ip/otp_ctrl/doc/registers.md)
239-
- [Device Interface Functions](./sw/device/lib/dif/dif_otp_ctrl.h)
240-
- [Checklist](./hw/ip/otp_ctrl/doc/checklist.md)
241250
- [Pattern Generator](./hw/ip/pattgen/README.md)
242251
- [Theory of Operation](./hw/ip/pattgen/doc/theory_of_operation.md)
243252
- [Design Verification](./hw/ip/pattgen/dv/README.md)
@@ -420,7 +429,7 @@
420429
- [Device Software](./sw/device/README.md)
421430
- [Build & Test Rules](./rules/opentitan/README.md)
422431
- [FPGA Bitstreams](./hw/bitstream/README.md)
423-
- [OTP Build and Test Infrastructure](./hw/ip/otp_ctrl/data/README.md)
432+
- [OTP Preload Image Generator](./util/design/README.md#otp_preload_image_generator)
424433
- [Device Libraries](./sw/device/lib/README.md)
425434
- [DIF Library](./sw/device/lib/dif/README.md)
426435
- [ADC Checklist](sw/device/lib/dif/dif_adc_ctrl.md)

ci/scripts/check-generated.sh

-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ fi
6767
destructive_cleanup
6868

6969
gen_hw_and_check_clean "Register headers" regs || bad=1
70-
gen_hw_and_check_clean "OTP memory map" otp-mmap || bad=1
7170
gen_hw_and_check_clean "LC state" lc-state-enc || bad=1
7271

7372
# This runs both top and cmdgen targets together since for ipgen

ci/scripts/run-english-breakfast-verilator-tests.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ set -e
2121
./bazelisk.sh build \
2222
--copt=-DOT_IS_ENGLISH_BREAKFAST_REDUCED_SUPPORT_FOR_INTERNAL_USE_ONLY_ \
2323
--features=-rv32_bitmanip \
24-
//sw/host/opentitantool //hw/ip/otp_ctrl/data:img_rma
24+
//sw/host/opentitantool //hw/top_earlgrey/data/otp:img_rma
2525

2626
# Run the one test.
2727
# This needs to be run outside the bazel sandbox, so we do not use `bazel run`

doc/getting_started/setup_fpga.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ Specifically, you can build the [`//hw/bitstream/universal:splice`](https://gith
6969
For example, to splice a CW310 bitstream with the mask ROM image and a specific OTP image, you can run
7070
```sh
7171
bazel build \
72-
--//hw/bitstream/universal:otp=//hw/ip/otp_ctrl/data:img_dev \
72+
--//hw/bitstream/universal:otp=//hw/top_earlgrey/data/otp:img_dev \
7373
--//hw/bitstream/universal:env=//hw/top_earlgrey:fpga_cw310_rom_with_fake_keys \
7474
//hw/bitstream/universal:splice
7575
```

doc/getting_started/setup_verilator.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@ bazel test --test_tag_filters=verilator --test_output=streamed //sw/device/tests
7474

7575
You should expect to see something like:
7676
```console
77-
Invoking: sw/host/opentitantool/opentitantool --rcfile= --logging=info --interface=verilator --verilator-bin=hw/build.verilator_real/sim-verilator/Vchip_sim_tb --verilator-rom=sw/device/lib/testing/test_rom/test_rom_sim_verilator.scr.39.vmem --verilator-flash=sw/device/tests/uart_smoketest_prog_sim_verilator.64.scr.vmem --verilator-otp=hw/ip/otp_ctrl/data/img_rma.vmem console --exit-failure=(FAIL|FAULT).*\n --exit-success=PASS.*\n --timeout=3600s
78-
[2022-06-09T08:08:16Z INFO opentitanlib::transport::verilator::subprocess] Spawning verilator: "hw/build.verilator_real/sim-verilator/Vchip_sim_tb" ["--meminit=rom,sw/device/lib/testing/test_rom/test_rom_sim_verilator.scr.39.vmem", "--meminit=flash,sw/device/tests/uart_smoketest_prog_sim_verilator.64.scr.vmem", "--meminit=otp,hw/ip/otp_ctrl/data/img_rma.vmem"]
77+
Invoking: sw/host/opentitantool/opentitantool --rcfile= --logging=info --interface=verilator --verilator-bin=hw/build.verilator_real/sim-verilator/Vchip_sim_tb --verilator-rom=sw/device/lib/testing/test_rom/test_rom_sim_verilator.scr.39.vmem --verilator-flash=sw/device/tests/uart_smoketest_prog_sim_verilator.64.scr.vmem --verilator-otp=hw/top_earlgrey/data/otp/img_rma.vmem console --exit-failure=(FAIL|FAULT).*\n --exit-success=PASS.*\n --timeout=3600s
78+
[2022-06-09T08:08:16Z INFO opentitanlib::transport::verilator::subprocess] Spawning verilator: "hw/build.verilator_real/sim-verilator/Vchip_sim_tb" ["--meminit=rom,sw/device/lib/testing/test_rom/test_rom_sim_verilator.scr.39.vmem", "--meminit=flash,sw/device/tests/uart_smoketest_prog_sim_verilator.64.scr.vmem", "--meminit=otp,hw/top_earlgrey/data/otp/img_rma.vmem"]
7979
[2022-06-09T08:08:16Z INFO opentitanlib::transport::verilator::stdout] Simulation of OpenTitan Earl Grey
8080
[2022-06-09T08:08:16Z INFO opentitanlib::transport::verilator::stdout] =================================
8181
[2022-06-09T08:08:16Z INFO opentitanlib::transport::verilator::stdout]

doc/security/specs/secure_boot/README.md

-1
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,6 @@ However, these are the requirements that the manifest format is required to supp
200200
[key-manager]: ../../../../hw/ip/keymgr/README.md
201201
[manifest-format]: ../../../../sw/device/silicon_creator/rom_ext/doc/manifest.md
202202
[rom-epmp]: ../../../../sw/device/silicon_creator/rom/doc/memory_protection.md
203-
[otp-mmap]: ../../../../hw/ip/otp_ctrl/README.md#direct-access-memory-map
204203
[ot-flash]: #
205204
[ot-unlock-flow]: #
206205
[ownership-transfer]: ../ownership_transfer/README.md

hw/bitstream/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ opentitan_test(
3535
name = "individualize_sw_cfg_functest",
3636
srcs = ["individualize_sw_cfg_functest.c"],
3737
fpga = fpga_params(
38-
otp = "//hw/ip/otp_ctrl/data/earlgrey_skus/sival:otp_img_test_unlocked0_manuf_initialized",
38+
otp = "//hw/top_earlgrey/data/otp/sival_skus:otp_img_test_unlocked0_manuf_initialized",
3939
tags = ["manuf"],
4040
),
4141
exec_env = {
@@ -98,4 +98,4 @@ opentitan_test(
9898

9999
## Read More
100100

101-
* [OTP Build and Test Infrastructure](../ip/otp_ctrl/data/README.md)
101+
* [OTP Preload Image Generator](../../util/design/README.md#otp_preload_image_generator)

hw/bitstream/vivado/BUILD

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ _CW310_TESTROM = "//sw/device/lib/testing/test_rom:test_rom_fpga_cw310_scr_vmem"
2424

2525
_CW340_TESTROM = _CW310_TESTROM
2626

27-
_OTP_RMA = "//hw/ip/otp_ctrl/data:img_rma"
27+
_OTP_RMA = "//hw/top_earlgrey/data/otp:img_rma"
2828

2929
_CW310_TESTROM_PATH = "{}/$(location {})".format(_PREFIX, _CW310_TESTROM)
3030

hw/dv/sv/mem_bkdr_util/mem_bkdr_util.core

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ filesets:
1515
- lowrisc:prim:cipher_pkg:0.1
1616
- lowrisc:prim:secded:0.1
1717
- lowrisc:ip:otp_ctrl_pkg:1.0
18+
- lowrisc:ip_interfaces:otp_ctrl_top_specific_pkg
1819
- lowrisc:ip_interfaces:flash_ctrl_pkg
1920
- lowrisc:dv:digestpp_dpi
2021
- lowrisc:ip:kmac_pkg

hw/dv/sv/mem_bkdr_util/mem_bkdr_util_pkg.sv

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package mem_bkdr_util_pkg;
88
import dv_utils_pkg::uint32_t, dv_utils_pkg::addr_range_t;
99
import lc_ctrl_state_pkg::*;
1010
import otp_ctrl_part_pkg::*;
11+
import otp_ctrl_top_specific_pkg::*;
1112
import otp_ctrl_reg_pkg::*;
1213
import otp_scrambler_pkg::*;
1314
import prim_secded_pkg::*;

hw/dv/sv/mem_bkdr_util/otp_scrambler_pkg.sv

-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
package otp_scrambler_pkg;
1010

1111
import uvm_pkg::*;
12-
import otp_ctrl_reg_pkg::*;
1312
import otp_ctrl_part_pkg::*;
1413
import bus_params_pkg::*;
1514

hw/dv/tools/dvsim/sim.mk

+5-5
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,13 @@ ifneq (${sw_images},)
101101
echo "Building SW image \"$${bazel_label}\"."; \
102102
bazel_airgapped_opts=""; \
103103
bazel_opts="${sw_build_opts} --define DISABLE_VERILATOR_BUILD=true"; \
104-
bazel_opts+=" --//hw/ip/otp_ctrl/data:img_seed=${seed}"; \
104+
bazel_opts+=" --//util/design/data:img_seed=${seed}"; \
105105
if [[ "${build_seed}" != "None" ]]; then \
106-
bazel_opts+=" --//hw/ip/otp_ctrl/data:lc_seed=${build_seed}"; \
107-
bazel_opts+=" --//hw/ip/otp_ctrl/data:otp_seed=${build_seed}"; \
106+
bazel_opts+=" --//util/design/data:lc_seed=${build_seed}"; \
107+
bazel_opts+=" --//util/design/data:otp_seed=${build_seed}"; \
108108
fi; \
109109
if [[ -n $${BAZEL_OTP_DATA_PERM_FLAG} ]]; then \
110-
bazel_opts+=" --//hw/ip/otp_ctrl/data:data_perm=$${BAZEL_OTP_DATA_PERM_FLAG}"; \
110+
bazel_opts+=" --//util/design/data:data_perm=$${BAZEL_OTP_DATA_PERM_FLAG}"; \
111111
fi; \
112112
if [[ $${OT_AIRGAPPED} != true ]]; then \
113113
echo "Building \"$${bazel_label}\" on network connected machine."; \
@@ -165,7 +165,7 @@ ifneq (${sw_images},)
165165
`# Bazel 6 cquery outputs repository targets in canonical format (@//blabla) whereas bazel 5 does not, ` \
166166
`# so we use a custom starlark printer to remove in leading @ when needed.` \
167167
--starlark:expr='str(target.label)[1:] if str(target.label).startswith("@//") else target.label'); do \
168-
if [[ $$dep == //hw/ip/otp_ctrl/data* ]] || \
168+
if [[ $$dep == //hw/top_*/ip_autogen/otp_ctrl/data* ]] || \
169169
([[ $$dep != //hw* ]] && [[ $$dep != //util* ]] && [[ $$dep != //sw/host* ]]); then \
170170
for artifact in $$($${bazel_cmd} cquery $${bazel_airgapped_opts} $${dep} \
171171
--ui_event_filters=-info \

hw/ip/BUILD

-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ filegroup(
2020
"//hw/ip/kmac:all_files",
2121
"//hw/ip/lc_ctrl:all_files",
2222
"//hw/ip/otbn:all_files",
23-
"//hw/ip/otp_ctrl:all_files",
2423
"//hw/ip/pattgen:all_files",
2524
"//hw/ip/prim:all_files",
2625
"//hw/ip/prim_generic:all_files",

hw/ip/README.md

-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
| [`lc_ctrl`] | Manages device life cycle states and transitions, and controls key manager, flash, OTP, and debug access |
2222
| [`mbx`] | DOE mailbox for use as an integrated OpenTitan communication channel. |
2323
| [`otbn`] | Programmable coprocessor for asymmetric cryptography with SCA and FI countermeasures |
24-
| [`otp_ctrl`] | Interfaces integrated one-time programmable memory, supports scrambling, integrity and secure wipe |
2524
| [`pattgen`] | Transmission of short time-dependent data patterns on two clock-parallel output channels |
2625
| [`pwm`] | Transmission of pulse-width modulated output signals with adjustable duty cycle |
2726
| [`rom_ctrl`] | Interfaces scrambled boot ROM with system bus and KMAC for initial health check after reset |
@@ -56,7 +55,6 @@
5655
[`lc_ctrl`]: ./lc_ctrl/README.md
5756
[`mbx`]: ./mbx/README.md
5857
[`otbn`]: ./otbn/README.md
59-
[`otp_ctrl`]: ./otp_ctrl/README.md
6058
[`pattgen`]: ./pattgen/README.md
6159
[`pwm`]: ./pwm/README.md
6260
[`rom_ctrl`]: ./rom_ctrl/README.md

hw/ip/lc_ctrl/doc/interfaces.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ See also [power manager documentation](../../../top_earlgrey/ip_autogen/pwrmgr/R
153153

154154
#### OTP Interfaces
155155

156-
All interfaces to and from OTP are explained in detail in the [OTP Specification Document](../../otp_ctrl/README.md#life-cycle-interfaces).
156+
All interfaces to and from OTP are explained in detail in the OTP Specification Document (for example, see [earlgrey's OTP specification](../../../top_earlgrey/ip_autogen/otp_ctrl/README.md#life-cycle-interfaces)).
157157

158158
#### KMAC Interface
159159

0 commit comments

Comments
 (0)