1.FORMAT https://msdn.microsoft.com/en-us/library/ms713498.aspx https://msdn.microsoft.com/en-us/library/ms713497.aspx typedefstruct{ WORDwFormatTag; WORDnChannels; DWORDnSamplesPerSec; DWORDnAvgBytesPerSec; WORDnBlockAlign; WORDwBitsPerSample; WORDcbSize; }WAVEFORMATEX; Members wFormatTag 1)在Mmr...

  VDP7COGanTeB   2023年11月02日   53   0   0 数据块数据字段audio

1.测试时,有多种异常错误,在transaction中加入标志位: 1)大多数情况下,都应该为0。 2)每次都约束很麻烦: 2.出现概率非常低,也可以dist: 但何时取1,很难控制。 1)正常可以如下随机: 2)异常时,如下: 前提是m_trans已经例化,否则用uvm_do: 这样回报空指针错误。(???) 3.上述只是单独关闭了某一个约束,如下关闭所有约束: 这种情况下,要分别对crc_err,pre_err,sdf_err进行约束。 4.systemverilog支持约束的重载。依然可以使用第一种方式的my_transaction的定义,在其基础上派生新的trans...

  VDP7COGanTeB   2023年11月02日   45   0   0 空指针异常错误

1.比之前多一组控制端口,改变DUT行为: 2.transaction如下: 3.driver: 1)如果是读操作,这里直接把值赋值给rd_data。(红色) 2)也可以在sequence中,使用如下方式: 因为uvm_do执行完后,第一个参数指向刚刚被送给driver的transaction。(6.7.3) 4.my_case0: 5.验证平台框图:

  VDP7COGanTeB   2023年11月02日   45   0   0 框图赋值

1之前的方式要测试不同的sequence,必须要修改default_sequence,重新编译后才能运行。 2my_case0如下: `ifndefMY_CASE0__SV `defineMY_CASE0__SV classcase0_sequenceextendsuvm_sequence(my_transaction); my_transactionm_trans; functionnew(stringname="case0_sequence"); super.new(name); endfunction virtualtaskbody(); if(starting_phase!=n...

  VDP7COGanTeB   2023年11月02日   55   0   0 命令行测试用例字段

1.前面的my_print,my_copy,my_compare函数,虽然各自不同,但对于transaction来说,都是类似的。使用UVM中的field_automation机制,可以自动实现这3个函数,不需要我们写,my_transaction: `ifndefMY_TRANSACTION__SV `defineMY_TRANSACTION__SV classmy_transactionextendsuvm_sequence_item; randbit[47:0]dmac; randbit[47:0]smac; randbit[15:0]ether_type; randbytepl...

  VDP7COGanTeB   2023年11月02日   97   0   0 sed动态数组字段

1.在my_sequencer上同时启动两个sequence。 1)my_case0: 2)sequence0: 3)sequence1: 4)结果: 4.1)sequencer选择哪个sequence的transaction是sequence机制中的仲裁问题。 4.2)对于transaction来说,存在优先级概念,越高越容易被选中。 4.3)使用uvm_do或者uvm_do_with是,产生的transaction优先级默认是-1。 4.4)通过uvm_do_pri和uvm_do_pri_with改变transaction的优先级: 2.transaction优先级 1)...

  VDP7COGanTeB   2023年11月02日   60   0   0 优先级

1.copy 要把A的实例复制到B实例中,应该使用B.copy(A),使用前,B必须使用new分配好内存空间。 2.compare 比较A与B是否一样,可以使用A.compare(B),也可以使用B.compare(A)。相等时,返回1;否则为0。 3.pack_bytes将所有字段打包成bytes流。 返回的是size。 4.unpack_bytes:将byte流逐一恢复到某个class的实例中。 5.pack将所有字段打包成bit流。 6.unpack将一个bit流逐一恢复到某个类的实例中。 7.pack_ints将所有字段打包成int。 8.unpack_ints:把一个in...

  VDP7COGanTeB   2023年11月02日   50   0   0 内存空间字段

1.sequence要想在sequencer上启动,产生的transaction类型必须是和sequencer同样的类型,或派生自这种transaction。 2.如果不是会报错: 3.嵌套sequence的前提是,套在里面的所有sequence产生的transaction都可以被同一个sequencer接受。 4.两个截然不同的transaction交给同一个sequencer。 将sequencer和driver设置为uvm_sequence_item,根底层的类型: 5.在sequence中交替发送my_transaction和your_transaction: 1)这个se...

  VDP7COGanTeB   2023年11月02日   45   0   0 嵌套数据类型成员变量

1.UVM中常用的PORT有: 总结到一起: 1)put,get,transport都是3个。 2)peek与get类似,都是主动获取数据。是有区别的。。。 3)get_peek结合了get和peek的功能。 4)前12个的参数就是PORT中的数据类型,后3个是request的类型和response的类型。 5)如果没有指定是否阻塞,则都可以当。(都可以作只是端口的features,操作可以带阻塞or非阻塞) 6)一旦制定一种,另一种操作就不能用在port上。 2.UVM中常用的EXPORT有: 总结到一起: 1)与PORT一一对应。 2)PORT高优先级,EXPORT低优...

  VDP7COGanTeB   2023年11月02日   58   0   0 优先级数据类型高优先级

1.uvm_fatal出现时,马上结束仿真。 2.set_report_max_quit_count方式: 出现5个错误就退出: 除了写在build_phase之外,在其他phase设置也可以。(report_phase好像不行) 3.get_max_quit_count,查询当前的退出阈值。返回0表示无论多少个UVM_ERROR都不会退出,这个函数在uvm_report_server中。 4.在命令行中: <simcommand>+UVM_MAX_QUIT_COUNT=6,NO NO表示此值是不可以被后面的语句重载,还可以是YES。

  VDP7COGanTeB   2023年11月02日   63   0   0 命令行命令行
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~