NUCLEI CPU PMA CONFIG GENERATOR

v1.2.5

SETTINGS

(32-48)

REGIONS

#ATTRBASEMODEEND / SIZE
CONFIG OUTPUT


          
DEVICES
NAMESTARTMODEVALUE

ADDRESS MAP

DEV CA NC CA (Default)
Priority: NC > CA > DEV

VALIDATION

IMPORT / EXPORT CONFIG

LOCKED
Drop a .config file here, or paste the config text above

PARSE RESULT

--

1. 概述

本工具用于生成和编辑 Nuclei CPU IP 的 PMA(Physical Memory Attribute) 区域配置。

Generate and edit PMA (Physical Memory Attribute) region configuration for Nuclei platforms.

2. 生成模式

  • PA SIZE: 总线接口物理地址位宽,取值 32 – 48,决定地址位宽。
  • PREFIX: 配置宏前缀,如 N600,生成 CONFIG_<PREFIX>_CFG_...。
  • 区域表: 每行配置一个区域,包含区域编号、属性、基地址、结束地址或大小。
  • 区域属性: 未配置的区域默认是 Cacheable 属性,可选属性如下:
    • Cacheable (CA): 对该区域的访问允许缓存,读写优先命中本地缓存。
    • Non-Cacheable (NC): 对该区域的访问禁止缓存,每次读写直达主存。
    • Device (DEV): 对该区域的访问禁止缓存、预取和乱序,严格按序直达外设。
  • 基地址: 区域的起始地址,地址位宽需要等于 PA SIZE。
  • 结束地址: 区域的结束地址,默认 [BASE, END),地址位宽需要等于 PA SIZE。
  • 区域大小: 区域的大小,支持十六进制表示 (0x1000),或填数字并从 KB/MB/GB 下拉框选择单位 (PA SIZE >= 40 时增加 TB)。
  • 每种属性最多 8 块,添加时自动轮换选择未满的属性。
  • 添加区域时,支持 `基地址+结束地址` 和 `基地址+区域大小` 两种模式。
  • 区域大小最小配置为 4KB。
  • 配置区域基地址和大小时需要满足 (Base & (Size - 1) == 0)。
  • 设备行: 区域表下方,通过设备下拉框添加 (IREGION/CPPI/PPI/VLM/DLM/ILM/FLASH),点击 x 删除。与区域一致支持两种模式:起始+结束 或 起始+大小(如 128MB);大小模式从下拉框选择单位。设备必须位于同一种属性的内存中 (未配置空间视为 Cacheable),可跨同属性多个块。导入的设备行按 IREGION、ILM、DLM、PPI、FLASH、VLM、CPPI 顺序排列,手动新增的设备追加到最下方。
  • 设备类型: 配置设备的基地址和大小后,会在生成的配置文件中输出对应的设备行,支持以下设备:
    • IREGION: Core 私有外设地址空间,例如 DEBUG、ECLIC、TIMER 等。
    • CPPI: 集群私有外设接口,各 Core 经其访问集群级私有外设。
    • PPI: 私有外设接口,单个 Core 经其直接访问外设。
    • DLM: 数据本地存储器,核私有紧耦合数据 SRAM,低延迟读写。
    • ILM: 指令本地存储器,核私有紧耦合指令 SRAM,低延迟访问。
    • VLM: 向量本地存储器端口,向量 LSU 经专用通路直接访问。
    • FLASH: 片外 Flash 区域,经专用 Flash 总线接口访问非易失存储。
  • 设备注意事项:
    • IREGION 必须被配置。
    • IREGION 不输出 ADDR_WIDTH 行,只输出基地址,其大小由是否配置 MMU 决定:配置 MMU 时为 128MB,未配置 MMU 时为 4MB。导入时按文件中的 HAS_MMU 宏判断,文件中未给出时按默认的 128MB。
    • IREGION 只支持 SIZE 模式。
    • CPPI 和 PPI 配置后视为独立的 Device 区域。
    • VLM 和 FLASH 禁止配置在 DEV 区域。
    • DLM 和 ILM 不建议配置在 DEV 区域。

