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

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

3天内不再提示

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

OpenFPGA 来源:似猿非猿的FPGA 作者:似猿非猿的FPGA 2021-10-13 17:01 次阅读

对于从事ASIC行业及FPGA行业的小伙伴来说,仿真是一件必不可少的事情。或许有人是验证大拿,UVM高手,但相较于软件丰富的验证框架,对于各种各样的场景单纯的SV构建测试用例是否便捷值得推敲。

何为cocotb

cocotb is a coroutine based cosimulation library for writing VHDL and Verilog testbenches in Python.

21世纪,python成了一门吃香的语言。cocotb是一套基于python的用于构建仿真及测试用例的lib库,它的框架为:

可以看到,在cocotb的框架里,我们的待测试逻辑运行在仿真器中(VCS、Verilator等),而我们的测试框架及测试用例均以python的形式构建,双方通过仿真器提供的各种标准接口进行通信。及设计代码为Verilog/VHDL/Systemverilog,而测试代码为Python。

存在即合理,为什么这么搞?因为Python写起来简单呗!在能够正常实现对DUT的接口驱动的同时借助python丰富的lib库能够让我们快速的构建测试用例及参考模型。而借助软件现成的测试框架能够极大加速验证流程。想想单纯的一个图像处理的仿真用纯Systemverilog的方式进行验证在进行测试数据生成及最后结果对比要多少脚本……

cocotb安装

按照cocotb手册给出的安装流程,在CentOS里安装步骤为:
#Preparesudo yum install make gcc gcc-c++ libstdc++-devel python3 python3-devel python3-pip#install cocotbpip install cocotb##pip may belong to a different Python installation# to what you expect. Use pip -V to check. If this #prints “(python 2.7)”, use pip3 or python3 -m pip #inplaceofpipinthecommandshown.
在安装过程中,有遇到“Python.h: No such file or directory”,解决办法为:
1.可以先查看一下含python-devel的包yumsearchpython|greppython-devel2.64位安装python-devel.x86_64,32位安装python-devel.i686,我这里安装:sudoyuminstallpython-devel.x86_643. 进入/usr/include/python2.7看一下现在有没有Python.h,版本不同目录名不同,我这里是2.7版本。其实也可以看到很多.h文件,python需要库或头文件都在这个地方。
安装后可以查看到:
$cocotb-config -v1.4.1.dev0
对于没有VCS等收费EDA license的小伙伴建议安装Verilator:
sudo apt-get install git make autoconf g++ flex bison -y  # First time prerequisitesgit clone http://git.veripool.org/git/verilator   # Only first timeunsetenv VERILATOR_ROOT  # For csh; ignore error if on bashunset VERILATOR_ROOT  # For bashcdverilatorautoconf        # Create ./configure script./configuremake -j$(nproc)sudomakeinstall

example

在cocotb中给出的example中,endian_swapper例子的测试框架为:

e07e8c38-2a05-11ec-82a8-dac502259ad0.png

测试框架和我们在平常的测试框架行为基本相同,不同是cocotb为Driver、Monitor、Scoreboard等都提供了基础类库供调用,对于搭建仿真平台应该有较好的帮助。而cocotb中提供的TestFactory,能够方便的进行测试用例的生成:
factory = TestFactory(run_test)factory.add_option("data_in",                 [random_packet_sizes])factory.add_option("config_coroutine",        [None, randomly_switch_config])factory.add_option("idle_inserter",           [None, wave, intermittent_single_cycles, random_50_percent])factory.add_option("backpressure_inserter",   [None, wave, intermittent_single_cycles, random_50_percent])factory.generate_tests()
这里根据输入的参数,factory会生成32个testcase用于测试,感觉还是蛮高效的。在仿真完成后,能够自动汇总测试结果:

写在最后

之所以探索下cocotb,主要原因是虽然SpinalHDL测试框架和cocotb差不多,但目前SpinalHDL尚未集成对VCS仿真器的集成(而我又没打算自己集成进去)。而在做FPGA设计时,若代码里集成了Xilinx/Altera的IP,那么在SpinalHDL的框架里就没办法进行仿真了,而cocotb则是一个不错的选择(若可以选,我仍选SpinalHDL,设计仿真一条龙,当然现在也可以,对于Mem、FIFO等常用IP SpinalHDL还是有提供的,或者我们自己按需定制实现IP也可以的,SpinalHDL写IP简直不要太爽)。

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

    关注

    1625

    文章

    21620

    浏览量

    601185
  • 软件
    +关注

    关注

    69

    文章

    4691

    浏览量

    87081

原文标题:cocotb初探

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

