2023년 7월 30일 일요일

2023년 7월 주간 강좌 및 주간 세미나 결과 보고

2023년 7월 주간 강좌 및 주간 세미나 결과 보고

2023년 7월 중 3회의 세미나와 4회의 강좌를 주관 실시하였다. 이에 다음과 같이 보고함.

주관/작성자: 국일호 (goodkook@khu.ac.kr)

________________

목차

  1. 주간 세미나
  2. 주간 강좌
  3. 총평
  4. 8월 계획
  5. 제안

________________

I. 주간 세미나

  • 반도체 설계자로서 알아야 할 기본소양 중 하나로 컴퓨팅 언어로 기술하는 반도체 회로와 시뮬레이션을 소개 한다.
  • 아래와 같이 3회 실시하였다.

[1] 반도체 설계자가 알아야 할 컴퓨팅 언어

실시: 2023년 7월 5일
장소: 전자정보대학관 211-2
시간: 오전 10시30분 (90분)
참석인원: - 명
내용:

[2] 반도체 설계자, C++ 얼마나 알아야 하나?

일시: 2023년 7월 12일
장소: 전자정보대학관 211-2
시간: 오전 10시 30분 (90분)
참석인원: 4명
내용:

[3] 소프트웨어 언어와 하드웨어 언어

일시: 2023년 7월 26일
장소: 전자정보대학관 211-2
시간: 오전 10시 30분 (90분)
참여인원: 7명
내용:

II. 주간 강좌

  • 기초 전자회로의 시뮬레이션에 SPICE를 활용한다.
  • 전자회로 시뮬레이터 SPICE의 시뮬레이션 명령 사용법을 배운다.
  • SPICE 기초강좌 3회, Verilog HDL 과 SystemC의 Co-Simulation 소개 1회

[1] SPICE 기초 [1/3]

일시: 2023년 7월 5일
장소: 전자정보대학관 211-2
시간:  오후 1시-3시
참여인원: 11명
내용:

[2] SPICE 기초 [2/3]

일시: 2023년 7월 12일
장소: 전자정보대학관 211-2
시간: 오후 1시 (2시간)
참석인원: 8명
내용:

  • SPICE의 AC Analysis (Fourier Analysis) 기법
  • LC 공진 회로
  • Behavioral description의 시뮬레이션 테스트 기법: AM 변조 및 선형 검파
  • 사용자 정의 변수 사용: Frequency sweep 기법
  • SPICE의 네트리스트(netlist) 기술과 시뮬레이션 명령(dot-commands, directives)
  • https://fun-teaching-goodkook.blogspot.com/2023/07/spice-2023-07-12.html

[3] SPICE 기초 [3/3]

일시: 2023년 7월 19일
장소: 전자정보대학관 211-2
시간: 오후 1시 (2시간)
참석인원: 5명
내용:

[4] 병행 시뮬레이션(Co-Simulation)

일시: 2023년 7월 26일
장소: 전자정보대학관 211-2
시간: 오전 10시 30분 (90분)
참여인원: 7명
내용:

  • Abstraction Level의 이해 (System specification 에서 Chip 까지)
  • Design domain의 이해 (Behavioral-Structural-Physical)
  • Domain 사이의 전환: Synthesis & Analysis vs. Generation & Extraction
  • Abstraction Level 전환: Refinement
  • 시스템 수준 반도체 설계 검증 환경
  • Verilog HDL 과 SystemC/C++로 구성하는 Co-Simulation 소개
  • https://fun-teaching-goodkook.blogspot.com/2023/07/co-simulation-2023-07-26.html

III. 총평

세미나와 강좌 시간 중 질문을 유도하였으나 많은 질문을 이끌어 내지는 못했다. 학습자들의  적극적인 참여를 위해 흥미로운 예제를 개발 할 필요가 있다. 그중 몇개의 질문은 아래와 같았다.

  • 교외 학습 기관에서 실시하는 유료 온라인 강좌가 도움이 될까?
  • 반도체 설계 도구들의 사용법을 알고 싶다.

교외 온라인 강의가 유료로 진행된다고 한다. 기업체 인사 담당자의 세미나에서 반도체 설계를 두루 섭렵해야 한다는 이야기를 듣고 교내 강좌로 부족하다는 느낌을 가졌기 때문 이리라. 학부 과정의 정규 수업만으로 전자회로, 설계언어, 레이아웃과 테스트까지 전과정을 익히기는 불가능 하다. 학생들 개인의 노력에 따라 성취의 정도가 다를 것은 당연하다. 하지만 현실을 알면서 저리 이야기 해서 학생들을 불안케 할 것 까지 있을까 라는 의문이 든다.

반도체 설계도구의 사용법(설계언어 포함)을 배웠더라도 막상 뭔가 해보려면 막막할 것이다. 그 도구를 가지고 뭔가 해 볼 동기 부여가 필요하다. 연습을 통해 능력치가 향상된다는 점은 반도체 설계라 해서 예외가 아닐 테니까.

학생들의 관심과 도전심을 불러 일으키기 위해 흥미로운 예제와 과제를 개발 할 필요가 있다. 이에 8월 중에 다음과 같은 예제를 개발 하여 강좌에 활용 토록 하겠다.

IV. 8월 계획

8월중 실시될 강좌의 주안점은 “Co-Simulation” 이다. 이미 정규 수업을 통해 Verilog HDL과 C++ 언어는 알고 있을 것이다. 7월중 세미나를 통해 반도체 설계자로서 요구되는 안목을 소개했다. 예제 중심으로 강좌를 실시 한다.