PA SIZE 32-48; PREFIX e.g. N600. Each row is a region: ATTR, BASE, and END (exclusive [BASE,END)) or SIZE (hex or 32KB/1MB). Attributes: Cacheable (CA, cached access), Non-Cacheable (NC, direct main-memory access), Device (DEV, no cache/prefetch/reorder, in-order peripheral access); unconfigured space defaults to Cacheable. Device rows (IREGION/CPPI/PPI/VLM/DLM/ILM/FLASH) emit the matching device lines in the generated config; CPPI/PPI become standalone Device regions, VLM/FLASH are forbidden inside a DEV region and DLM/ILM are not recommended there. Max 8 blocks per attribute; add button rotates to the next free attribute.

3. Mask 规则

统一使用高位 MASK (0xFF000000)。

MASK 位宽需要符合 PA SIZE。

MASK 规则: (Addr & Mask) == Base。

对于导入的配置,自动将输出 MASK 格式转换为高位 MASK。

Always output 1s-leading mask (high bits 1), e.g. 'hF0000000 for 256MB. Low-mask input ('h0FFFFFFF) is auto-converted on import.

4. 地址映射

  • 正确配置的区域将显示在右侧的地址映射面板内。
  • 区域显示 区域编号、基地址、结束地址 [BASE,END]。
  • 未配置的区域默认属性为 Cacheable。
颜色含义
Device
Cacheable
Non-Cacheable
Cacheable (Default)

Vertical bar: 0x0 at bottom, address-space end at top. Block height proportional to size with a readable minimum. Light blue background = CACHEABLE (Default).

5. 修复方案

区域配置不满足对齐要求时,底部校验面板提供修复方案:

  • 包裹: 使用更大的区域包裹当前不满足对齐要求的配置。
  • 拆分: 拆分成多个满足对齐要求的小块。
  • 应用: 应用选择的方案,默认包裹方案。

WRAP (default): enclose in a larger power-of-two block. SPLIT: break into power-of-two blocks (red warning if >8). APPLY writes the fix into the region table.

6. 导入配置

导入区域配置文件,以便检查区域配置的正确性和修改区域配置。

导入区域配置之后,可以在生成页面修改区域配置。

导入配置页面支持两种导入方式:

  • 从代码导入: 从配置文件中复制对应的区域配置代码片段,粘贴到代码框中,工具将自动解析 PMA 相关配置,确认无误后,点击导入,导入至生成界面。
  • 从文件导入: 选择从文件导入,选择需要导入的 config 文件或者 verilog define 文件。文件内容会完整保留在代码框中,PMA 相关的配置解析后显示在解析结果面板,确认无误后,点击导入,导入至生成界面。

工具将自动解析导入文件或代码的 PMA 相关配置,并显示在解析结果面板。使用者可以在该面板查看解析出的结果是否正确。

导入生成面板时,只会导入解析正确的区域配置,将舍弃错误的配置。

代码框锁定:代码框只在空置时可编辑;载入配置或执行导入/导出后自动只读,此后只有工具可以改写,点击“清空”可重新解锁。

导出:把生成页配置同步回代码框,仅改写发生变化的宏,数值未变的宏按原文保留,因此导出前后对比只显示出实际改动。另存为:把代码框内容通过保存对话框写入本地文件,默认文件名为 .config(不带前缀)。

Import from a .config file or paste the PMA section. From code: paste the snippet and the tool parses the PMA-related lines; click IMPORT once verified. From file: pick a config file or a Verilog `define file; the tool extracts and parses the PMA-related lines into the code box; click IMPORT once verified. The PARSE RESULT panel shows every parsed block (ok/error/unused); only correct regions are imported, invalid ones are dropped.

The code box locks once a config is loaded (CLEAR unlocks it). EXPORT syncs the GENERATE page config back into the box and rewrites only the macros that changed, so the diff shows exactly what the page changed; SAVE AS writes the box to a local file (imported source name, or <PREFIX>.config).

7. 导出 CSV

通过地址映射面板右上角的 CSV 按钮,可以将区域配置导出为 CSV 文件。

regionattrbaseendsize_hexsize_human
CA_region0Cacheable0x100000000x200000000x10000000256 MB

EXPORT CSV (top-right of the address map) downloads regions sorted by base address: attr, base, end (exclusive), size_hex, size_human.