Skip to content

Repository files navigation

SoC Design Workbench

面向教学、小型 SoC 和早期架构验证的轻量级 SoC 设计工作台。当前实现覆盖工程管理、IP 线路库、总线互联、Pad Ring、封装打线和 SoC 导出;其中 Pad Ring 是首个稳定模块。

Pad Ring 可从 physical pad JSON 模板加载,也支持导入 CSV 并转换为 JSON;IP pad/net 可以来自用户 CSV,也可以在页面中通过内置 IP 线路库新增实例后自动生成。

运行

TypeScript 迁移版:

npm install
npm run build
npm start

开发时也可以使用:

npm run dev

打开:

http://127.0.0.1:8765

静态检查和测试:

npm run typecheck
npm test

本地安装包

生成当前平台的本地安装包:

npm run package:local

产物会写入 release/

release/soc-design-workbench-<version>/
release/soc-design-workbench-<version>-local-<platform>-<arch>.tar.gz

解压后可以直接运行:

./start.sh

也可以安装到当前用户目录:

./install.sh
soc-design-workbench

安装脚本会把工具复制到 ~/.local/share/soc-design-workbench,并创建 ~/.local/bin/soc-design-workbench 启动命令。安装包包含构建后的前端、服务端、模板、初始运行数据和生产依赖;仍要求本机已安装 Node.js 20 或更新版本。

数据

  • 默认工程原始输入:优先使用工作区上级目录的 freighter(1).csv,本地安装包中使用 data/source.csv
  • 默认工程待映射 IP pad 列表:data/asic_top_pad_usage.csv
  • 默认工程保存状态:data/pad_ring_current.json
  • 新建工程目录:projects/<project-name>/
  • RTL 下载缓存:data/cache/(不纳入版本控制和安装包)

工具不会覆盖原始 CSV。原始 CSV 按 GB18030 编码读取,输出 CSV 也使用 GB18030,便于继续用表格软件查看中文字段。

工程

顶部工程下拉框用于打开已有工程。default 工程兼容旧版固定数据目录,继续读写 data/

点击 New 可新建工程。工程名称只能包含字母、数字、点、短横线和下划线。新工程按封装引脚数量复制 templates/pad-ring/ 下的 JSON 模板为 source.json;如果用户显式填写 physical pad CSV,后端会将其转换为 source.json。用户未提交 IP pad usage CSV 时,新工程初始不包含任何 IP,创建后可在左侧待映射 IP Pad 窗口点击 新增 IP,从内置 IP 线路库添加 IP 实例。

新工程的文件结构:

projects/<project-name>/
  source.json                   # JSON 格式的初始 physical pad 数据
  asic_top_pad_usage.csv        # 可选;仅用户提交 IP CSV 时存在
  pad_ring_current.json         # pad、IP pad、映射及颜色等完整工程状态

功能

  • 按 physical pad CSV 中的中心坐标和尺寸绘制物理 pad ring。
  • 顶部可切换到“总线互联”视图,查看每个 IP 的总线接口、前置连接需求和对外提供能力。
  • 总线互联支持创建 APB、AHB、AXI、Wishbone 网络,将 IP 接口接入或断开网络,并检查协议、版本、profile、地址位宽和数据位宽兼容性。
  • 工程级总线网络与接口连接保存在 pad_ring_current.jsonbusTopology 中;删除 IP 或网络时会同步清理连接。
  • 顶部可切换到“封装打线”视图;封装类型、引脚数、封装体尺寸和 pitch 统一从 templates/packages/*.json 外形库加载,不在界面中硬编码。
  • 封装打线支持先选芯片 Pad 再点封装 Pin,也支持拖拽绑定;同网络的多个 Pad 可合并连接到同一个封装 Pin,异网络会被拒绝,可点击连线或 Pin 列表解绑。
  • 封装规格和 package pin -> physical pad 绑定关系随工程一起保存到 pad_ring_current.json
  • 封装打线画布使用统一毫米物理坐标:Pad CSV 坐标按微米读取并转换为毫米,封装本体、引脚外廓、Pitch、引脚宽度及 Pad 尺寸均保持真实比例。
  • 左侧按 IP 实例显示两级树:第一级 IP 实例,第二级 signal/net。
  • 点击 新增 IP 打开 IP 线路库选择器,从内置 UART、SPI、I2C、GPIO、Timer 等线路库 IP 生成待映射 IP pad/net。
  • 支持按 IP 实例删除,并自动解绑该实例已绑定的物理 pad。
  • 支持拖拽左侧 net 到图中的物理 pad 完成绑定。
  • 支持先选择物理 pad,再点击左侧 net 完成绑定。
  • 支持解绑已绑定的物理 pad。
  • 支持为已绑定的 net 设置自定义颜色;颜色跟随 net,不跟随物理 pad 位点。页面提供按 Blue、Green、Orange、Red、Purple、Gray 分列的常用色板,也保留原生颜色选择器。
  • 按类型区分 signal、power、ground、no-connect;已绑定 pad 会加深描边。
  • 鼠标悬浮到 pad 上会显示绑定 IP、net、方向、pad cell、pin、备注和颜色;pad 会有轻微放大、高亮和阴影动画。
  • pad 旁边显示当前 net 名称,默认低透明度;悬浮到对应 pad 时高亮该 net 名称。
  • 点击图中的 pad 或右侧列表选择 pad。
  • 编辑物理 pad 的 Pin Number标识备注
  • 保存为 JSON、物理 pad CSV、绑定关系 CSV,供后续脚本或后端 pad ring 流程使用。绑定关系 CSV 包含 net_name,pad_number,color

About

A lightweight workbench for SoC assembly, IP integration, bus interconnect, package bonding, and pad ring design.

Topics

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages