gen-memwrap

SkillFiles & storage

Generates unified memory wrap RTL from Excel, with lib/lef for sky130 OpenRAM / nangate45 FakeRAM.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the gen-memwrap skill

What this skill tells your AI

The instructions your AI receives, as published by siliconpeasant/vibe_soc in .agents/skills/gen-memwrap/SKILL.md and read by ahel’s review.

Excel 存储器表 → 统一 SoC 端口 wrap + 开源宏 .lib/.lef(catalog 匹配或在线生成)。

后端来源交付
sky130ORFS sky130ram OpenRAM 预置宏 / 在线 OpenRAM.v .lib .lef(+gds 在源树)
nangate45ORFS FakeRAM / bsg_fakeram / builtin.lib .lef + 行为 .v

MCP

gen_memwrap(excel_file, sheet_name, output_dir, platform="auto", relaxed=false, generate=true)
gen_memwrap_status()

CLI

python3 .agents/skills/gen-memwrap/scripts/gen_memwrap.py \
  <mem.xlsx> <sheet_name> <output_dir> [sky130|nangate45|auto] \
  [--generate|--no-generate] [--relaxed]

python3 .agents/skills/gen-memwrap/scripts/gen_memwrap.py --status

环境变量:

变量用途
ORFS_PLATFORMScatalog 预置宏根(ORFS flow/platforms
SILICON_CREW_ORFS_DIR / OPENROAD_FLOW_HOME若未设 ORFS_PLATFORMS,回退 $VAR/platforms
OPENRAM_HOMEOpenRAM compiler 目录
OPENRAM_TECHOpenRAM technology 目录
OPENRAM_COMPILERsram_compiler.py 入口
OPENRAM_PYTHON推荐 conda-env 中的 python
PDK_ROOTsky130A / skywater-pdk 根
BSG_FAKERAM / FAKERAM_HOMEnangate45 在线 bsg_fakeram(可选)

一键加载(本机已装):

# bash
source "$OPENRAM_ROOT/env.sh"   # set OPENRAM_ROOT to your OpenRAM install
# 或
source scripts/openram_env.sh

# csh
source "$OPENRAM_ROOT/env.csh"

在线生成新 size

generate=true(默认)时,catalog 精确 depth×width 未命中会:

platform顺序
sky130OpenRAM 写 config → 出 .v/.lib/.lefoutput_dir/generated/sky130/...
nangate45优先 bsg_fakeram;失败或未安装 → builtin FakeRAM(黑盒 .lib/.lef + 行为 .v

预置 catalog 命中时不调用 generator。--no-generate 则仅 catalog(可加 --relaxed 就近)。

Excel 列

必填说明
TYPEspram / tpram / tpram(asynchronous) / sfifo / asfifo / rom
NumberOfWordsdepth
BitsInWordwidth
PLATFORMsky130 | nangate45(缺省用 CLI platform / sky130)
PORTS1rw / 1rw1r
BitWordWriteON/OFF(默认 ON)
WriteSizemask 粒度(sky130 默认 8)
Namewrap 逻辑名
ExactMacro强制 catalog 宏名

sheet_name子串匹配(sheet 名包含即处理)。

输出

<output_dir>/
  rtl/           # *_wrap.v + 复制/生成的底层 .v
  lib/           # 复制的 .lib
  lef/           # 复制的 .lef
  beh/           # FakeRAM 行为模型(如有)
  generated/     # 在线生成的宏
  report/        # selection.csv / selection.json
  filelist.f

统一 wrap 端口(摘要)

SPRAMclk, me, we, addr, din, [wem,] dout TPRAMclk|clka/clkb, ena, wea, addra, dina, [wem,] douta, enb, addrb, doutb SFIFO / ASFIFO:自带指针逻辑,内部例化 spram/tpram wrap

Catalog

  • references/catalog_sky130.json

  • references/catalog_nangate45.json

  • Demo:references/memwrap_demo.xlsx

  • catalog 命中:直接 copy 预置宏

  • catalog 未命中 + generate:OpenRAM / bsg_fakeram / builtin

  • nangate45 无双口宏:tpram/asfifo 仍走行为模型

依赖

  • pandas(+ Excel 引擎 openpyxl
  • ORFS platforms 路径(预置 catalog)
  • 可选:OpenRAM(sky130 新 size)、bsg_fakeram(n45 外部生成)

范围

仅支持下列工艺后端:

platform含义
sky130SkyWater 130nm + OpenRAM
nangate45FreePDK45 + FakeRAM / builtin 黑盒

交付物为统一 wrap RTL + .lib / .lef(及行为 .v)。

Signals

GitHub stars
38
Forks
18
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
gen-memwrap
Source
github.com/siliconpeasant/vibe_soc