AI-Assisted Tooling Retrospective 技术分享会 · 架构团队
VHDL2DRAWIO-REFACTOR
ENGINEERING RETROSPECTIVE · 10-MIN TALK

VHDL2Drawio:
用 AI 辅助开发 VHDL 架构图生成工具

一次复杂工程任务如何从反复修改走向可验证收敛

PROJECT PROFILE AI CONTEST WINNER
CORE TOPIC
复杂代码生成如何跨越收敛困境
TARGET AUDIENCE
面向 C/C++ 嵌入式与系统工程师
PRESENTER
架构团队 · 资深技术专家
“重点不是 AI 写了多少代码,而是一个反复失控的复杂任务最后怎样工程收敛。”
01 · 业务痛点 真实场景:系统地图梳理
PROBLEM FORMULATION

接手复杂设计时,我会先梳理模块职责和信号流向

层级树回答“谁包含谁”;架构图还要回答“谁与谁怎样连接”

MENTAL MAP BUILDING THREE ESSENTIAL QUESTIONS
01 · 有哪些主要模块
明确顶层设计中的子系统划分与实体职责边界。
02 · 模块之间怎样连接
将组件实例、端口映射(Port Map)与内部信号逐项对应。
03 · 数据、控制和状态怎样流动
建立端到端的数据总线与时序控制路径直观感知。
有限类比:如同大型 C/C++ 工程,IDE 调用树能定位局部,但架构拓扑仍需工程师宏观掌握。
MANUAL DRAW.IO BASELINE HIGH EFFORT · DRIFT RISK
过去的人工现状:持续数天至数周
手工绘制图纸示例
痛点本质:手动放模块、拉连线耗费大量精力;一旦代码重构,文档迅速滞后漂移,需要重新核对。
02 · 需求定位 边界划定:不是替代 EDA 工具
BOUNDARY & POSITIONING

我的需求边界:源码级、模块级、可编辑

客观评价成熟工具的能力,补充一个从源码到可编辑连接地图的中间层视图

VIEW 01 PROJECT LEVEL
Hierarchy 视图
TerosHDL / Vivado Hierarchy
主要回答:
谁实例化了谁、依赖关系怎样组织。
适用场景:
工程文件管理与模块上下级隶属浏览。
FOCUS: 包含与依赖关系
VIEW 02 SYNTHESIS LEVEL
RTL Schematic
Vivado Elaborated / Schematic
主要回答:
展开后的 RTL 结构与门级/逻辑网表连接。
适用场景:
深度的硬件逻辑分析、电路展开与调试。
FOCUS: 门级展开与网表连线
VIEW 03 READING & EDITING
VHDL2Drawio
VS Code 原生插件工具
主要回答:
当前源码中的组件实例、端口与跨模块拓扑。
适用场景:
形成可独立浏览、可继续交付编辑的架构地图。
FOCUS: 源码抽取 + 可编辑图纸
✕ 不替代综合
✕ 不替代仿真
✕ 不替代时序分析
✕ 不推断内部语义
03 · 操作演示 产品交付:从源码到两份可用产物
LIVE WORKFLOW

在 VS Code 中选择 VHDL 文件,生成交互图和 Draw.io 图纸

单文件主动生成,双模产物输出,本地离线确定性计算

VS CODE WEBVIEW · INTERACTIVE ARCHITECTURE VIEWER ● RUNNING LOCALLY
插件操作演示动图
DELIVERY SPECIFICATION TWO ARTIFACTS
INPUT
单个 VHDL 源文件(右键菜单主动触发)
OUTPUT 01 · 交互式 HTML
支持模块选中高亮、信号名过滤、拖拽节点重新布线
OUTPUT 02 · 标称 DRAW.IO 文件
同目录写出 .drawio,可在编辑器内继续排版与补充业务批注
HONEST FAILURE REPORTING NO FALSE PROMISES
避障提示机制:遇到极限密集布线死锁时,用红色虚线明确提示避碰失败,便于人工精准接管,不假装排版完全正确。
04 · 工程本质 AI 的角色定位:造工具 vs 每次画图
DETERMINISTIC PIPELINE

运行时没有大模型;AI 参与的是工具开发

生成式 AI 协助构建确定性程序,确定性程序保障工程交付稳定性

DEVELOPMENT PHASE AI-ASSISTED ENGINEERING
开发阶段:AI 协助设计接口、生成代码、分析复杂缺陷、提供审查反例
针对复杂 AST 解析、几何包围盒计算与正交布线算法,借助多模型交叉讨论跨越实现瓶颈。
LOCAL DETERMINISTIC EXECUTION PIPELINE ZERO ONLINE DEPENDENCY · ZERO TOKENS
STEP 01
VHDL 源码
STEP 02
语法解析
STEP 03
结构拓扑
STEP 04
模块布局
STEP 05
正交布线
STEP 06
双模交付
RUNTIME PHASE STABLE & DETERMINISTIC
使用阶段:固定版本的本地程序执行,相同输入必然得到稳定可复现的输出
如果一个 Skill 最终调用了解析器和画图程序,真正保证结果的是底层工具,Skill 只是入口。
05 · 算法攻坚 核心难点:Issue #10 模块重叠缺陷
ALGORITHMIC COUPLING

一个模块重叠问题,牵动了分层、对齐、碰撞与回退逻辑

局部简单修补必然破坏已有成立条件,多物理约束耦合是算法失控根因

ISSUE #10 DEFECT VISUALIZATION sd_ctrl OVERLAPPING deci_clk
COORDINATE COLLISION DIAGRAM (18px GRID) ● OVERLAP DETECTED
inst_sd_ctrl x=736.8 (Layer 700)
inst_deci_clk COLLISION
x=764.4 (Layer 800) · 跨层漏检
精准根因证据:
x=736.8x=764.4 仅相差 27.6px,因 round(x/100)*100 边界被拆入不同 layer key,导致原有同层避碰被完全绕过!
FOUR COUPLED INVARIANTS RIGID CONSTRAINTS
01 · 层归属稳定性 (Layer Stability)
浮点 X 坐标微小扰动不能破坏拓扑分层判定。
02 · 模块安全间距 (AABB Margins)
包围盒膨胀 40px 后全局无碰撞相交,杜绝遮挡。
03 · 引脚 18px 栅格吸附 (Grid Alignment)
Y 坐标位移必须保持 18px 行高整数倍,连线不得折角畸变。
04 · 算法收敛与幂等性 (Idempotence)
设定迭代上限,相同输入多次运行结果绝对一致无抖动。
工程结论:单纯自然语言催促无法让 AI 解决耦合问题,必须改变问题组织方式。
06 · 过程复盘 多模型协同:公共记录面上的审查与收敛
ISSUE #10 ➔ PR #11

我用同一个 Issue/PR 固定问题、证据、评审和修改记录

工程师是统一上下文的锚定者与最终仲裁者

TIMELINE OF RETROSPECTIVE SAME SHARED GROUND TRUTH
09:49
建立 Issue #10
工程师固定复现文件、坐标数据与初步根因。
09:51
Gemini Flash:提出初版 AABB 修复
建议统一层分组并引入向下推开补丁。
09:56
Gemini Pro:架构审查指出风险
指出简单向下推开将导致页面级联拉长与过度设计。
10:15
Codex:纠正未证实根因,下达 5 项工程规约
排除 Net Label 误判,要求阶段坐标取证与不变量契约。
10:36
提交实现,开启 PR #11
进入严格的代码同行评审流程。
10:45
多轮阻塞式评审与 8 次提交迭代
先后捕获回退吞异常、伪测试覆盖、AST 字段错误。
15:24
满足全部验收条件,正式合并
自动化测试全绿,彻底终结重叠缺陷。
AUDIT TRAIL EVIDENCE GITHUB REVIEWS
Codex 规约截图
评审机制:实现模型倾向快速交付代码,审查模型专门寻找反例并阻断缺陷。
ISSUE 8 条讨论 PR 22 条评审 · 8 个提交
07 · 方法提炼 收敛机制:共享上下文与可执行验收
CONVERGENCE MECHANISM

真正让问题收敛的,是统一上下文和可执行验收

把“我看得出来哪里不对”,逐步变成“AI 可以据此修改、程序可以自动验证”

PILLAR 01 GROUND TRUTH
1. 共享事实
复现样例 + 当前代码 + 已有评审 + 决策记录放在公共记录面,新模型不从截断对话猜背景。
PILLAR 02 ROLES
2. 分离角色
实现模型提出方案;审查模型寻找反例与过度设计;工程师负责界定边界与最终合并取舍。
PILLAR 03 ACCEPTANCE
3. 固化验收
已知失败 ➔ 明确数学几何约束 ➔ 自动化测试套件。把经验沉淀为可反复执行的断言。
PYTHON GEOMETRIC INVARIANTS IN PYTEST ● MACHINE-VERIFIED SPECIFICATION
# 1. 模块间距约束:包围盒膨胀 40px 后全局无碰撞相交 assert block_a.aabb.expanded(40).intersects(block_b.aabb) == False # 2. 硬件引脚对齐:纵向位移必须锁定在 18px 物理栅格行高整数倍 assert (block.delta_y % PIN_GRID_18PX) == 0 # 3. 算法稳定性与幂等:受限迭代次数,相同输入多次运行结果绝对一致 assert iteration_count <= len(blocks) * 2 and run_pass1.coords == run_pass2.coords
08 · 经验总结 工程迁移:把隐性判断逐步显式化
KEY TAKEAWAY

可迁移的不是 VHDL,而是把隐性判断逐步显式化