[1] Project 6502

  • 개인 컴퓨터의 시작이 되었던 APPLE ][에 사용된 CPU가 6502 다. 지금도 에뮬레이션 소프트웨어를 통해 수 많은 추억의 게임을 즐기는 인구가 상당하다. 6502 의 Verilog RTL 과 SystemC/C++ 의 검증 환경을 구성한다. 

[2] Project Z80

  • Zilog Z80 역시 수많은 게임기에 적용되었던 CPU다. Verilog RTL과 SystemC/C++ 검증 환경을 구성한다.

[3] Project RISC-V

  • RISC-V는 모든 컴퓨터 구조 교과서에 등장하는 개방형 RISC 머신이다. Verilog RTL과 SystemC/C++ 검증 환경을 구성한다.

8월중 실시될 세미나는 설계도구를 소개한다.

[1] Magic, VLSI Layout Tool

  • 풀-커스텀 MPW에 참여 권장.

[2] QuestaSim, HDL/SystemC Simulator

  • 두말할 필요가 없는 세계 1위의 시뮬레이터

[3] VisualStudio 2022, C++ compiler & debugger

  • 반도체 설계의 검증 환경 구축 기법

V. 제안

향후 1년간(2023-2024) 실시할 주간 세미나 및 강좌 계획

취지

반도체 설계 도구의 사용법 배우기를 지양하고 더 높은 단계로 도약하기 위해 다음과 같이 '주간 세미나'와 '주간 강좌'를 계획 하고 있다.

  • [주간 세미나]는 1회성 세미나다. 설계도구를 소개하고 기법을 익히는 시간이 되도록 한다.
  • [주간 강좌]는 3~6회의 연속 강좌 입니다. 설계도구의 기초 사용법과 디지털 신호처리 중 멀티미디어, 통신시스템과 관련된 알고리즘의 기초를 강의 합니다.

세미나와 강좌의 원칙

  • 정규 교과목에서 취하는 '전 과정을 기초부터 모든것'을 다루겠다는 방식을 피하고 실용성을 추구한다. 이론은 이미 정규 수업에서 들어 봤을 것이므로 요약하며,
  • 의미있는 예제 중심으로 직접 수행해 보도록 한다. 그 과정에서 수강자 스스로 새로운 아이디어를 구상해 낼 수 있길 바란다.
  • 이론 수업과 더블어 회로제작과 측정장비의 활용은 물론 필요하다면 시험장치 제작까지 이어질 수 있을 것이다.
  • 세미나와 강좌의 내용은 온-라인 상에 모두 공개하여 스스로 학습에 도움이 되도록 할 것이며 오프-라인 세미나 시간에 질문과 토론이 이뤄지길 바란다.
  • 학점과정이 아닌 만큼 자유롭고 적극적인 참여를 기대 한다.
  • '주간강좌'와 '주간세미나'는 모두에게 열려 있다. 누구든 막론하고 참여 환영한다.

다룰 내용

설계도구의 사용법은 간단히하며 다양한 활용을 다룬다. 최근 반도체 설계 도구의 발전을 보건데 사용법은 단순해졌고 알고리즘의 구현을 강조하고 있습니다. 사용법이 아닌 설계자의 의도를 명확히 해주는 것이 중요 하다. 적용될 하드웨어에 맞춰 알고리즘의 계산특성을 파악하고 수정해 줘야 최상의 결과(입출력 조건, 하드웨어 크기, 수행 클럭 수, 소모전력)를 얻을 수 있다. 통신 시스템, 인공지능, 기계학습등에 적용되는 알고리즘을 다루도록 합니다.

  • C++ / SystemC, Python, HDL(Hardware Description Language)
  • SoC Design Flow / 추상화 수준 / TLM(Transaction Level Modeling)
  • 검증환경 작성 기법 (Co-Simulation / Emulation)
  • HDL-RTL 합성 및 HLS (High-Level Synthesis): FPGA & ASIC
  • Radio System 및 SDR (Software Defined Radio) : Digital Signal Processing
  • 인공지능 / 기계학습 알고리즘: (AI & ML Algorithms)

FPGA는 물리학, 우주과학, 항공기계, 의료공학 분야에도 많이 활용되고 있다. 제 분야에 학생 연구자들에게도 반도체 설계 교육을 제공 할 수 있을 것이며 반도체 설계 전공 학생들에게는 다양한 취업 방향을 모색하는 동기가 될 것이다. 이와 관련하여 교내외 연구자들의 참여를 기대 합니다.

설계도구 목록

학습자의 개인 컴퓨터를 적극 활용하여 '자기주도' 학습을 돕고자 '무료' 설계 도구를 활용 한다. 아래에 소개할 '무료' 도구들은 단순한 교육용 도구들이 아니다. 상용의 도구들 이지만 제작사들의 관대함 덕에 '무료'로 교육용으로 사용할 수 있도록 배포되고 있습니다. 그외 GNU 정신에 의거 '집단지성'의 힘으로 완성된 수준 높은 도구들 이다.

1. C, C++

  • MicrosoftVisual Studio Community Edition
  • Linux GCC G++

2. Python

  • Jupyter Notebook

3. Wolfram(Mathematica)

4. HDL (Hardware Description Language)

  • QuestaSim

5. SDR (Software Defined Radio)

  • GNU Radio / Linux

6. Layout Tool

  • Magic / Linux

7. SPICE

  • LT-Spice

8. RTL-HDL & HLS(High Level Synthesis)

  • Xilinx Vitis HLS
  • Microchips Libero/Smart HLS

9. Microprocessor

  • Arduino IDE (AVR)
  • STM-32 GNU toolchain(ARM)
  • uC/OS (Real-Time OS)

2023년 7월 20일 목요일

[주간 강좌] 병행 시뮬레이션(Co-Simulation) (2023-07-26)

[주간 강좌] 병행 시뮬레이션(Co-Simulation)

일시: 2023년 7월 26일
장소: 전자정보대학관 211-2
시간: 오전 10시 30분 (90분)

내용

1. 병행 시뮬레이션(Co-Simulation)의 필요성

  • 추상화 수준(abstraction level)의 혼재
    - 언어의 차이
    - 구체성의 차이
  • Gajski-Kuhn Y-chart [그림출처: 1 , 2]
    3-Domains: Behavioral / Structural / Physical
  • Transition tools between Domains and Abstraction Levels
    - Refinement & Abstraction
    - Generation & Extraction
    - Synthesis & Analysis
    - Optimization
  • Concerns in each abstraction level
    - Architecture: IP availability, Needs on the market
    - Functionality & Algorithm
    - Number of Clocks & Data-path bit-width
    - Clock skew & violation
    - Die size & Power consumption
    - Clock & Thermal distribution
    - Test automation

  • Design Flow
    Lowering Abstraction Level

2. 추상화 수준이 혼재될 수 밖에 없는 이유

  • Design Under Test: Register-Transfer Level
  • Test Environment: Transaction Level
    - 실제와 근접한 테스트 입력
    - 방대한 테스트 입출력 및 검사
    - 완성되지 않은 DUT
    - 테스트 환경 구축
3. 예제: SR-FlipFlop의 행위 모델 [예제 다운로드]

  • HDL 모델을 시험하는 3가지 방법
    - 대화창 명령
    - HDL 테스트 벤치
    - 상위수준 언어사용
  • SystemC/C++ 로 하드웨어 기술 예
  • 도구 사용법
    - QuestaSim 사용법
    - VisualStudio C++ 에서 SystemC 모델 컴파일 옵션

4. 예제: 이미지 처리 RTL 모델 [예제 다운로드]

  • 시뮬레이터의 속도
    - 트랜잭션 수준 테스트
    - 가속기 / 에뮬레이터
    - FPGA Proto-Typing

5. 예제: Apple ][ [예제 다운로드]

  • CPU 6502 in Verilog (Synthesizable RTL)
  • Memory model in SystemC/C++
  • Testbench in SystemC/C++
  • Screen App. in C++ with SDL2 multimedia library
  • PIPE (Inter-Process Communication) between SystemC & Screen App.

-----------------------------------------------------------------

6. 결론

  • Verilog
    - 모양이 다른 컴퓨팅 언어 중 하나
  • SystemC/C++
    - 시스템 수준 모델링 도구
  • 추상화 수준이 혼재된 SoC 설계에서 병행 시뮬레이션(co-simulation)은 필수 

-----------------------------------------------------------------

[참고]

  1. AI Can't Design Chips Without People, EETimes [Link]
  2. SystemC Quick Reference Card [Link]
  3. Verilog Quick Reference Card [Link]
  4. Verilog Quick Reference Guide(2001) [Link]

-------------------------------------------------------------------

예제1:

Module boundary:


Verilog:

module SR_ff_Behavioral(s,r,clk,reset,q,q_bar);
input s,r,clk,reset;
output q,q_bar;
......
endmodule

 SystemC(C++)

class SR_ff_Behavioral : public sc_foreign_module
{
public:
    sc_in<bool> clk;
    sc_in<sc_logic> s, r, reset;
    sc_out<sc_logic> q, q_bar;

    SR_ff_Behavioral(sc_module_name nm)  // Constructor
        : sc_foreign_module(nm, "SR_ff_Behavioral"),
    {
    }

    ~SR_ff_Behavioral()
    {}
};

 -------------------------------------------------------------------------------

Verilog: Event sensitize

// Verilog
always @(posedge clk)   // Clock's edge
begin
    ......
end

SystemC(C++): Even & Call-Back 

// SystemC
SC_MODULE(SR_ff)
{
    ......
    SC_CTOR(SR_ff): // Constructor
    {
        SC_METHOD(SR_ff_Method);
        sensitive << clk;
    }
};

Member function, 

void SR_ff:: SR_ff_Method ()
{
    if (clk.read())
    {
    ......
    }
}

-----------------------------------------------------------------------

Binding signals

Verilog:

wire s1, r1, q1, q1_bar;
SR_ff_Behavioral U1(.clk(clk),
                    .reset(reset),
                    .s(s1),
                    .r(r1),
                    .q(q1),
                    .q_bar(q1_bar) );

SystemC(C++):

sc_signal<sc_logic> s1, r1;
sc_signal<sc_logic> q1, q1_bar;
SR_ff* U1_SR_ff;

SC_CTOR(sc_SR_ff_TB) : ... // Constructor
{
    U1_SR_ff = new SR_ff("U1_SR_ff");
    U1_SR_ff->clk(clk);
    U1_SR_ff->reset(reset);
    U1_SR_ff->s(s1);
    U1_SR_ff->r(r1);
    U1_SR_ff->q(q1);
    U1_SR_ff->q_bar(q1_bar);
}

------------------------------------------------------------

Behavior description

Verilog:

always @(posedge clk)   // Clock's edge
begin
    if (reset)  // Synchronous reset
        begin
        q = 1'b0;
        q_bar = 1'b1;
        end
    else
        begin
        case({s,r}) // Truth-Table
            {1'b0,1'b0}: begin q = q;    q_bar = q_bar; end
            {1'b0,1'b1}: begin q = 1'b0; q_bar = 1'b1; end
            {1'b1,1'b0}: begin q = 1'b1; q_bar = 1'b0; end
            {1'b1,1'b1}: begin q = 1'bx; q_bar = 1'bx; end
        endcase
    end // if~else
end // always()

SystemC(C++)

void SR_ff:: SR_ff_Method ()
{
    if (clk.read())
    {
        if (reset.read() == sc_logic('1'))
        {
            q.write(sc_logic('0'));
            q_bar.write(sc_logic('0'));
        }
        else
        {
            sc_lv<2> sr;
            sr = ((sc_lv<1>)s.read(), (sc_lv<1>)r.read());
            switch ((sc_uint<2>)sr) // Truth-Table
            {
            case 0: // s=0, r=0
                // DO NOTHING
                // q & q_bar: Keep previous values
                break;
            case 1:  // s=0, r=1
                q.write(sc_logic('0'));
                q_bar.write(sc_logic('1'));
                break;
            case 2:  // s=1, r=0
                q.write(sc_logic('1'));
                q_bar.write(sc_logic('0'));
                break;
            case 3:  // s=1, r=1
                q.write(sc_logic('x'));
                q_bar.write(sc_logic('x'));
                break;
            }
        }
    }
}

-------------------------------------------------------------------------

Blocking & Non-Blocking Assign

Co-Simulation Result

===========================================

예제2:

==============================================

예제3: Apple ][


2023년 7월 18일 화요일

2023-2024 주간 세미나 및 강좌 계획 (안)

2023-2024 주간 세미나 및 강좌 계획 (안)

취지

반도체 설계 도구의 사용법 배우기를 지양하고 더 높은 단계로 도약하기 위해 다음과 같이 '주간 세미나'와 '주간 강좌'를 계획 하고 있습니다.

  1. [주간 세미나]는 1회성 세미나 입니다. 설계도구를 소개하고 기법을 익히는 시간이 되도록 합니다.
  2. [주간 강좌]는 3~6회의 연속 강좌 입니다. 설계도구의 기초 사용법과 디지털 신호처리 중 멀티미디어, 통신시스템과 관련된 알고리즘의 기초를 강의 합니다.

세미나와 강좌의 원칙

  1. 정규 교과목에서 취하는 '전 과정을 기초부터 모든것'을 다루겠다는 방식을 피하고 실용성을 추구 합니다. 이론은 이미 정규 수업에서 들어 봤을 것이므로 요약하며, 의미있는 예제 중심으로 직접 수행해 보도록 합니다. 그 과정에서 수강자 스스로 새로운 아이디어를 구상해 낼 수 있길 바랍니다.
  2. 이론 수업과 더블어 회로제작측정장비의 활용은 물론 필요하다면 시험장치 제작까지 이어질 수 있을 것입니다.
  3. 세미나와 강좌의 내용은 온-라인 상에 모두 공개하여 스스로 학습에 도움이 되도록 할 것이며 오프-라인 세미나 시간에 질문 토론이 이뤄지길 바랍니다. 학점과정이 아닌 만큼 자유롭고 적극적인 참여를 기대 합니다.
  4. '주간강좌'와 '주간세미나'는 모두에게 열려 있습니다. 누구든 막론하고 참여 환영 합니다! (E-mail: goodkook@khu.ac.kr)

다룰 내용

설계도구의 사용법은 간단히하며 다양한 활용을 다룹니다. 최근 반도체 설계 도구의 발전을 보건데 사용법은 단순해졌고 알고리즘의 구현을 강조하고 있습니다. 예전의 수없이 많은 최적화 옵션으로 설계자들의 혼란케하던 시절도 있었지만 이제는 툴 공급자의 기본설정을 권장합니다. 사용법이 아닌 설계자의 의도를 명확히 해주는 것이 중요 합니다. 그러려면 적용될 하드웨어에 맞춰 알고리즘의 계산특성을 파악하고 수정해 줘야 최상의 결과(입출력 조건, 하드웨어 크기, 수행 클럭 수, 소모전력)를 얻을 수 있습니다. 통신 시스템, 인공지능, 기계학습등에 적용되는 알고리즘을 다루도록 합니다.

  1. C++ / SystemC, Python, HDL(Hardware Description Language)
  2. SoC Design Flow / 추상화 수준 / TLM(Transaction Level Modeling)
  3. 검증환경 작성 기법 (Co-Simulation / Emulation)
  4. HDL-RTL 합성 및 HLS (High-Level Synthesis): FPGA & ASIC
  5. Radio System 및 SDR (Software Defined Radio) : Digital Signal Processing
  6. 인공지능 / 기계학습 알고리즘: (AI & ML Algorithms)

FPGA는 물리학, 우주과학, 항공기계, 의료공학 분야에도 많이 활용되고 있습니다. 제 분야에 학생 연구자들에게도 반도체 설계 교육을 제공 할 수 있을 것이며 반도체 설계 전공 학생들에게는 다양한 취업 방향을 모색하는 동기가 될 것입니다. 이와 관련하여 교내외 연구자들의 참여를 기대 합니다.

설계도구 목록

학습자의 개인 컴퓨터를 적극 활용하여 '자기주도' 학습을 돕고자 '무료' 설계 도구를 활용 합니다. 아래에 소개할 '무료' 도구들은 단순한 교육용 도구들이 아닙니다. 상용의 도구들 이지만 제작사들의 관대함 덕에 '무료'로 교육용으로 사용할 수 있도록 배포되고 있습니다. 그외 GNU 정신에 의거 '집단지성'의 힘으로 완성된 수준 높은 도구들 입니다.

1. C, C++

  • MicrosoftVisual Studio Community Edition
  • Linux GCC G++

2. Python

  • Jupyter Notebook

3. Wolfram(Mathematica)

4. HDL (Hardware Description Language)

  • QuestaSim

5. SDR (Software Defined Radio)

  • GNU Radio / Linux

6. Layout Tool

  • Magic / Linux

7. SPICE

  • LT-Spice

8. RTL-HDL & HLS(High Level Synthesis)

  • Xilinx Vitis HLS
  • Microchips Libero/Smart HLS

9. Microprocessor

  • Arduino IDE (AVR)
  • STM-32 GNU toolchain(ARM)
  • uC/OS (Real-Time OS)

----------------------------------------------------------------

[토론] Synopsys의 Design Compiler 를 배워야 할까?


2023년 7월 17일 월요일

[주간 강좌] SPICE 기초 [3/3] (2023-07-19)

[주간 강좌] SPICE 기초 [3/3] (2023-07-19)

일시: 2023년 7월 19일
장소: 전자정보대학관 211-2
시간: 오후 1시 (2시간)
참석인원: 5명

내용:

1. 저항의 이해가 전자회로의 이해다.

  • 간단한 옴의 법칙 이해
    "저항체에 (직류, 교류)전류가 흐르면 양단에 걸려있던 전압이 떨어진다."

2. C 급 증폭회로 설계
  • Resonance (Q-Factor)
  • Impedance Matching (Smith Chart)
  • 고조파 발생 억제 방안
  • SPICE 시뮬레이션 및 실 회로 제작 실험

3. 시뮬레이션 명령 사용

  • 고주파 증폭회로의 효율 분석

4. 학습자료

https://fun-teaching-goodkook.blogspot.com/2023/06/spice_21.html

------------------------------------------------------------

질문:

------------------------------------------------------------

과제:

------------------------------------------------------------------------------------------------

주1]  SPICE 회로 시뮬레이터의 사용법은 시뮬레이션 명령(Dot-Command & Directives)의 이해다. 3주간에 걸쳐 명령의 기초 사용법에 대해 살펴봤다. 향후 세미나 시간을 통해 SPICE를 활용한 회로 분석 기법을 소개 하겠다.

