build.res: use ConstraintError iff a constraint invariant is violated.

In particular don't use it for type errors.
This commit is contained in:
whitequark 2019-06-04 10:23:27 +00:00
parent 51c03ca391
commit 4310254103
3 changed files with 8 additions and 7 deletions

View file

@ -1,2 +1,3 @@
from .dsl import Pins, DiffPairs, Subsignal, Resource, Connector
from .res import ConstraintError
from .plat import Platform, TemplatedPlatform

View file

@ -56,9 +56,9 @@ class ConstraintManager:
def add_clock(self, name, number, frequency):
resource = self.lookup(name, number)
if isinstance(resource.io[0], Subsignal):
raise ConstraintError("Cannot constrain frequency of resource {}#{} because it has "
"subsignals"
.format(resource.name, resource.number, frequency))
raise TypeError("Cannot constrain frequency of resource {}#{} because it has "
"subsignals"
.format(resource.name, resource.number, frequency))
if (resource.name, resource.number) in self.clocks:
other = self.clocks[resource.name, resource.number]
raise ConstraintError("Resource {}#{} is already constrained to a frequency of "
@ -68,8 +68,8 @@ class ConstraintManager:
def lookup(self, name, number=0):
if (name, number) not in self.resources:
raise NameError("Resource {}#{} does not exist"
.format(name, number))
raise ConstraintError("Resource {}#{} does not exist"
.format(name, number))
return self.resources[name, number]
def request(self, name, number=0, *, dir=None, xdr=None):