examples: new namer

This commit is contained in:
Sebastien Bourdeauducq 2012-09-09 19:34:46 +02:00
parent b45c9546eb
commit 2a7d2908d1
1 changed files with 40 additions and 0 deletions

40
examples/basic/namer.py Normal file
View File

@ -0,0 +1,40 @@
from migen.fhdl.structure import *
from migen.fhdl import verilog
from migen.corelogic.misc import optree
def gen_list(n):
s = [Signal() for i in range(n)]
return s
def gen_2list(n):
s = [Signal(BV(2)) for i in range(n)]
return s
class Foo:
def __init__(self):
la = gen_list(3)
lb = gen_2list(2)
self.sigs = la + lb
class Bar:
def __init__(self):
self.sigs = gen_list(2)
class Toto:
def __init__(self):
self.sigs = gen_list(2)
a = [Bar() for x in range(3)]
b = [Foo() for x in range(3)]
c = b
b = [Bar() for x in range(2)]
output = Signal()
allsigs = []
for lst in [a, b, c]:
for obj in lst:
allsigs.extend(obj.sigs)
comb = [output.eq(optree("|", allsigs))]
f = Fragment(comb)
print(verilog.convert(f))