| |
本文基于Cocotb的simple_dff示例来介绍Cocotb用户可见的环境结构。首先从simple_dff的文件示例来看,整个包括四个文件,两个DUT文件,分别为verilog和Vhdl格式,支持不同类型的代码仿真,一个Makefile配置文件和一个python平台开发文件。
代码和仿真平台没有严格的位置绑定关系,用户可以根据实际情况合理存放相关设计和验证文件。本文重点阐述Makefile和test_dff.py文件。
一、首先针对Makefile做一个简要介绍:
Makefile第4~10行主要是基于设计代码类型指定代码源文件,Verilog类型则由变量VERILOG_SOURCES来指向当前的代码源文件;如若设计代码为VHDL,则由变量VHDL_SOURCES指定。该变量指定的文件会在仿真阶段调用执行。
Makefile第12行的变量MODULE指向的是Python验证平台的文件名称,此名称则对应test_dff.py文件。
Makefile第13行的变量TOPLEVEL则表明当前验证的DUT的Module Name。
Makefile第15行则include了cocotb安装目录下的Makefile.sim文件,该Makefile会根据运行cocotb的命令行中仿真器的类别来调用不同仿真器的makefile,从而执行相关仿真器的编译和仿真操作。
当用户需要在编译或者仿真阶段添加相关操作时,cocotb提供了COMPILE_ARGS/SIM_ARGS/RUN_ARGS等变量共用户添加使用,用户可以先参考https://docs.cocotb.org/en/stable/building.html?highlight=args了解相关的用法。
二、其次针对test_dff.py做一个简要介绍:
test_dff.py第4行import了random库,该库是做相关的random操作
test_dff.py第5行import了cocotb库,该库则是整个平台重要的库文件
test_dff.py第6行import了clock库,该库则是产生时钟的库文件
test_dff.py第7行import了FallingEdge库,该库则是信号下降沿触发的库文件
test_dff.py第10行是Python装饰器
test_dff.py第11行是Cocotb平台的主函数,该验证平台的整体功能均在此函数中完成。
test_dff_simple函数主要完成了以下功能:
1、第14~15行阐述周期为10us的时钟并驱动到dut的clk信号上,时钟是在整个进程中并行执行
2、第17行等待dut的clk的下降沿
3、第18~22行先在random一个0或1的值驱动到dut的d端口上,等时钟下降沿时check dut的q端口的数值是否等于random的值,该整体行为重复10个cycle
通过如上的简要描述我们可以发现,cocotb可以通过简单的配置和简单的代码描述完成一个基本的python验证平台。如果大家感兴趣可以按照笔者的简介依葫芦画瓢试一试吧。
内容如有错误还请各位指正,欢迎各位读者交流经验。邮箱:xiaochuan7206043@163.com