formality验证及svf文件含义(时序验证)

Register retiming是为了满足时序或者面积需求,而将寄存器跨组合逻辑移动,这种移动可能会改变寄存器的数量和寄存器连接关系,进而引起综合出来的implementation design和reference design比较点匹配不上,所以这种优化手段通常并不建议一开始就使用,如果确实收敛困难,那么再采用这种优化手段。这时,需要在setup阶段,向formality提供register retiming信息,以帮助formality进行match和verify操作。如果采用的综合工具是DC,那么恰当的生成SVF文件,并将SVF文件提供给formality,若formality中变量svf_retiming使能(该变量默认即为真),便可以自动处理SVF文件中guide_retiming相关命令,并通过向reference design中插入黑盒子产生断点的方式来帮助比较点匹配。下面再说说,关于SVF文件的生成和使用。
触发DC工具进行register retiming优化的情况有三种:
1)使用set_optimize_registers命令对允许进行register retiming 的寄存器施加set_optimize_registers属性,然后使用compile_ultra命令触发优化。这种综合方法和传统综合方式相同,只需要生成一个SVF文件即可。
2)使用compile_ultra –retime命令触发优化。
3)在compile_ultra命令后,再使用optimize_register命令触发优化。
第(2)种和第(3)种情况下,每次DC使用compile_ultra –retime命令或optimize_register命令前,都要配置SVF文件,每次命令执行后写出网表信息,并将SVF文件和生成的网表交给formality进行一致性验证。
DC脚本举例如下所示,其中,文件compile_1.svf辅助rtl.v和compile_1.ddc之间的一致性验证;文件compile_2.svf辅助compile_1.ddc和compile_2.ddc之间的一致性验证;文件compile_3.svf辅助compile_2.ddc和compile_3.ddc之间的一致性验证。

Reference design和implementation design中存在unmatched compare points通常是由于DC优化过程中改变了比较点名称和数量所致,比如group和ungroup操作会改变设计层次以及接口命名,常值寄存器在优化过程中会被删除,寄存器复制会增加implementation design中比较点,power compiler会在implementation design中插入reference design中没有的门控时钟单元等。使用DC输出的.svf文件中的信息来帮助formality进行比较点匹配的方式很有效,这时,若仍有无法匹配点的点需要进一步做如下分析。
1)reference design和implementation design中不匹配点的数目相同么?如果相同,那么按理可能的原因是DC优化时改变了比较点名称,这时可使用set_user_match命令人工帮助比较点匹配。但其实,这种情况其实很少见,因为svf文件中的信息,一般足以帮助formality解决因为名称变化使得比较点无法匹配的问题,这时建议查看formality.log文件,看看svf信息是否有大量被拒绝的现象。如果有的话,需要检查svf文件设置的正确性、svf版本和网表版本的一致性,以及formality版本和DC版本之间的协调性。

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值