在芯片项目推进到RTL编码阶段后,设计工程师最常面对的并不是“有没有检查工具”,而是“检查结果到底能不能快速定位问题”。在此次DVCon China会议上的这篇论文《基于抽象语法树的寄存器传输级变量连通图》,提出了一种方法,一般Verilog解析器会根据用户的设计文件生成抽象语法树(AST),利用从AST中提取的丰富语法和语义信息,这篇文章设计了一种在RTL阶段用于检测变量相关信息的架构,可用于在电子设计自动化工具的图形界面中支持信号的可追溯性和可视化跟踪。
注:本文核心技术点来自DVCon收录论文《RTL-level Variable Connectivity Graph Based on Abstract Syntax Tree For EDA》
关键词:寄存器传输级,变量连通图,信号追溯
作者:Zhang Yingjie, 英诺达(成都)电子科技有限公司
背景介绍
很多芯片设计工程师都有类似经历:在静态验证中,Lint工具给出某个违例警告,但真正打开代码后,发现问题并不总在报告行号附近;或者变量经过层次例化、条件分支、组合赋值、时序always块之后,源头和负载已经散落在多个模块、多个文件中。此时,工程师往往需要在IDE、波形、代码搜索和原理图视图之间来回切换,靠经验把信号链路重新“拼”出来。
这类问题的本质是传统分析结构对RTL语义的表达还不够直接。RTL代码天然具有层次、语法、数据流和控制流信息,但这些信息在抽象语法树(AST)中通常以局部子树形式存在。
“AST中包含丰富的句法和语义信息,但原始AST的子树相对隔离,变量与操作符主要位于叶节点,直接用于跨层次信号追踪并不方便。因此,需要将AST的层次语法关系转换成面向变量连接关系的图结构。”
为什么芯片设计问题越早发现越值钱?
对芯片设计团队而言,RTL阶段是架构意图落地为硬件实现的第一站。越早发现RTL设计中的变量连接缺陷,后续仿真、综合、形式验证和后端迭代的代价就越低。尤其是在复杂SoC或IP交付场景中,一个未驱动信号、一个未使用端口、一个跨层次连接错误,可能不会立即导致编译失败,却可能在系统级仿真或门级网表阶段放大为难以追踪的问题。
“左移”设计理念强调在RTL阶段,而不是等到综合、布局布线甚至后硅阶段,尽早发现并诊断缺陷。对工程实践来说,这意味着工具不仅要“报错”,还要尽可能准确地告诉工程师:变量在哪里定义、在哪里被驱动、在哪里被使用、通过什么语义关系连接、跨过了哪些模块层次。
RTL变量连通图:让潜在威胁有迹可循
Verilog/SystemVerilog解析器通常会先把RTL代码转换为AST,但在工程师排查问题时,真正关心的往往不是“这个语法节点的父节点是谁”,而是“这个信号从哪里来、到哪里去、为什么会被判定为未负载”。
例如,一个顶层模块中可能有两个子模块实例,它们共享同一个控制信号;子模块内部又在时序always块中根据复位信号更新计数器;顶层最终再把两个计数器的某些bit做组合逻辑输出。如果只看AST,工程师需要理解多个子树之间的语法上下文。

图一:典型AST结构
如果把变量关系抽象为图,则可以把clk、rst、acrossHier、cnt1、cnt2、my_out等变量节点连接起来,清楚表达驱动、负载、实例化映射、赋值和时序控制关系。如下图:

