Simics Python设备中如何获取event.post所需的clock参数?
关于Simics中获取clock对象用于event.post()的问题
我在Simics文档中未找到获取clock对象以作为event.post()方法参数的相关示例,推测获取方式有两种:
- 通过属性获取clock;
- 在ConfObject类范围内使用
SIM_object_clock()获取clock。
我通过bin\project-setup --py-device event-py创建了一个新模块,并在ConfObject类中定义了clock_set和clock_get方法,用于设置和获取后续post方法所需的clock对象。但在真空机中读取设备寄存器时,调用post()方法失败。相关代码如下:
import pyobj # Tie code to specific API, simplifying upgrade to new major version import simics_6_api as simics class event_py(pyobj.ConfObject): """This is the long-winded documentation for this Simics class. It can be as long as you want.""" _class_desc = "one-line doc for the class" _do_not_init = object() def _initialize(self): super()._initialize() def _info(self): return [] def _status(self): return [("Registers", [("value", self.value.val)])] def getter(self): return self # In my mind, clock_set is supposed to set the clock object. That way we can use # it in post() def clock_set(self): self.clock = simics.SIM_object_clock(self) def clock_get(self): return self.clock(self): class value(pyobj.SimpleAttribute(0, 'i')): """The <i>value</i> register.""" class ev1(pyobj.Event): def callback(self, data): return 'ev1 with %s' % data class regs(pyobj.Port): class io_memory(pyobj.Interface): def operation(self, mop, info): offset = (simics.SIM_get_mem_op_physical_address(mop) + info.start - info.base) size = simics.SIM_get_mem_op_size(mop) if offset == 0x00 and size == 1: if simics.SIM_mem_op_is_read(mop): val = self._up._up.value.val simics.SIM_set_mem_op_value_le(mop, val) # POST HERE AS TEST self._up._up.ev1.post(clock, val, seconds = 1) else: val = simics.SIM_get_mem_op_value_le(mop) self._up._up.value.val = val return simics.Sim_PE_No_Exception else: return simics.Sim_PE_IO_Error
内容的提问来源于stack exchange,提问作者justin echols
相关产品推荐
相关产品推荐

