KR100446338B1 - 논리 소자의 어레이를 구성하는 방법 및 시스템 - Google Patents

논리 소자의 어레이를 구성하는 방법 및 시스템 Download PDF

Info

Publication number
KR100446338B1
KR100446338B1 KR10-1999-7003512A KR19997003512A KR100446338B1 KR 100446338 B1 KR100446338 B1 KR 100446338B1 KR 19997003512 A KR19997003512 A KR 19997003512A KR 100446338 B1 KR100446338 B1 KR 100446338B1
Authority
KR
South Korea
Prior art keywords
cell
logic
logical
design
fpga
Prior art date
Application number
KR10-1999-7003512A
Other languages
English (en)
Other versions
KR20000052714A (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 아트멜 코포레이숀
Publication of KR20000052714A publication Critical patent/KR20000052714A/ko
Application granted granted Critical
Publication of KR100446338B1 publication Critical patent/KR100446338B1/ko

Links

Classifications

    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Stored Programmes (AREA)
  • Logic Circuits (AREA)

Abstract

게이트 어레이의 일부 재구성에 대한 시스템 및 방법은 논리 회로의 배치 및 경로(312)에 의해 설계 데이터베이스(314)를 발생하는 것을 포함한다. 설계 데이터베이스는 배치 및 경로 설정 동작에 의해 생성된 논리 셀 구성을 변경(322)하도록 액세스된다. 변경된 것을 기초로 하여, 변경된 논리 셀을 실행하는 비트스트링만을 포함하는 일부 구성 비트스트림이 생성된다(324). 일부 구성 비트스트림이 게이트 어레이에 다운로드됨으로써(326), 게이트 어레이의 일부 재구성에 효과가 있다. 대안의 실시예에서, 본 발명에 따른 시스템은 응용 프로그램(602)이 온-더-플라이 어레이를 재구성하기 위해 프로그램 가능 게이트 어레이를 포함하는 시스템에서 실행하도록 하는 소프트웨어 유틸리티(604)를 포함한다. 유틸리티는 실행 동작동안 검출된 외부 상태에 대응하는 설계를 변경하기 위한 루틴을 포함한다. 이러한 목적은 이미 결정된 다른의 설계를 제공하여 응용 프로그램이 결정되도록 하기 위해 필요하다는 것이 명백하다.

Description

논리 소자의 어레이를 구성하는 방법 및 시스템{METHOD AND SYSTEM FOR CONFIGURING AN ARRAY OF LOGIC DEVICES}
초기의 집적 회로 기술에서, 시프트 레지스터, 멀티플렉서, 가산기등과 같은 논리 회로는 디지털 IC로 구성되었다. 이러한 소규모 집적(SSI) 회로는 일반적으로 AND 게이트, OR 게이트, 플립 플롭, 래치등과 같이 몇 다스(dozen) 정도의 트랜지스터를 요구하는 작은 수(예를 들어, 4개에서 8개)의 논리 게이트를 포함한다. 기술이 진보됨에 따라, 많은 수의 트랜지스터를 IC내에 내장할 수 있게 되었다. 현재, 반도체 제조 업자는 하나의 다이 상에 수백만개의 트랜지스터를 설치하도록 할 수 있어서 현재의 마이크로 프로세서와 같은 매우 정교한 칩을 제조하게 되었다.
이러한 VLSI(고밀도 집적 회로)와 ULSI(초고밀도 집적 회로) 칩이 내장되는 시스템도 동일하게 정교하다. 이러한 시스템은 일반적으로 여러 가지의 지원 논리 기능을 제공하도록 다수의 주문형 논리 칩을 사용한다. 게이트 어레이는 제조업자가 고객의 논리 설계를 신속하게 구현하도록 하기 위하여 개발되었다. 이들 소자들은 기본 방법을 사용하여 제조된 논리 게이트의 어레이로 구성된다. 소정의 논리 기능을 구현하기 위해 금속층을 논리 게이트에 접속시키는 제조의 마지막 단계동안 주문에 맞는 소자로 된다.
이들 게이트 어레이는 적은 수의 소자만을 요구하거나, 논리 설계를 완전히 개발하지는 않았지만 시험용으로 작은 샘플을 요구하는 설계자에 대해 많은 융통성을 제공하는 프로그램 가능 소자로 발전되었다. 또 다른 형태의 프로그램 가능 논리 소자는 소자에서 논리 게이트간의 상호 접속을 제공하는 퓨즈를 사용한다. 퓨즈는 접속을 끊기 위하여 끊어지도록 된다. 그러나, 반(反)퓨즈(anti-fuse)라고 불리는 퓨즈의 경우는 접속이 반대로 형성된다. 그러므로, 이러한 소자는 한 세트의 논리 기능만 저장하는 것으로 한번만 사용될 수 있다.
프로그램 가능 논리 소자의 계속된 발전은 재프로그램이 가능한 상호 접속(re-programmable interconnection)의 개발을 가져왔고, 더나아가 구성 가능 논리 셀(configurable logic cell)의 발전에 많은 영향을 끼쳤다. 이름이 의미하는 것처럼, 구성 가능 논리 셀은 설계자가 셀을 다수의 기본 논리 게이트나 보다 상위 레벨의 논리 기능중 어느 하나로서 기능을 하도록 프로그램할 수 있도록 한다. 현재의 제조 기술은 수천개의 구성 가능 논리 셀과 이들과 관련된 상호 접속을 갖는, 필드 프로그램 가능 게이트 어레이(FPGA's)로 알려진 고밀도 소자의 생산을 가능하게 한다. 이들 고밀도 소자의 유효성은 설계자가 복합적인 논리 기능을 더 사용하게 할 수 있다. 선행자와 같이, FPGA는 프로그램 가능 상호 접속을 포함한다. 또한, 상호 접속은 재프로그램 가능하고, 더 나아가 FPGA의 유용성을 증가시킨다.
이 재프로그램 가능 FPGA를 재구성하는 것은 일반적으로 전체 소자를 재구성하는 것을 요구한다. 또한 이들 소자의 보다 진보한 단계가 본 발명의 양수인인 Atmel Corp.에 의해 제조된 FPGA에서 제시된다. 동적인 재구성 가능 FPGA(dynamically reconfigurable FPGA's)로 알려진 바와 같이, 이들 소자는 논리 어레이의 선택된 부분만을 재구성하도록 한다. 이러한 방법에서, 전체의 소자를 프로그램해야 하는 일이 없이 FPGA에 변경이 가해질 수 있어서, 어레이의 선택된 부분만을 재구성할 수 있도록 한다.
도 1을 참조하면, 일반적인 FPGA(100)는 FPGA의 자원(resource)이라고 부르는 복수의 구성 가능 논리 셀(130), 구성 가능 I/O 블럭(110) 및 구성 가능 상호 접속(120,122)을 포함한다. 비록 상호 접속(120,122)이 격자식의 각 상호 접속 라인으로 도시될 지라도, 예를 들어 도 3B에 도시된 바와 같이 실제적으로 각 "라인"은 한 세트의 상호 접속 라인이다. 각 논리 셀(130)과 I/O 블럭(110)은 상호 접속(120,122)에 선택적으로 결합될 수 있는 데이터 라인(140,142)을 포함한다.
일반적인 설계는 FPGA에서 구현된 하나 이상의 논리 회로의 설계로 시작된다. 논리 설계는 논리 게이트와, 논리 게이트간의 상호 접속을 포함한다. 그러나, 디지털 필터와 같은 특정 설계는 이들의 특성을 정의하기 위해 "상수", 즉 1과 0의 스트링을 사용하는 것을 포함한다. 본 발명의 설명 목적을 위해, 이러한 상수는 설계의 한 부분으로 간주되어 논리 게이트로서 언급될 것이다.
예를 들어, 도 2는 간단한 논리 설계를 나타낸다. 논리 설계내의 각 구성 소자는 인스턴스명(instance name)으로 식별된다. 그러므로, 도 2에 도시된 AND 게이트와 OR 게이트는 G1-G3로 이름지어진다. 도 3A는 FPGA(100')에서 논리 설계를 나타내는 법을 도시한다. 도 2에 도시된 각 게이트(G1-G3)와 상호 접속은 도 3A에 도시된 바와 같이 선택된 논리 셀과 상호 접속에 맵핑(mapping)된다. 유사하게, 입력 A-D와 출력 OUT(도 2에 도시)은 선택된 I/O 블럭에 맵핑된다. 그러므로, 상호 접속(120a-120c, 122a-122c)(강조 표시됨)은 논리 셀(G1-G3)과 I/O 블럭(110a-110e)을 함께 접속한다. 도 3A의 구성의 확대부는 여러 가지의 논리 셀, 상호 접속 및 I/O 블럭간의 특정한 상호 접속을 나타내는 도 3B에 도시된다. 비록 도면내의 설계가 상수의 사용을 도시하지 않을 지라도, 현대의 FPGA의 논리 셀은 논리 "1"이나 논리 "0"을 출력하도록 구성될 수 있고, 논리 셀의 그룹은 필요하면 1과 0의 하나 이상의 스트링(string)을 산출하도록 구성될 수 있다.
도 3A에 도시된 바와 같이, 도 2에 도시된 설계를 FPGA로 변환하는 단계들을 이하에서 설명한다. 오늘날의 대부분의 설계는 기능면에서 상당히 복잡해지는 경향이 있기 때문에, 컴퓨터 이용 설계(CAD) 툴이 설계 과정을 용이하게 하기 위하여 사용된다. 그러므로, 도 4에서, 설계 순서도(200)는 예를 들어, CAD 툴의 사용을 통해 논리 회로에 대한 초기 설계를 입력하는 것으로 시작한다(단계 210).
다음은 논리 회로의 논리 게이트의 배치와 라우팅(routing)이다(단계 212). 배치와 라우팅 단계의 결과로서 설계 데이터베이스가 생성된다(단계 214). 설계 데이터베이스는 논리 회로의 구현에 참여하는, 선택된 자원의 위치와 라우팅 또는 논리 구성을 포함하여, FPGA의 논리 셀, I/O 블럭 및 상호 접속(즉, 자원들)을 특정한다. 도 1은 논리 셀의 위치를 확인하는데 사용된 다수의 좌표계중 하나를 도시한 것이다. 도 1에 도시된 규칙(convention)에서는, 셀은 좌측에서 우측으로, 하측에서 상측의 순서로 하여 하측의 가장 좌측 셀(0,0)에서 시작하여 상측의 가장 우측 셀(3,3)에서 끝난다. 일반적으로 설계 데이터베이스는 추가적으로, 설계 단계 동안 논리 회로의 도 2에서의 구성 소자에 지정되는 인스턴스명을 포함한다.
설계 데이터베이스에 포함된 정보로부터, 구성 비트스트림(bitstream)은 일반적으로 비트스트림 컴파일러라고 부르는 툴에 의해 생성된다(단계 216). 비트스트림 컴파일러는 설계 데이터베이스에 저장된 위치와 구성 정보를 갖고, FPGA내의 여러 가지의 자원을 구성하는 정의(defining) 비트스트림을 생성한다. 물리적인 레벨에서, 정의 비트스트링(bitstring)은 각 논리 셀과 I/O 블럭의 구성과, 논리 셀과 I/O 블럭의 상호 접속을 실제적으로 제어하는 FPGA내의 트랜지스터(스위치)의 ON/OFF 상태를 나타낸다.
여기서, 구성 비트스트림은 논리 어레이로 다운로드되어 소자를 구성하거나 (단계 218a), 디스크에 저장될 수 있다(단계 218b). 이러한 대안들은 도 4에서 점선으로 표시되어 있다.
비록 설계의 오류가 수정되고 목적한 대로 동작할 지라도 초기 설계를 바꾸기를 원할때가 가끔씩 발생할 것이다. 예를 들어, 새로운 요구는 초기 설계의 변경을 필요로 하는 기능적 특성에 대한 변경을 초래할 수 있다. 종래의 기술을 사용하면, 초기 설계의 최종 버전으로의 변경은 이전의 단계를 반복하게 한다(단계 220). 그러므로, 설계자는 CAD 툴을 사용하여 초기 설계의 최종 버전에 액세스(access)하고 설계에 소정의 변경을 한다. 제2의 배치 및 라우팅 단계(단계 222)가 실행되고 그로부터 제2 설계 데이터베이스가 생성된다(단계 224). 제2 구성 비트스트림은 새로운 설계 데이터베이스를 기초로 하는 비트스트림 컴파일러에 의해 생성된다(단계 226).
제1 구성 비트스트림과 같이, 제2 구성 비트스트림은 FPGA에 다운로드될 수 도 있고 안될 수도 있다. 다운로드되기를 원한다면, 두가지의 선택이 가능하다: 비트스트림은 전체적으로 FPGA에 다운로드되어, 변경된 설계를 포함하도록 전체 어레이를 재구성할 수 있다. 또 다른 방법은 FPGA가 동적으로 재구성되는 것이다. 이는 소자가 부분적으로 재구성될 수 있고, 설계에서의 변경에 대응하는 제2 구성 비트스트림의 부분만 다운로드 될 수 있음을 의미한다. 이는 일부(재구성) 비트스트림을 생성하도록 제1 과 제2 구성 비트스트림 사이의 차이를 결정함으로써 첫번째로 이루어진다(단계 228). 일부 비트스트림은 동적인 재구성 가능 FPGA에 다운로드됨으로써(단계 230), 변경된 설계에 포함된 논리 셀, 상호 접속 및 I/O들만이 재프로그램되는 FPGA의 일부 재구성을 실현한다. 마지막으로, 사이클(cycle)은 설계의 기능적인 요구에 대한 변경들이 발생될 때, 설계에 대한 추가적인 변경들을 위해 반복될 수 있다(단계 232).
설계시 논리 게이트의 배치와 라우팅은 집약적인 계산을 요하는 활동이다. 설계자가 고밀도 FPGA의 유용성에 따라 복잡하게 설계를 증가함에 따라, 배치와 라우팅 연산도 현저하게 증가할 수 있다. 도 4에서 도시된 종래 기술의 방법에 따라, 배치와 라우팅의 계산에 걸리는 시간은, 설계 사이클의 각각의 반복(iteration)이 모든 배치와 라우팅 동작을 요구하기 때문에, 위험 수위에 도달할 수 있다.
종래 방법의 또 다른 면은 변경된 설계가 이전의 설계와는 다른 배치와 라우팅 구성이 될 수 있는 가능성이다. 이는 이전의 설계가 어떤 정확한 타이밍 특성을 제공하도록 미세하게 튜닝(tuning)된 경우라면 문제가 된다. 모든 배치와 라우팅 연산을 통해 처리되는 차후의 설계는, 다른 네트(net) 길이로, 논리 게이트의 배치를 다르게 하여 회로의 타이밍에 좋지 않은 영향을 준다. 이는 실시간 응용을 포함하고 있는 상황이라면 받아들여질 수 없다.
전체적으로 완벽하게 오류가 수정된 논리 설계의 재설계에 대한 응답 시간의 관점에서 종래 기술을 향상시키는 방법론이 필요하다. 또한, 기존에 설계되 부분에서, 설계 변경에 포함되지 않은 일부분이 영향을 받지 않고 남아 있을 수 있도록 하는 개발 방법을 갖는 것이 바람직하다.
지금까지 설명은 설계자의 엔지니어링 환경에서 논리 회로의 설계와 관련된 부분을 중심으로 했다. 그러나, FPGA의 필드 응용이 단일 정적 설계에 적합하지 않을 수도 있다. 비록 FPGA가 실제 동작 조건하에서 필드에서 재구성될수 있을 지라도, 새로운 구성은 일반적으로 EPROM과 같은 비휘발성 소자에 저장된 완전한 설계로 이루어진다. 구성 비트스트림은 EPROM으로부터 판독되어 FPGA로 다운로드된다. 그러므로, 한 벌의 이용 가능한 구성은 EPROM의 저장 능력에 한정된다. 어댑티브 필터링(adaptive filtering)과 같은 응용에서, 필터 응답은, 필터링되는 데이터의 주파수와 위상 특성과 같은 기준(criteria)들, 즉 일반적으로 예측할 수 없는 조건을 기초로 하여 실행 시간(run-time) 중에 변경될 수 있는 것이 매우 바람직하다. 이러한 경우에는 필터 파라미터와 같은 새로운 구성을 선험적으로 상술하는 것이 가능하지 않다.
장치가 동작하는 환경에 응답하여 온-더-플라이(on-the-fly) 방식으로 FPGA 구성하는 능력 또한 필요하다. 추가적으로, 어댑티브 필터의 경우와 같이 FPGA의 일부만 재구성될 필요가 있기 때문에, 온-더-플라이 일부 재구성 능력을 갖는 것이 바람직하다.
본 발명은 프로그램 가능 논리 소자에 관한 것으로, 특히 필드 프로그램 가능 게이트 어레이의 구성에 관한 것이다.
도 1은 일반적인 FPGA의 구성을 도시한 도면.
도 2는 논리 회로를 예시한 도면.
도 3A 및 도 3B는 도 1의 FPGA내의 도 2의 논리 회로의 구현을 도시한 도면.
도 4는 FPGA의 설계에서 사용된 일반적인 단계의 개요를 도시한 도면.
도 5는 본 발명의 설계 방법론의 실시예를 설명하는 도면.
도 6은 본 발명에 따른 FPGA를 구성하는 시스템의 블록도.
도 7A 내지 도 7C는 디지털 필터 설계를 설명하는 도면.
도 8A 및 도 8B는 본 발명의 사용자 인터페이스의 샘플 스크린샷(screenshot)을 도시한 도면.
도 9A 내지 도 9D는 ROM을 기반으로 하는 탐색표를 사용하는 가산기 회로와 감산기 회로의 실행을 도시한 도면.
도 10A 및 도 10B는 본 발명의 사용자 인터페이스의 샘플 스트린샷을 도시한 도면.
도 11은 실시간 FPGA 재구성에 대한 시스템을 도시한 도면.
본 발명에 따라, 동적 재구성 가능 FPGA를 구성하는 방법은 초기 논리 설계를 입력하는 것으로 시작한다. 배치와 라우팅은 설계상에서 설계를 구현할 FPGA내의 논리 셀과 상호 접속에 위치를 할당함으로써 실행된다. 설계 데이터베이스는 배치와 라우팅 동작의 결과이다. 다음으로, 설계 데이터베이스 상에서 동작하는 비트스트림 컴파일러는 구성 비트스트림을 발생한다. 비트 스트림은 FPGA로 다운로드되어 소자를 구성하든지, 저장 매체 상에 간단히 저장될 수 있다.
초기 설계를 최종 작업 버전으로 변경하는 것은 대응하는 설계 데이터베이스를 기초로 하여 이루어진다. 변경된 설계 데이터베이스는 저장되고, 제2 구성 비트스트림은 변경된 설계 데이터베이스로부터 발생된다. 본 발명에 따라, 제2 구성 비트스트림은 변경된 논리 설계에 대응하는 논리 셀, I/O 블럭 및 상호 접속에 대한 정의 비트스트링으로만 구성된다. 제2 비트스트림을 일부 구성 비트스트림이라고 부른다.
설계의 변경을 수행하기 위해서 설계 데이터베이스에 직접 액세스(access)함으로써, 달리 요구되는 시간 소모성의 배치와 라우팅 계산은 완전히 없어진다. 이는 예를 들어 FPGA를 내장한 시스템의 기능적인 요구의 변경에 따라 논리 설계의 최종 작업 버전이 변경되야만 할때, 특히 유용하고 바람직한 특징이다. 많은 경우에, 전체 설계의 매우 국한된 부분만 포함하는 설계 변경은 본질적으로 증식적(incremental)이다. 다른 경우에는, 설계자가 논리 설계의 여러 가지 최종 작업 버전을 실험하기를 원할 수 있다. 본 발명의 구성 방법론은 설계 변경을 수행하기 위한 매우 짧은 응답 시간을 확실히 제공하여, 증식적인 변경과 여러 조건 하의 특성 조사("what-if") 실험은, 프로젝트의 개발과 생산 배포 스케줄에 악영향을 주지 않도록, 적합하고 편리하다. 더우기, 배치와 라우팅 연산을 우회(bypass)할 수 있기 때문에, 설계자에 의해 변경되지 않은 설계의 타이밍에 결정적인 부분은 영향을 받지 않을 것이고, 전송자에게 알려진 타이밍 성능을 전달하는 것이 보장될 것이다. 또한, 일반적으로 변경되지 않은 설계의 모든 부분은 예상된 바대로 계속 동작할 것이다. 그러므로, 본 발명의 방법에 따르면, FPGA 응용은 구성이 정확한 것이 보장되며, 따라서 기능적으로도 정확하다.
본 발명의 바람직한 실시예에서, 설계 데이터베이스는 그래픽 인터페이스를 통해 사용자에게 표시된다. 인터페이스는 사용자가 디스프레이용 설계 데이터베이스의 일부를 특정할 수 있다. 설계 데이터베이스에서는 FPGA에서의 인스턴스명에 의하여 논리 셀, I/O 블럭 및 상호 접속을 식별한다. 사용자에게, 일정한 논리값을 출력하도록 구성된 것들을 포함하여 논리 셀의 이름, 위치 및 현재 구성이 나타내어진다. 논리 셀간의 상호 접속 또한 나타내어진다.
설계 데이터베이스에 대한 변경은 그래픽이나 텍스트로 표현된 논리 게이트와 상호 접속 옵션의 리스트나 메뉴로부터 선택됨으로써 만들어진다. 상수에 대한 변경은 텍스트로 새로운 상수 값을 입력함으로써 만들어지거나 그래픽으로 개방(논리 "0")되거나 폐쇄(논리 "1")될 수 있는 하나 이상의 스위치를 아이콘 표시로 조작함으로써 만들어질 수 있다.
본 발명의 또 다른 실시예에서, FPGA의 실시간 재구성을 위한 시스템은 새로운 구성 데이터를 다운로딩하기 위한 목적으로 소자에 액세스하는 하드웨어 인터페이스와 소프트웨어 유틸리티를 포함한다. 소프트웨어 유틸리티는, 실행 시간(run-time)동안 검출된 동작 환경에서의 특정한 조건에 응답하여 응용 프로그램이 FPGA를 구성하도록, 일부 구성 비트스트림을 발생하는 수단을 포함한다. 하드웨어 인터페이스와 소프트웨어 유틸리티는 소자가 사용중일 동안 FPGA로 액세스할 수 있도록 하여, 소자의 일부가 재구성될 수 있도록 한다.
도 5를 참조하면, 본 발명의 실시예에 따른 구성 방법론(300)은 초기 설계를 생성하고(단계 310), 제1 설계 데이터베이스를 얻기 위해 배치와 라우팅 연산을 실행하는 것(단계 312 및 단계 314)을 포함한다. 비트스트림 컴파일러는 구성 비트스트림을 생성하여(단계 316), 소자를 구성하도록 FPGA로 다운로드될 수 있다(단계 318a). 이와는 달리, 구성 비트스트림은 저장 장치 상에 간단히 저장될 수 있다(단계 318b). 구성 비트스트림은 FPGA내의 자원이 어떻게 구성되는지를 특정하는 복수의 정의 비트스트링을 포함한다.
초기 논리 설계의 최종 작업 버전으로의 변경이 필요할때, 설계의 변경은 설계 데이터베이스에서 직접 만들어진다. 도 5에서 개략적 도시된 방법(300)을 계속설명하면, 설계 데이터베이스의 일부는 설계자에게 디스플레이된다(단계 320). 설계자는 변경되기를 요하는 설계 데이터베이스의 일부를 선택하고 변경들을 입력한다(단계 322). 입력된 변경을 기초로 하여, 변경된 것에 대응되는 정의 비트스트링으로만 구성된 일부 구성 비트스트림(재구성 비트스트림이라 칭함)이 생성된다. 이 일부 비트스트림은 다운로드 될 수 있고(단계 326), 저장 매체에 저장될 수 있다.
도 5에서 개략적 도시된 방법을 구현하는 동적 구성 가능 FPGA를 구성하는 시스템이 도 6에 도시된다. 시스템(400)은 데이터 저장소(420)와 여러가지의 모듈(402-420)을 포함한다. CAD 툴, 스키매틱 캡쳐(schematic capture) 프로그램 등의 설계 입력 모듈(402)은 디스크(420)와 초기 설계(420a)를 생성하고 디스크(420)에 저장하는데 사용된다. 배치와 라우팅(또는 경로 설정) 모듈(404)은 초기 설계(420a)를 갖고, 설계 데이터베이스(420b)를 생성하며, 이는 디스크에 저장된다. 비트스트림 컴파일러(406)는 구성 비트스트림(420c)을 발생하고, 다운로드 모듈(408)은 FPGA(150)에 구성 비트스트림을 다운로드한다.
초기 논리 설계의 최종 작업 버전에 대한 변경은 그래픽 사용자 인터페이스(GUI) 모듈(410)을 통해 설계자에 의해 입력된다. GUI는 설계 데이터베이스(420b)에서 판독하고 설계자에 의해 선택된 설계 데이터베이스의 일부를 디스플레이한다. GUI는 설계 데이터베이스에 대한 변경을 받아들여서 단지 입력된 변경만을 기초로 하여 일부 비트스트림을 생성한다. GUI는 일부 비트스트림을 발생하는 비스트스림 컴파일러의 기능을 내장한다. 일부 비트스트림(420d)은 디스크에 저장되고, 다운로드 모듈(408)을 통해 FPGA에 다운로드된다. 이와는 달리, GUI는 일부 비트스트림을 다운로드 모듈(408)로 직접적으로 전달할 수 있다. FPGA로 즉시 다운로드되는 것을 요구하지 않는 경우에, 또 다른 저장 매체가 구성(및 재구성) 비트스트림을 저장하는데 사용될 수 있다는 점에 주의해야 한다. 예를 들어, 이후의 배포를 위해서 EEPROM 등에 구성(및 재구성) 비트스트림을 다운로드하는 것이 바람직할 수 있다.
도 6에 도시된 방법론을 설명하기 위해, 도 7A에 도시된 것과 같은 어댑티브 디지털 필터를 고려한다. 필터 설계(500)는 직렬 캐스캐이드(cascade) 방식으로 연결된 지연 레지스터(R1-R7), 멀티플라이어(M1-M8) 및 가산기(A1-A7)로 구성된다. 데이터 폭은 8비트(1바이트)이다. 한 세트의 필터 계수 C0-C7은 곱셈 연산자에 대하여 피승수로서 동작한다. 데이터의 각 바이트가 레지스터를 통해 시프트되고 전파됨에 따라, 멀티플라이어들은 계수와 데이터 사이의 곱셈 항들(terms)을 형성한다. 이때, 곱셈 항들은 가산기들(A1-A7)에 의해 합산된다.
필터 설계(500) 등의 논리 설계에서의 각 성분들이 설계자에 의해 원래 지정된 인스턴스명을 갖는다는 것을 상기한다. 그러므로, 도 7A에서 레지스터는 R1-R7으로 이름지어 지고, 멀티플라이어는 M1-M8로, 가산기는 A1-A7의 인스턴스명을 갖는다. 계수 C0-C7으로도 인스턴스명이 또한 지정된다. 특히, 계수를 포함하는 각 비트도 이름을 갖는다. 이는 도 7C에 도시된 계수 C0에 대한 확대도에서 명확하게 설명된다. 계수는 비트들이 C0_0에서 C0_7로 이름지어진 8비트의 양이다. 도 7A로 돌아가서, R1-R7, M1-M8 및 A1-A7로 이름지어진 구성 소자의 상호 접속도 또한 이름지어짐을 알 수 있다. 그러나, 이들 상호 접속에 대한 인스턴스명은 다이어그램을 복잡하게 하는 것을 피하기 위해 생략하였다.
필터 설계(500)의 배치 및 라우팅은 설계 데이터베이스로 귀결되는데, 인스턴스 명, 각 레지스터와 산술 연산자, 및 이들 기능을 실행하기 위해 선택된 논리 셀의 위치와 구성에 의해 특정된다. 유사한 방식으로, 설계 데이터베이스는 계수 C0-C7를 포함하는 비트의 각 인스턴스명, 이들에 대응되는 논리 셀의 위치, 및 논리 셀이 논리 "0" 이거나 논리 "1"을 발생하도록 구성되는지 여부를 리스트한다. 설계 데이터베이스에 나타나는 논리 셀은 도 1에 도시된 것 등의 FPGA내의 좌표계를 통해 식별된다.
도 7B는 도 7A의 디지털 필터의 변경된 설계(500')를 도시함으로써 상이한 세트의 계수 C'0-C'7가 특정된다. 본 발명의 방법에 따른 변경을 하기를 원하는 설계자는 초기 설계(500)를 기초로 하여 생성된 제1 설계 데이터베이스에 액세싱하는 것으로 시작한다. 텍스트식 인터페이스가 사용하기에 더 어렵고 덜 효율적이긴 해도 경우에 따라 유효할 수는 있지만, 그래픽 사용자 인터페이스(GUI)를 사용하는 것이 가장 바람직하다.
실시예에서, GUI는 논리 설계에서 정의된 논리 상수를 편집하는 모드를 갖는다. 예를 들어, 도 8A의 스크린샷은 설계(500)에서 각 상수(C0-C7)를 디스플레이한다. "인스턴스명"의 열에서는 각 계수 C0-C7를 포함하는 비트명이 있다. 각 비트는 일정한 논리 레벨을 출력하도록 구성된 논리 셀에 의해 구현된다. 대응되는 인스턴스명을 갖는 각 논리 셀을 상기한다. 도 8A의 경우에서와 같이 셀이 일정 범위에서 확인될 때, 그 범위내에서 제1 및 마지막 셀의 인스턴스명이 디스플레이된다. "위치" 열에서는 대응되는 논리 셀의 FPGA내의 위치들이 있다. 설명 목적을 위해, 사용될 좌표 넘버링 규칙은 도 1에 도시된 규칙에 따른다고 가정한다. 그러므로 도 8A에 따르면, 계수 C0를 포함하는 논리 셀은 FPGA에서 행 10의 열 7-14에 위치하고, 계수 C1에 대한 셀은 행 12의 열 7-14에 위치하는 등등이 도시된다. "현재의 구성" 열은 논리 셀에 의해 발생될 현재의 논리 값을 디스플레이한다. 예를 들어, 계수 C0를 포함하는 열 7, 8, 9, 10, 11, 12, 13 및 14에서의 8개의 논리 셀은 각각 논리 "1", "0", "1", "0", "1", "0", "1" 및 "1"을 출력하도록 구성된 것을 나타낸다. "새로운 구성" 열은 사용자가 비트의 스트링으로서 새로운 논리 값을 입력할 수 있도록 하는 입력 필드를 구성한다. 스트링에서 각 비트는 스트링에 의해 표현될 상수 셀(constant cell)들과 1 대 1의 관계로 대응한다.
도 8A에 도시된 디스플레이를 나타내는데 필요한 모든 정보를 설계 데이터베이스가 포함하기 때문에, GUI는 설계 데이터 베이스를 통해 쉽게 검색하고, 일정한 논리 레벨을 발생하고 인스턴스명, 셀 위치 및 현재 구성 정보를 액세스하도록 구성된 논리 셀을 확인한다. 도 8A에 도시된 것과 같이 설계 데이터베이스를 액세싱하고 디스플레이를 발생하기 위한 구체적 소프트웨어의 실현에서의 세부 사항은 주어진 설계 데이터베이스 포맷용으로 사용된 정밀한 데이터 구성에 따라 다양할 수 있다. 이러한 실현 세부 사항은 범주와 당업계의 통상적인 컴퓨터 프로그래머의 능력내에서 이루어진다.
도 8A에 도시된 논리 상수는 수평 인접성(horizontal adjacency)을 선택하여 그룹지어질 수 있다. 상수 논리 셀의 주어진 블럭에서, 셀은 수평 셀의 세트들이나 수직 셀로 그룹지어질 수 있다. 예를 들어, 도 8A에서 셀 위치 (7, 18) 내지 (14, 21)은 32개의 논리 셀의 블럭을 정의한다. 이들 셀은 8개의 수평 인접 셀로 된 4개의 그룹으로서 디스플레이된다. 그러므로, 4개의 수평 그룹은 (7, 18) 내지 (14, 18); (7, 19) 내지 (14, 19); (7, 20) 내지 (14, 20) 및 (7, 21) 내지 (14, 21)이다.
이와는 달리, 블럭 (7, 18) 내지 (14, 21)의 셀은 수직 인접성을 선택하여 그룹지어질 수 있다. 이는 도 8B의 스크린샷에 도시되어 있다. 이러한 경우에 4개의 셀로 이루어진 8개의 수직 그룹은 (7, 18) 내지 (7, 21); (8, 18) 내지 (8, 21); (9, 18) 내지 (9, 21); (10, 18) 내지 (10, 21); (11, 18) 내지 (11, 21); (12, 18) 내지 (12, 21); (13, 18) 내지 (13, 21) 및 (14, 18) 내지 (14, 21)이다. 이들 셀의 다른 필드들은 수직 그룹핑을 반영하여 변경된다.
바람직한 실시예에 따라, 인접 상수 셀 그룹은 한 범위의 셀들로 나타낼 수 있다. 계수 C0-C3를 이루는 셀은 수평 인접성만을 나타내므로, 수평 그룹으로서 디스플레이된다. 이와는 달리, 수직 인접성만을 나타내는 셀은 수직으로 그룹지어진다. 상수 셀이 수직이나 수평으로 그룹지어질 수 있는 경우는, 사용자에 따른 선호도에 따라 그룹핑이 이루어진다. 그러므로, 계수 C4-C7은 설계자의 선호도에 따라 도 8A 및 도 8B에 도시된 바와 같이 수평이나 수직으로 그룹지어 질 수 있다. 도면에 도시된 예에서, 도 8A에 도시된 바와 같이 수평 인접성이 선호될 수 있다. 그러나 다른 설계에서, 계수는 수직 방식으로 놓여질 수 있고, 그 경우에 도 8B의 수직 인접성이 선택될 수 있다.
본 발명의 또 다른 실시예에서, 인접하지 않은 상수 셀들이 같이 그룹지어질 수 있다. GUI는 사용자가 임의의 세트의 상수 셀을 선택하고 선택된 셀을 그룹으로 취급할 수 있도록 한다. 셀이 비연속일지라도, GUI는 그룹으로 셀을 디스플레이하고, 사용자가 그룹으로 셀의 논리 값을 변경할 수 있도록 한다. 그러므로, 사용자에 의해 입력된 새로운 논리 값을 표시하는 비트 값의 스트링은 그룹에서 상수 셀들에 1대 1 대응으로 맵핑되어, 도 8A 및 도 8B와 관련되어 위에서 설명된 바와 동일한 방식으로 맵된다.
새로운 계수 값 C0'-C7'를 입력하면, GUI는 도 5의 단계 324에 따라 일부 구성 비트스트림을 발생한다. GUI가 셀 위치(설계 데이터베이스로부터 얻어진)와 새로운 구성(설계자로부터 얻어진)의 모두를 소유하고 있기 때문에, GUI는 설계자에 의해 지정된 설계 변경을 실현할 구성 비트스트림을 생성할 수 있다. 일부 구성 비트스트림은 설계자에 의해 입력된 변경에만 기초를 두며, 설계 변경에 관계하는 FPGA의 셀에 대한 구성 정보만을 포함한다. 도 4에 도시된 바와 같이 종래의 방법과 같이 구성 비트스트림에서 변경을 이끌어내기 위해 전체 설계에서 배치와 라우팅 동작을 실행할 필요가 없다. 그 대신에, GUI는 사용자의 입력으로부터 일부 구성 비트스트림으로 직접 진행된다. 이러한 방법은 설계에서 변경을 실행하는데 필요한 시간을 크게 줄여서 설계자가 설계 대안을 신속히 실행하고 테스트하게 한다.
바람직한 실시예의 GUI는 논리 게이트로서 구성된 논리 셀을 변경하기 위한 모드를 더 포함한다. 예를 들어, 도 9A에 도시된 ROM 기반의 색인표룰 고려하면, ROM 어레이와 디코더로 구성한다. 색인표는 일반적으로, 도 9B에 도시된 것과 같은 진리표를 갖는 전가산기와 전감산기와 같은 논리 기능을 실현하는 기능 발생기로서 사용된다. 가산기와 감산기의 구현은 도 9C 및 도 9D에 각각 도시되어 있고 도 9A에 도시된 디코더의 8개의 출력(0-7)은 A0-A7으로 도 9C 및 도 9D에 도시되어 있다. 가산기 회로는 4군데에서 감산기와 다르다는 것을 알 수 있다: 가산기의 AND 게이트 G8, G12는 감산기의 OR 게이트 G7, G11에 의해 교체되고, 가산기의 OR 게이트 G24, G28은 감산기의 AND 게이트 G23, G27에 의해 교체된다.
본 발명의 방법을 사용하여, 관심있는 4개의 게이트의 위치를 정하거나 식별하고 그들에 대응되는 논리 셀들의 구성을 변경함에 의하여 설계자는 하나의 회로에서 다른 회로로 쉽게 스위치할 수 있다. 도 10A 및 도 10B를 참조하면, GUI는 FPGA에 레이아웃된 것과 같이 논리 설계를 윈도우 상에 디스플레이할 수 있다. 윈도우를 이동함으로써, 어떤 부분의 어레이도 윈도우내 창으로 이동될 수 있다. 이를 대신하여, GUI는 도 10A에 도시된 셀 위치 필드나 인스턴스명 필드내의 적합한 정보를 입력함으로써 일부 어레이를 배치시킬수 있다.
이하의 설명에서는 초기 논리 설계는 도 9C의 가산기 회로를 내장하고, 도 9D의 감산기 회로로의 변환이 요구된다고 가정한다. GUI는 가산기 회로에 대한 초기 설계에서 실행된 배치 및 라우팅 연산으로부터 이루어진 설계 데이터베이스에 액세스하고 FPGA의 구성 소자의 관점에서 설계의 레이아웃을 디스플레이한다. 디스플레이는 FPGA를 만드는 논리 셀의 아이콘이나 다른 그래픽 표시로 구성될 수 있다. 대신에, GUI는 각 논리 셀에 의해 제공된 논리 기능을 표시하는 아이콘을 디스플레이할수 있다. 다른 대안은 FPGA의 구성의 텍스트적 표현을 제공하는 것이지만, 이러한 방법은 그래픽적 방법으로서 FPGA내에서 조정하거나 정보를 전달하는 것만큼 효율적이지는 않다.
설계자는 게이트의 인스턴스명을 이동(scroll)시키거나 지정함으로써 변경될 가산기 회로의 일부를 디스플레이한다. 도 10A의 스크린샷은 가산기 회로의 일부분에 중점을 둔 설계 데이터베이스의 일부 즉, 게이트 G6, G8, G10 및 G12를 도시한다. OR 게이트 G6는 행 56, 열 100에서의 논리 셀로 지정되고, AND 게이트 G8은 행 56, 열 101에서의 논리 셀로 지정된다. AND 게이트에서 OR 게이트로 게이트 G8을 변경하기 위해, 설계자는 게이트에 대한 아이콘에 마우스 커서를 위치시키고 마우스 버튼을 누름으로써 게이트를 우선 선택한다. 도 10B는 선택되었음을 표시하기 위해 강조 표시된 게이트 G8을 도시한다. 다른 마우스 버튼을 클릭(또는 키를 누름)하면 가능한 논리 게이트의 리스트를 나타내는 팝업 메뉴가 나온다. 메뉴로부터 OR 입력을 선택하면, 선택된 게이트 G8이 OR 게이트로서 구성되도록 된다. 게이트 G12도 동일한 방식으로 변경된다. 다음으로, 설계자는 윈도우를 이동함 등에 의하여 게이트 G24 및 G28을 창으로 가져온다. 게이트 G24 및 G28은 상술한 바와 같은 방식으로 변경된다.
변경이 완료될때 확인(OK) 버튼을 누른다. 도 5에 도시된 방법을 설명함에 따라, GUI는 변경만을 기초로 한 일부 구성 비트스트림을 발생한다. 결과적인 비트스트림은 감산기의 게이트 G7, G11, G23 및 G27로서 동작하기 위한 원래의 설계(가산기 회로의 G8, G12, G24 및 G28)의 4개의 셀을 재규정하는데 필요한 비트스트링으로만 구성한다. 그러므로, 초기의 전가산기 설계에 대한 설계 데이터베이스를 직접 액세싱하고 변경함으로써, 설계 기술자는 전체 배치 및 라우팅 연산의 단계에서 시간을 낭비하는 것을 피할 수 있다.
마지막으로 중요한 것은 상술한 특정 게이트 선택과 메뉴 방법이 본 발명의 실시에 중요하지 않다는 것이다. 또 다른 그래픽식 입력/선택 방법도 동일한 효과를 나타낼 것이다.
도 9B에 도시된 것 등과 같이 일반적인 색인표에 대해, 색인표에 의해 구현된 논리 기능은 표의 출력들에 의해 전체적으로 정의된다. 그러므로, 도 9B의 SUM과 Cout열은 전가산기 기능을 모두 정의하고, SUB와 Bout열은 전감산기 기능을 모두 정의한다. GUI는 특정 색인표를 실행하는 특정 논리 셀을 디스플레이할 필요가 없으며 표 출력만을 리스트할 수 있고 사용자가 표 출력에 변경을 입력할 수 있도록 한다. GUI는 새로운 색인표를 실행하기 위해서 필요한 논리 셀을 특정한다. 이러한 방식에 따라 더 상위 레벨의 추상화(abstraction) 작업에서 색인표를 나타내는 것은, 사용자에게 더 의미있는 방식으로 표를 나타내며, 덜 중요한 실행 사항은 숨길 수 있어 매우 유용할 수 있다.
도 9C 및 도 9D로부터, 색인표는 2-입력 AND 게이트와 2-입력 OR 게이트의 직렬 접속에 의하여 실행될 수 있다. 예를 들어, 전가산기의 SUM 출력은 게이트 G2, G6, G10, G14, G18, G22, G26 및 G30에 의해 실행되는 반면에, Cout출력은 게이트 G4, G8, G12, G16, G20, G24, G28 및 G32에 의해 실행된다. 그러므로, GUI는 표를 실현하는 적합한 게이트를 변경함으로써 간단히 제2 기능을 구현하기 위해, 제1 기능을 정의하는 색인표를 쉽게 재구성할 수 있다.
이하에서는 설계자가 동적 재구성 가능 FPGA를 실시간으로 재구성할 수 있도록 하는 것, 즉 재구성 시에 동작 중에 있는 시스템에 내장된 어레이를 재구성할 수 있도록 하는 본 발명의 또 다른 실시예에 대하여 설명한다. 도 11을 참조하면, 일반적인 시스템(600)은 CPU나 마이크로컨트롤러(610), FPGA(620), EPROM(622) 또는 다른 비휘발성 RAM 소자 및 디스크 저장장치 등의 데이터 저장소(630)를 포함한다. CPU(610) 상에서 동작하는 시스템 소프트웨어는 FPGA를 구성하기 위한 특정 응용 소프트웨어(602)와 FPGA 유틸리티(604)를 포함한다. 시스템을 부팅할때, FPGA에는 EPROM(622) 내로 프로그램된 구성 비트스트림이 로드된다. 이와는 달리, FPGA는 데이터 저장소(630) 상에 저장된 구성 비트스트림으로부터 처음 구성될 수 있다.
시스템(600)이 동작하는 동안, 소프트웨어는 동작 환경(650)에 대한 조건을 검출할 수 있다. 예를 들어, 도 8A 및 도 8B에 도시된 디지털 필터 설계에 대해서, 소프트웨어(602)는 필터의 차단 주파수(cut-off frequency)를 조정할 필요가 있는지를 결정할 수 있다. 이에 응답하여, 이전에 축적된 데이터가 분석될 수 있고 새로운 계수가 분석을 기초로 하여 계산될 수 있다. 특정한 FPGA 유틸리티(604)는 새로운 계수를 정의하기 위한 비트스트링을 포함하는 일부 구성 비트스트림을 생성하기 위해 호출된다. 다음으로, 응용 소프트웨어(602)는 FPGA에 일부 구성 비트스트림을 다운로드하기 위해 다른 FPGA 유틸리티를 호출함으로써, 필터의 설계에서 변경을 실행한다.
실시간으로 이루어지는 설계 변경의 범위는 FPGA 유틸리티(604)에 의해 한정되지 않고, FPGA로 로딩된 특정 설계의 복잡성의 정도에 의해 한정된다. 온-더-플라이 변경은 응용 소프트웨어에 의해 논리 상수나 각 논리 게이트만 변경하는 것으로 제한될 수 있다. 그러나 이러한 한계는 각 응용에 따라 다르며, 계산력, 메모리, 동작 환경등의 능력에 의해 결정되고, 본 발명의 한계에 의한 것은 아니다.
FPGA 유틸리티(604)에 대한 한 세트의 응용 프로그램 인터페이스(API)는 하기의 것을 포함한다:
상수셀(Constant Cell)
기능:
논리 1이나 논리 0을 발생하는 특정 범위에서 각 논리 셀을 구성하는 구성 비트스트림을 발생한다.
파라미터:
xStart - 제1 논리 셀의 x 좌표
yStart - 제1 논리 셀의 y 좌표
xEnd - 최종 논리 셀의 x 좌표
yEnd - 최종 논리 셀의 y 좌표
value_string - 1과 0의 대응 스트링
buf - 구성 비트스트링을 저장하기 위한 메모리 저장소에 대한 포인 터
복귀:
비트스트림내의 바이트수
다운로드(DownLoad)
기능:
FPGA로 구성 비트스트링을 다운로드한다.
파라미터:
buf - 다운로드될 구성 비트스트링에 대한 포인터
복귀:
n/a
게이트셀(GateCell)
기능:
상이한 논리 기능을 실행하기 위하여 이전에 정의된 논리 게이트를 재 구성하는 구성 비트스트림을 발생한다. 게이트의 논리 기능만 변경된다. 입력과 출력 터미널의 수 등의 게이트의 다른 특징은 동일하게 유지된다.
파라미터:
x_coord - 논리 셀의 X 좌표 위치
y_coord - 논리 셀의 Y 좌표 위치
logic - AND, NAND, OR, NOR, XOR, INVERTER 등의 특정 논리 기 능
buf - 구성 비트스트링을 저장하는 메모리 저장소에 대한 포인터
복귀:
비트스트림내의 비트수
판독셀(ReadCell)
기능:
특정화된 논리 셀에 대한 현재 구성으로 복귀한다.
파라미터:
x_coord - 논리 셀의 X 좌표 위치
y_coord - 논리 셀의 Y 좌표 위치
buf - 셀 구성을 저장하기 위한 메모리 저장소에 대한 포인터
복귀:
n/a
이하의 C 언어 코드의 부분은 이들 유틸리티가 어떻게 통상의 응용 프로그램에서 사용되는 지를 설명한다. 이 예는 계수 C0-C7이 외부 동작 환경에 응답하여 어떻게 조정되는지를 도시하는 도 8A의 디지털 필터를 설명한다.
:
:
/*...필터가 조정이 필요한지를 결정한다...*/
:
:
/* 필터 계수 C0-C7의 현재의 값을 판독한다*/
for( i = 0; i < 8; ++i ) /*각 계수*/
for(j = 0, j < 8; ++j )/*각 비트*/
ReadCell(xloc_coeff[i][j], yloc_coeff[i][j],
current_buf[i] +j);
/*새로운 계수 값을 이끌어내고 new_buf에 저장한다*/
:
:
/*새로운 값에 대한 구성 비트스트림을 생성한다*/
z = 0; /*비트스트림의 개시를 지시함*/
for( i = 0; i < 8; ++i )
{
z1 = ConstantCell(xloc_coeff[i][0], yloc_coeff[i][0],
xloc_coeff[i][7], yloc_coeff[i][7], new_buf[i],
bstream + z);
z += z1;/*비트스트림의 끝을 지시함*/
}
/*FPGA에 비트스트림을 다운로드한다.*/
DownLoad(bstream);
본 발명에 따른 재구성 FPGA에 대한 시스템은 실시간에서 FPGA의 재구성을 허용하고 FPGA의 일부만이 재구성될 수 있도록 한다. 또한, 본 발명은 응용 소프트웨어에 의해 외부 동작 환경에 대응하는 설계의 일부에 대한 변경을 결정할 수 있도록 한다. 이러한 방법의 장점은 설계자가 모든 가능한 다른 설계와 이에 대응되는 구성 비트스트림을 미리 결정할 필요가 없다는 것이다. 또한, 응용 소프트웨어는 온-더-플라이로 설계 변경을 결정할 수 있고, 상황이 발생하였을 때 환경의 조건에 대응하는 변경을 실행하는 일부 구성 비트스트림을 생성한다.

Claims (21)

  1. 논리셀의 프로그램 가능 어레이를 구성하는 방법으로서, 상기 어레이는 복수의 프로그램 가능 상호 접속을 구비하고, 각 논리 셀은 상기 어레이내의 고유의 셀 위치를 가지며, 상기 어레이는 그와 관련된 논리 설계를 구비하는 프로그램 가능 어레이의 구성 방법에 있어서,
    상기 논리 설계에 대응하는 논리 셀 정의와 논리 셀간의 상호 접속의 구성을 표현하는 설계 데이터베이스에 액세싱(accessing)하는 단계와;
    사용자에게 상기 설계 데이터베이스의 일부를 부여하는 단계와;
    상기 논리 설계의 논리 기능을 변경하기 위하여 상기 논리 설계에 변경을 입력함을 포함하여, 상기 설계 데이터베이스의 사용자 선택 부분을 재정의하기 위해 사용자 지정 변경을 입력하는 단계와;
    상기 설계 데이터베이스의 재정의된 부분과 관련된 상기 논리 셀의 정의와 상기 상호 접속만을 설명하는 일부 구성 비트스트림을 발생하는 단계와;
    상기 논리 셀의 어레이로 상기 일부 구성 비트스트림을 다운로드하여, 상기 사용자 지정 변경에 대응하는 상기 논리 셀의 어레이의 그 부분만을 구성하는 단계를 포함하는 것을 특징으로 하는 프로그램 가능 어레이 구성 방법.
  2. 제1항에 있어서, 상기 발생 단계는 상기 설계 데이터베이스의 재정의된 부분만을 기초로 상기 일부 구성 비트스트림을 정의하는 단계를 포함하는 것을 특징으로 하는 프로그램 가능 어레이 구성 방법.
  3. 제1항에 있어서, 상기 사용자 지정 변경은 새로운 논리 셀 정의이나 새로운 상호 접속을 포함하고, 상기 발생 단계는 상기 새로운 논리 셀 정의이나 상기 새로운 상호 접속을 기초로 상기 일부 구성 비트스트림을 정의하는 단계를 포함하는 것을 특징으로 하는 프로그램 가능 어레이 구성 방법.
  4. 제1항에 있어서, 상기 부여 단계는 논리 게이트로 구성된 특정 논리셀을 식별하고, 이 특정 논리셀의 각각에 대하여 그 셀 위치를 디스플레이하며 그 대응하는 논리 게이트의 그래픽 이미지나 텍스트 표시를 디스플레이하는 단계를 포함하는 것을 특징으로 하는 프로그램 가능 어레이 구성 방법.
  5. 제4항에 있어서, 상기 사용자 지정 변경을 입력하는 단계는 재구성될 논리 셀을 확인하고, 대용의 논리 게이트의 리스트를 디스플레이하며, 상기 확인된 논리 셀을 재구성하기 위해 상기 리스트로부터 대용의 논리 게이트를 선택하는 단계를 포함하는 것을 특징으로 하는 프로그램 가능 어레이 구성 방법.
  6. 제5항에 있어서, 상기 대용의 논리 게이트의 리스트를 디스플레이하는 단계는 상기 대용의 논리 게이트의 그래픽 표시를 디스플레이하는 단계를 포함하는 것을 특징으로 하는 프로그램 가능 어레이 구성 방법.
  7. 제4항에 있어서, 상기 부여 단계는
    상기 설계 데이터베이스에서 고정치(fixed-value) 논리 셀을 확인하는 단계와;
    다른 고정치 논리 셀과 인접하지 않은 고정치 논리 셀에 대해 상기 고정치 논리 셀의 셀 위치와 현재의 값을 디스플레이하는 단계와;
    인접한 고정치 논리 셀의 그룹에 대해 상기 그룹의 셀 위치들을 셀 위치의 범위로서 디스플레이하고, 상기 그룹에서 논리 셀의 현재 값들을 비트스트링으로서 디스플레이하는 단계를 더 포함하는 것을 특징으로 하는 프로그램 가능 어레이 구성 방법.
  8. 제1항에 있어서, 상기 부여 단계는 일정한 논리 "1" 이나 일정한 논리 "0"을 출력하도록 정의된 논리 셀만을 디스플레이하는 단계를 포함하는 것을 특징으로 하는 프로그램 가능 어레이 구성 방법.
  9. 제1항에 있어서, 상기 부여 단계는,
    상기 설계 데이터베이스에서 고정치 논리 셀을 확인하는 단계와;
    다른 고정치 논리 셀과 인접하지 않은 고정치 논리 셀에 대해 상기 고정치 논리 셀의 셀 위치와 현재의 값을 디스플레이하는 단계와;
    인접한 고정치 논리 셀의 그룹에 대해 상기 그룹의 셀 위치들을 셀 위치의 범위로서 디스플레이하고, 상기 그룹의 각 논리 셀의 현재 값을 비트스트링으로서 집합적으로 디스플레이하는 단계를 포함하는 것을 특징으로 하는 프로그램 가능 어레이 구성 방법.
  10. 프로그램 가능 논리 셀과 I/O 블럭 및 상기 논리 셀과 I/O 블럭 사이에 배치된 프로그램 가능 상호 접속을 갖는 FPGA에서, 이 FPGA에 대한 구성 비트스트림을 발생하는 방법으로서,
    복수의 논리 게이트와 상기 논리 게이트간의 상호 접속을 포함하는 논리 회로를 입력하는 단계와;
    상기 논리 회로를 구현하기 위해서 논리 셀과 상호 접속을 선택하는 단계와;
    상기 선택된 논리 셀과 상호 접속에 대한 배치 및 라우팅 정보를 포함하는 설계 데이터베이스를 형성하는 단계와;
    상기 배치 및 라우팅 정보를 기초로 하고, 상기 논리 회로를 실행시키기 위해 상기 선택된 논리 셀 모두에 대한 정의 및 상호 접속을 포함하는 제1 구성 비트스트림을 발생하는 단계와;
    상기 FPGA로의 후속되는 다운로딩을 위해 데이터 저장소에 상기 제1 구성 비트스트림을 저장하는 단계와;
    상기 논리 회로의 설계에 대한 변경을 통합시키는 단계를 포함하는 구성 비트스트림 발생 방법에 있어서,
    사용자에게 상기 설계 데이터베이스의 일부를 디스플레이하고, 상기 논리 설계의 논리 기능을 변경하기 위하여 상기 논리 설계에 변경을 입력함을 포함하여 상기 설계 데이터베이스의 선택된 부분에 대한 수정을 입력하는 단계와;
    상기 설계 데이터베이스의 선택된 부분에 대한 수정과 관련된 상기 논리 셀의 선택된 논리 셀만의 새로운 정의와 상호 접속을 포함하는 제2 구성 비트스트림을 발생하는 단계를 포함하는 것을 특징으로 하는 구성 비트스트림 발생 방법.
  11. 제10항에 있어서, 상기 제1 구성 비트스트림을 상기 FPGA로 다운로드하는 단계를 더 포함하는 것을 특징으로 하는 구성 비트스트림 발생 방법.
  12. 제11항에 있어서, 상기 제1 구성 비트스트림을 다운로드하는 단계에 후속하여 상기 제2 구성 비트스트림을 FPGA에 다운로드하는 단계를 더 포함하는 것을 특징으로 하는 구성 비트스트림 발생 방법.
  13. 제10항에 있어서, 제2 구성 비트스트림을 발생하는 단계는 상기 논리 셀과 상호 접속의 부분의 위치와 새로운 정의만을 기초로 비트스트림을 정의하는 단계를 포함하는 것을 특징으로 하는 구성 비트스트림 발생 방법.
  14. 제10항에 있어서, 상기 설계 데이터베이스의 일부를 디스플레이하는 부단계는,
    논리 게이트로서 구성된 상기 설계 데이터베이스의 제1형의 논리 셀을 확인하는 단계와;
    상기 각 제1 유형의 각 논리 셀에 대해, 그 셀 위치 및 대응하는 논리 게이트의 표시를 디스플레이하는 단계와;
    일정한 논리 값을 생성하도록 구성된 상기 설계 데이터베이스의 제2형 논리 셀을 확인하는 단계와;
    상기 제2 유형의 논리 셀의 셀 위치와 값을 디스플레이하는 단계를 포함하는 것을 특징으로 하는 구성 비트스트림 발생 방법.
  15. 제14항에 있어서, 상기 제2 유형의 논리 셀의 셀 위치와 값을 디스플레이하는 단계는 서로 인접한 상기 제2형 논리 셀의 부분을 포함하는 셀 그룹을 형성하는 단계와, 셀 위치의 범위를 사용하여 상기 각 셀 그룹의 논리 셀의 셀 위치를 디스플레이하는 단계를 포함하는 것을 특징으로 하는 구성 비트스트림 발생 방법.
  16. 제15항에 있어서, 상기 셀 그룹을 형성하는 부단계는 상기 제2 유형의 논리 셀의 나머지와 수평으로 인접한 상기 제2 유형의 논리 셀의 부분에 대한 수평 그룹을 형성하는 단계와, 상기 제2 유형의 논리 셀의 나머지와 수직으로 인접한 상기 제2 유형의 논리 셀의 부분에 대한 수직 그룹을 형성하는 단계와, 논리 셀이 수평 그룹과 수직 그룹에 모두 속하면, 그 논리 셀은 상기 수평 그룹에 지정하는 단계를 포함하는 것을 특징으로 하는 구성 비트스트림 발생 방법.
  17. 제15항에 있어서, 상기 셀 그룹을 형성하는 부단계는 상기 제2 유형의 논리 셀의 나머지와 수평으로 인접한 상기 제2 유형의 논리 셀의 부분에 대한 수평 그룹을 형성하는 단계와, 상기 제2 유형의 논리 셀의 나머지와 수직으로 인접한 상기제2 유형의 논리 셀의 부분에 대한 수직 그룹을 형성하는 단계와 논리 셀이 수평 그룹과 수직 그룹에 모두 속하면, 그 논리 셀은 상기 수직 그룹에 지정하는 단계를 포함하는 것을 특징으로 하는 구성 비트스트림 발생 방법.
  18. 제14항에 있어서, 상기 제2 유형의 논리 셀의 셀 위치와 값을 디스플레이는 단계는 상기 제2 유형의 논리 셀중의 사용자 지정 셀을 포함하는 셀 그룹을 형성하는 단계와 상기 각 셀 그룹내의 논리 셀의 셀 위치와 논리 값을 디스플레이하는 단계를 포함하는 것을 특징으로 하는 구성 비트스트림 발생 방법.
  19. 내부에 프로그램된 적어도 하나의 논리 설계를 포함하는 FPGA를 구성하는 시스템에 있어서,
    상기 FPGA의 실행 시간 동작(run-time operation)동안 상기 FPGA의 외부 상태를 검출하는 수단과;
    상기 FPGA의 외부 상태 검출에 대응하여 상기 논리 설계의 일부를 재설계하는 수단과;
    상기 재설계된 부분만을 기초로 하여 일부 구성 비트스트림을 형성하는 수단과;
    상기 FPGA에 상기 일부 구성 비트스트림을 전송함으로써 상기 논리 설계의 상기 재설계된 부분을 구현하도록 실행 시간 중에 상기 FPGA를 부분적으로 재구성하는 수단을 포함하는 것을 특징으로 하는 시스템.
  20. 제19항에 있어서, 상기 논리 설계를 나타내는 설계 데이터베이스의 적어도 일부를 저장하는 수단을 더 포함하고, 상기 재설계 수단은 상기 설계 데이터베이스에 액세싱하는 수단을 포함하며, 그에 따라 상기 논리 설계를 재설계하기 위한 기초를 제공하는 것을 특징으로 하는 시스템.
  21. 내부에 프로그램된 적어도 하나의 논리 상수를 포함하는 FPGA를 구성하는 시스템에 있어서,
    상기 FPGA의 실행 시간 동작(run-time operation)동안 상기 FPGA의 외부 상태를 검출하는 수단과;
    상기 FPGA의 외부 상태 검출에 응답하여 상기 논리 상수의 새로운 값을 결정하는 수단과;
    상기 새로운 값만을 기초로 하여 일부 구성 비트스트림을 형성하는 수단과;
    상기 FPGA에 상기 일부 구성 비트스트림을 전송하여 실행 시간(run-time)에서 상기 FPGA를 부분적으로 재구성하는 수단을 포함하는 것을 특징으로 하는 시스템.
KR10-1999-7003512A 1996-10-30 1997-10-15 논리 소자의 어레이를 구성하는 방법 및 시스템 KR100446338B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/739,606 1996-10-30
US08/739,606 US5946219A (en) 1996-10-30 1996-10-30 Method and system for configuring an array of logic devices
US8/739,606 1996-10-30

Publications (2)

Publication Number Publication Date
KR20000052714A KR20000052714A (ko) 2000-08-25
KR100446338B1 true KR100446338B1 (ko) 2004-09-01

Family

ID=24973056

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-1999-7003512A KR100446338B1 (ko) 1996-10-30 1997-10-15 논리 소자의 어레이를 구성하는 방법 및 시스템

Country Status (8)

Country Link
US (1) US5946219A (ko)
EP (1) EP0958542A4 (ko)
JP (1) JP2001504958A (ko)
KR (1) KR100446338B1 (ko)
CN (1) CN1121016C (ko)
HK (1) HK1022753A1 (ko)
TW (1) TW359801B (ko)
WO (1) WO1998019256A1 (ko)

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6026226A (en) * 1996-10-28 2000-02-15 Altera Corporation Local compilation in context within a design hierarchy
US6134707A (en) * 1996-11-14 2000-10-17 Altera Corporation Apparatus and method for in-system programming of integrated circuits containing programmable elements
US6078736A (en) * 1997-08-28 2000-06-20 Xilinx, Inc. Method of designing FPGAs for dynamically reconfigurable computing
US6243851B1 (en) 1998-03-27 2001-06-05 Xilinx, Inc. Heterogeneous method for determining module placement in FPGAs
US6292925B1 (en) 1998-03-27 2001-09-18 Xilinx, Inc. Context-sensitive self implementing modules
US6237129B1 (en) 1998-03-27 2001-05-22 Xilinx, Inc. Method for constraining circuit element positions in structured layouts
US6260182B1 (en) 1998-03-27 2001-07-10 Xilinx, Inc. Method for specifying routing in a logic module by direct module communication
US6430732B1 (en) 1998-03-27 2002-08-06 Xilinx, Inc. Method for structured layout in a hardware description language
US6216258B1 (en) 1998-03-27 2001-04-10 Xilinx, Inc. FPGA modules parameterized by expressions
US6178541B1 (en) * 1998-03-30 2001-01-23 Lsi Logic Corporation PLD/ASIC hybrid integrated circuit
DE19843640A1 (de) * 1998-09-23 2000-03-30 Siemens Ag Verfahren zum Konfigurieren eines konfigurierbaren Hardware-Blocks
EP1351154A2 (en) * 1998-11-20 2003-10-08 Altera Corporation Reconfigurable programmable logic device computer system
TW476069B (en) * 1998-11-20 2002-02-11 Via Tech Inc Placement and routing for array device
US6363519B1 (en) 1999-02-26 2002-03-26 Xilinx, Inc. Method and apparatus for testing evolvable configuration bitstreams
US6539532B1 (en) 1999-02-26 2003-03-25 Xilinx, Inc. Method and apparatus for relocating elements in an evolvable configuration bitstream
US6430736B1 (en) 1999-02-26 2002-08-06 Xilinx, Inc. Method and apparatus for evolving configuration bitstreams
US6378122B1 (en) 1999-02-26 2002-04-23 Xilinx, Inc. Method and apparatus for evolving a plurality of versions of a configuration bitstream in parallel
US6363517B1 (en) 1999-02-26 2002-03-26 Xilinx, Inc. Method and apparatus for remotely evolving configuration bitstreams
ATE314754T1 (de) 1999-05-07 2006-01-15 Infineon Technologies Ag Heterogenes programmierbares gatterfeld
WO2000068775A1 (en) 1999-05-07 2000-11-16 Morphics Technology Inc. Apparatus and method for programmable datapath arithmetic arrays
KR100648909B1 (ko) 1999-05-07 2006-11-24 모픽스 테크놀로지 아이엔씨 프로그래머블 게이트 어레이내의 가변성 크기 자율 서브어레이들을 동적으로 정의하는 장치 및 방법
US6438737B1 (en) 2000-02-15 2002-08-20 Intel Corporation Reconfigurable logic for a computer
US6453456B1 (en) * 2000-03-22 2002-09-17 Xilinx, Inc. System and method for interactive implementation and testing of logic cores on a programmable logic device
US6725441B1 (en) 2000-03-22 2004-04-20 Xilinx, Inc. Method and apparatus for defining and modifying connections between logic cores implemented on programmable logic devices
US6542844B1 (en) 2000-08-02 2003-04-01 International Business Machines Corporation Method and apparatus for tracing hardware states using dynamically reconfigurable test circuits
US6530071B1 (en) * 2000-09-28 2003-03-04 Xilinx, Inc. Method and apparatus for tolerating defects in a programmable logic device using runtime parameterizable cores
US6904436B1 (en) * 2000-10-04 2005-06-07 Cypress Semiconductor Corporation Method and system for generating a bit order data structure of configuration bits from a schematic hierarchy
US6625794B1 (en) * 2000-11-06 2003-09-23 Xilinx, Inc. Method and system for safe device reconfiguration
US6836842B1 (en) * 2001-04-24 2004-12-28 Xilinx, Inc. Method of partial reconfiguration of a PLD in which only updated portions of configuration data are selected for reconfiguring the PLD
US6912706B1 (en) 2001-08-15 2005-06-28 Xilinx, Inc. Instruction processor and programmable logic device cooperative computing arrangement and method
CN1307586C (zh) * 2001-10-16 2007-03-28 捷豹逻辑股份有限公司 高效逻辑打包的现场可编程门阵列核心单元
US7406674B1 (en) * 2001-10-24 2008-07-29 Cypress Semiconductor Corporation Method and apparatus for generating microcontroller configuration information
EP1320048A3 (en) * 2001-12-14 2004-03-03 STMicroelectronics Pvt. Ltd Rapid partial configuration of reconfigurable devices
US7386833B2 (en) * 2002-09-04 2008-06-10 Mentor Graphics Corp. Polymorphic computational system and method in signals intelligence analysis
KR200304200Y1 (ko) * 2002-09-16 2003-02-19 신창업 마이크 보호용 커버
US7194615B2 (en) * 2002-09-17 2007-03-20 Nokia Corporation Reconfigurable apparatus being configurable to operate in a logarithmic scale
US7124392B2 (en) 2002-09-27 2006-10-17 Stmicroelectronics, Pvt. Ltd. Mapping of programmable logic devices
US7111110B1 (en) * 2002-12-10 2006-09-19 Altera Corporation Versatile RAM for programmable logic device
CN1304994C (zh) * 2003-08-27 2007-03-14 四川南山之桥微电子有限公司 可运行的2层/3层交换机和路由器芯片及制定方法
JP3966873B2 (ja) * 2003-10-08 2007-08-29 株式会社東芝 論理回路装置、動作電圧変更方法
US7669035B2 (en) * 2004-01-21 2010-02-23 The Charles Stark Draper Laboratory, Inc. Systems and methods for reconfigurable computing
JP4095576B2 (ja) * 2004-05-17 2008-06-04 株式会社東芝 プログラマブル論理回路を用いる汎用論理回路装置
US7406673B1 (en) 2004-08-12 2008-07-29 Xilinx, Inc. Method and system for identifying essential configuration bits
US7343578B1 (en) * 2004-08-12 2008-03-11 Xilinx, Inc. Method and system for generating a bitstream view of a design
US7519823B1 (en) 2004-08-12 2009-04-14 Xilinx, Inc. Concealed, non-intrusive watermarks for configuration bitstreams
US20060200603A1 (en) * 2005-03-01 2006-09-07 Naoto Kaneko Dynamic resource allocation for a reconfigurable IC
US7861190B1 (en) * 2005-03-17 2010-12-28 Altera Corporation Power-driven timing analysis and placement for programmable logic
US7275232B2 (en) * 2005-04-01 2007-09-25 Altera Corporation Methods for producing equivalent field-programmable gate arrays and structured application specific integrated circuits
US7784005B1 (en) * 2005-06-14 2010-08-24 Xilinx, Inc. Electronic circuit design viewer
US7571395B1 (en) * 2005-08-03 2009-08-04 Xilinx, Inc. Generation of a circuit design from a command language specification of blocks in matrix form
US7739092B1 (en) * 2006-01-31 2010-06-15 Xilinx, Inc. Fast hardware co-simulation reset using partial bitstreams
US7827023B2 (en) * 2006-02-01 2010-11-02 Cadence Design Systems, Inc. Method and apparatus for increasing the efficiency of an emulation engine
US7631223B1 (en) * 2006-06-06 2009-12-08 Lattice Semiconductor Corporation Programmable logic device methods and system for providing multi-boot configuration data support
US7640527B1 (en) * 2006-06-29 2009-12-29 Xilinx, Inc. Method and apparatus for partial reconfiguration circuit design for a programmable device
US7634743B1 (en) * 2006-07-21 2009-12-15 Cadence Design Systems, Inc. Method for updating a placed and routed netlist
US7521961B1 (en) * 2007-01-23 2009-04-21 Xilinx, Inc. Method and system for partially reconfigurable switch
US7873934B1 (en) * 2007-11-23 2011-01-18 Altera Corporation Method and apparatus for implementing carry chains on field programmable gate array devices
JP2010114772A (ja) * 2008-11-07 2010-05-20 Nec Electronics Corp 半導体装置、差分プログラム実施方法
US8214592B2 (en) * 2009-04-15 2012-07-03 International Business Machines Corporation Dynamic runtime modification of array layout for offset
US8276105B2 (en) * 2009-09-18 2012-09-25 International Business Machines Corporation Automatic positioning of gate array circuits in an integrated circuit design
US8368423B2 (en) * 2009-12-23 2013-02-05 L-3 Communications Integrated Systems, L.P. Heterogeneous computer architecture based on partial reconfiguration
US8397054B2 (en) * 2009-12-23 2013-03-12 L-3 Communications Integrated Systems L.P. Multi-phased computational reconfiguration
US7982504B1 (en) * 2010-01-29 2011-07-19 Hewlett Packard Development Company, L.P. Interconnection architecture for multilayer circuits
US8595670B1 (en) * 2010-03-08 2013-11-26 Altera Corporation Method and apparatus for circuit block reconfiguration EDA
US8364946B2 (en) 2010-03-22 2013-01-29 Ishebabi Harold Reconfigurable computing system and method of developing application for deployment on the same
US9116751B2 (en) * 2011-02-08 2015-08-25 Canon Kabushiki Kaisha Reconfigurable device, processing assignment method, processing arrangement method, information processing apparatus, and control method therefor
US8751998B2 (en) * 2011-07-01 2014-06-10 Altera Corporation Method and system for partial reconfiguration simulation
TWI459216B (zh) * 2011-09-09 2014-11-01 Iner Aec Executive Yuan 數位安全系統硬體化之方法
EP2894572B1 (en) 2014-01-09 2018-08-29 Université de Rennes 1 Method and device for programming a FPGA
CN104850669A (zh) * 2014-02-14 2015-08-19 国网河南省电力公司鹤壁供电公司 逻辑器件及构建方法、逻辑器件库、逻辑器构建方法
US9929734B2 (en) * 2015-09-08 2018-03-27 Dspace Digital Signal Processing And Control Engineering Gmbh Method for changing the configuration of a programmable logic module
US9619610B1 (en) * 2015-10-01 2017-04-11 Altera Corporation Control block size reduction through IP migration in an integrated circuit device
CN108182303B (zh) * 2017-12-13 2020-08-28 京微齐力(北京)科技有限公司 基于混合功能存储单元的可编程器件结构
KR102559581B1 (ko) 2018-05-23 2023-07-25 삼성전자주식회사 재구성 가능 로직을 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
US10838389B2 (en) 2018-12-13 2020-11-17 Hamilton Sunstrand Corporation Reconfigurable control architecture for programmable logic devices
US11042414B1 (en) 2019-07-10 2021-06-22 Facebook, Inc. Hardware accelerated compute kernels
US11556382B1 (en) 2019-07-10 2023-01-17 Meta Platforms, Inc. Hardware accelerated compute kernels for heterogeneous compute environments
US11042413B1 (en) * 2019-07-10 2021-06-22 Facebook, Inc. Dynamic allocation of FPGA resources
CN111274199A (zh) * 2020-01-23 2020-06-12 中国科学院微电子研究所 差异上注定向修改的fpga在轨重构实现方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4845633A (en) * 1985-12-02 1989-07-04 Apple Computer Inc. System for programming graphically a programmable, asynchronous logic cell and array
US5089973A (en) * 1986-11-07 1992-02-18 Apple Computer Inc. Programmable logic cell and array
US4745084A (en) * 1986-11-12 1988-05-17 Vlsi Technology, Inc. Method of making a customized semiconductor integrated device
JP2877303B2 (ja) * 1987-03-31 1999-03-31 株式会社東芝 集積回路の自動設計装置
US4970664A (en) * 1988-06-10 1990-11-13 Kaiser Richard R Critical path analyzer with path context window
AU4347189A (en) * 1988-10-05 1990-05-01 Mentor Graphics Corporation Method of using electronically reconfigurable gate array logic and apparatus formed thereby
US5208768A (en) * 1988-11-14 1993-05-04 Digital Equipment Corporation Expert system including arrangement for acquiring redesign knowledge
US4967367A (en) * 1988-11-21 1990-10-30 Vlsi Technology, Inc. Synthetic netlist system and method
US5448493A (en) * 1989-12-20 1995-09-05 Xilinx, Inc. Structure and method for manually controlling automatic configuration in an integrated circuit logic block array
US5623418A (en) * 1990-04-06 1997-04-22 Lsi Logic Corporation System and method for creating and validating structural description of electronic system
US5544067A (en) * 1990-04-06 1996-08-06 Lsi Logic Corporation Method and system for creating, deriving and validating structural description of electronic system from higher level, behavior-oriented description, including interactive schematic design and simulation
US5555201A (en) * 1990-04-06 1996-09-10 Lsi Logic Corporation Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, including interactive system for hierarchical display of control and dataflow information
US5278769A (en) * 1991-04-12 1994-01-11 Lsi Logic Corporation Automatic logic model generation from schematic data base
US5349691A (en) * 1990-07-03 1994-09-20 Xilinx, Inc. Programming process for 3-level programming logic devices
US5499192A (en) * 1991-10-30 1996-03-12 Xilinx, Inc. Method for generating logic modules from a high level block diagram
US5491640A (en) * 1992-05-01 1996-02-13 Vlsi Technology, Inc. Method and apparatus for synthesizing datapaths for integrated circuit design and fabrication
ATE207234T1 (de) * 1992-07-02 2001-11-15 Atmel Corp Unterbrechungsfreies wahlfreies zugriffspeichersystem
GB9223226D0 (en) * 1992-11-05 1992-12-16 Algotronix Ltd Improved configurable cellular array (cal ii)
US5361373A (en) * 1992-12-11 1994-11-01 Gilson Kent L Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
CA2126265A1 (en) * 1993-09-27 1995-03-28 Michael Robert Cantone System for synthesizing field programmable gate array implementations from high level circuit descriptions
US5394031A (en) * 1993-12-08 1995-02-28 At&T Corp. Apparatus and method to improve programming speed of field programmable gate arrays
US5781756A (en) * 1994-04-01 1998-07-14 Xilinx, Inc. Programmable logic device with partially configurable memory cells and a method for configuration
US5673198A (en) * 1996-03-29 1997-09-30 Xilinx, Inc. Concurrent electronic circuit design and implementation

Also Published As

Publication number Publication date
KR20000052714A (ko) 2000-08-25
CN1121016C (zh) 2003-09-10
JP2001504958A (ja) 2001-04-10
TW359801B (en) 1999-06-01
US5946219A (en) 1999-08-31
WO1998019256A1 (en) 1998-05-07
CN1241275A (zh) 2000-01-12
HK1022753A1 (en) 2000-08-18
EP0958542A4 (en) 2000-05-17
EP0958542A1 (en) 1999-11-24

Similar Documents

Publication Publication Date Title
KR100446338B1 (ko) 논리 소자의 어레이를 구성하는 방법 및 시스템
De Man et al. Architecture-driven synthesis techniques for VLSI implementation of DSP algorithms
US6557156B1 (en) Method of configuring FPGAS for dynamically reconfigurable computing
Vahid The softening of hardware
US5737234A (en) Method of optimizing resource allocation starting from a high level block diagram
Keller JRoute: A run-time routing API for FPGA hardware
WO2002027928A2 (en) Method and apparatus for tolerating defects in a programmable logic device using runtime parameterizable cores
Raghavan et al. JPG-A partial bitstream generation tool to support partial reconfiguration in Virtex FPGAs
US6510546B1 (en) Method and apparatus for pre-routing dynamic run-time reconfigurable logic cores
US5987239A (en) Computer system and method for building a hardware description language representation of control logic for a complex digital system
US7814452B1 (en) Function symmetry-based optimization for physical synthesis of programmable integrated circuits
Kourfali et al. Efficient hardware debugging using parameterized FPGA reconfiguration
JP4495865B2 (ja) 業者間アプリケーションサービスプロバイダ
James-Roxby et al. Automated extraction of run-time parameterisable cores from programmable device configurations
US7065733B2 (en) Method for modifying the behavior of a state machine
US7610573B1 (en) Implementation of alternate solutions in technology mapping and placement
EP1400904A2 (en) Apparatus and method for synthesizing and designing circuits and filters
US5673199A (en) Computer aided reuse tool
Dewey et al. Principles of VLSI System Planning: A Framework for Conceptual Design
US7096444B2 (en) Representing device layout using tree structure
US7991606B1 (en) Embedded logic analyzer functionality for system level environments
Lagadec et al. Object-oriented meta tools for reconfigurable architectures
US7139995B1 (en) Integration of a run-time parameterizable core with a static circuit design
US7509246B1 (en) System level simulation models for hardware modules
US7590960B1 (en) Placing partitioned circuit designs within iterative implementation flows

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20110809

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee