Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inconsistency in ROM AHB-Lite bus connectivity between Caliptra Main Specification and Integration Specification #210

Open
myviewfinder opened this issue Jul 9, 2024 · 1 comment

Comments

@myviewfinder
Copy link

myviewfinder commented Jul 9, 2024

Incomplete and discrepancy about Caliptra ROM integration requirements.

  1. Inconsistencies between:
  1. Missing ROM AHB-Lite interface in the Caliptra Main specification & [Caliptra Integration Spec's Interface section] (https://github.com/chipsalliance/caliptra-rtl/blob/main/docs/CaliptraIntegrationSpecification.md#interface).
    Or are the interface signals imem_cs/imem_addr/imem_data in Table 8: SRAM interface meant for connecting the Caliptra ROM?

  2. Search for "imem" in soc_ifc_top.sv returns zero match. Please clarify.

  3. What are imem signals intended for, if not for ROM in bullet no.2 above?

  4. What is the AHB bus in Table 5 intended for, if not for ROM in bullet no.2 above?

  5. Related to the answer in two bullets above, what are the supported address width and data width for the respective APB and imem interface to ROM or other usages?

  6. Is there any other SoC integration requirements about Caliptra ROM?

@calebofearth
Copy link
Contributor

  1. Figure 1 only depicts the SoC interface connections (these are connections to the block that is used to expose an API for the SoC to interact with). ROM is not a part of the SoC interface, so it is omitted from this diagram, although it is still connected to the RiscV.
  2. imem (Instruction Memory) is the ROM.
  3. imem is instantiated in caliptra_top.sv.
  4. imem is the ROM
  5. Table 5 shows an APB interface, not an AHB interface. This is the interface connected to the SoC, which is used by the SoC for various API flows, including Fuse programming, mailbox operation, error/status handling, TRNG requests, etc.
  6. config_defines.svh shows the address and data width configured for APB. Data width = 32 bits, Address width = 32. ROM size is hard-coded to 48KiB, and signal size must be left as configured in caliptra_top.
  7. ROM is an internal Caliptra component and must not be modified from the provided configuration. However, the memory control signals are exported from caliptra_top (as described here https://github.com/chipsalliance/caliptra-rtl/blob/main/docs/CaliptraIntegrationSpecification.md#overview-2) and it is the integrator's responsibility to instantiate the memory and connect it to the imem signals.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants