Source code for hwt.interfaces.agents.structIntf
from hwtSimApi.agents.base import AgentBase
from hwtSimApi.hdlSimulator import HdlSimulator
[docs]class StructIntfAgent(AgentBase):
"""
Agent for StructIntf interface
:summary: only purpose is to instantiate agents for child interfaces
"""
[docs] def __init__(self, sim: HdlSimulator, intf):
AgentBase.__init__(self, sim, intf)
for intf in intf._interfaces:
intf._initSimAgent(sim)
[docs] def set_data(self, d):
intf = self.intf
if d is None:
for i in intf._interfaces:
i._ag.set_data(None)
elif getattr(d, "_dtype", None) is intf._dtype:
for i in intf._interfaces:
v = getattr(d, i._name)
i._ag.set_data(v)
else:
assert len(d) == len(intf._interfaces), (d, intf._interfaces)
for v, i in zip(d, intf._interfaces):
i._ag.set_data(v)
[docs] def get_data(self):
intf = self.intf
return tuple(i._ag.get_data() for i in intf._interfaces)
[docs] def getMonitors(self):
for intf in self.intf._interfaces:
yield from intf._ag.getMonitors()
[docs] def getDrivers(self):
for intf in self.intf._interfaces:
yield from intf._ag.getDrivers()