code: def _mem_update(self, net):
          
          if net.op != '@':
              raise PyrtlInternalError
          memid = net.op_param[0]
          write_addr = self.value[net.args[0]]
          write_val = self.value[net.args[1]]
          write_enable = self.value[net.args[2]]
          if write_enable:
              self.memvalue[memid][write_addr] = write_val
docs: Handle the mem update for the simulation of the given net (which is a memory).
  
          Combinational logic should have no posedge behavior, but registers and
          memory should.  This function, used after _execute, defines the
          semantics of the primitive ops.  Function updates self.memvalue accordingly
          (using prior_value)