先说结论:
① //synopsys full_case parallel_case在工作中非常不可控!在标准代码规范中,只能被应用于One-hot FSM的case语句。
② 如果你想将该语句应用于其他的case语句,你需要非常清楚的知道综合器会将你的代码综合成什么。在通常情况下,将case语句default描述完整,不会需要用到这种指令语句。
③ 尽量不在可综合的代码中使用casex、casez语句。
1、casex和casez
casez是指对item中的高组态不关心,即忽略含有高阻态位"?“的比较。
casex指对不确定态和高组态不关心。即忽略含有高阻态位”?"和不确定态位"x"的比较。例:
casez(sel)
2'b00:y=2'd0;
2'b01:y=2'd1;
2'b1?:y=2'd2;
default:y=2'd0;
endcase
当sel=2’b10、2’b11、2’b1x、2’b1?时,全部执行y=2’d2;
当sel=2’b0?时,00,01均匹配,此时按顺序执行y=2’d0。
使用规范: 尽量不在可综合的代码中使用casex、casez语句。
2、 parallel_case
该指令语句可以控制综合器,在综合时会生成什么样的硬件电路。
使用parallel_case,可以使case语句的item statement检查时没有优先级。
但是在规范情况下使用if-else语句对具有优先