[問題] 請問SystemVerilog裡的clocking block

看板Electronics作者 (夏夜晚風)時間10年前 (2016/01/24 23:08), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
各位大大好 小弟是systemverilog的新手 想要請教一下有關於clocking block的一些問題 1. clocking block主要的目的是用來做甚麼的呢? 我的理解是利用這個block 可以把testbench裡的input跟output訊號,對同一個clock訊號做同步 然後可以對這些input/output訊號做skew的控制 不知道這樣的理解有沒有錯誤? 如果不用這種寫法的話,是不是就需要自己對每個testbench裡的訊號做時序的控制? 2. 對於clocking block裡的skew還有一些問題想要請教 skew可以設定input skew (在clock edge 前多久時間sample) 與output skew(delay 多久時間drive訊號) 請問有這個skew的目的,是為了 1. 對於output (DUT的intput) , 有了這個skew可以滿足DUT 不會latch到一個在 clock edge 瞬變的data (這與DUT定義的setup time 有關嗎? 會造成metastable?) 2. 對於input (DUT的output), 有了這個skew可以確定TB採樣到DUT在前一個clock period裡最後的一個時間點的data (對於TB會有setup time與metastable 的問題嗎??) 不知道這樣理解有沒有問題? 我截了兩個圖來說明我的想法 不知道各位大大有沒有空幫我review一下 XD http://imgur.com/HlCGM7t
3. 在Chris Spear的 SystemVerilog for Verification一書中 第四章裡面有提到clocking block 其中有一段文字我不是很明白 截錄如下: ========================================================================================================== A testbench has to mimic this tester behavior. It should drive on or after the active clock edge, and should sample as late as possible as allowed by the protocol timing specification, just before the active clock edge. ========================================================================================================== 請問他的意思是不是說,TB應該在一個clock edge delay一點時間去drive 訊號給DUT,並且在clock edge 前一點時間去sample DUT 以獲得DUT前一 個clock period 最後一個時間點的data? 跟我上面第二點講的是同一個意思嗎? 不好意思問題有點亂 因為自己也還不是學得很好 如果還需要提供甚麼資料我可以再補充 先感謝各位大大看完此篇 :) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.167.31.248 ※ 文章網址: https://www.ptt.cc/bbs/Electronics/M.1453648094.A.C06.html
文章代碼(AID): #1MfEZUm6 (Electronics)