SystemVerilog和SystemC协同验证环境简单介绍

下图是一个典型的sv和sc协同验证环境的testbench。

systemverilog大家都比较熟悉了,UVM就是基于sv创建的一个验证方法学的库。但是systemc用的就比较少。

一般情况下,systemc用于:

  • 事务级别建模和验证
  • HW / SW协同设计
  • SOC架构分析和优化

sv和sc协同验证环境,主要应用于:

  • 使用SystemC TL模型作为SystemVerilog测试平台中的参考模型(可重用)
  • 通过常用的SV测试平台确保RTL和SystemC TL模型的一致性

SC和SV具有互操作性

SC模块可以实例化SV,反之亦然

  • - 具有混合语言组件的单模块层次结构

SC和SV调度程序需要统一的语义

  • - 混合语言系统应该像使用单一语言一样工作 

引脚级:SC信号可以绑定到SV端口,反之亦然

  • - 支持标准转化集
  • - 使用简单,但很少能匹配设计流程要求

TL:SC调用SV任务/函数,SV调用SC方法

  • - 符合大多数设计流程要求
  • - 更高的仿真和建模效率

那么怎么将SV和SC两种不同的语言连接起来呢?

大家都知道dpi可以作为c和sv之间互相访问的桥梁,那么它作为SV和SC之间的桥梁够用吗?当然不够。

DPI只能调用非阻塞方法/任务/函数,但是不能调用耗时的任务/方法。

  • 仅指定C接口,而不能指定C ++,而不能指定SystemC
  • DPI不能用于遍历SystemC层次结构,处理实例或对象不容易实现
  • DPI构建为与单线程非时序的C程序的接口

Mentor也开源了UVM Connect的库。

UVM Connect是一个基于开源UVM的库,提供TLM1和TLM2连接以及SystemC和SystemVerilog UVM模型和组件之间的对象传递。它还提供了一个UVM Command API,用于从SystemC(或C或C ++)访问和控制UVM仿真。 UVM Connect允许您在UVM验证中重用SystemC架构模型作为参考模型和/或重用SystemVerilog UVM代理来验证SystemC中的模型。它还有效地扩展了您的VIP产品组合,因为您现在可以使用两种语言访问VIP。通过UVM Connect,您可以轻松开发集成的验证环境,从而充分利用每种语言的优势,最大限度地提高验证效率。

UVM版本2.3增加了新的“快速打包程序”功能,可在通过TLM2连接传递通用有效负载时提高性能。它们还增加了对无限数据有效负载的支持以及对配置扩展的有限支持。

附录:SV和SC语言之间的数据类型映射

猜你喜欢

转载自blog.csdn.net/zhajio/article/details/81780576