
UVM
lbt_dvshare
这个作者很懒,什么都没留下…
展开
-
【DV】常用读写register通用 task
1. 读写memoryvirtual task ral_access_read(input uvm_reg_block ral_blk,output uvm_state_e status,input bit[31:0] addr , output bit[31:0] data); uvm_sequence_base seq; uvm_sequence_item bus_req; uvm_sequencer_base sequencer; int unsigned b.原创 2022-04-03 09:42:12 · 666 阅读 · 0 评论 -
【UVM】uvm_info 如何开关打印行号和文件名
uvm_report机制,例如uvm_info、uvm_warning、uvm_error、uvm_fatal,打印出的信息包含有文件名和行号,那么uvm是如何获取文件名和行号的呢? 在uvm源代码中可以看到,调用了uvm_file和uvm_line这两个宏,这两个宏又分别指向了__FILE__和__LINE__这两个宏。关于__FILE__和__LINE__`__FILE__和`__LINE__作为编译指令,在编译阶段被替换掉:`__FILE__被替换为当前文件的文件名,以字符串的原创 2021-07-14 16:30:52 · 2163 阅读 · 0 评论 -
[UVM] run_phase 和 main_phase
对于这两个phase两者是并行执行,对于run_phase有两个选择可以使其代码执行:1. main_phase 有raise objection,运行时间受main_phase中objection控制;2. run_phase raise objection;Tips: ENV中主动方通常用main_phase,被动方通常用run_phase; driver/monitor -> main_phase scoreboard ->...原创 2020-09-19 15:51:46 · 5094 阅读 · 2 评论 -
[UVM] TLM (3)
今天聊聊analysis port 和analysis imp 是怎么连接的。下面的连接模式是典型的monior - agent - subscriber:在Agent中将jelly-beanmonitor(jb_mon)中的analysis port (jb_ap)和jelly-bean agent (jb_agent)中的analysis port (jb_ap)连接。jb_...转载 2020-03-22 14:06:09 · 437 阅读 · 0 评论 -
[UVM] factory
factory 的應用1.simv +UVM_TESTNAME=hello_world_test 通過指定test case 的名字就可以運行,test 是怎麼被創建的呢? Actually call uvm_root::run_test(), where it 1.gets test name from command line (+UVM_...原创 2018-12-05 11:30:08 · 830 阅读 · 0 评论 -
【UVM】parameterized classes
SystemVerilog uses a “#” sign to list the Parameter names in a Class Header to define a Generic Class. When we specify a default Parameter in a Class Header, we don’t have to provide an Overrides for...原创 2019-01-28 17:57:25 · 1019 阅读 · 1 评论 -
[UVM] uvm_do系列macro分析
uvm_do_on_pri_with `define uvm_do_on_pri_with(SEQ_OR_ITEM, SEQR, PRIORITY, CONSTRAINTS) \ begin \ uvm_sequence_base __seq; \ `uvm_create_on(SEQ_OR_ITEM, SEQR) \ if (!$cast(__seq,SEQ_OR_ITEM...原创 2019-01-30 11:45:46 · 6619 阅读 · 1 评论 -
[UVM]driver与sequencer的交互
上次文章写道uvm_do macro,主要涉及sequence与sequencer的交互,这次讲driver与sequencer的交互。在driver中会调用sequencer的task get_next_item,其主要包括task m_select_sequencetask uvm_sequencer::get_next_item(output REQ t); REQ req_i...原创 2019-02-16 21:59:31 · 2714 阅读 · 0 评论 -
[UVM] copy object
UVM中有提供field automation机制,可以利用UVM內建的函数,比如print,clone,copy....,今天就聊一下我用copy函数遇到的问题。class cfg1 extends uvm_object; int id; ....endclass=====================================================...原创 2019-03-22 11:39:57 · 1465 阅读 · 0 评论 -
【UVM】include_coverage not located message
有時在simulation时遇到不明來歷的log message,如下所示:include coverage not located did you mean a_cfg? debug發現在create ral model 時引入的if(uvm_xxx_ral_model == null)begin uvm_xxx_ral_model = ral_uvm_xxx::...原创 2019-04-30 10:00:13 · 2564 阅读 · 2 评论 -
[UVM] ral test 测项分析
在module /chip 中要访问寄存器,就要用到ral model ,对寄存器的测试包含哪些内容呢?检测register复位值是否正确 检测寄存器的类型是否和ralf file中规定的一致 (RO/WR/W1C...) bit cross test(检测同一register 和不同register的bit之间是否有粘连生成ral model ralgen -uvm-l ...原创 2019-07-20 14:36:55 · 3460 阅读 · 0 评论 -
[UVM] field automation 局限性
最近在帮同事debug时发现一个问题:class tr extends uvm_sequence_item; ... bit[3:0] data_q[4][$]; `uvm_object_utils_begin(tr) `uvm_field_queue_int(data_q[4],UVM_DEFAULT) //`uvm_field_queue_int(data_...原创 2019-08-11 16:03:47 · 2204 阅读 · 1 评论 -
[UVM] ral model get_reg_by_name
今天记录一下get_reg_by_name 应用的例子uvm_reg reg00[$];int read_data;uvm_status status;reg00[0] = p_sequencer.rm.STRM_blk.get_reg_by_name("STRM_MODE1_0");reg00[1] = p_sequencer.rm.STRM_blk.get_...原创 2018-10-12 13:12:27 · 2004 阅读 · 0 评论 -
【UVM】 uvm_barrier
UVM提供uvm_barrier对多个组件进行同步协调,同时为了解决组件独立运作的封闭性需要,定义了新的类uvm_barrier_pool来全局管理uvm_barrier对象。 uvm_barrier 可以设置一定的等待阈值,仅在有不少于该阈值的进程在等待该对象时才会触发该事件,同时激活所有正在等待的进程,使其基础进行。 wait_for Waits for enough pro...原创 2018-09-15 14:47:39 · 712 阅读 · 0 评论 -
[UVM] factory override debug information
在UVM中如何判断override是否成功呢?1. 对于component 在build phase之后(比如connect_phase)调用 uvm_top.print_topology();2. 对于object 在build phase之后调用 uvm_factory::get().print() 如果是transaction,可以直接调用 tr.sprint() ...原创 2018-06-12 10:52:22 · 762 阅读 · 0 评论 -
【UVM】start function 和uvm_do 启动sequence
經常使用這兩種方式啟動sequence,那它們有什麼區別呢?startvirtual task start (uvm_sequencer_base sequencer, uvm_sequence_base parent_sequence = null, int...原创 2018-06-06 10:33:56 · 4007 阅读 · 0 评论 -
[UVM] kill sequence
默认条件下,stop_sequence 会递归kill 掉子sequence,前提是已经建立了父子关系。如何建立sequence的父子关系呢? 1. 使用uvm_do/uvm_do_on启动sequence(自动建立父子关系); 2. 如果使用start启动sequence,则需要手动指定parent_sequence; virtual...原创 2018-06-06 14:33:56 · 10293 阅读 · 2 评论 -
[UVM]put_response () 如何从seq_item_port调用到sequencer的put(t) method
可结合 uvm_do分析 来看此文章~~好了,开始正题~~~ driver: seq_item_port.get_next_item(req); $cast(rsp,req.clone()); drive_one_pkt(req); rsp.set_id_info(req);//回response 一定要加上这句!!! se...原创 2018-06-09 17:38:59 · 5584 阅读 · 0 评论 -
[UVM] TLM (1)
class uvm_blocking_put_export #(type T=int) extends uvm_port_base #(uvm_tlm_if_base #(T,T)); function new(string name, uvm_component parent, int min_size=0, int max_size=1); super.new(na...原创 2018-07-04 13:40:19 · 306 阅读 · 0 评论 -
[UVM]TLM (2)
TLM FIFO把uvm_tlm_fifo中常用的task/function list 在下面,如果fifo例化在接收端的component中,那接收端就可以直接调用get,而不用在例化port/export.使用FIFO时,一端用put 类型的port,另一端用get 类型的port。put_ap和get_ap的作用可以参考后面code。nametypeput_exportuvm_put_imp...原创 2018-07-05 14:20:45 · 1331 阅读 · 1 评论 -
[UVM] uvm_create与type_id::create
最近有遇到以下场景: 在sequence中do item 的方法如下,而不是直接用uvm_do:req = packet::type_id::create("req");req.randomize();`uvm_send;在test中调用set_inst_override_by_type把sequence中的req override;但最终并没有override 成功;如果用uvm_...原创 2018-08-03 14:23:41 · 18571 阅读 · 1 评论 -
[UVM] ral model 中的write和read
在使用ral model时,会用到write 和read 操作,今天就讲一下~~首先讲一下task write & read: virtual task write (output uvm_status_e status, input uvm_reg_data_t value, i...原创 2018-09-07 13:04:59 · 8073 阅读 · 0 评论 -
[UVM] event
今天翻到自己以前的笔记看到uvm event,所以在这记录一下其用法。 wait_on Waits for the event to be activated for the first time.wait_off If the event has already triggered and is “on”, this task waits for the event to b...原创 2018-09-13 18:56:58 · 2457 阅读 · 0 评论 -
【UVM】uvm_config_db tips
uvm_config_db 在UVM时经常被用到的,但最近在调试同事环境的时候,有一点跟我之前的认知是不一样,所以在这记录一下。场景如下:class env extends uvm_env; ... function void build_phase(uvm_phase phase); super.build_phase(phase); agt = agent::...原创 2018-09-19 11:02:54 · 925 阅读 · 0 评论 -
[UVM] reg map
ral model 中涉及到不同的map,这边给一些例子~~class my_regmodel extends uvm_reg_block; ... uvm_reg_mapcpu_map; uvm_reg_mapgpu_map; ... cpu_map= create_map("cpu_map", 'h0, 2, UVM_LITTLE_ENDIAN); cpu_m...原创 2018-09-14 12:53:13 · 2079 阅读 · 5 评论 -
[UVM] PLUSARGS
function int get_arg_matches (string match,ref string args[$])获取与字符串match的内容匹配的参数,结果存储在args字符串队列中; functionint get_arg_value (string match, ref string value)获取与字符串match匹配的参数值,如“+incdir+”后面的信息,仅获取...原创 2017-03-25 13:49:27 · 952 阅读 · 0 评论