私は、テストベンチ階層で信号を強制的に強制的に強制したいと思っています。ここで私がテストベンチでこれをやってきた方法を示す簡単な例があります。これはdouble_inverterインスタンスではModelSim 10.4bすなわち信号bで動作VHDL-2008は外部名を継続的に強制します
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity double_inverter is
port(
a : in std_logic;
z : out std_logic
);
end double_inverter;
architecture x of double_inverter is
signal b : std_logic;
begin
b <= not a;
z <= not b;
end architecture x;
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity inverter_tb is
end inverter_tb;
architecture y of inverter_tb is
signal z : std_logic;
signal clk : std_logic := '0';
begin
clk <= not clk after 5 ns;
dut : entity work.double_inverter
port map(
a => '0',
z => z
);
continuous_stim : process(clk)
begin
<< signal dut.b : std_logic >> <= force clk;
end process;
end architecture y;
は、CLKによって設定されていない信号が、外部名信号を制御するためのより良い方法があるでしょうか?
ありがとうございました。あなたが使用できるいくつかの状況では
* ...より良い方法がありますか?*どのように改善されましたか? VHDLドライバの強制および外部名は、VHPI/VPI/PLI/DLIに応じてコンソールコマンドまたはスクリプトを実行することによって、シミュレータで使用されるメカニズムを明らかにします。理論的には、VHPなどを使用した「他の言語ソリューション」の成長する面でシミュレータプラットフォームスクリプトではなく、テストベンチに応じて検証構造体の移植性を向上させます。VHDLテストベンチプログラムを書くか、他の検証ソリューションを使用しますか?単純な例では選択肢が動かないかもしれないが、あなたは意見を求めている。 – user1155120
VHDL-2008でこれを行うより良い方法はありますか?時には、私はテストベンチ階層の信号を、この例の "clk"のような別の信号に強制することができるようにしたいという状況があります。 VHDL-2008では、外部の名前を使用して階層構造の詳細を確認することができます。テストベンチでこれらの外部名を他の信号で駆動する方法を知りたかったのですが、LRMとWeb上の唯一の例は、明示的な信号ではなく、外部名が '1'または '0'によって駆動されることを示していました。私はちょうど何かを試して、それは動作しますが、それを行うのは良い、または許容可能な方法ですか?ありがとう。 –
式としてのプライマリ(ここでは名前付きオブジェクト)は、代入の値を提供できます。例はすべてを網羅しているわけではありません。シグナルについては、IEEE Std 1076-2008 10.5.2.2単純な代入文の実行、9.式、9.1一般(第1項および第3項のEBNF)を参照してください。 – user1155120