【问题标题】:Wildcard operator in system verilog and its synthesizability系统verilog中的通配符及其可综合性
【发布时间】:2020-10-02 00:23:10
【问题描述】:

系统verilog中的通配符运算符是什么?我已经在网上搜索过,但有些模棱两可。

它们也可以合成吗?

下面的答案?

4'b1010 ==? 4'b10x0 
4'b10x0 ==? 4'b1010

【问题讨论】:

  • 问题第一部分的答案可以在任何 verilog 教程或文档中找到。关于可综合性的第二部分很有趣,我投票赞成重新打开问题。

标签: verilog system-verilog


【解决方案1】:

您似乎没有搜索IEEE 1800-2017 SystemVerilog LRM11.4.6 通配符相等运算符 节定义了此运算符。搜索会给出许多其他示例,例如 here

只要 X 作为文字或常量表达式出现在 RHS 上,通配符相等运算符就可以被综合。 RHS 上的 X 被视为无关匹配。 LHS 上的 X 不匹配任何内容,仅用于模拟。 inside 运算符和 case inside 条件语句都使用这种非对称通配符匹配来实现可综合的不关心。

【讨论】:

    【解决方案2】:

    来自“IEEE Standard for Verilog Register Transfer Level Synthesis”IEEE Std 1364.1-2002 的第 5.5 节(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.
    

    由于通配符运算符是 casex 表达式的明显扩展,因此人们可以合理地期望它是可综合的。我不知道定义可综合子集的 1800 IEEE 标准;或者此信息是否包含在 IEEE-1800 标准本身中。

    已故的 Stuart Sutherland 在他的论文中提出了 IEEE-1800 的可综合构造列表,其中包括通配符等式:https://sutherland-hdl.com/papers/2006-DVCon_SystemVerilog_synthesis_subset_paper.pdf

    出于实用性的考虑,检查此类问题的最终方法是使用此构造编写一个小示例,并将其提供给您实际计划使用的综合工具,看看您是否收到警告、错误或工作代码!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多