如何在 Modelsim 中使用 -g 开关将多个泛型传递给 vsim?

How to pass multiple generics to vsim using -g switch in Modelsim?

我正在尝试使用 vsim 命令中的 -g 开关将多个 VHDL 泛型传递到 Modelsim 10.7b 中的测试台。如何传递多个泛型,其中所有泛型都在另一个 string/file.

中定义

简而言之:当我使用

set generics "-gHEIGHT=1 -gWIDTH=2" vsim $generic work.test 只有第一个通用的,即 HEIGHT 正在改变。 WIDTH 没有得到值 2。它保持在实体初始化的值。

test.vhd 文件:

library IEEE;
use IEEE.std_logic_1164.all;

entity test is

  generic (
    HEIGHT : integer := 0;
    WIDTH  : integer := 0);

  port (
    clk : in std_logic);

end entity test;

architecture arch of test is

begin  -- architecture arch



end architecture arch;

使用命令 运行 sim :

vlib work
vmap work work
vcom test.vhd
set generics  "-gHEIGHT=1 -gWIDTH=2"

vsim 命令,其中两个泛型都使用 -g 开关成功传递到 vhdl 文件:

vsim -gHEIGHT=1 -gWIDTH=2 work.test

vsim 命令,其中仅将字符串中的第一个通用 generic 传递给 vhdl..i.e 仅传递 HEIGHT:

vsim $generics  work.test

我正在尝试通过 vsim 命令从 python 传递多个(~10)泛型。所以我无法在执行模拟的 vsim 命令中列出泛型名称。

要将单个变量中包含的多个参数传递给命令,请使用 {*}:

展开变量
vsim {*}$generics work.test

它适用于 eval "vsim $generics work.test"

即使 Modelsim 评估此语句并在命令执行时将其显示为 vsim -gHEIGHT=1 -gWIDTH=2 work.test,看起来 vsim 解析器并未将其作为参数。

作为替代方法,您可以将 -f 参数用于 vsim 命令,并指定一个包含各种 vsim 参数(包括通用参数)的文件。例如:

vsim -f arg_file.txt

那么您的文件(arg_file.txt 在这种情况下)可以包含您的通用参数或您可能需要的任何其他内容:

-gHEIGHT=1 -gWIDTH=2