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

    文章

    1052

    浏览量

    88182
  • 代码
    +关注

    关注

    30

    文章

    4976

    浏览量

    74358
  • python
    +关注

    关注

    58

    文章

    4883

    浏览量

    90294

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    [VirtualLab] 使用Python运行VirtualLab Fusion光学仿真

    Python编辑器的用户: 请安装保存在文件requirements.txt中的所有软件包。最常见的方法之一是pip安装: pip install -r requirements.tx
    发表于 03-31 09:39

    [VirtualLab] 使用Python进行跨平台参数扫描

    如何收集结果,这些结果可以通过Python提供的所有功能进一步处理。以光栅为例,严格分析了光栅的衍射效率。 **此用例展示了… ** 在哪里找文件 README文件 **准备Python
    发表于 03-31 09:36

    如何在 Vision Five 2 上安装 python 库?

    这可能是一个完全愚蠢的问题,但我如何在 Vision Five 2 上安装 python 库。 使用该命令后,它给了我这个错误。 默认为用户安装,因为普通站点包不可写 错误:找不到满足要求
    发表于 03-06 07:51

    安装 Python VisionFive_GPIO失败是哪里出了问题?

    wget bs4 python3 安装VisionFive_gpio.py python3:无法打开文件 \'home/user/Install VisionFive_gpio.py
    发表于 02-11 06:13

    【EASY EAI Nano-TB(RV1126B)开发板试用】+桌面系统安装及测试

    EASY-EAI-NANO-TB固件是不带桌面系统的,对于使用桌面系统的用户需自行安装。完成一定要使用系统具备下载程序的能力,前面以介绍了建立网络通信的方法,以此为基础即可进行桌面系统的安装。 1
    发表于 12-26 23:53

    【EASY EAI Nano-TB(RV1126B)开发板试用】介绍、系统安装

    【EASY EAI Nano-TB(RV1126B)开发板试用】介绍、系统安装 本文介绍了灵眸科技 EASY EAI Nano-TB(RV1126B) 开发板的相关信息,包括包装、外观、产品特性等
    发表于 12-23 18:05

    没有专利的opencv-python 版本

    (64位 Windows)场景优先推荐: 一、首选:Python 3.13 兼容的「无专利风险核心版」(无需 contrib) 直接安装 opencv-python 官方核心版(不含任何专利算法,仅
    发表于 12-13 12:37

    Termux中调试圣诞树Python代码

    ,先安装并验证: 打开Termux,输入以下命令安装Python(回车执行): pkg install python -y -y 表示自动确认
    发表于 12-09 09:02

    EASY EAI Nano-TB(RV1126B)开发板试用】1、初识

    Session,并选中Serial,最后选择open,打开终端: 4、输入查看信息: 5、系统已经给我们安装python3: root@EASY-EAI-NANO-TB:/# python
    发表于 11-16 11:15

    使用NucleiStudio生成tb仿真需要的.verilog文件

    打开仿真顶层文件tb_top.v,存放在ITCM模块里面的指令是通过readmemh函数读入.verilog文件实现的: 下面通过对NucleiStudio IDE进行设置,实现将c
    发表于 11-05 07:07

    MA35-RTT如何安装 Python 和 Libusb (Windows) ?

    MA35-RTT:如何安装 Python 和 Libusb (Windows) ?
    发表于 09-03 08:30

    termux调试python猜数字游戏

    安装Python ```bash pkg update && pkg upgrade pkg install python ``` Python是Termux官
    发表于 08-29 17:15

    termux如何搭建python游戏

    Pygame),确保已安装`clang`编译器:`apt install -y clang` 3. 权限问题:若需访问手机文件安装`termux-setup-storage`并授权存储访问权限。 通过以上步骤,即可在Te
    发表于 08-29 07:06

    linux虚拟环境中调用Linux 版matlab编译的python库时出错

    matlab代码编译为CAO_pythonpython库,其中cp_Main_python.m为入口文件,编译后生成的文件有mccExcl
    发表于 07-18 10:40

    【VisionFive 2单板计算机试用体验】安装openplc

    openplc-vf2.deb 1.4、创建环境 创建python虚拟环境并安装python包 user@starfive:~$ cd openplc_v3/ user@starfive
    发表于 07-15 23:30