時鐘是芯片驗證過程中最基本也是最重要的決定因素,一個精確的時鐘產生對時鐘敏感的電路來說至關重要。
Cocotb平臺中內建了時鐘產生的函數Clock()。Clock函數在官網上的描述如下:
Clock函數一共有三個形參,分別為:
signal:驅動的時鐘信號,如dut.clk
period:時鐘周期,必須為偶數個時間單位
units:時間單位,可以為“飛秒”、“皮秒”、“納秒”、“微秒”、“毫秒”、“秒”等時間單位;同時支持“時間步”,此時則協同“COCOTB_HDL_TIMEPRECISION”來決定具體的時間單位。
Clock的構造實例如下:
方式一:c = Clock(dut.clk, 10, 'ns')
cocotb.fork(c.start())
方式二:cocotb.fork(Clock(dut.clk, 10, units='ns').start())
產生的效果如下:
當時鐘周期為奇數時則會報相關系統錯誤
當希望產生一個520.13MHz頻率的時鐘時,時鐘周期為1.922596274008421ns,為了產生精度較高的520.13MHz時鐘時,可以采用不同的時間單位來構造該時鐘。
1、采用時間單位為“ns”,時鐘周期四舍五入取值為2ns
2、采用時間單位為“ps”,時鐘周期四舍五入取值為1923ps,周期要求偶數則取值為1924ps
3、采用時間單位為“fs”,時鐘周期四舍五入取值為1922596fs
Clock函數采用不同的時間單位時需要確保與代碼的timescale匹配,也就是說Clock函數的時間單位應大于等于timescale的時間單位。
以上產生的時鐘均為占空比1:1的時鐘,當用戶需要產生占空比非1:1的時鐘時,可以參考如下代碼的實現:
當用戶需要做時鐘的動態調整時,可以參考如下的代碼實現:
審核編輯:黃飛
-
芯片
+關注
關注
455文章
50851瀏覽量
423916 -
時鐘
+關注
關注
11文章
1734瀏覽量
131510 -
函數
+關注
關注
3文章
4332瀏覽量
62653 -
時鐘信號
+關注
關注
4文章
449瀏覽量
28571
發布評論請先 登錄
相關推薦
評論