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

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

3天内不再提示

用python写验证环境cocotb

OpenFPGA 来源: ExASIC 2024-07-24 09:38 次阅读

本文介绍了cocotb的安装、python tb文件的写法、用xrun仿真cocotb的脚本等,我们来看看体验如何。

一、准备

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行:定义了一个时钟,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 ?= xcelium
TOPLEVEL_LANG ?= verilog


VERILOG_SOURCES += ./top.sv
TOPLEVEL = 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。不出意外的话,仿真可以正确编译和仿真,如下图:

图片

由于我们在RTL顶层加入了dump fsdb波形的代码,所以在log里可以看到有波形产生。280ns仿真结束,并显示“tb passed”,并打印出汇总信息。可见log还是很友好的。

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

图片

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

    关注

    50

    文章

    4036

    浏览量

    133393
  • 文件
    +关注

    关注

    1

    文章

    561

    浏览量

    24692
  • python
    +关注

    关注

    55

    文章

    4778

    浏览量

    84439

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

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

收藏 人收藏

    评论

    相关推荐

    Python硬件验证——摘要

    - 为什么选择 Python?如何使用 Python 进行验证(测试平台)? Cocotb -(CO-routine 和 CO-simulation 的Testbench)可能是事实
    发表于 11-03 13:07

    详细Python网络爬虫

    详细Python网络爬虫
    发表于 09-07 08:40 32次下载
    详细<b class='flag-5'>用</b><b class='flag-5'>Python</b><b class='flag-5'>写</b>网络爬虫

    如何一个会讲笑话的Python程序

    笑话从哪里来?自己肯定是不现实的。在这个“云”的时代,各种云都有,自然是不缺开放API的。下面一个Python的例子,其实不止
    的头像 发表于 01-11 16:47 3045次阅读
    如何<b class='flag-5'>写</b>一个会讲笑话的<b class='flag-5'>Python</b>程序

    Python的一个电影推荐系统的程序和工程文件资料免费下载

    本文档的主要内容详细介绍的是Python的一个电影推荐系统的资料免费下载。
    发表于 05-31 08:00 1次下载
    <b class='flag-5'>用</b><b class='flag-5'>Python</b><b class='flag-5'>写</b>的一个电影推荐系统的程序和工程文件资料免费下载

    90条关于Python 程序的建议

    自己 Python 也有四五年了,一直是自己的“强迫症”在维持自己代码的质量。都有去看Google的Python代码规范,对这几年的工作经验,做个简单的笔记,如果你也在学pythp
    的头像 发表于 05-31 10:12 1454次阅读

    Python网络爬虫

    Python网络爬虫的方法说明。
    发表于 06-01 11:55 21次下载

    基于python的用于构建仿真及测试用例的lib库cocotb

    and Verilog testbenches in Python.         21世纪,python成了一门吃香的语言。cocotb是一套基于python的用于构建仿真及测试
    的头像 发表于 10-13 17:01 6656次阅读
    基于<b class='flag-5'>python</b>的用于构建仿真及测试用例的lib库<b class='flag-5'>cocotb</b>

    1.2 Python 开发环境的搭建

    1.2 Python 开发环境的搭建 理论上只需要你安装了 CPython 解释器后,就可以开始 Python 代码了。为了让你的在代码
    的头像 发表于 02-15 17:16 1437次阅读
    1.2 <b class='flag-5'>Python</b> 开发<b class='flag-5'>环境</b>的搭建

    cocotb中的基础语法

    cocotb的出现使得我们能够在做RTL仿真验证时依托Python来进行测试用例的构建,当我们习惯了Verilog、SystemVerilog来构建测试用例时,切换到
    的头像 发表于 07-21 09:18 2320次阅读

    怎么脚本产生一个验证环境

    之前有朋友问我怎么脚本产生一个验证环境,这个问题今天和大家介绍下两种做法。
    的头像 发表于 08-11 09:07 1401次阅读

    cocotb的安装、python tb文件的写法

    设置默认仿真器为cadence xcellium,RTL语言选verilog,指定RTL顶层模块名字(就是dut的名字),testbench的名字为tb,最后include一个cocotb共用的makefile。
    的头像 发表于 09-21 11:33 3382次阅读

    Python的虚拟环境究竟是什么

    本质上,Python的虚拟环境目的和上面是一样的。希望大家不要误解“虚拟”二字,Python的虚拟环境无非就是将系统的Python运行
    的头像 发表于 02-24 14:21 1010次阅读

    如何测试Python环境

    在编程中,测试是一项重要的工作,可以帮助我们验证代码的正确性和稳定性。在Python编程环境中,同样需要进行测试来确保Python的安装和配置是正确的。在本篇文章中,我们将介绍如何测试
    的头像 发表于 04-14 12:14 4921次阅读

    Python机器人上位机

    PythonGUI的插件比较多,常用的有Tkinter、pyqt5,本将使用pyqt5机器人的上位机。Tkinter 是 Python的标准 GUI 库,是
    发表于 05-09 11:10 0次下载
    <b class='flag-5'>Python</b><b class='flag-5'>写</b>机器人上位机

    Python运行环境有哪些

    Python是一种广泛使用的高级编程语言,它有许多种运行环境,可以适应不同的开发需求。下面将详细介绍Python的几种常见的运行环境。 CPython: CPython是
    的头像 发表于 11-29 16:14 1904次阅读