为什么端口映射的方向是从设计到测试台而不是相反?

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。数据方向来自 inout 关键字。

看成是IC插座和连接的网线,就是外层的信号,插在插座上的IC和它的管脚,就是你的组件的端口。