SourceForge: myhdl/myhdl: changeset 1083:daaac30b13e5
Added code to determine if a list of signals is used in an alway_comb generator. If so, don't allow the generator to be a SIMPLE_ALWAYS_COMB
authorcfelton@localhost
Thu Sep 17 08:37:40 2009 -0500 (3 months ago)
changeset 1083daaac30b13e5
parent 1082 fa96a7993ffb
child 1084 2ff17ece6131
Added code to determine if a list of signals is used in an alway_comb generator. If so, don't allow the generator to be a SIMPLE_ALWAYS_COMB
myhdl/conversion/_analyze.py
     1.1 --- a/myhdl/conversion/_analyze.py	Sat Jul 25 11:07:24 2009 +0200
     1.2 +++ b/myhdl/conversion/_analyze.py	Thu Sep 17 08:37:40 2009 -0500
     1.3 @@ -393,6 +393,7 @@
     1.4          tree.kind = None
     1.5          tree.hasYield = 0
     1.6          tree.hasRom = False
     1.7 +        tree.hasLos = False
     1.8          tree.hasPrint = False
     1.9          self.tree = tree
    1.10          self.labelStack = []
    1.11 @@ -1197,6 +1198,7 @@
    1.12      def getName(self, node):
    1.13          n = node.id
    1.14          node.obj = None
    1.15 +            
    1.16          if n not in self.refStack:
    1.17              if n in self.tree.vardict:
    1.18                  self.raiseError(node, _error.UnboundLocal, n)
    1.19 @@ -1233,6 +1235,8 @@
    1.20              if _isTupleOfInts(node.obj):
    1.21                  node.obj = _Rom(node.obj)
    1.22                  self.tree.hasRom = True
    1.23 +            elif _isMem(node.obj):
    1.24 +                self.tree.hasLos = True
    1.25              elif isinstance(node.obj, int):
    1.26                  node.value = node.obj
    1.27          elif n in __builtin__.__dict__:
    1.28 @@ -1682,8 +1686,9 @@
    1.29                else:
    1.30                    self.tree.kind = _kind.ALWAYS_COMB
    1.31                    return
    1.32 -          # rom access is expanded into a case statement
    1.33 -          if self.tree.hasRom:
    1.34 +          # rom access is expanded into a case statement in addition
    1.35 +          # to any always_comb that contains a list of signals
    1.36 +          if self.tree.hasRom or self.tree.hasLos:
    1.37                self.tree.kind = _kind.ALWAYS_COMB
    1.38            self.refStack.pop()
    1.39