UVM - 18(Review and Lab4)

test

Makefile

  • Makefile中定义变量,在运行Makefile的时候可以传入参数
make verbosity=UVM_HIGH

packet

  • 继承自uvm_sequence_item
  • 定义随机变量并创建约束


test_base


Virtual interface

  • interface不能在class中进行例化,需要使用virtual interface
  • virtual interface需要和实际的interface进行
  • driver中定义虚接口,在使用的时候使用uvm_config_db的形式get接口
  • 可以在test中用umv_config_db的形式配置接口

UVM_base Class Tree

Lab3 - sequence

packet_sequence






  • 定义变量赋初值可以在定义变量的时候赋初值,也可以在new函数中给变量赋初值
  • pre_randomize()是在调用randomize之前进行调用的函数
  • pre_randomize和post_randomize是自动进行调用的
  • m_sequencer - 使用uvm_config_db配置其中的变量,然后设置一些约束

agent

env


test

  • 在test中的build_phase中设置sequence中变量
  • sequence在main phase阶段可以通过config_db得到配置的变量的值

Lab4 - driver and monitor

driver

class driver extends uvm_driver #(packet);
  `uvm_component_utils(driver)
  virtual router_io_sigs; // 定义接口
  int port_id = -1;

  function new(string name,uvm_component parent);
    super.new(name,parent)
  endfunction

    virtual task run_phase(uvm_phase phase);
      forever begin
        seq.item_port.get_port_item(req);
        if(port_id inside {-1,req.sa}) begin
          send(req);
        end 
        seq.item_port.item_done();

      end
    endtask


endclass




router_io(interface)



Lab5 scoreboard and monitor

monitor






scoreboard




env




posted @ 2024-03-21 02:35  Icer_Newer  阅读(19)  评论(0编辑  收藏  举报