【发布时间】:2020-01-23 14:25:12
【问题描述】:
VHDL 2008 引入了一个很好的功能,称为“匹配 case 语句”。
我应该使用“案例”吗?关键字或“案例?”中间也可以有空格吗?
我不清楚。 Lattice LSE 允许两者。 Synplify 只接受第一个。
标准中的定义(第 10.9 节)是:
case_statement ::=
[ case_label : ]
case [ ? ] expression is
case_statement_alternative
{ case_statement_alternative }
end case [ ? ] [ case_label ] ;
【问题讨论】:
-
BNF 产品(IEEE Std 1076-2008 1.3.2 句法描述)包含用于描述句法的词法元素和非 VHDL 定界符。词法元素的规则见 15. 词法元素、15.3 词法元素、分隔符和定界符。没有要求在标识符(这里是保留字大小写,见 15.10)和分隔符(这里是字符'?')之间有分隔符。 “在每个设计单元的第一个之前,或在设计文件的最后一个词法元素之后,任何两个相邻的词法元素之间都允许有一个或多个分隔符。”
-
你的评论假装是回答。
-
请注意,据称 Synplify 在第一条评论中违反了 15.3 中引用的句子。如果 Synopsys Synplify 实际上不允许在保留字
case(15.10) 和分隔符?(15.3) 之间使用分隔符,那么对于保留字select和分隔符?也是如此选定的信号分配 (10.5.4) 或选定的变量分配 (10.6.4)。