hdl.cd: implement local clock domains.

Closes #175.
This commit is contained in:
whitequark 2019-08-19 20:46:46 +00:00
parent 9bdadbff09
commit 003ba3b45f
4 changed files with 33 additions and 10 deletions

View file

@ -8,6 +8,7 @@ class ClockDomainTestCase(FHDLTestCase):
self.assertEqual(sync.name, "sync")
self.assertEqual(sync.clk.name, "clk")
self.assertEqual(sync.rst.name, "rst")
self.assertEqual(sync.local, False)
pix = ClockDomain()
self.assertEqual(pix.name, "pix")
self.assertEqual(pix.clk.name, "pix_clk")
@ -19,6 +20,8 @@ class ClockDomainTestCase(FHDLTestCase):
with self.assertRaises(ValueError,
msg="Clock domain name must be specified explicitly"):
ClockDomain()
cd_reset = ClockDomain(local=True)
self.assertEqual(cd_reset.local, True)
def test_with_reset(self):
pix = ClockDomain()

View file

@ -290,6 +290,17 @@ class FragmentDomainsTestCase(FHDLTestCase):
f1._propagate_domains_up()
self.assertEqual(f1.domains, {"cd": cd})
def test_propagate_up_local(self):
cd = ClockDomain(local=True)
f1 = Fragment()
f2 = Fragment()
f1.add_subfragment(f2)
f2.add_domains(cd)
f1._propagate_domains_up()
self.assertEqual(f1.domains, {})
def test_domain_conflict(self):
cda = ClockDomain("sync")
cdb = ClockDomain("sync")