mirror of
https://github.com/myhdl/myhdl.git
synced 2024-12-14 07:44:38 +08:00
38 lines
923 B
Python
38 lines
923 B
Python
import unittest
|
|
|
|
from myhdl import Simulation, Signal, delay, intbv, bin
|
|
|
|
from bin2gray import bin2gray
|
|
from next_gray_code import nextLn
|
|
|
|
MAX_WIDTH = 11
|
|
|
|
class TestOriginalGrayCode(unittest.TestCase):
|
|
|
|
def testOriginalGrayCode(self):
|
|
"""Check that the code is an original Gray code."""
|
|
|
|
Rn = []
|
|
|
|
def stimulus(B, G, n):
|
|
for i in range(2**n):
|
|
B.next = intbv(i)
|
|
yield delay(10)
|
|
Rn.append(bin(G, width=n))
|
|
|
|
Ln = ['0', '1'] # n == 1
|
|
for w in range(2, MAX_WIDTH):
|
|
Ln = nextLn(Ln)
|
|
del Rn[:]
|
|
B = Signal(intbv(0)[w:])
|
|
G = Signal(intbv(0)[w:])
|
|
dut = bin2gray(B, G)
|
|
stim = stimulus(B, G, w)
|
|
sim = Simulation(dut, stim)
|
|
sim.run(quiet=1)
|
|
self.assertEqual(Ln, Rn)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main(verbosity=2)
|