文档介绍:UVM实战指南
D
    在sysverilog中,没有函数指针的概念,因此必须将函数包装成为一个对象,就是上面例子中的callback class. 而为了在widget的对象中使用这个函数对象,必须事先在设计好的调用点对callback对象中的函数进行逐个调用(代码19-21行)。
    widget的对象事先并不知道有多少callback对象,而是将所有的callback对象放到自己的一个callback对象队列中(cb_queue)。然后逐个对这个队列中的所有对象进行函数调用。
    上面的程序编译执行后,结果如下:
widget run....
=========== After Add base Callback
base callback run
widget run....
=========== After Add extention Callback
base callback run
ext callback run
widget run....
    可以看出,在执行的过程中,可以对widget对象进行动态的添加callback,从而动态的改变widget对象的动作。
    上面的例子非常简单,仅仅是输出一些讯息而已,有一些局限:
这个callback结构并不能够真的改变widget对象的内部成员,以及处理的数据内容,仅仅能够输出一些讯息。
对每一个widget的对象,都需要单独添加相关callback对象,假如程序中又创建了一个新的widget对象,那么这个对象的callback queue初始是空的,也就是没有callback。必须再次添加才能让这个新的widget调用相应的callback功能。
callback只有一个地方,可以扩展到多个地方。另外也可以使用function,而不仅仅是task.
工厂模式的简单理解
首先,如果一个客户要用到一款手机,一般的做法是客户去创建一款手机,然后拿来用:
 
这时,客户需要知道怎么去创建一款手机,,就出现了工厂类,把创建手机的操作放到了工厂里面去,客户直接使用工厂的创建手机方法,传入想要的手机型号就行了,而不必去知道创建的细节.
 
随着手机种类越来越多,简单工厂模式出现了弊端,每次新加入手机品种,,而每增加一种新的手机,就增加该手机对应工厂类的实现,这样工厂的设计就可以扩展了,而不必去修改原来的代码:
 
随着工厂规模的继续扩大,:,,把手机工厂跟充电器工厂联系在一起:
抽象工厂模式 工厂方法模式 简单工厂模式
UVM实战指南——第1部分  
2010-10-31 21:54:15|  分类: SystemVerilog |  标签:uvm  |字号 订阅
验证的复杂度已经明显超过设计。为了处理复杂度,面向对象,设计模式等软件设计的思想逐渐渗透到了硬件设计领域。UVM的适时提出,有望能够尽早一统江湖,不再有各门各派军阀割据。
最近,出了一本UVM新书,工作之余,我抽空进行翻译,供大家参考。
英文来源:-- 
UVM实战指南——第1部分
这篇文章是新书《A Practical Guide to Adopting the Universal Verification Methodology》的第四章 UVM library基础的节选。这一章的后续会在之后4周的周一连续发表。如果等不及,。
作者:Sharon Rosenberg and Kathleen A. Meade, Cadence Design Systems