でtestcase1実行できるようにしたいです。シミュレータはどのようなタイプのトップレベルジェネリックも扱えないので、文字列ジェネリックを使用してそれを時間に変換することができます。以下は
library vunit_lib;
context vunit_lib.vunit_context;
entity tb_test is
generic (
clk_period_as_string : string;
runner_cfg : runner_cfg_t);
end tb_test;
architecture tb of tb_test is
constant clk_period : time := time'value(clk_period_as_string);
begin
test_runner : process
begin
test_runner_setup(runner, runner_cfg);
info("Clock period set to: " & to_string(clk_period));
test_runner_cleanup(runner);
end process test_runner;
end;
A VUnitスクリプトは、テストベンチ
from os.path import join, dirname
from vunit import VUnit
prj = VUnit.from_argv()
tb_lib = prj.add_library('tb_lib')
tb_lib.add_source_files(join(dirname(__file__), 'test', '*.vhd'))
tb = tb_lib.entity("tb_test")
generics = dict(clk_period_as_string="5 ns")
tb.add_config(name='clock period = 5 ns', generics=generics)
generics = dict(clk_period_as_string="10 ns")
tb.add_config(name='clock period = 10 ns', generics=generics)
prj.main()
のいくつかの構成を作成することで、このジェネリックを制御することができます(私ができる場合、私はTCLを避けるように、私は著者の一人です)VUnitテストベンチの例です
結果は
なり、これを行うための方法はたくさんあります。さまざまなテストケースを管理および実行するために現在どのような方法を使用していますか?おそらくあなたはすでに持っているものとうまく合うものを望むでしょう。 –
CLK_PERIODを信号にしますか? –