주2] SPICE는 주로 아날로그 회로, 전파(공중선 포함) 회로의 설계와 분석에 이용된다. 수많은 트랜지스터의 스위칭을 특성만을 다루는 디지털 회로 설계에는 거의 사용되지 않는다고 봐도 좋다. 모든 전자회로의 기초가 된다는 점을 꼭 기억해 두자.

주3] 디지털 회로 설계용으로는 논리회로 시뮬레이터로 HDL 시뮬레이터가 사용된다. QuestaSim 이 대표적이다. 8월중 강좌를 개설할 것이다.

주4] 설계도구의 사용법이 궁금하고 신기할지 몰라도 그저 '도구'라는 점을 잊지말자. 도구의 사용법 보다 활용할 내용을 찾아보길 바란다.

------------------------------------------------------------------------------------------------

[주간 세미나 일정 변경 공지]

  1. 7/19일 오전에 예정 되었던 '주간 세미나'는 일정상 취소 합니다. 오후 '주간 강좌'는 예정대로 진행 됩니다.
  2. 7/26일의 오전 '주간 세미나'는 "소프트웨어 언어와 하드웨어 언어 (2023-07-26)" 편으로 예정되어 있습니다. 영상의 윤곽선 추출 알고리즘의 예제를 다룹니다. 예제의 내용이 규모가 있으므로 7/19일 오후 강좌 시간에 개요 설명이 있을 것입니다. 아울러 예정에서 취소된 '무료 반도체 설계도구들'을 소개 합니다.

