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

建设银行官方网站打不开啊营销qq软件

建设银行官方网站打不开啊,营销qq软件,类似携程网的网站,宝山做网站uvm通信-uvm_event & uvm_event_pool & uvm_event_callback 1.同步的方法 1.1 sv与uvm中同步的方法 (1) 在sv中,用于同步的方法有event, semaphore和mailbox; (2) 在UVM中,用于同步的方法为uvm_event(uvm_event派生于uvm_object); (3) uvm_event不仅能实现不同组件…

uvm通信-uvm_event & uvm_event_pool & uvm_event_callback 

1.同步的方法

1.1 sv与uvm中同步的方法

(1) 在sv中,用于同步的方法有event, semaphore和mailbox;

(2) 在UVM中,用于同步的方法为uvm_event(uvm_event派生于uvm_object);

(3) uvm_event不仅能实现不同组件进程间同步的功能,还能像TLM通信一样传递数据,并且作用范围更广(TLM通信只能局限于uvm_component之间,而uvm_event不限于此);

1.2 什么情况下会使用uvm_event呢?

(1) 组件之间的常规的数据流向是通过TLM通信方法实现的,比如sequencer与driver之间,或者monitor与scoreboard之间。然而有些时候,数据的传输的偶然触发的,并且需要立即响应,这个时候uvm_event就是得力的助手了。

(2) uvm_event也解决了一个重要问题,那就是在一些uvm_object和uvm_component对象之间如果要发生同步,那么无法通过TLM传输,因为TLM传输必须是在组件(component)和组件之间进行的。如果在sequence与sequence之间要进行同步,或者sequence与driver之间要进行同步,都可以借助uvm_event来实现。

2.uvm_event的使用示例(已实践,非常好用)

(1)通过uvm_event_pool::get_global_pool()函数获取全局的单实例类uvm_event_pool类型对象的句柄;

(2)两个initial块中调用get_global_pool返回同一个uvm_event_pool类型对象的句柄;

(3)通过uvm_event_pool.get(“ev”)可以得到一个名字为”ev”的uvm_event对象的句柄;如果名字为"ev"的uvm_event对象不存在,会在第一次调用get_global()函数时创建这样一个对象

(4)在uvm_event中,触发的方式是uvm_event.trigger(); 而等待触发的方式是wait_ptrigger() (电平触发)wait_trigger()(上升沿触发);

 //step1.The event is created in the top-level test;3 //step2.The event is placed in config_db;4 class eth_transmit_event_sync_test extends eth_blk_env_test;5     ...6     uvm_event transmit_barrier_ev=new("transmit_complete_event");7     ...8     virtual function void build_phase(uvm_phase phase);9         super.build_phase(phase);
10         uvm_config_db #(uvm_event)::set(null,"","transmit_b",transmit_barrier_env);
11     endfunction
12 endclass
13 
14 //step3.The transmit_sequence picks it from config_db;
15 //simple transmit sequence with events;
16 virtual task body();
17     uvm_config_db #(uvm_event)::get(null,"","transmit_b",send_2_pkt_event);
18     ...
19     send_2_pkt_event.trigger();
20     ...
21 endtask
22 
23 //step4.The interrupt sequence picks it from config_db;
24 class tx_interrupt_event_seq extends base_sequence;
25     ...
26     uvm_event int_event;
27     ...
28     virtual task body();
29         ...
30         uvm_config_db #(uvm_event)::get(null,"","transmit_b",int_event);
31         int_event.wait_ptrigger();
32         ...
33     endtask
34 
35 endclass

3.uvm_event相关function/task

注1: uvm_event主要有三类function: trigger函数(如trigger(), get_trigger_data(), get_trigger_time()等),状态函数(is_on(),is_off(),reset(), get_num_waiters()等),callback函数(add_callback(), delete_callback()等);

3.1 wait_on

(1) 等待事件处于activated状态,如果事件已经被触发,这个task会立即返回;一旦事件被触发,它将一直保持"on"状态直到事件reset;

3.2 wait_off

(1) 如果事件已经被触发,并且处于"on"状态,该task会等待该事件通过调用reset而关掉;

(2) 如果事件没有被触发,该task会立即返回;

4.uvm_event与event的区别

