VHL 프로그래밍 10. 논리합성및설계기법 한동일 학습목표 VHL 을이용한시스템구현과정을이해한다. 논리합성이가능한 RTL 코드의개념을이해한다. ASIC 제작과정을이해한다. FPGA 제작과정을이해한다. RTL 시뮬레이션과정을이해한다. 논리합성이되는구문과되지않는구문을파악한다. 좋은 VHL 코딩스타일을따른다. 준안정상태의개념을이해한다. 비동기신호인터페이스를구현할수있다. 2/36
VHL 을이용한설계기법 VHL 을이용한시스템구현과정 시스템사양 (specification) 및구조결정 VHL 코딩 (RTL 코드 ) 테스트벤치작성 RTL 시뮬레이션 (simulation) 논리합성 (synthesis) 게이트레벨시뮬레이션 (Gate Level simulation) 배치및배선 (Place and Route) 배치후시뮬레이션 (Post Layout Simulation) 타이밍분석 (Static Timing Analysis) ASIC, FPGA 구현 (Chip Fabrication) 테스트용보드제작 실장테스트 3/36. VHL 을이용한설계기법 System Specification i ASIC 제작과정 VHL Coding(RTL Level) Test Bench Technology Library Logic Synthesis Place and Route RTL Simulation Gate-Level eve Simulation Static Timing Analysis Post-Layout Simulation ASIC 4/36 Board Test
VHL 을이용한설계기법 FPGA 를이용한설계검증과정 System Specification VHL Coding(RTL Level) Test Bench Logic Synthesis RTL Simulation evice Mapping Gate-Level Simulation FPGA 5/36 FPGA Board Test RTL 시뮬레이션 RTL 시뮬레이션과정 VHL Library VHL Model VHL Test Bench Simulation Compiler Simulation Test Model Vectors Waveform Output VHL Simulation 6/36 File Output
RTL 시뮬레이션 시뮬레이션을통한출력파형예 7/36 RTL 시뮬레이션 리스트를통한시뮬레이션검증예 8/36
논리합성 논리합성 (logic synthesis) 이란? RTL 형태로추상적으로서술된코드를논리회로로이루어진하드웨어형태로변환하는과정 FPGA 를위한논리합성툴들 Xilinx 사에서제공하는 XST(ISE 에포함되어있음 ) Altera 사에서제공하는 uartus II Synopsis 사에서제공하는 esigncompiler Ultra, IC Compiler Cadence esign Systems 사에서제공하는 Encounter RTL Compiler Mentor Graphics 사에서제공하는 LeonardoSpectrum Synplicity 사에서제공하는 Synplify, etc. ASIC 을위한논리합성툴들 Synopsis 사에서제공하는 esign Compiler Cadence esign Systems 사에서제공하는 Encounter RTL Compiler Magma esign Automation 사에서제공하는 Talusesign, etc. 9/36. 논리합성및이후과정 VHL VHL Technology Constraints Library Model Library (Area, Speed, Power) Synthesis Compiler Formal Verification Timing Analysis Gate-Level Netlist Floor Planning Place and Route Gate-Level Simulation Post-Layout Simulation VHL Test Bench Test Vectors File Output Waveform Output Chip Fabrication 10/36
논리합성및이후과정 플로어플래닝단계에서의신호배치예 bad good 11/36 논리합성및이후과정 플로어플래닝예 I2C Host titf Intf Camera Interface Intf PLL Main AC isplay Interface SRAM Control Color and Frame Control Sub AC 12/36
논리합성및이후과정 배치및배선예 13/36 BIST(Built-In In Self-Test) BIST(Built-In I Self-Test) 불량칩의검출을위해칩제작시추가하는회로 불량메모리의검출을위한메모리비스트 (Memory BIST) 와일반로직의비정상동작여부검출을위한로직비스트 (Logic BIST) 를사용 메모리비스트 메모리설계단계에서별도의검증로직추가 메모리내의각각의저장장소의정상동작유무를확인할수있어야함 로직비스트 대부분로직비스트를자동으로삽입하는툴을이용 일반적인테스트벤치로커버하지못하는회로의동작을검증할수있게함 14/36.
BIST 를포함한전체설계과정 VHL with Test-Logic Function Simulation Behavioral Simulation Logic Synthesis Scan-Stitching Synthesis / SCAN / ATPG Pre-Static Timing Analysis Floor-Plan Pre-layout Simulation RTL2Gate Formal Verify Static timing verification Gate level simulation Floor-Plan Hierarchical P&R P&R RC Extraction Post-Static Timing Analysis Post-layout Simulation Post-layout simulation/timing Verify Re-optimize Gate2Gate Formal Verify RC/LVS/Antenna 15/36 논리합성일반 VHL 구문의논리합성가능여부 논리합성기에따른논리합성가능여부차이존재 따라서현재사용하고있는논리합성기의성능파악필요 대부분의논리합성기가지원하지않는구문 deferred constant bus type signal file declaration register type signal attribute declaration guard signal assertion statement physical literal report statement transport time delay after clause configuration declaration 16/36.
논리합성일반 대부분의논리합성기가지원하는구문 entity declaration architecture body library clause use clause package subprogram predefined subtype predefined type user-defined subtype attribute array type constant declaration integer type definition record type definition alias declaration signal declaration variable declaration sequential signal assignment statement if statement case statement next statement null statement exit statement return statement variable assignment statement sequential procedure call statement component instantiation statement concurrent procedure call statement concurrent signal assignment statement process statement signed and unsigned operation enumeration type definition 17/36 논리합성일반 논리합성기의부가기능 HL 로구현된 RTL 코드를게이트레벨논리회로로논리합성하는기능 최적화가안된게이트레벨논리회로를최적화하는기능 최적화된회로의동작속도를향상시키는기능 사용자가제공하는통제정보 (constraint) 를이용한 balanced clock tree synthesis 기능 배치후선로의커패시턴스 (capacitance) 값을이용한재최적화 (reoptimization) 기능등 18/36.
매크로셀의이용 매크로셀 (macro cell) 이란? 칩제작업체나 FPGA 제공업체에서사전에설계하여제공하는회로들 반도체제작업체제공매크로셀 메모리 (single port, two port, dual port : width 와 depth 조정가능 ) FIFO(width 와 depth 조정가능 ) AC, AC, I/O Pad, PLL 등 FPGA 칩제공매크로셀 클럭버퍼, CM(igital Clock Manager), PLL(Phase-Locked Loop) 블록메모리 (Block RAM), 분산메모리 (istributed RAM) FIFO 곱셈기 (multiplier) 등 19/36. VHL 코딩기법 좋은코딩스타일 코드의첫부분에관련정보를담은해더를사용 IEEE, 개발환경에서제공하는다양한패키지들을활용 모든 RTL 코드는한파일에하나의설계 entity 를서술 파일명은엔티티이름과일치시킬것 엔티티명은가급적설계구조가파악되도록할것 테스트벤치코드는 tb_entity_name 과같은방식으로구분 입출력포트신호들의명명규칙 std_logic, std_logic_vector 형만을사용 active_high 신호가기본, active low 신호일경우신호이름끝에 _n 설계를시작하기전에주요신호선들의이름을정하고이를준수 포트신호들은관계있는것끼리그룹으로처리 buffer 모드의출력은피하고이를 out 모드및내부신호선으로분리 20/36.
VHL 코딩기법 좋은코딩스타일 - 계속 포트이름선언의좋은예 scaled_pixel rc2is_p pixel(7:0) scaled_p pixel (7:0) scaled ed_pixel (7:0) mct_pixel (8:0) is2mc_hactive rc2is_hactive is2mc_hactive is2mc_hactive mc2wm_hactive is2mc_vactive rc2is_vactive is2mc_vactive is2mc_vactive mc2wm_vactive current_width(8:0) current_height(7:0) fdclk reset_fd_n scaled_width(8:0) scaled_height(7:0) fdclk reset_fd_n fd_is_top fd_mc_top 21/36 VHL 코딩기법 좋은코딩스타일 - 계속 포트이름선언의나쁜예 pixel_out pixel _ in(7:0) pixel _ out (7:0) pixel _ in(7:0) pixel_out (8:0) hactive_out hactive_in hactive_out hactive_in hactive_out vactive_out vactive_in vactive_out vactive_in vactive_out current_width(8:0) current_height(7:0) fdclk reset_fd_n scaled_width(8:0) scaled_height(7:0) fdclk reset_fd_n fd_is_top fd_mc_top 22/36
VHL 코딩기법 좋은코딩스타일 - 계속 signal 은플립플롭의출력신호및이와연결된배선 variable 의경우프로세스내부의로컬신호 0 과 1 이외의정수표현은가급적상수로표현 프로세스문사용시주의사항 감지리스트작성시필요한신호가빠지지않았는지항상확인 가능하면 case 문이 if 문보다논리합성의최적화에유리 데이터를제외한모든신호는반드시비동기리셋해야함 vector 를이용가능할경우 loop 보다는가급적 vector 로서술 여러프로세스에서반복적으로서술되는부분은함수 (function) 을활용 포트연결시에는이름연결방식과위치연결방식을동시에적용 23/36. VHL 코딩기법 좋은코딩스타일 - 계속 기타사항 bit는 std_logic으로사용, bit_vector는 std_logic_vector로사용 vector의비트수표현방식은 (msb downto lsb) 예 : std_logic_vector(7 downto 0) integer의값의표시방식은 (min to max) 예 : integer range 0 to 255 signed integer 를사용할경우에는정상적인논리합성여부를파악 산술연산자 (+, -, *, /) 는매우신중하게사용 ( 게이트수가매우커짐 ) 칩의입력신호는일단해당클럭으로플립플롭을친신호를이용 칩의출력신호도플립플롭의출력신호를출력포트로직접연결 영상데이터의경우앞의조건과함께출력클럭을반전시켜출력 래치가발생되지않도록주의 의도적인래치설계의경우에는주석을통해래치발생회로임을공지 24/36
VHL 코딩기법 좋은코딩스타일 - 계속 출력데이터와클럭신호와의타이밍예 : SMPTE274M 25/36 VHL 코딩기법 ASIC 설계를위한코딩스타일 사용되는클럭의수를최소로줄이는것이클럭분배네트워크구성에유리 리셋과클럭신호들은개별생성을배제하고종합관리 tri-state 버스의 enable 핀들은 mutually exclusive 관계 floor plan 단계에서각블록의입출력신호들도플립플롭으로인터페이스 두개이상의서로다른클럭이사용되는블록은그크기를최소화시켜야함 26/36.
VHL 코딩기법 비동기신호인터페이스를위한코딩스타일 비동기신호가인터페이스되는영역을최소화 플립플롭의준안정 (metastable) 구간발생을고려 비동기신호의인터페이스시조합회로가없이두단계의플립플롭으로신호를저장한이후에사용 하나의비동기신호에대해서복수개의비동기신호인터페이스를할경우서로한클럭의위상지연이발생할수있으므로이러한설계는회피 두개의클럭에의해인터페이스되는신호의경우신호의주파수는느린클럭의주파수보다느리게인터페이스 서로다른두클럭의비율에관계없이인터페이스할수있는또다른방법으로 handshaking 방법을이용 27/36. 클럭신호의타이밍관계 A C b combinational logic a c q clk clk b c 1 c 2 c 3 t 1 t 2 28/36
플립플롭의준비및대기시간 setup time hold time clk c setup and hold violation ok ok 29/36 준안정상태의전파방식 A B C a async b combinational logic c q clk B clk A async clk B b c logic delay metastable window q t 1 30/36 t 2
비동기신호인터페이스방법 a A hsync B C hsync_1d_sdr hsync_2d_sdr sdrclk clk A hsync sdrclk hsync_1d_sdr metastable window hsync_2d_sdr sdr t 1 t 2 31/36 비동기신호인터페이스방법 비동기인터페이스구현예 -------------------------------------------- -- Asynchronous interface -------------------------------------------- async_proc : process (sdrclk, reset_sdr_n) begin end process; if (reset_sdr_n='0') then hsync_1d_sdr <= '0';-- do not use this signal hsync_2d_sdr <= '0'; elsif (sdrclk='1' and sdrclk'event) then hsync_1d_sdr sdr <= hsync; -- comes from different clock hsync_2d_sdr <= hsync_1d_sdr; end if; 32/36
복수개의비동기인터페이스 a A async B C b c clk B clk B clk A d E e clk B clk B async clk B b d t 1 t 2 33/36 주파수차이에의한문제 fastclk write1 t 1 t 2 slowclk write2 34/36
핸드셰이킹인터페이스 fastclk ready strb slowclk t 1 t 2 t 3 t 4 t 5 t 7 t 8 t 9 35/36 핸드셰이킹인터페이스로직 strb_2d C strb_1d B fastclk A fastclk E start1 S ready strb start2 fastclk R slowclk slowclk 36/36