C:/altera/15.0/work/ethernet_frame generator.vhd(153): (vcom-1339) 案例陈述选择仅涵盖 81 个案例中的 4 个

C:/altera/15.0/work/ethernet_frame generator.vhd(153): (vcom-1339) Case statement choices cover only 4 out of 81 cases

Modelsim 显示Case 语句选择仅涵盖 81 个案例中的 4 个 我的以太网帧生成代码我在 [=19= 中执行非常长的程序后出现此错误] 由许多 case 语句和 case 语句中的 case 语句组成,当然还有许多 WHEN statements.However 表示 When others => 只能在最后一个语句中使用避免此特定错误的代码但是 program.How 中使用了许多 when 语句来解决此问题?

When others => 可以用在每个 CASE 语句的最后一个语句中,而不仅仅是在代码的末尾。

正如 Jeff 所说,如果没有看到您的代码,就没什么好说的了。

但是,由于您涵盖了 9 ** 2 中的 2 ** 2 个案例,我可以大胆猜测您涵盖了 2 位的所有“0”和“1”案例std_logic_vector 并忽略所有元值。在这种情况下,您可以替换

case my_slv is 

case to_01(my_slv) is ...

并保证将元值解析为“0”或“1”,但这会掩盖各种错误。

为 case 语句中的任何元值编写显式测试要好得多。这将使您的模拟停止,直到您解决真正的问题。

case my_slv is 
when "00" => ...
...
when "11" => ...
when others => report "Unreachable!" severity FAILURE;
end case;