Skip to content

Commit 91ab3f0

Browse files
committedSep 10, 2015
remove genlib.misc.optree (use reduce instead)
1 parent 1dcd2ac commit 91ab3f0

File tree

4 files changed

+13
-28
lines changed

4 files changed

+13
-28
lines changed
 

Diff for: ‎examples/basic/namer.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
from migen.fhdl.std import *
22
from migen.fhdl import verilog
3-
from migen.genlib.misc import optree
3+
4+
from functools import reduce
5+
from operator import or_
46

57

68
def gen_list(n):
@@ -37,6 +39,6 @@ def __init__(self):
3739
for lst in [a, b, c]:
3840
for obj in lst:
3941
allsigs.extend(obj.sigs)
40-
self.comb += output.eq(optree("|", allsigs))
42+
self.comb += output.eq(reduce(or_, allsigs))
4143

4244
print(verilog.convert(Example()))

Diff for: ‎examples/sim/fir.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44

55
from migen.fhdl.std import *
66
from migen.fhdl import verilog
7-
from migen.genlib.misc import optree
87
from migen.sim.generic import run_simulation
98

9+
from functools import reduce
10+
from operator import add
1011

1112
# A synthesizable FIR filter.
1213
class FIR(Module):
@@ -27,7 +28,7 @@ def __init__(self, coef, wsize=16):
2728
c_fp = int(c*2**(self.wsize - 1))
2829
muls.append(c_fp*sreg)
2930
sum_full = Signal((2*self.wsize-1, True))
30-
self.sync += sum_full.eq(optree("+", muls))
31+
self.sync += sum_full.eq(reduce(add, muls))
3132
self.comb += self.o.eq(sum_full[self.wsize-1:])
3233

3334

Diff for: ‎migen/genlib/misc.py

-21
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,4 @@
11
from migen.fhdl.std import *
2-
from migen.fhdl.structure import _Operator
3-
4-
5-
def optree(op, operands, lb=None, ub=None, default=None):
6-
if lb is None:
7-
lb = 0
8-
if ub is None:
9-
ub = len(operands)
10-
l = ub - lb
11-
if l == 0:
12-
if default is None:
13-
raise AttributeError
14-
else:
15-
return default
16-
elif l == 1:
17-
return operands[lb]
18-
else:
19-
s = lb + l//2
20-
return _Operator(op,
21-
[optree(op, operands, lb, s, default),
22-
optree(op, operands, s, ub, default)])
232

243

254
def split(v, *counts):

Diff for: ‎migen/genlib/record.py

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
from migen.fhdl.std import *
22
from migen.fhdl.tracer import get_obj_var_name
3-
from migen.genlib.misc import optree
3+
4+
from functools import reduce
5+
from operator import or_
6+
47

58
(DIR_NONE, DIR_S_TO_M, DIR_M_TO_S) = range(3)
69

@@ -141,7 +144,7 @@ def connect(self, *slaves, leave_out=set()):
141144
if direction == DIR_M_TO_S:
142145
r += [getattr(slave, field).eq(self_e) for slave in slaves]
143146
elif direction == DIR_S_TO_M:
144-
r.append(self_e.eq(optree("|", [getattr(slave, field) for slave in slaves])))
147+
r.append(self_e.eq(reduce(or_, [getattr(slave, field) for slave in slaves])))
145148
else:
146149
raise TypeError
147150
else:
@@ -164,7 +167,7 @@ def connect_flat(self, *slaves):
164167
s_signal, s_direction = next(iter_slave)
165168
assert(s_direction == DIR_S_TO_M)
166169
s_signals.append(s_signal)
167-
r.append(m_signal.eq(optree("|", s_signals)))
170+
r.append(m_signal.eq(reduce(or_, s_signals)))
168171
else:
169172
raise TypeError
170173
return r

0 commit comments

Comments
 (0)
Please sign in to comment.