2026년 10월 12일 월요일

[내칩강의2026/4주] 학습 예고 및 과제

[내칩강의2026/4주] 학습 예고 및 과제

지난 10월8일(목요일)에 줌 회의로 비대면 수업을 진행 했습니다[관련링크]. 대면 및 비대면으로 학습 중인 학생들이 모두 참석하였습니다. 늦은 시간까지 첫 온-라인 수업이라 다소 어색하긴 했는데 참석자 모두 유익한 시간이었길 바랍니다. 앞으로 매달 한두번 온-라인 수업을 진행할 예정 입니다.

지난 수업 시간에 예고한 바 있지만 다음 주 수업에 검증 보드를 배포할 예정 입니다. FPGA와 Raspberry PI Pico 보드를 결합한 보드 입니다. 칩을 제작하기 전 에뮬레이션 검증을 위한 장비 입니다. 향후 칩이 제작되어 나오면 테스트 용도로 사용됩니다.


수강중인 모든 학생들에게 각 한 세트 씩 제공합니다. 검증 장비를 받아 바로 실행 해보려면 이에 필요한 도구가 설치되어 있어야 합니다. 수업 시간에도 언급 한 바 있지만 아래 링크의 글에 따라 Arduino와 Quartus를 리눅스 환경에 설치 하십시요.

  FPGA 개발 도구 설치(Altera Quartus) [링크]

이번주 과제는 툴 들을 모두 설치한 후 Q.13, Q.14 의,

- Talks 디렉토리에서 인공지능과 대화한 내용을 검토 하십시요.
- simulation 디렉토리 에서 make를 실행하면 몇가지 상이한 베릴로그 RTL을 링크할 것입니다. 이들의 차이를 이해하십시요.
- emulation 디렉토리는 fpga 를 사용한 검증 기법에 관한 내용 입니다. 아직 보드를 배포하기 전이지만 위의 툴들을 설치했다면 빌드는 가능 합니다. 반드시 빌드가 성공 되도록 환경을 구축 해 놓아야 보드를 제공해 줄 수 있습니다.
- ETRI050 디렉토리는 검증된 베릴로그 RTL을 합성하고 '내 칩 MPW'로 제작하기 위한 작업 공간입니다. 4주차 수업시간에 살펴볼 것입니다.
- 앞서 제출한 과제물을 보건데 Makefile 에 대하여 모두 어느정도 이해를 가졌을 것입니다. 단지 실행하는 것을 넘어 각 단계마다 어떤 툴을 동원하여 명령을 주고 있는지 살펴보시기 바랍니다.

* 주의: Q.13과 14의 내용이 갱신 되었으니 다시 내려받기 바랍니다.

* 강의를 개설하고 교보재를 제공하는 데 상당한 수고가 들어갑니다. 칩을 제작하는데에도 상당한 비용과 인력이 동원됩니다. 제공된 장비를 제대로 활용하지 못한다거나 나중에 칩이 나왔는데 테스트조차 하지 않는것은 도리가 아닙니다.
* 수강생들 전원에게 실습 보드를 제공하는데 이 강의를 개설하신 서울대학교 김성우 교수님께서 애써 주셨습니다. '내 칩 제작 서비스'를 성사 시켜 주시고 청주대학교 학생들을 조직하신 ETRI 노태문 박사님에게도 감사합니다. 
* 수강생들의 높은 학습 열의에 경의를 표합니다. 이에 맞춰 학습수준을 당초 예상한 것보다 많이 높여 진행하고 있습니다. 자부심을 가지시기 바랍니다. 당장 하나를 배우는 것보다 끝까지 반도체 설계의 전반을 이해하는 것이 중요합니다. 모두의 건투를 빕니다.

[내칩강의2026/4주] 4-1. 지난주 학습 토론

[내칩강의2026/4주] 4-1. 지난주 학습 토론