------------------------------------------------------------------------------------------------


2023년 7월 16일 일요일

[주간 세미나] 소프트웨어 언어와 하드웨어 언어 (2023-07-26)

[주간 세미나] 소프트웨어 언어와 하드웨어 언어

일시: 2023년 7월 26일
장소: 전자정보대학관 211-2
시간: 오전 10시 30분 (90분)

내용

1. 컴퓨팅 언어의 목표

  • 컴파일러(Compiler): 기계용 명령 코드 생성(binary executable)
  • 합성기(Synthesizer): 기계 제작용 회로도 생성(circuit netlist)

2. 컴퓨팅 언어의 용도

  • 행위 기술 (Behavior Description)
  • 설계 검증 (Testbench for Design Verification)

3. 소프트웨어 언어 vs. 하드웨어 언어

  • 문장 실행(Statement execution): 순서(Procedural) vs. 동시(Concurrent)
  • 행위 및 시나리오 기술(Behavior) vs. 전자부품들 사이의 전기 결선 (Netlist)
  • 쉽다 vs. 어렵다
    - 제어문에는 보이지 않는 손이 작동한다(FSM, Finite-State-Machine).
    - 동시 다발하는 사건을 파악하기 어렵다 (시뮬레이션 필수!) 

4. 소프트웨어 언어에 하드웨어 요소 추가

  • 시간 관리(Time)
    - Simulated Concurrency
  • 사건 처리(Event process)
    - 사건 감응(sensitivity list)과 콜-백(Call-Back) 함수
  • 다중 구동 해결(Resolve Multiple-drive)
    - Multi-Valued Logic(MVL): 1, 0, X, Z
  • 전선과 저장소 (Wire vs. Storage)
  • 클럭(Clock)
    - 엣지와 레벨 (Edge and Level)
  • 할당(Assignment)
    - Procedural vs. Contineous
    - Blocking vs. Non-Blocking

5. 하드웨어 언어에 도입된 소프트웨어 언어 요소

  • 높은 추상화 수준: 트랜잭션 수준(Transaction Level)
  • 순서적 행위 묘사 포함: 사건과 콜-백 (Event and Call-Back)

[토론] 하드웨어 언어를 발전 시킬까? 소프트웨어 언어를 들여올까?

  • SystemVerilog [HDL] vs. SystemC [C++]

6. 하드웨어 회로 시뮬레이터

  • 동시성을 가상 작동시키는 소프트웨어
  • 사건과 콜-백 (Call-Back)
  • 시간 관리(Timing mode): 델타(Delta mode) 와 사건(Event mode)
[토론] 사건 구동 시뮬레이터(Event-Driven Simulator)는 동시에 일어난 사건을 어떻게 처리할까?

7. 회로 시뮬레이터

  • QuestaSim

----------------------------------------------------------------

[참고]

1] Hardware Description Language vs. Programing Language
https://courses.cs.washington.edu/courses/cse370/99sp/lectures/05-HDL/sld011.htm

2] Difference between HDL and Software Language
https://www.geeksforgeeks.org/difference-between-hardware-description-language-and-software-language/

3] Tools bridge the chasm between hardware and software
https://www.mouser.com/blog/tools-bridge-the-chasm-between-hardware-and-software

4] SystemC, Bridge the Gap
https://drive.google.com/file/d/11MSOZ4e592zwhy8jXRqmM6qg1AiMCfcd

5] 시스템 수준 언어: SystemC & SystemVerilog
https://drive.google.com/file/d/11fQKIcAC78B5gLcw-FZkJ800B1PV7o3B

----------------------------------------------------------------

[예제]

1] SR-FlipFlop

https://electrotrick.wordpress.com/2017/08/23/s-r-flip-flop/

2] HLS_Co-Sim_Ex_sobel_filter

[다운로드] https://drive.google.com/file/d/11olW2oLAJN4gwhZrjB_14MA47gi7Sptr (82MBytes)


Expand Time Modes


[SPICE기초] 활용예: C 급 고주파 전력 증폭 회로

[SPICE기초] C 급 고주파 전력 증폭 회로

앞서 두번에 걸쳐 SPICE 회로 시뮬레이터의 기초 사용법을 살펴봤다. 첫번째 학습은 회로 시뮬레이터 LT-Spice 의 설치와 회로 그리기, 네트리스트(netlist), 시뮬레이션 명령(dot-commands)과 지시자(directives)들을 배웠다. 저항의 분압 회로를 가지고 시간상 전압과 전류의 관찰(transient analysis)하는 기법을 주로 학습 했다.

  • 회로 시뮬레이터 LT-Spice 의 설치
  • LT-Spice의 창(Window) 종류별 단축키(Hot-Keys)와 제어키(CTRL, ALT)의 용도
    - 회로 그리기 창(Schematic Window)
    - 파형보기 창(Wave Window)
  • SPICE의 언어
    - 네트리스트(netlist): 회로 기술(description)
    - 시뮬레이션 명령(simulation commands)과 지시자(directives)
    - DUT 와 Testbench
  • 시뮬레이션 지시자(Simulation directives/Dot Commands)
    .trans 시간축 상의 시뮬레이션 (transient analysis)
    .step 변수 사용 반복 실행(parameter weeps)
    .measure 사용자 정의 식 측정(evaluate user-defined electrical quantities)
  • 사용자 정의식 신호발생기(Bhavioral voltage source)
    - 사용자 정의 수식(expression)
    - 수학 함수 제공(mathematical functions)

두번째 학습은 주파수 성분의 분석 기법에 대해 다뤘다. 컨덴서와 코일이 포함된 회로는 교류신호를 다루게 된다. 회로의 주파수 특성을 살피는 AC 분석(AC analysis) 시뮬레이션 명령을 배웠다. 아울러 퓨리에 변환(FFT)을 통해 시간상으로 관찰된 출렁이는 신호에서 주파수 성분을 분석하고 불필요한 주파수 성분은 제거하는 필터 회로도 다뤘다.

  • Impedance: 전류의 흐름을 제한
    - Resistance: 전류제한. 교류, 직류 구분 없다.
    - Reactance: 교류에 대한 전류제한. 주파수 특성을 가진다.
    (컨덴서와 코일이 보여주는 저항)
  • 인덕터와 커패시터가 보여주는 주파수 특성
    - Inductive Reactance
        XL = 2πfL
    Capacitive Reactance
        XC = 1/2πfC
  • 인덕터와 커패시터의 조합
    - R-L-C Filter
    - Resonance: XL = XC
        f = 1/2
    π√(LC)
  • SPICE 시뮬레이션 명령
    .AC 주파수 특성 시뮬레이션
    .PARAM 사용자 정의 변수
    .STEP 변수 증감 반복 시뮬레이션
    .FOUR 퓨리에 분석 (주파수 분석, 고조파 관찰)

