为什么端口映射的方向是从设计到测试台而不是相反?
Why is the direction in port mappings from the design to the test-bench and not vice versa?
当使用 VHDL 中的测试台进行测试时,我们将 I/O 从我们正在测试的设计映射到测试台的 I/O。
对我来说,给我们的设计输入一些来自测试台的生成值,然后观察设计的输出并检查它是否符合我们的预期是有意义的。 (例如在单元测试中)
但是在定义测试平台的架构时:
architecture behavior of tb is
signal tb_input : std_logic := '0';
signal tb_output: std_logic := '0';
-- Component decl. for the Unit under Test (UUT)
component design_to_test is
port (
input : in std_logic;
output: out std_logic);
end component design_to_test;
begin
-- Here we initiate the UUT
UUT : design_to_test
port map (
input => tb_input
-- this is what I don't understand. Why are we
giving the input of our design to the testbench?
output => tb_output
-- this makes sense to me as we have to observe the
the output of our design.
);
-- main testing
end behavior;
所以基本上我不明白的部分是我们如何使用测试平台的输入。为什么我们不定义一些输入,然后将其提供给设计进行评估?
实际上你需要激励你的UUT的输入。
目前您的测试平台不完整。
添加一些序列以将不同的值分配给 tb_input
。
然后添加一些检查 tb_output
携带预期值。
port map
只是告诉模拟器(或者合成器,如果你正在合成)哪些端口连接到外层的哪些信号。
所以input => tb_input
确实不是意味着数据从input
流向tb_input
。它说端口 input
必须连接到信号 tb_input
。数据方向来自 in
和 out
关键字。
看成是IC插座和连接的网线,就是外层的信号,插在插座上的IC和它的管脚,就是你的组件的端口。
当使用 VHDL 中的测试台进行测试时,我们将 I/O 从我们正在测试的设计映射到测试台的 I/O。
对我来说,给我们的设计输入一些来自测试台的生成值,然后观察设计的输出并检查它是否符合我们的预期是有意义的。 (例如在单元测试中)
但是在定义测试平台的架构时:
architecture behavior of tb is
signal tb_input : std_logic := '0';
signal tb_output: std_logic := '0';
-- Component decl. for the Unit under Test (UUT)
component design_to_test is
port (
input : in std_logic;
output: out std_logic);
end component design_to_test;
begin
-- Here we initiate the UUT
UUT : design_to_test
port map (
input => tb_input
-- this is what I don't understand. Why are we
giving the input of our design to the testbench?
output => tb_output
-- this makes sense to me as we have to observe the
the output of our design.
);
-- main testing
end behavior;
所以基本上我不明白的部分是我们如何使用测试平台的输入。为什么我们不定义一些输入,然后将其提供给设计进行评估?
实际上你需要激励你的UUT的输入。
目前您的测试平台不完整。
添加一些序列以将不同的值分配给 tb_input
。
然后添加一些检查 tb_output
携带预期值。
port map
只是告诉模拟器(或者合成器,如果你正在合成)哪些端口连接到外层的哪些信号。
所以input => tb_input
确实不是意味着数据从input
流向tb_input
。它说端口 input
必须连接到信号 tb_input
。数据方向来自 in
和 out
关键字。
看成是IC插座和连接的网线,就是外层的信号,插在插座上的IC和它的管脚,就是你的组件的端口。