
UVM
我不是悍跳狼丶
愿你出行半生,归来仍是少年!
展开
-
The UVM Primer - OOP篇
THe UVM Primer - OOP篇1. SystemVerilog interface概念:systemverilog中通过 interface将各个module的信号封装起来,这样testbench中各个模块不需要处理信号级别的接口,各模块从总线功能模型(Bus Function Model, BFM)拷贝一份信号备份,在各模块内部使用,进而可以通过封装实现协议级的功能模型。优势:...原创 2019-02-01 22:49:46 · 1140 阅读 · 2 评论 -
The UVM Primer -- chapter 23 UVM Sequence
chapter 23 UVM Sequence此前,我们通过tester/put&get port/driver将激励和测试平台分割开来,但是我们并没有将data stimulus从structure中分离出来。tester需要创建新的transaction,并将其送至测试平台,这意味着tester需要选择transaction的顺序,并经其送至测试平台。我们可以通过override t...原创 2019-04-03 23:45:46 · 459 阅读 · 0 评论 -
The UVM Primer -- Chpater 21 UVM Transaction
Chpater 21 UVM Transaction21.1 Storing Data in Objects从学习本书开始,我们将测试平台拆分形成一个小模块,每个模块,每个class只专注于一件事情。尽力避免一个class需要详细了解另一个class的工作内容的场景,两个不同class之间可以通过port的方式传递数据。以上工作都使得我们的测试平台变得十分高效,但是我们还留下了一些遗憾:没有对...原创 2019-03-29 23:04:17 · 1085 阅读 · 2 评论 -
The UVM Primer -- Chpater 20 Class Hierarchies and Deep Operatrion
Chpater 20 Class Hierarchies and Deep Operatrion20.1 class hierarchies为了避免到处copy代码,和提高代码重用率,我们通过类继承(extends component)、共用对象句柄(uvm_put_port)实现。我们重新通过Lion的例子帮助理解deep operation:假设我们目前的class层次结构如下:...原创 2019-03-22 22:25:13 · 252 阅读 · 0 评论 -
The UVM Primer -- Chpater 19 UVM Reporting
Chpater 19 UVM Reporting19.1 UVM Report Macro测试平台在运行过程中,会产生大量数据和信息。这些信息需要筛选之后,才能呈献给我们,否则我们无法处理海量的信息。UVM提供Report来解决这个问题,通过uvm_report的宏,将需要打印的信息分级,并且我们可以在end_of_elaboration_phase()中控制输出。UVM提供四种不同打印等...原创 2019-03-20 23:01:11 · 566 阅读 · 0 评论 -
The UVM Primer -- Chapter 18 Put and Get Ports in Action
Chapter 18 Put and Get Ports in Action上一章,我们介绍了使用put和get port进行线程间通信的机制,本章我们将put/get port机制假如TinyALU测试平台。从学习UVM开始,UVM就不断地把测试平台拆解成一个个小的功能模块,这样易于debug和重用。本章我们将tester按照功能进行拆分。tester的两个功能:选择操作类型op_ty...原创 2019-03-17 10:50:04 · 284 阅读 · 0 评论 -
The UVM Primer -- Chapter 17 Interthread Communicaton
Chapter 17 Interthread Communication上一章介绍了单线程内的各组件间的传输过程,本章介绍线程间的通信,以生产者-消费者为例:module producer(output byte shared, input bit put_it, output bit get_it); initial //线程1 repeat(3) begin ...原创 2019-03-16 21:35:39 · 316 阅读 · 0 评论 -
The UVM Primer -- Chapte 16 Using Analysis ports
Chapte 16 – Using Analysis ports in a testbench测试平台中所有的组件可以分为两种:驱动DUT运行 & 观察DUT变化。我们此前的测试平台中,tester_h就是用于驱动仿真平台运行,scoreboard_h和coverage_h用于监控DUT的行为。从UVM的角度来看,scoreboard和coverage组成了测试平台的_analysis...原创 2019-03-16 00:19:48 · 297 阅读 · 0 评论 -
The UVM Primer -- Chapter 12 UVM Component
Chapter 12 UVM Component12.1 继承UVM Component测试平台可以分为三大部分:structure,sequences,data:structure:描述测试平台的各组件并将其组合在一起;sequences:描述送往DUT的命令的序列;data:描述送往DUT的命令中的仿真数据;UVM component是testbench structure的...原创 2019-03-08 00:10:12 · 366 阅读 · 1 评论 -
The UVM Primer -- Chapter 13 UVM Environments
The UVM Primer – Chapter 13 UVM Environments前面两节介绍了使用factory机制创建顶层对象uvm_test,并在uvm_test中例化uvm_componnets;UVM会自动的调用uvm_components中的各个phase,并且自为每个componnet的run_phase开启独立的进程.这样的方式易于理解,却难以复用。采用以上方式,每次定...原创 2019-03-10 13:03:55 · 360 阅读 · 0 评论 -
The UVM Primer -- Chapter 11 UVM Tests
Chapter 11 UVM Tests11.1 Creating Test with Factory利用工厂机制,我们可以只编译一次测试平台,然后使用factory机制运行不同的测试用例,通过向UVM传入+UVM_TESTNAME的string型变量调用工厂机制,并创建对象。vsim testbench -coverage +UVM_TESTNAME=add_testvsim tes...原创 2019-03-06 22:41:41 · 478 阅读 · 2 评论 -
The UVM Primer -- Chapter14&15 Talking to multiple objcts
Chapter 15 Talking to Multiple Objects既然我们使用OOP编写程序,那么就应该充分利用OOP编程的优势。我们希望在测试平台中,避免每个模块都读取BFM备份,然后根据clock信号一拍拍的采集数据,进行数据处理。我们希望可以让objects之间可以通信,后面我们将逐步介绍两种object communication的方式:Single-Thread Comm...原创 2019-03-14 00:30:16 · 292 阅读 · 0 评论 -
The UVM Primer -- Chpater 22 UVM Agent
Chpater 22 UVM Agent将测试平台不断模块化是一件美妙的事情,无论我们使用它来封装硬件中的块,固件中的子程序还是软件中的对象,模块化都会隐藏复杂性并改善生活。 模块化还允许我们将经过测试的功能重用为硬件中的IP,固件中的库和软件中的类库。成功模块化的关键是支持严格且不变的接口。定义接口允许用户(以及未来的自我)自信地使用模块化组件,而不必担心其内部工作。UVM 提供了Age...原创 2019-03-30 23:28:41 · 715 阅读 · 0 评论