Skip to content

Commit

Permalink
lib.coding: fix tests to actually run, and fix code to fix tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
whitequark committed Dec 27, 2018
1 parent 470d669 commit 3ea35b8
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 11 deletions.
7 changes: 3 additions & 4 deletions nmigen/lib/coding.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ def get_fragment(self, platform):
m = Module()
for j, b in enumerate(reversed(self.i)):
with m.If(b):
m.d.comb += self.o.eq(j)
m.d.comb += self.o.eq(len(self.i) - j - 1)
m.d.comb += self.n.eq(self.i == 0)
return m.lower(platform)

Expand Down Expand Up @@ -105,9 +105,8 @@ def get_fragment(self, platform):
for j in range(len(self.o)):
with m.Case(j):
m.d.comb += self.o.eq(1 << j)
with m.Case():
with m.If(self.n):
m.d.comb += self.o.eq(0)
with m.If(self.n):
m.d.comb += self.o.eq(0)
return m.lower(platform)


Expand Down
17 changes: 10 additions & 7 deletions nmigen/test/test_lib_coding.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ def process():
self.assertEqual((yield enc.o), 0)

sim.add_process(process)
sim.run()


class PriorityEncoderTestCase(FHDLTestCase):
Expand All @@ -54,25 +55,27 @@ def process():
self.assertEqual((yield enc.o), 1)

sim.add_process(process)
sim.run()


class DecoderTestCase(FHDLTestCase):
def test_basic(self):
dec = Decoder(4)
with Simulator(dec) as sim:
def process():
self.assertEqual((yield enc.o), 0b0001)
self.assertEqual((yield dec.o), 0b0001)

yield enc.i.eq(1)
yield dec.i.eq(1)
yield Delay()
self.assertEqual((yield enc.o), 0b0010)
self.assertEqual((yield dec.o), 0b0010)

yield enc.i.eq(3)
yield dec.i.eq(3)
yield Delay()
self.assertEqual((yield enc.o), 0b1000)
self.assertEqual((yield dec.o), 0b1000)

yield enc.n.eq(1)
yield dec.n.eq(1)
yield Delay()
self.assertEqual((yield enc.o), 0b0000)
self.assertEqual((yield dec.o), 0b0000)

sim.add_process(process)
sim.run()

0 comments on commit 3ea35b8

Please sign in to comment.