AI辅助的建模设计工程实践

AI 辅助的建模设计工程实践

AI 已经能够承担大量代码实现工作。在建模开发中,它的作用还包括生成模型、编写激励,以及支持架构方案的反复调整。工程师需要处理的问题,也随之扩展到如何表达设计、组织任务,以及判断模型的结果。

这篇文章围绕 AI 辅助建模设计中的几个问题展开:怎样理解它的能力,怎样与它分工,怎样组织交互,以及怎样建立从设计到验证的工具闭环。

一、理解 AI 原理(主观理解与个人判断)

  1. 为什么是编程和数学?

    1. 我对 AI 的理解,主要来自工程使用中的观察。一个反复出现的现象是,任务越明确,AI 越容易完成;涉及隐含意图、复杂抽象和设计取舍时,结果就容易偏离预期。

    2. 编程具有比自然语言更严格的结构化表达。函数的输入输出、数据结构、接口和执行逻辑,都可以通过代码明确写出来。数学则在定义和规则的基础上进行推导。条件给全的数学问题与定义清楚的编程任务,都为求解提供了明确的要求。

    3. 在这个意义上,我更倾向于把“明确”看作 AI 擅长这类任务的重要原因。建模开发中的功能定义、接口实现和格式转换,也具有这样的特点。将要求表达清楚,是把工作交给 AI 的基础。

  2. 需要 LLM 更加人性化

    1. 理解用户指令中隐含的意思,修改代码之前主动了解整个工程

      1. 人性化体现在 AI 能否理解人的真实意图,并据此组织行动。例如,要求修改一段代码,往往隐含着了解相关工程和已有设计的要求。一个合适的协作者会先理解这些背景,再开始修改。
    2. 降低表达成本

      1. 人可以说明自己的目的,AI 能够理解其中隐含的意思,不必要求人把全部背景和条件逐一说明。
    3. 减少过程中的人工照管

      1. AI 能够主动获取信息、组织行动,人就可以减少对每个操作步骤的指挥。
    4. 形成长期、连续的协作

      1. 偏好、决定和经验能够延续,后续任务可以建立在过去的合作之上。项目中的设计共识,也能够在持续开发中得到保留。
    5. 提高应对非预期情况的能力

      1. 遇到没有预先规定的情况时,AI 能够结合人的目的作出合适判断,让工作继续推进。

二、氛围编程的本质

  1. 人类要放开 AI 的手脚,让 AI 自由发挥

    1. 我理解的氛围编程,是人类放开 AI 的手脚,让它自由发挥。

    2. 当代码实现交给 Agent 之后,人的工作方式也会发生变化。过去需要亲自完成的代码阅读、修改、编译和调试,可以由 Agent 连续执行。人通过对话表达目标、讨论设计,并关注关键的文档变化和结果。

    3. 这种工作方式需要给 AI 足够的实现空间。对于已经明确的任务,Agent 可以自行寻找相关代码、组织修改并运行验证。人把注意力放在目标、重要的设计和结果上,具体工作的推进则交给 Agent。

    4. 在建模开发中,这种分工尤其有意义。模型经常需要跟随设计变化而修改,激励和分析脚本也需要同步调整。让 AI 承担这些实现工作,可以加快设计与模型之间的往返。

三、理解 AI/Agent 的能力边界

  1. 缺乏高层级的设计能力

    1. 我曾用多线程程序来说明这个差别:AI 能够修复复杂多线程程序中的内存依赖问题,但难以设计出一个巧妙的多线程仿真平台。前一种工作已有相对明确的问题和约束,后一种工作需要形成一套合理的抽象,并用这套抽象组织整个系统。

    2. 这种差别也体现在 AI 对已有代码的理解上。从一个小的想法开始,通过讨论逐步形成设计,通常比较容易推进。设计一旦落实成代码,再让 AI 从实现中重新理解核心的、高层次的概念,就会困难得多。即使已有详细文档,它也可能遗漏重要关系,不能完整把握原来的设计意图。

    3. 因此,局部问题能够解决,并不意味着整体设计也能得到同样好的处理。能够写出可运行的功能,与能够提出合适的系统抽象,是不同层次的能力。

  2. 明确、批量的任务完成率最高,需要创新和设计的往往不理想

    1. 明确、批量的任务通常完成得更好,需要创新和高层次设计的工作,结果往往不够理想。
  3. 反复试错说明 Agent 已经陷入迷茫,不能从全局进行设计和开发

    1. 反复试错也是一个需要关注的表现。按我的理解,持续反复试错说明 Agent 已经陷入迷茫,不能从全局进行设计和开发。它可能仍然不断修改代码,但这些修改已经难以围绕整体设计展开。

四、把目标和实现分开

  1. 编译、调试和代码开发属于可以交给 AI 的实现工作

    1. 目标描述最终要实现的功能和效果。为了达到目标,需要形成架构、确定接口,并把工作组织成可以执行的任务。编译、调试和代码开发,则属于可以交给 AI 的实现工作。
  2. 将大目标拆成明确、清晰、可以直接开工的任务

    1. 使用 Agent 时,需要将大目标拆成明确、清晰、可以直接开工的任务。每个任务都应有清楚的输入、预期输出,以及必要的设计背景。这样,AI 可以在一个明确范围内工作,人的设计意图也能够落实到具体任务上。
  3. 用中间文件、流程和格式表达分层开发的中间状态

    1. 对于复杂项目,仅靠一段长对话承载全部信息会比较困难。中间文件、流程和格式,可以用来表达分层开发的中间状态。前一个阶段的结果写清楚,后一个阶段就可以根据这些结果继续工作,减少对整段对话上下文的依赖。

    2. 建模设计本身也有类似的分层表达。已有的建模方法把功能定义、硬件资源约束和时序信息分别组织起来,使不同层面的设计能够逐步补充。这些明确的定义,也为 AI 分阶段完成实现提供了输入。

