第四章HAL HDL 静态分析
概述
HDL 静态分析是 Xcelium 模拟器集成的 HDL 代码静态检查工具,提供丰富的规则集检查 RTL 代码质量、可综合性、时钟域交叉、编码风格等问题。
HAL 在设计流程中的位置
HAL 应用于多种验证流程:
- 独立运行:直接对 RTL 进行静态检查
- 编译集成:在 Xcelium 编译时自动运行
- Superlint 集成:作为 Superlint 的前端
HAL Features
- Strong Rule-set:数百条内置检查规则
- Detailed Message:每条违规有详细描述,方便调试
- Rule Customization:可定制规则的严重级别和参数
- Extensive Language Support:Verilog/SystemVerilog/VHDL/e
- Report Generation:多种格式报告
- GUI for Message Analysis:图形化消息分析界面
- Schematic View for Structural Checks:结构检查的原理图视图
- GUI for Rule Customization:图形化规则定制界面
常用术语
- Rules File(hal.def):定义规则配置的文件
- Message Identifier:每条规则的唯一标识(如
NOLABL、DESULN) - Message Parameter:规则消息中的参数化信息
内置检查类别
| 类别 | 说明 |
|---|---|
| Advance DFT | 可测性设计检查(扫描链、测试模式等) |
| Clock Domain Crossing Checks | CDC 相关静态检查 |
| Netlist Checks | 网表级检查(综合后设计) |
| SystemVerilog Checks | SystemVerilog 特定规则 |
| e Checks | e 语言相关检查 |
| ALL_BEHAVIORAL | 行为级代码检查(BEHINI/DESULN/ENTDCL/FENAME 等) |
Rules File (hal.def)
HAL 使用 BNF 语法定义规则文件:
# hal.def 示例
rule NOLABL -severity warning -enable
rule DESULN -severity error -enable
rule FENAME -severity info -disable
详细的 BNF 语法和每条规则的说明参见 HAL Reference Manual。
HAL 静态分析界面
HAL 静态分析方法论
HDL Analyst (HAL) 的定位
HAL 是 JasperGold 的 HDL 静态分析工具,不同于 FPV(动态证明属性),HAL 做的是结构化分析:
- 代码质量检查(未连接的端口、未驱动的信号、冗余逻辑)
- 可综合性检查(不可综合的构造)
- 时钟/复位完整性检查
- 设计复杂度分析
- 规则自定义(项目特定的编码规范)
什么时候用 HAL
- RTL 代码 review 阶段:在跑形式验证之前用 HAL 快速发现明显问题
- 代码提交 gate:作为 CI 流程的第一道关卡
- IP 交付前检查:交付 IP 前确认代码质量
HAL vs Superlint:HAL 侧重结构化、代码质量检查(不需要 prove,纯静态分析);Superlint 结合形式引擎证明 bug 可达。先用 HAL 清掉明显问题,再用 Superlint 找深层 bug。
来源文档
hal_userguide.pdfhal_reference.pdf