2016-11-23 56 views
1

我試圖將Cocotb設置爲我的驗證環境。 我一直在尋找有用的例子,但我不知道我應該走的方向。cocotb的總線監視器

我的塊可以被看作是:在輸入
-4總線
-1時鐘和復位1作爲輸入
-2總線在輸出

輸出是一個組合和時序處理的結果的輸入信號。 我沒有去更進一步的部分是如何定義正確監視我的輸入和輸出總線,這是(據我所知)不符合AvalonST

我看了Cocotb提供的例子,以及什麼阻止我得到啓發的是,無論是提供:
- 具備沒有監視器(如加法)
次使用AvalonST驅動程序(如endianswapper)

我目前最大的問題是:
- 當在看意思是,我看到這個人已經定義了自己的StreamBusMonitor,並且我也應該按照我的理解去做(監視我的4個輸入來供給我的參考模型)。我對麼?

- 我不明白是怎麼信號的名稱是由StreamBusMonitor我看到以下行匹配:
dut_out = StreamBusMonitor(DUT,「O」,dut.clk)
但我不瞭解「o」的用途以及StreamBusMonitor使用的位置。有人能幫助我嗎?

- 我還沒有找到任何官方的Cocotb論壇。有沒有一個更正式的地方問我關於Cocotb的初學者問題,而不是StackOverflow?

謝謝大家的幫助。

+0

你可以在[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

+0

是的,你需要編寫你自己的'Monitor'和'Transaction'類。 – Paebbels

+0

非常感謝您的幫助(再次)以及您的例子,這些非常有用。 它幫了我很多。 – user1654361

回答

0

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