验证经验积累

  1. SV中存在一个data的类,用data的类声明一个变量数组【16】,通过for循环采用type_id::create形式进行例化创建
    data data_arr[16];
    for(int i=0;i<16;i++)begin
         data_arr[i] =data::type_id::create($sformatf("data_arr[%0d]",i));
    end

  2. .通过struct构建的数组结构体无法通过域的自动化声明进行注册,可采用Class方式对数据进行封装,然后再例化,可通过·uvm_field_sarray_object进行宏注册

  3. 通过静态数组声明的变量进行自动化域注册后,调用其打印函数后会省略部分

    要解决这个问题参照微信收藏

  4. event使用总结:声明一个event事件a之后,使用->操作符可以触发事件a,@a和wait(a.triggered)区别为,@a为瞬时的在->a瞬间被触发随后被重置,在单独的线程循环中可以多次阻塞,值得注意@a执行需要在->a之前;wait(a.triggered)为在->a的某一个时刻触发,随后在该时钟内时钟为真,在软件无限循环中->a之后wait(a.triggered)则会一直为真从而死循环,需要再其内部添加延时语句,此外延时语句和>a时间不一致则即使在之前触发a事件a.triggered也会为假,wait(a.triggered)需要注意该线程中延时语句和>a时间同步,否则会导致a.triggered不会被触发;

  5. iff使用:Systemverilog在@事件控制中添加了iff修饰词,只有当iff后的条件为真时,@事件才会触发。注意,iff可以在always和always_ff下使用,但是不能在always_comb、always_latch中使用;例如always @ (posedge clk iff en)表示:在en为高的clk上升沿才能驱动always语句块中的语句

  6. 如何修改UVM仿真过程中uvm_error错误数量:UVM环境可以在build_phase中使用set_report_max_quit_count(15)来设置报告中容许报错的数量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值