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
    +关注

    关注

    1655

    文章

    22283

    浏览量

    630189
  • 软件
    +关注

    关注

    69

    文章

    5297

    浏览量

    90868

原文标题:cocotb初探

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    新品首发·东方中科智能座舱测试系统

    域协同测试的全流程闭环自动化测试。该系统搭载自研的HMI自动化测试软件,提供图形化编辑界面,用户无需编程即可快速构建测试序列,轻松实现
    的头像 发表于 11-28 10:33 223次阅读
    新品首发·东方中科智能座舱<b class='flag-5'>测试</b>系统

    Iverilog仿真e203_hbirdv2跑RISC-V指令测试用

    环境:Ubuntu20.04、Iverilog12.0、gtkwave3.3.103 内容:Iverilog仿真e203_hbirdv2跑RISC-V指令测试用 要点: 下载安装
    发表于 10-27 08:24

    如何让大模型生成你想要的测试用

    应用大模型生成测试用,常见的知识测试大模型,微调,RAG等技术门槛都不低,甚至很难,因此对于应用者而言,最快的方式就是应用好提示词,调教属于个人风格的
    的头像 发表于 09-26 10:01 559次阅读
    如何让大模型生成你想要的<b class='flag-5'>测试用</b><b class='flag-5'>例</b>?

    芯片硬件测试用

    是项目开始的关键,利用白盒和黑盒覆盖,保证产品质量。根据芯片功能,目标市场,进行测试立项:依据BRD/MRD/PRD;计划:测试需求分析、人力资源时间线;测试用
    的头像 发表于 09-05 10:04 518次阅读
    芯片硬件<b class='flag-5'>测试用</b><b class='flag-5'>例</b>

    上海控安:基于模型的测试用生成

    在当今复杂多变的软件开发环境中,软件系统的规模和复杂度不断攀升,传统测试方法面临着诸多挑战。如何高效、准确地生成测试用,以确保软件系统的质量和可靠性,成为软件测试领域的关键问题之一。
    的头像 发表于 08-28 14:30 514次阅读
    上海控安:基于模型的<b class='flag-5'>测试用</b><b class='flag-5'>例</b>生成

    HarmonyOSAI编程单元测试用

    根据选中的ArkTS方法名称,CodeGenie支持自动生成对应单元测试用,提升测试覆盖率。 在ArkTS文档中,光标放置于方法名称上或框选完整的待测试方法代码块,右键选择CodeG
    发表于 08-27 14:33

    NVMe高速传输之摆脱XDMA设计23:UVM验证平台

    子系统模型组成。UVM验证包用于构建测试用、提供激励、监测接口、对比分析统计测试结果;DUT 为待
    发表于 08-26 09:49

    AI生成的测试用真的靠谱吗?

    软件测试正经历一场深刻的技术革命。AI,尤其是以GPT、通义千问、文心一言、Claude等为代表的大语言模型(LLM),开始广泛介入测试流程:从需求分析、测试用设计,到脚本生成与
    的头像 发表于 08-01 10:02 1400次阅读
    AI生成的<b class='flag-5'>测试用</b><b class='flag-5'>例</b>真的靠谱吗?

    NVMe高速传输之摆脱XDMA设计18:UVM验证平台

    子系统模型组成。UVM验证包用于构建测试用、提供激励、监测接口、对比分析统计测试结果;DUT 为待
    发表于 07-31 16:39

    【评测试用】合众HZ-T536开发板免费试用体验

    【评测试用】合众HZ-T536开发板免费试用体验
    的头像 发表于 05-27 08:05 684次阅读
    【评<b class='flag-5'>测试用</b>】合众HZ-T536开发板免费<b class='flag-5'>试用</b>体验

    是德科技携手Alea成功验证3GPP EUTRA任务关键型测试用

    是德科技与 Alea S.r.l 近日在全球认证论坛(GCF)一致性协议组(CAG)会议上,成功率先完成对基于 3GPP 演进通用陆地无线接入(EUTRA)模型的关键任务一键通(MCPTT)测试用的验证。该验证采用是德科技 S8704A 协议一致性
    的头像 发表于 02-26 16:18 1208次阅读

    CFD仿真测试协同创新,构建仿真 + 实测”闭环

    积鼎科技专注于多相流领域,凭借自主研发的多相流仿真软件以及高精度测试设备,成功构建了“仿真 + 实测” 的闭环解决方案,助力企业在从设计优化到生产验证的整个过程中实现突破,为行业提供国
    的头像 发表于 02-20 11:04 934次阅读
    CFD<b class='flag-5'>仿真</b>与<b class='flag-5'>测试</b>协同创新,<b class='flag-5'>构建</b>“<b class='flag-5'>仿真</b> + 实测”闭环

    用于MySQL和MariaDB的Python连接器:可靠的MySQL数据连接器和数据

    用于 MySQL 和 MariaDB 的 Python 连接器 Python Connector for MySQL 是一种可靠的连接解决方案,用于
    的头像 发表于 01-17 12:18 844次阅读
    适<b class='flag-5'>用于</b>MySQL和MariaDB的<b class='flag-5'>Python</b>连接器:可靠的MySQL数据连接器和数据<b class='flag-5'>库</b>

    用于Oracle的Python连接器:可访问托管以及非托管的数据

    用于 Oracle 的 Python 连接器 适用于 Oracle 的 Python 连接器是一种可靠的连接解决方案,用于
    的头像 发表于 01-14 10:30 739次阅读

    通用自动化测试软件 - TAE

    INTEWORK-TAE(Test Automation Executor) 是一款通用的测试用自动化执行框架,用于汽车电子自动化测试,可支持仿真
    的头像 发表于 01-02 13:42 1286次阅读
    通用自动化<b class='flag-5'>测试</b>软件 - TAE