的StreamBusMonitor
是基於其在cocotb/monitors/__init__.py
類定義的開頭是這樣定義的BusMonitor
類:
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)
在StreamBusMonitor
構造的"o"
是name
說法。當它被傳遞給構造函數Bus
時,用於確定信號的全名。
您可能已經意識到,一個相當明智和常見的總線命名方案是總線協議信號名稱,其中附加或附加了一些獨特的標識符,如「i」in,「o」out或「axi_m」一個AXI大師等,這正是cocotb所假設的。
StreamBusMonitor
的信號被聲明並覆蓋BusMonitor
的_signals
和_optional_signals
值。因此,這裏所定義的信號:
class StreamBusMonitor(BusMonitor):
"""
streaming bus monitor
"""
_signals = ["valid", "data"]
主要有連接的名稱(在前面加上_
加入信號和總線名稱是默認的行爲按cocotb/bus.py
),以確定在設計總線信號名稱"o"
,並且設計層次中正確對象的句柄是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
至於通信信道現在有一個小膠質信道:
https://gitter.im/cocotb
和郵件列表由LibreCores設置:
https://lists.librecores.org/listinfo/cocotb
你可以在[Gitter頻道](https://gitter.im/vhdl/General)上提問。您還可以查看我們的[PoC-Library](https://github.com/VLSI-EDA/PoC?ts=2)中提供的3個Cocotb測試平臺:[PoC.cache.par](https:// github .com/VLSI-EDA/PoC/blob/master/tb/cache/cache_par_cocotb.py?ts = 2),[PoC.sort.lur_cache](https://github.com/VLSI-EDA/PoC/blob/ master/tb/sort/sort_lru_cache_cocotb.py?ts = 2)或[PoC.sort.lru_list](https://github.com/VLSI-EDA/PoC/blob/master/tb/sort/sort_lru_list_cocotb.py?ts = 2)。 – Paebbels
是的,你需要編寫你自己的'Monitor'和'Transaction'類。 – Paebbels
非常感謝您的幫助(再次)以及您的例子,這些非常有用。 它幫了我很多。 – user1654361