jasper gold c2rtl是形式化验证工具的一种,其功能是验证rtl输出与golden的c model的输出一致性。适用于验证算法模块,图像处理模块,加密解密模块等计算密集型模块
因为C model中没有时序的概念,输出是和输入在一个cycle中产生,因此c2rtl适合验证rtl的datapath。
图中,spec为C model,Imp为RTL。每个cycle产生输入时,spec在其当前cycle产生对应的result,而Imp需要若干延迟才能产生输出,因此对比时要考虑delay 的cycle数目。
在实际应用中,某些RTL module可能没有确定的delay数目,在验证过程中,如果条件允许,需要对输入按照delay数目进行分类,降低验证复杂度,否则c2rtl可能不会收敛或相当长时间才能收敛(验证100%通过)。
c2rtl的流程大致如下图所示:
- 编译c model代码和rtl代码(check_c2rtl -compile)。
- setup,添加IO映射(check_c2rtl -setup /-map/unmap)。
- 添加clock和reset配置。
- 添加assumptions assertion coverpoint。
- 开始证明。