반응형
uvm_do와 uvm_do_with는 UVM에서 자주 사용하는 매크로로, 시퀀스에서 시퀀스 아이템을 생성하고 실행하는 데 사용됩니다. 이 매크로들은 시퀀스를 더 간결하고 명확하게 작성할 수 있도록 도와줍니다. 다음은 uvm_do와 uvm_do_with의 핵심 개념과 사용 방법입니다.
1. uvm_do
uvm_do는 시퀀스 아이템을 생성하고, 시퀀서에 전달하여 실행하는 기본 매크로입니다. 주로 시퀀스의 body 메서드 내에서 사용됩니다.
형식:
`uvm_do(item)
- item: 생성하고 실행할 시퀀스 아이템
예시:
task body();
my_sequence_item req;
`uvm_do(req); // 시퀀스 아이템 생성 및 실행
endtask
2. uvm_do_with
uvm_do_with는 시퀀스 아이템을 생성하고 실행하는 동시에, 특정 제약 조건을 추가하여 아이템의 필드를 조건에 맞게 랜덤화할 수 있습니다.
형식:
`uvm_do_with(item, {constraints})
- item: 생성할 시퀀스 아이템
- constraints: 시퀀스 아이템에 적용할 제약 조건
예시:
task body();
my_sequence_item req;
`uvm_do_with(req, {req.addr == 32'hA000_0000}); // 제약 조건 추가
endtask
위 예시에서 uvm_do_with는 req라는 시퀀스 아이템을 생성하고, addr 필드가 32'hA000_0000으로 설정되도록 제약을 추가한 뒤 실행합니다.
uvm_do vs uvm_do_with 차이점
- uvm_do: 기본적으로 시퀀스 아이템을 생성하고 실행하며, 추가적인 제약 조건이 없을 때 사용.
- uvm_do_with: 시퀀스 아이템을 생성하면서 특정 필드에 대해 제약 조건을 명시하고 싶을 때 사용.
이 두 매크로는 시퀀스를 간결하게 작성하고, 코드의 가독성을 높이기 위한 유용한 도구입니다.
반응형
'지식 공유 > UVM' 카테고리의 다른 글
[UVM 1.1d] 5-1. Register Model (Register Abstraction Layer) (0) | 2024.10.15 |
---|---|
[UVM 1.1d] 4-2. Reusable UVM Component (0) | 2024.10.10 |
[UVM 1.1d] 4-1. Reusable UVM Component (0) | 2024.09.29 |
[UVM 1.1d] 3-2. UVM Components (1) | 2024.09.26 |
[UVM 1.1d] 3-1. UVM Components (1) | 2024.09.25 |
[UVM 1.1d] 2. Transaction-Level Modeling (TLM) (0) | 2024.09.23 |
댓글