다시한번 언급하지만 전자회로는 전압과 전류로 말한다. 전압은 저항에 흐르는 전류로 표현된다. 저항을 제어하여 다양한 신호를 만들어 낼 수 있다는 뜻이다. 전류는 시간상 항상 한방향으로만 흐르는 전류도 있으나 방향을 바꾸는 전류도 있다. 저항(임피던스)으로 시간상 흐르는 량 뿐만 아니라 방향도 변하게 할 수 있다. 교류에 대한 전류의 저항성을 리액턴스라고 한다. 임피던스(impedance)는 레지스턴스(resistance)와 리액턴스(reactance)를 포함한다.

회로 시뮬레이터는 컴퓨터의 도움을 받아 전자회로를 설계하는 과정에서 설계물을 검증 하기 위한 소프트웨어다. 전자회로는 저마다 고유 언어를 사용하여  회로의 동작을 기술하게 되는데 SPICE도 단순하지만 언어체계를 가지고 있다. 이 언어체계에는 설계한 회로의 묘사는 물론 이를 가상으로 작동 시켜보기 위한 장치도 포함된다. SPICE 언어에서는 이를 시뮬레이션 지시자(simulation directives) 또는 쩜 명령(dot-command)이라고 한다. 설계물에 주어질 각종 입력용 전자신호들을 만들어 내고 출력 신호들을 분석할 다양한 수학함수와 도구를 제공한다. 수식을 써서 사용자 정의 신호를 얼마든지 만들어 낼 수 있다. 이는 전자회로의 행동(behavior)을 언어로 표현하면서 얻는 가장 강력한 장점이다. 컴퓨터 언어는 매우 단순하다. 쓸데를 모르는 것을 가지고 쓸줄을 모른다고 탓하지는 말자.

-----------------------------------------------------------------------------------

SPICE 회로 시뮬레이터는 모든 전자회로를 다룰 수 있다. 학습 세번째 시간에는 그중 증폭회로의 예를 보기로 한다.

-----------------------------------------------------------------------------------

정성적으로 알아보는 트랜지스터 동작원리

먼저 아래 그림을 보자.

맨 왼쪽 그림: 스위치를 켜면 전구에 불이 들어오지 않는다. 전구는 내부저항(RL)이 있지만 접지로 가는 선에 저항이 없어지기 때문이다. 전기가 모두 전구라는 저항을 넘기보다는 스위치로 흐른다. 소위 '쇼트(short)'난 셈이다. 스위치를 떼면 전구에 불이 켜지고. 그런데 스위치를 누르면 '쇼트'나서 전류가 무한대 ∞로 흘러 전원장치가 난리 나겠지.

왼쪽에서 두번째 그림: 그래서 저항 R0을 달아 주자. 쇼트 나면 거기서 열이 펄펄 나는데, 전류가 무한정 흐르지 않게 막고 있다. 이때 스위치에 달아준 R0가 전구의 저항보다 작아야 한다(R0<RL). 만일 저항 R0가 전구의 저항 RL보다 아주 많이 크면(R0>>RL) 스위치를 눌러도 전기는 전부 전구로 간다. 전기가 R0를 넘기보다 RL을 넘기 수월할 테니까.

왼쪽에서 세번째 그림: 이번에는 스위치 대신 가변저항을 달아 놓기로 하자. 가변저항을 손가락으로 돌려서 0옴에 놓으면 쇼트 시키는 셈이다. 저항을 높여 놓으면 스위치를 뗀 셈이고. 그럼 손가락 놀림을 부드럽게 시계방향 또는 반시계 방향으로 돌려 보자. 그럼 전구의 밝기도 같이 변할 것이다. 왼쪽에서 네번째 그림처럼!.

---------------------------------------------------------------------

트랜지스터(transistor)라는게 있다더라. 이게 돌덩이 세개를 붙여 놓은 것인데 당연히 전기가 통하지 않는다. 그런데 이 돌멩이가 전압을 주면 갑자기 미쳐서 전기가 통한다네? 이 미친 돌멩이를 반쯤 '미친' 도체라고 '반도체'라고 한단다. 암튼, 조건만 맞으면 전류가 통한다. 영어로는 트랜시언트(transient) 하게 만들어 준다고 트랜지스터ㄷ라고 부른다. 이 조건이란 것이 전압인데 '조건맞춘 전압' 을 영어로 바이어스(bias) 전압이라고 한다. 전압차를 주어 한쪽으로 전류를 끌어당겨주는 전압이란 뜻이다. 어쨌든 트랜지스터는 가변저항을 대체하는 물건이다. 그대신 손가락으로 돌리는게 아니고 전압으로 저항을 조절 할 수 있다.

트랜지스터를 기호로 표시한게 왼쪽 아래 그림이다. 별것 아니다. 가변저항이랑 똑같은데 B 라고 표시한 곳에 바이어스 전압으로 C 랑 E 사이의 저항을 바꿔준다. 그럼 먼저 그림에서 가변저항 대신 이 트랜지스터로 바꿔 그려보자.

두번째 그림이다. 그리고 전압으로 저항을 조절 한다고 했으니까 Vin으로 표시 하자. 트랜지스터란 물건은 아주 작은 전압에도 가변저항치를 조절 한다. 대단하지? 그래서 저 트랜지스터 발명한 사람이 노벨상도 타고 그랬다.

왼쪽에서 세번째 아래 그림 처럼 Vin을 변화시켜 보자. 바이어스 전압이 높으면 C 와 E 사이에 저항이 낮아져 도통되고 전압이 낮으면 C와 E 사이에 저항이 아주 높아져서 끊어진 셈이 되니 전구가 밝아지겠지? 그러니까 밝기랑 Vin이랑 반대네?

만일 가변저항이었다면 손으로 얼마나 빠르게 돌릴것이며 아름답게 돌릴 수는 더더욱 없다. 사인파를 초당 수만회에서 수백만회씩 돌려댈 수 있겠냐고! 그런데 Vin의 전압을 빠르게 변화 시키고 사인 곡선처럼 아름답게 할 수 있다고 하자. 그리고 Vin은 0~0.5볼트인데 그보다 훨씬 큰 Vout은 0~5볼트를 낼 수 있다. 결국 전압이 열배나 늘었네? 뭐겠어? 증폭이다. 이게 바로 트랜지스터 증폭의 원리다.

근데 말이지. 전구를 밝기는 전압만 있는게 아니고 전류도 있지. 말하자면 허우대 멀쩡한데 삐쩍 말라서 힘을 못쓸 수도 있잖아. 허우대 멀쩡을 전압이라고 하면 근육질을 전류라고 하자고. 그럼 힘을 내는데 두가지 요인이 필요하지. 전압과 전류야. 밝기를 결정할 요인이 두가지로 늘었네? 이래서 저항으로 분압이 어쩌네 흐르는 전류가 어쩌네 따지기 시작하면 골치 아퍼져. 그러니까 우리 문돌이들은 공돌이 한테 떠맞기자고. 근데 말이지. 그림에서 세번째 위아래를 봐바. 파형이 반대지? 이래서 증폭회로는 위상이 반대니 어쩌니 그런말을 하는거야.

그리고 말이지. 그림을 보니까 전압이 0 에서 5V 사이를 왔다갔다 하네? 우리가 알기로는 자연계는 플러스 전압과 마이너스 전압을 오락가락 해야 한다며? 그래서 난리 안난다며? 근데 왜 0~5V 사이에만 있지?

플러스 전압과 마이너스 전압을 왔다리 갔따리 하는 걸 AC 라고 하지. 왔따리 갔다리를 영어로 alternate 라고 한다네? 그래서 전류가 왔다리 갔따리 한다고 AC, alternating current 라고 한대. 근데 마이너스는 없고 플러스에서 전압이 요동치는 건 AC 가 아니잖아? 그것은 한쪽 전압에서 요동치는 거잖아? 한쪽 전압에서 전류가 흐른다고 DC, direct current 라고 한다네. 근데 자연으로 뻗칠라믄 AC 여야 한다니까 DC 에서 요동치는걸 AC 로 요동치게 바꿔줘야 하는데 어떻게? 그때는 컨덴서라는 물건을 동원하지. 케페시터(capacitor)라고도 한다데. 전압이 플라스로 올라가면 충전했다가 0으로 떨어지면 방전하고 그러는 신기한 물건이라고. 컨덴서(condensor)나 커페시터나 다 영어인데 커페시터를 영어사전에서 찾으면 컨덴서 또는 축전지라고 나와.

