让 RTL 模型看见电路运行时发生了什么
DynamicRTL 论文解读:从静态结构到多周期行为表示
基于 AAAI-26 论文 DynamicRTL: RTL Representation Learning for Dynamic Circuit Behavior
看一段 RTL 代码,工程师能判断寄存器怎样更新、条件分支怎样选择、信号怎样沿着组合逻辑传播。模型却常常只能看到静态结构。源代码、网表、图结构都能描述电路长什么样,却很难回答另一个更贴近验证和优化的问题:给定一串输入之后,电路到底怎样运行。
DynamicRTL 这篇论文把焦点放在运行时行为上。作者提出 DR-GNN,让模型同时读取 RTL 的算子级控制数据流图和多周期仿真轨迹,用分支命中与变量翻转率作为预训练监督,再迁移到功耗估计和断言预测。它关心的不是让神经网络背下电路文本,而是让表示学习捕捉信号随时间变化的规律。
问题不在看懂代码,而在看懂运行
过去几年,图神经网络已经被用到电路质量估计、组合功能表示、RTL 代码分析等任务里。很多方法把 Verilog 源码、RTL 中间表示或综合后的网表变成图,再让模型学习节点和图的嵌入。这条路线能抓住不少静态特征,比如操作类型、连接关系、位宽和局部结构。它的短板也很直接:验证覆盖率、动态功耗、断言满足情况都不是只看结构就能判断的事。
同一个电路,输入序列不同,分支可能走完全不同的路径,寄存器可能保持不变,也可能在每个周期持续翻转。静态图只告诉模型哪些节点相连,却不告诉它这些连接在连续时钟周期里被怎样激活。论文把这种多周期执行状态称为电路动态行为,关注所有 wire 和 register 在仿真过程中的值变化。
图 1:DynamicRTL 的整体流程,从 RTL 源码、测试平台和仿真轨迹生成训练数据,再训练 DR-GNN 处理动态任务。
来源:裁切自原论文 Figure 1。
图 1 把论文的思路概括得很清楚。左侧负责把 RTL 源码映射到 RTLIL,再解析出 CDFG,同时自动生成 testbench 并运行功能仿真,拿到动态仿真轨迹。右侧把静态图、输入序列和训练标签送进 DR-GNN,学习出的节点表示继续服务于分支预测、翻转率预测、功耗估计和断言预测。
这个角度对 EDA 很有吸引力。许多早期设计阶段的决策都希望在不付出完整综合、仿真、功耗分析成本的情况下得到足够可靠的判断。若模型能在 RTL 层面理解动态行为,就有机会把一些原本后置、昂贵的分析提前。论文没有声称替代传统工具,而是把表示学习放在更适合动态任务的位置上。
对芯片团队来说,这个问题并不抽象。覆盖率没打到、某个寄存器异常活跃、功耗热点在输入变化后才出现,这些现象都和时间序列有关。一个只学习静态连接的模型,很难解释这些现象为什么发生。DynamicRTL 试图补上的正是这块空白:让表示里带有输入、状态和跨周期传递的信息。
算子级 CDFG 为什么是基础
论文没有直接拿源代码 token 或语句级图来训练。作者先用 Yosys 把 RTL 源码转换成功能等价的 RTLIL,再用 Stagira Verilog parser 解析抽象语法树,最后遍历生成控制数据流图。这个图不是传统软件视角的语句级 CDFG,而是更贴近硬件数据流的算子级 CDFG。
图 2:论文用计数器示例展示语句级 CDFG 与算子级 CDFG 的差异,后者更贴近电路数据流和跨周期关系。
来源:裁切自原论文 Figure 2。
图 2 中的计数器例子很典型。语句级 CDFG 会把 if 和赋值语句当成节点,描述代码的执行顺序。算子级 CDFG 则把变量、常量和操作符拆开,边代表数据流或控制流。寄存器的入边还带有跨周期含义,因为寄存器会把当前周期的值带到下一个时钟周期。
这种表示有两个好处。一个是抽象层级合适,节点可以是多位信号,不需要像单比特门级图那样膨胀成非常大的结构。另一个是动态含义更清晰,条件节点天然对应多路选择器,select 信号决定数据从哪个通道流过。对分支命中和翻转率这类任务来说,这比只知道语句顺序更有用。
论文把 CDFG 节点分成变量节点、常量节点和操作符节点。变量节点包括 wire、register 和输入信号,值会随仿真输入和电路状态变化。常量节点在所有周期保持不变。操作符节点负责表达计算逻辑,条件操作符承担分支选择。DR-GNN 的后续设计都围绕这三类节点展开。
多位节点也是这套表示的关键。门级图把多位信号拆成许多单比特节点,信息更细,但图会急剧变大。RTL 级 CDFG 保留了位宽属性,在抽象层面仍能表达变量和操作的关系。论文后面的结果也说明,这种折中适合早期分析,尤其适合需要在较大设计上保持可运行性的任务。
DR-GNN 怎样写入输入序列
DR-GNN 的输入包含 CDFG 和输入序列。模型要预测两类预训练目标:给定输入是否命中某个分支,以及变量在仿真周期中的翻转率。前者对应硬件验证里的覆盖信息,后者与动态功耗直接相关。若一个表示能同时服务这两个目标,它就不能只记住结构,而必须把输入驱动下的时序变化编码进去。
图 3:DR-GNN 的三段式结构,节点初始化、动态行为感知传播和任务回归共同服务于预训练与下游任务。
来源:裁切自原论文 Figure 3。
节点初始化阶段最关键的是输入序列编码。许多 RTL 操作在二进制层面工作,论文没有简单把输入当十进制数喂给模型,而是把每个周期的值拆成二进制向量。每个 bit 位置都有可学习向量,只有对应 bit 为 1 时才参与求和,得到该周期的值嵌入。随后,GRU 把多个周期的值嵌入压成序列嵌入,作为输入节点的初始动态表示。
常量节点被看作每个周期都输入同一个值的特殊输入节点,也使用同一套编码方式。操作符节点的结果在仿真前未知,所以初始向量设为零。这样安排后,已知的信息从输入和常量出发,在图上传播到条件、算术、逻辑和寄存器相关节点。
传播部分参考异构图 Transformer,但论文做了两处硬件化改造。第一处是半解耦聚合器。RTL CDFG 里有三十多种操作符,给每种操作符单独配一个聚合器会让模型过重,共享一个聚合器又可能区分不出加法、减法、条件选择等功能。作者把操作符归为一元、二元、多元、条件和寄存器五组,组内共享权重,再用注意力消息机制表达具体操作。
第二处是位置感知消息传递。硬件表达式里,操作数位置会影响结果。a 减 b 和 b 减 a 结构相似,语义却不同。DR-GNN 在消息里同时放入源节点动态嵌入、操作数相对位置嵌入和操作符类型嵌入,再计算注意力权重。节点更新使用 GRU,逐层聚合后得到最终表示。这个设计让模型既知道数据从哪来,也知道它在当前操作里扮演什么角色。
这里的 GRU 不只是序列模型里的常见组件,它还承担状态更新的作用。每一层聚合到的邻居消息像当前周期能看到的新证据,上一层节点嵌入则像已经积累的行为记忆。连续堆叠后,节点表示会逐步吸收更远处的控制和数据依赖,适合描述时序电路中沿路径传播的动态影响。
预训练监督来自真实仿真行为
论文构建了一个面向动态行为的数据集,包含约 6300 个 Verilog 设计和 63000 条电路仿真轨迹。设计来源包括已有开源 Verilog 数据集,以及用 Verilog、RTL、circuit 等关键词从 GitHub 收集的文件。预处理阶段过滤掉语法错误、综合失败和仿真失败的设计,只保留时序电路。
每个电路生成 10 条随机输入轨迹,并在商业硬件仿真器中记录每个周期所有内部变量的值。testbench 生成时会自动识别 reset 等特殊信号,reset 只在仿真开始阶段有效,之后保持无效,以便轨迹覆盖更丰富的运行状态。数据集按设计划分,训练、验证、测试比例为 80%、10%、10%,测试设计在训练和验证中从未出现。
图 4:预训练任务结果表,DR-GNN 在不同输入序列长度下的分支命中和翻转率预测都保持约 94% 准确率。
来源:裁切自原论文 Table 2。
预训练任务一是分支命中概率预测。RTL 中的 if 和 case 反映了大量动态行为,也是硬件验证中的重要覆盖指标。论文识别条件节点的 select 信号形成分支集合,对每个分支节点读取最终嵌入,再用多层感知机预测命中概率。
预训练任务二是变量翻转率预测。同步时序电路中,变量值在时钟边沿发生变化就形成一次翻转。翻转率等于翻转次数除以总周期数,它直接影响动态功耗。论文选择变量节点形成变量集合,同样读取最终嵌入预测翻转率。两类监督合在一起,让模型既学习控制路径,也学习信号活动强度。
实验结果显示,DR-GNN 在输入序列长度为 10、20、30、50 时都保持稳定。分支命中预测最高达到 94.98%,翻转率预测最高达到 94.90%。论文给出的平均结果为分支命中 94.80%,翻转率 94.25%,明显高于 GCN、GAT、Gated GCN、GATv2 和 Design2Vec 等基线。
基线设置也能看出任务难点。HGVC 一类方法已经能利用 CDFG 的节点类型和位宽信息,论文还为公平性加入了相同的输入节点初始化,但普通 GNN 仍难以追上 DR-GNN。Design2Vec 使用语句级 CDFG,节点并不直接对应变量,因此只能评估分支命中。这个差异反过来说明,动态图任务需要从表示粒度开始重新设计。
消融实验说明哪些设计真有用
消融实验把 DR-GNN 的几个核心取舍拆开看。输入编码部分,二进制序列编码优于十进制编码和随机编码。这个结果符合硬件直觉:位级变化比十进制数值更贴近 RTL 操作,尤其在逻辑运算、条件判断和位宽相关行为中。
图 5:输入编码、聚合器设计和电路规模变化的实验,说明二进制序列编码和半解耦聚合更适合 RTL 动态行为。
来源:裁切自原论文 Figure 4 和 Figure 6。
聚合器部分,半解耦机制优于完全共享和完全解耦。完全共享会把太多操作压到同一套参数里,表达力不足;完全解耦又把三十多种操作拆得太细,训练难度和参数规模都会上升。按操作符性质分组后,模型保留了必要差异,也避免了过度复杂。
消息传递部分,去掉操作符类型或操作数位置都会损失精度。论文还比较了图 Transformer 中常见的全局位置编码和相对距离编码,效果都不如面向操作符输入位置的设计。这里的差别在于,电路图上的位置不是单纯拓扑远近,而是某个信号在某个操作里的参数角色。
规模变化实验也给出了一条实用边界。CDFG 节点少于 50、深度低于 5 的设计上,分支命中准确率超过 95%,翻转率准确率超过 94%。随着节点数和深度增加,任务确实变难,但 DR-GNN 仍保持较好的趋势。论文还把更大规模的 1k 到 10k 节点设计放到下游任务中检验泛化能力。
动态表示能迁移到哪些任务
功耗估计是最能体现动态表示价值的下游任务之一。论文冻结预训练好的 DR-GNN,把动态表示与节点类型、位宽等属性拼接起来,再训练一个基于 GAT 的模型估计功耗。真实标签来自商业综合工具和 NanGate 45nm 工艺库下的门级网表动态功耗。
图 6:功耗估计迁移结果,动态表示在 R、MAPE 和 RRSE 上均优于 MasterRTL 与 HGVC。
来源:裁切自原论文 Figure 7。
结果显示,DR-GNN 的相关系数 R 达到 0.95,MAPE 为 0.20,RRSE 为 0.33。MasterRTL 的对应结果为 0.86、0.29、0.51,HGVC 为 0.91、0.32、0.41。论文还比较了只用分支监督或只用翻转监督的变体,完整 DR-GNN 表现最好,说明两类动态监督互补。
大规模功耗估计实验更强调成本差异。五个设计的 CDFG 规模从 0.9k 到 8.3k 节点,综合后的 AIG 规模从 22k 到 304k 节点。DeepSeq2 在三个更大的设计上出现内存不足,DR-GNN 在这些设计上仍能给出结果,推理时间低于 1 秒,而传统 EDA 流程需要数百到数千秒。DR-GNN 的误差在 0.15 到 0.23 之间,精度不一定超过细粒度网表模型,但规模适用性更强。
断言预测从另一个角度检验表示学到了什么。论文设置了八类断言,包括单变量范围、变量不等于某值、双变量比较以及按位与、按位或关系。DR-GNN 在所有断言上都优于只用单一监督的变体,也明显高于频率基线。它对 v 小于 4、v 小于 16、v1 不等于 v2、v1 小于 v2 等近似范围和关系判断较强,对 v 不等于 2、v 不等于 4 这类精确值判断相对吃力。
从应用角度看,功耗和断言这两个下游任务覆盖了优化与验证两端。功耗估计关心信号活动怎样累积成能耗,断言预测关心变量关系在输入驱动下是否满足约束。DR-GNN 在两端都获得收益,说明预训练表示并非只为原始任务服务,而是捕捉到一部分可迁移的动态结构。
这项工作留下的边界
DynamicRTL 的贡献在于把 RTL 表示学习从静态结构推进到运行时行为。它构建了成规模的动态电路数据集,也给出了围绕算子级 CDFG 的模型设计。对验证、功耗和早期设计评估来说,这类表示比只看代码结构更接近真实需求。
边界同样需要看清。论文的功耗实验表明,RTL 级 CDFG 不如网表级结构细,面对小规模电路时,细粒度网表模型可能更准。断言预测也暴露了精确值建模的不足,模型更擅长范围、关系和位运算模式,对某个变量是否恰好等于特定值的辨别还不够强。
数据生成也会影响能力上限。论文使用随机输入模式并记录多周期轨迹,这能覆盖大量一般行为,但特定协议、罕见边界条件和工程级约束仍可能需要更有目标的激励生成。若未来把形式验证、覆盖驱动仿真或真实项目 testbench 纳入数据来源,动态表示的实用性还有提升空间。
结语
DynamicRTL 给出的答案并不复杂:电路模型不能只看结构,还要看它在输入序列下怎样活动。DR-GNN 用算子级 CDFG 承载静态拓扑,用仿真轨迹提供动态监督,再把学到的表示迁移到功耗和断言等任务。它让 RTL 阶段的机器学习分析更靠近硬件运行本身,也提醒后续研究继续补上精确值、复杂协议和工程场景这几块短板。
本文图片均来自或裁切自原论文,仅用于论文解读和学术交流。
参考资料
原论文:DynamicRTL: RTL Representation Learning for Dynamic Circuit Behavior,AAAI-26。本文图片均来自或裁切自原论文,仅用于论文解读和学术交流。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)