[問題] 請問SystemVerilog裡的clocking block
各位大大好
小弟是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