----------------------------------------------------------------------------------------

트랜지스터 증폭 회로의 동작특성 실험 [링크]

----------------------------------------------------------------------------------------

트랜지스터 증폭기의 종류와 특성 실험 [링크]

----------------------------------------------------------------------------------------

라디오 전파 C 급 증폭기 (SPICE 회로 시뮬레이션) [링크]

라디오 전파 C 급 증폭기 (실전) [링크]

  • 트랜지스터
  • 공진회로
  • 공진회로의 Q-factor
  • 임피던스 매칭
    - 스미스 차트 활용 [링크]
    - LC 필터 설계 툴 [링크]
    [참고] Free On-Line FIR Filter Design [링크]

-----------------------------------------------------------------------------------

필터: 아날로그 vs. 디지털

[무선통신 시스템 설계] 1강. 기본 정의(Basic Definitions) [링크]

-----------------------------------------------------------------------------------


2023년 7월 13일 목요일

[주간 강좌] SPICE 기초 [2/3] (2023-07-12)

[주간 강좌] SPICE 기초 [2/3] (2023-07-12)

일시: 2023년 7월 12일
장소: 전자정보대학관 211-2
시간: 오후 1시 (2시간)
참석인원: 8명

내용:

1. 저항의 이해가 전자회로의 이해다.

  • 간단한 옴의 법칙 이해
    "저항체에 (직류, 교류)전류가 흐르면 양단에 걸려있던 전압이 떨어진다."

2. 컨덴서와 코일이 보여주는 저항

  • Impedance: 전류의 흐름을 제한
    - Resistance: 전류제한. 교류, 직류 구분 없다.
    - Reactance: 교류에 대한 전류제한. 주파수 특성을 가진다.

3. 인덕터와 커패시터가 보여주는 주파수 특성

  • Inductive Reactance
    XL = 2πfL

  • Capacitive Reactance
    XC = 1/2πfC

4. 인덕터와 커패시터의 조합

  • R-L-C Filter
  • Resonance

5. SPICE 시뮬레이션 명령

  • .AC
  • .PARAM
  • .STEP
  • .FOUR

예제1: L-C Low-Pass / High-Pass Filter
예제2: Baxandall Tone Control

6. 학습자료

------------------------------------------------------------

질문:

------------------------------------------------------------
과제:

학습 자료 내용의 실습과제 수행할 것. 특히 LC 결합 필터는 고주파 증폭 회로에 적용될 것임

------------------------------------------------------------

* SPICE 기초 [3/3]은 단기 강좌의 마지막 편으로 고주파 증폭회로의 설계를 다룸

  • C 급 증폭회로 설계
    - Resonance (Q-Factor)
    - Impedance Matching (Smith Chart)
    - 고주파 증폭회로의 효율 분석
    - 고조파 발생 억제 방안
  • SPICE 시뮬레이션 및 실 회로 제작 실험

2023년 7월 11일 화요일

SystemC 설치 (MS VisualStudio 2022)

SystemC 설치

C++ 기반의 반도체 설계(모델링 및 검증 환경 구축)용 라이브러리 및 시뮬레이션 커널

참조: 디지털 반도체 설계자가 알아야할 C++ 언어 [링크]

C++ 컴파일러

1. MicroSoft VisualStudio 2022 Community Edition [다운로드링크]

2. VisualStudio 에서 C++ 개발도구 선택 설치

  • C++를 사용한 데스크톱 개발 [필수]
  • VisualStudio 확장개발 [선택]
  • C++를 사용한 Linux 및 임베디드 개발[선택]

SystemC 설치

1. https://systemc.org/ 방문

2. 소스코드 DOWNLOAD

  • SystemC 2.3.3 - Core SystemC Language (incl TLM and examples) [Download]
  • SystemC Verification Library (SCV) 2.0.1 [Download]

3. 다운로드 파일(.tgz) 압축 풀기

4. SystemC 라이브러리 빌드

  • 압축을 푼 폴더에서,
    .....\systemc-2.3.3\msvc10\SystemC
  • VisualStudio Solution 파일 더블 클릭
    SystemC.sln

5. VisualStudio 에서 빌드

  • Retarger Project 에서 버젼 업그레이드(SDK10.0, v14.3) 'Ok'
  • Solution 'SystemC' -> Build Solution 실행

SystemC 예제 빌드

1. SystemC 소스 압축을 푼 폴더에서 아래 폴더 진입

  • .....\systemc-2.3.3\examples\build-msvc
2. VisualStudio Solution 파일 더블 클릭
  • SystemC_examples.sln
3. 예제 빌드시 링크 에러 발생
  • systemc.lib 를 찾을 수 없기 때문에 발생된 에러
  • [해결방법] 예제 프로젝트의 'properties' -> Linker -> Input 의 'Additional Dependencies'에 앞서 빌드한 systemc.lib 경로와 함께 추가 (상대경로를 사용하는 편이 좋음)
    ../../../msvc10/SystemC/x64/Debug/systemc.lib

4. 예제 실행


2023년 7월 8일 토요일

[주간 세미나] 반도체 설계자, C++ 얼마나 알아야 하나? (2023-07-12)

[주간 세미나] 반도체 설계자, C++ 얼마나 알아야 하나? (2023-07-12)

일시: 2023년 7월 12일
장소: 전자정보대학관 211-3
시간: 오전 10시 30분 (90분)
참석인원: 4명

내용:

1. 왜 C++ 인가?

  • 폭넓은 추상화 수준
  • 하드웨어에서 소프트웨어를 아우르는 언어

2. C++ 를 알면 유리한 점

3. C++ 는 뭐가 다른가

4. 한시간 만에 끝내보자!

  • 희망사항: 한시간만에 자신감을 가져보자
  • 교과서, 정규수업
    모두 다뤄야 한다는 '형식주의'에서 필요한 것만 알자는 '실용주의'로...
  • '말(jargon)'의 의미를 알고 '검색'

5. 결론

  • 컴퓨팅 언어: 전자회로의 행동(behavior)를 기술 및 검증환경 구축 도구
  • 반도체 설계자의 C++, 선택이 아닌 필수
    - SystemC, Bridge the Gap [Link]
    - 시스템 수준 언어: SystemC & SystemVerilog [Link]
  • 예제: HLS-RTL_SC_Co-Sim_sobel_filter (82MBytes) [Download]
    - 알고리즘: Sobel Image Processing (윤곽선 추출)
    - 사용된 언어: C++, Verilog
    - 검증기법: HDL-C++ Co-Simulation / Transaction & Register-Transfer Level
    - 도구: VisualStudio 2022, QuestaSim
  • HDL-SystemC 혼합 언어 시뮬레이션 (Co-Simulation) 8월 중 주간강좌 예정

----------------------------------------------------------------

질문:

----------------------------------------------------------------

과제:
  • 예제로 제공된 시뮬레이션 수행
    - C++ 시뮬레이션 / RTL 시뮬레이션 실행 속도 비교
    - FPGA 프로토 타이핑의 필요성 인식
  • Bitmap 이미지 파일을 다루는 크래스에서 멤버 함수의 역활
    - 헤더파일: DMyBmpLoader.h


2023년 7월 7일 금요일

[주간 강좌] SPICE 기초 [1/3] (2023-07-05)

[주간 강좌] SPICE 기초 [1/3] (2023-07-05)

실시: 2023년 7월 5일 / 오후 1시-3시
참석인원: 11명

내용:

  • 저항과 분압회로
    - 저항 네트워크
    - 저항 분압회로/브릿지회로
    - 트랜지스터 증폭회로에서 등가 분압회로
  • 시뮬레이션 기법
    - LT-Spice의 설치 / 기본 사용법
    - SPICE의 네트리스트 문법
    - 시뮬레이션용 지시자(Directives)
  • 시뮬레이션 명령 (dot-commands)
    - Transient Simulation (.TRAN)
    - Parameter Sweep(.STEP)
    - User defined Parameter(.PARAM)
  • Behavioral Modeling 기법
    - 수학 함수를 사용한 임의 전압 신호 발생기(voltage source) 모델링
    - Amplitude Modulation 모델링
    - 선형 검파 모델링

  • 학습 자료

  1. https://fun-teaching-goodkook.blogspot.com/2023/06/spice_13.html

