首页 > 其他分享 >路科MCDF项目UVM环境搭建之virtual_sequence

路科MCDF项目UVM环境搭建之virtual_sequence

时间:2025-01-11 14:00:11浏览次数:3  
标签:do sequence virtual chnl UVM sequencer nidles data

mcdf_base_virtual_sequence

1.virtua sequence介绍:

①virtual sequence 可以承载不同目标sequencer的sequence群落,组织协调这些底层sequence可以发送到不同的底层sequencer上(通过宏`uvm_do_on直接创建并发送到virtual sequencer内的底层sequencer上),virtual sequencer一般只会挂载到virtual sequencer上。注:一般底层seq不需要“显式”创建,是通过宏创建之后发送的。

2.⭐base_virtual_sequence写法

(1)内部声明各个底层sequence

(2)创建配置数据,配置寄存器,配置formatter的虚方法,do_data,do_reg,do_formatter,以及一个diff_value函数比较两个数据。

(3)原来在sv中在test实现的方法,现在已经全转移到virtual sequence中,test成为一个“容器”。

①sv中配置方法流程为:test调用do_data、do_reg、do_formatter函数,这三个函数在内部调用data.gen(),reg_gen(),fmt_gen()函数通过配置generator产生的数据在经过系统发送到各个agent的driver中,来配置输入的数据,寄存器的配置和formatter的配置;以下是do_data示例,do_reg、do_formatter类似。

task do_data();
      void'(chnl_gens[0].randomize() with {ntrans==100; ch_id==0; data_nidles==0; pkt_nidles==1; data_size==8; });
      void'(chnl_gens[1].randomize() with {ntrans==100; ch_id==1; data_nidles==1; pkt_nidles==4; data_size==16;});
      void'(chnl_gens[2].randomize() with {ntrans==100; ch_id==2; data_nidles==2; pkt_nidles==8; data_size==32;});
      fork
        chnl_gens[0].start();
        chnl_gens[1].start();
        chnl_gens[2].start();
      join
      #10us; // wait until all data haven been transfered through MCDF
    endtask

在这里插入图片描述

②uvm中配置方法流程:在seq中调用do_data、do_reg,do_formatter函数,这三个函数在内部利用宏(`uvm_do_on_with)创建并配置发送sequence,到底层sequencer再到各个agent的driver中实现对数据,对寄存器,对formatter的配置。注:virtual sequence与virtual sequencer的挂载是在test中start。

task do_data();
      fork
        `uvm_do_on_with(chnl_data_seq, p_sequencer.chnl_sqrs[0], {ntrans==100; ch_id==0; data_nidles==0; pkt_nidles==1; data_size==8; })
        `uvm_do_on_with(chnl_data_seq, p_sequencer.chnl_sqrs[1], {ntrans==100; ch_id==1; data_nidles==1; pkt_nidles==4; data_size==16;})
        `uvm_do_on_with(chnl_data_seq, p_sequencer.chnl_sqrs[2], {ntrans==100; ch_id==2; data_nidles==2; pkt_nidles==8; data_size==32;})
      join
      #10us; // wait until all data haven been transfered through MCDF
    endtask

在这里插入图片描述

3.⭐case_sequence的写法

只需在内部里面实现在base_seq创建的空的函数的补充,也就是对do_data,do_formatter,do_reg进行填充,在函数中利用宏(`uvm_do_on_with)完成对底层seq的创建、随机化和发送。代码示例如下:

    task do_formatter();
    `uvm_do_on_with(fmt_config_seq,p_sequencer.fmt_sqr,{fifo == LONG_FIFO;bandwidth == HIGH_WIDTH;})
    endtask
    task do_data();
    fork
    `uvm_do_on_with(chnl_data_seq,p_sequencer.chnl_sqrs[0],{ntrans ==100;ch_id==0;data_nidles == 0;pkt_nidles ==1;data_size ==8;})
    `uvm_do_on_with(chnl_data_seq,p_sequencer.chnl_sqrs[1],{ntrans ==100;ch_id==1;data_nidles == 1;pkt_nidles ==2;data_size ==16;})
    `uvm_do_on_with(chnl_data_seq,p_sequencer.chnl_sqrs[2],{ntrans ==100;ch_id==2;data_nidles == 2;pkt_nidles ==3;data_size ==32;})
    join
    #10
    endtask