五、智能体的最佳交互方式

  1. 遇到 Agent 把任务搞砸了

    1. 可以慢一点,进行步骤拆解,分步进行

      1. 遇到 Agent 把任务搞砸时,可以慢一点,把工作拆成步骤,分步进行。
    2. 可以先和 AI 讨论清楚,写个专门的文档

      1. 对于尚未讨论清楚的设计,可以先和 AI 形成共识,写一份专门的文档,再继续实现。

      2. 文档是这一过程的中介。它保存已经讨论清楚的概念和设计,也为后续实现提供可读取的背景。

    3. 先确定整体骨架,再通过讨论逐级细化到具体细节

      1. 讨论可以从最大的骨架开始,逐级细化到具体细节。先确定整体有哪些部分,再讨论各部分的职责和关系,随后进入具体实现。每次围绕相关的问题展开,逐步把设计表达完整。
  2. 支持人准确表达复杂的设计意图,并在协作过程中持续调整设计

    1. 智能体的交互方式,需要支持人准确表达复杂的设计意图,并在协作过程中持续调整设计。

    2. 对话便于讨论目标和想法,但复杂设计还包含大量结构关系和具体细节。软件架构、流水线、版图等设计,都需要把这些信息表达出来,才能继续讨论和修改。

  3. 结构化表达的方式和方法

    1. 用金字塔结构组织表达

      1. 金字塔结构是一种组织表达的方法。一个节点提出论点、结论或设计,子节点负责解释、细化或证明它。逐层展开之后,可以看清楚每个具体问题属于哪一层,以及它与整体设计的关系。
    2. 图形化更容易让人验收成果、检验结果

      1. 图形化表达则更便于人验收成果和检查结果。已有的交互设想包括通过图形界面调整关键参数和细节,也包括人直接编辑代码、文档和注释,由 AI 在旁协作。这些方式都服务于同一个目标:让设计意图能够被准确传达,并持续落实到结果中。

六、开发工作的完整工具闭环

  1. 设计 → 建模 → 波形 → 诊断工具

    1. 建模开发需要形成从设计、建模到波形分析和问题诊断的完整工具闭环。

    2. 在已有的建模工具设计中,波形、指令与模块调度日志、性能统计报告,都是运行结果的表达方式。它们让设计者能够观察模型实际执行时的行为。

    3. 设计有明确表达,模型能够运行,结果能够检查,诊断工具能够提供进一步分析所需的信息,才能支持一轮轮修改和验证。

  2. 通过编译、运行和测试,不断修正生成的代码

    1. 成熟的软件工具链,让 Agent 能够通过编译、运行和测试,不断修正生成的代码。对于建模工作,还需要把模型的运行结果表达成能够检查的信息,让后续修改有具体依据。
  3. 通过波形、golden 结果对比和关键仿真节点数据,快速检验建模成果

    1. 验收模型时,可以检查波形,与 golden 参考结果进行对比,也可以判断关键仿真节点的数据。这些手段支持从更高层次快速检验成果,让人能够围绕模型行为和结果作出判断。

七、AI 辅助建模开发的总结

  1. AI 可以快速构建 Demo 级别的功能模型

    1. AI 可以快速构建 Demo 级别的功能模型,使设计较快地落实为可以运行的程序。

    2. 以已有的 ISA 建模方案为例,指令功能可以通过读写寄存器、读写存储器等基本操作来表达。这些操作有明确的定义和接口,可以作为生成模型实现的输入。功能模型运行起来之后,就有了检查功能行为的具体对象。

    3. 这类工作将讨论中的设计转化为可执行的模型,也为后续补充性能约束提供基础。

  2. AI 可以辅助生成接近真实需求的复杂激励和 benchmark

    1. AI 可以辅助生成接近真实需求的复杂激励和 benchmark。模型开发中的工作范围,因此可以扩展到运行模型所需的输入和测试程序。

    2. 已有的建模目标包含在硬件完成之前提供软件仿真环境,用于软件开发和测试。激励与 benchmark 是使用这个环境的重要部分。AI 参与这些实现工作,可以支持模型与测试内容一起推进。

  3. AI 可以加快架构设计和模型的迭代

    1. AI 可以加快架构设计和模型的迭代。建模过程中,架构和微架构经常需要调整,模型也要随之改变。

    2. 已有的功能导向建模方案,将功能定义与性能特性分开,并允许逐步添加和校准性能参数。功能部分可以独立运行,资源竞争和时序约束可以继续补充。在这样的设计基础上,模型实现能够跟随架构方案逐步演进。

    3. AI 承担实现和修改工作,运行环境提供评测结果,人再据此调整设计。建模、评测性能、修改架构和更新模型,由此成为可以反复开展的工程工作。


Revision #1
Created 2026-10-21 08:13:04 UTC by Colin
Updated 2026-10-21 08:13:04 UTC by Colin