quartus中對某個module寫tb時,tb中可以用FSM寫個數據流做激勵嗎?

tb文件下載到板子上是不是也是綜合出硬體電路(比如狀態機),當做被測模塊的激勵?求簡單講解下FPGA的eda軟體大概工作原理?


FSM在RTL中是最常用經典控制邏輯,具有步進迭代的特性,根據現態得到次態,但是在tb中基本上沒有人用,除非非常複雜的控制。因為FSM都需要綜合成寄存器的,它是典型的RTL級,但是tb最適合的是寫行為級的模型,寫RTL乃是費力不討好的事情。

行為級tb的好處在於,反正不需要綜合,把觸發條件直接羅列出來,用最直接粗暴的方式實現目的就行,根本不需要狀態機那般精細操作。

tb不需綜合的先天優勢,相比於RTL有很多好處:

RTL綜合後的硬體是無法停止的,有clk就幹活。tb的task想啥時候開始就啥時候開始,想啥時候結束就啥時候結束;生命周期好控制,在非正常計算期間可以直接disable掉,不會有異常發生。RTL中無數bug,就是因為某些硬體一直在你不希望它運算的時候做了運算,得到了錯誤的結果。

RTL的順序需要designer顯式操縱,比如狀態機,比如嚴格的觸發條件,tb中除了fork-join,一個語句塊內,寫在前面就先執行,寫在後面就後執行,多個語句快之間也可以觸發執行,不需要什麼太多sync。這也是RTL沒法比的。


推薦閱讀:

TAG:現場可編輯邏輯門陣列FPGA | EDA | ASIC |