인프런 커뮤니티 질문&답변

hmace100님의 프로필 이미지
hmace100

작성한 질문수

설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)

[HDL 7장] Combinational Logic 이해하기 (4칙연산 실습. 여러분이 설계하는 디지털로직의 99.99% 는 Combinational + Sequential Logic 입니다.)

질문이용~

작성

·

205

1

testbench에서 if의 조건문에서 !== 의 연산자를 사용해주셨는데 !== 보통 잘 사용하지 않는 걸로 권장하는 걸로 알고 있습니다! 왜 굳이 != 말고 !==을 사용하셨는지 궁금합니다!

답변 1

0

설계독학맛비님의 프로필 이미지
설계독학맛비
지식공유자

안녕하세요 :)

해당 문법의 차이를 알고계신가요?!! 

정리해서 작성해주시면 공부에 도움이 되실꺼에요.

ps

누가 잘 안쓴다고 권장했는지...?

(상황에 따라 사용해야죠)

하지만 지금 예제에서는 != 이걸로 하셔도 됩니다 :)

실무에서 써야하는 순간이 있어요.

정리해주시면 적어드릴께요.

 

설계독학맛비님의 프로필 이미지
설계독학맛비
지식공유자

시간이 있어서 미리 작성드립니다.

IEEE Std (1800-2009), section 11.4.5 "Equality operators"

For the logical equality and logical inequality operators (== and !=), if, due to unknown or high-impedance bits in the operands, the relation is ambiguous, then the result shall be a 1-bit unknown value (x).



!= 는 logical 0,1 만을 비교하게됩니다.

HW 는 0,1 뿐만아니라, z, x 의 state 도 존재하죠.

!== 연산은 나머지 z,x 의 상태또한 비교하게 됩니다.

 

저는 필요에 따라서 써야한다 생각하구요. 실무에서 !== 비교로 버그를 Fix 했던 적이 있었습니다. 

"x" 는 초기화를 해주지 않았을때, 발생하는 case 이구요.

x 는 0,1 상관없는 값이죠. 즉 x type 이 포함된 연산을 하게 되면, 잘못된 결과가 출력되게 됩니다. ex) 1+1 = 2,  x+1 = ? 

대신 !== 는 4가지 Type 을 check 함으로 상대적으로 != 대비 simulation 속도는 느려지는 단점이 존재하겠네요. 아니면 x 를 포함에도 설계자가 보장한다, 이러면 != 이거 쓰셔도 되구요.

 

결론

1. 지금 예제코드에서는 != 이걸로 하셔도 돼요. (x 가 들어올일이 없으니..)

2. !== 비교는 상황에 맞게 사용하면 됩니다.


즐공하세요 :)

hmace100님의 프로필 이미지
hmace100

작성한 질문수

질문하기