이 강의[안내 링크]를 수강 중인 학생들은 매주 과제를 수행하고 학습 노트를 제출합니다. 3주차 주요 학습[바로가기]에 대하여 수강생들의 학습노트는 아래와 같습니다.


1. 권효재의 3주차 학습노트 [보기]
*

2. 김예원의 3주차 학습노트 [보기]
* 2.1절에서 린팅 경고를 적시한 부분은 좋은 지적 입니다. 38건 중 BLKSEQ 항목의 중요성에 대하여 언급 했더라면 더 좋았을 것입니다.
* "시뮬레이션과 합성회로의 동작이 다를 수 있다"는 관점은 좋습니다. 실제 예시를 보여주어야 그 주장에 힘이 실립니다.
* 3.2절 좌우 화살표에 대한 이상 반응의 원인분석이 다소 미비합니다. 클럭 속도의 숫자와 함께 논리적인 원인을 제시하십시오. 권효재와 안준영의 학습 노트를 참고 하십시오.

3. 안준영의 3주차 학습노트 [보기]
* 3쪽 끝부분에 '움직임도 이산적으로 튄다'라는 표현이 적절할까요? '이산적' 이라는 표현에 대한 정리가 필요합니다.
* 5쪽의 '테스트벤치의 변경' 과 'RTL의 변경' 부분은 아주 잘 정리되었습니다. 권효재의 학습 노트와 함께 수강생 모두 참고할 만 합니다.

4. 안휘준의 3주차 학습노트 [보기]
* 2쪽과 3쪽에서 화살표 키에 대한 이상반을을 지적한 부분은 적절합니다.

5. 염재민의 3주차 학습노트 [보기] 
* 4쪽에 SystemC를 사용한 테스트벤치의 장점과 이해 부분을 잘 표현 했습니다.

6. 이수빈의 3주차 학습노트 [보기]
* 실습 수행 과정의 서술에 더하여 원인 분석을 추가 했더라면 좋을 것입니다. 키보드 이상 동작을 해소하기 위해 chk_btn 신호를 추가한 이유를 설명한 부분에서 학습 동료들은 어떻게 표현 했는지 참고하십시요.

7. 이현서의 3주차 학습노트 [보기]
* 키보드 이상 반응의 설명에 '조작감 개선'보다 논리적인 접근이 필요합니다. 앞서 언급한 다른 동료들의 논의를 참고 하십시오.
* 3쪽, 하드웨어 언어에 대한 비유적 표현에 "어떤 신호가 들어오면 어떻게 바뀌는지"는 감응 리스트(sensitivity list)에 적시된 이벤트-콜백을 설명하는 것으로 보입니다. 이에 더하여 병렬성을 추가 했더라면 좋을뻔 했습니다.

8. 한찬희의 3주차 학습노트 [보기] 
*


3주차 학습노트 총평:


1. '학습 노트'를 작성할 때 완결된 문장을 사용하도록 강조했었습니다. 문장은 생각을 정리하여 전달할 도구 이기 때문입니다. '학습 노트'를 받아보니 기대이상으로 훌륭 합니다.

2. 시뮬레이션을 통해 얻은 결과의 분석에 지나치게 숫자, 100ns, 16ms 등 클럭 속도에 관심을 두는 경향이 있습니다. 이 속도는 소자의 특성에 의해 달라질 수 있습니다. 그보다 논리적인 면에 주의를 기울이기 바랍니다. 예를들어,
    - 클럭의 속도보다 입력에 대한 계산을 수행하여 출력을 얻기까지 몇개의 클럭을 사용하는가?
    - 50Mhz 클럭을 사용 했다면 60프레임을 맞추기 위해 분주를 하는데 몇개의 클럭을 나누는가?
    - 인공지능은 굳이 50Mhz 을 사용 했을까(시판중인 FPGA 보드가 대부분 50Mhz 발진기를 내장하고 있음)?
    - 그래픽 화소 값은 몇개의 클럭마다 출력 되는가?
    - 지나치게 많은 문장들이 한 always @(posedge clk...)에 놓였을 때 문제는 없을까?