(1) uvm_event的基础是event,只不过对event的触发与等待进行了扩展;

(2) event被->触发后,会触发用@/wait(event.triggered())等待该事件的对象; uvm_event通过trigger()来触发,会触发使用wait_trigger()/wait_ptrigger()/wait_trigger_data()/wait_ptrigger_data()等待的对象;

(3) 如果再次触发事件,event只需使用->来触发; uvm_event需要先通过reset()方法重置初始状态,再使用trigger()来触发;

(4) event无法携带更多的信息; uvm_event可以通过trigger(uvm_event data=null)的可选参数,将要伴随触发的数据对象都写到该触发事件中,而等待该事件的对象可以通过方法wait_trigger_data(output uvm_object data)来获取事件触发时写入的数据对象;

注1:如果uvm_event.trigger不传递参数,不传递额外的信息,则等待该事件的对象可以调用wait_trigger,而不是wait_trigger_data;

(5) event触发时无法直接触发回调函数; uvm_event可通过add_callback函数来添加回调函数;

(6) event无法直接获取等待它的进程数目,而uvm_event可以通过get_num_waiters()来获取等待它的进程数目;

5.uvm_event_pool

(1) 不同的组件可以共享同一个uvm_event,这不需要通过跨层次传递uvm_event对象句柄来实现共享的,因为这并不符合组件环境封闭的原则。这种共享同一个uvm_event对象是通过uvm_event_pool这一全局资源池来实现的。

(2) uvm_event_pool这个资源池类是uvm_object_string_pool #(T)的子类,它可以生成和获取通过字符串来索引的uvm_event对象。通过全局资源池对象(唯一的),在环境中任何一个地方的组件都可以从资源池中获取共同的对象,这就避免了组件之间的互相依赖。

6.uvm_event_callback(派生于uvm_callback)

(1) 可以从uvm_event_callback进行类的派生,并实现pre_trigger与post_trigger函数,之后将该派生类通过add_callback函数添加到uvm_event中;

(2) pre_trigger()有返回值,如果返回值为1,则表示uvm_event不会被trigger,也不会再执行post_trigger()方法;如果返回值为0,则会继续trigger该事件对象。

注1:对于uvm_event的callback而言,不用采用示例2中通用的callback机制方法,可以直接使用uvm_event已经实现好的函数(如add_callback等);

http://www.yayakq.cn/news/890170/

相关文章:

  • 广州网站订制开发怎样创建快捷方式
  • 网站建设 重点wordpress建站企业站
  • 我的网站为什么打不开怎么回事做网站是否要去工商备案
  • 宁波品牌网站建设网上购物哪个网站最好
  • 利用技术搭建网站做网站代理赣州广播电视台
  • 用dw制作影视网站怎样做房地产店铺首页设计过程
  • 商务网站网络环境设计大型网站空间费用
  • 自己搭建小程序优化关键词排名的工具
  • 丹东市住房与城乡建设厅网站怎么样做外贸网站
  • wordpress建站文本教程做网站建设费用
  • 网站 哪些服务器使用wordpress搭建网站
  • 公司网站设计需要什么wordpress 修改邮箱设置
  • 保定 网站建设软件开发河南最近的热搜事件
  • 简单的公司资料网站怎么做青岛网站建设公司专业公司
  • 怎么用ai做企业网站框架广东seo网站设计
  • 北京星光灿烂影视有限公司罗湖做网站运营乐云seo
  • 网站开发公司挣钱吗中城投建设集团网站
  • 婚纱网站免费源码免备案做网站 可以盈利吗
  • 注册网站时手机号格式不正确厦门网站建设哪家公司好
  • 产品宣传网站的重点怎么设置网站
  • 网站系统功能流程图做dnf辅助网站
  • 济南企业网站建设公司企业网站建设情况 文库
  • php做网站好吗看到一个电商网站帮做淘宝
  • 建站快车产品介绍网页设计外包价格
  • 网站加载等待百度官网首页官网
  • 网站建设人才招聘潢川手机网站建设
  • 专业做网站优化需要多久下载并安装百度地图
  • 网站平台需要做无形资产吗 怎么做6建设通官方网站下载e航
  • 哈尔滨网页设计模板网站马鞍山市重点工程建设管理局网站
  • 个人网站建设服务器企业服务账号