재사용 가능한 검사 태스크
Coddy Verilog 여정의 RTL 설계 및 검증 섹션에 포함된 레슨. 38개 중 27번째.
Verilog task는 절차적 작업을 그룹화하며 output 또는 inout 인수를 통해 결과를 반환할 수 있습니다. 테스트벤치 task는 중복된 검사를 줄여 줍니다. 조합형 function과 달리 task에는 적절한 경우 타이밍 제어를 포함할 수 있지만, 이러한 검사 task는 제로 타임 비교만 수행합니다. 서로 동시에 실행되는 호출에서 독립적인 로컬 저장 공간이 필요하다면 automatic task를 사용하세요. 여기서 제공된 호출은 순차적으로 실행됩니다.
관련 발췌문입니다. 주변 선언과 연결은 과제에서 제공됩니다.
task check_value;
input [7:0] actual,expected;
output ok;
begin ok = (actual === expected); end
endtask호출자는 명시적인 출력 인수를 통해 검사 결과를 받습니다.
실패를 수집하기 전에 task 인수 방향을 정의하고 호출마다 결과 변수를 재설정합니다.
챌린지
중급actual과 expected가 4상 등가에서 일치하면 ok가 1이 되고, 그렇지 않으면 0이 되도록 check_value를 구현하세요. 이 모듈에는 잠긴 테스트벤치에서 호출하는 시뮬레이션 전용 task가 포함되어 있습니다. 출력 열: ok.
design.v를 완성하고 모듈 이름과 포트를 유지하세요. 잠긴 testbench.v는 입력 변경을 제공하고 안정화된 후 출력을 표시합니다. +CASE=1과 같은 시뮬레이터 인수를 사용하여 시나리오를 선택하며, 표준 입력은 필요하지 않습니다. 잠긴 테스트벤치의 출력 및 시나리오 제어는 그대로 두고, task 본문만 구현하세요. 예상 출력은 각 관측값에 대해 10진수 값이 한 행에 하나씩 표시되며, 값은 공백 하나로 구분되고 개행 문자로 끝납니다.
직접 해보기
module dut;
task check_value;
input [7:0] actual,expected;
output ok;
begin
// 체커 태스크를 완성하세요.
ok=0;
end
endtask
endmodule이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
RTL 설계 및 검증의 모든 레슨
직접 연습해 보세요: 온라인 Verilog 컴파일러