3. 학습 노트를 작성 때 지나친 외래어(외국어)가 동원 될까 걱정 했었는데 기우였습니다. 아주 훌륭한 우리말 구사에 감동입니다. 노트 곳곳에 요즘 흔치 않은 단어(일상 생활에서 외국어들이 넘치고 있어서)들이 공통적으로 보이는데(예를들어 '삼항연산자', '시간척도') 서로 모여서 공부하고 있나요?

4. 인공지능은 이시대의 유용한 공부 도구 입니다. 인공지능을 잘 활용 합시다. 인공지능이 내놓는 답변에서 배우고 오류를 찾아 내것으로 만들기 바랍니다.

5. 제출된 학습노트에 따라 '바이브 코딩으로 우주 침략자 게임 만들기' 웹 문서[링크]를 지속적으로 갱신 하고 있습니다. 이번주에도 갱신 되었으니 참고 하시기 바랍니다.


















2026년 10월 6일 화요일

[내칩강의2026/3주] 3-2/3. 학습 사항 및 과제(줌 링크 공지)

[내칩강의2026/3주] 3-2/3. 학습 사항 및 과제(줌 링크 공지)

수업 공지:

이번주 금요일은 한글날 휴무이므로 온-라인 줌 회의로 수업 대체 합니다. 아래 사항을 숙지하고 수업에 참여 하십시요.

일시: 2026년 10월 8일(목요일) 오후 9시(21시)-
줌링크: https://snu-ac-kr.zoom.us/j/4984347294?pwd=0JVrMTnCscaN26KrkgjmAjVYh5LmV6.1
            * 수업은 공개이므로 누구나 참여할 수 있습니다.

과제:

지난주 학습 사항[링크] 중 미진한 부분이 있습니다. 총평을 참고하여 아래 사항에 따라 과제를 수행 하시기 바랍니다.

- Q.1 과 Q.4 의 베릴로그 RTL에서 그래픽 장치를 다루는 방식의 차이점에 대하여 설명할것
- Q.10 의 실습을 수행 할 것. 스프라이트 시현 방식에 대하여 아듀이노 C++와 베릴로그 RTL의 차이를 비교 설명 할 것.
- Q.11 의 실습을 수행 할 것. 좌우 화살표 키보드 입력에 대하여 이상 반응을 보이는 이유를 찾을 것.
- Q.13의 시뮬레이션 디렉토리에서 실습을 실시할 것.
    * Q.11의 SystemC 테스트 벤치가 변경된 점을 찾아볼 것.
    * 키보드 입력을 보완하기 위해 베릴로그 RTL의 차이점을 찾아볼 것

학습예고:

- Q.11, 13: '내 칩' 견적 내기
- Q.14: 허용 칩 면적 및 입출력 핀 수의 제한에 맞추기
- Co-Simulation 과 Co-Emulation
    * [실습] RTL/pong_pt1: FPGA 에뮬레이션[링크]
    * "탁구 게임기" 7. 코-에뮬레이션(Co-Emulation) 검증[동영상]
- C++ 템플릿 크래스와 SystemC 최소한 이해 [링크]
    * 하드웨어 기술 언어의 코딩 스타일 [링크]
- FPGA 개발 도구 설치(Altera Quartus) [링크]
- 한 세대 전의 컴퓨터 게임기 이야기를 하며 세대간 소통(?!?) 요령
    * 어른들은 왜 장난감을 가지고 놀까?[링크]



2026년 10월 3일 토요일

[내칩강의2026/3주] 3-1. 지난주 학습 토론

[내칩강의2026/3주] 3-1. 지난주 학습 토론

이 강의[안내 링크]를 수강 중인 학생들은 매주 과제를 수행하고 학습 노트를 제출합니다. 2주차 주요 학습은,

    [내칩강의2026/2주] 2-2. 바이브 코딩으로 '우주 침략자' 게임 만들기 [학습 페이지 바로가기]

