def setBind(self, var, value, cond=None): if var is None: cond = None if not isinstance(var, fxd._FixedVariable) and isinstance( value, fxd._FixedBase): raise ValueError( "type mismatch of destination and source: '%s' and '%s'" % (str(type(var)), str(type(value)))) if isinstance(var, fxd._FixedVariable) and isinstance( value, fxd._FixedBase): if var.point != value.point: raise ValueError("type mismatch of fixed point: %d != %d" % (var.point, value.point)) value = optimize(value) cond = optimize(cond) if cond is not None else None subst = (vtypes.SingleStatement(value) if var is None else var.write(value)) if var is not None: if hasattr(var, '_fsm') and id(var._fsm) != id(self.fsm): raise ValueError("variable '%s' has multiple drivers" % str(var)) if not hasattr(var, '_fsm'): var._fsm = self.fsm self.fsm._add_statement([subst], cond=cond) state = self.getFsmCount() self.scope.addBind(state, var, value, cond)
def setBind(self, var, value, cond=None): if var is None: cond = None value = optimize(value) cond = optimize(cond) if cond is not None else None subst = (vtypes.SingleStatement(value) if var is None else vtypes.Subst(var, value)) self.fsm._add_statement([subst], cond=cond) state = self.getFsmCount() self.scope.addBind(state, var, value, cond)
def setBind(self, var, value, cond=None): if var is None: cond = None value = optimize(value) cond = optimize(cond) if cond is not None else None subst = (vtypes.SingleStatement(value) if var is None else vtypes.Subst(var, value)) if var is not None: if hasattr(var, '_fsm') and id(var._fsm) != id(self.fsm): raise ValueError("variable '%s' has multiple drivers" % str(var)) if not hasattr(var, '_fsm'): var._fsm = self.fsm self.fsm._add_statement([subst], cond=cond) state = self.getFsmCount() self.scope.addBind(state, var, value, cond)
def visit_SingleStatement(self, node): statement = self.visit(node.statement) if isinstance(statement, vtypes.Delay): return statement return vtypes.SingleStatement(statement)
def visit_SingleStatement(self, node): statement = self.visit(node.statement) return vtypes.SingleStatement(statement)