将一次性纠偏转化为项目可长期复现与回归的工程资产

TAKEAWAY 01 · SCENARIO SELECTION KNOW THE RIGHT ANSWER
选择适合的场景
找那些自己清楚知道正确标准、但仍在反复手工完成的工作。

只有工程师自己懂标准,才能在第一时间识别 AI 的幻觉、漂移和局部破坏。
TAKEAWAY 02 · CONVERGENCE LOOP ENFORCE ACCEPTANCE
推动工程收敛
当复杂任务偏离要求时,不要只继续堆砌自然语言说明

把真实失败、Review 意见放到共享上下文中,沉淀为项目的接口规约、检查项和自动化测试。
“把‘我看得出来’,逐步变成‘AI 做得到、程序验得出’。”
备用答疑 A 工具生态定位:已有工具与 VHDL2Drawio 的关系
APPENDIX A

Vivado / TerosHDL 与 VHDL2Drawio 的用途互补

用途不同,处于设计流程的不同阶段,绝非替代关系

EDA SUITE · AMD VIVADO
Vivado Elaborated Design
- 完成 RTL Elaboration 与语法综合检查
- 提供门级 RTL Netlist、Schematic 与 Graphical Hierarchy
- 适合深度电路逻辑分析、综合实现与时序收敛
IDE EXTENSION · TEROSHDL
TerosHDL Schematic Viewer
- 提供项目层级树、依赖追踪与单文件原理图预览
- 适合快速确认当前文件的输入输出信号与电路雏形
- 输出为内置 Viewer 渲染,非独立可编辑文档
OUR TOOL · VHDL2DRAWIO
VHDL2Drawio 插件
- 直接从当前源码提取组件、端口与拓扑关系
- 生成面向阅读的高层模块连接图,支持筛选与重排
- 生成标称 .drawio 图纸,供工程师二次人工标注与文档沉淀
备用答疑 B 工程诚实性:当前已知技术边界
APPENDIX B

VHDL2Drawio 的已知能力范围与技术边界

明确已知约束,不做超出代码实现范围的功能承诺

PARSING & SCOPE LIMITS
语法解析与上下文边界
- 单文件为主:以当前 VHDL 文件为主要分析单元,文件夹命令是逐文件批量处理,非全局自动展开。

- 高级语法局限:对复杂 generate 循环、外部共享包(Packages)和跨文件实体的解析依赖有限正则与 AST,未做完整 elaboration。
ROUTING & SEMANTIC LIMITS
布局布线与语义边界
- 显式避障提示:复杂总线交错时尽量正交避碰;若寻路失败会用红色虚线醒目提示,需人工在 Draw.io 中微调。

- 无业务猜测:仅严格抽取源码物理端口与连线,不做任何高级业务功能语义推断。
备用答疑 C 运行时架构选择:为什么使用 Pyodide (WASM)
APPENDIX C

选择 WebAssembly (Pyodide) 的权衡与代价

保护历史算法资产与实现客户端零依赖分发的工程折中

KEY ADVANTAGES
核心收益与决策理由
- 资产复用:原有 Python 布局与布线引擎已完成大量算法攻坚,全量重写 TypeScript 成本高、回归风险大。

- 零依赖分发:引擎编译为 WASM 随插件 VSIX 打包,用户端无需预装 Python 3 及其依赖包,彻底消除环境摩擦。
ENGINEERING TRADEOFFS
真实工程代价与挑战
- 体积与冷启动:Pyodide 运行时与 wheel 包增加 VSIX 体积,首次加载需要数秒解压初始化(主讲演示建议用录屏保底)。

- 跨语言通信开销:Webview JS 与 Pyodide 之间的 RPC 调用需要严格的数据结构序列化支持。
备用答疑 D 方法学探讨:为什么不直接让大模型每次画图
APPENDIX D

从一次性玩具到工业级确定性工具的鸿沟

Skill 可以是好的交互入口,但无法替代确定性程序的数据契约

ONE-OFF AI SKETCH
单次 Prompt / Skill 直出
- 适合小规模探索:对几十行简单的玩具代码,生成式 AI 确实能快速绘制不错的概念示意图。

- 无法工程收敛:面对中大型工程,每次调用产生随机漂移;无法稳定保持硬件 18px 引脚对齐;无法保证两次生成结果一致;持续产生 Token 账单与网络依赖。
DETERMINISTIC TOOLING
确定性本地程序
- 契约与回归防护:语法解析器建立确定性数据事实,布局布线引擎受不变量严密约束。

- 真理在工具本身:当一个 Skill 开始调用解析器、几何分析器和绘图脚本时,真正保证质量的已经是这些确定性程序,AI 在幕后完成了工具的研发。

全局幻灯片概览

按 ESC 或点击卡片快速跳转
● 主线演讲故事 (9 分 30 秒严格控时)
● 备用答疑附录 (Appendix A~D 仅提问时使用)