수강 학생 모두 과제를 수행하고 학습 노트를 아래와 같이 보내 왔습니다. 학습 동료들의 학습 진도와 관점을 참조하시기 바랍니다. 내가 미쳐 가지지 못했던 의문을 살펴보시고 서로 토론하며 안목을 넓히십시요.

1. 권효재의 학습노트 바로가기
2. 김예원의 학습노트 바로가기
3. 김희창의 학습노트 바로가기
4. 안준영의 학습노트 바로가기
5. 안휘준의 학습노트 바로가기
6. 염재민의 학습노트 바로가기
7. 이수빈의 학습노트 바로가기
8. 이현서의 학습노트 바로가기

과제 총평:

- 수강생들 모두 과제를 수행하고 실습 하는데 필요한 소프트웨어(리눅스와 오픈 소스 반도체 설계 도구)를 설치하였습니다.
- 컴파일 한 바이너리 코드를 아듀이노 보드로 업로딩 하는 방법을 실습 하였습니다.
- 간단한 비디오 게임기 코드를 살펴봤습니다. 소프트웨어 언어와 하드웨어 언어의 차이의 이해가 깊어졌을 것입니다. 우리가 실습을 해보는 중요한 이유는 이론은 구체화 할 수 있기 때문입니다. 수학에서 연습문제를 푸는 이유와 같습니다.
- 자신만의 문장으로 이 둘(소프트웨어 언어와 하드웨어 언어)을 비교할 수 있도록 정리하시기 바랍니다. 정리에 아래와 같은 관점을 포함 시키도록 하십시요.
    * 하드웨어 언어로 알고리즘을 기술 하였을 때 합성이 가능 하려면 RTL(Register-Transfer Level)이어야 한다.
    * 소프트웨어 언어로 하드웨어를 기술하기 위해 다음과 같은 개념을 갖춰야 한다.
        a. 비트 단위의 객체 묘사
        b. 다중치 논리(Multi-Valued Logic: 1, 0, X, Z)
        c. 병렬성을 다루기 위해 시간 관리
        d. 상태와 더블어 사건의 관리(edge 또는 event)
- 인공지능과 대화하며 합성 가능한 베릴로그 코드를 작성해 봤고 이를 시뮬레이션 했습니다.
    * Q1에서 처음 만들어준 베릴로그 코드와 Q4에서 만들어준 코드에는 커다란 차이가 있는데 이를 학습노트에 반영하지 못했습니다. 학습 페이지에 설명을 추가 하였으니 다시 살펴보시기 바랍니다.
        - 그래픽 평면위의 좌표를 나타내는 vga_x, vga_y 와 lcd_x, lcd_y의 입출력 방향이 다릅니다. 이는 그래픽을 취급하는 방식이 완전히 상이 하다는 것을 의미합니다.
    * SystemC에 대한 이해를 높이도록 하십시요. 인공지능이 알려준 장점을 나름대로 정리하십시요. SystemC는 C++ 언어로 하드웨어를 묘사하기 위해 앞서 언급한 하드웨어 개념을 갖춘 크래스 라이브러리이며 이를 시뮬레이션 하는 병렬 시뮬레이션 엔진을 포함하고 있습니다.
    * 과제 1,2가 Q.9에 있다고 실습을 멈춘 것은 너무나 아쉽습니다. 적극적인 학습 자세가 요구 됩니다.
    * Q.10을 실습 하십시요. 그리고 오류를 찾아내시기 바랍니다.

온-라인 수업 예고:

- 10월 중 추석과 공휴일이 많아서 온-라인 수업을 2차례(또는 3차례) 가질 예정입니다.
- 1차 온-라인 수업일은 10월 8일(목요일) 입니다. 온라인 교실 링크는 추후 공지하겠습니다.
- 2차 줌 미팅 때 FPGA 검증 키트 사용법을 설명합니다. 검증 키트가 모두 배포된 이후 날짜를 잡겠습니다.