UVM
文章平均质量分 78
汶.z
你好,阳光
展开
-
关于UVM中的sequence(五)
8、sequence的进阶应用嵌套的sequence假设一个产生CRC错误包的sequence如下:另外一个产生长包的sequence如下:现在要写一个新的sequence,它可以交替产生上面的两种包。那么在新的sequence里面可以这样写:似乎这样写起来显得特别麻烦。产生的两种不同的包中,第一个约束条件有两个,第二个约束条件有三个。但是假如约束条 件有十个呢?如果整个验证平台中有30个测试用例都用到这样的两种包,那就要在这30个测试用例的sequence中加入这些代码,这原创 2021-12-25 17:23:49 · 745 阅读 · 0 评论 -
关于UVM中的sequence(四)
5、sequence中使用config::db在sequence中获取参数能够调用config_db::get的前提是已经进行了set。sequence本身是一个uvm_object,它无法像uvm_component那样出现在 UVM树中,从而很难确定在对其进行设置时的第二个路径参数。所以在sequence中使用config_db::get函数得到参数的最大障碍是路径问题。在UVM中使用get_full_name()可以得到一个component的完整路径,同样的,此函数也可以在一个seque原创 2021-12-25 17:21:45 · 3989 阅读 · 0 评论 -
关于UVM的Sequence(三)
virtual sequence 的使用实现sequence之间同步的最好的方式就是使用virtual sequence。从字面上理解,即虚拟的sequence。虚拟的意思就是它根本就不发送transaction,它只是控制其他的sequence,起统一调度的作用。如图所示,为了使用virtual sequence,一般需要一个virtual sequencer。virtual sequencer里面包含指向其他真实sequencer的指针:在base_test中,实例化vsqr,并将相原创 2021-07-21 20:36:07 · 429 阅读 · 0 评论 -
关于UVM中的Sequence(二)
2、sequence的仲裁机制关于sequence的仲裁有一个很好的例子;之前有一个比喻说sequencer像一把枪,sequence是弹夹,transaction是子弹。这样的话就可以理解为sequencer这把枪可以支持多个弹夹,其中每个弹夹都有不同的子弹。但是在一个确定的时刻只能有一颗子弹被发射。这样的话就有两种方式去控制子弹的发射,第一种是,给弹夹赋予不同的优先级,先发射高优先级弹夹里的所有子弹,等高优先级弹夹里的子弹全部发射完毕后,再发射低优先级弹夹里的子弹,第二种是,不同弹夹具有相同的优原创 2021-07-21 20:33:52 · 1558 阅读 · 0 评论 -
关于UVM中的Sequence(一)
1、sequence存在的意义sequence机制的目的是为了将激励的产生功能从driver中剥离出来。这样在不同的测试用例中,就可以将不同的sequence设置成sequencer的main_phase的default_sequence,当sequencer执行到main_phase时,发现有default_sequence,那么它就启动sequence。这样就可以在不改变driver的情况下完成不同的激励驱动。sequence的启动与执行note:都要指定一个sequencer来指原创 2021-07-21 20:31:45 · 564 阅读 · 0 评论