我正在尝试将Cocotb设置为我的验证环境。 我一直在看这些有用的例子,但我不确定应该去的方向。
我的区块可以看作:
输出是输入信号的组合和顺序处理的结果。
我缺乏的部分是如何为我的输入和输出总线正确定义监视器,这是(据我所知)不符合AvalonST
我查看了Cocotb提供的示例,以及阻止我获得灵感的是,提供的是:
我现在的问题是:
StreamBusMonitor
,我应该在我的理解中做同样的事情(监视我的4个输入以提供我的参考模型)。我是对的吗?StreamBusMonitor
如何匹配信号的名称我看到以下几行:dut_out = StreamBusMonitor(dut, "o", dut.clk)
感谢大家的帮助。
答案 0 :(得分:1)
StreamBusMonitor
基于BusMonitor
中定义的cocotb/monitors/__init__.py
类
类定义的开头如下所示:
class BusMonitor(Monitor):
"""
Wrapper providing common functionality for monitoring busses
"""
_signals = []
_optional_signals = []
def __init__(self, entity, name, clock, reset=None, reset_n=None,
callback=None, event=None):
self.log = SimLog("cocotb.%s.%s" % (entity._name, name))
self.entity = entity
self.name = name
self.clock = clock
self.bus = Bus(self.entity, self.name, self._signals,
optional_signals=self._optional_signals)
self._reset = reset
self._reset_n = reset_n
Monitor.__init__(self, callback=callback, event=event)
"o"
构造函数中的StreamBusMonitor
是name
参数。这用于在传递给Bus
构造函数时确定信号的全名。
您可能已经意识到一个相当明智和常见的总线命名方案是总线协议信号名称,其中附加或附加了一些唯一标识符,例如“i”表示输入,“o”表示out,或“axi_m”表示AXI大师等等,这正是cocotb所假设的。
宣布StreamBusMonitor
的信号并覆盖BusMonitor
的{{1}}和_signals
值。所以这里定义的信号是:
_optional_signals
基本上有class StreamBusMonitor(BusMonitor):
"""
streaming bus monitor
"""
_signals = ["valid", "data"]
附加到名称(前缀为"o"
加入信号,总线名称是默认行为,按_
)来确定总线信号名称设计,以及设计层次结构中正确对象的句柄是cocotb/bus.py
参数。
这是有道理的,因为声明的信号是上面的信号,VHDL中的信号是:
entity
至于沟通渠道,现在有一个gitter渠道:
和LibreCores建立的邮件列表: