0%

Full & Parallel Case

1 case

1
2
3
4
5
6
case/x/z (expression)	// synopsys full_case, parallel_case
item1: item1_statement;
item2: item2_statement;
...
default: default_statement;
endcase
  • case header
    • casez
      • z ? 视作不关心
      • Guideline:谨慎使用
      • Coding Style:用 ? 而非 z 匹配
    • casex
      • z ? x 视作不关心
      • Guideline:不要使用
  • case expression
    • 可以是常量,或求值为常量的表达式
  • case item
    • 可以是表达式
    • 具有隐含的 break

2 Full Case

  • “full”指 case expression 中所有可能的二进制 pattern 都能与 item/default 匹配。

  • synopsys case report

    • 完整

      image-20230730120712405
    • 不完整

      image-20230730120728115
    • 用户指定了 full_case

      image-20230730120751547
  • 对于 HDL 的“full”

    • case expression 中所有可能的二进制(0 1)、非二进制(z x)和混合 pattern 都能与 item/default 匹配。
  • 对于综合的“full”

    • case expression 中所有可能的二进制 pattern 都能与 item/default 匹配。
  • 仿真时 sel == 2'b11y = 1'bx ,而综合将 sel == 2'b11 情况视作不关心,从而导致不匹配。可将该情况的输出 y 赋值为常数或与其他 item 相同。

image-20230730121955371