본문 바로가기
디지털 논리회로

디지털 논리회로 / Blocking과 non-blocking의 차이

by clean_h 2021. 5. 3.
728x90

Blocking

Blocking 무언가를 막다라는 뜻을 가지고 있다. Blocking assignment simulation의 흐름을 막으면서 일을 하고 non-blocking은 막지 않으면서 일을 하고 있다.

Blocking(=) 원패스이고 오른쪽 변수들이 업데이트 되는 순간에 왼쪽에 있는 변수들도 업데이트되는 것을 볼 수 있다. 예를 들어 a[3]=in;에서 in의 값이 바뀌는 순간에 a[3]1로 바뀌는 것을 알 수 있다. Blocking 문은 위에서부터 아래로 순서대로 실행되므로, 하나의 대입문의 실행이 완료되지 않으면 밑에 있는 대입문들은 처리되지 않는다. 대기상태를 가진다고 볼 수 있다. Execution flow within the procedure is blocked until the assignment is completed.

 

Non-Blocking

Non=blocking(<=) two pass를 사용 RHS 업데이트되는 값을 가지고 다음 업데이트를 하게 된다. Non-blocking문의 실행은 동시에 처리되므로 위, 아래 순서는 전혀 상관 없다. Excution flow within the procedure is not blocked.

플립플롭과 같은 저장회로를 구현할 때는 ‘<=’non-blocking을 사용.

AND, OR과 같은 조합회로를 구현할 때는 ‘=’ blocking을 사용.

728x90

댓글