UVM lab02解析

lab2主要是写一个test,给test override一个sequence, 把trans里的一个field改成3。
解释要点:

  1. 实验要求
  2. 新写test,加constraint
  3. 跑仿真,makefile改一下,test.sv改成小写,命令为:make TEST=test_da_3_inst
  4. 看log,解释instance override的作用
  5. 改一下override方式,改成env.i_agent*.seqr.packet_sequence.*, 再跑仿真试试看。
  6. 改一下override方式,改成env.i_agent*.seqr.packet_sequence.req, 再跑仿真试试看。这里指定的就是全路径
  7. 第二个例子:set_type_override_by_type和set_inst_override的区别是,前者是全局的,后者的路径是指定了override的范围。

lab3:

实验要求:如何用uvm_do;写一个sequence

  1. 注释里的话,看一下,想一想rtl
  2. packet_sequence里,63行解释一下config_db。从资源池里拿一个叫“item_count”的值。如果拿不到,也不会报错。搜索解释一下item_count的意义 - trans个数。
  3. 多考虑写tb的时候,要做足够多的控制逻辑,可配性越高,test ben ch就越灵活.
  4. 看test collection,如何给config db set 值。
  5. 为什么在pre_randomize()? 只会在sequence启动之前,会做随机化,可以用这里的call back.
  6. 在test的build phase去set函数;在run_phase, sequence start(此处是default sequence)的地方去get,一定能get到。写test的时候要保证,set一定要在get之前。
  7. 最后da结果都是3,不但可以通过override,还可以用8=‘100,配置第三个口enable。da一直=3
  8. 看一下router_env.sv, 配置了reset agent. 目前还没有driver,产生的trans还没地方送。后面再用。这里不是重点。

你可能感兴趣的:(java,开发语言)