Introduction to Development and V&V of FPGA-based Digital I&Cs Dependable Software Laboratory Date 2015-09-15 김의섭 2015 Dependable Software Laboratory 1
Table of Contents 1 FPGA... 4 1.1 소개... 4 1.1 FPGA 개발흐름 [4]... 5 1.2 구조... 6 1.3 FPGA 장단점... 7 2 FPGA Development Process... 8 2.1 Requirement Specification or Design Specification... 9 2.2 RTL Design... 9 2.2.1 Verilog... 10 2.2.1.1 Verilog 특징 [10]... 11 2.2.2 VHDL... 12 2.2.3 VHDL 특징 [12]... 12 2.3 Synthesis... 13 2.3.1 셀라이브러리 [15]... 15 2.3.2 합성가능한 (synthesizable) 설계 [15]... 16 2.3.3 Synthesis 의장단점... 18 2.3.4 Commercial tool for logic synthesis (3rd party synthesis tool)... 18 2.4 Gate-level Design... 19 2.5 Place and Routing... 19 3 Verification and Validation... 21 3.1 Simulation... 21 2015 Dependable Software Laboratory 2
3.1.1.1 Simulation 의단점... 22 3.1.1.2 Behavior Simulation (Functional Simulation)... 22 3.1.1.3 Logic Simulation (Gate-Level Simulation)... 23 3.1.2 Equivalence Checking... 24 3.1.3 Static Timing Analysis... 25 3.1.4 Layout Verification... 26 4 Others... 27 4.1 IP [18]... 27 4.2 HIL (High Level Synthesis)... 28 4.2.1 LabVIEW FPGA Module... 28 4.2.2 CyberWorkWench... 29 2015 Dependable Software Laboratory 3
1 FPGA 1.1 소개 프로그램이가능한비메모리반도체의일종. 회로변경이불가능한일반반도체와달리용도에맞게회로를다시새겨넣을수있다. 따라서사용자는자신의용도에맞게반도체의기능을소프트웨어프로그램하듯이변형시킬수있다. 일반반도체에비해가격이수십 ~ 수백배비싸며항공, 자동차, 통신등의분야에주로쓰인다. [1] FPGA는 Field Programmable Gate Array 의약자로 Field Program 이란반도체제조업체 ( 예를들어국내의경우삼성, 현대등과같은반도체업체 ) 를통하지않고도산업현장에서엔지니어가직접디바이스를프로그래밍하여설계한회로를반도체칩상에구현할수있다는것을의미한다. Gate Array는원래 ASIC(Application Specific Integrated Circuits) 디바이스종류의하나로 FPGA의내부구조가 ASIC의한종류인 Gate Array와유사하기때문에붙여진것이다. [2] FPGA의 Field Programmable Gate Arrary의약자로일반사용자가프로그램가능한 Gate Array라고할수있다. 여기서 Field는 ASIC 공정을통하여원하는회로를만드는것이아니라일반 field 에서일반유저가원하는로직을구현할수있다는의미로사용된것으로볼수있다. 그리고여기서사용되는 Gate Array라는용어는 Standard Cell 공정시간을단축시키기위한아이디어로나온것이 Gate Arrary 인데 FPGA라는용어를만든사람들이 Field에서프로그램가능한 Gate Array 라는의미로, FPGA라는용어를만든것으로볼수있다. 현재 ASIC의최대단점인너무긴공정기간과너무높은 FAB비용으로등으로인하여, FPGA의중요성은점점커지고있는데요즘들어서는 FPGA 단가도낮아지고있으면내장가능한로직의크기도상당히커지고있다. 그래서기존의 ASIC 영역의중에서수량이아주많지않으면서단가에덜민감한시스템에많은 FPGA가채용되고있다. 또한 ASIC의만들기전에, 일단은 FPGA로회로를구현하여테스트를하는목적으로도대부분 FPGA를사용하고있으므로, ASIC엔지니어에게있어서도 FPGA에대한이해는중요한문제라고할수있다. [3] 2015 Dependable Software Laboratory 4
1.1 FPGA 개발흐름 [4] PLD는지난 1970년대중반 MMI라는회사가처음개발한 PAL제품이그시초라할수있다. 바이폴라테크놀로지를이용한 PAL은 OTP (One Time Programmable) 타입이기는하지만반도체역사상최초로프로그램가능한아키텍처를구현했다는점에서지금의 PLD 제품의모체라볼수있다. 이후 1983년에알테라가 EPROM을기반으로한 EPLD (Erasable Programmable Logic Device) 를개발함으로써자외선과전기적신호를이용해쓰고, 지우기가가능한프로그래머블디바이스인 Classic이라는제품을선보였는데이를통해지금의 CPLD (Complex Programmable Logic Device) 시장이본격화되었다. 당시반도체칩위에유리창이달려있던제품들이바로 EPROM을사용해프로그래밍을했던 PLD 디바이스들이다. AMD 로인수되었던 MMI 의기존멤버들이벤처로창립한래티스도 CPLD 시장의선도주자중하 나다. CMOS 테크놀로지를이용한 EEPROM 기반의 SPLD (Simple PLD) 인 GAL 을처음개발했고 현재 High Density CPLD 시장에서빠르게성장하고있다. 게이트어레이아키텍처에서출발한 FPGA (Field Programmable Gate Array) 는 1985 년, 자일링스 가 XC2064 라는제품을통해처음으로선보인개념이다. EEPROM 기반의 CPLD와는달리 SRAM 아키텍처를채택하고있는 FPGA는 CPLD에비해속도와성능면에서는저조했지만대용량을구현하는데있어유리하다는장점때문에 ASIC 프로토타입으로각광을받았다. 최근에는 FPGA 기술이발전하면서성능면에서도 CPLD에근접하고있는데다가격면에서도크게향상돼마켓영역이꾸준히확대되고있다. 현재 FPGA 는이러한전통적인 SRAM 기반제품들이외에도앤티퓨즈 (Antifuse) 방식의 FPGA 를 비롯해플래시타입제품들도공급되고있다. 액텔과퀵로직이공급하고있는앤티퓨즈방식의 FPGA는 OTP 타입으로프로그래밍을한번밖에할수없고프로세스공정상대용량구현이어렵다는단점을가지고있으나라우팅리소스가풍부하고스피드면에서매우탁월한성능을제공한다. 또한보안성이탁월해군사용어플리케이션분야나게임기, 가라오케같은니치마켓에서좋은반응을얻고있다. 플래시타입 FPGA는초기시장진입단계로아직사용자가많지는않지만 SRAM 타입 FPGA와는달리별도의 PROM을쓰지않고도라우팅이가능해원칩솔루션을구현할수있고스위치사이즈가 12분의 1 수준에불과해다이사이즈를줄이고전력소모를절감할수있다는장점을가지고있다. 플래시타입 FPGA는 GateField가처음개발한제품으로현재액텔이공급하고있다. 2015 Dependable Software Laboratory 5
1.2 구조 FPGA 는프로그램가능한논리소자의배열의한종류이다. 밭, 논같은경작지를생각해보면넓은평야 (field) 의경우바둑판처럼규칙적인구획을가진배열이다. 가로세로로나누는것은사람들이걸어다닐수있는 둑 과같은것, 즉 FPGA는하나의밭의구역과같은로직블럭이넓은평야에있는밭처럼규칙적, 반복적으로배치되어있으며, 그각각의로직블럭을둑의길과같이가로및세로방향으로연결선이배치된구조로, 외부에서프로그램하여로직블럭의동작과로직블럭간의연결선을임의로배치하여다양한동작을할수있도록설계된 IC라할수있다 그림 1. FPGA 도식도 일반적인 FPGA 의논리블록은아래에보이는것처럼 4 개의입력룩업테이블 (lookup table) 과 플립플롭으로구성된다. 레지스터나언레지스터룩업테이블이가능한하나의출력만있다. 논리 블록에는룩업테이블을위한 4 개의입력과클럭입력이있다. 그림 2. 로직 ( 논리 ) 블록 [5] 2015 Dependable Software Laboratory 6
- LUT(Look Up Table) [6] FPGA는 Gate Array와달리 NAND/NOR Gate는사용하지않고, 대신 4~6 input LUT를사용하여 combinational logic을구성합니다. LUT이란그냥 memory라고생각하면됩니다. Address에 input 을가하면 memory 내부의내용이 output으로나오면서그것이 logic이됩니다. memory 내부의내용을바꾸어다양한 combinational logic을구현할수있습니다. 당연히 sequential logic을설계할수있어야하므로 LUT의끝에는 flip-flop이달려있어서이용할수있습니다. 기본적으로 LUT 를여러개넣은것을한단위로하여 Vendor별로 Slice니 ALM이니하는것으로부르고그것의배열이 FPGA를이루고있습니다. 그림 3. 스위치상자 [5] - Programmable Interconnect [6] LUT들사이의연결을해야완전한 logic이됩니다. 이연결도당연히 programmable합니다. 일반적으로 FPGA 설계가 chip으로구현하는것보다느린이유는이 Interconnect 부분에서많은 delay가있기때문입니다. 될수있으면 routing을잘하여 interconnect의 delay를줄여야빨리동작하는설계가됩니다. 1.3 FPGA 장단점 간편하게설계한로직을반복적으로이식할수있다 Time to market이좋다 - 빠르게시장에내다팔수있다. (ASIC 대비 ) - ASIC은한번만드는데대략 3~6개월걸림 ( 설계상에오류가있다면그만큼의시간이필 요 ) - Non-recurring Engineering(NRE) charge를내지않아도된다는것이다. - 이름그대로 NRE charge는 ASIC을의뢰하여샘플받는데까지무조건내야하는 ( 공정에 2015 Dependable Software Laboratory 7
따라한번에수천만원에서수억원에이름 ) 비용이고칩이동작안한다고하여돌려받을수있는돈이아니다. 업데이트가능 - FPGA는 SRAM타입의경우 PROM파일만바꿔주면안에내용을바꿀수있음 - 예를들어해외에수출했는데오류가발생할경우, ASIC은전수회수하여칩을교체해야함반면, FPGA는 SW업데이트로해결이가능합니다. 고비용 - 대량으로생산하는경우 (ASIC의양산단가는 FPGA와비교안될정도로쌈 ) Size문제 - FPGA에비해 ASIC은칩의면적이작음 ( 충분히 optimize 되기때문 ) - 핸드폰처럼작은사이즈가필요한제품은 FPGA로설계하기어려움 ( 발열이나사이즈문제 ) 2 FPGA Development Process FPGA-based system 는비록최종결과물이 hardware component 이지만 design 과 implementation 의형태는 software-based system 과매우유사하다. [7] 그림 4. FPGA Development Process FPGA design level 에서사용되는많은수의 HDL(Hardware Description Language) 와 higher-level 언어는일반적인 software programming 언어와매우유사하며, 이는자동화된 design tools 을이 2015 Dependable Software Laboratory 8
용하여자동으로쉽게얻을수있다. 또한, FPGA로 configuration 되기전의생성물역시 SW와비슷한 binary configuration code이다. 많은 FPGA vendor들은이를위한 IDE(integrated development environment) 를가지고있으며개발 process의다양한변환 V&V 활동을지원하고있다. 일반적인 FPGA 의개발프로세스그림 4와같다. 2.1 Requirement Specification or Design Specification FPGA 개발을위한첫단계는요구사항을분석하여정의하는단계이다. 해당단계에서는기능적인부분뿐만아니라물리적인하드웨어관련부분역시분석되어야한다. 기능적인부분은시스템이어떤동작을할지를결정하는단계이고하드웨어관련부분은기능을수행하기위해어떤 chip을선택할지, 외부 device와어떻게 data를주고받을지를결정해야한다. 분석한기능을자연어또는 block diagram, schematic으로형상화할수있다. 또한개발자는어떤 FPGA chip을사용할지결정해야한다. 선택된 FPGA의물리적특징및성능이가 design에영향을주게되기때문이다. 예를들면전체 chip의동작 clock 속도나 memory bandwidth 등에따라디자인을고려해야한다. Critical timing 이나 power, board size 역시고려되어야한다. 또한 chip이담당할부분과외부 device와어떻게연결할지를정해야한다. Chip과외부 device가어떻게연결되느냐에따라 chip 내부의 interface가달라지기도하기때문이다. 또한해당단계에서어떻게 FPGA 를개발할지, V&V 활동을어떻게진행할지, 프로젝트진행은어떻게할지등계획한다. 잘정립된개발프로세스와 V&V 계획은 FPGA의 Quality에영향을주게될것이다. 개빌된 FPGA가 Safety critical system에사용될경우해당내용은 safety에영향을주게될것이다. 또한요구사항의 trace는어떻게할지, 개발중에발생한 issue 는어떻게관리할지, 형상관리는어떻게할지등을모두결정해야한다. 2.2 RTL Design RTL design 이란디지털회로를설계하는방식중의하나이다. 하드웨어레지스터와산술논리연산 ( 조합 ) 회로간의데이터흐름으로정의된다. 공정에독립적인모델 (technology-independent model) 이며, 논리합성도구에의해게이트레벨네트리스트로추출된다. 특정공정셀라이브러리 (cell library) 와설계제약조건 (design constraint) 이필요하며, 주로 VHDL, Verilog-HDL이사용된다. [8] 요구사항분석단계에서분석된기능은 HDL(Hardware Description Language) 라고하는언어로 programming 을하게된다. 현재가장많이사용되는 HDL 은 Verilog 와 VHDL 이다. HDL 은 2015 Dependable Software Laboratory 9
software를프로그래밍하는언어와매우유사하다. 오랜시간동안포트란, 파스칼, C 등의프로그래밍언어들이 SW의기능을기술하는데사용되어왔고비슷하게, 디지털설계영역에서도설계자들은디지털회로를표현하기위한표준언어의필요성을깨달게되었고, 이런이유로하드웨어표현언어인 HDL이등장하게되었다. HDL은개발자가하드웨어요소들에서발생하는반복성을모델링할수록해준다. 개발자는 HDL을이용하여기능구현에만초점을맞추어개발을진행할수있다. FPGA의물리적인 component나 connection은 HDL 프로그래밍에서는고려하지않아도된다. 차후 synthesis 도구나 P&R 도구가개발자가프로그래밍한기능적인부분과물리적인부분을자동으로연결해주기때문이다. 또한해당단계에서 high-level 언어를사용할수도있다. 하지만해당언어를 FPGA 와같은 hardware를개발하는데사용하기위해서는명확하고쉽게이해될수있도록 strict한 rules이잘정의된언어를사용해야한다. 예를들면 MISRA C (Motor Industry Software Reliability Association) 또는 ESA (European Space Agency) 의사용이가능하다. 2.2.1 Verilog Verilog는디지털회로를다루고 Verilog에서모듈은디지털회로의하나의컴포넌트를의미한다. 이러한컴포넌트는아주간단하게는게이트가될수있고 ALU나메모리와같은복잡한회로가될수도있다. 모듈은모듈내에필요한요소들을가지고있다는점에서그리고여러개의메소드로외부와인터페이싱된다는점에서 C++ 의클래스개념과유사하다. C++ 의클래스처럼모듈역시인스턴스화시킬수있지만, 모듈은 100% 클래스와같지는않다. 모듈을그래픽하게표현한다면여러개의포트를가지고있는하나의박스로표현할수있다. 포트는입력, 출력혹은입출력둘다가될수있으며, 포트는한개비트너비를가질수있고또여러개의비트너비를가질수도있다. 아래의그림은여러개의입출력을가진모듈을그린그림이다. 입력, 출력의숫자와그것들의너비와방향은모듈기능에의해전적으로종속된다. 포트는입력이나출력혹은양방향이될수있다. Verilog의기능을간단히말한다면모듈들을생성하고, 모듈을서로연결시키고, 상호동작의타이밍을관리하는것이라고볼수있습니다. [9] 2015 Dependable Software Laboratory 10
그림 5. Verilog 모듈 2.2.1.1 Verilog 특징 [10] - 전자회로및시스템에쓰이는하드웨어기술언어이다. 당연하지만베릴로그 HDL이라고도부른다. 회로설계, 검증, 구현등여러용도로사용된다. - C언어와비슷한문법을가진것이특징이다. 'if' 나 'for', 'while' 같은제어구조도동일하며, 출력루틴및연산자들도거의비슷한것등사용자들이쉽게접근할수있다. 다만, 블록의시작과끝을중괄호대신 Begin과 End를사용하여구분하고, HDL의특징인시간에대한개념이포함되었다는것등이다른점. - 좀더고수준언어 (high level language) 로서 System-verilog 라는언어가있다. 설계자성향에따라다르지만대부분의경우설계검증용으로사용한다. 상당히 C언어와흡사한형태를가지며새로운데이터타입도여럿추가되었다. 위에언급된 begin end 이외에도 fork join도추가되었다. - 본래는 Phil Morby가모의시험용언어로개발하였다. 1980년대말까지, 사실상의표준 HDL으로써독점소유였지만, 후에 IEEE 표준이되어버렸다. - VHDL과함께대표적인하드웨어기술언어. - 대부분의엔지니어는 VHDL이더쉽고직관적이라고평가하고있으나대한민국업계에선사실상 verilog가표준이다. - 1983년 Gateway Design Automation 사에서하드웨어기술언어인 HiLo와 C언어의특징을기반으로개발 - EEE 1364로표준화된 Verilog는전자회로및시스템에사용되는하드웨어기술언어로, 회로설계, 검증, 구현등여러용도로사용 - C 언어와비슷한문법 - if나 while, for loop 문과같은제어구조 / 연산자 : 논리 (&<^, ), 산술 (+,-,*,/) 2015 Dependable Software Laboratory 11
- C 언어와달리, HDL 의특징인시간에대한개념이포함 2.2.2 VHDL IC기술이발달로인해더많은소자를단일칩에집적화함에따라, 디지털시스템은더욱복잡해지고있다. 이렇게복잡해진디지털시스템을게이트나플립플롭레벨설계는많은시간이소비되고힘들다. 그러므로시스템설계에서하드웨어기술언어인 HDL(hardware description language) 사용의중요성이날로높아지고있다. VHDL은디지털시스템의동작과구조를기술하기위하여사용하는하드웨어기술언어이다. VHDL는 VHSIC Hardware Description Language의약어이며, VHSIC는 Very High Speed Integrated Circuit를의미한다. VHDL은상위의동작레벨에서부터하위의게이트레벨까지하드웨어를기술하고설계하는 IEEE 표준언어인하드웨어설계언어이다. VHDL은미국국방성에서직접회로관련업체들상호간에개발을위한정보교환및문서화를위해서표준화된하드웨어기술언어의필요성을인식하여초고속집적회로프로그램의일부로서만들어졌다. 이때당시 VHDL은하드웨어를설계하는언어이기보다는설계자의생각을표현및시뮬레이션하는정도의목적이더컸다. 이후여러차례표준화작업등을거쳐 1987년 12월에 IEEE-1076으로표준화가되었다. 이로인해 VHDL을이용하여회로를설계할수있는여러 CAD tool들이개발되기시작하였고또한많은디지털회로설계자들이 VHDL을이용하여회로를설계하기시작하였다. 현재는 VHDL 을실제회로로만들어주는합성툴 (synthesis tool) 의발달로인해설계자의생각을 VHDL 로표현하면합성툴이실제회로로만들어주고있다. 설계시간이단축되며그외에도여러 장점들이있다. [11] 2.2.3 VHDL 특징 [12] - 전자회로및시스템에쓰이는하드웨어기술언어이다. 당연하지만베릴로그 HDL이라고도부른다. 회로 - VHDL(VHSIC Hardware Description Languae) 은디지털회로의설계자동화에사용하는하드웨어기술언어 (hardware description language,hdl), 즉회로설계언어이다. 엄밀히말하자면프로그래밍언어는아닌데어차피요즘차이가점점모호해지는관계로그냥프로그래밍언어항목에끼워넣은듯하다 (?). - 본래개발목적은미국국방부에서주문형집적회로 (ASIC = Application Specific Integrated Circuit) 의문서화에사용하기위하여만든언어이다. 복잡한매뉴얼로사용자의뇌를아프게하는대신, 회로의동작내용을문서화하여설명하기위해개발된것. 그런데언제부터인가이런문서를회로디자인과정에서의시뮬레이션에사용하게되었고, 여기에재미들려서 VHDL 파일을읽어들여서논리합성후에실제회로형태를출력하는기능을 2015 Dependable Software Laboratory 12
덧붙이게되었다. 결국, 오늘날에는디지털회로의설계, 검증, 구현등의모든용도로사용하는중. - 기본적인베이스는본래 Ada의부분집합에시간개념 ( 디지털회로에필수적인 ) 을추가하는방식이었으나, IEEE 표준화작업을거치면서오늘날과같은형태와문법을가지게되었다. - Verilog와함께대표적인하드웨어기술언어이며, 최근은대부분의회사는고유포맷을이용하기보다는이두가지표준 HDL을사용하는추세. 2.3 Synthesis 합성이란 RTL로구현된추상적인회로 (Verilog 또는 VHDL로구현 ) 를실제 gate( 또는 standard cell) 들을통해구현하는과정이다. 여기서말하는게이트레벨이란 CMOS회로의 NAND, AND, INVERTER, Flip-Flop 등의각종게이트로구성되는것을말하며, 게이트의종류는물리적으로레이아웃된게이트의라이브러리를몇종류를갖고사용하느냐에의존한다. 예로 NAND 게이트경우, 게이트의입력의수가 2,3,4,5,8 개의입력을갖는게이트각각라이브러리로준비되어있어합성단계에서이용이가능하다. 설계과정에는셀라이브러리와공정에관한자료를반도체회사로부터제공받아이용한다. 원래는사용자가직접 gate level의 Netlist를작성해야하지만제품의사이즈와복잡도가증가로인해직접작성이불가능해졌다. 합성도구는사용자는사용자친화적언어인 HDL로제품을설계하면이를지동으로 Netlist 형태로변환해주게된다. 사용자가고려해야하는복잡한과정 (Optimization) 을대신해서수행해주며, 칩의 speed, cost, power 측면에서의최적화를자동으로수행해준다. 따라서, 사용자는위와같은복잡한고려없이디자인및설계에집중하여칩개발이가능해졌다고할수있다. 그림 6. 합성 2015 Dependable Software Laboratory 13
합성이해주는첫번째일은바로 Verilog 를이용하여구현한기능을게이트들을이용하여구현해 주는것이다. 합성이해주는두번째일은이디지털 ( 로직 ) 연산을이용하여구현된게이트와블럭들을 Standard Cell에미리선언되어있는각각의 Cell들과매칭을시켜주는것이다. 대부분의디지털연산에서는 AND, OR, AOI(AND+OR+Inverter) 등의 combinational logic과 D Flip Flop등과같은기본적인 Gate들의조합으로모든기능을구현할수있기때문에, 반복적으로사용되는이런 Cell들을일일이구현하지않도록 Fab ( 회로를실제반도체를통해구현해주는회사혹은기관 ) 에서는디지털라이브러리, 즉 Standard Cell을제공한다. 합성이해주는세번째일은합성시선언한조건들을이용하여구현뿐아니라안전성이나타이밍문제, 로드등다양한제한조건에맞도록구현한회로를수정해준다. 디지털회로시간에배우는 Fan-out이나 Drive의개념을알고계신분들은이해가편하시겠지만, 그렇지않은분들을위해아주간단히만설명하자면, 사이즈가최소로매우작은 Inverter의출력단이 1과 0을왔다갔다할때, 출력단에 1uF과같이엄청큰 load 캐패시터를동작시켜야한다면캐패시터의큰용량을다채우지못한채로충방전하는데많은시간과전하가필요해결국신호가사라져버린다. 입력이나출력단에얼마나큰캡이연결될지, 입력부터출력까지는몇주기이내로도착해야하는지, Setup Time이나 Hold Time이잘지켜져 data가 metastable한값으로빠지지는않는지, 모두합성시조건으로선언해줍니다. 이조건들을고려하여너무빨리 transition이일어나는곳은 Delay Buffer Cell을달고, 출력에서큰 load를 drive를해야한다면사이즈가매우큰 MOS를이용한 Flip-flop모델을이용하는등다양한조건에맞는회로를구현해준다. 요약하자면, 로직합성이란디지털회로를구현하는과정에서반복적이고사람이할경우완벽하지않을수있는과정들을 Design Compiler와같은컴퓨터프로그램에내장된알고리즘과최적화과정을통해구현하는것입니다. 따라서설계자는 Verilog로구현한디지털코드를자신의회로에맞는조건들을선언하여합성하면, Fab에서제공하는라이브러리에선언되어있는 Standard Cell들의조합으로회로를구현해주게된다. [13] 2015 Dependable Software Laboratory 14
그림 7. Basic synthesis flow (Synopsys 社 - Design Compiler) [14] 2.3.1 셀라이브러리 [15] RTL 설계와합성단계이후의과정의중요한차이점은각각공정에비의존적, 의존적이라는것이다. Verilog 를이용한설계의가장큰장점이바로공정에비의존적이라는것이다. 하지만, 이러한특징은 RTL 수준까지만적용된다. 합성을위해서는칩을제작하고자하는공정의정보가필요하며합성된회로는해당공정에서만사용할수있게된다. 공정의정보는셀라이브러리라고불리는형태를갖고있으며, 합성과 P&R 을하기위해서는반드시필요하다. 셀라이브러리가포함하고있는정보는그림 2 에서와같이합성에사용될셀 ( 로직게이트 ) 에대한특성 ( 속도, 크기, 등 ), 게이트레벨검증에필요한동작특성 (Verilog 모델 ), 그림 3 과같이 P&R 에사용될각각의셀의레이아웃이다. 이러한정보는해당공정을개발한회사의기밀자료이므로실제칩을제작 2015 Dependable Software Laboratory 15
할설계자들에게만제공되며, 외부에유출하지않겠다는서약서 (NDA: Non Disclosure Agreement) 를작성해야사용이가능하다. 합성을위해서는각 foundry에서제공하는 synthesis를위한 library가필요하며이 library 에는각 logic gate 의 timing, function, power 등의정보를포함하고있다. 설계자는이런정보를이용하여시스템 Spec에적절한 clock속도, 면적을얻기위한합성의과정을수행한다. 합성된 logic 은 gate level 의 Netlist로출력하여 SDF(Standard Delay Format) file과함께 prelayout simulation(timing simulation) 에서활용된다. 그림 8. 셀라이브러리 2.3.2 합성가능한 (synthesizable) 설계 [15] Verilog 는 HDL 이지만 Verilog 로기술한모든설계가실제회로로구현이가능한것은아니다. 그 이유는다음과같이정리할수있다. - Verilog 언어에서제공하는기능중회로 ( 또는시스템 ) 의모델링을위한기능은구현이불 가능하다. 예 ) 지연시간 (a=#10b), 트랜지스터수준의기술, 메모리등 2015 Dependable Software Laboratory 16
- 합성툴이지원하지않는경우 예 ) 나눗셈및 %(modulo) 연산은피연산자가모두상수인경우만합성가능 - 하드웨어로구현은가능하지만, 제한된면적을초과하거나목표성능 ( 동작주파수 ) 에미치 지못하는경우 그림 9. 합성가능한설계방법 Verilog 는실제회로로구현하는것이외에도모델링에도사용되므로매우많은기능을지원한다. 이기능들은 Verilog-XL 시뮬레이터에서는올바르게동작하지만, 합성이불가능하거나합성결과가 RTL 과다른동작을보이게된다. Verilog 에처음입문한사람들이공통적으로범하는실수는 C 언어로프로그램하듯이설계를하는것이며, 이런경우대부분합성이불가능하다. 성공적으로합성을하기위해서는마치로직게이트를이용하여회로를그리듯이 (schematic capture) Verilog 기술을해야한다. 즉, 회로를미리구상하고 Verilog 로기술하는것이다. 그렇다면, 합성툴이어떻게합성할지를미리예상하여 Verilog 기술을해야하는데이것은어찌보면참번거로운작업이다. 차라리 schematic capture 방식 (GUI 를이용하여회로를제작하는 ) 이더 2015 Dependable Software Laboratory 17
편한방법일수있을것이다. 하지만, 앞서설명한것처럼 Verilog 로설계된회로는공정에비의 존적이라는장점을갖고있으며, 합성툴에서다양한최적화를수행할수있다. 아래그림의예와같이먼저회로의구조를대략적으로설계한다. 이때, 조합논리회로 (combinational logic) 과순차회로 (sequential logic) 으로구분한다. 다음 Verilog 를이용하여조합논리회로는 assign 문을, 순차회로는 always 블록으로기술한다. 이를합성하면기본구조는유지되면서최적화된회로를얻게된다. 2.3.3 Synthesis 의장단점 - 설계사이클단축 설계변경용이, 설계오류가능성저하, 간단한기술방식, 빠른설계, 빠른변경 - 설계의질적향상 여러가지 architecture 시도가능 : 최적화 면적또는속도최적화가능 ( 논리합성기의기능 ) Timing analyzer 기능포함 (critical path delay, setup, hold time 계산 ) - 판매자, 기술 (technology) 에무관한설계가능 ASIC or FPGA 로구현가능 - 설계비용절감 설계기간단축, 스키메틱설계과정생략, 설계오류저하 Design reasability IP, Library 그대로또는수정해서사용가능 한 engineer가 30 ~ 40 k 게이트의설계담당기능 - 집적기술에따른성장 현재수백만게이트급설계 (SoC) 가능 고성능워크스테이션도움 논리합성, 시뮬레이션필수 - 논리합성결과, 자동생성된회로도면을이해하기어렵다. 합성도구성능에크게좌우된다 2.3.4 Commercial tool for logic synthesis (3rd party synthesis tool) 다양한합성도구들이 HDL code를 gate-level의표현으로변환해주기위해존재하고있다. 이런다양한합성도구는 HDL code를 digital logic으로최적화해주며, EDIF file이나 graphical (schematic) 형태를제공해준다. 대부분의합성도구는 FPGA-independent한 schematic을제공한다. 해당 schematic은 AND 나 OR, NOT 같은 gate와 flip-flops으로구성되어있다 - XST (delivered within ISE) by Xilinx - Quartus II integrated Synthesis by Altera 2015 Dependable Software Laboratory 18
- IspLever by Lattice Semiconductor - Encounter RTL Compiler by Cadence Design Systems - LeonardoSpectrum and Precision (RTL / Physical) by Mentor Graphics - Synplify (PRO / Premier) by Synopsys - BlastFPGA by Magma Design Automation 2.4 Gate-level Design 합성의결과로나오는 gate level netlist 를보통 pre (layout) netlist 라고부르고, Netlist 의형태는 Verilog 또는 EDIF 등을주로사용합니다. 여기서말하는게이트레벨이란 CMOS 회로의 NAND, AND, INVERTER, Flip-Flop 등의각종게이트로구성되는것을말한다. 회로설계자들이원하는기능을만족하는회로를만들때사용하는방법이 HDL 언어로구현을하거나 CAD 툴을써서직접회로를그리는방법이다. 이때, HDL 언어를사용하는경우보통사람들이구현하기쉬운방법으로사용하기때문에실제하드웨어에적용해야하는경우 ( 예를들면칩으로구현하는경우 ) 회로합성 (Synthesis) 과정을거치게된다. [16] 예를들면 : c = a + b; 와같은표현은하드웨어가알기에는너무높은수준의언어이다. 따라서이를회로적으로나타내기위해서는 a와 b를입력으로하는 adder( 덧셈기 ) 를하드웨어적으로표현해야한다. 결국회로합성툴을사용하게되면위예에서보여주는구문은 1비트입력 2개를사용하는덧셈기 (adder) 로구성하는회로의그림을보여주게된다. 이러한과정을회로합성과정이라하고, 입력과출력그리고이들이사용하는 adder 의형태을 가리켜 netlist 라고한다. 여기서 synthesis 결과는하나의파일형태로나오는데이를 netlist 파일 이라고한다. 파일내용에는 c = add_1(b,a); 와같은내용으로표현되게된다. 물론 CAD 툴을사용하는경우에는 circuit 자체가 netlist 파일로 표현이된다. 이렇게만들어진 netlist 파일은 layout 과정을통해실제칩으로구현가능한형태 의 circuit netlist 를도출하게된다. 2.5 Place and Routing P&R 과정은후단계설계 (bacj-end) 라고도부르며설계된회로를반도체공정에사용되는레이아 2015 Dependable Software Laboratory 19
웃으로만드는과정을말한다. 또한, 논리합성을통해생성된게이트수준 netlist를매스크제작에사용될레이아웃도면으로변환하는과정을말한다. 칩제작공정에맞게미리설계된표준셀라이브러리 (standard cell library), RAM, ROM 등의매크로셀, I/O 패드셀과설계자가지정한타이밍조건을적용하여최적화된레이아웃도면을생성하게된다. Mapping된각설계블록들을 FPGA의특정논리블록위치에지정하는단계를배치 (Placement) 라한다. 배치된각블록들을회로의연결정보에따라연결선및전기적스위치를사용하여상호연결하는단계를배선 (Routing) 이라고한다. 배치와배선은그결과가상호의존적인작업이다. 좋은배치는좋은배선을보장한다. 좋은배선이란회로가칩내에서 100% 배선을이루면서, 각논리를연결하는와이어의연결경로가가능하면짧게되어신호의지연시간의작게되도록하는것이다. 이렇게되기위하여서는연결도가많은회로들은인접된논리블록에배치되고외부로출력되는신호를가진블록들은입출력셀과가까운쪽에위치하게되도록배치가일어날것이다. 그림 10. Placement & Routing Flow 위그림은 Placement & Routing Flow를나타낸것이다. Logic synthesis및technology mapping을수행한후얻어진 netlist 파일과 FPGA architecture description file을입력으로받는다. Timing, criticality 정보와 pre placed/routed된블록들을고려하며, delay 및 power와같은제약조건을만족시켜 placement and routing을수행하게된다. 2015 Dependable Software Laboratory 20
3 Verification and Validation 그림 11. FPGA V&V Activities 3.1 Simulation 설계한논리회로를하드웨어를이용해서검증하는경우에, 처리하는데이터량이많거나속도가빠를경우에는검증하는데시간이많이걸리고그원인을파악하지못하는경우가있기때문에소프트웨어적으로먼저검증하는것이필요하다. 시뮬레이션을지원하는도구들에서는이를위해파형으로검증하는시뮬레이션을제공하는데, 이시뮬레이션에서동작하는데필요한입력파형의조건을설정해주면그에따른출력결과의파형이출력되어쉽게확인해볼수있다. 시뮬레이션을하기위해서는설계모듈뿐만아니라 Test Bench를작성필요하다. Test Bench 란설계한모듈을포함하여테스트입력을인가하는모듈이고, 매 clock cycle 마다제대로동작하는지 simulation vector라는 input data를넣고 output data가 specification 대로나오는지확인하게된다. 2015 Dependable Software Laboratory 21
3.1.1.1 Simulation 의단점 - Simulation은느리다 - 모든경우의수를확인하는것은불가능 - 따라서충분한 Coverage 또는 Corner Case 를커버하는 Test bench의작성이중요 - 회로의기능을정확하게검증할수있는의미있는시뮬레이션입력벡터의생성이중요 - 특정기능이나특성을목표로하는입력벡터들은설계자가알고있는입력공간의영역으로편향되기때문에설계자가알지못하는영역에서버그들이종종발생하게됨 3.1.1.2 Behavior Simulation (Functional Simulation) HDL로기술된 code는그기능을검증하기위해 simulation이필요하다. 이때 HDL simulator를사용하게된다. 통용되는 simulator 로는 Cadence 사의 NC-sim, Synopsys 사의 VCS-MX Mentor 사의 Model-sim 등이다. 예전에는 VHDL, Verilog HDL language를각각의 simulator(verilog -XL, VCS, VSS) 를사용하여 simulation 하였으나현재는 Mixed language를 test 할수있는 simulator가일반적으로사용되고있다. 나아가 Mixed signal(analog-digital 혼성모드 ) 을 simulation 할수있는 CAD tool도속속출시되어 design verification methodology의향상에큰기여를하고있다. 기능적검사는대부분의다른설계도마찬가지겠지만검증은반도체칩설계에서가장중요한부분이다. Software야잘못되면 patch를 release한다거나할수있지만 hardware가잘못되면 chip을다시만들어야하기때문이다. 문제는 chip을만드는비용이상당히비싸기때문에, 검증을통해서될수있으면 error가없도록만들어야한다. [17] 검증방법으로는가장중요한것은 simulation 이다. HDL 은 hardware description 뿐아니라 2015 Dependable Software Laboratory 22
simulation 을위해서도사용된다. 보통 test bench 라고불리는 HDL program 을작성하는데쉽게 말하면 C 언어의 main 함수라고생각하면편하다. 매 clock cycle 제대로동작하는지살펴보기위 해서 simulation vector 라고해서 input data 를만들어서넣어주고 output data 가 specification 대 로나오는지살펴보는 program 을작성하게된다. HDL 을 simulation 하기위해서별도의 simulation tool 이있는데다음과같은것을많이사용한다. - Cadence 의 ncsim(ncverilog) - Mentor Graphics 의 modelsim - Synopsys VCS 3.1.1.3 Logic Simulation (Gate-Level Simulation) FPGA를이용해서 Project를진행하면서합성을한후에실시하는 Post-synthesis Simulation은 Timing이아닌 Function simulation이라고봐야한다. 그이유는합성툴에서만들어주는 Netlist 는 Timing data가없는 Function에대한부분만, 즉, Logic에대한기능적인부분만을포함하는것이대부분이기때문이다. 그렇지만합성후에 Simulation을한다는것은 RTL source code를합성툴이맞게합성을했는지를검증해보는것이다. 하지만종종합성후에는내가보고자하는신호들이 Optimize 되어서 Netlist에는안나타나는경우가있다. 그래서합성후에 Simulation 단계에서내가체크해보고자하는신호들이 Optimize 되어서다른이름으로바뀌거나보이지않게되는것을합성툴에서막아줄필요가있다. 합성이끝나고 timing 검증및 test 를위한 design 을삽입하고나면 physical layer 로 place & route 를하기전최종적인검증이필요하다. 이과정을 Gate-Level Simulation 이라한다. Gate Level simulation 을위해서는 foundry 에서제공하는 simulation 을위한 library 가필요하다. 이 library 에는각 gate의 function 과기본적인 timing 정보가포함되어있다. 그리고 SDF file과 gate 수준으로합성된 Design Netlist 가필요하다. 여기서 SDF file은 synthesis 단계에서사용된 Wire load model 에기초한 Interconnect Delay를포함하고있어 functional simulation 에비해정확성이높은 simulation 결과를얻을수있게한다. 현재대다수 foundry 에서는보다정확은 SDF file 의추출을위해 Cubic( 삼성 ), Vela2( 하이닉스 ) 와같은 In-house tool을개발하여사용하고있다. Gate-Level Simulation 을위해사용되는대표적인 CAD tool 로는 functional simulation 에서와같은 NC-sim, VCS-MX, Model-Sim 이대표적이다. 2015 Dependable Software Laboratory 23
3.1.2 Equivalence Checking Equivalence Checking은상호다른두디자인간의 functional equivalence 를체크하는방법이다. Netlist 가원래의 RTL 코드를정확하게구현하였는가를검증하기위해사용 ( 또는, Layout이 Gate-Level Netlist를정확하게구현하였는가?) 된다. 만약 Synthesis Tool을완전하게믿는다면 EC 는필요하지않다. 하지만, 대부분의 Synthesis Tool 들이좋은성능을보여주지만, 이런시스템도밝혀지지않은오류가존재할수있기때문에검증이필요하다. EC 장점 - 효율적인검증 테스트벤치를생성할필요가없다. - 효과적인검증 시뮬레이션에비해속도가빠르다. - 정형검증 가능한모든입력에대해확인이가능하다. 시뮬레이션기반방법론을사용하는것은불가능하다. - 특히, ECO (Engineering change orders) 경우에사용하면효율적 ECO 개발자게의해기능은동일하지만보다효율적인설계등의목적으로 HDL 또는 Netlist를수동으로변경하는것 이럴경우원래의기능이변경되었는지확인해볼필요가있는데, ECO의경우내부적인 Structural 변경이크지않기때문에 EC 를사용하기적절. 지원 Tools - FormalPro by Mentor Graphics / Conformal by Cadence / Jasper Gold by Cadence / Formality by Synopsys / Conformal LEC by Cadence Design Systems / Quartz Formal by Magma Design Automation / 360 EC by OneSpin Solutions 현재사용가능한다양한상용 EC 도구들이존재한다. 하지만, 해당도구들이모든 Synthesis 의결과물을검증하지못한다. 다시말해 Synthesis 도구와 IDEs 환경에따라검증가능한 EC 도구가따로있다고말할수있다. 예로, 현재 Synplify Pro + Actel Libero SoC 환경을지원하는 EC 도구가없다. 2015 Dependable Software Laboratory 24
3.1.3 Static Timing Analysis 현재의복잡한 Design 은 gate level 의 HDL simulation 으로는 market 의시간적요구에부합할수 없다. 그렇게때문에 Logic 의검증을위해여러가지방법론이제시되고있다. 그대표적인것이 STA(Static Timing Analysis), Formal Verification 이다. STA는각논리 gate 가요구하는 setup, hold time, clock skew를 SDF, SPF, DSPF 등의 delay정보를고려하여측정하고 IC에서발생할수있는 timing에대한문제를사전에처리해주는기능을한다. 그리고전체 Design의 Critical path를지정해주어 Design Debug, 성능향상에도움을주는과정이다. 또한 Timing Driven Layout 의 timing source 가되는 SDC file을출력해주기도한다. STA를위해업계에서통용되는 tool 은 Synopsys 사의 Primtime이며최근에는 Primtime SI를출시하여 crosstalk, IR drop으로인해발생하는 noise(glitch) 해석까지지원하는확장된기능을제공하고있다. Timing analysis는 FPGA 개발에있어타이밍과동작기능은항상같이고려해야할문제이다. STA 는 IC에서발생할수있는 timing에대한문제를사전에처리해주는기능을한다. STA는실제수행없이회로의 delay 시간을계산하여 Violation을확인가능하며, 설계자가원하는 timing(clock 주파수나, delay 등 ) 이제대로맞는지검증한다. 간단한타이밍위반 (timing violation) 예로두가지가있다. 1. Setup timing violation 합성 Constraint 가너무타이트한경우발생. 합성된결과가클럭주기보다도큰딜레이를갖는 Combinational logic 을가질때. 어떤 rising edge 에서 data 값을인식하기위해서는 data 는 clock rising edge 보다이전에유효한값을일정시간동안가지고있어야함. 2. Hold timing violation 2015 Dependable Software Laboratory 25
hold time 동안은유효한데이터가계속변하지않고유지되어야함. 예를들어상승에지에동작하는플립플롭이입력값을인지하기도전에입력이바뀌면 hold time violation이발생. 아래는홀드타인요구조건이 1ns인경우이며, 이러한경우에는클럭상승에지를기준으로최소 1ns동안은값을유지하고있어야함. 그림 12. Setup time and Hold time 그림 13. Timing violation 과해결책 3.1.4 Layout Verification Layout Verification 은 DRC(Design Rule Check) 와 LVS(Layout Versus Schematic) 로나뉜다. DRC : Design Rule은주어진공정에서필요한모든마스크에대한최소크기와주변레이어들사이의간격등마스크생성을위한공정기술을고려한규정들이다. Layout은이러한 Design 규칙에맞게설계되어야하고설계자의실수에의해 Design 규칙에어긋난부분을검사하고잘못된부분 2015 Dependable Software Laboratory 26
을지적해주는과정을 DRC(Design Rule Check) 라한다. LVS : 설계하고자하는회로의스키메틱디자인을통하여추출된 Netlist와 Layout에서추출된 Netlist는설계상의오류를통해상이한점이발견될수있다. 이는실제 device 가나왔을때 simulation와같은동작을보장할수없다는것을뜻한다. 그리고그원인은 Layout에서찾을수있을것이다. 그러므로이런오류를정정하기위한 Check 과정이필요하고이과정을 LVS(Layout Versus Schematic) Check 라한다. 이런일련의과정을 Layout Verification 이라하고이런과정을수행하기위해 CAD tool을사용하는데일반적으로 Mentor사의 Calibre(DRC, LVS), Cadence사의 Dracula, Diva(DRC, LVS) 를사용한다. 4 Others 4.1 IP [18] IP(Intellectual Property) 의문자그대로의의미는 지적재산 ( 자산 ) 으로서일반적으로발명, 디자인, 표장, 저작물등인간의지식활동으로부터나온무형의지적결과물 ( 또는이를보호하는지식재산권 ) 을의미하는것으로널리사용되고있지만, 반도체업계에서는 반도체집적회로의설계시독립적인기능을가지고재이용이가능한기능블록 ( 반도체설계모듈 ) 을말한다. 즉, IP란반도체회로의로직 LSI을구성하기위하여필요한기능을하드웨어와소프트웨어의상태로정리한블록을말하는것으로칩의코어셀 ( 기능블록 ) 과그코어셀을구동하기위한디바이스드라이버, 소프트웨어, 펌웨어등을포함한다. 다만, 반도체업계에서사용하는 IP라는용어는용어로서반드시통일된것은아닌데, IP표준화단체인 VSIA에서는 IP대신 VC(Virtual Component) 라는용어를사용하고, 데이터퀘스트는 SLM(System Level Macros) 이라는용어를사용하기도한다. IP제공형태에따른분류 : IP는통상적으로 hard IP, firm IP, soft IP 의 3가지로구분하는데, 이는 LSI 의전통적인설계과정에서생기는성과물을기준으로구분한것이다. 따라서, LSI설계과정에대하여간략히살펴볼필요가있다. LSI의개발은트랜지스터의형상과그사이의배선을미세가공기술로써칩표면에새기는 LSI제조공정 과이러한트랜지스터의형상과배선즉, 레이아웃디자인을도출하기위한 LSI설계공정 으로크게나눌수있다. 한편,LSI설계공정의전 ( 前 ) 단계로 시스템설계공정 이필요한데3), 시스템설계공정에서는가격이나소비전력, 속도등의기본적성능에대한시스템의요구사항4) 을고려하여사양을결정하고, 어떠한기능을하드웨어로하고어떠한기능을소프트웨어로할것인가의분담을결정하는기능분할설계를한다. 2015 Dependable Software Laboratory 27
4.2 HIL (High Level Synthesis) 4.2.1 LabVIEW FPGA Module HLS를통해각분야의전문가들은 ANSI C, C++ 또는 LabVIEW 코드와같은고급언어를사용하여 FPGA(field-programmable gate array) 를프로그래밍하는데최적화된알고리즘을개발할수있습니다. HLS는많은사람들이 FPGA 설계생산성을높여야하는필요성이대두됨에따라각광받고있습니다. 전통적인 FPGA 설계툴을사용하는경우, HDL에익숙해야하며전체프로세스단계를분석하고그유효성을검사해야합니다. 하지만개발자의능력은 FPGA와같은속도로증가하지않으므로어플리케이션의복잡성이늘어날수록개발주기도길어질수밖에없습니다. 고급언어를사용할수있다는것은더많은사람들이짧은기간동안 FPGA의성능을활용할수있음을의미합니다. FPGA 툴업계는 HLS가이러한비전을현실로만드는방법으로보고있습니다. NI는최근에 Xilinx의 HLS 기술을사용하여 NI LabVIEW FPGA Module의애드온인 LabVIEW FPGA IP Builder를개발했습니다. 이애드온을통해 HLS 기술과 LabVIEW 및 RIO 하드웨어의성능을결합하면고성능 FPGA IP를쉽게생성할수있습니다. 또한 LabVIEW FPGA가원하는기능을제공하지못할때또는기능이성능요구사항을충족하지못할때최적화된 IP를쉽게만들수있도록지원하여 LabVIEW FPGA 설계환경의기능을보완합니다. 코드와설계지시문의분리를통해코드재활용률을크게개선할수있는기회가생깁니다. 코드의유효성을한번검사한후에는동일한코드를사용하여성능과리소스요구사항이변하는여러어플리케이션을해결할수있습니다. 코드를변경하지않고도코드유효성검사에필요한시간을줄일수있는것입니다. 2015 Dependable Software Laboratory 28
4.2.2 CyberWorkWench CyberWorkWench 의기본개념은두가지이다.. 1. All-modules-in-C - 모든모듈은 C로작성된다. - RTL이나 netlist는 black box로여기겠다. 2. All-processes-on-C: - synthesis 와 verification은 C source code 에서수행한다. - 예를들면, compiler 된 machine language (ex,. assembler) 를검증하지않듯이 / synthesis 가된 RTL을검증할필요가없다 - 모델체킹또는시뮬레이션은 C level 에서하면된다. 그래서 CyberWorkWench 는대략다음과같은내용을지원 1. C를 RTL로변환 2. functionality 검증을 C 레벨에서검증가능하도록지원 ( 내부적으로 RTL 레벨을검사하지만사용자는 C 레벨에서검사가능하게지원 ) 3. performance 를 RTL 레벨에서검증가능하도록지원 ( 역시사용자는 C source code로검사 ) 4. Testbench Generator 5. Formal verification tool 따라서, C description이오로지유인한 final description language로역할을하게된다. 2015 Dependable Software Laboratory 29
참고문헌 [1] 지식백과, Naver, 2015. [ 온라인 ]. Available: http://terms.naver.com/entry.nhn?docid=2079654&cid=50305&categoryid=50305. [2] 빛. 복음의, Naver blog, 2006. [ 온라인 ]. Available: http://blog.naver.com/ahinoam75/50001681508. [3] 김세중, [ASIC 설계의기초 2]-FPGA 란무엇인가?, 2005. [ 온라인 ]. Available: http://www.semiclub.co.kr/jboard/?p=detail&code=infomall003&id=107&page=2. [ 액세스 : 2015]. [4] 진선옥, 대용량 FPGA, 시스템설계대체, 2000. [ 온라인 ]. Available: http://www.pldworld.com/html/technote/nikkei200004.htm. [ 액세스 : 2015]. [5] wiki, 2015. [ 온라인 ]. Available: https://ko.wikipedia.org/wiki/fpga. [6] saffroncrocus, FPGA 이야기, [ 온라인 ]. Available: http://fpga.tistory.com/28. [7] J. Ranta, The current state of FPGA technology in the nuclear domain, VTT, 2012. [8] 김인수, VHDL 의개요 (ppt), sungkukwan university, 2015. [9] 가치창조기술, [FPGA 와 Verilog 초보자가이드 2] 모듈, 2015, [ 온라인 ]. Available: http://wiki.vctec.co.kr/devboard/fpga/spartan-3a-fpga-gaebalbodeu--elbert/module. [ 액세스 : 2015]. [10] 나무위키, verilog, 2015. [ 온라인 ]. Available: https://namu.wiki/w/verilog. [ 액세스 : 2015]. [11] 에. 떠돌이, VHDL?, 2015. [ 온라인 ]. Available: http://blog.naver.com/shl0309/100010353747. [ 액세스 : 2015]. [12] 나무위키, VHDL, 2015. [ 온라인 ]. Available: https://namu.wiki/w/vhdl. [ 액세스 : 2015]. [13] operands, 디지털합성 (Synthesis) 이란무엇인가, 2012. [ 온라인 ]. Available: http://blog.naver.com/ner34/40153810007. [ 액세스 : 2015]. [14] Synopsys, Design Compiler User Guide, 2011. 2015 Dependable Software Laboratory 30
[15] 배영돈, 마이크로프로세서설계무작정따라하기, 2002. [16] karakkangsik, Netlist, 2007. [ 온라인 ]. Available: http://blog.naver.com/karakkangsik/130020943125. [ 액세스 : 2015]. [17] holelee, RTL Engineer 가본반도체칩개발과정, 2009. [ 온라인 ]. Available: http://blogspot.designonchip.com/2009/10/rtl-engineer.html. [ 액세스 : 2015]. [18] 이경란, 반도체설계재산의향후전망및보호방안연구, 이지국제특허법률사무소, 2005. 2015 Dependable Software Laboratory 31