vmi运行流程简图_申请强制执行后多久执行

vmi运行流程简图_申请强制执行后多久执行`vmm_test_begin(testcase_name,vmm_env,”TestCaseNameString”) `vmm_test_env(testcase_name)

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

`vmm_test_begin(testcase_name,vmm_env,“Test Case Name String”) ;

env.build() ;

env.reset_dut() ;

env.start() ;

env.wait_for_end() ;

env.report() ;

`vmm_test_end(testcase_name);



参考文献:http://www.testbench.in/VM_09_VMM_TEST.html

vmm_test is introduced in vmm 1.1. 

To know the vmm version which you are using, use this command 
vcs -R -sverilog -ntb_opts dtm 
+incdir+$VMM_HOME/sv $VMM_HOME/sv/vmm_versions.sv 


vmm_test is used for compiling all the testcases in one compilation. The simulation of each testcase is done individually. Traditionally for each testcase, compile and simulation are done per testcase file. With this new approach, which dose compilation only once, will save lot of cup. 


Generally each testcase can be divided into two parts. 


(S)Procedural code part. 


The procedural code part (like passing the above new constrained transaction definition to some atomic generator, calling the env methods etc) has to be defined between these macros. vmm provides 2 macros to define testcase procedural part. 


`vmm_test_begin(testcase_name,vmm_env,“Test Case Name String”) 
`vmm_test_env(testcase_name) 

(S)Declarative code part. 


The declarative part( like new constrained transacting definition) is defined outside these macros. 



Writing A Testcase 



Let us see an example of writing a testcase. 
Inside the testcase, we will define a new transaction and pass this transaction to the atomic generator. 



(S) Declarative part: 


1) Define all the declarative code. 


class constrained_tran extends pcie_transaction; 

// Add some constraints 
// Change some method definitions 

end class 


2) Define a handle to the above object. 


constrained_tran c_tran_obj; 

(S) Procedural part: 


Use a `vmm_test_begin . There are 3 arguments to macro. 

vmi运行流程简图_申请强制执行后多久执行 
The first argument is the name of the testcase class and will also be used as the name of the testcase in the global testcase registry. 
vmi运行流程简图_申请强制执行后多久执行 
The second argument is the name of the environment class that will be used to execute the testcase. A data member of that type named “env” will be defined and assigned, ready to be used. 
vmi运行流程简图_申请强制执行后多久执行 
The third argument is a string documenting the purpose of the test. 



`vmm_test_begin(test_1,vmm_env,“Test_1”) 


In this testcase, we want to pass the c_tran_obj object. The steps t pass the c_tran_obj as per the vmm_env is 


env.build(); 
c_tran_obj = new(” “); 
env.atomic_gen.randomized_obj = c_tran_obj; 


Start the vmm_env execution. 


env.run(); 


Now use `vmm_test_end to define the end of the testcase. The argument to this is the testcase name. 


`vmm_test_end(test_1) 


Following is the full testcase source code which we discussed above. 
(S) Testcase source code 

class constrained_tran extends pcie_transaction; 

end class 

constrained_tran c_tran_obj 

`vmm_test_begin(test_1,vmm_env,“Test_1”) 
$display(” Start of Testcase : Test_1 “); 
env.build(); 
c_tran_obj = new(” “); 
env.atomic_gen.randomized_obj = c_tran_obj; 
env.run(); 
$display(” End of Testcase : Test_1 “); 
`vmm_test_end(test_1) 




Like this you can write many testcases in separate file or single file. 


Example Of Using Vmm_test 



Now we will implement 3 simple testcases and a main testcase which will be used for selecting any one of the 3 testcases. 


(S) testcase_1 


Write this testcase in a testcase_1.sv file 



// Define all the declarative code hear. I done have anything to show you. 
// 
// class constrained_tran extends pcie_transaction; 
// 
// end class 
// 
// constrained_tran c_tran_obj 

