EDA 11

#2 Mixfighter 구조 분석

직전에 shell과 예시 ADC 코드가 주어져 돌려보기는 했습니다.하지만 제대로 어떻게 동작하는지를 모르겠어서 메인 코드인 mixed_bridge.cpp 파일을 분석해보았습니다.그리고 그린 Flowchart입니다.설명하자면 Icaruse Verilog 파일을 shell을 통해 컴파일하면 vvp 파일이 생성됩니다.이후 같은 메모리를 사용하게 한 후 세마포어, 회로 정보 등을 저장합니다.이제 시뮬레이션을 시작하는데아무래도 IVerilog의 시뮬레이션 속도가 아날로그보다 빠릅니다.그래서 매 Latch마다 Spice_sync()라는 함수를 호출해서그 때마다 NGSpice와 IVerilog를 동기화합니다.위 그림은 FSM 그려본건데 처음에는 Bootstrap으로 한번 $spice_sync()를 실행해줍니다.$Sp..

#1 Mixfighter 개요

오픈소스로 신기한 코드가 올라왔습니다.https://github.com/cyberflex/MixFighter Mixfighter라는 건데아날로그 회로 Spice 툴인 Ngspice와 디지털 Icarus Verilog를 통합하여 왔다갔다 할 수 있도록 하는 구조였습니다.좋은건 C, C++환경에서 통제한다는 점이고각자 이벤트가 발생할때마다 bridge라는 코드를 통해서 왔다갔다 합니다. 사용하기 위해서는 당연히 Ngspice와 IVerilog 등 몇 가지 툴들이 있어야하고요이는 하단의 사진으로 대체하겠습니다. 파일 구조를 보니 4개의 Shell이 있고요, 예시로 Ideal 8Bit SAR ADC 코드도 있습니다. 돌려보니 확실히 잘 작동을 합니다.Opensource로 Verilog와 spice를 서로 연동한..

#2 NAND, NOR Auto Layout

지난번에 이어서 계속 만들어보고 있습니다.Finger 수가 늘어날 때마다 데칼코마니처럼 늘리면 되는 것을 이용한다면NAND, NOR Gate도 이처럼 구현이 가능해보였고, 다음은 시도 결과입니다.Cell 높이, 게이트 종류, 입력 개수, Width, Length, Finger를 각각 입력 받고이에 맞게 그리도록 했습니다.당연하다싶이 Cell 높이가 커질수록 Width와 인가 가능한 Gate 수도 증가합니다. 결국은 제원에 맞게 레이아웃을 그려주는것이 전부다보니 크게 문제될 것은 없었습니다.밑에는 7개의 입력을 받는 Width 10, Length 2, Finger 5의 Nand7을 생성해보았습니다. 하지만 현재는 ETRI 500nm, MAGIC Layout 툴을 이용해 구현하고 있는 반면실제로 사용하기 위..

EDA/Auto Layout 2026.03.13

#1 Inverter Auto Layout

지난번에 인버터 Layout을 GUI를 이용하여 직접 그렸는데,TCL 코드를 이용하면 실행하여 바로 인버터를 완성할 수 있습니다.위 사진은 Opensource Circuit Design 카테고리에서 생성한 인버터를 CLI 코드로 변환한 것이다. 그런데 인버터의 사이즈(X1, X2...)가 커진다는 것은결국 레이아웃 상에서 가로 방향으로 핑거(Finger)가 계속 추가되는 것 뿐이고.이를 이용해 원하는 사이즈 값만 입력해도 그에 딱 맞는 멀티 핑거 인버터 레이아웃을 즉시 그려내는자동화 매크로를 비교적 쉽게 구현할 수 있겠다는 생각이 들었습니다. 순서는 다음과 같습니다.json 파일에 기본 인버터 X1 사이즈 정보를 넣습니다.python에서 불러와 사이즈를 입력받습니다.해당 사이즈에 맞게 json 파일을 기..

EDA/Auto Layout 2026.02.26

#7 Post-Simulation

Schematic으로만 Simulation을 하는 경우 (Pre-Simulation) Ideal한 형태로 시뮬레이션을 돌립니다.실제로 Layout으로 설계를 하게 되면 과정 중 기생 성분(기생 저항, 기생 캐패시턴스)들이 생겨납니다.이러한 기생 성분들을 뽑아내고, 포함하여 다시 시뮬레이션을 돌리는 것을 Post Simulation이라 합니다.다시 설계한 Inverter.mag 파일로 들어갑니다.이후 다음 명령어들을 순차적으로 쳐주세요트렌지스터 level로 flatten 후 extractflatten inv_rcextract allext2sim labels onext2simR 성분 관련 설정extresist tolerance 10extresistext2spice lvsC 성분 관련 설정ext2spice c..

