현재 졸업프로젝트 목표

YumeIroVillain·2022년 7월 24일
0

졸프Project

목록 보기
3/9

Flash Controller 방면으로 진로를 가게 되어,
진로랑 좀 맞지 않을 수도 있겠다는 생각이 들긴 하다만
어찌되었든 시작한 프로젝트는 끝을 봐야 할 것이다.
다만, 조교 선배님의 말씀대로, "가속기" 라는 것은 연산을 빨리 하는 것이기에 원초적인 면이 있어서 뭔가 새로운 아이디어를 내기가 굉장히 제한적이라는 것을 뼈저리게 느꼈다.

너무 원초적이라 새로운 idea를 내기 힘들다는 것은 내 사정이고, 어쨌든 학사 졸업에 걸맞는 결과물은 교수님께 제시해야 졸업할 수 있을 것이다. 즉, 너무 쉬워도 안되고 그렇다고 내가 손도 못댈 정도로 너무 어려워도 안된다. 더욱이, 7월24일인 졸업까지 지금 시간이 넉넉치 않다.

서론은 이쯤 하고, 앞으로 어떻게 할지에 대한 PLAN을 기술한다.


가용자원

조교님께 받은 기안도박사의 HW-SW Cosim Tool
연구실로부터 빌릴 수 있는 FPGA

구현할 코드(작은점은 필요요소)

  • 정수덧셈기 - Kogge Stone Adder로
    • Black Cell
    • Gray Cell
  • 정수곱셈기 - Booth Multiplier로
    • Kogge Stone Adder
    • Shifter
  • fp16 덧셈기
    • 정수덧셈기(KoggeStone Adder)
  • fp16 곱셈기
    • 정수덧셈기(KoggeStone Adder)
    • 정수곱셈기(Booth Multiplier)
  • MAC
    • fp16 덧셈기
    • fp16 곱셈기
  • (추가목표)Tree MAC(기안도박사 코드에서 돌아가는거조차 불확실함)

계획

  1. 위의 구현할 코드를 fp16 곱셈기까지 Verilog로 구현, Verilator로 테스트, functionality 확인
  2. fp16 곱셈기, fp16 덧셈기로 MAC 구현
  3. 내가 구현한 MAC을 기안도박사 DPU 소스에 Ctrl V 한다.
  4. 돌아가면 -> FPGA에 실장해 LeNet까지 돌려본다.
  5. 안돌아가면 -> 막막하다. 그럼 FPU 관련 졸업논문이라도 써야한다.

목표

  1. 내가 만든 MAC 및 조금 덜 효율적인 MAC을 제시한다.

    • 비교군: Kogge-Stone Adder && Booth Multiplier 사용한 MAC_float
    • 대조군: Kogge-Stone Adder && Wallace Tree Multiplier 사용한 MAC_float 또는 내가 직접 개발한 MAC_float(떠올릴 수 있다면)
  2. 합성 후 FPGA에 실장

  3. 비교군과 대조군의 Critical Path Delay 가 어떻게 차이나는지를 Design Compiler 툴로 합성해서 보여주고 리포트 작성.(솔직히 감안잡힘)

  4. 비교군과 대조군의 Area 증감분 차이를 분석

  5. 기안도 박사 코드가 돈다면, 프로그래밍된 FPGA를 이용해 LeNet 까지 돌릴 수 있다. 이거면 보고서 뚝딱이다(행복회로 최대루트).

걱정: 앞 1단계에서 MAC을 내가 독창적으로 만든게 아니라면, 게다가 기안도박사 코드까지 안돌아 LeNet도 못돌렸으면 그저 "해봤다" 수준이라 너무 부실해보여서 여기에 내 아이디어를 넣어야 할 것 같은데, 사실 진짜 아무리 생각해도 아이디어가 안나온다. 그리고, MAC은 너무나 기초적인 소자라 새 아이디어를 내기도 힘들다....

Plan A - 기안도박사 코드가 잘 돌 때

  1. ready, valid, last 등의 여러 잡다한 control signal 의 눈치껏 한 코딩이 맞아떨어졌다면

  2. 그저 mac_float.v 를 내 새로운 mac_float.v 로 치환한 뒤, ETRI 교안의 Tutorial 을 그대로 따라가면 된다.
    (다만 문제가 되는건, 나는 실제 그 박사의 코드를 기반으로 실제 FPGA와 Co-simulation 해본 경험이 없다는 것이다. 남이 짠 코드라서 왜 안되는지 디버깅하는 것도 매우 힘들 것 같다)

  3. 기안도박사 코드를 통해 FPGA Cosim으로 LeNet 까지 돌려볼 수 있다.

Plan B - 기안도박사 코드기반이 아니라 내가 직접 FPGA에 실장할 때 - LeNet까지는 못하게 됨

  1. 남의 코드를 쓰니, 내가 굳이 control signal 에 목맬 필요가 없다.
  2. 합성하고 FPGA에 넣는다.
  3. vivado 상에서 layout? 같은 창을 보여줄텐데 그걸 보고 Critical Path Delay 를 계산하면 되나?

의문

  1. fp16까지 구현했다치자.
    1. FPGA에 실장하는건 기안도박사 코드 안쓰고 그냥 Vivado에서 직접 실장해도 되는데, 왜 굳이 기안도박사의 코드를 skeleton 으로 쓰는게 권장되지? LeNet-16 돌리기 위해선가?
  2. MAC까지 구현했다 치자.
    1. 어떻게 critical path delay, AREA 차이 등을 확인할 수 있나? Vivado 상에서 띄워주나?
    2. 띄워준다고 치자. 그 원인없이 결과만 띡 나올 것 같은데, 원인분석에 대한 근거를 내가 제시해야할텐데, 뇌피셜의 향연이 될것같은데 이 부분을 어떻게 하지?
profile
HW SW 둘다 공부하는 혼종의 넋두리 블로그 / SKKU SSE 17 / SWM 11th

0개의 댓글