systemverilog/event.triggered

1. event.triggered只会保持一个time_slot,在下一个time_slot将会丢失这个标记,如果不能保证在每一个time_slot都会检测到这个标志,那么将会丢失这个标志。

2. 必须保证在->event的同一个或之前的time_slot开始检测triggered.

3.virtual task wait_trigger ();如果和->event在同一个time_slot发生,那么可能丢失triggered
   
num_waiters++;
   
@m_event;
  endtask

4. virtual task wait_ptrigger
();如果和->event在同一个time_slot发生,那么不会丢失triggered
    if
(m_event.triggered)
     
return;
   
num_waiters++;
   
@m_event;
  endtask

5.上诉问题的引起主要是由于->event,@event都是在reactive
set区,不能保证->event在@event前发生,只有通过triggered来记录,但是triggered到下一个time_slot会丢失。

时间: 2024-08-29 16:13:59

systemverilog/event.triggered的相关文章

事件等待(@event与wait(event.triggered))

1.@event有竞争问题 program test; event e1; initial begin #10 ->e1; end initial begin #10 @e1; $display("hello"); end endpropram 在这个例子中,事件的触发(->e1)和事件的检测(@e1)都是在10ns的时候发生,这个时候就有竞争问题,看那个进程先执行(一般是上部分的代码先执行),这样就会导致有的时候能够检测到事件,输出"hello",有的

SystemVerilog Event Scheduling Algorithm

While simulating System Verilog design and its test-bench including assertions, events has to be dynamically scheduled, executed, and removed as the simulator advances time. To have this feature, simulator has to maintain a data structure and usually

jquery实现原理 :event

1. 数据缓存 data 在事件之前是应该先讲解下data的实现的,因为在event的实现中,需要用到data,用来存储用户在element上注册的事件回调函数,这个data的实现比较简单,所以在这里简单说一下. $.data可以在一个元素上存储数据,比如$('xxx').data("a", 1).实现原理很简单,先初始化一个cache对象,然后在元素上添加一个唯一的id属性,这个id对应一个object,然后把这个对应关系存储在cache中. 这样调用data的时候,就可以根据元素上

jQuery源码分析--event事件绑定(上)

上文提到,jquery的事件绑定有bind(),delegate()和one()以及live()方式.我用的jQuery2.1.3版本,live()已经被废弃了. bind(),delegate()和one()的内部源码. //7491行 bind: function( types, data, fn ) { return this.on( types, null, data, fn ); }, //7498行 delegate: function( selector, types, data,

jQuery源码分析--Event模块(1)

jQuery的Event模块提供了强大的功能:事件代理,自定义事件,自定义数据等.今天记录一下它实现的原理. 我们都知道,在js的原生事件中,有事件对象和回调函数这两样东西.但是事件对象是只读的,所以jQuery就用了自己的Event对象替代了原生的事件对象,这样就可以实现对事件对象的完全控制,所以才能实现自定义数据.而回调函数的话,每个元素只有一个一样的回调函数,这样方便管理. 下面来看看event对象长什么样. 可以看到jQuery的事件对象其实一开始就只有这么一点东西.其中original

javascript事件之:jQuery.event.add事件详解

我们已经了解过jQuery.event下的方法,回顾一下 jQuery.event = { global: {}, add: function( elem, types, handler, data, selector ) {}, remove: function( elem, types, handler, selector, mappedTypes ) {}, trigger: function( event, data, elem, onlyHandlers ) {}, dispatch:

jQuery Event add [ 源码分析 ]

/* * Helper functions for managing events -- not part of the public interface. * Props to Dean Edwards' addEvent library for many of the ideas. */ jQuery.event = { add: function( elem, types, handler, data, selector ) { var elemData, eventHandle, eve

jQuery源码分析--Event模块(3)

最后剩下了事件的手动触发了.jQuery提供了两个函数trigger和triggerHandler来手动触发事件,可以触发原生事件和自定义的事件.这个触发不单只会触发有jQuery绑定事件,而且也会触发原生的行内绑定事件.trigger和triggerHander的区别是: trgger:会对匹配的所有元素都调用jQuery.event.trrger,而且会冒泡,会触发浏览器默认行为.返回值为jQuery对象 triggerHandler:只会对第一个匹配的元素调用jQuery.event.tr

jQuery事件之:jQuery.event.trigger

现在我们来看看事件机制中的主动触发,我们要分析的是jQuery.event.trigger. 先来看看它在jQ源码中的调用. // 1, 在jQuery.event.simulate中 jQuery.event.simulate = function(){ ... if ( bubble ) { jQuery.event.trigger( e, null, elem ); } ... } // 2, 事件的实例方法中 jQuery.fn.extend({ trigger: function( t