关于VCS hvp planner的粗浅理解

笔者刚开始接触HVP的时候,是用verdi界面创建的,对里面有很多概念,feature,measure,metric,attribute,annotation一知半解,尤其是metric比较难理解,后来看了user guide之后发现,如果把hvp当成一个synopsys自定义的一种编程(标记)语言就容易理解很多了。

计划的基本结构:

  • 当前计划的名称
    • 本计划里一些全局继承的属性定义attribute
    • 本计划里一些定义给全局,但是不继承的属性定义annotation
    • 编写者自定义度量单位metric(度量单位理解成被测量对象的类型更好)
    • 验证对象的特性1feature1
      • 这个特性1具有的attribute或者annotation重载(也就是赋值)
      • 针对特性1声明一个measure1并指明其所测对象的类型
        • 与测量类型匹配的源(验证环境中的实体)source
      • 针对特性1声明一个measure2并指明其所测对象的类型
        • 与测量类型匹配的源(验证环境中的实体)source
    • 验证对象的特性2feature2
      • 这个特性2具有的attribute或者annotation重载(也就是赋值)
      • 针对特性2声明一个measure3并指明其所测对象的类型
        • 与测量类型匹配的源(验证环境中的实体)source
      • 针对特性2声明一个measure4并指明其所测对象的类型
        • 与测量类型匹配的源(验证环境中的实体)source
    • 子计划1名称
    • 子计划2名称
  • 计划体结束

逐个内容说明:

  1. 先从最难懂的metric开始:我们要验证一个电路,目标是确定这个电路是否正确实现了需求,这个需求其实就是所验对象的特性,那么假如你根据结果知道设计工程师已经正确实现了,但是如何告诉别人呢? 最直接的做法,就是告诉他,你看我这个coveragegroup是什么意思,它达到了多少覆盖率,里面某个bin是什么意思,你看我已经测到了,还有这个名字的case是什么意思,你看这个log说明它已经跑完了。以上这个过程,如何进一步整理出来,等别人问起,甩给他一个表格就可以了,我想这就是hvp的目的。那么上述过程中的covergroup和什么名字的case,case pass了几个,就是所谓的metric。
    synopsys 预定义了一些metric,比如Line Cond FSM toggle Branch 分别对应不同的code coverage,group用来对应function coverage, 还有一些其他,可以自己找ug看。
    另一种方式就是自己定义metric,自己定义metric时,metric自带的属性需要选择后确定,比如你所定义的metric type是什么,这个metric的测量结果在最终结果上的统计方式是什么等。哪些自带的属性可配置可以参考ug。需要说明的是自定义的metric是需要定义在feature外面的,全局可以用。

  2. measure,一般结构就是

measure metric  measure_name
	source=“ ”,“ ”,“  ”;
endmeasure

metric已经讲过了,measure_name只是对测量的这个动作取个名字,最重要的是source,这个是把一个抽象的测量类型和验证环境中真正的实体对应起来,这样synopsys工具在进行数据反标时就可以找到数据库中的数据了。source填写的格式和metric是有关系的,比如metric是个Line code coverage的话,source需要是rtl的某个instance或者module,如果metric是一个function coverage的话,source需要是某个已经定义好的covergroup。
描述一个电路特性是否被正确实现可能需要很多方面的数据,因此一个feature下面可以有很多个measure。

  1. 另外两个概念就没那么重要了,attribute比较偏向于设定一个全局属性,因为它具有可继承性,plan头上写好之后,其后的feature和measure如果不改写,就沿用。annotation更像是一些注释内容,为了看的人容易区分段落(瞎猜的)。synopsys预定义了两个attribute,一个是owner一个是at_least, ug上说at_least的设定会影响反标结果。也预定义了两个annotation,一个是weight,一个是description,其中weight的设定会影响反标结果。 这两个类型的变量也可以自定义,自定义格式可以参考ug。

  2. 特别值得一提的是,自定义的attribute和annotation是可以作为被引用字符放在source的字符串中的。

今天写得比较匆忙,后续再补充。(是我的问题还是网页的问题,排版好难用啊-.-||||||)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值