Beispiel #1
0
    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)
Beispiel #2
0
    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)
Beispiel #3
0
    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)
Beispiel #4
0
 def visit_SingleStatement(self, node):
     statement = self.visit(node.statement)
     if isinstance(statement, vtypes.Delay): return statement
     return vtypes.SingleStatement(statement)
Beispiel #5
0
 def visit_SingleStatement(self, node):
     statement = self.visit(node.statement)
     return vtypes.SingleStatement(statement)