| ||
UVM指令API
UVMC除了可以实现SV与SC的TLM通信以外,还为SystemC/C/C++提供了控制UVM特性的API接口。这些API可以分为:
等待UVM到一个特定的仿真阶段(phase)
挂起或者放下objection以此来控制UVM test进程。
通过UVM config_db来设置或者得到配置对象。
通过config_db来覆盖(override)类或者实例的类型。
打印UVM环境组件的拓扑结构(topology)。
为了使能SC一侧的UVMC API,用户需要在SV一侧调用UVM test前调用uvmc_cmd_init()。这个函数便会在后台监听从SystemC传来的UVM command请求并且做出响应。
在SC一侧可以利用UVMC来使用UVM的报告机制,通过传入的参数可以设置报告的等级、文本和冗余度。这些信息在SV一侧也支持过滤等功能,如同UVM的宏一样,UVMC也可以利用宏来发送报告。
UVMC也支持set/get config,而对象不只限于整形、字符串,还可以是对象。这里建议使用通过对象来配置,这种方式可以一次容纳多个变量(整形、字符串等)并且完成配置。在传递配置对象前,用户需要定义一个相应的配置类,并且将其在SC一侧完成转化,转化的方式如下:
而从下面的例码中可以看出,使用单一类型传递(整形、字符串)的出错概率要比使用配置对象传递的概率高,而且后者更容易调试。
UVMC也可以用来等待UVM phase的状态,同时通过objection机制来控制UVM test的进程。
UVM facotry的override机制通过UVMC也可以使用,而且UVMC还提供了调试的方法用来检查工厂中类覆盖的状况。
在使用UVMC来打印UVM的环境结构之前,你需要等待UVM的build phase结束,再调用相应的打印函数。
关于UVMC更多的内容和培训资料,路粉们可以在下面的链接中得到。
https://verificationacademy.com/topics/verification-methodology/uvm-connect
谢谢你对路科验证的关注,也欢迎你分享和转发真正的技术价值,你的支持是我们保持前行的动力。