OJT 4

OJT 4. FPGA 합성

반도체 설계는 여러 단계를 통해 검증 검증 검증, 또 검증을 반복합니다. 프로그램을 만들거나 앱을 만들어서 출시한 뒤에 뭔가 오류를 발견하면 수정해서 업데이트를 하면 되지만 반도체는 한번 만들고 Fab out 하면 TSMC 같은 팹에서 정해진 수량만큼 생산하는 동안 수정이 안됩니다 ㅎㄷㄷ....... 업데이트가 없어요!! 그래서 시뮬레이션과 waveform 등으로 기능을 검증하고 FPGA로 실제 칩이 어떻게 작동하는지 확인합니다. FPGA는 따로 정리를 해야겠지만 간단히 말하면 수정이 가능한 반도체를 말합니다. 저는 FPGA로 7 segment 작동을 시켜보라는 미션을 받았어요. 0에서 9까지 1초에 1씩 올라가는 걸 반복하는 동작을 하는데, start를 누르면 시작하고 stop을 누르면 멈추고 rstn..

Ch2 업무 2023.05.31

OJT 3. SOC integration

OJT 2 Testbench 작성을 통해 verilog 코딩방법과 여러 IP들에 대해 공부했습니다. 다음으로는 저희 회사 프로젝트 중 하나에 참여해서 간단한 업무를 했는데요, 바로 integration입니다. ARM같이 자체 IP를 만드는 회사도 있지만 저희 회사는 고객사의 요청을 받아 SOC platform을 설계하는데요, 설계하려는 칩의 spec에 맞는 IP를 사서 칩으로 만드는 작업을 합니다. 반도체 설계 flow는 나중에 따로 정리하겠습니다. 그래서 제가 작업한 부분을 살짝 보여드리면 굉장히 간단한데요 AHB 버스와 APB 버스가 bridge로 연결되어 있고 각각의 APB 버스에 여러 가지 peripheral들이 달려있는 구조입니다. 저는 APB0 부분을 맡았는데요, verilog 코딩 자체는 어..

Ch2 업무 2023.05.30

OJT 2. testbench 작성

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 그리..

Ch2 업무 2023.05.17

OJT 1. Study ~ 2. testbench 작성 시작

2월 초에 입사하고 한 달 동안은 공부만 했어요. 반도체 설계 flow, CPU 작동, Bus Architecture, Memory, Peripheral을 주제로 공부했고 3월 초부터 실제적으로 Verilog를 쓰기 시작했어요. 공부했던 거는 나중에 Ch1에 정리하려고 합니다. 처음 받은 숙제는 I2C 컨트롤러의 testbench를 작성하고 시뮬레이션을 돌려보는 거였는데 시작부터 문제가 생겼죠. 아니, 나는 verilog는커녕 C언어도 모르고 리눅스도 안 써봤는데 갑자기 testbench를 짜서 시뮬레이션을 돌려보라고?? 우선 리눅스를 쓰는 이유는, verilog로 RTL 설계를 하고 Synopsys나 Cadence 사의 EDA 툴을 통해 합성을 해야 돼요. 근데 그 툴들이 다 리눅스 환경 기반이기 때문..

Ch2 업무 2023.05.16