본문 바로가기
language/Verilog

[verilog] casex, casez 차이

by 파란하늘코더 2021. 4. 10.
반응형

보통 digital logic을 design 하다보면 if, case문을 사용할 때가 있습니다.

 

if문이나 case문의 경우 들어오는 data의 정보가 명확하게 RTL code로 표현이 되기 때문에

 

사용하는데 있어서는 그다지 문제가 되지 않습니다.

 

그러나 don't care, 'z' 같은 신호들을 처리해야 한다고 할 때는 어떻게 처리하는지 알아보도록 하겠습니다.

 

우선 먼저 casex, casez 같은 것으로 코드를 작성하면 합성이 되는가에 대한 질문이 있을 수 있는데

 

대답은 'yes'입니다. (저도 구글링하다가 알았습니다.)

 

1. casex

'X', 'Z'를 모두 don't care 처리

 

2'b1x = 2'b10, 2'b11, 2'b1x, 2'b1z

3'b1xz = 3'b100, 3'b101, 3'b110, 3'b111

 

2. casez

'Z'를 don't care 처리. 'X'는 unknown으로 처리

'Z'를 '?'로 변경가능

 

2'b1? = 2'b10, 2'b11, 2'b1X, 2'b1Z 

2'bX? = 2'bX0, 2'bX1, 2'bXX, 2'bXZ 

 

3. casex vs case

casex(a)

    2'b1x : b = 1;

    default : b = 0;

endcase

 

case(a)

    2'b1x : c = 1;

    default : c = 0;

endcase

 

이렇게 설계를 하고 아래와 같은 a가 아래와 같이 변하면 b, c는 다음과 같다

 

a = 00 , b = 0 , c = 0

a = 01 , b = 0 , c = 0

a = 11 , b = 1 , c = 0

a = 0x , b = 0 , c = 0

a = 1x , b = 1 , c = 1

a = xx , b = 1 , c = 0

a = x0 , b = 1 , c = 0

 

※ 출처 : www.youtube.com/watch?v=1WeP_wygvVU

'language > Verilog' 카테고리의 다른 글

uvm study  (8) 2021.04.11
[vcs] vcs, verdi, systemverilog tutorial 강의  (0) 2021.04.10
[vcs] 명령어 및 option 정리  (0) 2021.04.09
[vcs] $dumpvars option  (2) 2021.03.12
[systemverilog] random 함수들  (0) 2021.02.27

댓글