#6 Netgen을 이용한 LVS Test

설계가 완료된 경우 먼저 DRC Test를 해야 합니다.DRC(Design Rule Check)란 제조 공정사에서 요구하는 제한 사항에 위반되지 않는지 확인하는 것입니다.Magic에서는 drc on을 한 경우 자동으로 drc 검사를 해줍니다.만약 drc error가 난 경우 명령어로 drc why라고 입력하시면 이유를 알려줍니다. 그 다음으로 하는 Test는 설계한 Schematic과 Layout이 동일한지 Netlist를 비교하는 LVS(Layout Versus Schematic)작업입니다.저희는 이 LVS 작업을 Netgen이라는 툴을 이용하여 할 계획입니다.Schematic의 Netlist가 없으시면cd /home/Tutorial_Inverter/1-1_Inverter_Xschemxschem inv..

#5 Magic을 이용한 Inverter Layout 설계

다음으로는 설계한 Inverter의 Layout Design을 설계해보고자 합니다.파운드리 공정에서 Schematic만 갖고 그대로 칩을 만들어 주면 좋겠지만, 현실은 규정에 맞게 그려야 합니다.그러면 먼저 디렉토리 생성 후 Magic의 환경 설정도 복사해옵시다.cd /home/Tutorial_invertermkdir 1-2_Inverter_Magiccd 1-2_Inverter_Magiccp /home/pdk/ETRI050_DesignKit/tech/etri050.magicrc .magicrc경로도 새로 수정해봅시다.vim .magicrc5번째 줄을 design Kit를 넣어둔 경로로 변경이제 준비가 다 되었으니 레이아웃을 생성해봅시다.magic -d XR -d XR 은 그래픽 창이 X-윈도우 터미널 속..

#4 Ngspice를 이용한 Inverter 회로 Simulation

이제 설계한 Inverter를 테스트 해보도록 하겠습니다.다시 Xschem을 켜서 tb_inverter.sch 라는 파일을 만들겠습니다.위에 AND gate 모양의 버튼을 누르면 Choose Symbol 창이 뜹니다.Current dir 을 눌러 현재 디렉토리로 이동 후 Inverter.sym을 눌러주세요.그러면 아까 만든 Symbol이 나옵니다.Symbol을 누르고 Push 혹은 Pop을 하면 상위 혹은 하위 회로로 이동할 수 있습니다. 이제 입력 및 Power 신호를 인가 해봅시다.Insert를 누르고 VDD와 Gnd, Label wire 그리고 Vsource를 가져옵시다.Label Wire는 Vin과 Vout에 사용하였고VDD는 ETRI 공정의 최대 전압인 5V로 잡아두겠습니다.Vin은 일단 0으로..

#3 Xschem을 이용한 Inverter 설계

이제 본격적으로 실습을 시작하기 위해 디렉토리 작업을 해보겠습니다.Git_Download 내 다운받았던 PDK를 편하게 쓰고자 심볼릭 링크로 만들어놓겠습니다.cd /homemkdir pdkcd pdkln -s home/Git_download/ETRI-0.5um-CMOS-MPW-Std-Cell-DK /home/pdk/ETRI050_DesignKit 실습을 진행할 디렉토리도 생성해봅시다.cd /homemkdir Tutorial_invertercd Tutorial_invertermkdir 1-1_Inverter_XSchemcd 1-1_Inverter_XSchem이제 Xschem을 실행해주세요. Xschem의 간단한 조작법을 알려드리면마우스 휠을 눌러서 도면의 상하 좌우를 움직일 수 있으며 휠을 굴리면 확대 및..

#2 오픈 소스 회로 설계 툴 설치 (Magic, Xschem, Ngspice, Netgen)

다음으로는 Layout Tool인 Magic을 다운받아 보겠습니다.마찬가지로 권한을 주고 실행하겠습니다.chmod +x magic_build.sh./magic_build.sh직접 해보니 ExtNghbors.c에서 error가 뜹니다.이는 라벨 뒤에 아무런 문장도 없어서 그런 듯 합니다.뒤에 빈 문장이라도 넣어 수정해주겠습니다.cd /home/Git_download/ETRI-0.5um-CMOS-MPW-Std-Cell-DK/Tools/magic/extractsed -i 's/termdone:/termdone: ;/' ExtNghbors.c이제 다시 실행해주세요.이제 magic이라고 명령어를 입력하면 툴에 들어갈 수 있습니다.명령어를 입력하면 두 개의 창이 뜹니다.하나는 레이아웃을 그리는 그림판 창이며, 다..