将参数从 makefile 传递到 cocotb testbench

Pass argument from makefile to cocotb testbench

给定 cocotb/examples/dff/ 中的 D-FF 示例。在不修改原生 cocotb makefile 的情况下,将参数从 Makefile 传递到 cocotb 测试平台 dff_cocotb.py 的正确方法是什么?

我尝试修改cocotb/examples/dff/tests/Makefile的第30行:

sim:
    $(MODULE).py testarg

分别

sim: $(MODULE).py
$(MODULE).py:
    $(MODULE).py testarg

这不起作用并显示错误消息:

usage: cocotb [-h] test
cocotb: error: too few arguments

嗯。看起来 Makefile 启动了模拟器,而模拟器又通过 VPI 挂钩调用 cocotb 到模拟器中。如果我没理解错的话,就是通过环境变量给cocotb框架指定了目标testbench。

这意味着您也可以使用环境将参数传递给 $(MODULE).py。即,启动 make 为:

MY_TB_ARGS=<whatver> make

在 $(MODULE).py 中,通过

访问它们
import os
myTbArgs = os.environ['MY_TB_ARGS']

我会做类似的事情

make PLUSARGS="+my_arg1=123 +my_arg2=456"

并通过cocotb.plusargs

访问它
>>>print(cocotb.plusargs)
{'my_arg1': '123', 'my_arg2': '456'}