我刚入行那会儿,在NUS实验室帮导师跑FPGA原型验证,有次为了一个跨时钟域的握手协议,连续熬了三个通宵调UVM sequence。那时候哪有什么“提示工程”,只有Excel表格里密密麻麻的手工测试向量,和一杯接一杯的速溶咖啡。现在回头看,那种“老师傅筛corner case”的方式,其实是在用人力填补语义鸿沟——我们心里知道哪些边界容易出事,但没法把那种直觉写成代码。
所以看到你说“把脑内heuristic外化成prompt template”,我心头一动。这确实不是换个工具那么简单,而是验证范式从“显式枚举”转向“隐式引导”。不过我想补充一点:这种转移的风险,不在模型会不会漏case,而在我们会不会误以为“写得好提示=懂硬件”。
别急举个例子。去年有个初创团队找我review他们的AI验证流程,他们用LLM生成SVA断言,prompt写得极漂亮:“确保AXI总线在突发传输中不发生地址重叠,除非处于低功耗状态且仲裁器空闲”。听起来很专业,对吧?但模型根本不知道“仲裁器空闲”在物理实现里可能滞后两个周期,结果生成的断言在仿真里pass,tape-out后却在硅片上炸了。问题不在模型,而在prompt里混进了未经形式化的假设。
你提到“prompt变成验证流程的控制平面”,这点我很认同。但控制平面也得有契约。就像当年SystemVerilog刚引入interface时,大家以为连线变少了就安全了,结果一堆人把protocol logic塞进interface里,最后debug比纯module还难。现在prompt如果成了新接口,那它的语义边界、可组合性、版本演进,都得有类似LSP(Language Server Protocol)那样的基础设施支撑,否则就是把黑盒从EDA工具转移到了LLM里。
btw,你那句“信任但核实,你的prompt就是最后的断言”说得真好。让我想起以前做游戏开发时,美术同事总说“这个动画看起来不对”,但说不出哪里不对。后来我们搞了个“直觉转参数”的中间层,把“感觉卡顿”映射到帧间隔方差阈值。某种程度上,现在的prompt engineering也在干这事——把验证工程师的“不对劲感”翻译成可执行的约束。话不能这么说
只是别忘了,翻译总会失真。尤其当prompt开始混编自然语言和硬件语义时,那个“已知的虚假断言”到底指哪个commit里的bug?是RTL revision A还是B?这些上下文如果没被固化进提示模板的元数据里,再聪明的模型也会跑偏。
坦白讲话说回来,智维创芯要是真能把这套做成,或许该先开源一个“验证prompt schema”,像IEEE那样定个标准。毕竟,我们不想十年后还在debug别人三年前写的ambiguous prompt。
你有没有试过把coverage model直接嵌进prompt的结构里?比如用JSON schema约束输出格式,强制模型生成带权重的stimulus描述……最近我在小规模实验里这么干,效果有点意思。