sim: proxy

This commit is contained in:
Sebastien Bourdeauducq 2012-03-30 16:40:26 +02:00
parent 081b658e2d
commit bb864c65dc

View file

@ -138,3 +138,20 @@ class Simulator:
value += 2**nbits value += 2**nbits
assert(value >= 0 and value < 2**nbits) assert(value >= 0 and value < 2**nbits)
self.ipc.send(MessageWrite(name, Int32(index), value)) self.ipc.send(MessageWrite(name, Int32(index), value))
class Proxy:
def __init__(self, sim, obj):
self.__dict__["_sim"] = sim
self.__dict__["_obj"] = obj
def __getattr__(self, name):
item = getattr(self._obj, name)
if isinstance(item, Signal):
return self._sim.rd(item)
else:
return Proxy(self._sim, item)
def __setattr__(self, name, value):
item = getattr(self._obj, name)
assert(isinstance(item, Signal))
self._sim.wr(item, value)