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

    文章

    991

    浏览量

    83048
  • 代码
    +关注

    关注

    30

    文章

    4559

    浏览量

    66931
  • python
    +关注

    关注

    52

    文章

    4686

    浏览量

    83508

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

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

收藏 人收藏

    评论

    相关推荐

    python运行环境的安装和配置

    Python是一种非常流行的编程语言,广泛应用于科学计算、Web开发、人工智能等领域。为了能够正常运行Python程序,我们需要先安装和配置Python运行环境。本文将为您详尽介绍
    的头像 发表于 11-29 16:17 580次阅读

    查看python安装路径的方法

    Python是一种高级编程语言,常用于开发Web应用、数据分析、人工智能等领域。在使用Python进行开发之前,我们需要先安装Python解释器,并了解
    的头像 发表于 11-29 14:54 1076次阅读

    python安装后idle在哪儿

    Python 是一种非常流行的编程语言,它使用简单且易于理解的语法,使得它成为初学者和专业开发人员的首选。Python安装非常简单,您只需在官方网站上下载适合您操作系统的安装包,然
    的头像 发表于 11-29 14:52 510次阅读

    python程序的文件扩展名

    Python是一种高级编程语言,它的文件扩展名为.py。在本文中,我们将详细讨论Python程序文件的扩展名,包括其含义、用途以及与其他文件
    的头像 发表于 11-29 14:25 969次阅读

    python中如何保存文件

    Python中,可以使用多种方式来保存文件。以下是一些常见的方法: 使用内置的open()函数:open()函数用于打开文件并返回一个文件对象,可以在此对象上执行读取和写入操作。您可
    的头像 发表于 11-24 09:32 589次阅读

    python怎么运行程序

    Python是一种广泛使用的编程语言,它的简易和可读性使得它成为初学者和专业开发人员的首选。在运行Python程序之前,您需要安装Python解释器,然后按照以下步骤进行操作。 步骤1
    的头像 发表于 11-24 09:25 2070次阅读

    基于一个能监控文件变化的Python神器

    器,自动提取该音乐文件的高潮部分。 这样的监控器写起来也不难,但是很花时间,有许多情况要考虑。不过幸好我们是写Python的,有许多轮子可以使用。 1.准备 开始之前,你要确保Python和pip已经成功
    的头像 发表于 11-01 09:52 223次阅读
    基于一个能监控<b class='flag-5'>文件</b>变化的<b class='flag-5'>Python</b>神器

    如何用Python自动上传文件到百度网盘

    要使用Python自动上传文件到百度网盘,你可以使用bypy开源模块,它提供了丰富的功能,包括显示文件列表、同步目录、文件上传。 仅支持 /apps/bypy 目录。 1.准备 开始之
    的头像 发表于 10-16 11:28 637次阅读
    如何用<b class='flag-5'>Python</b>自动上传<b class='flag-5'>文件</b>到百度网盘

    如何使用Python读取写入Word文件

    Word 文件。 1、安装 pip install python-docx 02 读写 1、读取 使用 python-docx 库可以轻松读取 Word
    的头像 发表于 09-27 17:03 1480次阅读

    如何安装Python图像处理PIL库

    我们推荐使用Pillow而不是PIL。 Pillow对python的版本有一定要求,详见下图: 安装完成后,我们可以在Python中导入PIL库,检查是否成功:
    的头像 发表于 09-12 17:15 1391次阅读
    如何<b class='flag-5'>安装</b><b class='flag-5'>Python</b>图像处理PIL库

    如何使用Python和pandas库读取、写入文件

    在本文中,我将介绍如何使用 Python 和 pandas 库读取、写入文件。 1、安装 pip install pandas 2、读取 import pandas as pd df
    的头像 发表于 09-11 17:52 803次阅读

    Visual Studio中python使用pip命令安装模块

    Visual Studio中python使用pip命令安装模块
    的头像 发表于 07-27 11:42 925次阅读
    Visual Studio中<b class='flag-5'>python</b>使用pip命令<b class='flag-5'>安装</b>模块

    Python实现OpenCV的安装与使用

      本文实例讲述了 Python 实现 OpenCV 的安装与使用。分享给大家供 大家参考,具体如下:  由于下一步要开始研究下深度学习,而深度学习领域很多的算法和应 用都是用 Python 来实现
    发表于 07-20 11:46 7次下载

    python文件操作是什么

    一、什么是文件操作 一个完整的程序一般都包括数据的存储和读取;我们在前面写的程序数据都没有进行实际的存储,因此python解释器执行完数据就消失了 实际开发中,我们经常需要从外部存储介质(硬盘、光盘
    的头像 发表于 06-21 17:15 1510次阅读
    <b class='flag-5'>python</b><b class='flag-5'>文件</b>操作是什么

    Python的离线安装

    在没有外网的情况下,安装Python环境只能采用离线方式。
    的头像 发表于 06-13 15:22 711次阅读
    <b class='flag-5'>Python</b>的离线<b class='flag-5'>安装</b>