Ch2 업무

OJT 2. testbench 작성

베린이 2023. 5. 17. 09:28
반응형

1. Checklist 작성

어떤 모듈에 대한 test를 하려면 먼저 체크리스트를 작성해야 합니다. 
 

I2C standard에도 나와있는데 Standard-mode, Fast-mode, Fast-mode Plus를 지원한다고 하네요. 모듈에 timing 세팅하는 레지스터가 있는데요, 내가 설정했던 대로 제대로 작동하는지 확인해야겠죠?
 
마스터모드, 슬레이브모드 설정가능하고 7-bit / 10-bit address mode 확인해야 합니다. (DMA는 아직 몰라서 넘김,,,,)
 
그리고 모듈의 레지스터들의 기본값이 제대로 읽히는지, Writeable 한 경우 입력한 대로 값이 설정되는지 확인해야 합니다.
 
마지막으로 제 숙제였던 Data Loopback test로 마무리했어요.
 

2. Block diagram 그리기

어떤 테스트를 할지 정해졌으면 Block diagram을 그려야 합니다. 저도 처음에는 왜 그려야 하는지 몰랐는데요, 확실히 그림을 그리고 코딩을 시작하니까 실수가 줄더라고요. 나중에 말씀드릴 integration에서는 이 Block diagram을 잘 그리는 게 진짜진짜진짜진짜진짜 중요합니다.
 

3. verilog 코딩 시작

그럼 본격적으로 verilog 코딩을 해야겠죠?? 지금도 잘 모르지만 당시에는 문법에 대해서 아무것도 몰라서 chatGPT 도움을 많이 받았어요. 얘가 코딩 전체를 해줄 수는 없는데 어떤 기능에 대한 기초적인 스크립트는 짜주더라고요. verilog 문법에 대해서는 앞으로 계속 공부하면서 따로 정리할 예정입니다.

 

참고로 verilog 코딩은 리눅스 환경에서 진행합니다. 그 이유는 RTL design을 하고 반도체 설계도로 만들기 위해서는 Synthesis 과정을 거쳐야 하는데요, 이를 위해 Synopsys나 Cadence 사의 tool을 사용하는데 이 tool들이 리눅스 환경에서 돌아가기 때문입니다. 그래서 오피스에 도착하면 컴퓨터 켜고 VNC Viewer라는 원격 프로그램으로 회사 서버컴퓨터에 접속해서 작업합니다. 리눅스는 CentOS를 쓰는데 윈도우 쓸 일은 거의 없다고 생각하시면 돼요 ㅎㅎ

 

4. Simulation & Waveform 확인

Testbench의 목적은 RTL design 된 모듈의 기능 검증입니다. 그래서 시뮬레이션과 waveform을 확인해야 합니다.

앞에서 설명한 대로 checklist 목록을 활용하면 됩니당. 이를 통해 모듈이 제대로 작동하는지 확인할 수 있습니다.

 

처음 I2C 모듈을 테스트할 때는 2주의 시간이 걸렸는데 그 후로는 점점 빨라져서 UART 1주, GPIO / PIT 합쳐서 1주 만에 test를 끝낼 수 있었네요 ㅠㅠ

 

'Ch2 업무' 카테고리의 다른 글

Data sheet 작성  (0) 2023.08.10
Time table 추천, 엑셀 간트(XLGantt)  (0) 2023.05.31
OJT 4. FPGA 합성  (0) 2023.05.31
OJT 3. SOC integration  (0) 2023.05.30
OJT 1. Study ~ 2. testbench 작성 시작  (1) 2023.05.16