gpt4 book ai didi

verification - 如何在 Cocotb 中指定时间分辨率?

转载 作者:行者123 更新时间:2023-12-03 09:17:10 27 4
gpt4 key购买 nike

当我模拟Endian Swapper时,我得到了不同的时钟周期。使用 QuestaSim 在 VHDL 和 Verilog 模式下的 Cocotb 示例。 provided example code 中两种模式的时钟生成方式相同。 :

@cocotb.coroutine
def clock_gen(signal):
while True:
signal <= 0
yield Timer(5000)
signal <= 1
yield Timer(5000)


@cocotb.coroutine
def run_test(dut): # stripped un

cocotb.fork(clock_gen(dut.clk))

在 Verilog 模式下运行时:

make SIM=questa GUI=1

时钟周期为 1000 ns(一千纳秒),因此时间分辨率为 100 ps。

在 VHDL 模式下运行时:

make SIM=questa GUI=1 TOPLEVEL_LANG=vhdl

时钟周期为 10000 ns(万纳秒),因此时间分辨率为 1 ns。

我在另外两个 VHDL 项目中使用相同的时钟生成。在其中一个中,我也得到了 10000 ns 的时钟周期(1 ns 分辨率)。但在另一种情况下,时钟周期仅为 10 ns,分​​辨率为 1 ps。

为什么所有这些运行模式和项目的时间分辨率都不同?

如何一致地指定时间分辨率?

最佳答案

Makefile 生成的 runsim.do 文件中没有为 vsim 命令指定时间分辨率。因此,将使用 modelsim.ini 中指定的模拟器默认时间分辨率。其他 VHDL 项目之一有一个私有(private) modelsim.ini,其时间分辨率设置为 1 ps (Resolution = ps),而不是默认的 1 ns (Resolution = 纳秒)。

其他 vsim 参数可以通过 Cocotb 构建系统的 Makefile 变量 VSIM_ARGS 指定。但在命令行上设置此变量:

make SIM=questa GUI=1 "VSIM_ARGS=-t 1ps"

无法按预期工作,因为其他必需的 vsim 参数现已被删除。

必须在项目特定的 Makefile 中设置此变量,例如,在包含系统范围的 Makefile 之前:

VSIM_ARGS=-t 1ps

include $(COCOTB)/makefiles/Makefile.inc
include $(COCOTB)/makefiles/Makefile.sim

通过这种方式,人们可以在 VHDL 和 Verilog 中获得一致的时间分辨率。必须为每个项目相应地设置该参数。

关于verification - 如何在 Cocotb 中指定时间分辨率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36304687/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com