[go: up one dir, main page]

KR102409505B1 - 비휘발성 메모리 소자를 포함하는 lut, lut를 포함하는 fpga 및 fpga 디자인 방법 - Google Patents

비휘발성 메모리 소자를 포함하는 lut, lut를 포함하는 fpga 및 fpga 디자인 방법 Download PDF

Info

Publication number
KR102409505B1
KR102409505B1 KR1020170177688A KR20170177688A KR102409505B1 KR 102409505 B1 KR102409505 B1 KR 102409505B1 KR 1020170177688 A KR1020170177688 A KR 1020170177688A KR 20170177688 A KR20170177688 A KR 20170177688A KR 102409505 B1 KR102409505 B1 KR 102409505B1
Authority
KR
South Korea
Prior art keywords
fpga
applications
blocks
memory devices
nonvolatile memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
KR1020170177688A
Other languages
English (en)
Other versions
KR20190076134A (ko
Inventor
김정빈
김기태
조경선
이승진
조대형
윤홍일
정의영
Original Assignee
에스케이하이닉스 주식회사
연세대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사, 연세대학교 산학협력단 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020170177688A priority Critical patent/KR102409505B1/ko
Priority to US16/107,906 priority patent/US10419000B2/en
Publication of KR20190076134A publication Critical patent/KR20190076134A/ko
Priority to US16/533,596 priority patent/US10924117B2/en
Application granted granted Critical
Publication of KR102409505B1 publication Critical patent/KR102409505B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks
    • H03K19/17728Reconfigurable logic blocks, e.g. lookup tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17736Structural details of routing resources
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/1776Structural details of configuration resources for memories

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Logic Circuits (AREA)

Abstract

본 기술에 의한 LUT는 다수의 어플리케이션에 대응하는 다수의 비휘발성 메모리 소자를 포함하고 어플리케이션 선택 신호에 따라 다수의 비휘발성 메모리 소자 중 어느 하나의 비휘발성 메모리 소자를 선택하는 데이터 저장부; 및 디코더에서 출력되는 활성화 신호에 따라 어느 하나의 비휘발성 메모리 소자에 저장된 정보를 증폭하는 증폭부를 포함한다.

Description

비휘발성 메모리 소자를 포함하는 LUT, LUT를 포함하는 FPGA 및 FPGA 디자인 방법 {LOOK UP TABLE INCLUDING NONVOLATILE MEMORY ELEMENT, FPGA INCLUDING THE LOOK UP TABLE AND METHOD FOR DESIGNING THE FPGA}
본 발명은 비휘발성 메모리 소자를 포함하는 LUT(Look Up Table), LUT를 포함하는 FPGA(Field Programmable Gate Array)및 FPGA를 디자인하는 방법에 관한 것이다.
보다 구체적으로 본 발명은 다수의 어플리케이션이 사용할 수 있는 LUT, LUT를 포함하는 FPGA 및 FPGA를 디자인하는 방법에 관한 것이다.
FPGA(Field Programmable Gate Array)는 프로그램을 통해 특정 동작을 수행하는 디지털 회로를 설계하는데 널리 사용되는 PLD(Programmable Logic Device)의 일종이다.
FPGA는 CLB(Configurable Logic Block)와 IOB(Input Output Block) 및 둘 사이를 연결하는 구성 가능한 연결 회로를 포함한다. FPGA는 DLL, RAM 등의 구성을 더 포함할 수 있다.
CLB는 적어도 두 종류의 하위 회로를 포함하는데 이 중 하나는 플립플롭과 같은 레지스터 회로이고 나머지 하나는 LUT로 구현될 수 있는 함수 생성 회로이다.
도 1은 종래의 LUT를 나타낸 회로도이다.
종래의 LUT는 다수의 SRAM(Static Random Access Memory)을 포함하는 SRAM 어레이(10)와 스위치 어레이(20)를 포함한다.
스위치 어레이(20)는 디코딩 신호(A, B, C)에 따라 다수의 SRAM 중 어느 하나의 SRAM에 저장된 데이터가 출력되도록 경로를 설정한다.
이러한 종래의 LUT는 조합 논리 회로 및 순차 논리 회로를 구현하기 용이하나 전원이 차단되는 경우 SRAM에 저장된 데이터가 소멸되어 프로그램을 새로 수행해야 하는 문제가 있다.
또한 다수의 어플리케이션이 하나의 LUT를 이용하고자 하는 경우 어플리케이션이 바뀔 때마다 LUT내의 SRAM을 다시 프로그램해야 한다.
이에 따라 종래의 LUT와 이를 포함하는 FPGA는 다수의 어플리케이션을 미리 프로그램할 수 없고 어플리케이션이 바뀔 때마다 프로그램을 다시 수행해야 한다.
또한 프로그램을 매번 수행하지 않기 위해서는 어플리케이션 개수 만큼의 LUT를 병렬적으로 사용해야 하므로 FPGA의 크기가 과도하게 증가하는 문제가 있다.
US 6542000 B1 KR 10-1308579B1
본 기술은 다수의 어플리케이션을 사용하도록 미리 프로그램할 수 있는 LUT와 LUT를 포함하는 FPGA 및 FPGA를 디자인하는 방법을 제공한다.
본 기술은 비휘발성 메모리 소자를 이용하여 전력 소비를 줄일 수 있는 LUT와 LUT를 포함하는 FPGA 및 FPGA를 디자인하는 방법을 제공한다.
본 발명의 일 실시예에 의한 LUT는 다수의 어플리케이션에 대응하는 다수의 비휘발성 메모리 소자를 포함하고 어플리케이션 선택 신호에 따라 다수의 비휘발성 메모리 소자 중 어느 하나의 비휘발성 메모리 소자를 선택하는 데이터 저장부; 및 디코더에서 출력되는 활성화 신호에 따라 어느 하나의 비휘발성 메모리 소자에 저장된 정보를 증폭하는 증폭부를 포함한다.
본 발명의 일 실시예에 의한 FPGA는 다수의 어플리케이션에 대응하는 다수의 비휘발성 메모리 소자를 포함하되, 어플리케이션 선택 신호에 따라 다수의 비휘발성 메모리 소자 중 어느 하나의 비휘발성 메모리 소자를 선택하고 디코더에서 출력되는 활성화 신호에 따라 어느 하나의 비휘발성 메모리 소자에 저장된 정보를 출력하는 LUT를 포함한다.
본 발명의 일 실시예에 의한 FPGA 디자인 방법은 다수의 어플리케이션 각각에 대해서 FPGA를 구성하는 블록들을 결정하는 제 1 단계; 다수의 어플리케이션 모두를 수용할 수 있는 FPGA의 크기를 결정하는 제 2 단계; 및 결정된 크기의 FPGA에서 블록 어레이를 설정하고 블록 어레이에 다수의 어플리케이션을 위한 블록들을 배치하는 제 3 단계를 포함한다.
본 기술에 의한 LUT는 비휘발성 메모리를 포함하므로 전원 재개 시 프로그램을 새로 진행할 필요가 없으며 소비 전력을 줄일 수 있다.
본 기술에 의한 LUT는 다수의 어플리케이션을 위한 비휘발성 메모리를 다수개 포함하므로 어플리케이션이 바뀔 때마다 별도로 프로그램할 필요가 없다.
본 기술에 의한 FPGA 디자인 방법은 다수의 어플리케이션이 하나의 LUT를 중첩적으로 사용하도록 함으로써 FPGA의 면적을 줄일 수 있다.
도 1은 종래 기술에 의한 LUT 회로도.
도 2는 본 발명의 일 실시예에 의한 LUT의 회로도.
도 3은 도 2의 단위 셀의 회로도.
도 4는 본 발명의 일 실시예에 의한 FPGA 디자인 방법을 나타낸 순서도.
도 5는 도 4의 크기 선택 방법을 구체적으로 나타낸 순서도.
도 6은 도 4의 블록 배치 방법을 구체적으로 나타낸 순서도.
도 7은 도 6의 블록 배치 방법을 설명하는 설명도.
이하에서는 도면을 참조하여 본 발명의 실시예를 개시한다.
도 2는 본 발명의 일 실시예에 의한 LUT(1000)를 나타내는 블록도이다.
본 발명의 일 실시예에 의한 LUT(1000)는 다수의 단위 셀(100-1 ~ 100-4), 및 디코더(200)를 포함한다.
디코더(200)는 디코딩 신호(A)에 따라 다수의 활성화 신호(EN1 ~ EN4)를 출력한다.
이때 다수의 활성화 신호(EN1 ~ EN4) 중 하나는 활성화된 신호이고 나머지는 비활성화된 신호이다.
다수의 단위 셀(100-1 ~ 100-4)은 실질적으로 동일한 구조를 가지며 이들 중 활성화된 상태의 활성화 신호를 인가받는 단위 셀이 출력 신호(OUT)를 제공한다.
단위 셀(100-1)은 쓰기 신호(WE1)가 활성화되면 어플리케이션 선택 신호(S)에 대응하는 비휘발성 메모리 소자를 데이터 신호(D1)에 따라 프로그램한다.
도 3은 본 발명의 일 실시예에 의한 단위 셀(100-1)을 나타낸 회로도이다.
단위 셀(100-1)은 데이터 저장부(110), 기준 데이터 저장부(120), 증폭부(130), 접지부(140), 차단부(150), 제 1 데이터 출력부(161), 제 2 데이터 출력부(162)를 포함한다.
또한 단위 셀(100-1)은 제 1 쓰기 제어부(170)와 제 2 쓰기 제어부(180)를 포함한다.
데이터 저장부(110)는 다수의 비휘발성 메모리 소자(RC1, RC2)와 제 1 선택 스위치(SW11, SW12), 제 2 선택 스위치(SW21, SW22)를 포함한다.
비휘발성 메모리 소자(RC1, RC2)의 개수는 LUT에서 지원하는 어플리케이션의 개수에 대응하며 이들은 두 NMOS 트랜지스터(N41, N21) 사이에 병렬로 배치된다.
본 실시예에서 비휘발성 메모리 소자(RC1, RC2)는 전류의 방향을 조절하여 저항 값을 조절할 수 있는 소자로서 MTJ와 같은 자기 소자를 포함한다.
도 3에서는 2개의 어플리케이션에 대응하는 2개의 소자만을 도시하였으나 어플리케이션의 개수가 증가하는 경우 이에 대응하는 개수의 소자가 추가로 연결될 수 있다.
제 1 선택 스위치(SW11, SW12)는 어플리케이션 선택 신호(S)에 따라 대응하는 비휘발성 메모리 소자(RC1, RC2)를 NMOS 트랜지스터(N25)에 연결시킨다.
NMOS 트랜지스터(N25)는 활성화 신호(EN1)가 활성화되는 경우 제 1 쓰기 제어부(170)와 제 1 선택 스위치(SW11, SW12)를 연결한다.
제 2 선택 스위치(SW21, SW22)는 어플리케이션 선택 신호(S)에 따라 대응하는 비휘발성 메모리 소자(RC1, RC2)를 NMOS 트랜지스터(N41)에 연결시킨다.
기준 데이터 저장부(120)는 기준 비휘발성 메모리 소자(Rref)와 이에 직렬 연결된 제 3 선택 스위치(SW3)를 포함한다.
제 3 선택 스위치(SW3)는 제 2 선택 스위치(SW21, SW22)와 유사한 부하를 제공하기 위하여 포함되며 항상 턴온된 상태로서 NMOS 트랜지스터(N42)와 기준 비휘발성 메모리 소자(Rref)를 연결한다.
차단부(150)는 NMOS 트랜지스터(N41, N42)를 포함하여 쓰기 신호(WE1)가 활성화되는 경우에는 증폭부(130)와 데이터 저장부(110) 및 기준 데이터 저장부(120)의 연결을 차단하고 쓰기 신호(WE1)가 비활성화되는 경우에는 증폭부(130)와 데이터 저장부(110) 및 기준 데이터 저장부(120)를 연결한다.
증폭부(130)는 전원(VDD)과 차단부(150) 사이에 연결된다.
증폭부(130)는 제 1 노드(ND1)와 제 2 노드(ND2) 사이에 연결된 래치 구조를 가진다.
래치 구조는 PMOS 트랜지스터(P11)와 NMOS 트랜지스터(N11)를 포함하는 제 1 인버터와 PMOS 트랜지스터(P12)와 NMOS 트랜지스터(N12)를 포함하는 제 2 인버터를 포함한다.
제 1 인버터의 출력 단자는 제 1 노드(ND1)에 연결되고 제 1 인버터의 입력 단자는 제 2 노드(ND2)에 연결된다. 제 2 인버터의 입력 단자는 제 1 노드(ND1)에 연결되고 제 2 인버터의 출력 단자는 제 2 노드(ND2)에 연결된다.
PMOS 트랜지스터(P21)는 PMOS 트랜지스터(P11)와 병결 연결되고 PMOS 트랜지스터(P22)는 PMOS 트랜지스터(P22)와 병렬 연결된다.
PMOS 트랜지스터(P21, P22)의 게이트에는 활성화 신호(EN1)가 인가된다.
활성화 신호(EN1)가 비활성화된 경우 PMOS 트랜지스터(P21, P22)는 제 1 노드(ND1)와 제 2 노드(ND2)의 전압을 하이 레벨(VDD)로 프리차지한다.
활성화 신호(EN1)가 활성화된 경우 PMOS 트랜지스터(P21, P22)는 턴오프되고, 이때 증폭부(130), 데이터 저장부(110), 기준 데이터 저장부(120), 접지부(140)는 센스 앰프와 같이 동작하여 데이터 저장부(110)의 저항과 기준 데이터 저장부(120)의 저항값의 차이에 따른 신호 차이를 증폭하여 제 1 노드(ND1)와 제 2 노드(ND2)에서 차동 데이터를 출력하게 된다.
이때 제 1 노드(ND1)와 제 2 노드(ND2)의 데이터가 하이 레벨 또는 로우 레벨로 충분히 디벨롭되면 PMOS 트랜지스터(P21)와 NMOS 트랜지스터(N11) 중 하나는 턴오프되고, PMOS 트랜지스터(P22)와 NMOS 트랜지스터(N12) 중 하나는 턴오프된다.
이에 따라 차단부(150)를 통과하는 스태틱 전류가 차단되어 읽기 동작 시 단위 셀(100-1)에서의 전력 소비가 감소한다.
제 1 데이터 출력부(161)는 활성화 신호(EN1)가 활성화된 경우 제 1 노드(ND1)의 출력을 반전하여 출력한다.
제 1 데이터 출력부(161)는 PMOS 트랜지스터(P31)와 NMOS 트랜지스터(N31)를 포함하는 인버터와 이에 직렬 연결되어 활성화 신호(EN1)가 게이트에 인가되는 NMOS 트랜지스터(N23)를 포함한다.
제 2 데이터 출력부(162)는 활성화 신호(EN1)가 활성화된 경우 제 2 노드(ND2)의 출력을 반전하여 출력한다.
제 2 데이터 출력부(162)는 PMOS 트랜지스터(P32)와 NMOS 트랜지스터(N32)를 포함하는 인버터와 이에 직렬 연결되어 활성화 신호(EN1)가 게이트에 인가되는 NMOS 트랜지스터(N24)를 포함한다.
접지부(140)는 NMOS 트랜지스터(N21, N22)를 포함한다.
NMOS 트랜지스터(N22)는 활성화 신호(EN1)가 활성화되면 기준 데이터 저장부(120)를 접지(VSS)에 연결한다.
NMOS 트랜지스터(N21)는 활성화 신호(EN1)가 활성화되면 데이터 저장부(110)를 제 2 쓰기 제어부(180)에 연결한다.
쓰기 신호(WE1)가 비활성화된 경우 제 2 쓰기 제어부(180)는 NMOS 트랜지스터(N21)를 접지(VSS)에 연결한다.
이에 따라 읽기 동작 시 활성화 신호(EN1)가 활성화되면 데이터 저장부(110)가 접지에 연결된다.
제 1 쓰기 제어부(170)와 제 2 쓰기 제어부(180)는 쓰기 신호(WE1)가 활성화된 경우 데이터 저장부(110)에 포함된 비휘발성 메모리 소자에 쓰기 전류를 제공한다.
이때 쓰기 전류의 방향은 데이터 신호(D1)에 따라 결정된다.
예를 들어 데이터 신호(D1)가 하이 레벨인 경우 제 1 쓰기 제어부(170)는 로우 레벨(VSS)을 출력하고 제 2 쓰기 제어부(180)는 하이 레벨(VDD)을 출력한다.
이에 따라 데이터 신호(D1)가 하이 레벨인 경우 비휘발성 메모리 소자의 아래에서 위로 흐르는 전류가 제공된다.
마찬가지 원리로 데이터 신호(D1)가 로우 레벨인 경우 비휘발성 메모리 소자의 위에서 아래로 흐르는 전류가 제공된다.
제 1 쓰기 제어부(170)는 데이터 신호(D1)가 게이트에 인가되는 PMOS 트랜지스터(P51)와 NMOS 트랜지스터(N51)를 구비하는 인버터와 쓰기 신호(WE1)가 게이트에 인가되어 인버터의 출력을 선택적으로 NMOS 트랜지스터(N25)에 제공하는 NMOS 트랜지스터(N43)를 포함한다.
제 2 쓰기 제어부(180)는 데이터 신호(D1)와 쓰기 신호(WE1)를 낸드 연산하는 낸드 게이트(181)와 낸드 게이트(181)의 출력을 반전하는 인버터를 포함한다.
인버터는 PMOS 트랜지스터(P52)와 NMOS 트랜지스터(N52)를 포함하며 출력 단자가 NMOS 트랜지스터(N21)에 연결된다.
이와 같이 본 발명에 의한 LUT는 데이터 저장부(110)에 어플리케이션 선택 신호(S)에 따라 선택적으로 연결되는 병렬 연결된 다수의 비휘발성 메모리 소자를 포함하여 어플리케이션 선택 신호(S)에 따라 다수의 비휘발성 메모리 소자를 미리 프로그램할 수 있다.
따라서 본 발명에 의한 LUT는 어플리케이션의 종류가 바뀔 때마다 새로 프로그램할 필요가 없으며, 이러한 LUT를 포함하는 FPGA는 다수의 어플리케이션을 선택적으로 수행할 수 있도록 미리 프로그램 될 수 있다.
이하에서는 본 발명에 의한 LUT를 포함하는 FPGA를 디자인하는 방법을 개시한다.
본 실시예에 의한 FPGA 디자인 방법에서는 특정 LUT에 맵핑되는 어플리케이션의 개수가 집중되지 않도록 한다.
예를 들어 하나의 LUT를 사용하는 어플리케이션의 개수가 증가할수록 단위 셀의 데이터 저장부에 포함되는 비휘발성 메모리 소자와 스위치들의 개수가 증가하고 어플리케이션 선택 신호를 제공하기 위한 배선의 양이 증가하는 문제가 있다.
이에 따라 본 발명에서는 LUT에서 지원하는 어플리케이션의 개수를 효과적으로 분산시키는 FPGA 디자인 방법을 제안한다.
도 4는 본 발명의 일 실시예에 의한 FPGA 디자인 방법을 나타낸 순서도이다.
먼저 다수의 어플리케이션 각각에 대한 캐드 정보가 입력된다(S100).
이때 캐드 정보는 VeriLog와 같은 VHDL로 작성한 정보일 수 있다.
다음으로 캐드 정보에 대해서 논리 합성을 수행하여 게이트 레벨 넷-리스트를 생성한다(S110).
다음으로 맵핑을 통해 게이트 레벨 넷-리스트로부터 LUT 레벨 넷-리스트를 생성한다(S120). 이를 기술 맵핑(Technology Mapping)으로 지칭하기도 한다.
이후 LUT 들을 CLB 단위로 묶고 필요한 입출력 블록(패드)과 메모리 개수 등을 결정한다(S130).
이상의 단계들은 어플리케이션 별로 개별적으로 수행되는 것으로서 단계(S130)를 마치면 어플리케이션 개수만큼의 결과물이 출력된다.
이후 다수의 어플리케이션을 수용할 수 있는 FPGA의 크기를 결정한다(S200).
도 5는 FPGA의 크기를 결정하는 단계(S200)를 구체적으로 나타낸 순서도이다.
FPGA의 크기는 이를 구성하는 단위 블록을 기준으로 지칭될 수 있다.
블록은 CLB 단위의 블록, 패드 단위의 블록, 메모리 단위의 블록을 포함할 수 있다. 이때 패드는 입출력 블록을 나타낸다.
예를 들어 CLB를 기준으로 FPGA의 크기를 지칭할 수 있는데 이때 FPGA의 크기를 3x3이라고 표시하는 것은 CLB가 가로 세로 3개씩 배치된 FPGA를 나타낸다.
먼저 어플리케이션 별로 산출된 CLB, 패드, 메모리 개수를 크기 순서대로 정렬한다.
이를 통해 CLB의 최대값, 패드의 최대값, 메모리 개수의 최대값이 결정된다.
이후 FPGA의 크기를 초기화한다(S220).
다음으로 FPGA의 크기가 최대 CLB 개수를 수용할 수 있는지 판단한다(S230).
최대 CLB 개수를 수용할 수 없는 경우 크기를 단위 크기만큼 증가시키고(S231) 단계(S230)를 반복한다.
최대 CLB 개수를 수용할 수 있다면 다음으로 FPGA의 크기가 최대 패드 개수를 수용할 수 있는지 판단한다(S240).
최대 패드 개수를 수용할 수 없는 경우 크기를 단위 크기만큼 증가시키고(S241) 단계(S240)를 반복한다.
최대 패드 개수를 수용할 수 있다면 다음으로 FPGA의 크기가 최대 메모리 개수를 수용할 수 있는지 판단한다(S250).
최대 메모리 개수를 수용할 수 없는 경우 크기를 단위 크기만큼 증가시키고(S251) 단계(S250)를 반복한다.
최대 메모리 개수를 수용할 수 있다면 FPGA 크기를 결정한다(S260).
도 4로 돌아가 FPGA의 크기가 결정되면 결정된 FPGA 내부의 블록들에 다수의 어플리케이션을 중첩하여 배치한다.
이때 FPGA의 블록은 CLB, 패드, 메모리 단위의 블록들을 포함한다.
도 6은 다수의 어플리케이션에 포함된 블록을 배치하는 방법을 구체적으로 나타낸 순서도이다.
먼저 결정된 FPGA 크기에 따라 블록 어레이를 생성하고 인덱스(i)를 1로 초기화한다(S310).
i 번째 어플리케이션의 블록들을 블록 어레이에 임의로 배치한다(S320).
이때 블록을 종류별 즉 CLB, 패드, 메모리별로 구별하여 배치하는 것은 자명하다.
이후 i 번째 배치된 블록들의 최대 지연(제 1 지연)을 계산하고(S330), 블록들과 중첩된 기존 어플리케이션의 총 개수(제 1 개수)를 계산한다(S340).
도 7(A)를 참조하면 FPGA의 블록들이 4x4 어레이로 배치된 예를 나타낸다.
이때 각 블록에 포함된 숫자는 1 ~ i-1 번째(i>1인 자연수) 어플리케이션을 위하여 블록들을 배치한 결과 각 블록에 중첩된 어플리케이션의 개수를 나타낸다.
가로 줄무늬 부분은 i 번째 어플리케이션을 위하여 블록을 임의 배치한 상태를 나타낸다.
도 7(A)에서 제 1 지연은 가로 줄무늬 블록들을 통과하는 신호의 최대 지연량을 나타내고 제 1 개수는 가로 줄무늬 블록들에 중첩된 기존 어플리케이션의 총합인 20 (=2+4+5+3+3+2+1)이 된다.
도 6으로 돌아가 이후 i 번째 어플리케이션의 블록들의 위치를 변경한다(S350).
위치를 변경한 이후 i 번째 배치된 블록들의 최대 지연(제 2 지연)을 계산하고(S360), 블록들과 중첩된 기존 어플리케이션의 총 개수(제 2 개수)를 계산한다(S370).
도 7(B)에서 화살표와 점무늬 부분은 블록의 위치 변경을 표시한다.
도 7(B)에서 제 2 지연은 위치가 변경된 후 블록들을 통과하는 신호의 최대 지연량을 나타내고 제 2 개수는 위치가 변경된 후 기존 어플리케이션의 총합인 13 (=1+2+1+3+3+2+1)이 된다.
이후 제 1 지연이 제 2 지연보다 작은지 판단한다(S380).
제 1 지연이 제 2 지연보다 작으면 위치 변경을 무효화 하고(S381) 단계(S350)를 반복한다.
제 1 지연이 제 2 지연보다 작지 않으면 제 1 개수가 제 2 개수 이상인지 판단한다(S390).
제 1 개수가 제 2 개수 미만이면 위치 변경을 무효화 하고(S381) 단계(S350)를 반복한다.
제 1 개수가 제 2 개수 이상이면 i 번째 어플리케이션을 위한 블록 위치를 확정한다(S391).
도 7(C)는 제 1 지연이 제 2 지연보다 작지 않고 제 1 개수가 제 2 개수 이상이어서 i 번째 어플리케이션을 위한 블록의 위치가 확정된 상태를 나타낸다.
도 6으로 돌아가 i 가 어플리케이션 개수(M)보다 작은지 판단한다(S392).
i 가 어플리케이션 개수(M)보다 작으면 인덱스(i)를 증가시키고 단계(S320)로 진행하여 다음 어플리케이션을 위한 블록을 배치한다.
i 가 어플리케이션 개수(M)와 같으면 배치를 완료하고 결과를 출력한다(S394).
실시예에 따라서는 도 6의 단계(S380)와 단계(S390)의 판단 순서가 바뀔 수도 있고 단계(S380)의 판단을 생략할 수도 있다.
도 6의 순서도는 i 번째 어플리케이션에 대해서 1회의 위치 변경 후 지연량과 중첩된 어플리케이션의 증감을 기준으로 곧바로 배치를 확정하는 실시예를 나타낸다.
다른 실시예에서는 i 번째 어플리케이션에 대해서 변경 가능한 모든 조합에 대해서 블록들의 위치를 변경하고 위치 변경에 따른 각각의 지연량과 중첩된 어플리케이션의 개수를 종합적으로 고려하여 위치 변경을 결정할 수도 있다.
구체적인 지연량과 어플리케이션의 개수에 대한 고려 방법은 실시예에 따라 다양하게 변경될 수 있다.
도 4로 돌아가 배치가 완료되면 어플리케이션 별로 라우팅 작업을 진행한다(S410).
라우팅 작업시에는 어플리케이션 선택 신호(S)에 따라 경로를 선택할 수 있는 스위치를 이용할 수 있다.
이후 어플리케이션 별로 타이밍을 분석하고(S420) 최종 결과물을 출력한다(S430).
타이밍 분석은 어플리케이션 별로 최대 지연량을 산출하는 작업을 포함할 수 있다.
이상에서 도면을 참조하여 본 발명의 실시예를 개시하였으나 이상의 개시가 본 발명의 권리범위를 한정하는 것은 아니다. 본 발명의 권리범위는 아래의 특허청구범위에 문언적으로 기재된 범위와 그 균등 범위로 정해질 수 있다.
10: SRAM 어레이
20: 스위치 어레이
1000: LUT
100-1, 100-2, 100-3, 100-4: 단위 셀
110: 데이터 저장부
120: 기준 데이터 저장부
130: 증폭부
140: 접지부
150: 차단부
161: 제 1 데이터 출력부
162: 제 2 데이터 출력부
170: 제 1 쓰기 제어부
180: 제 2 쓰기 제어부
200: 디코더

Claims (24)

  1. 다수의 어플리케이션에 대응하는 다수의 비휘발성 메모리 소자를 포함하고 어플리케이션 선택 신호에 따라 상기 다수의 비휘발성 메모리 소자 중 어느 하나의 비휘발성 메모리 소자를 선택하는 데이터 저장부;
    디코더에서 출력되는 활성화 신호에 따라 상기 어느 하나의 비휘발성 메모리 소자에 저장된 정보를 증폭하는 증폭부; 및
    쓰기 신호에 따라 데이터 신호에 대응하는 정보를 상기 어느 하나의 비휘발성 메모리 소자에 프로그램하는 쓰기 제어부
    를 포함하되,
    상기 데이터 저장부는 상기 어플리케이션 선택 신호에 따라 상기 다수의 비휘발성 메모리 소자를 상기 증폭부에 선택적으로 연결하는 다수의 제 1 선택 스위치와 상기 어플리케이션 선택 신호에 따라 상기 다수의 비휘발성 메모리 소자를 상기 쓰기 제어부에 선택적으로 연결하는 다수의 제 2 선택 스위치를 포함하는 LUT.
  2. 청구항 1에 있어서,
    기준 비휘발성 메모리 소자를 포함하는 기준 데이터 저장부를 더 포함하고,
    상기 증폭부는 상기 어느 하나의 비휘발성 메모리 소자와 상기 기준 비휘발성 메모리 소자에 저장된 정보의 차이에 대응하는 신호 차이를 증폭하는 LUT.
  3. 삭제
  4. 청구항 1에 있어서, 상기 증폭부의 출력을 버퍼링하는 데이터 출력부를 더 포함하는 LUT.
  5. 청구항 1에 있어서, 상기 쓰기 신호에 따라 상기 증폭부와 상기 데이터 저장부를 선택적으로 차단하는 차단부를 더 포함하는 LUT.
  6. 청구항 1에 있어서, 상기 쓰기 제어부는 상기 데이터 저장부의 양단에 연결된 제 1 쓰기 제어부와 제 2 쓰기 제어부를 포함하고,
    상기 쓰기 신호가 활성화되는 경우 상기 제 1 쓰기 제어부와 상기 제 2 쓰기 제어부는 상기 데이터 신호에 따라 상기 데이터 저장부에 흐르는 쓰기 전류의 방향을 조정하는 LUT.
  7. 다수의 어플리케이션에 대응하는 다수의 비휘발성 메모리 소자를 포함하고 어플리케이션 선택 신호에 따라 상기 다수의 비휘발성 메모리 소자 중 어느 하나의 비휘발성 메모리 소자를 선택하는 데이터 저장부;
    디코더에서 출력되는 활성화 신호에 따라 상기 어느 하나의 비휘발성 메모리 소자에 저장된 정보를 증폭하는 증폭부; 및
    쓰기 신호에 따라 데이터 신호에 대응하는 정보를 상기 어느 하나의 비휘발성 메모리 소자에 프로그램하는 쓰기 제어부
    를 포함하되,
    상기 데이터 저장부는 상기 어플리케이션 선택 신호에 따라 상기 다수의 비휘발성 메모리 소자를 상기 증폭부에 선택적으로 연결하는 다수의 제 1 선택 스위치와 상기 어플리케이션 선택 신호에 따라 상기 다수의 비휘발성 메모리 소자를 상기 쓰기 제어부에 선택적으로 연결하는 다수의 제 2 선택 스위치
    를 포함하는 FPGA.
  8. 삭제
  9. 청구항 7에 있어서,
    기준 비휘발성 메모리 소자를 포함하는 기준 데이터 저장부를 더 포함하고,
    상기 증폭부는 상기 어느 하나의 비휘발성 메모리 소자와 상기 기준 비휘발성 메모리 소자의 정보 차이를 증폭하는 FPGA.
  10. 삭제
  11. 청구항 7에 있어서, 상기 쓰기 제어부는 상기 데이터 저장부의 양단에 연결된 제 1 쓰기 제어부와 제 2 쓰기 제어부를 포함하고,
    상기 쓰기 신호가 활성화되는 경우 상기 제 1 쓰기 제어부와 상기 제 2 쓰기 제어부는 상기 데이터 신호에 따라 상기 데이터 저장부에 흐르는 쓰기 전류의 방향을 조정하는 FPGA.
  12. 다수의 어플리케이션을 선택적으로 실행하기 위하여 미리 프로그램 되는 다수의 비휘발성 메모리 소자를 포함하는 FPGA의 디자인 방법으로서,
    상기 다수의 어플리케이션 각각에 대해서 FPGA를 구성하는 블록들을 결정하는 제 1 단계;
    상기 다수의 어플리케이션 모두를 수용할 수 있는 FPGA의 크기를 결정하는 제 2 단계; 및
    상기 결정된 크기의 FPGA의 블록 어레이에 상기 다수의 어플리케이션을 위한 블록들을 배치하는 제 3 단계;
    를 포함하는 FPGA 디자인 방법.
  13. 청구항 12에 있어서, 상기 블록들은 CLB 단위, 패드 단위 또는 메모리 단위의 블록을 포함하는 FPGA 디자인 방법.
  14. 청구항 12에 있어서, 상기 제 1 단계는
    상기 다수의 어플리케이션 각각에 대해서 캐드 정보를 입력받는 단계;
    상기 캐드 정보로부터 게이트 레벨 넷-리스트를 생성하는 단계;
    상기 게이트 레벨 넷-리스트로부터 LUT 레벨 넷-리스트를 생성하는 단계; 및
    상기 LUT 레벨 넷-리스트에 포함된 LUT들을 CLB 단위의 블록으로 묶는 단계
    를 포함하는 FPGA 디자인 방법
  15. 청구항 14에 있어서, 상기 CLB 단위의 블록으로 묶는 단계는 패드 단위의 블록과 메모리 단위의 블록을 결정하는 단계를 더 포함하는 FPGA 디자인 방법.
  16. 청구항 12에 있어서, 상기 제 2 단계는
    상기 FPGA의 크기를 초기화하는 단계; 및
    상기 다수의 어플리케이션에 대응하는 다수의 CLB 단위의 블록 개수 중 최대값을 수용할 수 있을 때까지 상기 FPGA의 크기를 증가시키는 단계
    를 포함하는 FPGA 디자인 방법.
  17. 청구항 16에 있어서,
    상기 다수의 어플리케이션에 대응하는 다수의 패드 단위의 블록 개수 중 최대값을 수용할 수 있을 때까지 상기 FPGA의 크기를 증가시키는 단계를 더 포함하는 FPGA 디자인 방법.
  18. 청구항 16에 있어서,
    상기 다수의 어플리케이션에 대응하는 다수의 메모리 단위의 블록 개수 중 최대값을 수용할 수 있을 때까지 상기 FPGA의 크기를 증가시키는 단계를 더 포함하는 FPGA 디자인 방법.
  19. 청구항 12에 있어서, 상기 제 3 단계는
    상기 블록 어레이에 상기 다수의 어플리케이션 중 어느 하나의 어플리케이션을 위한 블록을 임의로 배치하고 기존에 배치가 완료된 어플리케이션들 중에서 상기 어느 하나의 어플리케이션을 위한 블록들을 중첩적으로 사용하는 어플리케이션들의 총 개수인 제 1 개수를 결정하는 제 3-1 단계;
    상기 어느 하나의 어플리케이션을 위한 블록의 위치를 조정한 후 기존에 배치가 완료된 어플리케이션들 중에서 상기 어느 하나의 어플리케이션을 위한 블록들을 중첩적으로 사용하는 어플리케이션들의 총 개수인 제 2 개수를 결정하는 제 3-2 단계; 및
    상기 제 1 개수와 상기 제 2 개수를 비교하여 상기 제 1 개수가 상기 제 2 개수 미만인 경우 위치 변경을 무효화하고 상기 제 3-2 단계를 반복하고 상기 제 1 개수가 상기 제 2 개수 이상인 경우 상기 어느 하나의 어플리케이션을 위한 블록의 배치를 완료하는 제 3-3 단계
    를 포함하는 FPGA 디자인 방법.
  20. 청구항 19에 있어서, 상기 제 3-1 단계는 상기 어느 하나의 애플리케이션을 위하여 배치된 블록들을 통과하는데 걸리는 시간에 대응하는 제 1 지연을 더 결정하고, 상기 제 3-2 단계는 상기 블록의 위치를 조정한 후 상기 어느 하나의 어플리케이션을 위하여 위치가 조정되어 배치된 블록들을 통과하는데 걸리는 시간에 대응하는 제 2 지연을 더 결정하고, 상기 제 3-3 단계는 상기 제 1 지연이 상기 제 2 지연보다 작은 경우 위치 변경을 무효화하는 FPGA 디자인 방법.
  21. 청구항 20에 있어서, 상기 제 3-3 단계는 상기 제 1 지연이 상기 제 2 지연보다 큰 경우 상기 제 1 개수와 상기 제 2 개수를 비교하는 FPGA 디자인 방법.
  22. 청구항 21에 있어서, 상기 제 3-3 단계는 상기 제 1 개수가 상기 제 2 개수 이상인 경우 상기 제 1 지연과 상기 제 2 지연을 비교하고 상기 제 1 지연이 상기 제 2 지연 미만인 경우 상기 어느 하나의 어플리케이션을 위한 블록의 배치를 완료하는 FPGA 디자인 방법.
  23. 청구항 19에 있어서, 상기 다수의 어플리케이션 각각에 대해서 상기 제 1 단계 내지 제 3 단계를 반복하여 수행하는 FPGA 디자인 방법.
  24. 청구항 12에 있어서, 상기 다수의 어플리케이션 각각에 대응하는 라우팅 작업을 수행하는 단계를 더 포함하는 FPGA 디자인 방법.
KR1020170177688A 2017-12-22 2017-12-22 비휘발성 메모리 소자를 포함하는 lut, lut를 포함하는 fpga 및 fpga 디자인 방법 Active KR102409505B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170177688A KR102409505B1 (ko) 2017-12-22 2017-12-22 비휘발성 메모리 소자를 포함하는 lut, lut를 포함하는 fpga 및 fpga 디자인 방법
US16/107,906 US10419000B2 (en) 2017-12-22 2018-08-21 Look up table including a nonvolatile memory element, FPGA including the look up table, and method for designing the FPGA
US16/533,596 US10924117B2 (en) 2017-12-22 2019-08-06 Method for designing an FPGA

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170177688A KR102409505B1 (ko) 2017-12-22 2017-12-22 비휘발성 메모리 소자를 포함하는 lut, lut를 포함하는 fpga 및 fpga 디자인 방법

Publications (2)

Publication Number Publication Date
KR20190076134A KR20190076134A (ko) 2019-07-02
KR102409505B1 true KR102409505B1 (ko) 2022-06-14

Family

ID=66949674

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170177688A Active KR102409505B1 (ko) 2017-12-22 2017-12-22 비휘발성 메모리 소자를 포함하는 lut, lut를 포함하는 fpga 및 fpga 디자인 방법

Country Status (2)

Country Link
US (2) US10419000B2 (ko)
KR (1) KR102409505B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210130470A (ko) * 2020-04-22 2021-11-01 에스케이하이닉스 주식회사 활성화 함수 처리 방법, 활성화 함수 처리 회로, 및 그것을 포함하는 신경망 시스템

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6542000B1 (en) 1999-07-30 2003-04-01 Iowa State University Research Foundation, Inc. Nonvolatile programmable logic devices
US6476636B1 (en) * 2000-09-02 2002-11-05 Actel Corporation Tileable field-programmable gate array architecture
US7093225B2 (en) * 2002-07-17 2006-08-15 Osann Robert Jr FPGA with hybrid interconnect
US6954085B2 (en) * 2003-10-13 2005-10-11 International Business Machines Corporation System and method for dynamically executing a function in a programmable logic array
WO2005119532A2 (en) * 2004-06-04 2005-12-15 The Regents Of The University Of California Low-power fpga circuits and methods
US8295082B2 (en) 2008-08-15 2012-10-23 Qualcomm Incorporated Gate level reconfigurable magnetic logic
KR20110057601A (ko) * 2009-11-24 2011-06-01 삼성전자주식회사 비휘발성 논리 회로, 상기 비휘발성 논리 회로를 포함하는 집적 회로 및 상기 집적 회로의 동작 방법
KR101660409B1 (ko) * 2010-08-03 2016-09-28 삼성전자주식회사 룩-업 테이블 회로
US9152748B2 (en) * 2011-05-06 2015-10-06 Xcelemor, Inc. Computing system with switching mechanism and method of operation thereof
KR101802945B1 (ko) * 2011-06-27 2017-12-29 삼성전자주식회사 논리 장치 및 이를 포함하는 반도체 패키지
US9335977B2 (en) * 2011-07-28 2016-05-10 National Instruments Corporation Optimization of a data flow program based on access pattern information
FR2990089B1 (fr) * 2012-04-27 2014-04-11 Commissariat Energie Atomique Dispositif logique reprogrammable resistant aux rayonnements.
US9298438B2 (en) * 2012-06-20 2016-03-29 Microsoft Technology Licensing, Llc Profiling application code to identify code portions for FPGA implementation
KR101920719B1 (ko) * 2012-11-19 2019-02-13 삼성전자주식회사 논리 장치, 논리 장치를 포함하는 디지털 필터 및 논리 장치를 제어하는 방법
US10454480B2 (en) * 2016-08-03 2019-10-22 Silicon Mobility Embedded FPGA with multiple configurable flexible logic blocks instantiated and interconnected by abutment

Also Published As

Publication number Publication date
KR20190076134A (ko) 2019-07-02
US20190363718A1 (en) 2019-11-28
US10419000B2 (en) 2019-09-17
US20190199353A1 (en) 2019-06-27
US10924117B2 (en) 2021-02-16

Similar Documents

Publication Publication Date Title
KR102245385B1 (ko) 자기 소자를 포함하는 lut, 이를 포함하는 fpga 및 기술 매핑 방법
US10043581B2 (en) Memory circuit capable of implementing calculation operations
US7196942B2 (en) Configuration memory structure
US10847212B1 (en) Read and write data processing circuits and methods associated with computational memory cells using two read multiplexers
US8279660B2 (en) Static random-access memory with boosted voltages
US10847213B1 (en) Write data processing circuits and methods associated with computational memory cells
KR20150132482A (ko) Fpga 상호접속에서 세분화된 파워 게이팅
Tian et al. A field programmable transistor array featuring single-cycle partial/full dynamic reconfiguration
Khaleghi et al. A resistive RAM-based FPGA architecture equipped with efficient programming circuitry
KR102409505B1 (ko) 비휘발성 메모리 소자를 포함하는 lut, lut를 포함하는 fpga 및 fpga 디자인 방법
JP7114096B2 (ja) メモリ回路デバイス及びその使用方法
US7319619B1 (en) Programmable logic device memory blocks with adjustable timing
US6185126B1 (en) Self-initializing RAM-based programmable device
Guillemenet et al. On the Use of Magnetic RAMs in Field‐Programmable Gate Arrays
US10262732B2 (en) Programmable array logic circuit and operating method thereof
JP5328938B2 (ja) 集積回路の入力ポートにおける消費電力を低減するための回路および方法
US7236411B1 (en) Programmable memory access parameters
US6680871B1 (en) Method and apparatus for testing memory embedded in mask-programmable logic device
US20160277029A1 (en) Reconfigurable logic device
US7663401B1 (en) Multiplexer initialization systems and methods
EP3416171B1 (en) Integrated circuits with complementary non-volatile resistive memory elements
EP1547248A2 (en) High speed zero dc power programmable logic device (pld) architecture
US10191661B1 (en) Lutram dummy read scheme during error detection and correction
KR102499712B1 (ko) 룩업 테이블 회로
JPH087585A (ja) 不揮発性メモリ用計数終了検出装置

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20171222

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20201204

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20171222

Comment text: Patent Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20220125

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20220509

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20220610

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20220610

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20250527

Start annual number: 4

End annual number: 4