图二:RTL级变量连通图
这张变量连通图的关键价值在于,它把代码语法转化为工程师熟悉的数据流和连接关系。对芯片设计人员而言,这比单纯的语法树更直观,也更适合在EDA图形界面中做点击追踪、高亮路径和跨层次跳转。
对静态验证工具而言,它解决的是“准确性”和“可解释性”
以Lint为例,像UndrivenNet、UnloadedNet等规则,本质上是判断变量、端口或net是否存在有效驱动与有效负载。但在真实RTL中,难点往往来自层次、条件、宏、generate、位选、拼接以及多种赋值上下文。工具如果只基于文本或较粗粒度结构做判断,就容易出现报告变量不准确、行号不准确或解释路径不足的问题。
基于变量连通图,Lint检查被转化为高效的图遍历问题。以“查找某个变量是否有负载”为例,算法可以从指定变量节点出发,沿出边递归搜索下游节点,直到遇到符合规则定义的负载节点。对于跨模块端口,initiate边能够将当前层级的实例pin与子模块port串联起来,使追踪不再受限于模块边界。
更重要的是,图结构天然具有可解释性。工具不仅能告诉工程师“变量A未负载”,还可以进一步展示“变量A被哪条赋值驱动、经过哪个实例pin、连接到哪个子模块port、是否最终到达有效负载”。这对企业级EDA工具尤其关键,因为工程师并不只需要一个违例列表,更需要能够支撑代码修改决策的上下文证据。
对工程师的价值:少跳转、少误报、快闭环
RTL变量连通图的构建效率极高。对于少于一百万行RTL代码的设计,单线程即可在数秒内完成图构建,且构建时间与RTL代码行数强相关,与网表实例数关系较弱。在UndrivenOrUnloadedVariable等核心规则检查中,变量连通图方法虽然会检查RTL设计中的所有变量,但其整体效率仍与传统基于网表级的检查相当,甚至在部分场景下表现更优。
如果把这项技术放到芯片设计工程师的日常工作流中,它的价值可以归纳为三个关键词:定位、追踪、闭环。
精准定位:变量连通图让违例不再只是一个静态文本位置,而是一个带有上下游关系的图节点。工程师看到未驱动或未负载问题时,可以直接查看相关驱动链和负载链,减少无效代码搜索。
高效追踪:跨层次信号一直是RTL调试中的高频痛点。通过实例pin、模块port、内部变量之间的initiate和assign关系,工具可以把顶层输入如何影响子模块寄存器、子模块输出如何回到顶层逻辑表达出来。这种能力非常适合与GUI结合,形成可点击、可展开、可过滤的信号路径视图。
快速闭环:设计检查的目标不是产生更多违例警告,而是帮助工程师更快修复问题。变量连通图提供了规则结果与设计结构之间的桥梁,使工具能够给出更可信的违规解释,也让工程师能更快判断这是代码缺陷、冗余逻辑、端口预留,还是规则配置需要豁免。
更懂设计师需求的下一代RTL静态分析
随着芯片规模持续扩大,RTL静态检查正在从“规则扫描”走向“结构理解”。AST是理解RTL代码的起点,但如果停留在语法树层面,工具很难直接满足工程师对信号流、控制流和跨层次追踪的需求。基于AST构建RTL变量连通图,则提供了一种兼顾语义、性能和可视化的技术路径。
“在EDA生态系统中,所提出的RTL变量连通图可作为各种工具的基础数据。通过利用该结构的图论性质,可以将各种图算法应用于此连通图,以在EDA工具中执行规则检查。”
在英诺达,我们深知芯片设计工程师对效率和准确性的极致追求。因此,英诺达的EnAltius昂屹系列静态验证EDA工具已深度集成了基于AST的RTL变量连通图算法。通过这一创新技术,我们的工具不仅能够提供传统工具的全面检查能力,更在以下方面实现了显著提升:
更快的定位:违例信息不再是孤立的行号,而是与变量连通图中的具体节点和路径关联。工程师可以直观地看到问题的上下文,大幅缩短问题定位时间。
更准的报告:通过对RTL语义的深入理解和图结构化的表达,有效避免了传统工具在复杂场景下可能出现的误报或漏报,确保报告的准确性。
可解释性:当发现未驱动或未负载变量时,工具能够清晰地展示信号的完整路径,包括跨模块的连接关系,帮助工程师快速理解问题根源并做出修正。

英诺达致力于将前沿技术融入EDA工具,为芯片设计工程师提供更智能、更高效的解决方案,助力您在复杂的芯片设计中游刃有余,确保设计质量和项目进度。
英诺达 EDA 巡回研讨会即将开启!
为了与广大设计工程师深度探讨低功耗设计、验证自动化及先进EDA技术,英诺达2026 EDA巡回研讨会即将拉开帷幕!
届时,我们的技术专家将亲临现场,不仅会深度拆解EDA工具的核心功能与应用案例,还将分享更多关于SoC级功耗管理、静态验证及EDA工具实战经验。
关于英诺达
英诺达(成都)电子科技有限公司是一家由行业资深人士创立的本土EDA企业,公司坚持以客户需求为导向,帮助客户实现价值跃升,为中国半导体产业提供卓越的EDA解决方案。公司的长期目标是通过EDA工具的研发和上云实践,参与国产EDA完整工具链布局并探索适合中国国情的工业软件上云的路径与模式,赋能半导体产业高质量发展。公司的主营业务包括:EDA软件研发、IC设计云解决方案以及IC设计服务。
全部0条评论
快来发表一下你的评论吧 !