
UVM 세상(소프트웨어)과 칩(하드웨어)이 만나는 최상위 지점입니다.
testbench.sv:
시뮬레이션을 시작하는 가장 바깥쪽 껍데기입니다. 클럭을 만들고, cfs_apb_if를 인스턴스화해서 칩과 연결합니다.
cfs_apb_if.sv:
앞서 우리가 SVA(검증 지뢰)를 심어두었던 바로 그 물리적 구리선(Interface)입니다.
cfs_algn_test_base.sv (기본 지휘관)
└── cfs_algn_test_reg_access.sv (실제 작전 지휘관: 어떤 대본을 실행할지 결정)
└── cfs_algn_env.sv (전장/환경: 여러 에이전트를 모아두는 곳)
└── cfs_apb_agent.sv (APB 전담반 소대장)
├── cfs_apb_agent_config.sv (에이전트 공통 리모컨/설정)
├── cfs_apb_sequencer.sv (조감독: 대본을 받아 일꾼에게 전달)
├── cfs_apb_driver.sv (일꾼: 핀을 흔듦)
├── cfs_apb_monitor.sv (CCTV: 핀을 훔쳐봄)
└── cfs_apb_coverage.sv (서기: 모니터 기록을 채점표에 정리)
위의 조직도 안에서 사람들이 이리저리 주고받는 "물건(Data)"들입니다.
택배 상자 (Item): 칩에 쑤셔 넣을 데이터 덩어리들입니다.
대본 (Sequence): 상자들을 어떤 순서로 보낼지 적어둔 시나리오입니다.
컴파일러가 이 파일들을 순서대로 잘 읽을 수 있도록, 연관된 파일들을 하나의 폴더처럼 묶어주는 패키지 파일들입니다.
cfs_apb_types.sv:
READ, WRITE, OKAY 같은 공통 단어(Enum)나 설정값들을 모아둔 사전입니다.
cfs_apb_reset_handler.sv:
방금 마지막에 배운 "리셋이 터지면 멈춰라!"를 지시하기 위해 컴포넌트들에게 부여하는 '자격증(Interface Class)' 파일입니다.