Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: m-labs/nmigen
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 85efd083ea64
Choose a base ref
...
head repository: m-labs/nmigen
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 43102541032f
Choose a head ref
  • 1 commit
  • 3 files changed
  • 1 contributor

Commits on Jun 4, 2019

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

    In particular don't use it for type errors.
    whitequark committed Jun 4, 2019
    Copy the full SHA
    4310254 View commit details
Showing with 8 additions and 7 deletions.
  1. +1 −0 nmigen/build/__init__.py
  2. +5 −5 nmigen/build/res.py
  3. +2 −2 nmigen/test/test_build_res.py
1 change: 1 addition & 0 deletions nmigen/build/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
from .dsl import Pins, DiffPairs, Subsignal, Resource, Connector
from .res import ConstraintError
from .plat import Platform, TemplatedPlatform
10 changes: 5 additions & 5 deletions nmigen/build/res.py
Original file line number Diff line number Diff line change
@@ -56,9 +56,9 @@ def add_connectors(self, connectors):
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 @@ def add_clock(self, name, number, frequency):

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):
4 changes: 2 additions & 2 deletions nmigen/test/test_build_res.py
Original file line number Diff line number Diff line change
@@ -192,12 +192,12 @@ def test_wrong_connectors_duplicate(self):
self.cm.add_connectors([Connector("pmod", 0, "1 2")])

def test_wrong_lookup(self):
with self.assertRaises(NameError,
with self.assertRaises(ConstraintError,
msg="Resource user_led#1 does not exist"):
r = self.cm.lookup("user_led", 1)

def test_wrong_frequency_subsignals(self):
with self.assertRaises(ConstraintError,
with self.assertRaises(TypeError,
msg="Cannot constrain frequency of resource i2c#0 because "
"it has subsignals"):
self.cm.add_clock("i2c", 0, 10e6)