0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

cocotb的安裝、python tb文件的寫法

倩倩 ? 來源:處芯積律 ? 作者:處芯積律 ? 2022-09-21 11:33 ? 次閱讀

本文介紹了cocotb的安裝、python tb文件的寫法、用xrun仿真cocotb的腳本等,我們來看看體驗如何。

一、準備

  • centos7

  • python3.6+

  • yum install python3-devel

  • pip3 install --upgradecocotb

二、寫RTL


// top.svmodule 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 cocotbfromcocotb.triggersimportTimer, FallingEdge
async def gen_clk(dut):    for cycle in range(100):        dut.clk.value = 0        await Timer(10, units="ns")        dut.clk.value = 1awaitTimer(10,units="ns")
async def gen_rst(dut):    dut.rst_n.value = 0    await Timer(22, units="ns")    dut.rst_n.value = 1print("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行:定義了一個時鐘,50MHz,100個周期。

13~17行:定義了一個復(fù)位信號,低電平有效。復(fù)位拉高打印“Reset Done”,方便看log。

19行:用@cocotb.test()裝飾器指定了tb的頂層主函數(shù)。

22行:異步啟動gen_clk

23行:異步啟動gen_rst

25~28行:產(chǎn)生了一些測試數(shù)據(jù),在時鐘下降沿后驅(qū)動dut的din。

30行:等待100ns結(jié)束仿真

四、寫仿真腳本Makefile


SIM ?= xceliumTOPLEVEL_LANG ?= verilog
VERILOG_SOURCES += ./top.svTOPLEVEL = top
MODULE = tb
include $(shell cocotb-config --makefiles)/Makefile.sim

設(shè)置默認仿真器cadence xcellium,RTL語言選verilog,指定RTL頂層模塊名字(就是dut的名字),testbench的名字為tb,最后include一個cocotb共用的makefile。

五、仿真和看波形

把top.sv、tb.py、Makefile放同一個目錄下,敲linux命令:make。不出意外的話,仿真可以正確編譯和仿真,如下圖:

819eeb2e-395c-11ed-9e49-dac502259ad0.png

由于我們在RTL頂層加入了dump fsdb波形的代碼,所以在log里可以看到有波形產(chǎn)生。280ns仿真結(jié)束,并顯示“tb passed”,并打印出匯總信息??梢妉og還是很友好的。

用verdi打開fsdb,與預(yù)期一致:

826ac91a-395c-11ed-9e49-dac502259ad0.png

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 仿真器
    +關(guān)注

    關(guān)注

    14

    文章

    1011

    瀏覽量

    83565
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4705

    瀏覽量

    68127
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4761

    瀏覽量

    84316

原文標(biāo)題:厭倦了sv/uvm?來看看用python寫驗證環(huán)境

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    python寫驗證環(huán)境cocotb

    本文介紹了cocotb安裝、python tb文件寫法、用xrun仿真
    的頭像 發(fā)表于 07-24 09:38 ?401次閱讀
    用<b class='flag-5'>python</b>寫驗證環(huán)境<b class='flag-5'>cocotb</b>

    如何實現(xiàn)Python復(fù)制文件操作

    Python 中有許多“開蓋即食”的模塊(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在這篇文章中,你將會看到一些用 Python 實現(xiàn)文件復(fù)制的特殊
    的頭像 發(fā)表于 07-18 14:53 ?321次閱讀

    如何使用linux下gdb來調(diào)試python程序

    GDB: ``` $ sudo apt install gdb ``` 安裝完成后,需要安裝Python調(diào)試符號。這些符號文件包含了Python
    的頭像 發(fā)表于 01-31 10:41 ?2262次閱讀

    python運行環(huán)境的安裝和配置

    Python是一種非常流行的編程語言,廣泛應(yīng)用于科學(xué)計算、Web開發(fā)、人工智能等領(lǐng)域。為了能夠正常運行Python程序,我們需要先安裝和配置Python運行環(huán)境。本文將為您詳盡介紹
    的頭像 發(fā)表于 11-29 16:17 ?1053次閱讀

    查看python安裝路徑的方法

    Python是一種高級編程語言,常用于開發(fā)Web應(yīng)用、數(shù)據(jù)分析、人工智能等領(lǐng)域。在使用Python進行開發(fā)之前,我們需要先安裝Python解釋器,并了解
    的頭像 發(fā)表于 11-29 14:54 ?1.1w次閱讀

    python安裝后idle在哪兒

    Python 是一種非常流行的編程語言,它使用簡單且易于理解的語法,使得它成為初學(xué)者和專業(yè)開發(fā)人員的首選。Python安裝非常簡單,您只需在官方網(wǎng)站上下載適合您操作系統(tǒng)的安裝包,然
    的頭像 發(fā)表于 11-29 14:52 ?1099次閱讀

    python程序文件擴展名主要有哪兩種

    Python程序文件的擴展名主要有兩種,分別是.py和.pyw。 .py擴展名: .py是Python程序最常見的擴展名,它表示一個Python腳本
    的頭像 發(fā)表于 11-29 14:30 ?6378次閱讀

    python程序的文件擴展名

    Python是一種高級編程語言,它的文件擴展名為.py。在本文中,我們將詳細討論Python程序文件的擴展名,包括其含義、用途以及與其他文件
    的頭像 發(fā)表于 11-29 14:25 ?1762次閱讀

    python中如何保存文件

    Python中,可以使用多種方式來保存文件。以下是一些常見的方法: 使用內(nèi)置的open()函數(shù):open()函數(shù)用于打開文件并返回一個文件對象,可以在此對象上執(zhí)行讀取和寫入操作。您可
    的頭像 發(fā)表于 11-24 09:32 ?1049次閱讀

    python怎么運行程序

    Python是一種廣泛使用的編程語言,它的簡易和可讀性使得它成為初學(xué)者和專業(yè)開發(fā)人員的首選。在運行Python程序之前,您需要安裝Python解釋器,然后按照以下步驟進行操作。 步驟1
    的頭像 發(fā)表于 11-24 09:25 ?2439次閱讀

    windows7可以安裝python什么版本

    Windows 7可以安裝多個Python版本,以下是適用于Windows 7的常見Python版本: Python 2.7:Python
    的頭像 發(fā)表于 11-23 17:15 ?2.7w次閱讀

    Python 如何對文件系統(tǒng)進行監(jiān)控提取

    音樂文件的高潮部分。 這樣的監(jiān)控器寫起來也不難,但是很花時間,有許多情況要考慮。不過幸好我們是寫Python的,有許多輪子可以使用。 1.準備 開始之前,你要確保Python和pip已經(jīng)成功
    的頭像 發(fā)表于 11-02 15:25 ?457次閱讀
    <b class='flag-5'>Python</b> 如何對<b class='flag-5'>文件</b>系統(tǒng)進行監(jiān)控提取

    基于一個能監(jiān)控文件變化的Python神器

    ,自動提取該音樂文件的高潮部分。 這樣的監(jiān)控器寫起來也不難,但是很花時間,有許多情況要考慮。不過幸好我們是寫Python的,有許多輪子可以使用。 1.準備 開始之前,你要確保Python和pip已經(jīng)成功
    的頭像 發(fā)表于 11-01 09:52 ?399次閱讀
    基于一個能監(jiān)控<b class='flag-5'>文件</b>變化的<b class='flag-5'>Python</b>神器

    Dynaconf 輕松實現(xiàn) Python 動態(tài)配置管理

    Dynaconf 是一個Python的第三方模塊,旨在成為在 Python 中管理配置的最佳選擇。 它可以從各種來源讀取設(shè)置,包括環(huán)境變量、文件、服務(wù)器配置等。 它適用于任何類型的 Pytho
    的頭像 發(fā)表于 10-30 15:02 ?816次閱讀

    如何用Python來實現(xiàn)文件系統(tǒng)的操作功能

    近幾年隨著 Python 的熱度不斷上漲,人們漸漸使用這門編程語言來進行一些自動化操作,以節(jié)省重復(fù)勞動帶來的效率低下,那么必定會涉及到對 文件系統(tǒng)的操作 ,包括文件的 增、刪、改、查 等等,今天小編
    的頭像 發(fā)表于 10-30 14:27 ?361次閱讀
    如何用<b class='flag-5'>Python</b>來實現(xiàn)<b class='flag-5'>文件</b>系統(tǒng)的操作功能