当前位置: 首页 > news >正文

php商业网站制作90设计网站免费素材

php商业网站制作,90设计网站免费素材,php购物网站开发uml图,wordpress通过标签调用文章#xff08;1#xff09;加入base_test 在一个实际应用的UVM验证平台中#xff0c;my_env并不是树根#xff0c;通常来说#xff0c;树根是一个基于uvm_test派生的类。真正的测试用例都是基于base_test派生的一个类。 class base_test extends uvm_test;my_env e…1加入base_test 在一个实际应用的UVM验证平台中my_env并不是树根通常来说树根是一个基于uvm_test派生的类。真正的测试用例都是基于base_test派生的一个类。 class base_test extends uvm_test;my_env env;function new(string name base_test, uvm_component parent null);super.new(name,parent);endfunctionextern virtual function void build_phase(uvm_phase phase);extern virtual function void report_phase(uvm_phase phase);uvm_component_utils(base_test) endclassfunction void base_test::build_phase(uvm_phase phase);super.build_phase(phase);env my_env::type_id::create(env, this); uvm_config_db#(uvm_object_wrapper)::set(this,env.i_agt.sqr.main_phase,default_sequence,my_sequence::type_id::get()); endfunctionfunction void base_test::report_phase(uvm_phase phase);uvm_report_server server;int err_num;super.report_phase(phase);server get_report_server();err_num server.get_severity_count(UVM_ERROR);if (err_num ! 0) begin$display(TEST CASE FAILED);endelse begin$display(TEST CASE PASSED);end endfunction base_test派生自uvm_test使用uvm_component_utils宏来注册到factory中。在build_phase中实例化my_env并设置sequencer的 default_sequence。需要注意的是这里设置了default_sequence其他地方就不需要再设置了。         除了实例化env外base_test中做的事情在不同的公司各不相同。上面的代码中出现了report_phase在report_phase中根据 UVM_ERROR的数量来打印不同的信息。一些日志分析工具可以根据打印的信息来判断DUT是否通过了某个测试用例的检查。report_phase也是UVM内建的一个phase它在main_phase结束之后执行。         除了上述操作外还通常在base_test中做如下事情第一设置整个验证平台的超时退出时间第二通过config_db设置验 证平台中某些参数的值。这些根据不同的验证平台及不同的公司而不同没有统一的答案。         在把my_env放入base_test中之后UVM树的层次结构变为如图2-11所示的形式。         top_tb中run_test的参数从my_env变成了base_test并且config_db中设置virtual interface的路径参数要做如下改变   initial beginrun_test(base_test); endinitial beginuvm_config_db#(virtual my_if)::set(null, uvm_test_top.env.i_agt.drv, vif, input_if);uvm_config_db#(virtual my_if)::set(null, uvm_test_top.env.i_agt.mon, vif, input_if);uvm_config_db#(virtual my_if)::set(null, uvm_test_top.env.o_agt.mon, vif, output_if); end 2UVM中测试用例的启动 要测试一个DUT是否按照预期工作需要对其施加不同的激励这些激励被称为测试向量或pattern。一种激励作为一个测试 用例不同的激励就是不同的测试用例。测试用例的数量是衡量验证人员工作成果的最直接目标。         伴随着验证的进行测试用例的数量一直在增加在增加的过程中很重要的一点是保证后加的测试用例不影响已经建好的 测试用例。在前面所有的例子中通过设置default_sequence的形式启动my_sequence。假如现在有另外一个my_sequence2如何在 不影响my_sequence的前提下将其启动呢最理想的办法是在命令行中指定参数来启动不同的测试用例。         无论是在my_env中设置default_sequence还是在base_test中或者top_tb中设置都必须修改相关的设置代码才能启动 my_sequence2这与预期相去甚远。为了解决这个问题先来看两个不同的测试用例。my_case0的定义如下 ifndef MY_CASE0__SV define MY_CASE0__SV class case0_sequence extends uvm_sequence #(my_transaction);my_transaction m_trans;function new(string name case0_sequence);super.new(name);endfunction virtual task body();if(starting_phase ! null) starting_phase.raise_objection(this);repeat (10) beginuvm_do(m_trans)end#100;if(starting_phase ! null) starting_phase.drop_objection(this);endtaskuvm_object_utils(case0_sequence) endclassclass my_case0 extends base_test;function new(string name my_case0, uvm_component parent null);super.new(name,parent);endfunction extern virtual function void build_phase(uvm_phase phase); uvm_component_utils(my_case0) endclassfunction void my_case0::build_phase(uvm_phase phase);super.build_phase(phase);uvm_config_db#(uvm_object_wrapper)::set(this, env.i_agt.sqr.main_phase, default_sequence, case0_sequence::type_id::get()); endfunctionendifmy_case1的定义如下 ifndef MY_CASE1__SV define MY_CASE1__SV class case1_sequence extends uvm_sequence #(my_transaction);my_transaction m_trans;function new(string name case1_sequence);super.new(name);endfunction virtual task body();if(starting_phase ! null) starting_phase.raise_objection(this);repeat (10) beginuvm_do_with(m_trans, { m_trans.pload.size() 60;})end#100;if(starting_phase ! null) starting_phase.drop_objection(this);endtaskuvm_object_utils(case1_sequence) endclassclass my_case1 extends base_test;function new(string name my_case1, uvm_component parent null);super.new(name,parent);endfunction extern virtual function void build_phase(uvm_phase phase); uvm_component_utils(my_case1) endclassfunction void my_case1::build_phase(uvm_phase phase);super.build_phase(phase);uvm_config_db#(uvm_object_wrapper)::set(this, env.i_agt.sqr.main_phase, default_sequence, case1_sequence::type_id::get()); endfunctionendif在case1_sequence中出现了uvm_do_with宏它是uvm_do系列宏中的一个用于在随机化时提供对某些字段的约束。         要启动my_case0需要在top_tb中更改run_test的参数 initial begin run_test(my_case0); end而要启动my_case1也需要更改 initial begin run_test(my_case1); end当my_case0运行的时候需要修改代码重新编译后才能运行当my_case1运行时也需如此这相当不方便。事实上UVM提 供对不加参数的run_test的支持 initial beginrun_test(); end 在这种情况下UVM会利用UVM_TEST_NAME从命令行中寻找测试用例的名字创建它的实例并运行。如下所示的代码可 以启动my_case0 sim command … UVM_TEST_NAMEmy_case0 而如下所示的代码可以启动my_case1 sim command … UVM_TEST_NAMEmy_case1整个启动及执行的流程如下图所示                                                 图1 测试用例的启动及执行流程 启动后整棵UVM树的结构如下图所示。                                         图2 每个测试用例建立的UVM树 图2-13与图2-11的唯一区别在于树根的类型从base_test变成了my_casen。
http://www.yutouwan.com/news/56851/

