반응형
목차
Mailbox?
- Similar to an unlimited FIFO
- Semaphore는 key를 이용해 Data Access를 제어하지만, Mailbox는 Data를 가지고 있다가 전달
Name | Description |
function new (int bound); | Mailbox 생성, bound (> 0)는 mailbox queue의 크기, bound = 0은 무제한의 mailbox |
function int num(); | Mailbox에 있는 message 수 반환 |
task put (singular message); | Mailbox에 message를 put, Mailbox의 공간이 없으면 get() 이전까지 차단 |
task get (ref singular message); |
Mailbox에서 message 검색, 가져올 메시지가 없으면 put() 이전까지 대기 |
task peek (ref singular message); |
Mailbox queue에서 message를 제거하지 않고 하나의 message 복사 |
function int try_put (singular message); |
Mailbox에 message를 put(차단되지 않음), Mailbox가 가득 차 있는 경우 0 반환 |
function int try_get (ref singular message); |
Mailbox에서 message 검색(차단되지 않음), Mailbox가 비어있는 경우 0 반환 |
function int try_peek (ref singular message); |
Mailbox queue에서 message를 제거하지 않고 하나의 message 복사, Mailbox가 비어있는 경우 0 반환 |
Example1
이해를 돕기 위한 단일 메시지만 보관 가능한 가장 작은 mailbox입니다.
단일 mailbox만 사용하는 경우 예시 code에서 항상 producer가 consumer보다 한단계 앞섭니다.
동기화하여 단계당 동시에 실행하고 싶다면, event를 사용하거나, peek() 이 후 get()를 사용하여 맞추거나, 두개의 mailbox를 사용하여 하나는 완료메시지를 전달하는 용도로 code를 작성해야 합니다.
Result1
Example2
Result2
728x90
반응형
'Language > Verilog & SV' 카테고리의 다른 글
[Verilog & SV] 시프트 연산자(Shift Operators) (0) | 2025.04.09 |
---|---|
[Verilog & SV] 논리 연산자(Logical Operators) (0) | 2025.04.09 |
[Verilog & SV] Bitwise, 감소 연산자(Reduction Operators) (0) | 2025.04.09 |
[Verilog & SV] 산술연산자(Arithmetic Operators) (0) | 2025.04.09 |
[Verilog & SV] 관계 연산자(Relational Operators) (0) | 2025.04.09 |