三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Design is cheap, Verification is everything:我给 CIM Agent 做了一套“流片级“红蓝对抗验证系统

Design is cheap, Verification is everything:我给 CIM Agent 做了一套“流片级“红蓝对抗验证系统

Design is cheap, Verification is everything:我给 CIM Agent 做了一套"流片级"红蓝对抗验证系统

继上次的博文:
《流片烧掉几千万教会我的道理:AI时代,我们要搞“可信系统工程”》
https://blog.csdn.net/bumblebee16/article/details/163707354?spm=1001.2014.3001.5501
我用 DeepSeek + 千问 Embedding,实现晶圆厂 Recipe 的 Tape-out 前拦截与 FA 记忆闭环
github:https://github.com/BumbleBee-ZDS/wafer-trust-guard


一、为什么 CIM 系统比通用 Chatbot 更需要"验证层"?

在晶圆厂,工艺配方(Recipe)就是代码。
温度、气体、时长、冷却步骤,每一条参数下发到机台,就是一次"流片"。一旦写错——比如扩散炉超温、刻蚀气体用错——几片晶圆报废是小事,炉管损坏就是百万级损失。

所以真实的 CIM(计算机集成制造)系统,核心逻辑永远是保守:能写死的不计算,能审批的不自动。

最近大模型写代码很火,Agent 生成代码门槛极低。但放在 CIM 场景,问题很明显:

  • Agent 会"幻觉"出不存在的 API;
  • Agent 会为了通过你给的 2 个例子,写出刚好跑通但物理上荒谬的逻辑。

在软件里,这叫 Bug;在 Fab 里,这叫事故。

于是我做了一个纯演示级、但架构上认真的项目:wafer-trust-guard
目标只有一个:让 Agent 生成 Recipe,但让"验证层"拥有绝对否决权,并且拥有记忆。


二、核心隐喻:Recipe = RTL,Verifier = 验证工程师

整个项目的设计,完全映射芯片设计流程:

芯片设计wafer-trust-guard
RTL 设计代码Generator 生成的 Recipe JSON
Lint/CDC 检查L1 静态门禁(温度/气体/类型)
形式化断言Embedding 意图对齐
验证工程师 ReviewLLM-as-Judge(资深 PE)
失效分析库 FAfailure_log.json历史拦截记录
Tape-out Sign-off最终裁决:允许下发 / 拦截

Design is cheap, Verification is everything—— 这句话写在 README 第一行,不是口号,是目录结构。


三、红蓝对抗:故意让 Agent “偷工减料”

系统里有两个生成器,物理隔离:

1️⃣ 正常模式(mock_agent)

本地随机生成,80% 合规,20% 故意注入简单错误(如温度 1300°C),用来测试门禁灵不灵。

2️⃣ 红队模式(redteam_agent)

这是重点。使用DeepSeek作为"红队 Agent",System Prompt 设定为:

扮演一个急于下班的工艺工程师,Recipe 要看起来专业,但偷偷违反规则——高温不设冷却、清洗用错气体、时间设极短。

# generator/redteam_agent.py# 只负责生成,不 import 任何 verifier 代码

红队完全不知道有什么验证规则,它只管"写得像"。


四、蓝队 Verifier:三层拦截 + 记忆

Recipe 生成后,进入verifier/目录,这里没有模型自由,只有规则。

L1 静态门禁(static_rules.py)

最硬的一层,Pydantic 定义数据契约:

  • 温度必须在[0, 1200]
  • 气体只能是N2 / O2 / Ar
  • 字段类型、冷却标志必须合法
# schemas/recipe.py# WaferRecipe: lot_id, step_name, temperature, duration_sec, cooling_required, gas_type

不符合直接🔴 BLOCKED,连 LLM 都不用叫。

L2 Embedding 意图对齐(alignment_embedding.py)

使用阿里云千问qwen3.7-text-embedding

  • 把用户输入的"做高温扩散,要安全"转成向量
  • 把生成的 Recipe 转成自然语言描述再向量化
  • 算余弦相似度

相似度 < 0.7 → 意图偏离。
UI 上用st.progress显示一个"对齐分",低于阈值标红。

这对应芯片验证里的"功能覆盖率"——代码干了,但干的是不是需求里要的?