`vmm_test_begin(test_1,vmm_env,“Test_1”) 
$display(” Start of Testcase : Test_1 “); 
// This is procedural part. You can call build method. 
env.build(); 

// You can pass the above created transaction to atomic gen. 
// c_tran_obj = new(” “); 
// env.atomic_gen.randomized_obj = c_tran_obj; 
// 
// 

env.run(); 
$display(” End of Testcase : Test_1 “); 
`vmm_test_end(test_1) 

(S)testcase_2 


Write this testcase in a testcase_2.sv file 



`vmm_test_begin(test_2,vmm_env,“Test_2”) 
$display(” Start of Testcase : Test_2 “); 
// Do something like this …. 
env.build(); 
// like this …. 
env.run(); 
$display(” End of Testcase : Test_2 “); 
`vmm_test_end(test_2) 

(S)testcase_3 


Write this testcase in a testcase_3.sv file 



`vmm_test_begin(test_3,vmm_env,“Test_3”) 
$display(” Start of Testcase : Test_3 “); 
// Do something like this …. 
env.build(); 
// like this …. 
env.run(); 
$display(” End of Testcase : Test_3 “); 
`vmm_test_end(test_3) 

(S)main testcase 


Now we will write the main testcase. This doesn’t have any test scenario, it is only used for handling the above 3 testcases. 


This should be written in program block. 

1) First include all the above testcases inside the program block. 


`include “testcase_1.sv” 
`include “testcase_2.sv” 
`include “testcase_3.sv” 


2) Define env class object. 


vmm_env env = new(); 


As I dont have a custom env class to show, I used vmm_env. You can use your custom defined env. 

3) In the initial block call the run() method of vmm_test_registry class and pass the above env object as argument. This run method of vmm_test_registry is a static method, so there is no need to create an object of this class. 


vmm_test_registry::run(env); 


(S) Main testcase source code 

`include “vmm.sv” 
program main(); 

