如何解决系统Verilog中的通配符运算符及其综合性
系统verilog中的通配符运算符是什么?我已经在网上搜索过,但存在一些歧义。
它们也可以合成吗?
下面的答案?
4'b1010 ==? 4'b10x0
4'b10x0 ==? 4'b1010
解决方法
您似乎没有搜索IEEE 1800-2017 SystemVerilog LRM。 11.4.6通配符相等运算符部分定义了此运算符。搜索会给出许多其他示例,例如here。
通配符相等运算符旨在可合成,只要X在RHS上以文字或常量表达式形式出现即可。 RHS上的X被视为无关匹配。 LHS上的X不匹配任何内容,仅用于仿真。 inside
运算符和case inside
条件语句都使用此非对称通配符匹配来实现可综合的无关紧要。
从“ IEEE标准Verilog寄存器传输级别综合标准”的第5.5节开始,IEEE Std 1364.1-2002(1364是IEEE-1800扩展的基本规范,而1361.1定义了1364的可综合子集):
The value x may be used in case item expressions (may be mixed
with other expressions,such as 4'b01x0) in a casex statement to
imply a don't care value for synthesis.
由于Wildcard运算符是casex表达式的明显扩展,因此可以合理地预期它是可合成的。我不知道定义可合成子集的1800 IEEE标准。或者该信息是否包含在IEEE-1800标准本身中。
已故的Stuart Sutherland在他的论文https://sutherland-hdl.com/papers/2006-DVCon_SystemVerilog_synthesis_subset_paper.pdf
中提出了IEEE-1800的可综合构造列表,其中包括通配符平等。从实用性的角度来看,检查该问题的明确方法是使用此结构编写一个小示例,然后将其提供给您实际打算使用的综合工具,以查看是否收到警告,错误或工作代码!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。