如何正确使用VHDL中的assert?

问题描述 投票:0回答:1

我在VHDL中有一个代码段,这让我不确定是否正确:a和b是std_logic_vectors。 c1和c0是std_logic。这个写的正确吗?特别是“ c1 ='1'和c0 ='0'”这一部分让我很挣扎。

if unsigned(a) > unsigned(b) then
    assert(c1 = '1' and c0 = '0')
vhdl assert test-bench
1个回答
-1
投票

您不确定的部分是正确的。 c0c1'0''1'均为std_logic,因此以这种方式进行比较是正确的。 (在VHDL =中,是相等比较运算符。它不执行赋值,就像许多软件编程语言一样)。每个比较的结果都是一个布尔值(truefalse),因此可以与assert语句一起使用。

我认为真正错误的唯一部分是,您必须以if结尾end if。通常还建议每当您使用assert时,都将显示report错误消息并设置一个severity(例如notewarningerrorfailure,具体取决于错误的严重程度)是)。

因此:

if unsigned(a) > unsigned(b) then
    assert c1 = '1' and c0 = '0' report "<Error message>" severity warning;
end if;
© www.soinside.com 2019 - 2024. All rights reserved.