2

我正在尝试将 Cocotb 设置为我的验证环境。我一直在看这些有用的例子,但我不确定我应该去的方向。

我的块可以看作:

  • 4条总线输入
  • 1 个时钟和 1 个复位作为输入
  • 2 总线输出

输出是输入信号的组合和顺序处理的结果。

我需要更进一步的部分是如何为我的输入和输出总线正确定义监视器,这些(据我所知)不符合 AvalonST

我查看了 Cocotb 提供的示例,阻止我获得灵感的是所提供的:

  • 没有监视器(如加法器)
  • 使用 AvalonST 驱动程序(如 endianswapper)

我目前的问题是:

  • 在查看平均示例时,我看到这个人已经定义了自己的StreamBusMonitor,我应该按照我的理解做同样的事情(监控我的 4 个输入以提供我的参考模型)。我对么?
  • 我不明白信号的名称如何与StreamBusMonitor我看到以下行匹配:
    dut_out = StreamBusMonitor(dut, "o", dut.clk)
    但我不明白“o”的用途,以及它在 StreamBusMonitor 中的使用位置。有人可以帮助我吗?
  • 我还没有找到任何官方的 Cocotb 论坛。有没有比 StackOverflow 更正式的地方来问我关于 Cocotb 的初学者问题?

感谢你的帮助。

4

1 回答 1

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"是参数。这用于在将信号传递给构造函数时确定信号的全名。StreamBusMonitornameBus

您可能知道,一个相当合理和常见的总线命名方案是总线协议信号名称,附加或前置一些唯一标识符,例如“i”表示输入,“o”表示输出,或“axi_m”表示 AXI 主机,等等,这正是 cocotb 假设正在发生的事情。

的信号StreamBusMonitor被声明并覆盖BusMonitor'_signals_optional_signals值。所以这里定义的信号:

class StreamBusMonitor(BusMonitor):
    """
    streaming bus monitor
    """
    _signals = ["valid", "data"]

本质上"o"附加到名称(在_加入信号之前,总线名称是默认行为cocotb/bus.py)以确定设计中的总线信号名称,并且设计层次结构中正确对象的句柄是entity参数。

这是有道理的,因为声明的信号是上面的信号,而 VHDL 中的信号是:

  i_valid  : in  std_logic;
  i_data   : in  t_data_array(0 to BUS_WIDTH-1);
  o_valid  : out std_logic;
  o_data   : out t_data

至于通信渠道,现在有一个 gitter 渠道:

https://gitter.im/cocotb

以及 LibreCores 设置的邮件列表:

https://lists.librecores.org/listinfo/cocotb

于 2017-05-19T04:38:37.837 回答