次のクロック生成ステートメントがModelSim/QuestaSimで100%のコードカバレッジでないのはなぜですか?私は、この他にブランチ追加する場合この同時実行文が100%未満のコードカバレッジを持つのはなぜですか?
library ieee;
use ieee.std_logic_1164.all;
entity coverage1_tb is
end entity;
architecture tb of coverage1_tb is
signal clk : std_logic := '1';
signal finished : boolean := false;
begin -- architecture tb
clk <= not clk after 10 ns when not finished;
--clk <= not clk after 10 ns when not finished else unaffected;
process
begin
wait until rising_edge(clk);
wait until rising_edge(clk);
wait until rising_edge(clk);
finished <= true;
wait;
end process;
end architecture;
:else unaffected
を、その後、私は100%のカバレッジを取得
clk <= not clk after 5 ns when not finished;
これは完全な例です。
同時シグナル割り当ては、順次シグナル割り当て(LRM 11.6)のプロセスに変換されます。影響を受けていないブランチはヌルステートメントに変換されます(LRM 11.6、注2; LRM 10.5.2.1)。
なぜModelSim/QuestaSimが波形を含まない明示的なelseブランチを書く必要があるのか分かりません。
おかげブライアン、私は簡単に私たちの[のPoCにカバレッジの統計情報を統合できるように見えます(Debianのテストを?) -Library](https://github.com/VLSI-EDA/PoC)。 – Paebbels
私が覚えている限り、 'apt-get install lcov' - genhtmlはパッケージの一部です。しかし、他のQ/Aの警告を見ると、どちらのシミュレータもコードカバレッジで完全に滑らかではないように見えます。 –