-----------------------------------------------------

질문:

1. PSpice 를 사용 했는데 LT-Spice 와 차이는 무엇입니까?

시뮬레이션 엔진은 SPICE로 모두 같습니다. 다만 상품명의 차이로 사용자 인터페이스가 다를 뿐입니다. 그래픽 사용자 인터페이스가 다르더라도 회로도에서 네트리스트로 추출하여 SPICE 시뮬레이터를 실행 하는 과정은 동일 합니다. 설계 소프트웨어들의 사용자 인터페이스가 상이한 점에 크게 신경 쓰지 마세요.

2. 트랜지스터 회로를 더 다루면 좋겠습니다.

기초과정 3주 과정 중 1편을 다뤘습니다. 트랜지스터를 잠시 소개한 이유는 저항의 분압회로와 등가 회로로 해석 할 수 있다는 것을 보여주기 위함 이었습니다. 앞으로 3편에서 A, B, C 급 증폭회로를 다룰 것입니다. 기초과정이 끝나면 향후 세미나를 통해 더 많은 회로를 다룰 예정 입니다.

시뮬레이션에 그치지 않고 실제 회로를 꾸미고 측정기 사용법에 대한 세미나도 진행할 예정입니다. 관심을 가지고 참여 하시기 바랍니다.

3. 다이오드가 고주파를 정류하지 못했는데 컨덴서를 병렬로 달았을 경우 고주파 교류의 실효 전압을 잴 수 있었는데 다이오드를 컨덴서로 대치 할 수는 없을까요?

없습니다. 고주파에서 다이오드가 마치 컨덴서처럼 작동 했을 뿐입니다. 다이오드로 작동을 못하는 것이지 없는게 아니므로 컨덴서로 대치 할 수도 없습니다. 그리고 병렬로 연결된 컨덴서는 고주파를 접지로 빼내는 역활(shunt)을 합니다. 이를 두고 저역 필터(Low Pass Filter)라고 부르기도 합니다. 같은 회로를 두고 부르는 이름이 다른데 이는 그 회로의 목적이 다소 다르기 때문입니다.

앞으로 이런 경우를 많이 보게 될 겁니다. 같은 회로를 목적과 용도에 따라 부르는 이름이 다른 경우는 아주 흔한 일입니다.

-------------------------------------------------------------

SPICE 강좌 2편은 7월 12일 오후 1시 부터 입니다. L-C 회로를 다루고 시뮬레이션 기법으로 주파수 분석(Fourier Analysis)을 주로 다룹니다. 아래 링크의 학습자료를 미리 예습해 두세요.

https://fun-teaching-goodkook.blogspot.com/2023/06/spice_18.html


[주간 세미나] 반도체 설계자가 알아야 할 컴퓨팅 언어 (2023-07-05)

[주간 세미나] 반도체 설계자가 알아야 할 컴퓨팅 언어 (2023-07-05)

실시: 2023년 7월 5일 / 오전 10시30분 (90분)
참석인원: 18명

내용:

1. 반도체 설계자의 위치 인식

  • 하드웨어 vs. 소프트웨어
  • 알고리즘의 개발 vs. 구현
  • 시스템 아키텍트 (Architect)
    - 알고리즘의 선택 / 예측 / 분할 / 평가 / 검증 / 통합
    - 개발 일정관리 / 오류탐지 / 방향제시
2. 통합과 검증에 촛점

  • 검증과 통합은 시스템 반도체 설계자의 덕목
  • 실제와 같은 테스트 입력/방대한 검증 자료 -> 자동 오류 검출 기법
  • 폭넓은 추상화 수준의 컴퓨팅 언어
3. 컴퓨팅 언어

  • 알고리즘/행위 묘사 (Behavioral Modeling)
  • 컴퓨팅 언어와 자연언어의 차이
    - 추상성(abstraction) 과 모호성(ambiguity)
  • 컴퓨팅 언어
    - 키-워드와 예약어만 다를뿐 문법상 차이는 없다.
    - 문장은 자연언어의 논리적 간략화이며 일반 대수식과 다를바 없다. 
    - 언어의 목적상 차이 / 추상성 전이의 가능성
4. 컴퓨팅 언어의 추상성 수준

  • 객체 지향성: C vs. C++
  • 반도체 설계자에게 적합한 언어?
    - 폭넓은 추상성
    - 추상성 전이 수월 함
    - 다양한 라이브러리(수학 / 컴퓨팅 / 운영체제 )
5. 결론:
  • 컴퓨팅 언어는 대동 소이
    - 한가지 언어를 이해한다면 다른언어는 쉽다
    - 다른 언어는 읽을 줄 알아야 한다.
  • 인공지능이 코딩 해주는 시대
    - 일을 시키려면 적절한 질문을 할 줄 알아야 한다.
    - 적절한 키워드의 선택이 중요
    - 바른 답을 받았는지 확인할 수 있어야 한다.
  • C++ 반도체 설계자에게 최적은 언어인가?
    -> 다음 세미나 시간에 토의해 보자.
--------------------------------------------------------------------

질문사항:

1. C++ 만 하면 될까요?

그렇다. 단, HDL(Verilog)는 읽을 줄 알아야 한다. 언어의 활용 기법을 배우도록 하자. 알고리즘의 특징(반복적 계산/제어용/자료 의존성 등등)에 따라 묘사 기법이 다르다. 언어를 배우는 것도 좋지만 자료구조 및 알고리즘 분석을 익히는 편이 좋다. 컴퓨팅 언어의 키-워드/예약어의 갯수는 다 합쳐 봐야 100여개다 자연언어에서 차용된 것들이라 배우고 말고 할 것도 없다는 점을 기억해 두라.

2. Python은 왜 하드웨어 기술용으로 쓸 수 없을까요?

추상성 전이가 않된다. 추상성과 함께 모호성이 크다. 응용 과학자들을 위한 데이터 분석용 언어다. 이에 비해 C 는 아주 낮은 운영체제 개발용 언어로 시작한 언어다. 아 낮은 추상성 수준에서 매우 높은 추상성 수준을 모두 아우른다. 폭넓은 자료형 표현이 가능하면서도 엄격하다.

3. 따로 Verilog 를 배워야 합니까?

유료 강의를 수강 하려고 한다면 그럴필요 없다. 언어라는 것이 자연언어도 그렇지만 문법을 배운다고 구사능력이 올라가는 것이 아니다. 수많은 예제와 실수를 통해 배운다. 컴파일러와 합성기가 내뱉는 다양한 오류, 경고, 권고 메시지를 이해하도록 하자. 하찮은 예제 몇가지를 가지고 언어를 안다고 하지말자.

----------------------------------------------------------------------

다음 주간 세미나는 7월 12일 '왜 C++ 인가? C++ 얼마나 알아야 하나?'


Questa*Sim/ModelSim 시뮬레이터 설치

Questa*Sim/ModelSim 시뮬레이터 설치

지멘스 EDA사의 HDL 시뮬레이터

  • 멘토 그래픽스사의 ModelSim
  • 현존 HDL 시뮬레이터의 업계 표준!
  • 현재 표준 제정된 모든 HDL(VHDL/Verilog/SystemVerilog) 지원
  • 혼합 언어 시뮬레이션 지원/HDL는 물론 C++/SystemC를 위해 GCC 포함됨
  • 인텔에서 자사 FPGA 툴과 함께 배포(1년간 사용할 수 있는 무료 라이센스/연장허용)

설치 방법

1. Questa*Sim 소개글/무료버젼 제약사항 읽어보기

Questa*-Intel® FPGA Edition Software
https://www.intel.com/content/www/us/en/software/programmable/quartus-prime/questa-edition.html

2. 설치파일 다운로드 및 설치

  • 리눅스 또는 윈도우즈 버젼 선택 후 내려받기
  • 설치파일(.exe) 및 부속파일(.qdz) 다운로드 (주의: 약 32GByte)
  • 설치파일 실행 (무료 버젼은 Questa STARTER version을 선택할 것)

3. 라이센스 발급용 인텔 계정 생성

