HECTOR在算法模块形式化数据通路验证中的应用

SNUG China 2018 2018 24 页

HECTOR在算法模块形式化数据通路验证中的应用

作者: Yu Zhishuai (HUAWEI TECHNOLOGIES CO., LTD) 会议: SNUG China 2018 页数: 24 源文件: SNUG_CN_Dorso_Untitled_paper_7.pdf


Page 1

Figure

HECTOR在算法模块形式化数据通路验证中的应用

Yu Zhishuai HUAWEI TECHNOLOGIES CO., LTD 2018/6/4, China


Page 2

Figure

议程 - 背景 - HECTOR介绍 - 典型应用场景 - 相关统计数据 - 总结与建议


Page 3

Figure

背景 — 算法运算的特征 - 密集型计算,并行计算 - 算法函数,矩阵运算 - 浮点/定点计算 - 对精度和速度的高要求


Page 4

Figure

算法验证的挑战 — 规模 芯片的规模在不断增长,但验证周期有限,验证工程师的数量不会以芯片规模增长的速度增长。


Page 5

Figure

算法验证的挑战 — 验证空间 - 不可能遍历所有可能的输入 - 构建覆盖率模型和运行数千个测试用例需要大量时间


Page 6

Figure

算法验证的挑战 — 过多的监控器 - 大量内部节点需要监控,以发现可能在输出端观察不到的内部错误 - 这些大量监控器增加了验证工程师的工作量


Page 7

Figure

算法验证的挑战 - 算法仿真效率低 - 很难通过仿真100%证明算法模块 - 只有有限的信号可以与参考模型进行比较 - 难以从DUT和RM的不一致性中定位RTL错误 - 算法模块验证过程中调试时间过长


Page 8

Figure

等价性检查的多种应用 - 事务等价性(HECTOR):比较事务结束时的输出,假设输入相等 - 时序等价性(VC Formal SEQ):比较每个周期的输出,假设输入和起始状态相等 - 布尔等价性(Formality):匹配比较点,比较布尔扇入逻辑


Page 9

Figure

HECTOR介绍 - 证明独立开发模型的一致性 - 穷举验证连续设计改进 - 不需要测试平台、断言或覆盖率


Page 10

Figure

HECTOR介绍(续) - 应用领域:块级、数据通路、事务等价性和属性检查 - 事务长度必须是有界的(几十个周期可以,数百个或更多效果不佳)。组合设计可以 - 如果事务相对独立,HECTOR最容易使用 - 事务间保留大量状态会增加设置复杂性 - 容量取决于内部等价性和/或可识别的设计结构 - 主要商业应用:FPU和算法函数


Page 11

Figure

HECTOR介绍 — C/C++要求 - 编译时每个循环的最大迭代次数必须已知 - 最大递归深度必须已知 - 有限使用动态内存分配(new, delete) - 不支持的功能:预编译库不能被引用 - 所有源代码必须由HECTOR编译


Page 12

Figure

验证方法 - C++/C模型与RTL之间通过HECTOR进行一致性检查 - 仿真和HECTOR是互补的


Page 13

Figure

典型应用场景 — 浮点(fp32)乘加运算

X * X + X * X + ... + add
FP32输入 → 浮点乘法和加法


Page 14

Figure

典型应用场景 — 浮点(fp32)乘加运算

属性详情
模块浮点乘法和加法
特征FP32计算,包括乘、加、减、截断操作等
验证空间无限验证空间,仿真不能覆盖所有输入组合场景
RTL代码行数< 1000
C/C++代码行数< 500
HECTOR验证时间< 1天(HECTOR运行3小时)
HECTOR优势更快的收敛速度,验证空间完整
发现Bug数2

Page 15

Figure

典型应用场景 — 多级乘法

属性详情
模块多级乘法
特征定点计算,包括乘、加、移位、舍入等
RTL代码行数< 1000
C/C++代码行数< 500
HECTOR验证时间< 1天(HECTOR运行20小时)
HECTOR优势计算链路长,HECTOR可遍历所有边界情况
待改进运行时间长,级数越多操作耗时越多
发现Bug数1

Page 16

Figure

典型应用场景 — 移位操作

(图示:多个移位、交叉开关、加法混合操作的数据通路)


Page 17

Figure

典型应用场景 — 移位操作

属性详情
模块移位操作
特征超过8个输入,不同数据宽度;多个MUX、截位、移位和加法混合;多个流水级
RTL代码行数< 500
C/C++代码行数< 200
HECTOR验证时间< 1天(运行40分钟)
HECTOR优势不需要大量随机用例即可快速证明;减少人力和机器资源
发现Bug数2

Page 18

Figure

典型应用场景 — 查找表

属性详情
模块查找表
特征大规模查找表,输入复杂
RTL代码行数< 24000
C/C++代码行数< 1000
HECTOR验证时间< 1天(编译时间长,运行时间短)
HECTOR优势可遍历所有输入,效率更高
待改进编译时间长,最大规模有限
发现Bug数1

Page 19

Figure

相关统计数据 — HECTOR在算法验证中的统计

指标数据
用户数5
HECTOR使用的模块数> 50
RTL代码行数> 30,000
C++/C模型代码行数> 7,000
HECTOR发现的总Bug数> 50
效率提升(Bug发现)> 50%
效率提升(算法证明)>> 100%

Page 20

Figure

相关统计数据 — HECTOR与其他工具对比

模块HECTOR其他工具
FP32 乘加< 3小时(证明)20天(不完整)
多级乘法< 20小时(证明)10天(不完整)
FP33_mult< 10分钟(证明)Error(规模太大)

Page 21

Figure

总结与建议 — 优势 - HECTOR环境易于搭建 - 约束容易添加 - 验证空间完整 - 在验证算法模块方面效率更高,更少的工序和时间 - Bug发现和定位效率高 - 与仿真互补


Page 22

Figure

总结与建议 — 待提升 - C++/C模型需要为HECTOR进行调整 - 对控制逻辑的支持不友好 - 对模块规模有严格要求,适合模块级(不适合BT/IT/ST) - 无法实现精确的覆盖率统计 - 完全证明判断的准确性有待提高


Page 23

Figure

总结与建议 - 在验证算法模块方面高效,用于检查RTL与C/C++/SystemC的一致性 - 计算模块的完整性保证 - 效率提升明显 - 需要更多专用求解器


Page 24

Figure

谢谢!Thank You


图片索引

本文共 138 张图片,存放于 SNUG_CN_Dorso_Untitled_paper_7_images/ 目录。