Ch2 업무

OJT 3. SOC integration

베린이 2023. 5. 30. 22:44
반응형

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

AHB 버스와 APB 버스가 bridge로 연결되어 있고 각각의 APB 버스에 여러 가지 peripheral들이 달려있는 구조입니다. 저는 APB0 부분을 맡았는데요, verilog 코딩 자체는 어렵지 않았어요. 왜냐하면 여러 모듈들을 인스턴스화해서 연결만 잘해주면 됐거든요.
 
다만, 힘들었던 부분은 여러 사람이 같이 일을 하다 보니까 코딩 룰이라고 할까요?? 컴파일에 영향을 주지는 않지만 내부적으로 정해진 규칙을 지켜야 했거든요. 그래야 협업하는데 편하고 보기도 좋습니다. 근데 저희 회사가 생긴 지 얼마 안 돼서 저희만의 룰이 아직 정해지지 않은 상황이었어요. 그래서 다 했는데 수석님이 이 방법이 더 좋을 것 같다고 하시면서 수정하시면 일일이 다 수정해야 하는 번거로움이;;;;;;
 
제가 처음에 testbench 작성할 때 코딩 방식과 룰이 정해진 뒤에 코딩 방식이 어떻게 바뀌었는지 보여드릴게요.
 

확실히 바뀐 다음이 보기 편하죠?? 그 이유가 align이라고, 정렬이 잘 되어 있기 때문인 것 같네요. 코딩 룰 중 또 다른 하나는 signal 이름 세팅인데, 위의 APB signal들의 이름을 정할 때 I2C와 APB0의 'pwrite' signal을 예시로 보여드리면
 
pwrite_i2c / pwrite_apb0 라고 세팅하고 둘을 assign을 통해 이어줘야 합니다.
 
assign  pwrite_i2c  =  pwrite_apb0;
 


근데 i2c_pwrite으로 할 거냐 pwrite_i2c로 할 거냐 왔다 갔다 하면 또 그때마다 수정수정수정수정수정수저웃적ㄹ줄ㅈ섲너엇ㅂㄹㅈ둘처 (단순히 연결만 했는데 스크립트 4000줄이 넘었습니다, 거의 5000줄임. 거기서 수정할 부분 일일이 다 찾아서 바꿔야댐)
 
또 한 가지 번거로운 점은 탭을 쓰지 못한다는 거예요. 사람마다 탭의 띄어쓰기 설정이 다른데(저는 띄어쓰기 2칸입니다.) 탭을 쓰면 다른 사람이 볼 때 align이 다 틀어진다고 못 쓰게 하시고 띄어쓰기 4번으로 통일하라고 하시더라고요. 그래서 수정할 때 '지우기 + space bar 4번 따다다닥' 반복했어요. 진짜 단순 노동 ㅠㅠ;;;;
 
주니어는 초반에 코딩 습관을 잘 들여야 할 것 같습니다.

 

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

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