标签:do,sequence,virtual,chnl,UVM,sequencer,nidles,data
From: https://blog.csdn.net/m0_67409905/article/details/145076486

相关文章

  • AT_abc248_h [ABC248Ex] Beautiful Subsequences 题解
    题目传送门前置知识树状数组|序列分治解法考虑序列分治,设因\(\max\)和\(\min\)形成的分节点先后为\(k_{1},k_{2}\)。对于\(j\in(mid,k_{1}]\),等价于统计满足\(\max\limits_{h=i}^{mid}\{a_{h}\}-\min\limits_{h=i}^{mid}\{a_{h}\}\lej-i+k\)的\(j\)的......
  • 【YashanDB知识库】审计表UNIFIED_AUDIT_TRAIL出现YAS-00220 utf8 sequence is wrong
    【问题分类】功能使用【关键字】UNIFIED_AUDIT_TRAIL,YAS-00220【问题描述】当审计对象的SQL语句包含非标准中文字符时,出现YAS-00220utf8sequenceiswrong,影响审计记录。--第一步:打开审计开关SQL>ALTERSYSTEMSETUNIFIED_AUDITING=true;Succeed.--创建审计......
  • 虚拟DOM的优势(尤雨溪 对于 Virtual DOM 的优势的回答
    网上都说操作真实DOM慢,但测试结果却比React更快,为什么?-尤雨溪的回答-知乎https://www.zhihu.com/question/31809713/answer/535448751.原生DOM操作vs.通过框架封装操作。这是一个性能vs.可维护性的取舍。框架的意义在于为你掩盖底层的DOM操作,让你用更声明式的......
  • 路科MCDF项目UVM环境搭建之mcdf_refmod
    mcdf_refmod1.创建一个get_reg_trans端口,三个chnl端口,三个tlm_fifo便于与外部模块通信;2.传递接口,创建regs[3]来模拟真实的寄存器控制通道使能(en),arb优先级(prio),整合数据包的长度(len)(定义一个结构体mcdf_reg_t)。 typedefstructpacked{biten;bit[1:0]prio;......
  • [ARC138E] Decreasing Subsequence
    [ARC138E]DecreasingSubsequence题意给出\(3\leqn\leq5000,2\leqk\leq(n+1)/2\),对所有长度为\(n\)的满足\(0\leqa_i\leqi\)且正数项两两不同的序列\(a\),求长度为\(k\)的元素非\(0\)的下降子序列个数之和。思路先刻画序列。对所有\(a_i\)减去\(1\),新......
  • 虚树 Virtual Tree
    更新日志2025/01/07:开工。概念在很多树上问题中,我们会发现,实际需要的,只有几个关键点。那么我们就可以针对这些关键点进行操作。更具体地,建一棵规模更小的,但是仍能完成要求的浓缩过的树,即为虚树。思路简介首先,常识可得:除了关键点,关键点两两的\(\text{LCA}\)也需要储......
  • VirtualBox - Create a Ubuntu Virtual Machine on Windows
               ......
  • 基础知识-虚拟化(Virtualization)技术
    (250106)参考资料KVM虚拟化技术|cnblogs|惨绿少年@clsn.io虚拟化介绍|cnblogs|休耕云计算与虚拟化技术发展编年史|cnblogs|云物互联nova系列二:kvm介绍|cnblogs|linhaifeng虚拟化与容器|cnblogs|marility《LPIC-3-Virtualization-and-Containerization-......
  • [CF2053E] Resourceful Caterpillar Sequence 题解
    显然两步之内决胜负。否则两个人会来回拉扯,平局。考虑何时Aron会赢。称与叶子结点边距离小于等于\(1\)的结点为【制胜点】。开局\(q\)在叶子,\(p\)不在叶子,直接赢。方案数\(c(n-c)\),其中\(c\)为叶子数量。\(q\)在一个连着【制胜点】的点,\(p\)不在【制胜点】。Nora......
  • Create a Ubuntu Virtual Machine using VirtualBox 7.1 for Windows
                  ......