UVM环境自动生成工具(1)uvmgen

介绍

uvmgen是VCS自带可执行文件,可以用于uvm环境的生成。

使用流程是运行uvmgen,然后通过敲入需求,生成需要的uvm环境,环境只能包含1个主agent和1个从agent。

使用步骤

生成环境

terminal输入uvmgen,然后会弹出很多问题。
首先可以选择生成1完整环境或者2组件模板,组件又包含agent、driver、seq等。

在这里插入图片描述

后面会继续填写环境、agent名称,和各个组件名称(明明自动加缀就好),和是否添加寄存器模型等问题。
其中有一个问题是do you want create your own methods,正常选否,会使用`uvm_object_utils这些uvm宏语句,如果选是脚本会替换成sv语句。

仿真

使用uvmgen命令后会出现环境名同名的目录,就是仿真环境。在run目录下执行make comp和make run分别实现编译和仿真。
个人使用vcs版本2022,没有遇到不加-full64的问题,但因为monitor里有$finish,仿真会提前结束。
在这里插入图片描述

生成环境

(1)test
首先通过Makefile看到执行的tc是vrf_test,在对应文件中可以看到执行的seq是mst_seqr_sequence_library。

  virtual function void build_phase(uvm_phase phase);
    super.build_phase(phase);
    env = vrf_ral_env::type_id::create("env", this);
    uvm_config_db #(uvm_object_wrapper)::set(this, "env.master_agent.mast_sqr.main_phase",
                    "default_sequence", mst_seqr_sequence_library::get_type()); 
  endfunction

(2)seq
在seq文件中,可以看到2个agent的seq分别发起10次传输。

virtual task body();
	repeat(10) begin
		`uvm_do(req);
	end
endtask

(3)driver

在driver中可以看到会调用空task,没有任何行为,需要手动需修改,monitor也类似。

task mst_drv::run_phase(uvm_phase phase);
   super.run_phase(phase);
   // phase.raise_objection(this,""); //Raise/drop objections in sequence file
   fork 
      tx_driver();
   join
   // phase.drop_objection(this);
endtask: run_phase

task mst_drv::tx_driver();
endtask : tx_driver

总结

脚本定位还是生成模板,环境直接用比较毛坯,还需要很多手工修改,而且作为Synopsys VCS自带工具和自己的VIP也没有联动,如果真有需要感觉还不如直接用VIP的example来改,或者让豆包生成一个模板。

参考
uvmgen的使用及其产生的UVM环境介绍-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值