0

我正在使用断言 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语句中,作为一种解决方法。

4

0 回答 0