0

ghdl で独自のパッケージを使用しようとしています。誰かが構造と編集を手伝ってくれませんか。現時点では、私のコードは次のようになります。

./my_package/my_package.vhd 内

library IEEE;
use IEEE.std_logic_1164.all;

package my_package is
  constant my_constant : std_logic_vector(3 downto 0) := "1111";
end my_package;

これを my_package で次のようにコンパイルしています。

myname@myrechner my_package$ ghdl -a --work=my_package my_package.vhd

次に ./uses_my_package/uses_my_package.vhd に

library IEEE;
use IEEE.std_logic_1164.all;

entity uses_my_package is
  port(
    vector_in : in std_logic_vector(3 downto 0);
    vector_out : out std_logic_vector(3 downto 0));
end uses_my_package;

architecture impl of uses_my_package is
begin
  vector_out <= vector_in;
end impl;

および ./uses_my_package/testbench.vhd 内:

library IEEE;
use IEEE.std_logic_1164.all;
library work;
use work.my_package.all;

entity testbench is
end testbench;

architecture tb of testbench is
  component uses_my_package is
    port (
      vector_in : in std_logic_vector(3 downto 0);
      vector_out : out std_logic_vector(3 downto 0));
  end component;

  signal vector_in_signal : std_logic_vector(3 downto 0);
  signal vector_out_signal : std_logic_vector(3 downto 0);
  constant clk_period : time := 1 ms;

begin
  dut : uses_my_package
    port map (vector_in_signal, vector_out_signal);

  process
  begin
    vector_in_signal <= "0000";
    wait for clk_period;
    assert vector_out_signal = my_constant report "fail 0000" severity error;
    vector_in_signal <= "1111";
    wait for clk_period;
    assert vector_out_signal = my_constant report "fail 1111" severity error;
    wait;
  end process;

end tb;

このプログラムをコンパイルする方法や、ghdl のパッケージとライブラリに関するチュートリアルを教えてもらえますか? 私の google-foo は、現時点では静かに弱いようです。ありがとうございました!

4

1 に答える 1