litex/examples/basic/namer.py

45 lines
843 B
Python
Raw Normal View History

from migen import *
2012-09-09 13:34:46 -04:00
from migen.fhdl import verilog
from functools import reduce
from operator import or_
2012-09-09 13:34:46 -04:00
2015-04-13 14:45:35 -04:00
2012-09-09 13:34:46 -04:00
def gen_list(n):
s = [Signal() for i in range(n)]
return s
2012-09-09 13:34:46 -04:00
2015-04-13 14:45:35 -04:00
2012-09-09 13:34:46 -04:00
def gen_2list(n):
s = [Signal(2) for i in range(n)]
return s
2012-09-09 13:34:46 -04:00
2015-04-13 14:45:35 -04:00
2012-09-09 13:34:46 -04:00
class Foo:
def __init__(self):
la = gen_list(3)
lb = gen_2list(2)
self.sigs = la + lb
2012-09-09 13:34:46 -04:00
2015-04-13 14:45:35 -04:00
2012-09-09 13:34:46 -04:00
class Bar:
def __init__(self):
self.sigs = gen_list(2)
2012-09-09 13:34:46 -04:00
2015-04-13 14:45:35 -04:00
2013-03-12 11:45:28 -04:00
class Example(Module):
def __init__(self):
a = [Bar() for x in range(3)]
b = [Foo() for x in range(3)]
c = b
b = [Bar() for x in range(2)]
2012-09-09 13:34:46 -04:00
output = Signal()
allsigs = []
for lst in [a, b, c]:
for obj in lst:
allsigs.extend(obj.sigs)
self.comb += output.eq(reduce(or_, allsigs))
2012-09-09 13:34:46 -04:00
2013-03-12 11:45:28 -04:00
print(verilog.convert(Example()))