1

Similar documents
MAX+plus II Getting Started - 무작정따라하기

Orcad Capture 9.x

DE1-SoC Board

歯Intro_alt_han_s.PDF

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

ISP and CodeVisionAVR C Compiler.hwp

CD-RW_Advanced.PDF

Remote UI Guide

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

슬라이드 1

PRO1_04E [읽기 전용]

C# Programming Guide - Types

API 매뉴얼

_USB JTAG Ver1.0 User's Manual.hwp

Copyright 2012, Oracle and/or its affiliates. All rights reserved.,.,,,,,,,,,,,,.,...,. U.S. GOVERNMENT END USERS. Oracle programs, including any oper

C. KHU-EE xmega Board 에서는 Button 을 2 개만사용하기때문에 GPIO_PUSH_BUTTON_2 과 GPIO_PUSH_BUTTON_3 define 을 Comment 처리 한다. D. AT45DBX 도사용하지않기때문에 Comment 처리한다. E.

10X56_NWG_KOR.indd

VOL /2 Technical SmartPlant Materials - Document Management SmartPlant Materials에서 기본적인 Document를 관리하고자 할 때 필요한 세팅, 파일 업로드 방법 그리고 Path Type인 Ph

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

Microsoft Word - Modelsim_QuartusII타이밍시뮬레이션.doc

PRO1_09E [읽기 전용]

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

Quartus-Manual_Kor.PDF

Microsoft PowerPoint - ICCAD_Analog_lec01.ppt [호환 모드]

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Mentor_PCB설계입문

歯Chap1-Chap2.PDF

디지털 ASIC 설계 (1주차) MAXPLUS II 소개 및 사용법

SRC PLUS 제어기 MANUAL

s SINUMERIK 840C Service and User Manual DATA SAVING & LOADING & & /

Chapter 1

tut_modelsim(student).hwp

untitled

,,,,,, (41) ( e f f e c t ), ( c u r r e n t ) ( p o t e n t i a l difference),, ( r e s i s t a n c e ) 2,,,,,,,, (41), (42) (42) ( 41) (Ohm s law),

Interstage5 SOAP서비스 설정 가이드

목차 1. 제품 소개 특징 개요 Function table 기능 소개 Copy Compare Copy & Compare Erase

PRO1_02E [읽기 전용]

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

T100MD+

USER GUIDE

WebPACK 및 ModelSim 사용법.hwp

PowerChute Personal Edition v3.1.0 에이전트 사용 설명서

Microsoft Word - ASG AT90CAN128 모듈.doc

4 CD Construct Special Model VI 2 nd Order Model VI 2 Note: Hands-on 1, 2 RC 1 RLC mass-spring-damper 2 2 ζ ω n (rad/sec) 2 ( ζ < 1), 1 (ζ = 1), ( ) 1

Install stm32cubemx and st-link utility

Dialog Box 실행파일을 Web에 포함시키는 방법

FPGA 개념 q FPGA (Field Programmable Gate Array)? v 사용자가현장에서직접프로그램가능한소자 v 기본적인논리게이트, 플립플롭, 메모리등을구현가능 v 수십개 ~ 수백만개의소자를포함하는규모 v 개발기간이짧고회로동작을바로검증할수있어개발초기에사

PowerPoint 프레젠테이션

Copyrights and Trademarks Autodesk SketchBook Mobile (2.0.2) 2013 Autodesk, Inc. All Rights Reserved. Except as otherwise permitted by Autodesk, Inc.,

APOGEE Insight_KR_Base_3P11

untitled

歯15-ROMPLD.PDF

MPLAB C18 C

Slide 1

ºÎ·ÏB

Microsoft PowerPoint - AME_InstallRoutine_ver8.ppt

00 SPH-V6900_....

휠세미나3 ver0.4

vm-웨어-앞부속

다음 사항을 꼭 확인하세요! 도움말 안내 - 본 도움말에는 iodd2511 조작방법 및 활용법이 적혀 있습니다. - 본 제품 사용 전에 안전을 위한 주의사항 을 반드시 숙지하십시오. - 문제가 발생하면 문제해결 을 참조하십시오. 중요한 Data 는 항상 백업 하십시오.

#KM-235(110222)

Mango220 Android How to compile and Transfer image to Target

untitled

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

chapter4