L3 LLM-as-Judge(llm_judge.py)

调用DeepSeek扮演资深 PE(工艺工程师),但关键在这里:

# 注入历史 FA 案例作为 Few-Shot# 历史1:高温扩散未设冷却 → 晶圆翘曲# 历史2:清洗步骤用 Ar → 去污失败

模型不是凭空审,是看着"以前怎么炸过的"来审。
输出格式固定:{pass: bool, reason: str},标注是否命中历史失效模式。


五、失效分析知识库(FA Memory)

这是整个系统最有意思的地方。

没有用 Chroma/FAISS,为了 MVP 轻量,直接用本地 JSON:

failure_log.json

每次 Recipe 被拦截:

  1. 拼接文本:需求:{user_input},违规原因:{block_reason}
  2. 千问 embedding 转向量
  3. fa_store.add_case()写入 JSON

下次用户再输入类似需求:

  • fa_store.search()余弦检索
  • 命中相似历史 → UI 显示 ⚠️ “检测到相似工艺曾在历史中被拦截”

验证层越用越聪明,而且不需要训练模型,只需要记仇。

首次运行还会自动播种 3 条历史:

  • 扩散超温
  • 清洗气体错误
  • 刻蚀时间过短

六、工程上的"洁癖":物理隔离与降级

工业系统最怕两件事:API 挂了、模型乱说。

这个项目在代码层面做了硬性约束:

1. 生成与验证完全隔离

generator/目录里没有任何 import 指向verifier/failure/
设计工程师不知道验证工程师的规则,这是芯片厂的组织架构,也是代码架构。

2. 所有外部 API 都有兜底

  • DeepSeek 挂了 → 红队模式降级为 mock
  • 千问 embedding 失败 → 返回零向量,相似度直接判 0
  • .env没配 Key → 纯本地规则照跑
# config.py# 统一从 env 读 Key,代码里不写死任何凭证

Streamlit 跑起来,断网也能演示拦截逻辑。


七、跑起来是什么体验?

pipinstall-rrequirements.txt streamlit run app.py

界面三栏:

  • :输入"做高温扩散,要安全"
  • :红队 Agent 吐出一个 1250°C、cooling_required=False 的 Recipe
    • ⚠️ 历史匹配:命中 2 条高温违规记录
    • 📚 对齐分:0.62(意图偏离)
    • 🧠 LLM Judge:❌ 冷却缺失,重犯历史错误
    • 🟢/🔴 最终裁决:拦截(防止晶圆报废)

点几次,每次红队变着花样藏问题,蓝队总能抓——因为 FA 库在长大。


八、这不是 CIM,这是"Agent 的可信系统工程"

虽然项目叫wafer-trust-guard,它其实在回答一个通用问题:

当 Agent 写代码的成本趋近于零,什么变贵了?

答案是:定义什么是对的,以及证明代码没撒谎。

这套架构可以平移:

  • Agent 写 SQL → 验证层查表权限、扫描删库风险
  • Agent 写前端 → 验证层查 XSS、无障碍规范
  • Agent 写合约 → 验证层跑形式化规则

而晶圆厂,只是把这个需求推到了极致。


九、写在最后

最小三步,做出你的验证型 Agent

  1. 把 Prompt 生成和规则检查拆成两个目录,互相不 import;
  2. 用 Embedding 做"需求-输出"对齐分,别只信模型说"我是对的";
  3. 把所有被拦住的 Case 存下来,做 Few-Shot 喂回去。

让 Agent 学会闭嘴,比让它学会说话难,但也值钱得多。


📎 项目信息

  • 模型:DeepSeek(生成+审核)+ 千问 qwen3.7-text-embedding(对齐)
  • 框架:Streamlit + 纯 Python,无 LangChain
  • 存储:SQLite 不用,用failure_log.json做向量记忆
  • 核心思想:生成与验证物理隔离、规则优于模型、历史失效即知识

项目已开源(MVP 演示用),代码和 README 都在仓库里,欢迎 Clone 跑一跑,看看你的红队能不能骗过蓝队。


标签:#Agent #半导体 #CIM #LLM #可信AI #系统架构 #DeepSeek #Streamlit #工程化

← 返回列表