首页 / 行业
基于python的用于构建仿真及测试用例的lib库cocotb
2021-10-13 17:01:00
对于从事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里安装步骤为:在安装过程中,有遇到“Python.h: No such file or directory”,解决办法为:#Prepare
sudo yum install make gcc gcc-c++ libstdc++-devel python3 python3-devel python3-pip
#install cocotb
pip 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.
安装后可以查看到:1.可以先查看一下含python-devel的包
yumsearchpython|greppython-devel
2.64位安装python-devel.x86_64,32位安装python-devel.i686,我这里安装:
sudoyuminstallpython-devel.x86_64
3. 进入/usr/include/python2.7看一下现在有没有Python.h,版本不同目录名不同,我这里是2.7版本。其实也可以看到很多.h文件,python需要库或头文件都在这个地方。
对于没有VCS等收费EDA license的小伙伴建议安装Verilator:$cocotb-config -v
1.4.1.dev0
sudo apt-get install git make autoconf g++ flex bison -y # First time prerequisites
git clone http://git.veripool.org/git/verilator # Only first time
unsetenv VERILATOR_ROOT # For csh; ignore error if on bash
unset VERILATOR_ROOT # For bash
cdverilator
autoconf # Create ./configure script
./configure
make -j$(nproc)
sudomakeinstall
example
在cocotb中给出的example中,endian_swapper例子的测试框架为:测试框架和我们在平常的测试框架行为基本相同,不同是cocotb为Driver、Monitor、Scoreboard等都提供了基础类库供调用,对于搭建仿真平台应该有较好的帮助。而cocotb中提供的TestFactory,能够方便的进行测试用例的生成:这里根据输入的参数,factory会生成32个testcase用于测试,感觉还是蛮高效的。在仿真完成后,能够自动汇总测试结果: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()
写在最后
之所以探索下cocotb,主要原因是虽然SpinalHDL测试框架和cocotb差不多,但目前SpinalHDL尚未集成对VCS仿真器的集成(而我又没打算自己集成进去)。而在做FPGA设计时,若代码里集成了Xilinx/Altera的IP,那么在SpinalHDL的框架里就没办法进行仿真了,而cocotb则是一个不错的选择(若可以选,我仍选SpinalHDL,设计仿真一条龙,当然现在也可以,对于Mem、FIFO等常用IP SpinalHDL还是有提供的,或者我们自己按需定制实现IP也可以的,SpinalHDL写IP简直不要太爽)。责任编辑:haq最新内容
手机 |
相关内容
位移传感器结构类型及工作原理与应
位移传感器结构类型及工作原理与应用,工作原理,类型,结构,位移传感器,常见,效应,FDV302P位移传感器是一种用于测量物体位移或位置的DigiKey 推出《超越医疗科技》视频
DigiKey 推出《超越医疗科技》视频系列的第一季,推出,医疗科技,健康,需求,产品,诊断,全球供应品类丰富、发货快速的现货技术元器件加特兰毫米波雷达SoC芯片赋能室内
加特兰毫米波雷达SoC芯片赋能室内安防新应用,毫米波雷达,芯片,用于,稳定性,目标,感知,室内安防是一个重要的领域,随着技术的进步和人台积电1.4nm,有了新进展
台积电1.4nm,有了新进展,台积电,行业,需求,竞争力,支持,芯片,近日,台积电(TSMC)宣布将探索1.4纳米技术,这是一项令人振奋的举措,将有望为E光耦仿真器简介和优势
光耦仿真器简介和优势,仿真器,参数,接收器,设计方案,耦合,器件,光耦仿真器是一种用于模拟光耦合器件的工具,它可以帮助工程师在设计单相滤波器:从基础到应用的全面解读
单相滤波器:从基础到应用的全面解读,滤波器,能和,噪声,选择,信号,工作原理,TVP5146PFP单相滤波器是一种用于去除电源信号中的杂波和聊聊芯片中的负压产生机理及其应用
聊聊芯片中的负压产生机理及其应用,芯片,细胞,用于,测量,生物,结构,芯片中的负压是指在芯片内部产生的负压环境。在某些应用中,负压不只是芯片 看看传感器技术我们离
不只是芯片 看看传感器技术我们离世界顶级有多远,传感器,芯片,位置,测量,交通,用于,传感器技术是现代科技中至关重要的一部分,它们被