Make overriding port assignments in Python work,
and print better error messages when it doesn't.
This commit is contained in:
parent
45cba35fc1
commit
7bf6a219db
2 changed files with 9 additions and 3 deletions
|
@ -212,7 +212,8 @@ class PioDevice : public MemObject
|
|||
{
|
||||
if (if_name == "pio") {
|
||||
if (pioPort != NULL)
|
||||
panic("pio port already connected to.");
|
||||
fatal("%s: pio port already connected to %s",
|
||||
name(), pioPort->getPeer()->name());
|
||||
pioPort = new PioPort(this, sys);
|
||||
return pioPort;
|
||||
} else
|
||||
|
@ -289,12 +290,14 @@ class DmaDevice : public PioDevice
|
|||
{
|
||||
if (if_name == "pio") {
|
||||
if (pioPort != NULL)
|
||||
panic("pio port already connected to.");
|
||||
fatal("%s: pio port already connected to %s",
|
||||
name(), pioPort->getPeer()->name());
|
||||
pioPort = new PioPort(this, sys);
|
||||
return pioPort;
|
||||
} else if (if_name == "dma") {
|
||||
if (dmaPort != NULL)
|
||||
panic("dma port already connected to.");
|
||||
fatal("%s: dma port already connected to %s",
|
||||
name(), pioPort->getPeer()->name());
|
||||
dmaPort = new DmaPort(this, sys);
|
||||
return dmaPort;
|
||||
} else
|
||||
|
|
|
@ -1004,6 +1004,7 @@ class PortRef(object):
|
|||
if self.peer and not proxy.isproxy(self.peer):
|
||||
print "warning: overwriting port", self, \
|
||||
"value", self.peer, "with", other
|
||||
self.peer.peer = None
|
||||
self.peer = other
|
||||
if proxy.isproxy(other):
|
||||
other.set_param_desc(PortParamDesc())
|
||||
|
@ -1046,6 +1047,8 @@ class PortRef(object):
|
|||
if self.ccConnected: # already done this
|
||||
return
|
||||
peer = self.peer
|
||||
if not self.peer: # nothing to connect to
|
||||
return
|
||||
connectPorts(self.simobj.getCCObject(), self.name, self.index,
|
||||
peer.simobj.getCCObject(), peer.name, peer.index)
|
||||
self.ccConnected = True
|
||||
|
|
Loading…
Reference in a new issue