相关文章:

  • 网站建设方案撰写logo设计公司深圳
  • dw做网站后台国内建筑公司排名
  • 网站建设客户需求分析调研表格制作教程入门视频
  • 网站建设违约责任杭州网站建设哪家设计好
  • 单页淘宝客网站模板wordpress 阅读
  • 哪个网站可以做前端项目查备案网站备案
  • 织梦网站模板免费下载网络营销网站 优帮云
  • 系统建站wordpress ajax分页插件
  • 商城网站服务器租用广州哪里能买森海塞尔
  • 进入网站自动全屏怎么做咸宁做网站
  • 什么是网站管理系统版面设计图大全
  • 用什么软件上传网站重庆建设工程信息网查询系统
  • 织梦模板大气网站建设类网站模板下载内蒙古建设厅公示网站
  • 手机网站制作教程asp.net网站开发实例教程
  • wordpress网站建设中办公宽带多少钱一年
  • 新乡网站推广公司建立公司网站时什么是重要的
  • 网站如何做二维码免费网站app生成软件
  • 企业手机网站建wordpress 简洁
  • 网页设计总结收获和体会黄山网站优化
  • 企业做网站的目的陕西企业网站建设价格
  • 做设计去哪些网站下载素材电话卡免费申请
  • 双井做网站的公司天津建设工程信息网怎么注册
  • 柯城网站建设黄渡网站建设
  • 用html做家谱网站代码网站开发的策划书
  • 网站建设网站图片放哪个泰州做网站的公司
  • 电脑打不开建设银行网站网站前端切页面时间
  • 西平县建设局网站网络架构中sdn是指
  • seo的主要工作内容宁波网站搜索优化
  • 如何自己买域做网站怎么使网站降权
  • 西部数码网站核验单下载一元友情链接平台