Vhdl 在测试台上运行不同时钟模式的最佳方法
我对以不同的时钟频率运行当前的测试用例感兴趣,而不必在只改变时钟周期的情况下重新创建新的测试用例。对于这样的东西,使用tcl脚本会更好吗 例如:Vhdl 在测试台上运行不同时钟模式的最佳方法,vhdl,Vhdl,我对以不同的时钟频率运行当前的测试用例感兴趣,而不必在只改变时钟周期的情况下重新创建新的测试用例。对于这样的东西,使用tcl脚本会更好吗 例如: testcase1 has process begin wait for CLK_PERIOD / 2.0; CLK <= not CLK; wait forCLK_PERIOD / 2.0; NCLK <= not CLK; end process; testcase1已
testcase1 has
process
begin
wait for CLK_PERIOD / 2.0;
CLK <= not CLK;
wait forCLK_PERIOD / 2.0;
NCLK <= not CLK;
end process;
testcase1已经
过程
开始
等待时钟周期/2.0;
CLK您可以将时钟周期作为常规传递给testbench实体。模拟器无法处理任何类型的顶级泛型,因此可以使用字符串泛型并将其转换为时间。下面是VUnit测试台的一个示例(我是作者之一,因此如果可以的话,我会避免使用TCL)
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()
结果将是
您可以将时钟周期作为常规传递给测试台实体。模拟器无法处理任何类型的顶级泛型,因此可以使用字符串泛型并将其转换为时间。下面是VUnit测试台的一个示例(我是作者之一,因此如果可以的话,我会避免使用TCL)
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()
结果将是
有很多方法可以做到这一点。您当前使用什么方法来管理和运行不同的测试用例?想必你会想要一些和你已经拥有的东西很匹配的东西。让时钟周期成为一个信号?有很多方法可以做到这一点。您当前使用什么方法来管理和运行不同的测试用例?想必你会想要一些和你已经拥有的相匹配的东西。把时钟周期作为一个信号?
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()