
UVM实战
文章平均质量分 73
UVM实战的一些例子代码详解
马志高
IC验证工程师/SOC系统集成工程师
展开
-
UVM中sprint和print的区别
分析:sprint返回字符串类型层次结构等。print不返回数据,但是将数据和层侧结构打印到终端。以上两种写法是成等价关系的,在log中打印的信息是相同的。但是是不可以混用,比如下面两种写法就是错误的。sprint和print的正确写法。原创 2024-09-30 10:40:50 · 501 阅读 · 0 评论 -
UVM的callback机制
endtaskendclassA类一定要从uvm_callback派生,另外还需要定义一个pre_tran任务,此任务的类型一定要是virtual的,因为从A派生的类需要重载这个任务。(1)定义一个A类(2)声明一个A_pool类(3)在要预留callback函数/任务接口的类中调用uvm_register_cb宏(4)在要调用callback函数/任务接口的函数/任务重,使用uvm_do_callbacks宏(5)在A类派生一个类,在这个类中定义好pre_tran。原创 2024-11-07 17:33:49 · 2803 阅读 · 0 评论 -
断言实战 ---断言详解APB时序
在特定条件或事件序列的故障上生成警告或错误收集功能覆盖率的数据断言一般出现在那些位置:interface, module,clocking,program。原创 2024-11-01 16:18:47 · 3780 阅读 · 0 评论 -
UVM实战(张强)--- UART实例代码详细注解
(1)DUT:待测平台,这里为uart串口功能(2)sequence:创建一个my_straction的实例m_trans,将其随机化,最终将其送给sequencer(3)sequencer:uvm_sequencer就如同一个管道,从这个管道中产生连续的激励事务,并最终通过TLM端口送至driver一侧(4)driver:该类会从uvm_sequencer中获取事务(transaction),经过转化进而在接口中对DUT进行时序激励(5)monitor:负责把transaction级别的数据转变为原创 2023-02-02 14:15:56 · 14936 阅读 · 1 评论 -
UVM实战--加法器
这里以UVM实战(张强)第二章为基础修改原有的DUT,将DUT修改为加法器,从而修改代码以使得更加深入的了解各个组件的类型和使用。原创 2023-02-20 19:11:59 · 1586 阅读 · 3 评论 -
UVM实战(张强)-- UVM中的寄存器模型
如对于一个16位的寄存器,其中可能只使用了8位,那么这里要填写的是16,而不是8。一个uvm_reg_block中一定要定义一个uvm_reg_map,系统已经有一个声明好的default_map,只需要在build中将其实例化,这个实例化的过程并不是直接调用uvm_reg_map的new函数,而是通过调用uvm_reg_block的create_map来实现,create_map有众多的参数,(1)uvm_reg,uvm_reg_field,uvm_reg_block,uvm_reg_map四者的关系。原创 2023-02-22 14:24:39 · 2965 阅读 · 0 评论 -
UVM实战--带有寄存器的加法器
这里将DUT换成加法器,可以理解为之前UVM加法器加上寄存器,这里总线的功能不做修改,目的看代码的移植那些部分需要修改。原创 2023-03-02 17:17:37 · 1366 阅读 · 0 评论