在文章数字IC验证系列之config\_db&virtual interface中我们已经简单地描述过factory设计模式或者说factory机制,在这篇文章中将阐述factory机制在UVM中的具体应用。
在UVM中,我们不应该一直使用new()构造新的components和transactions,而应该从某个查找表中申请创建新的components和transactions,这种创建方式称为factory机制。
首先在定义components和transactions的时候同时将其注册到查找表中,然后使用**create()**方法创建components和transactions。也就是说,通过UVM factory机制可以无需更改测试平台代码就可以完成components和transactions的替换
STEP1:Factory Registration
每个UVM components和transactions都必须进行注册,如下代码所示:
注册components
注册transactions
上述代码中的new()只是用作创建默认的components和transactions
STEP2:Component & Object Creation:
在UVM的factory机制中在较高层级components和transactions中创建较低层次的components和transactions。
在上面的代码中,在my\_driver类中的run phase完成my\_transaction的创建,在my\_agent类中的build\_phase完成my\_driver的创建,这是因为transactions和components在仿真过程中生命周期的区别
STEP3:Type Overriding(set\_type\_override)
上述STEP1和STEP2只是换了种方式完成transactions和components的创建工作,factory机制中更精髓的地方是在test case中通过set\_type\_override替换经过factory注册过的transactions和components,而不需更改整个验证环境
本文转载自公众号:芯片数字实验室
原文链接:https://mp.weixin.qq.com/s/gl9MtiYOmX-4HrkmnDq0yw
未经作者同意,请勿转载!
推荐阅读
想了解更多内容,欢迎关注芯片数字实验室专栏