SV核心知识(3)

interface clocking

作用:用来进行事件的同步,输入的采样,输出的驱动。

线程的控制

  • fork join等所有线程都执行完毕,才跳出循环。
  • fork join_any只要有一个线程执行完,就跳出循环
  • fork join_none只是启动所有线程,并不等他们执行完毕。
  • 如果希望所有fork块都执行完毕再退出,我们可以使用wait_fork语句。
  • 我们可以使用disable来停止线程。

组件的通信

  • event ,单一的通知功能,用来做事件的触发。@是边沿敏感,阻塞等待事件的变化,wait(e1.triggered()是电平敏感。
  • semaphore,共享资源的安全卫士。使用前要用new对其进行初始化
  • mailbox,精小的SV原生fifo。也需要使用new对其进行初始化。

覆盖率

  • 代码覆盖率主要有:行覆盖率,路径覆盖率,翻转覆盖率,状态机覆盖率
  • 断言覆盖率
  • 功能覆盖率,如果覆盖率稳步增长,那么我们添加新的种子或者加长测试实际即可。如果增速放缓,那么需要添加额外的约束。如果覆盖率停止增长,那么需要创建新的测试用例。
  • 翻转覆盖率

回调函数

验证环境被移植做水平复用或者垂直复用时,应当尽可能少的修改模块验证环境本身,只在外部最少量的配置,一方面我们可以通过顶层环境的配置对象自顶向下进行配置参数传递,另一方面我们可以预留回调函数入口,在继承的子类中填充回调函数,完成对父类的修改。

参数化的类

参数化的使用时为了提高代码的复用率,例如class mail box #(type T=int ) 后期类在声明变量时,如果不指定参数类型,则默认采用int类型,参数化的类可以在后期例化时使用不同的参数,以此来存储不同的数据类型。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值