본문서는 초급자들을 대상으로 최대한 쉽게 작성하였습니다. 본문서에서는 설치방법만 기술했으며 자세한 설정방법은 검색을 통하시기 바랍니다. 1. 설치개요 워드프레스는 블로그 형태의 홈페이지를 빠르게 만들수 있게 해 주는 프로그램입니다. 다양한 기능을 하는 플러그인과 디자인

Microsoft PowerPoint - ICCAD_Digital_lec02.ppt [호환 모드]

ETL_project_best_practice1.ppt

목차 제 1 장 inexio Touch Driver소개 소개 및 주요 기능 제품사양... 4 제 2 장 설치 및 실행 설치 시 주의사항 설치 권고 사양 프로그램 설치 하드웨

Microsoft Word - Armjtag_문서1.doc

Copyright 0, Oracle and/or its affiliates. All rights reserved.,.,,,,,,,,,,,,.,...,. U.S. GOVERNMENT RIGHTS Programs, software, databases, and related

Libero Overview and Design Flow

DR-M140 사용 설명서

untitled

2011년 10월 초판 c 2011 Sony Corporation. All rights reserved. 서면 허가 없이 전체 또는 일부를 복제하는 것을 금합니다. 기능 및 규격은 통보 없이 변경될 수 있습니다. Sony와 Sony 로고는 Sony의 상표입니다. G L

The Self-Managing Database : Automatic Health Monitoring and Alerting

4S 1차년도 평가 발표자료

Product A4

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

untitled

untitled

MS-SQL SERVER 대비 기능

PowerPoint 프레젠테이션

Microsoft PowerPoint - CPLD_수정1.pptx

#KM560

K7VT2_QIG_v3

DocsPin_Korean.pages

Copyright 2012, Oracle and/or its affiliates. All rights reserved.,,,,,,,,,,,,,.,..., U.S. GOVERNMENT END USERS. Oracle programs, including any operat

MCM, PCB (mentor) : da& librarian jakup & package jakup & layout jakup & fablink jakup & Summary 2 / 66

Something that can be seen, touched or otherwise sensed

(SW3704) Gingerbread Source Build & Working Guide

CPX-E-EC_BES_C_ _ k1

Microsoft Word - Automap3

Manufacturing6

슬라이드 1

歯DCS.PDF

API 매뉴얼

Transcription:

MJL Technology, Ltd. / Logic Design 메모 메모 (Technical) Document No.: MJL-LD-AN-10 Author: 양창우 [cwyang@mjl.com] Version: 1.0 Date: 2001 년 3 월 30 일 Subject: LeonardoSpectrum 을사용하여 LPM Function 이사용된 Verilog-HDL Code 합성하기 (APEX 20K/E 를중심으로 ) ALTERA 에서제공하는 LPM Function 은복잡한 Logic 을별다른노력없이단시간에만들수있으며, 또한일정한 Performance 를제공해주는잇점이있다 LPM 자체에관한자세한내용은 ALTERA 의 Website (Library of Parameterized Modules (LPM) - http://www.altera.com/products/software/sfwlpm.html) 에서찾아볼수있으므로생략하고여기에서는이러한 LPM Function 을 Verilog-HDL 에어떠한방법으로삽입을할수있는지그리고그 Source 를 ALTERA 가아닌외부논리합성툴에서어떻게합성을하는지를설명한다 Target Device 는 APEX 20KE 로가정한다 LPM Function 은 LPM_RAM_DQ 를사용한다 Verilog-HDL 합성은 Exemplar Logic 사의 LeonardoSpectrum for ALTERA Level1 2000.1b 를사용한다 합성후생성된 EDIF Netlist 를받아서 Fitting 하는 Software 는 Quartus II 1.0 + Service Pack 2 를사용한다 여기서구현하는회로는아래의 Schematic 과같이 LPM_RAM_DQ 로구현된 256x8 용량의 Memory 이다 ( 아래의그림에서 ram256x8 로표시되는부분이 LPM Function 으로구현된부분이다 ) 달랑 Memory 만들어있는간단한회로를예로든것은나중에 Quartus II 를이용한 Compile 후실제로 256x8bit Memory 가 APEX 20KE Device 의 ESB (Embedded System Block) 에구현이되었는지를쉽게확인하기위한목적도있다 Page 1

기본개념 사용자들이제일많이착각을하는부분이있다 다름이아니라 LPM Function 으로구현된부분까지도논리합성툴을사용하여합성을하는것으로인식을하고있다는것이다 몇몇사람은 LPM 부분까지모두합성을하여잘사용하는중이라고하는경우도있는데, 이건어디까지나운이좋아서된것이지올바르게사용했다고는볼수없다 일단가장중요한개념은 LPM Function 은합성시사용되는것이아니라 Fitting 시적용된다는점이다 1. 사용자의 Verilog-HDL 구문내에 LPM Function 이사용되었슴을알리는 Module 선언부분만이들어간다 이것을논리합성툴을사용하여합성을하면, 합성툴에서는 LPM Function 이선언되어있는부분을인지하고 Black Box 로처리해버린다 ( 즉, 입출력 Port 만정의하고내용은공란으로처리한다 ) 2. 합성이완료되면결과물로 EDIF Format 의 Netlist 가생성된다 ( 일반적인경우 ) 3. Netlist 를사용하여 ALTERA Quartus II 에서 Project 를생성하고 Compile 을수행한다 Compile 과정중합성툴에서 Block Box 로처리된부분이무엇인가파악하고 LPM Function 이라면이때관련된 LPM Function 의기능을추가 ( 구현 - Implementation) 한다 이러한개념을가지고아래의단계를진행한다 MegaWizard Plug-In Manager 의실행 Quartus II 를띄운후 Tools -> MegaWizard Plug-In Manager 를실행한다 (Figure 1 참조 ) Figure 1 MegaWizard Plug-In Manager... Figure 2 는 MegaWizard Plug-In Manager 의초기화면이다 우리는새로운 LPM Function 을만들것이므로 Create a new custom megafunction variation 을선택하고다음으로넘어간다 Page 2

Figure 2 새로운 LPM Function 을만들기위한초기화면 Figure 3 은어떠한종류의 LPM Function 을만들것인지, 어떠한 Type 의결과파일을만들지, 어느폴더에어떠한이름으로저장할지등을물어보는그림이다 여기에서는 RAM256x8 이라는이름으로 LPM_RAM_DQ 를만든다고지정하였다 Figure 3 LPM Function 의선택 Page 3

우리는맨처음의그림에서와같이 256x8bit Size 의 RAM 을만들것이므로 LPM_RAM_DQ 를선택한다 또한 Verilog-HDL 에서사용할것이므로 Output File Type 은 Verilog HDL 로선택한다 Output File 이저장될위치는논리합성툴이 Netlist 를생성해낼폴더를지정하면된다 그다음으로나오는화면은입 / 출력 Parameter 를지정하는화면이다 Figure 4 처럼지정한다 Figure 4 입 / 출력 Parameter 의지정 Figure 5 는지금만들고있는 RAM Memory 의초기값지정여부를묻는그림이다 LPM_RAM_DQ 로만드는 RAM Memory 가일반 RAM Memory Device 와다른점은여기에있다 일반 RAM 은초기값이모두 0 이되지만, LPM 으로만드는 RAM 은마치 ROM 처럼초기값을넣어줄수가있는것이다 만약초기값을넣어주려면, Yes, use this file~~~ 를선택하고 Intel HEX Format 이나 ALTERA 자체 Format 인 MIF 형식으로작성된파일을지정해주면된다 ( 두가지모두일반 ASCII 형식임 ) 화면하단의 Implement logic cells only, even if the device contains EABs or ESBs 는내부 Memory Block 이있는 FLEX 10K 나 APEX 20K 의경우 LPM_RAM_DQ 를일반사용자 Logic 이구현되는 Logic Element 를사용하여구현하라는 Option 인데, 유용성여부는사용자자신의판단에달려있다 Page 4

Figure 5 Memory 내부의초기값설정 Figure 6 은 MegaWizard Plug-In Manager 의최종화면으로 Finish 버튼을누르면지금까지설정한값대로 LPM_RAM_DQ Function 이생성된다 Figure 6 MegaWizard Plug-In Manager 의최종화면 이상과같이작업을하면우리가원하는 256x8bit 의 RAM Memory Block 이완성된다 완성된후결과파일이저장된폴더를열어보면총 6 개의파일이생성된것을확인할수있다 Page 5

ram256x8.bsf / ram256x8.cmp / ram256x8.inc / ram256x8.v / ram256x8_bb.v / ram256x8_inst.v *.bsf 파일은 Schematic 작업시사용되는 Symbol 파일이고, *.cmp 파일은 VHDL Coding 시사용되는 Component 구문이정의된파일이며, *.inc 는 AHDL Coding 시사용되는 Function 이정의된파일이다 *.v 파일들이실제로 Verilog-HDL 로작업할때사용되어지는파일들이다 ram256x8.v 는 Quartus II 가 Compile 시실제로참조하는파일이고, ram256x8_bb.v 와 ram256x8_inst.v 는사용자 Verilog- HDL Code 에삽입되어져야할부분이정의된파일들이다 ram256x8.v 파일 // megafunction wizard: %LPM_RAM_DQ% // GENERATION: STANDARD // VERSION: WM1.0 // MODULE: lpm_ram_dq // ============================================================ // File Name: ram256x8.v // Megafunction Name(s): // lpm_ram_dq // ============================================================ // ************************************************************ // THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! // ************************************************************ //Copyright (C) 1991-2001 Altera Corporation //Any megafunction design, and related net list (encrypted or decrypted), //support information, device programming or simulation file, and any other //associated documentation or information provided by Altera or a partner //under Altera's Megafunction Partnership Program may be used only to //program PLD devices (but not masked PLD devices) from Altera. Any other //use of such megafunction design, net list, support information, device //programming or simulation file, or any other related documentation or //information is prohibited for any other purpose, including, but not //limited to modification, reverse engineering, de-compiling, or use with //any other silicon devices, unless such use is explicitly licensed under //a separate agreement with Altera or a megafunction partner. Title to //the intellectual property, including patents, copyrights, trademarks, //trade secrets, or maskworks, embodied in any such megafunction design, //net list, support information, device programming or simulation file, or //any other related documentation or information provided by Altera or a //megafunction partner, remains with Altera, the megafunction partner, or //their respective licensors. No other licenses, including any licenses //needed under any third party's intellectual property, are provided herein. module ram256x8 ( address, inclock, we, data, q); input [7:0] address; input inclock; input we; input [7:0] data; Page 6

output [7:0] q; wire [7:0] sub_wire0; wire [7:0] q = sub_wire0[7:0]; lpm_ram_dq lpm_ram_dq_component (.address (address),.inclock (inclock),.data (data),.we (we),.q (sub_wire0)); defparam lpm_ram_dq_component.lpm_width = 8, lpm_ram_dq_component.lpm_widthad = 8, lpm_ram_dq_component.lpm_indata = "REGISTERED", lpm_ram_dq_component.lpm_address_control = "REGISTERED", lpm_ram_dq_component.lpm_outdata = "UNREGISTERED", lpm_ram_dq_component.lpm_hint = "USE_EAB=ON"; endmodule // ============================================================ // CNX file retrieval info // ============================================================ // Retrieval info: PRIVATE: WidthData NUMERIC "8" // Retrieval info: PRIVATE: WidthAddr NUMERIC "8" // Retrieval info: PRIVATE: RegData NUMERIC "1" // Retrieval info: PRIVATE: RegAdd NUMERIC "1" // Retrieval info: PRIVATE: OutputRegistered NUMERIC "0" // Retrieval info: PRIVATE: BlankMemory NUMERIC "1" // Retrieval info: PRIVATE: MIFfilename STRING "" // Retrieval info: PRIVATE: UseLCs NUMERIC "0" // Retrieval info: PRIVATE: DataBusSeparated NUMERIC "1" // Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "8" // Retrieval info: CONSTANT: LPM_WIDTHAD NUMERIC "8" // Retrieval info: CONSTANT: LPM_INDATA STRING "REGISTERED" // Retrieval info: CONSTANT: LPM_ADDRESS_CONTROL STRING "REGISTERED" // Retrieval info: CONSTANT: LPM_OUTDATA STRING "UNREGISTERED" // Retrieval info: CONSTANT: LPM_HINT STRING "USE_EAB=ON" // Retrieval info: USED_PORT: address 0 0 8 0 INPUT NODEFVAL address[7..0] // Retrieval info: USED_PORT: inclock 0 0 0 0 INPUT NODEFVAL inclock // Retrieval info: USED_PORT: we 0 0 0 0 INPUT VCC we // Retrieval info: USED_PORT: q 0 0 8 0 OUTPUT NODEFVAL q[7..0] // Retrieval info: USED_PORT: data 0 0 8 0 INPUT NODEFVAL data[7..0] // Retrieval info: CONNECT: @address 0 0 8 0 address 0 0 8 0 // Retrieval info: CONNECT: @inclock 0 0 0 0 inclock 0 0 0 0 // Retrieval info: CONNECT: @we 0 0 0 0 we 0 0 0 0 // Retrieval info: CONNECT: q 0 0 8 0 @q 0 0 8 0 // Retrieval info: CONNECT: @data 0 0 8 0 data 0 0 8 0 ram256x8_bb.v 파일 //Copyright (C) 1991-2001 Altera Corporation //Any megafunction design, and related net list (encrypted or decrypted), //support information, device programming or simulation file, and any other //associated documentation or information provided by Altera or a partner //under Altera's Megafunction Partnership Program may be used only to //program PLD devices (but not masked PLD devices) from Altera. Any other //use of such megafunction design, net list, support information, device //programming or simulation file, or any other related documentation or //information is prohibited for any other purpose, including, but not Page 7

//limited to modification, reverse engineering, de-compiling, or use with //any other silicon devices, unless such use is explicitly licensed under //a separate agreement with Altera or a megafunction partner. Title to //the intellectual property, including patents, copyrights, trademarks, //trade secrets, or maskworks, embodied in any such megafunction design, //net list, support information, device programming or simulation file, or //any other related documentation or information provided by Altera or a //megafunction partner, remains with Altera, the megafunction partner, or //their respective licensors. No other licenses, including any licenses //needed under any third party's intellectual property, are provided herein. module ram256x8 ( address, inclock, we, data, q); endmodule input [7:0] address; input inclock; input we; input [7:0] data; output [7:0] q; ram256x8_inst.v 파일 ram256x8 ram256x8_inst (.address ( address_sig ),.inclock ( inclock_sig ),.we ( we_sig ),.data ( data_sig ),.q ( q_sig ) ); 이글의앞부분에서도잠깐언급을했듯이 MegaWizard Plug-In Manager 에서생성된파일들은반드시논리합성툴이생성해낼 Netlist 가위치할폴더에넣어주어야함을잊지말아야한다 Verilog-HDL Coding 이제는사용자 Code 를작성할차례이다 그림을참고로하여 Coding 을하면아래와같다 파일명은 lpmramdq_inst.v 로가정한다 Page 8

lpmramdq_inst.v 파일 module lpmramdq_inst( we, clk, a, d, qout ); input we; input clk; input [7:0] a; input [7:0] d; output [7:0] qout; ram256x8 ram_inst(.we(we),.inclock(clk),.address(a),.data(d),.q(qout)); endmodule 여기에다가 ram256x8_bb.v 의내용을복사하여 Source Code 의하단에붙여넣으면전체 Source 가완성된다 (Source 중간에 ram_inst 라는 Instance Name 을가진 ram256x8 Module 이사용되었으므로 ) 완성된 lpmramdq_inst.v 파일 module lpmramdq_inst( we, clk, a, d, qout ); input we; input clk; input [7:0] a; input [7:0] d; output [7:0] qout; ram256x8 ram_inst(.we(we),.inclock(clk),.address(a),.data(d),.q(qout)); endmodule module ram256x8 ( address, inclock, we, data, q); input [7:0] address; input inclock; input we; input [7:0] data; output [7:0] q; Page 9

endmodule LeonardoSpectrum for ALTERA Level1 2000.1b 를사용하여합성하기 Verilog-HDL Code 가완성되었으므로이제는논리합성툴 (Logic Synthesis Tool) 을가지고합성을할단계이다 여기에서는 ALTERA 와 OEM 계약을맺은 Exemplar 의 LeonardoSpectrum for ALTERA Level1 2000.1b 를사용하여합성을한다 참고로 ALTERA 에서제공하는 LeonardoSpectrum 은 ALTERA Device 만을선택하여합성을할수있으며, 관련 License 는 VHDL 만을합성할수있거나혹은 Verilog-HDL 만을합성할수있는 License 만을주므로자신의 License 가어떤것인지를먼저확인하여야한다 물론정품이있다면그걸활용하여도무방하다 Figure 7 LeonardoSpectrum 의초기실행화면 여기에서는 LeonardoSpectrum 의자세한사용법은생략한다 합성시주의할점은 MegaWizard Plug-In Manager 로만든 *.v 파일들은합성될파일목록에포함시키면않된다는것이다 앞서기본개념부분에서말했듯이그파일들은 Quartus II 가 Compile 을수행할때참조되는파일들이기때문이다 Page 10

여기에서는사용자가작성한 lpmramdq_inst.v 만합성을하면된다 여기에서는반드시설정해야할부분만을선택하고합성을하였다 선택한 Device 는 EP20K30EFC144-3 이다 아래는 LeonardoSpectrum for ALTERA Level1 2000.1b 에서출력한 Log 이다 Info: Attempting to checkout a license to run as LeonardoSpectrum Level 1 Altera Info: License passed Session history will be logged to file 'C:/CAD/_FAE/test/lpmramdq_ex/exemplar.his' Info, Working Directory is now 'C:\CAD\_FAE\test\lpmramdq_ex' Info: system variable EXEMPLAR set to "c:\cad\fpgadv\exemplar" Info: Loading Exemplar Blocks file: c:\cad\fpgadv\exemplar/data/xmplrblks.ini Messages will be logged to file 'C:/CAD/_FAE/test/lpmramdq_ex/exemplar.log'... LeonardoSpectrum Level 1 Altera - v20001b.106 (Release Production, compiled Dec 4 2000 at 17:05:11) Copyright 1990-2000 Exemplar Logic, Inc. All rights reserved. -- -- Welcome to LeonardoSpectrum Level 1 Altera -- Run By cwyang@cwyang -- Run Started On Sun Apr 01 07:21:35 Korea Standard Time 2001 -- <- 여기까지가 Tool 상에서띄우는초기 Log 이다 ->set_working_dir C:/CAD/_FAE/test/verilog_lpm_ex <- 작업폴더설정 Info, Working Directory is now 'C:\CAD\_FAE\test\verilog_lpm_ex' ->_gc_read_init ->_gc_run_init ->set input_file_list { C:/CAD/_FAE/test/verilog_lpm_ex/src/lpmramdq_inst.v } <- 합성할파일선택 C:/CAD/_FAE/test/verilog_lpm_ex/src/lpmramdq_inst.v ->set part EP20K30EFC144 <- Target Device 선택 EP20K30EFC144 ->set process 3 <- Speed Grade 선택 3 ->set chip TRUE ->set macro FALSE FALSE ->set area TRUE ->set delay FALSE FALSE ->set report brief brief ->set hierarchy_auto TRUE TRUE ->set hierarchy_preserve FALSE FALSE ->set output_file C:/CAD/_FAE/test/verilog_lpm_ex/lpmramdq_inst.edf <- 합성결과물인 Netlist 의저장경로및파일명선택 ( 기본적으로 Top Design Entity 의파일명과동일하게설정된다 ) C:/CAD/_FAE/test/verilog_lpm_ex/lpmramdq_inst.edf ->set novendor_constraint_file FALSE FALSE ->set target apex20e apex20e ->_gc_read <- 파일을 Tool 내로불러들여문법검사와구문분석을시작한다 -- Reading target technology apex20e Reading library file `c:\cad\fpgadv\exemplar\lib\apex20e.syn`... Library version = 1.6 Delays assume: Process=3 -- read -tech apex20e { C:/CAD/_FAE/test/verilog_lpm_ex/src/lpmramdq_inst.v } -- Reading file 'C:/CAD/_FAE/test/verilog_lpm_ex/src/lpmramdq_inst.v'... -- Loading module ram256x8 -- Loading module lpmramdq_inst -- Compiling root module 'lpmramdq_inst' Page 11

"C:/CAD/_FAE/test/verilog_lpm_ex/src/lpmramdq_inst.v",line 22: Warning, module ram256x8 is empty. <- ram256x8 Module 이비었다고출력하는데, 정상적인출력결과이다 -- Pre Optimizing Design.work.lpmramdq_inst.INTERFACE -- Boundary optimization. Info: Finished reading design ->_gc_run <- 이제부터 Synthesis 과정으로들어간다 -- Run Started On Sun Apr 01 07:25:24 Korea Standard Time 2001 -- -- optimize -target apex20e -effort quick -chip -area -hierarchy=auto Using default wire table: apex20e_default -- Start optimization for design.work.lpmramdq_inst.interface Using default wire table: apex20e_default est est Pass LCs Delay DFFs TRIs PIs POs --CPU-- min:sec 1 0 3 0 0 18 8 00:00 Using default wire table: apex20e_default -- Start timing optimization for design.work.lpmramdq_inst.interface No critical paths to optimize at this level <- Synthesis Report 가출력된다 ******************************************************* Cell: lpmramdq_inst View: INTERFACE Library: work ******************************************************* Number of ports : 26 Number of nets : 52 Number of instances : 29 Number of references to this view : 0 Total accumulated area : Number of GND : 1 Number of IOs : 26 Number of VCC : 1 Black Box ram256x8 : 1 <- ram256x8 Module 이 Block Box 로 처리되었슴을나타낸다 *********************************************** Device Utilization for EP20K30EFC144 *********************************************** Resource Used Avail Utilization ----------------------------------------------- IOs 26 92 28.26% LCs 0 1200 0.00% Memory Bits 0 24576 0.00% <- Memory Bits 의사용량이 0 으로 나오는게당연하다 Black Box 로처리되었으므로 LeonardoSpectrum 은 ram256x8 이무엇인지 모르기때문이다 ----------------------------------------------- Critical Path Report Critical path #1, (unconstrained path) NAME GATE ARRIVAL LOAD ------------------------------------------------------------------------------ d(0)/ 0.00 0.00 up 1.49 d(0)_ibuf/combout apex20_io_input_none_from_pin 3.13 3.13 up 1.49 ram_inst/data(0) GENERIC_BLACK_BOX 0.00 3.13 up 0.00 data arrival time 3.13 data required time not specified Page 12

------------------------------------------------------------------------------ data required time not specified data arrival time 3.13 ---------- unconstrained path ------------------------------------------------------------------------------ -- Design summary in file 'C:/CAD/_FAE/test/verilog_lpm_ex/lpmramdq_inst.sum' -- Saving the design database in C:/CAD/_FAE/test/verilog_lpm_ex/lpmramdq_inst.xdb -- Writing file C:/CAD/_FAE/test/verilog_lpm_ex/lpmramdq_inst.xdb -- Writing XDB version 1999.1 -- Writing file C:/CAD/_FAE/test/verilog_lpm_ex/lpmramdq_inst.edf Info, Writing xrf file 'C:/CAD/_FAE/test/verilog_lpm_ex/lpmramdq_inst.xrf' -- Writing file C:/CAD/_FAE/test/verilog_lpm_ex/lpmramdq_inst.xrf Info, Writing batch file 'C:/CAD/_FAE/test/verilog_lpm_ex/lpmramdq_inst.tcl' -- CPU time taken for this run was 1.81 sec -- Run Successfully Ended On Sun Apr 01 07:25:26 Korea Standard Time 2001 0 Info: Finished Synthesis run <- logic Synthesis 가정상적으로종료됨 논리합성이정상적으로되면작업폴더에 lpmramdq_inst.edf 라는 EDIF Format 의 Netlist 가생성되어있슴을확인할수있다 Quartus II 를사용하여 Compile 하기 현재작업폴더를확인하면 MegaWizard Plug-In Manager 를사용하여생성한 RAM256x8 Module 과 LeonardoSpectrum 으로만든 LPMRAMDQ_INST.EDF 파일이있을것이다 이번단계는마지막단계로 ALTERA 에서제공하는 APEX 20KE Device 용 Compile Tool 인 Quartus II 를사용하여 Compile 을진행하는단계이다 Quartus II 를띄운후 File -> New Project Wizard 를선택하여새 Project 를만든다 Figure 8 은 New Project Wizard 의초기화면이다 다음으로넘어간다 Page 13

Figure 8 New Project Wizard 의초기화면 그다음화면은지금만들려는 Project 가위치할폴더의경로와 Project 이름그리고현 Project 에서사용될 Top-Level Design Entity 이름을입력하는부분이다 세군데칸을모두채워야하는데, 가장편리한방법은 Project 가위치할경로를물어보는부분의 Browse 버튼을눌러나타나는 Select Directory 대화상자에서폴더를찾고아까만든 *.EDF 파일을더블클릭하는것이다 이렇게하면나머지두개의빈칸도자동으로채워진다 Page 14

Figure 9 Project 만들기 Figure 9 처럼모두채워넣었으면 Finish 를눌러새 Project 생성작업을완료한다 우리는지금까지 lpmramdq_inst 라는이름을가진 Netlist 를 Top-Level Design Entity 로하는 LPMRAMDQ_INST 라는 Project 를만들었다 이번에행할작업은 Project -> EDA Tool Settings 를선택하여 EDIF Netlist 를만들때사용한논리합성툴을선택하는단계이다 ( 이단계를무시하고바로 Compile 을할경우 Compiler 가 EDIF Netlist 를읽어들이면서자동으로논리합성툴의종류를인식하기는하지만, 만약의사태에대비하여꼭 Check 하는습관을들이도록한다 ) Design entry / synthesis tool: 항목에서우리가사용했던 Tool 을선택한다 우리는 ALTERA 전용의 LeonardoSpectrum 을사용했었으므로 Leonardo Spectrum(Level 1) 을선택하면된다 OK 버튼을눌러설정을완료한다 Page 15

Figure 10 Logic Synthesis Tool 의선택 이이후의작업은일반적인 Quartus II 작업순서와동일하다 Compiler Settings 에서 Target Device 를정해주고 ( 만약여기서정하지않더라도 Compiler 가자동으로잡아주기는한다 ) Start Compilation 을시작한다 여기에서는 LeonardoSpectrum 에서선택했던 EP20K30EFC144-3 을선택하고 Compile 과정을수행한다 (Figure 11, 12 참조 ) Page 16

Figure 11 Compiler Settinfs 중 Target Device 의선택 Figure 12 Start Compilation Button Page 17

Figure 13 정상적으로 Compile 이완료된회면 지금까지의과정대로진행이되었다면 Compile 은별문제없이잘될것이다 만약중간에 Error 가발생한다면어디선가잘못했거나빼먹은부분이있다는것이므로다시한번잘살펴보기바란다 Quartus II 의하단에는 Compile 중에발생하는각종 Message 를표시하는 Messages 창이있는데, 아래와같은내용들이표시되어있을것이다 몇가지를살펴보면, Info: Found 1 design units and 1 entities in source file C:\CAD\_FAE\test\verilog_lpm_ex\lpmramdq_inst.edf <- Top-Level Design Entity 인 LPMRAMDQ_INST.EDF 를확인했슴을알려준다 Info: Found entity 1: lpmramdq_inst Info: Found 1 design units and 1 entities in source file c:\cad\_fae\test\verilog_lpm_ex\ram256x8.v <- MegaWizard Plug-In Manager 에서 생성한 LPM 관련핵심 Module 인 ram256x8.v 가 Compile 과정에서야적용됨을확인할수있다 Info: Found entity 1: ram256x8 Info: Found 1 design units and 1 entities in source file C:\CAD\ALTERA\Quartus\libraries\megafunctions\lpm_ram_dq.tdf Info: Found entity 1: lpm_ram_dq Info: Found 1 design units and 1 entities in source file C:\CAD\ALTERA\Quartus\libraries\megafunctions\altram.tdf Info: Found entity 1: altram Info: Implemented 34 device resources Info: Implemented 18 input pins Info: Implemented 8 output pins Info: Implemented 8 RAM segments Info: Selected device EP20K30EFC144-3 for design lpmramdq_inst Page 18

Info: Started 1 fitting attempt on Mon Apr 02 2001 at 01:19:44 Warning: Timing characteristics of device EP20K30EFC144-3 are preliminary Warning: Found pins functioning as undefined clocks and/or memory enables Info: Assuming node clk is an undefined clock Info: No valid register-to-register paths exist for clock clk Info: Design lpmramdq_inst: Full compilation was successful. 0 errors, 2 warnings 이번에는 Quartus II 의 Workplace 에있는 lpmramdq_inst Compilation Report 의 Summary 부분을살펴보자 우리가작성한회로는오직 256x8bit RAM 만들어있는회로이다 Summary 부분을보면우리의예상처럼 Logic Element 는당연히하나도사용되지않았고, 단지 ESB 라불리는 Memory Block 만이 2048bit 를쓴것으로나와있다 Figure 14 Compilation Report 이로써 LPM_RAM_DQ Function 을적용한사용자 Verilog-HDL 이 LeonardoSpecrum 의합성과정을거쳐 Quartus II Compilation 까지정확하게이루어졌슴을확인할수있다 마치며 지금까지우리는 LPM Function 을사용한 Verilog-HDL 을 3 rd Party Synthesis Tool 인 Leonardo Spectrum 에서어떨게합성을하는지, 그리고 Quartus II 에서는어떤식으로 Compile 이이루어지는지살펴보았다 여기서는 Exemplar 사의 Tool 을가지고예를들었지만, 다른 Tool 들을사용하더라도공통으로적용되는부분이므로서두에서언급했던기본개념부분을잘숙지하고작업을진행한다면별문제없이원하는결과를볼수있을것이다 Page 19

Revision History 2001-3-30 - Ver 1.0: Initialize Release Page 20