收藏 人收藏

    评论

    相关推荐

    端到端测试用怎么写

    编写端到端测试用是确保软件系统从头到尾能够正常工作的关键步骤。以下是一个详细的指南,介绍如何编写端到端测试用: 一、理解端到端测试 端到
    的头像 发表于 09-20 10:29 303次阅读

    是德科技获得5G NR FR1 1024-QAM 解调测试用的认证

    是德科技(Keysight Technologies,Inc.)日前宣布获得了基于3GPP TS 38.521-4测试规范的 5G NR FR1 1024-QAM 解调测试用的认证。这些测试
    的头像 发表于 07-31 16:46 865次阅读

    鉴源实验室·ISO 26262中测试用的得出方法-等价类的生成和分析

    标准规范中给出了单元、集成、系统测试各阶段的建议测试使用方法,设计生成测试用的建议方法包括需求分析、等价类的生成和分析、边界值分析、基于已有经验和知识的错误推测等等,从本篇开始我们
    的头像 发表于 07-30 15:37 411次阅读
    鉴源实验室·ISO 26262中<b class='flag-5'>测试用</b><b class='flag-5'>例</b>的得出方法-等价类的生成和分析

    是德科技获得窄带非地面网络标准的新测试用验证

    是德科技(Keysight Technologies,Inc.)日前宣布,该公司针对3GPP Rel-17标准中关于NB-IoT NTN技术的新一致性测试用获得验证通过。这些测试用
    的头像 发表于 07-26 14:13 575次阅读

    python写验证环境cocotb

    本文介绍了cocotb的安装、python tb文件的写法、用xrun仿真cocotb的脚本等,我们来看看体验如何。
    的头像 发表于 07-24 09:38 447次阅读
    用<b class='flag-5'>python</b>写验证环境<b class='flag-5'>cocotb</b>

    LitePoint与三星电子合作支持FiRa 2.0物理层安全测距测试用

    先进无线测试解决方案提供商LitePoint与三星电子宣布紧密合作,支持FiRa 2.0物理层(PHY)一致性测试规范内定义的新安全测试用
    的头像 发表于 05-16 11:26 509次阅读

    RA2在e² studio环境生成LIB操作

    RA2在e² studio环境生成LIB操作
    的头像 发表于 05-15 08:06 396次阅读
    RA2在e² studio环境生成<b class='flag-5'>LIB</b><b class='flag-5'>库</b>操作

    DEKRA被CSA指定为Zigbee统一测试工具开发和优化新功能和测试用

    DEKRA德凯被CSA联盟(Connectivity Standards Alliance,CSA)指定负责为Zigbee统一测试工具(Zigbee Unified Test Harness,ZUTH)开发和优化新功能和测试用
    的头像 发表于 04-09 14:10 448次阅读

    PTCRB的测试用类认证等级分类介绍

    PTCRB的测试用类认证等级CategoryA/B/EA类项:测试用在商用系统上经过完全验证;必测项且需要结果为PASSB类项:测试用
    的头像 发表于 03-14 16:46 337次阅读
    PTCRB的<b class='flag-5'>测试用</b>类认证等级分类介绍

    是德科技首批3GPP Release 16 16/32测试用获得批准

    本次验证涵盖单个和多个预编码矩阵指示符测试用,主要面向在频分双工和时分双工频段上运行的 16/32 通道发射机
    的头像 发表于 02-21 14:14 378次阅读

    python第三方有哪些

    和物理模拟等领域中发挥着重要的作用。 Pandas Pandas 是一个用于数据处理和分析的 Python 。它
    的头像 发表于 11-29 14:31 2067次阅读

    磁盘eCryptfs加密测试用

    apt安装用户态工具ecryptfs-utils即可。 4.1、测试用 下图是一个脚本基础测试用。先创建test目录和文件hello,
    的头像 发表于 11-29 11:27 1077次阅读
    磁盘eCryptfs加密<b class='flag-5'>测试用</b><b class='flag-5'>例</b>

    一文了解导入测试数据自动化生成测试用的方法

    作者|Poplar小编|吃不饱概述在模型开发过程中,测试是一个不可或缺的环节。在测试过程中,测试用的编写是所有测试工程师关注的重点和难点。
    的头像 发表于 11-23 08:24 778次阅读
    一文了解导入<b class='flag-5'>测试</b>数据自动化生成<b class='flag-5'>测试用</b><b class='flag-5'>例</b>的方法

    是德科技成功验证3GPP Release 17 NTN标准测试用

    2023年11月14日,是德科技(Keysight Technologies,Inc.)成功验证了针对 3GPP Rel-17 标准的 NB-IoT NTN 一致性测试用。该测试用
    的头像 发表于 11-15 09:33 857次阅读

    是德科技验证首个协议一致性测试用

    (3GPP)第 17 版 (Rel-17) 标准验证了首个协议一致性测试用。该经过验证的测试用用于是德科技的 5G 网络
    的头像 发表于 11-14 16:01 774次阅读