$random : 32bit signed random value // % value (value 미만의 값 출력)
$urandom : 32bit unsigned random value // % value (value 미만의 값 출력)
$urandom_range(min_value, max_value)
ex)
reg [31:0] random
always @ (posedge clk or negedge rstb)
if(!rstb)
random <= 0;
else
random <= $random / $urandom / $urandom_range
end
Guideline
- Sequential logic를 모델링할 때 Nonblocking 할당을 사용
- latch를 모델링할 때 Nonblocking 할당을 사용
- Combinational logic를 모델링할 때 항상 Blocking 할당을 사용
- 동일한 always 블록 내에서 Sequential 및 Combinational logic를 모두 모델링할 때 Nonblocking 할당을 사용
- 동일한 always 블록에서 Blocking 및 Nonblocking 할당을 혼합하지 마십시오.
- 두 개 이상의 always 블록에서 동일한 변수에 할당하지 마십시오.
- Nonblocking 할당을 사용하여 할당된 값을 표시하려면 $strobe를 사용하십시오.
- #0 지연을 사용하여 할당하지 마십시오. (합성불가능 (non-synthesizable))
'verilog HDL' 카테고리의 다른 글
[Verilog HDL] 실습2 (0) | 2022.06.03 |
---|---|
[Verilog HDL] (0) | 2022.06.02 |
[Verilog] F/F or Counter (0) | 2022.03.21 |
[Verilog] Task / Function (0) | 2022.03.21 |
[Verilog] Behavior modeling 설계 (0) | 2022.03.19 |