搭建UVM流程:
-
定义interface。Interface是连接DUT和验证平台的桥梁,根据DUT的输入输出参数定义interface,在top_tb里连接interface和DUT。
-
加入transaction。transaction是一个数据包,transaction由sequence产生,通过sequencer传递给driver。
-
加入driver。Driver负责将接收到的transaction数据包驱动到DUT上。
-
加入monitor。monitor一般有两个,分别用来检测DUT的输入和输出。i_monitor用于收集DUT的输入传递给reference model,o_monitor用于收集DUT的输出传给scoreboard。
-
加入sequencer。
-
将sequencer、driver、monitor封装成agent,agent是可复用的最小单元。
-
加入reference model。reference model用于完成和DUT相同的功能,reference model的输出传递给scoreboard,用于和DUT的输出做对比。
-
加入scoreboard。scoreboard要比较的数据一是来源于reference model,二是来源于o_agent的monitor。前者通过exp_port获取,后者通过act_port获取。
-
加入sequence。
-
加入env。将scoreboard、agent、reference model添加到env,并通过TLM完成之间的通信。
-
建造测试用例。加入base_test (uvm_test_top),将env添加到base_test,base_test派生于uvm_test,测试用例tc都是基于base_test派生的一个类。
-
在top_tb里面添加run_test()来启动tc。
-
构建Makefile。
仿真工具:vcs
编译:make cmp
仿真:make run