그동안 RTL 을 설계해오면서 Case 문을 자주 사용했다.
Case 문을 쓸때 항상 default 구문을 사용했기 때문에 Case 문을 사용하면서 로직에러가 발생할 일이 없었다.
그래서 Full CASE와 Parallel CASE 가 뭔지 알지 못햇고, 실제 누군가 나에게 이걸 물었을 때 당연히 대답을 할 수 없었다.
아주 부끄러웠다. -_-;
여기저기서 언듯 본 기억이 있어서 감은 있었지만 정확하지 않기에 모른다고 할 수 밖에 없었고..
이번 기회에 정확하게 알 수 있었다. -_-
A "full" case statement is a case statement in which all possible case-expression binary patterns말 그대로 Full CASE 는 Case 의 States 모든 경우를 다 커버할 수 있도록 설계된 CASE 구문을 의미한다.
can be matched to a case item or to a case default.
내가 사용하고 있던 default 를 쓰는 구문은 100% Full CASE로 합성이 되는경우이다. default 구문이 없다면 예외 상황이 발생하고 이는 Full CASE로 합성되지 않는다. 경우에 따라서는 Latch 가 발생한다.
Parallel CASE 구문은 States 가 1:1로 매칭이 되도록 설계된 CASE구문을 의미한다.
A "parallel" case statement is a case statement in which it is only possible to match a case
expression to one and only one case item
이 부분은 casex 나 casez 구문을 사용하는 경우 발생할 수 있다. 의도적으로 Parallel CASE 구문을 만들어 내는 경우가 있을 수 있는지는 모르겠지만 casex나 casez 를 잘 사용하지 않아서 이부분은 필요한 경우에 자세하게 생각해 봐야 할 것 같다.
내가 알고 있다고 생각했던것들에 대한 정확한 개념을 알고 있는것이 중요하다. 사실 내용을 보면 알고 있었던 것들이고 내가 지켜나가고 있던 룰이 였음에도 그 개념을 명확하게 알고 있지 못했다.
'설계' 카테고리의 다른 글
| 리눅스에서 ISE 9.2i 를 실행하기 위한 환경설정 (0) | 2009/09/23 |
|---|---|
| false path 와 multi-cycle path (4) | 2009/09/21 |
| Full CASE 와 Parallel CASE 구문의 비교 (0) | 2009/08/25 |
| 드디어 프로젝트 시작 (1) | 2009/04/27 |
| IEEE 802.11 VHT (0) | 2009/03/24 |
| JOB의 계층구조? (0) | 2009/03/13 |


