コード例 #1
0
 def do_post_read(self, rw):
     iter = UVMCallbackIter(self)
     # for(uvm_reg_cbs cb = iter.last(); cb is not None; cb=iter.prev())
     #     cb.decode(rw.value)
     cb = iter.first()
     while cb is not None:
         cb.decode(rw.value)
         cb = iter.next()
     uvm_do_obj_callbacks(self, UVMRegCbs,'post_read',self,rw)
     yield self.post_read(rw)
コード例 #2
0
 def do_pre_write(self, rw):
     #uvm_callback_iter#(UVMRegBackdoor, uvm_reg_cbs) iter = new(self)
     iter = UVMCallbackIter(self)
     yield self.pre_write(rw)
     uvm_do_obj_callbacks(self, UVMRegCbs,'pre_write',self,rw)
     #      for(uvm_reg_cbs cb = iter.first(); cb is not None; cb = iter.next())
     #         cb.encode(rw.value)
     cb = iter.first()
     while cb is not None:
         cb.decode(rw.value)
         cb = iter.next()
コード例 #3
0
 async def do_post_write(self, rw):
     """         
        Task: do_post_write
       
        Execute the post-write callbacks
       
        This method `must` be called as the last statement in
        a user extension of the <write()> method.
     Args:
         rw: 
     """
     uvm_do_obj_callbacks(self, UVMRegCbs, 'post_write', self, rw)
     await self.post_write(rw)
コード例 #4
0
    async def do_pre_read(self, rw):
        """         

           Task: do_pre_read
          
           Execute the pre-read callbacks
          
           This method `must` be called as the first statement in
           a user extension of the <read()> method.
          
        Args:
            rw: 
        """
        await self.pre_read(rw)
        uvm_do_obj_callbacks(self, UVMRegCbs, 'pre_read', self, rw)
コード例 #5
0
    async def do_post_read(self, rw):
        """         

           Task: do_post_read
          
           Execute the post-read callbacks
          
           This method `must` be called as the last statement in
           a user extension of the <read()> method.
          
        Args:
            rw: 
        """
        iter = UVMCallbackIter(self)
        # for(uvm_reg_cbs cb = iter.last(); cb is not None; cb=iter.prev())
        #     cb.decode(rw.value)
        cb = iter.first()
        while cb is not None:
            cb.decode(rw.value)
            cb = iter.next()
        uvm_do_obj_callbacks(self, UVMRegCbs,'post_read',self,rw)
        await self.post_read(rw)
コード例 #6
0
 async def do_pre_write(self, rw):
     """         
        Task: do_pre_write
       
        Execute the pre-write callbacks
       
        This method `must` be called as the first statement in
        a user extension of the <write()> method.
       
     Args:
         rw: 
     """
     #uvm_callback_iter#(UVMRegBackdoor, uvm_reg_cbs) iter = new(self)
     iter = UVMCallbackIter(self)
     await self.pre_write(rw)
     uvm_do_obj_callbacks(self, UVMRegCbs,'pre_write',self,rw)
     #      for(uvm_reg_cbs cb = iter.first(); cb is not None; cb = iter.next())
     #         cb.encode(rw.value)
     cb = iter.first()
     while cb is not None:
         cb.decode(rw.value)
         cb = iter.next()
コード例 #7
0
 def do_pre_read(self, rw):
     yield self.pre_read(rw)
     uvm_do_obj_callbacks(self, UVMRegCbs, 'pre_read', self, rw)
コード例 #8
0
 def do_post_write(self, rw):
     uvm_do_obj_callbacks(self, UVMRegCbs, 'post_write', self, rw)
     yield self.post_write(rw)