lib.io: Expose Pin
path and name as attributes.
This commit is contained in:
parent
1dd2e6150c
commit
f2dab705ee
|
@ -1,6 +1,7 @@
|
|||
from .. import *
|
||||
from ..lib import wiring
|
||||
from ..lib.wiring import In, Out
|
||||
from .. import tracer
|
||||
|
||||
|
||||
__all__ = ["Pin"]
|
||||
|
@ -123,9 +124,14 @@ class Pin(wiring.PureInterface):
|
|||
|
||||
def __init__(self, width, dir, *, xdr=0, name=None, path=None, src_loc_at=0):
|
||||
if name is not None:
|
||||
if path is None:
|
||||
if path is not None:
|
||||
raise ValueError("Cannot pass both name and path")
|
||||
path = (name,)
|
||||
if path is None:
|
||||
name = tracer.get_var_name(depth=2 + src_loc_at, default="$pin")
|
||||
path = (name,)
|
||||
self.path = tuple(path)
|
||||
self.name = path[-1]
|
||||
signature = Pin.Signature(width, dir, xdr=xdr)
|
||||
super().__init__(signature, path=path, src_loc_at=src_loc_at + 1)
|
||||
|
||||
|
|
|
@ -218,3 +218,14 @@ class PinTestCase(FHDLTestCase):
|
|||
self.assertEqual(pin.signature.width, 2)
|
||||
self.assertEqual(pin.signature.dir, "io")
|
||||
self.assertEqual(pin.signature.xdr, 2)
|
||||
self.assertEqual(pin.name, "pin")
|
||||
self.assertEqual(pin.path, ("pin",))
|
||||
self.assertEqual(pin.i0.name, "pin__i0")
|
||||
pin = Pin(2, dir="io", xdr=2, name="testpin")
|
||||
self.assertEqual(pin.name, "testpin")
|
||||
self.assertEqual(pin.path, ("testpin",))
|
||||
self.assertEqual(pin.i0.name, "testpin__i0")
|
||||
pin = Pin(2, dir="io", xdr=2, path=["a", "b"])
|
||||
self.assertEqual(pin.name, "b")
|
||||
self.assertEqual(pin.path, ("a", "b"))
|
||||
self.assertEqual(pin.i0.name, "a__b__i0")
|
||||
|
|
Loading…
Reference in a new issue