`include “testcase_1.sv” 
`include “testcase_2.sv” 
`include “testcase_3.sv” 

vmm_env env; 

initial 
begin 
$display(” START OF TEST CASE “); 
env = new(); 
vmm_test_registry::run(env); 
$display(” START OF TEST CASE “); 
end 


endprogram 



Now compile the above code using command. 

vcs -sverilog main_testcase.sv +incdir+$VMM_HOME/sv 

Now simulate the above compiled code. 

To simulate , just do ./simv and see the log. 
You can see the list of the testcases. This simulation will not ececute any testcase. 


(S)LOG 

START OF TEST CASE 
*FATAL*[FAILURE] on vmm_test_registry(class) at 0: 
No test was selected at runtime using +vmm_test=<test>. 
Available tests are: 
0) Default : Default testcase that simply calls env::run() 
1) test_1 : Test_1 
2) test_2 : Test_2 
3) test_3 : Test_3 



To run testcase_1 use ./simv +vmm_test=test_1 


(S)LOG 

START OF TEST CASE 
Normal[NOTE] on vmm_test_registry(class) at 0: 
Running test “test_1″… 
Start of Testcase : Test_1 
Simulation PASSED on /./ (/./) at 0 (0 warnings, 0 demoted errors & 0 demoted warnings) 
End of Testcase : Test_1 
START OF TEST CASE 



Simillarly to run testcase_2 ./simv +vmm_test=test_2 


(S)LOG 

START OF TEST CASE 
Normal[NOTE] on vmm_test_registry(class) at 0: 
Running test “test_2″… 
Start of Testcase : Test_2 
Simulation PASSED on /./ (/./) at 0 (0 warnings, 0 demoted errors & 0 demoted warnings) 
End of Testcase : Test_2 
START OF TEST CASE 



You can also call the Default testcase, which just calls the env::run() 

./simv +vmm_test=Default 


(S)LOG 

START OF TEST CASE 
Normal[NOTE] on vmm_test_registry(class) at 0: 
Running test “Default”… 
Simulation PASSED on /./ (/./) at 0 (0 warnings, 0 demoted errors & 0 demoted warnings) 
START OF TEST CASE 




(S) Download the source code 


vmm_test.tar 
Browse the code in vmm_test.tar 



(S) Command to compile 


vcs -sverilog -ntb_opts dtm +incdir+$VMM_HOME/sv main_testcase.sv 


(S) Commands to simulate testcases 


./simv 
./simv +vmm_test=Default 
./simv +vmm_test=test_1 
./simv +vmm_test=test_2 
./simv +vmm_test=test_3 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190631.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • springboot介绍一下_SpringBoot打包

    springboot介绍一下_SpringBoot打包一、SpringBoot和SpringMVC的关系SpringBoot是SpringMVC的升级版SpringBoot的特点:化繁为简,简化配置微服务->SpringCloud->SpringBoot二、前置知识利用maven构建项目Spring注解RESTfulAPI

    2022年9月23日
    4
  • leetcode最长无重复字符串_直线是一维还是二维

    leetcode最长无重复字符串_直线是一维还是二维【LeetCode】﹝前缀和ி﹞一维、二维前缀和应用文章目录【LeetCode】﹝前缀和ி﹞一维、二维前缀和应用在区间范围内统计奇数数目★区域和检索-数组不可变★★子数组异或查询★★定长子串中元音的最大数目★★生存人数★★二维区域和检索-矩阵不可变★★矩阵区域和★★矩形区域不超过K的最大数值和★★★在区间范围内统计奇数数目★1523.在区间范围内统计奇数数目【题目】给你两个非负整数low和high。请你返回low和high之间(包括二者)奇数的数目。【示例】输入:l

    2025年5月31日
    2
  • ibm x201 怎么清理内部_联想 Thinkpad x201i怎么拆机清理风扇灰尘?_硬件教程「建议收藏」

    ibm x201 怎么清理内部_联想 Thinkpad x201i怎么拆机清理风扇灰尘?_硬件教程「建议收藏」笔记本散热风扇使用时间长了就累积很多灰尘,堵塞出风口,从而大幅降低散热效果。因此有必要对其清理。要彻底清理风扇灰尘,需要拆机方可。首先要把笔记本的电池取下。这款笔记本的硬盘仓很隐蔽,不过在D面还是有明显的图标提示,拧下螺丝和卡扣,即可看到硬盘。硬盘盖拆下来之后,只需用力的拔出黑带即可把硬盘取下。电池、硬盘、内存都取下之后,我们用螺丝刀把D壳周围的螺丝你拧下,之后就可以开始拆卸键盘以及外壳了。拆卸键…

    2022年6月27日
    53
  • 工程管理,用网页就够了!——Wish3D Earth在线三维地球强势上线

    工程管理,用网页就够了!——Wish3D Earth在线三维地球强势上线

    2022年3月8日
    59
  • 申请软件著作权步骤[通俗易懂]

    申请软件著作权步骤[通俗易懂]前言:申请软件著作权对格式要求很严格,材料一定要保证格式正确,一般来说需要参考模板。另外,邮寄材料到版权中心的方式比较慢,而且万一材料格式或者内容不合适的话补正的话很麻烦,最好还是到现场办理成功率高。就我的经验来说,材料出现的错误率最高的是:1>要求签章的地方未按要求进行签章;2>材料提供的不全;3>材料内容不恰当,需要更改,比如浏览器需要加上安装卸载过程、微信小程序需要体现是在…

    2022年6月24日
    23
  • Windows 下Maven安装配置(本地仓库配置)[通俗易懂]

    Windows 下Maven安装配置(本地仓库配置)[通俗易懂]一、下载mavenmaven官网:http://maven.apache.org/下载下来也就是一个压缩文件,解压。我下载的是3.5.2版本,解压之后如下:路径为:D:\ProgramFiles\apache-maven-3.5.2二、配置环境变量添加自定义变量:MAVEN_HOME值为刚才的解压路径:D:\ProgramFiles\apache-maven-3.5.2。MAVEN_

    2022年5月8日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号