지연 기반 타이밍 제어는 기호 #을 사용한다.
정규 지연 제어(regular delay control), 내부 할당 지연 제어(intra-assignment delay control), 제로 지연 제어(zero delay control) 세 가지의 형태가 있다.
- 정규 지연 제어
정규 지연 제어는 절차적 할당의 왼쪽에 0이 아닌 지연을 지정하는 방식이다.
문장을 만나는 시점을 기준으로 지연을 수행하고, 문장을 뒤이어 수행한다.
- 내부 할당 지연 제어
내부 할당 지연 제어는 할당 연산자의 오른쪽에 지연을 지정한다.
rvalue에 대한 값의 계산을 마친 후 지연을 수행한다.
즉 말 그대로 '할당'에 대해서만 지연을 수행하는 것이라고 할 수 있다.
- 제로 지연 제어
제로 지연 제어는 말 그대로 제로지연, #0이며, 경쟁상태를 없애기 위해 사용한다.
다른 모든 문장들이 실행된 후 마지막에 해당 문장을 수행하도록 하기 위한 방법이다.
//정규 지연 제어
#10 x = 1;
//내부 할당 지연 제어
y = #5 x + z;
//제로 지연 제어
initial x = 0;
initial #0 x = 1; //x = 0가 수행된 후 x = 1이 수행된다
'EE > Verilog' 카테고리의 다른 글
[Verilog] case, casex, casez문 (0) | 2023.01.17 |
---|---|
[Verilog] 사건 기반 타이밍 제어 (0) | 2023.01.17 |
[Verilog] 절차적 할당 - 블록킹과 논블록킹 (0) | 2023.01.17 |
[Verilog] initial과 always 구문 (0) | 2023.01.16 |
[Verilog] 연산자 정리 (0) | 2023.01.11 |