本文介紹了cocotb的安裝、python tb文件的寫法、用xrun仿真cocotb的腳本等,我們來看看體驗(yàn)如何。
一、準(zhǔn)備
centos7
python3.6+
yum install python3-devel
pip3 install --upgradecocotb
二、寫RTL
// top.sv module top ( input wire clk, input wire rst_n, input wire [7:0] din, output reg [7:0] dout ); initial begin $fsdbDumpfile("top.fsdb"); $fsdbDumpvars(0, top); end always@(posedge clk, negedge rst_n) if(!rst_n) dout <= 'd0; else dout <= din; endmodule // top
三、寫tb
# tb.py import cocotb fromcocotb.triggersimportTimer, FallingEdge async def gen_clk(dut): for cycle in range(100): dut.clk.value = 0 await Timer(10, units="ns") dut.clk.value = 1 awaitTimer(10,units="ns") async def gen_rst(dut): dut.rst_n.value = 0 await Timer(22, units="ns") dut.rst_n.value = 1 print("ResetDone") @cocotb.test() async def tb(dut): await cocotb.start(gen_clk(dut)) await cocotb.start(gen_rst(dut)) test_data_list = range(0,50, 5) for test_data in test_data_list: await FallingEdge(dut.clk) dut.din.value=test_data await Timer(100, units="ns")
6~11行:定義了一個(gè)時(shí)鐘,50MHz,100個(gè)周期。
13~17行:定義了一個(gè)復(fù)位信號(hào),低電平有效。復(fù)位拉高打印“Reset Done”,方便看log。
19行:用@cocotb.test()裝飾器指定了tb的頂層主函數(shù)。
22行:異步啟動(dòng)gen_clk
23行:異步啟動(dòng)gen_rst
25~28行:產(chǎn)生了一些測(cè)試數(shù)據(jù),在時(shí)鐘下降沿后驅(qū)動(dòng)dut的din。
30行:等待100ns結(jié)束仿真
四、寫仿真腳本Makefile
SIM ?= xcelium TOPLEVEL_LANG ?= verilog VERILOG_SOURCES += ./top.sv TOPLEVEL = top MODULE = tb include $(shell cocotb-config --makefiles)/Makefile.sim
設(shè)置默認(rèn)仿真器為cadence xcellium,RTL語言選verilog,指定RTL頂層模塊名字(就是dut的名字),testbench的名字為tb,最后include一個(gè)cocotb共用的makefile。
五、仿真和看波形
把top.sv、tb.py、Makefile放同一個(gè)目錄下,敲linux命令:make。不出意外的話,仿真可以正確編譯和仿真,如下圖:
由于我們?cè)赗TL頂層加入了dump fsdb波形的代碼,所以在log里可以看到有波形產(chǎn)生。280ns仿真結(jié)束,并顯示“tb passed”,并打印出匯總信息。可見log還是很友好的。
用verdi打開fsdb,與預(yù)期一致:
-
仿真
+關(guān)注
關(guān)注
50文章
4124瀏覽量
133993 -
文件
+關(guān)注
關(guān)注
1文章
570瀏覽量
24822 -
python
+關(guān)注
關(guān)注
56文章
4807瀏覽量
85040
原文標(biāo)題:厭倦了sv/uvm?來看看用python寫驗(yàn)證環(huán)境-cocotb
文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Python硬件驗(yàn)證——摘要
如何寫一個(gè)會(huì)講笑話的Python程序
![如何<b class='flag-5'>寫</b>一個(gè)會(huì)講笑話的<b class='flag-5'>Python</b>程序](https://file.elecfans.com/web1/M00/82/42/pIYBAFw4WFqAfChZAAAMNRTVuDw054.png)
用Python寫的一個(gè)電影推薦系統(tǒng)的程序和工程文件資料免費(fèi)下載
![<b class='flag-5'>用</b><b class='flag-5'>Python</b><b class='flag-5'>寫</b>的一個(gè)電影推薦系統(tǒng)的程序和工程文件資料免費(fèi)下載](https://file.elecfans.com/web1/M00/95/19/pIYBAFzwzjGAVLfYAAbIEfauekk387.png)
90條關(guān)于寫Python 程序的建議
基于python的用于構(gòu)建仿真及測(cè)試用例的lib庫cocotb
![基于<b class='flag-5'>python</b>的用于構(gòu)建仿真及測(cè)試用例的lib庫<b class='flag-5'>cocotb</b>](https://file.elecfans.com/web2/M00/17/B8/pYYBAGFmpOGANtGLAAAhsY4h7WU025.png)
1.2 Python 開發(fā)環(huán)境的搭建
![1.2 <b class='flag-5'>Python</b> 開發(fā)<b class='flag-5'>環(huán)境</b>的搭建](https://file.elecfans.com//web2/M00/30/A3/poYBAGILb36AJnEPAAC4FrnnVyI900.png)
cocotb中的基礎(chǔ)語法
怎么用腳本產(chǎn)生一個(gè)驗(yàn)證環(huán)境
cocotb的安裝、python tb文件的寫法
Python的虛擬環(huán)境究竟是什么
如何測(cè)試Python環(huán)境
Python寫機(jī)器人上位機(jī)
![<b class='flag-5'>Python</b><b class='flag-5'>寫</b>機(jī)器人上位機(jī)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論