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()