0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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行:定义了一个复位信号,低电平有效。复位拉高打印“Reset Done”,方便看log。

19行:用@cocotb.test()装饰器指定了tb的顶层主函数。

22行:异步启动gen_clk

23行:异步启动gen_rst

25~28行:产生了一些测试数据,在时钟下降沿后驱动dut的din。

30行:等待100ns结束仿真

四、写仿真脚本Makefile


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

设置默认仿真器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里可以看到有波形产生。280ns仿真结束,并显示“tb passed”,并打印出汇总信息。可见log还是很友好的。

用verdi打开fsdb,与预期一致:

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

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 仿真器
    +关注

    关注

    14

    文章

    1018

    浏览量

    83774
  • 代码
    +关注

    关注

    30

    文章

    4791

    浏览量

    68676
  • python
    +关注

    关注

    56

    文章

    4797

    浏览量

    84741

原文标题:厌倦了sv/uvm?来看看用python写验证环境

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    电脑是已经安装python2.7,为什么打开GUI的script window时,一直提示未找到python2.7?

    电脑是已经安装python2.7,为什么打开GUI的script window时,一直提示未找到python2.7?
    发表于 11-14 07:50

    使用Python搭建简易本地http服务器,升级WIPI模组

    01 下载python https://www.python.org/downloads/ 02 安装python 安装时候选择把path加
    的头像 发表于 09-29 15:38 570次阅读
    使用<b class='flag-5'>Python</b>搭建简易本地http服务器,升级WIPI模组

    python写验证环境cocotb

    本文介绍了cocotb安装python tb文件写法、用xrun仿真
    的头像 发表于 07-24 09:38 557次阅读
    用<b class='flag-5'>python</b>写验证环境<b class='flag-5'>cocotb</b>

    如何实现Python复制文件操作

    Python 中有许多“开盖即食”的模块(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在这篇文章中,你将会看到一些用 Python 实现文件复制的特殊
    的头像 发表于 07-18 14:53 427次阅读

    用pycharm进行python爬虫的步骤

    以下是使用PyCharm进行Python爬虫的步骤: 安装PyCharm和Python 首先,您需要安装PyCharm和Python。PyC
    的头像 发表于 07-11 10:11 863次阅读

    安装依赖的Python软件包时报错如何解决?

    安装依赖的 Python 软件包,出现了如下错误,请问如何解决,谢谢! Command \"E:/msys32/mingw32/bin/python2.7.exe E:/msys32
    发表于 06-26 07:32

    安装cryptography文件时,其依赖程序cffi安装失败,为什么?

    依照最新esp32_idf下requirements.txt文件安装指出的依赖文件。 其中在安装cryptography文件时,其依赖程序c
    发表于 06-26 06:38

    用离线安装安装的idf,其创建的Python虚拟环境无激活脚本是怎么回事?

    如题,用离线安装安装的idf,其创建的Python虚拟环境无激活脚本,具体如下图所示: 反而用vscode插件安装的idf有,如下图:vscode插件
    发表于 06-11 06:49

    Efinity软件安装教程与Efinity入门使用教程 大牛手把手教程

    1.软件安装教程 step1: 安装Python,注意勾选“Add Python 3.7 to PATH” (2022版本及以后直接跳过该步骤) 注意:从2021.1就不需要单独
    的头像 发表于 05-20 17:10 3096次阅读
    Efinity软件<b class='flag-5'>安装</b>教程与Efinity入门使用教程 大牛手把手教程

    请问handle的写法

    遇到一行代码 YDLidar *laser = lidarCreate(); //Create a handle to this Lidar. 请问这行代码是什么意思,句柄的写法怎么是这样的呀
    发表于 05-18 10:42

    Efinity软件安装-v3

    感谢朋友提供的视频。 1.软件安装 step1: 安装Python,注意勾选“Add Python 3.7 to PATH” (2022版本及以后直接跳过该步骤) 注意:从2021.1
    的头像 发表于 03-29 08:38 397次阅读

    基于Python的地图绘制教程

    本文将介绍通过Python绘制地形图的方法,所需第三方Python相关模块包括 rasterio、geopandas、cartopy 等,可通过 pip 等方式安装
    的头像 发表于 02-26 09:53 1232次阅读
    基于<b class='flag-5'>Python</b>的地图绘制教程

    如何使用linux下gdb来调试python程序

    GDB: ``` $ sudo apt install gdb ``` 安装完成后,需要安装Python调试符号。这些符号文件包含了Python
    的头像 发表于 01-31 10:41 2643次阅读

    python中open函数的用法详解

    python中open函数的用法详解 Python中的open()函数用于打开文件。它接受文件名和模式作为参数,并返回一个文件对象。
    的头像 发表于 01-30 15:31 2144次阅读

    itop-RK3588开发板机器视觉开发OpenCV-Python安装

    itop-RK3588开发板机器视觉开发OpenCV-Python安装
    的头像 发表于 01-26 15:18 4212次阅读
    itop-RK3588开发板机器视觉开发OpenCV-<b class='flag-5'>Python</b>的<b class='flag-5'>安装</b>