我正在使用断言 VHDL 语句来检查 VHDL 架构中的全局常量和通用参数,如果它们遵守 VHDL 设计的支持参数集。
日志中报告了始终true
断言语句。我认为这是一个错误。
例子:assert TRUE report "This should not be visible in the LSE log." severity NOTE;
这是完整的测试示例:
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
entity assert_test is
end entity;
architecture rtl of assert_test is
type T_VENDOR is (VENDOR_ALTERA, VENDOR_LATTICE, VENDOR_XILINX);
constant VENDOR : T_VENDOR := VENDOR_LATTICE;
begin -- line 39
assert TRUE report "This should not be visible in the LSE log." severity NOTE;
genInfer : if ((VENDOR = VENDOR_LATTICE) or (VENDOR = VENDOR_XILINX)) generate
assert FALSE report "Inside genInfer" severity NOTE;
end generate;
genAltera : if (VENDOR = VENDOR_ALTERA) generate
assert FALSE report "Inside genAltera" severity NOTE;
end generate;
-- line 48
assert ((VENDOR = VENDOR_ALTERA) or (VENDOR = VENDOR_LATTICE) or (VENDOR = VENDOR_XILINX))
report "Vendor '" & T_VENDOR'image(VENDOR) & "' not yet supported."
severity failure;
-- line 52
-- workaround
genAssert : if (not ((VENDOR = VENDOR_ALTERA) or (VENDOR = VENDOR_LATTICE) or (VENDOR = VENDOR_XILINX))) generate
assert FALSE report "Vendor '" & T_VENDOR'image(VENDOR) & "' not yet supported." severity failure;
end generate;
end architecture;
这是我的 LSE 日志:
信息 - 综合:d:/.../assert_test.vhdl(40):找到用户声明的 VHDL 断言类型注意:“这在 LSE 日志中不应该是可见的。”。VHDL-1700
INFO - 综合:d:/.../assert_test.vhdl(43):找到用户声明的 VHDL 断言类型注:“内部 genInfer”。VHDL-1700
INFO - 综合:d:/.../assert_test.vhdl(51):发现用户声明的 VHDL 断言类型为失败:“尚未支持供应商'vendor_lattice'。”。VHDL-1700 顶级模块名称 (VHDL):assert_test
- 任何人都可以确认这种行为吗?
- 这是一个错误,不是吗?
解决方法:
将assert
语句放入generate
语句中,作为一种解决方法。