build.res: allow querying frequency of a previously constrained clock.
This commit is contained in:
parent
c9879c795b
commit
b45c5119f5
2 changed files with 27 additions and 6 deletions
|
|
@ -191,11 +191,9 @@ class ResourceManager:
|
|||
for bit, pin_name in enumerate(pin_names):
|
||||
yield "{}[{}]".format(port_name, bit), pin_name, attrs
|
||||
|
||||
def add_clock_constraint(self, clock, frequency):
|
||||
def _map_clock_to_port(self, clock):
|
||||
if not isinstance(clock, (Signal, Pin)):
|
||||
raise TypeError("Object {!r} is not a Signal or Pin".format(clock))
|
||||
if not isinstance(frequency, (int, float)):
|
||||
raise TypeError("Frequency must be a number, not {!r}".format(frequency))
|
||||
|
||||
if isinstance(clock, Pin):
|
||||
for res, pin, port, attrs in self._ports:
|
||||
|
|
@ -208,16 +206,27 @@ class ResourceManager:
|
|||
assert False
|
||||
break
|
||||
else:
|
||||
raise ValueError("Cannot add clock constraint on a Pin {!r} that is not "
|
||||
"a previously requested resource"
|
||||
raise ValueError("The Pin object {!r}, which is not a previously requested "
|
||||
"resource, cannot be used to desigate a clock"
|
||||
.format(clock))
|
||||
|
||||
return clock
|
||||
|
||||
def add_clock_constraint(self, clock, frequency):
|
||||
if not isinstance(frequency, (int, float)):
|
||||
raise TypeError("Frequency must be a number, not {!r}".format(frequency))
|
||||
|
||||
clock = self._map_clock_to_port(clock)
|
||||
if clock in self._clocks:
|
||||
raise ValueError("Cannot add clock constraint on {!r}, which is already constrained "
|
||||
"to {} Hz"
|
||||
.format(clock, self._clocks[clock]))
|
||||
else:
|
||||
self._clocks[clock] = float(frequency)
|
||||
|
||||
self._clocks[clock] = float(frequency)
|
||||
def get_clock_constraint(self, clock):
|
||||
clock = self._map_clock_to_port(clock)
|
||||
return self._clocks[clock]
|
||||
|
||||
def iter_clock_constraints(self):
|
||||
return iter(self._clocks.items())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue