+ stmts.children.append(port.initNode())
+ stmts.children.append(self.nl())
+ return stmts
+
+ def elaborateFunc(self):
+ params = [Leaf(token.LPAR, '('), Leaf(
+ token.NAME, "self, platform=None"), Leaf(token.RPAR, ')')]
+ fn = [Leaf(token.NAME, 'def'),
+ Leaf(token.NAME, 'elaborate', prefix=' '),
+ Node(syms.parameters, params),
+ Leaf(token.COLON, ':'),
+ self.nl()
+ ]
+ fndef = Node(syms.funcdef, fn)
+ stmts = Node(syms.stmt, [fndef])
+ stmts.children.append(self.indent(2))
+ stmts.children.append(Leaf(token.STRING, "m = Module()"))
+ stmts.children.append(self.nl())
+
+ for w in self.wires:
+ wirename = w[0]
+ hasdims = (len(w) >= 4)
+ stmts.children.append(self.indent(2))
+ stmts.children.append(Leaf(token.STRING, wirename))
+ stmts.children.append(Leaf(token.STRING, " = Signal("))
+ if(hasdims):
+ stmts.children.append(Leaf(token.STRING, str(w[3])))
+ stmts.children.append(Leaf(token.STRING, ")"))
+ stmts.children.append(self.nl())
+
+ for a in self.assign:
+ stmts.children.append(self.indent(2))
+ # m.d.sync += self.left.eq(right)
+ stmts.children.append(Leaf(token.STRING, "m.d.comb += "))
+ if(self.isPort(a.left)):
+ stmts.children.append(Leaf(token.STRING, "self."))
+ stmts.children.append(Leaf(token.STRING, a.left))
+ stmts.children.append(Leaf(token.STRING, ".eq("))
+ if(self.isPort(a.right)):
+ stmts.children.append(Leaf(token.STRING, "self."))
+ stmts.children.append(Leaf(token.STRING, a.right))
+ stmts.children.append(Leaf(token.STRING, ")"))