Vhdl 如何在没有竞争条件的情况下并行运行多个modelsim实例?

Vhdl 如何在没有竞争条件的情况下并行运行多个modelsim实例?,vhdl,verilog,modelsim,Vhdl,Verilog,Modelsim,我想用多个参数并行运行相同的模拟。 我该怎么做?当多个实例尝试编译到同一文件夹并更改同一modelsim.ini文件时,如何防止竞争条件 我用的是奎斯塔西姆 我想这样做: while ($x <= $num_processes) vsim -do run.do & end while($x您可以通过环境变量为vsim调用设置参数。 请用以下文字阅读: global env; puts $env(RESULTFOLDER) 可以使用泛型将参数传播到verilog/vhdl文

我想用多个参数并行运行相同的模拟。 我该怎么做?当多个实例尝试编译到同一文件夹并更改同一modelsim.ini文件时,如何防止竞争条件

我用的是奎斯塔西姆

我想这样做:

while ($x <= $num_processes)
  vsim -do run.do &
end

while($x您可以通过环境变量为vsim调用设置参数。
请用以下文字阅读:

global env; 
puts $env(RESULTFOLDER)
可以使用泛型将参数传播到verilog/vhdl文件:

-Gparam=123
要防止竞争条件在并行运行多个modelsim实例时,您需要注意两件事:

  • 每个实例都有一个单独的库文件夹实例

    vlib work
    file rename work $RESULTFOLDER/work
    vmap work $RESULTFOLDER/work
    
    cp modelsim.ini $folder/modelsim.ini
    vsim -modelsimini $folder/modelsim.ini  -do run.do
    
  • 确保在启动流程之前复制modelsim.ini文件,并为每个实例单独设置

    vlib work
    file rename work $RESULTFOLDER/work
    vmap work $RESULTFOLDER/work
    
    cp modelsim.ini $folder/modelsim.ini
    vsim -modelsimini $folder/modelsim.ini  -do run.do
    
  • ,一个针对VHDL和SystemVerilog的免费开源测试框架,处理这个问题

    下面是VHDL中的最小VUnit测试台,添加了
    generic和调用
    info
    (VUnit日志框架的一部分)以打印该generic

    library vunit_lib;
    context vunit_lib.vunit_context;
    
    entity tb_example is
      generic (value      : integer;
               runner_cfg : string);
    end entity;
    
    architecture tb of tb_example is
    begin
      test_runner : process
      begin
        test_runner_setup(runner, runner_cfg);
    
        info("Generic = " & to_string(value));
    
        test_runner_cleanup(runner);
      end process;
    end architecture;
    
    通过在VUnit运行脚本中定义配置,可以使用不同的通用值运行此测试台。下面是一个最小运行脚本,添加了三行以创建这些配置(请参阅注释)

    如果使用
    -p5
    选项执行此脚本,VUnit将在五个不同的线程中运行模拟。从输出中可以看出,执行顺序不确定


    免责声明:我是作者之一。

    您认为竞争条件会出现在哪里?每个ModelSim实例都是一个单独的进程…您可能在文件覆盖方面有问题,但这是一个不同的问题!文件覆盖是竞争条件。哪个文件覆盖?写入不同的文件。总体性能如何?在p中使用线程用于CPU限制任务的ython没有任何优势。模拟器通常只使用一个线程,因此并行运行多个模拟可以提供接近4x的性能(如果您有一个quad Core)。哦,您只调用了多个具有不同参数的外部模拟器实例。正是如此,您需要许多模拟器许可证,但您可以使用免费的许可证can use.VUnit还与Jenkins CI一起使用,它允许您在联网机器集群上运行大量并行Modelsim实例