Intel® FPGA Self-Service Licensing Center

  • 첫 사용자는 "Enroll for Intel® FPGA Self-Service Licensing Center" 선택
  • "Create Account" 선택
    - E-Mail 입력 시 학교 메일을 쓰는 편이 좋음
    - Verify Code 가 위에서 입력한 e-mail로 송부됨
    - 확인 코드 입력하면 인텔 계정이 생성 됨
    - 전화번호 입력이 선택사항으로 되어 있는데 나중에 본인 확인 문자를 받아야 하는 경우가 있으니 번호를 넣어주는 편이 좋음
    - 5~10분 이내에 셀프서비스 라이센스용 계정이 생성될 것 임
    - E-mail로 인텔 라이센스 계정이 생성되었다는 통보가 올 것이므로 확인 할 것
4. 계정 활성화
  • 위의 "인텔 셀프서비스 라이센스 센터"에 방문하여 사인-인 (Sign-In)
    - Intel Azure Portal 을 통해 들어가는데 이게 MS Authentificator 앱을 사용하는데 깜찍하므로,
    - "다른 방법을 설정하고 싶습니다"으로 전화문자 메시지로 인증 받는 편이 정신건강에 이로움.
    - 국외발신 문자로 6자리 코드로 계정 생성및 Sign-In 완료
    - 나머지 사인-인 절차 완료
5. 무료 라이센스 발급

  • 사인-인이 정상적으로 위뤄진 상태에서 라이센스 발급센터 방문
  • 상단 메뉴 "Sign-up for Evaluation or Free License" 선택
    -> Questa-Intel FPGA Starter Edition 선택
        -> # of Seat 에 필요한 라이센스 갯수 입력
                (컴퓨터가 어러대면 그 숫자 만큼)
    -> "Get License"
  • Create New Computer 대화창에서 설치할 컴퓨터 정보 입력
    - Computer Name: 적당한 이름을 영문으로 쓸것
    - Computer Type: NIC ID 선택 
    - License Type: FIXED
    - Primary Computer ID: ____________ (사용할 컴퓨터의 이더넷 어댑터의 물리적 주소 입력)
  • 2~3분 내에 E-Mail로 라이센스 파일이 첨부화일로 올 것임

6. 라이센스 적용

  • E-Mail 로 받은 라이센스 파일을 적당한 폴더에 복사. (예: C:\intelFPGA_pro)
  • 시스템 환경 변수에 다음과 같이 추가.

    LM_LICENSE_FILE = <라이센스 파일의 Path>

--------------------------------------------------------------------------

* 설치에 문제가 있다면 주간 세미나 시간에 질문 바람.
* 설치 파일이 크므로 공유해서 사용할 것.


2023년 7월 1일 토요일

SPICE 기초 강좌 (2023-07)

SPICE 기초 강좌 (2023-07)

SPICE 기초강좌 일정은 아래와 같이 확정공지 합니다.

제목: SPICE 기초 강좌
일정: 2023년 7월 5/12/19 (매주 수요일)
시간: 오후 1시~3시
장소: 전자정보대학관 211-2호
강사: 국일호 (반도체전공트랙 사업/산학협력중점교수, e-mail: goodkook@khu.ac.kr)

내용:

  • 7/5: [SPICE기초] 저항과 분압회로, Transient Simulation, Behavioral Modeling
  • 7/12: [SPICE기초]  컨덴서와 코일의 주파수 특성, AC Analysis, FFT Analysis
  • 7/19: [SPICE기초] 활용예: 고주파 전력 증폭, 하위회로 불러오기, CMOS 인버터

준비사항:

  • 강의 후 시뮬레이션 실습을 하고자 하는 경우 노트북에 LT-Spice를 설치해 오세요.
  • 학습 내용을 미리 읽어보고 질문과 토론 중심으로 수업이 진행 되길 바랍니다.

  1. https://fun-teaching-goodkook.blogspot.com/2023/06/spice_13.html
  2. https://fun-teaching-goodkook.blogspot.com/2023/06/spice_18.html
  3. https://fun-teaching-goodkook.blogspot.com/2023/06/spice_21.html


7월 중에는 매주 수요일 강좌와 세미나를 가져볼 계획 입니다. 세미나 일정[링크]도 참고 하세요. 강좌와 세미나는 자유롭게 참석하시고 질문과 토론 가져보는 시간이 되길 바랍니다.



리눅스(Linux)가 별건가?

리눅스(Linux)가 별건가?

전자회로 설계 도구들이 실행되는 환경(운영체제)은 리눅스(Linux)인 경우가 많습니다. 아쉽게도 오늘날 우리의 컴퓨팅 환경이 마이크로소프트의 윈도우즈에 치중되어 있다 보니 리눅스는 거북합니다. 반도체 설계 교육의 첫시간을 리눅스(X-Windows 포함)로 채우는 경우가 있습니다. 막상 리눅스를 써보면 정말 별거 아니라는 걸 알게 됩니다. 여러분의 PC에 리눅스를 설치해서 익혀 보기로 합시다.

WSL(Windows Sub-System Linux)은 하드디스크를 파티션하고 리눅스를 설치하고 그런 수고 없이 현재 윈도우즈에서 리눅스를 운영할 수 있도록 해줍니다. 일종의 가상 머신 서비스인데 윈도우즈에 기본 설치되어 있으니 재부팅, 듀얼부팅 그런것 없이 혼용 운용, 윈도우즈와 리눅스 파일 교환, 복붙도 가능하니 아주 편리합니다. 윈도우즈 설계 도구와 리눅스용 설계 도구 동시 운용도 가능 합니다.

WSL에 우분투 리눅스를 설치하는 방법은 아래 링크에서 내용을 읽어 보세요.

Linux용 Windows 하위 시스템 설명서 [링크]

주1] WSL은 version 2 로 설치하는 편이 좋습니다.
주2] 현재 우분투 공식 버젼은 22.04 인데 컴퓨터 사양에 따라 문제가 있습니다. 배포판 18.04 로 먼저 설치하고 추후 업그레이드 하는 방법을 추천 합니다.
주3] 우분투 기본 설치에 desktop, xterm 그리고 gcc 까지 설치하면 약 12Gbyte 의 하드디스크가 필요합니다.
주4] 윈도우즈 설치 관리자에 의해 관리되므로 언재든 쉽게 삭제 할 수 있습니다. 설치 실패시 컴퓨터가 꼬이고 어쩌고 그런 걱정 하지 않아도 됩니다.
주5] 우분투 리눅스에서 운용되는 반도체 설계 소프트웨어는 여럿 있지만 우리가 관심을 가져볼 만한 것들로,

그외 상용이지만 무로 라이센스를 제공하는 툴(리눅스-윈도우즈 공용)

  • Xilinx Vivado HLS
  • ModelSim/Questa Sim
  • LT-Spice

신호처리, 알고리즘 개발용 언어

  • Visual Studio Community version
  • Wolfram Language
  • Python
  • SystemC

리눅스를 다룰 줄 안다는 것 만으로도 한 수 앞서 가는 듯이 힘주는 이들도 가끔 보는데 이참에 살짝 비웃어 줍시다. 설치에 어려움이 있거나 기타 질문은 세미나 시간에 나누도록 합시다.

    2023년 7월 세미나 일정 [링크]


2023년 7월 중 주간 세미나 계획

7월 중 주간 세미나 계획

매주 수요일 오전 10시30분~12시에 아래와 같이 짧은 세미나를 진행합니다. 장소는 전자정보대학관 211-2호입니다.

일정:

  • 7/5 반도체 설계자가 알아야 할 컴퓨팅 언어는 무엇?
  • 7/12 반도체 설계자는 C++를 얼마나 알아야 하나?
  • 7/19 무료로 써보는 반도체 설계 도구들
  • 7/26 하드웨어 언어와 소프트웨어 언어의 차이

'반도체 설계'가 끌리는데 어디부터 시작 해야 하나요?

가장 많이 듣는 질문입니다. 이 갑갑함을 다는 아니더라고 작은 실마리라도 잡아보고자 짧은 세미나를 가져보려고 합니다. 참석 인원이 많을 것을 대비해 미리 신청을 받겠지만 그럴리가 없으므로 선착 순 입니다. 당일 참석자가 적을 경우 상담과 설계툴 팁 위주로 질문과 답 시간을 갖습니다. 모든 질문에 답해줄 수는 없더라도 아무 질문이나 받을 수는 있음.