작성
·
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. !== 비교는 상황에 맞게 사용하면 됩니다.
즐공하세요 :)