hdl.dsl: type check when adding to m.domains.
This commit is contained in:
parent
31cd72c0b6
commit
86b57fe6b6
|
@ -9,6 +9,7 @@ from .._utils import flatten, bits_for, deprecated
|
||||||
from .. import tracer
|
from .. import tracer
|
||||||
from .ast import *
|
from .ast import *
|
||||||
from .ir import *
|
from .ir import *
|
||||||
|
from .cd import *
|
||||||
from .xfrm import *
|
from .xfrm import *
|
||||||
|
|
||||||
|
|
||||||
|
@ -107,10 +108,16 @@ class _ModuleBuilderDomainSet:
|
||||||
|
|
||||||
def __iadd__(self, domains):
|
def __iadd__(self, domains):
|
||||||
for domain in flatten([domains]):
|
for domain in flatten([domains]):
|
||||||
|
if not isinstance(domain, ClockDomain):
|
||||||
|
raise TypeError("Only clock domains may be added to `m.domains`, not {!r}"
|
||||||
|
.format(domain))
|
||||||
self._builder._add_domain(domain)
|
self._builder._add_domain(domain)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def __setattr__(self, name, domain):
|
def __setattr__(self, name, domain):
|
||||||
|
if not isinstance(domain, ClockDomain):
|
||||||
|
raise TypeError("Only clock domains may be added to `m.domains`, not {!r}"
|
||||||
|
.format(domain))
|
||||||
self._builder._add_domain(domain)
|
self._builder._add_domain(domain)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -707,6 +707,15 @@ class DSLTestCase(FHDLTestCase):
|
||||||
self.assertEqual(len(m._domains), 1)
|
self.assertEqual(len(m._domains), 1)
|
||||||
self.assertEqual(m._domains[0].name, "foo")
|
self.assertEqual(m._domains[0].name, "foo")
|
||||||
|
|
||||||
|
def test_domain_add_wrong(self):
|
||||||
|
m = Module()
|
||||||
|
with self.assertRaises(TypeError,
|
||||||
|
msg="Only clock domains may be added to `m.domains`, not 1"):
|
||||||
|
m.domains.foo = 1
|
||||||
|
with self.assertRaises(TypeError,
|
||||||
|
msg="Only clock domains may be added to `m.domains`, not 1"):
|
||||||
|
m.domains += 1
|
||||||
|
|
||||||
def test_lower(self):
|
def test_lower(self):
|
||||||
m1 = Module()
|
m1 = Module()
|
||||||
m1.d.comb += self.c1.eq(self.s1)
|
m1.d.comb += self.c1.eq(self.s1)
|
||||||
|
|
Loading…
Reference in a new issue