KR101552181B1 - 동기 fpga 설계에서 비동기 fpga 설계로의 변환 - Google Patents

동기 fpga 설계에서 비동기 fpga 설계로의 변환 Download PDF

Info

Publication number
KR101552181B1
KR101552181B1 KR1020097016402A KR20097016402A KR101552181B1 KR 101552181 B1 KR101552181 B1 KR 101552181B1 KR 1020097016402 A KR1020097016402 A KR 1020097016402A KR 20097016402 A KR20097016402 A KR 20097016402A KR 101552181 B1 KR101552181 B1 KR 101552181B1
Authority
KR
South Korea
Prior art keywords
synchronous
circuit design
switch
design
asynchronous
Prior art date
Application number
KR1020097016402A
Other languages
English (en)
Other versions
KR20090099083A (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 KR20090099083A publication Critical patent/KR20090099083A/ko
Application granted granted Critical
Publication of KR101552181B1 publication Critical patent/KR101552181B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/35Delay-insensitive circuit design, e.g. asynchronous or self-timed
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits

Landscapes

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

Abstract

동기 회로 설계를 비동기 회로 설계로, 특히 프로그래머블 비동기 회로 설계로 변환하기 위한 방법 및 시스템이 제공된다.
동기 회로 설계를 평가하고, 와이어, 스위치/접속 및 논리 함수를 등가의 함수 비동기 회로 설계로 변환하고, 그에 따라 기능적으로 등가의 비동기 회로를 모든 이점을 가지고 실행하는, 시스템적이고, 작업 가능하고 반복 가능한 프로세스를 제공한다. 비동기 컴포넌트를 위해 (형태 및 기능 상의 설명으로) 변환 및 하드웨어 등가물을 시스템적으로 행하는 프로세스가 제공된다. 본 발명을 사용하면, 통상적으로 원래의 설계 실행에 대한 변화 없이, 어떠한 동기 회로 설계라도 비동기 등가물로 변환될 수 있다.

Description

동기 FPGA 설계에서 비동기 FPGA 설계로의 변환{CONVERSION OF A SYNCHRONOUS FPGA DESIGN INTO AN ASYNCHRONOUS FPGA DESIGN}
본 발명은 일반적으로 비동기 회로를 위한 방법 및 시스템에 관한 것이며, 특히 동기 회로 설계가 비동기 회로 설계로 변환될 수 있도록, 동기 회로 패브릭을 비동기 데이터 회로 패브릭으로 변환하기 위한 방법 및 시스템에 관한 것이다.
당기술분야에 잘 알려진 바와 같이, 필드 프로그래머블 게이트 어레이(field programmable gate array; FPGA)는, 구성 가능한 논리 블록(configuable logic block; CLB)로도 알려진 프로그래머블 논리 컴포넌트 및 입력/출력 블록(input/output logic block; IOB)으로도 알려진 프로그래머블 상호접속을 포함하는 프로그래머블 논리 디바이스(PLD) 반도체 디바이스의 한 부류이다. 상호접속의 구성을 통해, 프로그래머블 논리 컴포넌트는 AND, OR, XOR, NOT와 같은 기본적인 논리 게이트의 기능 또는 디코더와 같은 더욱 복잡한 계산 기능 또는 간단한 수학 기능을 복사하도록 프로그램될 수 있다. 대부분의 FPGA에서, 이러한 프로그래머블 논리 컴포넌트(또는 FPGA 전문 용어로는 논리 블록)는 또한 단일의 플립-플롭이거나 더욱 복잡한 메모리 블록일 수 있는 메모리 소자를 포함한다.
전술한 바와 같이, 프로그래머블 상호접속의 계층에 의해, 약간 1 칩 프로그 래머블 회로판과 같이, FPGA의 논리 블록은 시스템 설계자에 의해 요구되는 바와 같이 상호접속될 수 있다. 이러한 논리 블록 및 상호접속은 어떤 논리 함수가 필요하든지 간에 FPGA가 수행할 수 있도록 소비자/설계자에 의한 제조 프로세스 후 프로그램될 수 있다.
FPGA는 시장 출시 시간 단축, 오류 수정을 위한 재프로그램 능력(ability to re-program in the field to fix bugs) 및 낮은 초기 개발비를 포함한, 종래의 주문형 반도체(ASIC)에 비해 몇 가지 중요한 이점을 가진다. FPGA의 응용은 디지털 신호 처리(DSP), 소프트웨어 기반 무선통신(software-defined radio; SDR), 항공우주 및 방위 체계(aerospace and defence systems), ASIC 포토타이핑, 의료 영상, 컴퓨터 비전, 음성 인식, 암호화, 생물정보학(bioinformatics), 컴퓨터 하드웨어 에뮬레이션 및 다른 영역의 성장하는 범위를 포함한다.
FPGA의 동작을 정의하기 위해, 사용자는 하드웨어 기술 언어(hardware description language; HDL) 또는 개략적 설계를 제공한다. 전자공학에서, 하드웨어 기술 언어 또는 HDL은 전자회로의 형식적 기술을 개발하는 데 사용되는 컴퓨터 언어의 한 부류에서 나온 언어이다. 통상적인 HDL은 시뮬레이션에 의해 그 동작을 검증하기 위한 그 회로의 동작, 그 설계 및 테스트를 기술할 수 있다.
HDL의 구문론(syntax) 및 의미론(semantics)은 하드웨어의 주속성(primary attribute)인, 시간 및 병행성(time and concurrency)을 표현하기 위한 명시적 기호를 포함한다. 원리적 특성으로 한 계층의 블록들 사이의 회로 접속성을 표시해야 하는 언어들은 넷리스트 언어(netlist language)로서 분류되고, 일부의 HDL도 또한, 이 목적을 위해 사용될 수 있다. HDL의 한 사용은 FPGA와 같은 프로그래머블 논리 디바이스를 설계하는 것을 포함한다. 오늘날의 산업분야에서 사용되는, 두 개의 가장 폭넓게 사용되고 지지받는 HDL은 VHDL과 Verilog이다. VHDL 또는 VHSIC 하드웨어 기술 언어는 디지털 회로의 전자 설계 자동화 분야에서 현장 프로그램 가능 게이트 어레이(field-programmable gate array; FPGA) 및 주문형 반도체를 위한 설계 시작 언어(design-entry language)로서 흔히 사용된다. Verilog는 전자 시스템을 모델화하는 데 사용되는 하드웨어 기술 언어(HDL)이다. Verilog 언어(때로는 Verilog HDL이라고 함)는 다양한 수준의 추상화(abstraction)에서 아날로그, 디지털 및 혼합 신호 회로의 설계 검증 및 실행을 지지한다.
HDL 설계의 핵심은 HDL 프로그램을 시뮬레이트할 수 있는 능력이다. HDL 프로그램은 프로그램을 프로그래머블 논리 디바이스에 업로딩함으로써 또는 심지어는 그 사양에 기초한 칩을 생산함으로써, 하드웨어적으로 테스트될 수 있다. 그렇지만, 이것은 일반적으로 매우 시간 소모적이고 비용이 많이 드는 프로세스이며, 일반적으로 많은 양의 테스팅 및 디버깅이 시뮬레이터라 불리는 프로그램을 이용하여 행해진다. 시뮬레이터는 디지털 디바이스의 실제 클록과 유사하게, 리세팅 가능한 "클록"을 유지하고, 설계를 검증하고 디버깅하기 위해 설계자가 다양한 레지스터들의 값을 오버 타임에 출력할 수 있게 한다.
회로는 두 개의 기본 주파수 모드, 즉 동기 및 비동기에서 동작한다. 동기 회로는 다양한 회로 컴포넌트가 중앙집중식으로 발생된 클록 신호에 의해 동기화되는 디지털 회로이다. 이상적인 동기 회로에서는, 각각의 저장 컴포넌트의 논리 레 벨에서의 모든 변화가 동시에 일어난다. 이러한 변환은 클록의 레벨 변화를 따른다. 이상적으로, 각각의 저장 소자에 대한 입력은 다음 클록이 발생하기 전에 그 최후의 값에 도달하므로 전체 회로의 동작은 정확하게 예측될 수 있다. 실제로는, 논리 동작마다 약간의 지연이 필요하므로, 각각의 동기 시스템이 운용될 수 있는 최대 속도가 생긴다. 이러한 회로 작동을 정확하게 하기 위해, 클록 배분 네트워크의 설계 시에 상당한 주의가 필요하다. 최대 안전 동작 속도를 판정하기 위해 정적 타이밍 분석(static timing analysis)이 종종 사용된다.
동기 회로는 동기 시뮬레이션 알고리즘을 사용하여 시뮬레이트된다. 이러한 알고리즘은 회로 내의 이벤트의 경로를 따르도록 하기 위해 시간 집약(centralized-timed)을 사용한다. 이 방법에서 시뮬레이션은 현재의 시뮬레이션 시간에서 발생된 모든 이벤트가 처리될 때까지 진행하지 않는다. 이 알고리즘을 실행하기 위해, 글로벌 순서 큐(global ordered queue)에 이벤트들이 저장된다. 이 큐에서의 각각의 슬롯은 시뮬레이션 시간을 나타내고 그 시뮬레이션 시간에서 발생하는 이벤트의 연결 목록이 저장된다.
비동기 회로는 회로 컴포넌트가 크게 자발적으로 동작하는 회로이다. 회로 컴포넌트는 클록 회로나 글로벌 클록 신호에 지배받지 않지만, 대신 이전의 명령 및 동작의 완료를 나타내는 신호에 기초하여 동작한다. 이러한 신호는 간단한 데이터 전달 프로토콜에 의해 지정된다. 이 디지털 논리 설계는 위에서 언급한 클록 타이밍 신호에 따라 동작하는 동기 회로와 대비된다.
현재의 시간 슬롯의 이벤트가 비동기 회로 시뮬레이션 동안 처리될 때, 이러 한 이벤트들의 출력은 대응하는 논리 소자의 이전의 출력과 비교되고, 비교 결과가 상이한 경우, 현재의 이벤트의 출력에 의해 입력이 구동되는 논리 소자에 대해 새로운 이벤트가 발생된다. 글로벌 집약 시간은 존재하지 않는다. 대신 각각의 데이터 항목, 또는 토큰(token)은 타임 스탬프를 수반하는 데, 이 타임 스탬프는 데이터가 유효할 때까지의 시간을 나타낸다. 이벤트의 평가는 토큰의 이용 가능성에 의존한다. 비동기 시뮬레이션 알고리즘은 상이한 순간들에 발생하는 이벤트를 처리할 수 있다. 그러므로 동기 시뮬레이션 알고리즘보다 더 많은 병렬성(parallelism)을 추출할 수 있다.
비동기 시뮬레이션 알고리즘의 하나의 키 컴포넌트는 데이터 요소의 타임 스탬프를 판정하는 방법을 결정한다. 여러 가지의 보수적이고 낙천적인 접근방식이 존재한다. 보수적인 방식에서는 안전한 평가 시간만이 허용되는 데, 즉, 정확한 결과를 보장하는 평가 시간만이 허용된다. 논리 소자가 평가될 때 그 출력은 그 입력에 기초하여 결정되며 출력의 타임 스탬프는 최종 도착하는 토큰 및 논리 소자의 지연의 타임 스탬프에 의해 결정된다. 대조적으로, 논리 소자의 낙천적 평가는 입력 토큰이 그 입력에 도착하자마자 일어난다. 생성된 출력이 부정확한 것으로 판명되면, 이전에 알고 있던 정확한 상태로 되돌아가도록 롤 백(roll back)이 일어나고 메시지를 포워드 요소(forward element)에 전송하여 이전에 전송된 부정확한 메시지의 효과를 취소한다. 이 낙천적 알고리즘은 부가된 상태 비용을 절약하며 롤백을 수용하기 위한 더욱 복잡한 제어 메커니즘을 가진다. 낙천적 방식은 일반적으로 롤백이 없을수록 더욱 효과적이다.
동기 회로는 또한 비동기 회로를 에뮬레이트하는 데도 사용될 수 있다. 이러한 동기 "핸드쉐이크(handshake)" 회로는 비동기 회로와 동일한 통신 프로토콜을 따르지만, 연속적인 동작을 위한 클록 신호를 계속 사용한다. 이러한 실행의 예로는, 예를 들어 2001년 3월 비동기 회로 및 시스템에 관한 7차 국제 심포지움 과정 중에서의 Ad Peeters 및 Kees van Berkel에 의한 "동기 핸드쉐이크 회로(Synchronous Handshake Circuit)"를 들 수 있다. 이러한 회로들은 논리 소자에 의해 결과가 계산될 때를 나타내기 위해 신호를 사용한다. 이 신호(때때로 "유효 비트(valid bit)"라고 함)는 클록과 결합하여 사용된다. 이러한 회로에서, 토큰은 이러한 부가적인 신호를 사용하여 명시적으로 나타내어진다. 그 입력이 유효할 때 이러한 회로 처리에서의 동작은 종래의 비동기 회로에서와 같다. 그렇지만, 클록 신호는 마찬가지로 상태 전환을 제어하는 데 사용된다. 모든 클록 주기가 유효한 결과로 계산되는 것은 아니기 때문에, 이러한 회로의 클록 주파수가 그 성능(performance)을 반드시 판정하는 것은 아니다. 그렇지만, 클록은 회로 동작을 제어하는 데 사용되기 때문에, 동기 시뮬레이션 방법은 이러한 회로를 시뮬레이트하는 데 사용될 수 있다.
비동기 동작을 에뮬레이하는 데 동기 회로 실행이 사용될 때, 계산의 성능 및 그외 속성은 토큰이 처리되는 레이트에 의해 결정되기 때문에 하부 계산 모듈(underlying computation module)은 여전히 비동기이다. 이 하부 계산 모듈을 "비동기 데이터흐름(asynchronous dataflow)"이라 칭한다.
일단 설계가 완성되고 시뮬레이션에 의해 검증되면, HDL 코드가 논리 컴파일 러에 공급되고, 출력은 FPGA 디바이스로 업로드된다. 이것은 기술-맵 넷리스트(technology-mapped netlist)의 생성을 통해 달성된다. 이 넷리스트는 배치 및 배선(place-and-route)이라 칭하는 프로세스를 이용하여 실제의 FPGA 아키텍처에 맞춰져 있고, 일반적으로 FPGA 회사의 소유권 배치 및 배선 소프트웨어에 의해 수행된다. 전술한 시뮬레이션은 제조업자 지정 실행(manufacturer-specific implementations)을 정당화하기 위해 이러한 넷리스트 생성 후 수행될 수 있다. 설계 및 정당화 프로세스(validation process)가 완료되면, (또한 FPGA 회사의 소유권 소프트웨어를 사용하여) 생성된 이진 파일을 사용하여 FPGA를 (재)구성한다.
전술한 바와 같이, 비동기 동작은 동기 동작에 비해 상당한 중요한 이점을 제공한다. 그렇지만, 역사적 개발 과정에서, 동기 회로는 먼저 산업 분야, 특히 재구성 가능한 게이트 어레이의 분야에 폭넓게 수용되었다. 이러한 이유로, 많은 더 많은 설계가 현재, 비동기 포맷보다 동기 논리 포맷으로 존재한다. 산업 분야에 의해 직면한 중요한 문제 중 하나는, 동기 회로 설계를 비동기 설계로 변환하기 위한 효과적인 방법을 판정하여, 주요한 재설계 없이 또는 더 나쁜 변환 설계 결점 없이 비동기 동작에 대한 이익의 이점을 취하는 것이었다.
연구 그룹 및 회사 모두에 의해 개발되어 온 다양한 동기 재구성 가능한 아키텍처가 존재한다. 그렇지만, 대부분의 이러한 아키텍처는 그 자신의 상호접속의 빈약한 스케일링(scaling)으로 인한 성능 문제를 안고 있다.
본 발명의 발명자는, 당기술분야에서 칩 '패브릭(fabric)'으로 알려진, 비동기 회로의 상호접속 구조가 동기 회로의 비동기 회로로의 변환에서 매우 제한적인 요소일 수 있다는 것을 인식하였다. 이것은 비동기 토큰 검증 프로토콜을 지지하는 데 필요한 상호접속 아키텍처의 복잡성 때문에 특히 그러한 데, '핸드쉐이크'는 비동기 논리 블록들 사이로서 유효 데이터를 나타낸다. 본 발명의 발명자는 변환된 동기 회로를 자신들의 비동기 형태로 지원하기 위해서는 상호접속 방법 및 시스템을 향상시킬 필요가 있다는 것을 인식하였다.
본 발명은 동기 아키텍처를 비동기 데이터흐름 실행으로 자동으로 변환하기 위한 시스템 및 방법을 포함한다. 변환은 원래의 동기 아키텍처로부터 논리적 원시함수(logical primitives)를 보존하고, 이에 의해 동일한 합성 알고리즘이 원래의 동기 아키텍처에 의해 사용된 바와 같이 데이터흐름 아키텍처에 사용될 수 있게 한다. 즉, HDL 동기 회로 설계의 출력을 사용하여, 개발자나 제조업자의 역할에 관한 재설계를 갖지 않는 동일한 논리 회로의 비동기 회로를 생성할 수 있다. 최종의 비동기 데이터흐름 실행은 동기 회로나 비동기 회로를 사용하여 현실화될 수 있다.
본 발명의 실시예에서, 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 변환 방법 및 시스템이 제공되며, 예시적인 방법은,
복수의 신호-전도 와이어, 복수의 동기 논리 블록, 복수의 접속 박스, 및 복수의 스위치 박스를 포함하는 동기 회로 설계를 식별하는 단계로서, 상기 복수의 접속 박스는 상기 복수의 신호-전도 와이어를 상기 동기 논리 블록에 접속하는 동기 접속 스위치를 포함하고, 상기 복수의 스위치 박스는 와이어와 다른 와이어를 접속하는 스위치 박스 스위치를 포함하는, 상기 동기 회로 설계를 식별하는 단계;
상기 동기 회로 설계의 기능적 특징을 판정하는 단계;
상기 동기 회로 설계로부터, 상기 복수의 동기 논리 블록의 적어도 일부를, 대응하는 비동기 데이터흐름 논리 함수에 프로토콜 신호를 제공하는, 대응하는 비동기 데이터흐름 논리 블록으로 변환하는 단계;
상기 동기 회로 설계에서, 상기 와이어를 트랙으로 변환하는 단계로서, 각각의 트랙은 상기 비동기 논리 블록들 간에 데이터 및 프로토콜 신호를 통신하도록 복수의 와이어를 지원하는, 상기 와이어를 트랙으로 변환하는 단계;
상기 동기 회로 설계에서, 상기 동기 회로 설계의 기능적 특징에 따라, 상기 동기식 스위치 박스 스위치를 프로그래머블 스위치 포인트로 변환하는 단계; 및
상기 동기 회로 설계에서, 상기 동기 회로 설계의 기능적 특징에 따라, 상기 동기 접속 스위치를 프로그래머블 스위치로 변환하는 단계
를 포함한다.
본 발명의 이러한 목적 및 다른 목적, 특징 및 이점은 도면과 결합하여 이하의 본 발명의 상세한 설명을 고려함으로써 분명하게 될 것이다.
도 1은 비동기 회로 칩 패브릭의 개략도이다.
도 2a, 도 2b, 도 2c는 서로 다른 반도체 칩 도전체 트랙의 개략도이다.
도 3a는 프로그래머블 스위치 포인트의 개략도이다.
도 3b 및 도 3c는 프로그래머블 스위치 포인트 실행 하드웨어의 개략 컴포넌 트를 도시하는 도면이다.
도 3d는 프로그래머블 스위치 포인트에 대한 제1 실시예의 조립된 컴포넌트를 도시하는 도면이다.
도 4a 및 도 4b는 도 3a 내지 도 3d의 프로그래머블 스위치 포인트 하드웨어에 대한 대안의 실시예를 도시하는 도면이다.
도 4c는 프로그래머블 스위치 포인트의 대안의 실시예의 조립된 컴포넌트를 도시하는 도면이다.
도 5는 프로그래머블 스위치 포인트의 개략도이다.
도 6은 본 발명에 따라 동기 회로 설계를 비동기 회로 설계로 변환하는 프로세스를 나타내는 흐름도이다.
도 7a 및 도 7b는 각각 동기 논리 회로 예에 대한 상징도 및 개략도이다.
도 8a 및 도 8b는 각각 본 발명에 따라 비동기 설계로 변환된 도 7의 동기 논리 회로 예의 상징도 및 개략도이다.
본 발명에 따르면, 여기서 동기 회로 설계를 비동기 회로 설계로, 특히 프로그래머블 비동기 회로 설계로 변환하기 위한 방법 및 시스템이 제공된다. 본 발명은 동기 회로 설계를 평가하고, 와이어, 스위치/접속 및 논리 함수를 등가-함수 비동기 회로 설계로 변환하며, 동기 회로 설계의 모든 이점을 지닌 기능적으로 등가의 비동기 회로를 실행하는, 시스템적으로 실행 가능하고 반복될 수 있는 프로세스를 제공한다. 변환을 시스템적으로 실행하기 위한 프로세스 및 비동기 컴포넌트를 위한 하드웨어 등가물이 (형태적으로 또는 기능적 설명으로) 제공된다. 본 발명을 이용하면, 통상적으로 원래의 설계 실행에 대한 변화 없이, 동기 회로의 실질적으로 변하지 않은 넷리스트, 개략도 또는 그외 설계 구현을 이용하여, 임의의 동기 회로 설계가 비동기 등가물로 변환될 수 있다.
여기서 사용된 바와 같이, 예들은 도식적이며 제한되지 않는다.
도 1을 참조하면, 당기술분야에서 "아일랜드 스타일(island style)" 아키텍처라 칭하는 반도체 회로 칩 아키텍처의 표준의 재구성 가능한 부분(100)이 도시되어 있다. 이 아키텍처는 다양한 프로그래머블 논리 함수를 지원하는 논리 블록(LB)(102)의 프로그래머블 어레이를 포함한다. 복수의 직각으로 배향된 트랙으로서 도시되어 있는, 이 아키텍처의 라우팅 트랙(104)은 전자 신호를 반송하며 선택된 논리 블록들(102) 사이의 재구성 가능한 상호접속을 실행하는 데 사용된다. 라우팅 트랙들을 상호접속하고 논리 블록들을 구성하는 데 사용되는 플렉시블 라우팅 아키텍처의 주요 요소는 접속 박스(CB)(106) 및 스위치 박스(SB)(108)를 포함한다. 구현에 있어서, 스위치 박스(108)는 와이어와 와이어를 접속하는 스위치, 즉 수평 및 수직의 라우팅 트랙 내의 와이어이다. 접속 박스는 와이어와 논리 블록 요소를 접속하는 스위치이다. 예시의 목적을 설명하기 위해, 도면에는 단지 예시적 요소들만이 표시되어 있다. 그렇지만, 독자는 와이어 트랙, 접속 박스 및 스위치 박스가 실제로 원하는 상호접속 기능을 제공하기 위해 반도체 칩의 표면 상에서 반복된다는 것을 이해할 것이다.
실제로, 동기 회로 설계의 스위치 박스 내의 통상적인 접속은 멀티플렉서 회 로 및 신호 드라이버로 이루어져 있고, 이 멀티플렉서에 대한 제어 입력이 프로그램될 수 있다. 멀티플렉서는 스위치 박스의 한 세트의 입력으로부터 출력들 중 하나의 출력으로의 접속을 지원한다. 동기 회로 설계 접속 박스의 통상적인 접속은 프로그래머블 스위치를 포함한다.
실제로, 접속 박스 및 스위치 박스의 구조는 와이어 블록과 논리 블록과의 접속을 판정하고, 이에 의해 반도체 칩의 기능을 결정한다. 본 발명의 설명된 실시예에서, 부분(100)으로 표시된 반도체 칩은 예를 들어 Achronix™, Xilinx™, Altera™ 또는 당기술분야에 잘 알려져 있는 그외의 것들로부터 입수 가능한 타입의 FPGA이다.
도 2a 내지 도 3c를 참조하면, 당기술분야에 잘 알려진 방법에서, 트랙(104)은 비동기 패브릭으로, 단일의 와이어를 포함한다. 대조적으로, 비동기 데이터흐름 패브릭에서, 각각의 트랙(104)은 데이터흐름 통신 채널을 제공하는 한 묶음의 와이어를 사용하여 구현된다. 도 2b 내지 도 2c는 데이터흐름 상호접속에 대한 변환에서 개별의 와이어를 구현하는 두 가지의 다른 방법을 도시하고 있다. 트랙(104)은 도 2b에 도시된 바와 같이 3개의 와이어(210, 212, 214) 구성으로 구현되거나, 도 2c에 도시된 바와 같이 2개의 와이어(220, 222) 구성으로 구현될 수 있으며, 선택된 구성은 여기서 언급한 바와 같이 그리고 당기술분야에 공지된 바와 같이 핸드쉐이크 프로토콜의 타입에 기초한다. 실제로 통상적인 게이트 어레이 반도체 칩에서, 와이어는, 도시된 바와 같이 채널당 3개 또는 2개로 그룹화된 트랙 또는 채널로 알려진 것에 포함된다.
도 2b의 3개의 와이어 구성에서, 와이어(210 및 212)는 데이터를 전송하는 데 사용되고, 와이어(214)는 제어 신호, 예를 들어 승인 신호를 위해 사용된다. 도 2c의 2개의 와이어 구성에서는, 마찬가지로 "단일의 트랙"으로 알려진 바와 같이, 와이어(220 및 222) 모두는 데이터 및 제어 신호 모두를 위해 사용된다. 이러한 와이어는 당기술분야에 잘 알려진 바와 같이, 매우 다양한 비동기 통신 프로토콜을 구현하는 데 사용될 수 있다.
다른 와이어의 구성도 가능하다는 것을 이해할 수 있는바, 개별의 트랙이 1 비트 이상의 정보를 라우트할 수 있고, 전체 프로그래머블 라우팅은 이종의 프로토콜(heterogeneous protocol), 비트 폭, 및 와이어 구성을 포함할 수 있다. 데이터 및 제어 신호를 나타내기 위해 단일의 와이어 및 다중-전압 논리 신호를 사용하여 트랙을 구현하기 위한 공지의 방법이 존재한다.
본 발명의 설명된 실시예에서, 트랙의 비트폭, 즉 단일의 동작 동안 트랙에 의해 전달될 수 있는 비트 수는 원래의 동기 아키텍처로부터의 비트폭에 의해 결정되며, 이에 따라 비동기 회로 설계의 비트폭은 변환된 동기 회로 설계의 비트폭과 동일할 것이다. 2-위상 및 4-위상 핸드쉐이크 프로토콜을 포함한, 상이한 비트폭 및 다중-위상 핸드쉐이크 프로토콜은 당기술분야에 공지되어 있다. 프로그래머블 라우팅 아키텍처에 대한 설명된 실시예는 3-와이어 방식(210), 및 라우팅 와이어 당 1 비트로 통신하기 위한 표준 4-위상 핸드쉐이크 프로토콜을 사용한다.
일반적으로 동기 회로 설계로부터 비동기 설계 회로로의 변환을 고려하면, 본 발명에 따라, 원래의 동기 아키텍처로부터의 와이어는 본 발명의 통신 채널로 대체되는 데, 이것은 원래의 동기 회로 설계의 데이터 흐름과 기능적으로 동일한 논리 블록들 사이의 데이터를 위한 완전한 흐름 제어를 제공한다. 알 수 있는 바와 같이, 본 발명의 통신 채널은 비동기 형태로 회로를 구현하기 위해 재설계를 필요로 하지 않는, 동기 회로를 위한 동일한 기계어 설계를 사용하여 구현될 수 있다.
스위치 박스 하드웨어
도 3a를 참조하면, 4개의 포트: 북(N) 포트(302), 서(W) 포트(304), 남(S) 포트(306), 동(E) 포트(308)를 포함하는 프로그래머블 스위치 포인트(300)가 도시되어 있다. 프로그래머블 스위치 포인트(300)는 스위치 박스(108)(도 1) 내의 모든 와이어 트랙 교차점에 삽입된다는 것을 이해해야 한다. 각각의 프로그래머블 스위치 포인트(300)는 도 3b 및 도 3c에 도시된 프로그래머블 스위칭 아키텍처를 포함한다. 도 3b를 참조하면, 함께 단일의 버퍼라고도 불리는 2개의 FIFO(first-in-first-out) 버퍼(310, 312)가 도시되어 있고, 입력 L(각각 L0, L1) 및 출력 R(각각 R0, R1)을 포함한다. 도 3c를 참조하면, 4개의 프로그래머블 스위치(318)는 도면부호 320, 322, 324, 326으로 도시되어 있고, 각각은 4개의 입력(하나의 트랙 내의 각각의 와이어마다 하나의 입력) 및 하나의 출력을 포함한다. 각각의 스위치 내의 각각의 접속은 프로그래머블 링크를 포함하며, 이것들 중 하나는 프로그래머블 스위치(320)에서 도면부호 316으로 표시되어 있다. 종래의 방법에서, 프로그래머블 링크(316)는, 접속 또는 개방 회로 중 어느 하나로 기능하도록 그래서 링크를 접속/단절하도록, 설계 프로세스의 일부로서 제어될 수 있다는 것을 독자들은 이해할 것이다.
도시된 프로그래머블 스위치(318)의 구성은 하나의 가능성 있는 멀티플렉서 회로의 구현이다. 스위치 및/또는 논리 게이트의 서로 다른 구성을 사용하는 다른 구현들도 공지되어 있다.
도 3a, 도 3b, 도 3c에서의 기호 명칭으로 표시된 바와 같이, 프로그래머블 스위치(320)는 NSEW 포트 중 임의의 것을 버퍼(310)의 입력 L0에 접속할 수 있다. 프로그래머블 스위치(324)는 마찬가지로 NSEW 포트 중 임의의 것을 버퍼(312)의 입력 L1에 접속할 수 있다. 각각의 프로그래머블 스위치(322 및 324)도 마찬가지로 NSEW 포트 중 임의의 것과의 접속을 위해, 대응하는 버퍼(310, 312)의 출력 R0, R1을 각각 선택할 수 있다. 프로그래머블 스위치 및 버퍼를 포함하는 설명된 스위치 포인트(300)는 그러므로 임의의 인입 트랙 와이어/포트를 임의의 출력 트랙 와이어/포트에 접속할 수 있다. 도 3d는 연산 구성에 접속된 스위치 포인트(300)의 컴포넌트를 도시한다.
동기 스위치 블록 아키텍처를 비동기 데이터흐름 아키텍처로 변환하기 위해, 동기 회로 설계 아키텍처에서의 원래의 신호 버퍼 및 와이어를 설명된 데이터흐름 파이프라인 스테이지로 대체하는 데, 각각의 와이어를, 각각의 단말(terminus)에서의 프로그래머블 스위치 포인트(300)를 포함하는 다중-와이어 트랙(104)(도 2b에 도시됨)으로 대체하는 것을 포함한다. 그러므로 신호 버퍼를 가진 동기 와이어는 다중-와이어 트랙(도 2b, 도 2c)에 의해 프로그래머블 스위치 포인트(300)와 대체된다. 이 데이터흐름 요소는 유한 용량을 가진 FIFO(first-in-first-out) 버퍼를 구현하고, FIFO의 회로 구현은 동기 아키텍처로부터 와이어를 구현하는 데 사용되는 변환 방식의 속성에 의해 결정된다.
각각의 프로그래머블 스위치 포인트(300)는, 버퍼링된, 버퍼링되지 않은 완전한 전송 게이트로, 또는 단일의 통과 트랜지스터의 다양한 방식으로 구현될 수 있다. 이러한 선택은 당업자는 잘 이해할 수 있을 것이다. 사용된 스위치의 타입은 원래의 동기 구현의 복사일 수 있거나, 그 변환된 재구성 가능한 패브릭의 새로운 성능, 파워, 및 영역 특성에 기초한 변형일 수 있다.
도시된 전술한 스위치 포인트는 2개의 버퍼(310, 312)만을 포함하는 데, 그 이유는 데이터를 위한 2개의 와이어와 프로토콜 신호를 위한 1개의 와이어를 가진, 전술한 3-와이어 채널에서 스위치 포인트(300)에 의해 지원되는 독립적인 출력 접속에 대해 기껏해야 2개의 독립적인 입력이 있을 수 있기 때문이다. 상이한 스위치 포인트 토폴로지가 가능하며, 독립 라우트의 최대수는 와이어 트랙 및 핸드쉐이크 프토토콜 컨벤션에 의해 결정되고, 이것은 또한 필요한 버퍼의 수를 결정한다. 버퍼는 열등 조건의 버퍼(weak-conditioned buffer), 사전-충전 절반 버퍼(pre-charge half-buffer), 사전-충전 완전 버퍼(pre-charge full-buffer)를 포함하거나, 심지어는 자체-리셋팅 논리, 정적 또는 동적 논리 훼밀리를 포함한 임의의 논리 훼밀리를 사용하여 구현되는 동기 래치 또는 저장 요소를 포함한, 다양한 방식으로 구현될 수 있다. 또는, 라우팅 트랙에 의해 사용되는 특정의 프로토콜도 버퍼를 구현하는 데 사용되는 회로에 영향을 줄 수 있다는 것은 당연하다. 이러한 선택은 다시 당업자에게 자명할 것이다.
도 3에 설명된 파이프라인화된 스위치 포인트의 본래부터 가지고 있는 제한은 단일의 버퍼가 기껏해야 하나의 목적지를 가질 수 있다는 점이다. 이 제한은 상호접속의 데이터흐름 속성에 기인한다. 비-데이터흐름(non-dataflow), 동기 상호접속에서, 버퍼의 출력과 복수의 목적지와의 접속이 유효하다. 그렇지만, 이러한 접속은 데이터흐름 스위치 포인트에 대해서는 무효한데 그 이유는 통신 프로토콜이 흐름-제어를 포함하기 때문이다. 예를 들어, 2개의 데이터 와이어(210, 212) 및 승인 와이어(214)를 포함하는 도 2b의 3개의 와이어 비동기 프로토콜에서, 데이터 와이어는 전송기로부터 수신기로 정보를 전달하는 반면 승인 와이어는 수신기로부터 전송기로 정보를 전달한다. 하나의 전송기로부터 복수의 목적지로 데이터 와이어를 접속할 수 있는 반면, 복수의 승인 와이어를 함께 접속할 수 없는데 그 이유는 각각의 수신기는 독립적인 승인 신호를 가지고 있기 때문이다.
출력을 지원하는 파이프라인화된 스위치 포인트를 복수의 목적지까지 확장하기 위해, 도 4a 및 도 4b에 도시된 바와 같은 추가의 구성이 제공된다. 도면에는 2개의 변화가 도입된 동일한 스위치 포인트(300)의 수정 버전이 도시되어 있다. 이전의 도면에 대한 동일한 도면부호는 동일한 요소를 나타낸다. 변경된, 대응하는 요소가 우선적으로 도시되어 있다. 최초의 변화는 제2 버퍼(312)에 대한 접속(324', 326')의 구성에서의 감소이다. 이 감소는 라우팅에서의 유연성의 어떠한 감소없이 원래의 스위치 포인트(300)에 대해 이루어질 수 있다. 이것을 지원하기 위해, 스위치 포인트의 하나의 선택된 포트, 예를 들어 서(W) 포트에 대한 임의의 가능한 접속이 제1 버퍼(310)의 입력/출력(320, 322)에 할당된다. 일단 이것이 완료되면, 모든 다른 가능한 접속이 제2 버퍼에 의해 지원된다. 이 최적화는 프로그래머블 스위치 포인트를 구현하는 데 필요한 영역을 감소하는 이점을 갖는다.
두 번째 변화는 제1 버퍼(310)의 출력에 대한 복수의 목적지의 지원이다. 새로운 접속은 버퍼(310)의 입력 L0에 대한 동일한 접속을 포함한다. 제1 버퍼의 출력 R0에 대한 접속은 팬아웃을 지원하기 위해 수정된다. 라우팅 트랙을 위한 와이어는 버퍼로부터 대응하는 NSE 또는 W 포인트 포트로 정보를 전달하는 데이터 와이어, 및 스위치 포트로부터 버퍼로 데이터를 전달하는 데이터 및 승인 와이어로 이루어져 있다. 스위치 포인트 트랙 와이어 세트는 위에서와 같이 스위치(322)를 통해 버퍼의 출력에 바로 접속된다. 4개의 포트(420) 각각에 접속된 트랙 와이어에 대응하는 승인 와이어, 예를 들어 트랙(104) 내의 와이어(214)는 프로그래머블 완료 검출 소자(424)를 사용하여 버퍼의 출력 R0에 대한 승인 신호에 접속된다. 이것은 4개의 승인을, 핸드쉐이크 프로토콜에 따라 버퍼에 제공될 수 있는 단일의 승인 신호에 결합시킨다.
프로그래머블 완료 검출 회로(415)는, 입력이 완료되고 수용 가능한 때를 표시하기 위한 적절한 AND(또는 다른 적절한 논리) 함수를 가진 프로그래머블 스위치를 사용하고, 당기술분야에 잘 알려진 다양한 방법으로 구현될 수 있다. 프로그래머블 완료 검출 회로의 일례가 Teifel 등에 의한 미국특허공개 2005/0077918에 개시되어 있으며, 이 문헌의 내용은 본 명세서에 원용된다. 다른 예로는, CSCD(Current Sensing Completion Detection), ACMD(Activity Monitoring Completion Detection), 및 독자에게 잘 알려질 바와 같은 그외의 것들이 있다. 독립식 소자(stand-alone element) 외에, 다른 가능성 있는 구현은 프로그래머블 완료 검출 소자(424)와 버퍼의 회로 구현을 결합하는 것이다. 이것은 성능, 전력 소비, 및 영역을 포함한, 다양한 이유로 수행될 수 있다.
도 4c는 동작 팬-아웃 구성으로 접속된 스위치 포인트(300)의 컴포넌트를 도시한다.
동작에서, 프로그래머블 완료 검출 회로는 제어된 버퍼의 출력으로의 정보 전달을 허용하는 승인 신호를 발생하기 전에 다음 데이터 항목을 수신할 준비를 나타내는 신호를 전달하기 위해 모든 목적지를 대기한다. 통신 프로토콜의 서로 다른 선택을 위해, 서로 다른 회로 소자를 사용하여 이 기능을 실행할 수 있다. 선택된 통신 프로토콜에 의존하여, 적절한 논리 함수 및 그 대응하는 회로 소자는 당업자에게는 자명할 것이다.
접속 박스 하드웨어
도 1을 다시 참조하면, 각각의 접속 박스(110)는 논리 블록 입력 또는 출력이 라우팅 트랙에 접속될 수 있도록 하는 한 세트의 접속 포인트를 포함한다. 이제 도 5를 참조하면, 와이어(104A)로부터 프로그래머블 스위치(502, 504)를 통해, ⅰ) 선택된 논리 블록으로의 와이어(104B)로, 그리고 ⅱ) 선택된 논리 블록으로부터의 와이어(104B)로 신호를 선택적으로 라우팅하기 위한 표준 접속 포인트(500)가 도시되어 있다. 논리 블록으로의 신호 및 논리 블록으로부터의 신호는 그러므로 프로그래머블 스위치(502, 504)를 이용하여 트랙(104A)에 접속된다. 접속 포인트(500)와 스위치 포인트(300) 간의 하나의 기능적 차이(도 3)는 접촉 포인트가 라 우팅 트랙을 분할하는 지원을 포함한다는 점이다. 예를 들어, 개별의 라우팅 트랙은 스위치의 적절한 설정에 의해, 그러나 접속 포인트에 의해서가 아닌, 프로그래머블 스위치 포인트(300)에 의해 두 개의 트랙으로 컷(cut)될 수 있다. 즉, 스위치 포인트(300)에서, (도 3a에는 도시적으로 도시되어 있지만) 북(N) 포트로부터의 입력은 남(S) 포트에 대한 접속을 필요로 하지 않는다. 그렇지만, 접속 포트(500)에서, 트랙(104a)은 분할될 수 없다.
그 접속성에 있어서 방향성을 가진 접속 박스(106)는 여기서 언급된 바와 같이, 변환된 재구성 가능한 아키텍처에서의 수정 없이 복사될 수 있으며, 이에 대해서는 이하에 상세히 서술한다. 그렇지만, 접속 포인트(500)가 언급한 바와 같이 팬-아웃을 지원하지는 않는다 점은 자명할 것이다. 팬-아웃을 지원하기 위한 접속 포인트(500)를 수정하기 위해, 전술한 도 4a, 도 4b에 설명된 바와 같이 프로그래머블 스위치 포인트와 유사한 방식으로 설계될 수 있다.
일반적으로 도 3 및 도 4와 관련해서 전술한 바와 같이 스위치 및 접속을 고려하면, 프로그래머블 트랙/와이어 라우팅에 의해 요구되는 유연성에 의존하여 가능한 복수의 최적화가 존재한다. 제1 최적화는 프로그래머블 스위치 포인트(300)로부터 버퍼(도 3b)를 완전하게 제거하여, 파이프라이닝을 감소하는 것이다. 제거된 버퍼는 와이어에 의해, 또는 종래의 신호 드라이버에 의해 대체될 수 있다. 이것은 마찬가지로 접속 포인트(500)에 대한 유용한 최적화이다. 제2 최적화는 프로그래머블 스위치 및 접속 포인트에서, 그 완전함(entirety)에서, 재구성 가능한 스위치를 제거하고, 대응하는 데이터 레일(data rails)을 라우팅 트랙으로부터 서로 접속하는 것이다. 데이터 레일만이 바로 접속될 수 있다. 이 최적화는 일반적으로 접속 포인트에 더욱 적절한 데, 왜냐하면 종래의 접속 포인트는 통상적으로 이 방식으로 설계되기 때문이다. 승인 와이어는 팬-아웃을 지원하기 위해 프로그래머블 완료 검출 소자를 필요로 할 것이다.
당업자에게는 자명할 전술된 스위치 구성에 대한 많은 다른 변형이 존재한다. 변형의 예로는, 스위치 포인트 또는 접속 포인트를 구현하기 위해 파이프라인화된 버퍼와 신호 버퍼를 혼합하는 것, 약간의 데이터 레일 상의 스위치를 가질지 모든 데이터 레일 상의 스위치를 가질지 등을 들 수 있다. 이 선택은 상호접속의 유연성, 영역, 성능 및 전력 소비에서의 다양한 교환(trade-off)에서 생기며, 사용된 실제의 구현은 응용의 본질(nature) 및 다양한 교환의 중요성에 의존할 것이다.
재구성 가능한 스위치 박스 접속과 접속 박스 접속을 변환하기
동작 시, 동기 아키텍처 회로 설계를 비동기 데이터흐름 설계로 변환할 때의 한 단계는 전술한 비동기 접속을 동기 접속으로 대체하는 것이다. 적절한 구성을 만들기 위해, 동기 회로 접속의 소정의 특징을 식별하고 적절한 비동기 대체를 선택할 필요가 있다.
제1 특징 또는 특성은 동기 아키텍처에서의 재구성 가능한 접속이 팬-아웃을 지원하는지 또는 팬-아웃을 지원하지 않는 지이다. 판정하기 위한 제2 속성은 동기 회로 설계에서의 접속이 방향성이 있는지 없는지의 여부이다. 단방향 접속은 가능성 있는 접속에 관계없이, 정보의 전송기 및 수신기가 정적으로 결정되는 접속이다.
원래의 동기 회로 설계에서 팬-아웃이 사용되는 경우에, 도 4와 관련해서 전술한 바와 같이 구성 가능한 완료 검출 소자를 사용하여 프로그래머블 스위치 포인트(300')를 접속 박스로 간단하게 대체함으로써 비동기 등가물이 생성된다. 원래의 동기 설계에서 팬-아웃이 사용되지 않을 때, 변환된 접속은 어떠한 구성 가능한 완료 검출 소자도 필요로 하지 않으며 위의 도 3에 도시된 바와 같이 실행된다.
단방향 동기 회로 설계와 관련해서, 등가의 비동기 설계를 지원하는 변환된 데이터흐름 접속은, 정확한 팬-아웃/노-팬-아웃 구성(fan-out/no-fan-out configuration)의 선택 외에, 데이터흐름 버퍼, 예를 들어 도 3에 도시된 버퍼를 도입하여 성능을 향상시킨다. 이러한 버퍼의 도입은 선택이며, 그 선택은 최종 변환된 설계에 대한 관심의 대상이 되는 계량(영역, 전력, 성능)에 기초한다.
양방향 동기 회로 설계와 관련해서, 비동기 등가물을 지원하는 변환된 데이터흐름 접속은, 방향성에 관한 정보가 버퍼의 입력 또는 출력을 적절한 라우팅 트랙에 접속하는 사용되는 버퍼를 포함한다. 도 3은 접속성이 양방향인 프로그래머블 스위치 포인트(300)의 예를 도시하고 있으며, 도시된 바와 같이 버퍼의 입력 또는 출력을 접속할 수 있어야만 하는 다양한 포트들이 사용된다. 유사한 구성이 동기 프로그래머블 접속에도 존재하며, 이 프로그래머블 접속은 성능 이유(performance reasons)를 위해 신호 버퍼를 포함한다.
적절한 접속 타입 선택에 따라 동기 접속을 전술한 비동기 접속으로 변환하는 것은 본 발명에 따라 동기 회로 설계를 비동기 회로 설계로 변환하는 한 단계이다.
동기 회로 설계를 비동기 데이터 흐름 설계로 변환하기
당기술분야에 잘 알려진 바와 같이, 동기 논리 블록은 다양한 사이즈의 구성 가능한 룩-업 테이블(LUT), 운반-체인 지원체(carry-chain support), 프로그래머블 AND 게이트, 프로그래머블 XOR 게이트, 프로그래머블 MUX, 및 독자에게 잘 알려진 그외의 것들을 통상적으로 포함하는, 그러나 이에 제한되지는 않는 다양한 구성 가능한 논리 함수를 포함한다.
도 6을 참조하면, 본 발명에 따라 동기 회로 설계를 비동기 데이터흐름 논리 회로 설계로 변환하기 위한 프로세스(600)가 도시되어 있다.
동기 회로를 비동기 데이터흐름 회로로 변환하기 위해, 동기 설계가 식별된다(단계 602). 후술되는 바와 같이, 이 설계는 종래의 머신 및/또는 회로 구성 설계 중 임의의 것일 수 있다. 동기 설계에서의 신호 와이어(단계 604) 및 논리 함수(단계 606)가 식별된다. 비동기 신호 와이어는 전술한 바와 같이 다중-와이어 트랙으로 대체된다(단계 608).
스위치 및 접속인, 동기 설계의 프로그래머블 연속성은 전술한 바와 같이 접속되어 있는 논리의 특징들에 의해 식별되고(단계 610), 전술한 바와 같이 그에 따라 적절한 비동기 스위치 및 접속으로 변환된다(단계 612). 전술한 바와 같이, 서로 다른 스위치 박스 및 접속 박스 구성은 팬-아웃/노-팬-아웃, 핸드쉐이크 프로토콜 선택, 및 단방향/양방향과 같은 논리 회로 특징에 기초하여 선택될 수 있다.
후술되는 바와 같이, 동기 회로의 논리 함수는 블록 논리 함수를 구축하는 등가의 데이터흐름으로 변환된다(단계 614).
일반적인 논리 블록 변환
동기 회로를 등가의 비동기 회로로 변환하는 것을 완료하기 위해, AND 게이트와 같은 논리 함수는, 그 모든 입력 상에서 이용 가능한 유효 데이터를 대기하는 데이터흐름 AND 게이트로 대체되고, 그런 다음 유효 출력만을 생성한다. 각각의 논리 함수에 대한 구현은 파이프라인화 될 수도 있고 되지 않을 수도 있으며, 그 선택은 성능 및 동작 특성, 예를 들어, 전력, 성능, 크기 등에 의존한다. 프로그래머블 룩업 테이블과 같은 논리 함수는 데이터흐름 룩업 테이블로 대체되고, 논리 블록은, 룩업 동작을 실행하여 유효 출력을 생성하기 전에, 모든 그 입력이 유효화되기를 대기한다.
비동기 데이터흐름 논리 소자는 일반적으로 자신들의 동기 상대방과 동일한 기능을 수행하며, 당기술분야에 잘 알려진, 그러나 원래의 동기 아키텍처 와이어로 대체하는 비동기 아키텍처 접속 트랙과 함께 사용되는 통신 프로토콜의 특별한 선택에 기초하여 비동기 방식으로 동작한다는 것을 이해할 것이다. 예시의 목적을 위해, 예시적 동기-비동기 논리 블록 변환에 대해 이하에 설명한다.
레지스터 변환
원래의 아키텍처에서 나오는 레지스터 또는 플립 플롭 FIFO 스테이지로 대체되며, 이 FIFO 스테이지는 유효 비동기 데이터 토큰으로 초기화될 수 있고 표준 제어 프로토콜에 따라 제어될 수 있다. 이것은 원래의 설계로부터 플립 플롭의 기능성을 충분히 모방할 수 있다.
메모리 블록 변환, 및 그외 지적 재산권(IP) 블록
메모리 블록은 논리 변환과 유사한 방식으로 데이터흐름 구현으로 변환될 수 있다. 데이터흐름 판독 포트 및 기입 포트가 도입되어, 원래의 동기 판독 포트 및 기입 포트를 대체한다. 그외 IP 블록(예를 들어, 멀티플라이어)도 또한 논리의 주요 입력 포트 및 출력 포트 상의 데이터흐름 인터페이스를 보장함으로써 유사한 방식으로 변환된다.
동기 경계의 도입
변환된 아키텍처는 "에워싸여(wrapped)"질 수 있는 데, 즉, 데이터흐름 프로토콜을 간단한, 동기 입력 신호 및 출력 신호로 변환하는 동기 회로 경계(synchronous circuit boundary)에 의해 전자적으로 그리고 논리적으로 경계 지어질 수 있다. 이것은 다양한 방식으로 달성될 수 있다. 예를 들어, 유효한 입력이 클록 주기마다 발생되어 변환 회로에 의해 데이터흐름 패브릭(00)에 주입될 수 있는 데, 변환 회로는 데이터흐름 패브릭(100)에 대한 각각의 입력을 위해 도입된 것이다(도 1). 패브릭이 클록 신호의 주파수보다 높은 처리량(throughput)으로 동작할 수 있는 컴포넌트로 구성되는 한, 패브릭은 계속해서 정확하게 동작할 것이다.
유사한 인터페이스가 출력에 적용될 수 있다. 패브릭에 의해 지원되는 처리량이 출력이 기록되는 레이트보다 높은 경우, 동기 출력에 전송되는 데이터흐름 패브릭의 출력 상에 항상 유효한 데이터가 있게 될 것이다.
데이터흐름 패브릭(100)이 클록을 필요로 하는 논리 훼밀리(logic families)와 접속되는 경우, I/O 클록 주파수가 데이터흐름 패브릭에 대한 인터페이스에서 불안정성 및/또는 메타-안정성(meta-stability)을 회피하도록 선택되는 것을 보장하는 것이 중요하다.
동기 회로 설계 타입
본 발명은 설계 데이터의 재작업을 필요로 함이 없이, 실질적으로 임의의 회로 설계 타입을 변환하는 데 적용될 수 있다는 것을 이해할 수 있을 것이다. 대신, 여기서 언급한 대체를 수행하기 위해 제조(fabrification)가 실행된다. 지원된 설계 타입은 예를 들어 이하를 포함한다:
- 도식 기반의 설계(schematic-based design)
- 예를 들어, VHDL, Verilog, ABEL, AHDL, HDCaml, JHDL, 및 독자에게 잘 알려진 그외 언어를 포함하는 하드웨어 기술 언어 설계.
예시적 동기-비동기 회로 변환
도 7a, 도 7b 및 도 8a, 도 8b를 참조하면, 예시적 동기-비동기 회로 변환이 도시되어 있다. 도 7a 및 도 7b와 관련하여, 단일의 동기 논리 NAND 게이트가 불린 심볼 형태(702)로 및 실제의 회로 형태(704)로 도시되어 있다. NAND 게이트(702)는 입력 a, b 및 출력 'out'을 포함하는 것으로 보여진다. 회로 자체는 회로(704) 내의 전계 효과 트랜지스터로 간단한 형태로 구현된다.
도 6을 참조하여 전술한 프로세스를 고려하면, 간단한 동기 회로 설계는 NAND 게이트로서 식별되고(단계 6) 와이어 접속 a, b 및 out으로 식별된다(단계 604). 동기 논리 함수는 물론 NAND 게이트이다(단계 606). 변환 프로세스에서, a, b 및 out 와이어는 각각 위에서 도시된 3-와이어 트랙으로 변환되고(단계 608), 트랙은 a 와이어를 위한 a.t, a.f(데이터 와이어) 및 a.e(제어 와이어), b 와이어를 위한 b.t, b.f 및 b.e, 그리고 out 와이어를 위한 out.t, out.f 및 out.e를 포함하고, .t 및 .f 와이어는 데이터 와이어를 포함하고 .e 와이어는 제어 와이어를 포함한다. 접속 및 스위치는 원래의 설계에서 노-팬-아웃을 갖는 단방향인 것으로 가정하고(단계 610) 그러므로 접속 박스는 전술한 프로그래머블 접속 스위치로 변환되고 스위치 박스는 버퍼링을 가지거나 가지지 않는 프로그래머블 스위치 포인트를 포함하도록 변환된다(단계 612). 노-팬-아웃이 존재하기 때문에, 완료 검출은 필요하지 않다. NAND 논리 함수는 도 8a, 도 8b에 도시된 데이터 동작을 가지는 비동기 NAND 함수로 변환된다.
도 8a, 도 8b를 참조하면, 동일한 논리 NAND 함수가, NAND 게이트 함수(804) 및 NAND 게이트 완료 회로(802)를 포함하는, 하나의 특별한 비동기 논리 훼밀리로 구현되는 것이 도시되어 있다. 동작 시, 게이트 함수 회로(804)는 비동기 NAND 논리 함수를 계산하도록 동작하는 반면, 완료 회로(802)는 이전의 논리 블록 및 계속되는 논리 블록을 가진 핸드쉐이크/제어 신호 기능을 수행하도록 기능한다. 전술한 바와 같이, 설명된 발명에 따르면, 원래의 NAND 게이트로부터의 각각의 단일의 와이어 입력은 3-와이어 트랙 시스템으로 변환되어 왔다.
이전의 논리 블록으로부터의 입력 a.t, a.f 및 b.t, b.f는 두 개의 NOR 논리 게이트(806)에 입력된다. NOR 게이트의 출력은 입력이 유효 데이터 토큰 값을 유지할 때, 그리고 입력이 유효 데이터 토큰 값을 유지하지 않을 때를 판정하도록 사용될 수 있다. 유효 데이터 토큰은 a.t 또는 a.f가 하이(high)인 것으로 표시되지 만 게이트는 논리 제로(zero) 및 로우(low) 값을 출력한다. 무효 데이터 토큰은 a.t 및 a.f 모두가 로우인 것으로 표시되지만 게이트는 논리 1 또는 논리 하이를 출력한다. 두 개의 NOR 게이트로부터의 결과는 제1 완료 검출 소자 C1을 공급하며, 이 검출 소자 C1의 출력은 쌍방의 입력이 유효 데이터 토큰을 유지할 때, 또는 쌍방의 입력이 유효 데이터 토큰을 유지하지 않을 때를 나타낸다.
완료 회로(802) 내의 NAND 게이트(808)는 입력 _o.t 및 _0.f를 가지며, 이 입력들은 각각 회로 함수(804)의 출력 out.t 및 out.f의 보완 버전이다. NAND 게이트(808)는 유사한 함수를 NOR 게이트로서 가지는 데, 이것은 신호 _o.t 및 _o.f는 데이터 토큰을 유지하는 지의 여부를 나타낸다. 무효 데이터 토큰은 _o.t 및 _o.f 모두가 하이인 것을 나타내는 데, 게이트가 논리 제로를 출력하는지 로우 값을 출력하는지를 나타낸다. 그런 다음 결과는 완료 검출 소자 C2에 전송되며, 이 검출 소자의 C1로부터의 다른 입력은 입력이 유효한 지의 여부를 나타낸다. 이 결합된 완료 검출은, 입력 a.t, a.f 및 b.t, b.f에 대한 승인 신호에 각각 대응하는 신호 a.e 및 b.e를 통해, 입력이 승인될 수 있는 지의 여부를 나타내는 데 사용된다. out.e 신호는 출력을 위한 트랙의 일부이며, 데이터 out.t 및 out.f 신호가 전송되는 스테이지로부터 나온다. 마지막으로, 출력으로부터의 승인 신호 out.e는 완료의 출력 C2와 결합되어, 논리 NAND 함수를 계산하는 회로(804)를 인에이블링하는 데 사용되는 신호 en을 발생한다.
이하, 비동기 NAND 게이트의 동작의 완전한 1 주기에 대해 서술한다. 초기 상에서, "en"은 하이이다. "a" 입력이 하이(a.t가 로우이고 a.f는 하이임을 나타 냄)이고 "b" 입력이 하이(b.t가 하이이고 b.f는 로우임을 나타냄)이면, 회로(804) 내의 n-타입 트래지스터는 _o.t가 로우로 되게 하고, 차례로 out.t는 하이로 설정한다. 동시에, 게이트 C1의 출력은 결국 하이로 될 것이고, _o.f 및 _o.t를 입력으로서 가지는 NAND 게이트의 출력도 하이로 될 것인 데, 왜냐하면, _o.t가 로우이기 때문이다. 이에 의해, a.e, b.e 모두는 로우로 되고, 이에 따라 입력이 승인된다.
일단 입력이 승인되면, 입력 a.t, a.f 및 b.t, b.f는 모두 로우로 될 수 있고, 입력 "a" 및 "b"에 대해 핸드쉐이크 프로토콜이 완료된다. 동시에, 출력 데이터가 승인되었다면, out.e는 결국 로우로 될 것이다. 이에 의해 차례로 C3의 출력이 하이로 되게 하고, en은 로우로 되게 한다. en이 로우로 될 때, _o.t 및 _o.f가 하이로 구동될 것이며, 이것은 차례로 출력 out.t, out.f를 로우로 리셋할 것이고 마찬가지로 동시에 C2의 출력을 하이로 되게 하여, a.e 및 b.e가 하이로 되게 하여 입력 "a" 및 "b"에 대한 핸드쉐이크를 완료한다. 마지막으로, en은 다시 하이로 되어, out.e가 하이로 되고 되자마자 게이트들이 다시 계산할 준비가 될 것이며, C3로 하여금 그 출력을 변하도록 할 것이다.
회로(804)는 en 신호에 의해 허용될 때 NAND 연산을 계산하고, 출력 와이어 out.t 및 out.f에 대해 정확하게 계산된 데이터 토큰을 생성한다.
본 발명에 따르면, 원래의 NAND 게이트로부터의 각각의 단일 와이어가 3-와이어 트랙 시스템으로 변환되었다는 것을 알게 될 것이며, 입력 a는 a.t, a.f 및 a.e로 대체되고 b는 b.t, b.f 및 b.e로 대체되고 out은 out.t, out.f 및 out.e로 대체되며, 여기서 ".t"는 ".f"는 데이터 와이어를 나타내는 첨자이고, ".e"는 핸드쉐이크 와이어를 나타내는 첨자이다. 함수 회로(804)는 비동기 논리 AND 와이어 함수를 수행하도록 동작하고, 완료 회로(802)는 유효 데이터가 입력에 수신되는 것과 이전의 논리 함수 및 계속되는 논리 함수에 대한 적절한 핸드쉐이크 신호와 함께 유효 데이터가 출력에 발생되는 것을 보장하도록 동작한다.
합성 투명도
본 발명의 중요한 특징은 데이터흐름 아키텍처가 원래의 동기 논리 함수를 기능적으로 에뮬레이팅할 수 있고 동시에 비동기 구성에서 속도 및 고유한 그외 이점을 제공할 수 있다는 점이다.
동일한 기본적인 원리의 다양한 동기 데이터흐름 구현도 가능하다. 예를 들어, 비동기 핸드쉐이크는 전술한 바와 같은 동기 회로 기술을 사용하여 에뮬레이트될 수 있다는 것을 잘 알려져 있다. (예를 들어, 유효 데이터를 가진) 완전한 흐름 제어를 가진 동기 통신 프로토콜은 동기 로직을 사용하여 설명된 상호접속의 비동기 특징을 에뮬레이트하는 방식의 일례이며, 당업자에게는 자명할 것이다. 이러한 구현은 본 발명에 대한 분명한 확장이다.
구성 메모리
논리 게이트 및 고정 논리 함수 외에, 본 발명은 변환 프로그래머블 동기 논리에 마찬가지로 적용 가능하다. 당기술분야에 잘 알려져 있고 독자에게도 잘 알려진 프로그래머블 논리 디바이스는 메모리, 스위치, 멀티플렉서와 같은 프로그래머블 소자 또는 디바이스의 논리 함수를 제어하도록 프로그램되는 그외 프로그래머 블 컴포넌트를 포함한다. 예를 들어, 도 3b는 스위치 포인트 내의 프로그래머블 스위치(318)를 도시하고 있다. 회로 내의 이러한 스위치 및 그외 프로그래머블 소자는 각각의 프로그래머블 소자에 대한 구성값을 유지하는 적절한 형태의 저장 또는 메모리에 접속된다. 예를 들어, 스위치가 제어될 수 있는 한 가지 방법은 스위치가 개방되었는지 또는 폐쇄되었는지를 지정하는 1 비트의 메모리를 사용하는 것이다.
본 발명에 따라 동기 논리 설계로부터 비동기 데이터흐름 설계로의 변환 후, 원래의 논리 내의 스위치의 설정 및 데이터흐름 논리 내의 대응하는 스위치의 설정은 동일성을 유지한다. 그러므로 동일한 메모리 비트를 사용하여 그 변환된 논리를 원래의 논리로서 프로그램할 수 있다. 이것은 본질적으로 모든 프로그래머블 논리 디바이스에 대해 그러하다. 이것은 본 발명의 특징 및 이점 모두이며, 원래의 설계의 논리가 그 변환된 설계에서 사용된 바와 같이 본질적으로 변화되지 않은 상태로 유지되게 프로그램될 수 있다.
변환된 논리 설계가 프로그래머블 완료 검출 소자, 예를 들어, 프로그래머블 완료 검출 회로(415)의 도입으로 팬-아웃을 지원해야만 하는 경우, 이 새로운 프로그래머블 소자는 구성 지원을 필요로 한다. 이러한 새로운 프로그래머블 소자에 의해 요구되는 구성 제어는 통상적으로 원래의 동기 구현에 대한 기존의 구성 비트로부터 추론된다. 완료 검출 소자(415)의 경우, 필요한 모든 것은 N, S, E, W 작동 레일( 4b)이 완료에 참여하는 지의 여부에 대한 지식이다. 이것은 N, S, E, W에 대한 데이터 레일이 출력에 접속되어 있는 지의 여부를 제어하는 데 사용되는 동일한 정보이다. 도 4c를 시험하면, 프로그래머블 완료 소자(424)에 의해 요구되는 구성은 출력 그룹(322) 내의 스위치를 제어하는 구성과 동일하다.
회로 설계자는 전술한 바와 같은 간단한 논리를 사용하여 필요한 어떤 새로운 구성 신호를 계산하기 위해 기존의 구성 비트를 사용하는 것을 선택할 수 있거나, 또는 설계자는 새로운 구성 비트를 도입하는 것을 선택할 수 있다. 이러한 두 가지 대안 간의 선택은 총전력소비, 영역, 및/또는 최종 설계의 성능과 같은 설계 교환(design trade-off)에 의존한다. 본 발명의 특징 및 이점은 변환된 설계를 제어하는 데 필요한 구성 비트들을 원래의 동기 설계에 대한 구성 비트와 동일하게 할 수 있거나, 거의 동일하게 할 수 있다는 점이다. 그 결과 원래의 동기 설계를 프로그램하는 데 사용되는 어떠한 소프트웨어 및 프로그래밍이라도 그 변환된 설계를 프로그램하는 데 거의 수정 없이 사용될 수 있게 된다.
그러므로 동기 회로 설계를 비동기 데이터흐름 설계로, 특히 프로그래머블 비동기 데이터흐름 설계로 변환시키는 새롭고 향상된 방법 및 시스템이 제공되어 왔다. 본 발명은 동기 회로 설계를 평가하고, 와이어, 스위치/접속 및 논리 함수를 등가의 함수 비동기 회로 설계로 변환하고, 그에 따라 기능적으로 등가의 비동기 회로를 모든 이점을 가지고 실행하는, 시스템적이고, 작업 가능하고 반복 가능한 프로세스를 제공한다. 비동기 컴포넌트를 위해 (형태 및 기능 상의 설명으로) 변환 및 하드웨어 등가물을 시스템적으로 행하는 프로세스가 제공된다. 본 발명을 사용하면, 통상적으로 원래의 설계 실행에 대한 변화 없이, 즉 넷리스트, 도식 또는 그외 설계 구현을 사용하여, 어떠한 동기 회로 설계라도 비동기 등가물로 변환 될 수 있다. 본 발명은 전자 기기 분야 그리고 특히 회로 설계 및 구현 분야에서 응용을 갖는다.
본 발명을 특별한 실시예와 관련해서 도시하고 설명하였으나, 이에 제한되지 않는다. 많은 변형, 변화 및 향상이 독자에게는 자명할 것이다.

Claims (28)

  1. 프로세서에 의해 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 방법에 있어서, 상기 프로세서는:
    복수의 신호-전도 와이어, 복수의 동기 논리 블록, 복수의 접속 박스, 및 복수의 스위치 박스를 포함하는 동기 회로 설계를 식별하는 단계로서, 상기 복수의 접속 박스는 상기 복수의 신호-전도 와이어를 상기 동기 논리 블록에 접속하는 동기 접속 스위치를 포함하고, 상기 복수의 스위치 박스는 상기 복수의 신호-전도 와이어와 다른 신호-전도 와이어를 접속하는 동기식 스위치 박스 스위치를 포함하는, 상기 동기 회로 설계를 식별하는 단계;
    상기 동기 회로 설계의 기능적 특징을 판단하는 단계;
    상기 동기 회로 설계로부터, 상기 복수의 동기 논리 블록의 적어도 일부를 대응하는 비동기 데이터흐름 논리 블록으로 변환하는 단계로서, 상기 비동기 데이터흐름 논리 블록은 대응하는 비동기 데이터흐름 논리 함수에 프로토콜 신호를 제공하는, 비동기 데이터흐름 논리 블록으로 변환하는 단계;
    상기 동기 회로 설계에서, 상기 복수의 신호-전도 와이어를 트랙으로 변환하는 단계로서, 각각의 트랙은 상기 비동기 데이터흐름 논리 블록 간에 데이터 및 프로토콜 신호를 통신하도록 상기 복수의 신호-전도 와이어를 지원하는, 상기 복수의 신호-전도 와이어를 트랙으로 변환하는 단계;
    상기 동기 회로 설계에서, 상기 동기 회로 설계의 기능적 특징에 따라, 상기 동기식 스위치 박스 스위치를 프로그래머블 스위치 포인트로 변환하는 단계; 및
    상기 동기 회로 설계에서, 상기 동기 회로 설계의 기능적 특징에 따라, 상기 동기 접속 스위치를 프로그래머블 스위치로 변환하는 단계
    를 포함하는 동작을 수행하는, 프로세서에 의해 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 방법.
  2. 제1항에 있어서,
    상기 프로세서에 의해, 상기 동기 회로 설계의 기능적 특징은 팬-아웃(fan-out) 및 방향성을 포함하는 그룹으로부터 선택되는, 프로세서에 의해 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 방법.
  3. 제2항에 있어서,
    팬-아웃을 포함하는 변환된 동기 회로 설계는 상기 팬-아웃의 실행을 비동기적으로 검출하도록 배치된 완료 검출 회로(completion detection circuit)를 포함하는, 프로세서에 의해 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 방법.
  4. 제2항에 있어서,
    양방향성을 포함하는 변환된 동기 회로 설계는 방향 신호를 지원하도록 배치된 버퍼를 포함하는, 프로세서에 의해 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 방법.
  5. 제1항에 있어서,
    상기 프로세서에 의해, 상기 트랙은 3-와이어 트랙, 2-와이어 트랙 및 단일 와이어/다중-전압 트랙을 포함하는 그룹으로부터 선택되는, 프로세서에 의해 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 방법.
  6. 제1항에 있어서,
    상기 동기 논리 블록은 구성 신호를 사용하여 프로그램된 프로그래머블 동기 논리 블록을 포함하며,
    상기 비동기 데이터흐름 논리 블록은, 구성 신호를 사용하고 프로그램되고 상기 동기 논리 블록에 대응하는 프로그래머블 비동기 데이터흐름 논리 블록을 포함하며, 그리고
    상기 프로그래머블 동기 논리 블록을 프로그램하는 데 사용된 구성 신호 중 적어도 일부는 상기 프로그래머블 비동기 데이터흐름 논리 블록을 프로그램하는 데 사용된 구성 신호와 동일한, 프로세서에 의해 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 방법.
  7. 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 장치에 있어서,
    복수의 신호-전도 와이어, 복수의 동기 논리 블록, 복수의 접속 박스, 및 복수의 스위치 박스를 포함하는 동기 회로 설계를 식별하는 수단으로서, 상기 복수의 접속 박스는 상기 복수의 신호-전도 와이어를 상기 동기 논리 블록에 접속하는 동기 접속 스위치를 포함하고, 상기 복수의 스위치 박스는 상기 복수의 신호-전도 와이어와 다른 신호-전도 와이어를 접속하는 동기식 스위치 박스 스위치를 포함하는, 상기 동기 회로 설계를 식별하는 수단;
    상기 동기 회로 설계의 기능적 특징을 판단하는 수단;
    상기 동기 회로 설계로부터, 상기 복수의 동기 논리 블록의 적어도 일부를 대응하는 비동기 데이터흐름 논리 블록으로 변환하는 수단으로서, 상기 비동기 데이터흐름 논리 블록은 대응하는 비동기 데이터흐름 논리 함수에 프로토콜 신호를 제공하는, 비동기 데이터흐름 논리 블록으로 변환하는 수단;
    상기 동기 회로 설계에서, 상기 복수의 신호-전도 와이어를 트랙으로 변환하는 수단으로서, 각각의 트랙은 상기 비동기 데이터흐름 논리 블록 간에 데이터 및 프로토콜 신호를 통신하도록 상기 복수의 신호-전도 와이어를 지원하는, 상기 복수의 신호-전도 와이어를 트랙으로 변환하는 수단;
    상기 동기 회로 설계에서, 상기 동기 회로 설계의 기능적 특징에 따라, 상기 동기식 스위치 박스 스위치를 프로그래머블 스위치 포인트로 변환하는 수단; 및
    상기 동기 회로 설계에서, 상기 동기 회로 설계의 기능적 특징에 따라, 상기 동기 접속 스위치를 프로그래머블 스위치로 변환하는 수단
    을 포함하는, 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 장치.
  8. 제7항에 있어서,
    상기 동기 회로 설계의 기능적 특징은 팬-아웃(fan-out) 및 방향성을 포함하는 그룹으로부터 선택되는, 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 장치.
  9. 제8항에 있어서,
    팬-아웃을 포함하는 변환된 동기 회로 설계는 상기 팬-아웃의 실행을 비동기적으로 검출하도록 배치된 완료 검출 회로(completion detection circuit)를 포함하는, 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 장치.
  10. 제8항에 있어서,
    양방향성을 포함하는 변환된 동기 회로 설계는 방향 신호를 지원하도록 배치된 버퍼를 포함하는, 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 장치.
  11. 제7항에 있어서,
    상기 트랙은 3-와이어 트랙, 2-와이어 트랙 및 단일 와이어/다중-전압 트랙을 포함하는 그룹으로부터 선택되는, 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 장치.
  12. 제7항에 있어서,
    상기 프로그래머블 스위치 각각은 논리 블록 소자를 와이어에 선택적으로 접속하기 위한 프로그래머블 스위치를 포함하는, 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 장치.
  13. 제12항에 있어서,
    상기 논리 블록의 기능적 특징이 팬-아웃을 포함하는 경우, 상기 프로그래머블 스위치는 완료 검출 회로를 더 포함하는, 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 장치.
  14. 제7항에 있어서,
    상기 프로그래머블 스위치 포인트 각각은, 각각의 와이어 접속을 위한 한 쌍의 프로그래머블 스위치를 포함하며, 이에 의해 하나의 프로그래머블 스위치 포인트에서의 하나의 와이어는 상기 하나의 프로그래머블 스위치 포인트에서의 다른 하나의 와이어에 선택적으로 접속될 수 있는, 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 장치.
  15. 제14항에 있어서,
    상기 논리 블록의 기능적 특징이 팬-아웃을 포함하는 경우, 상기 프로그래머블 스위치 포인트는 완료 검출 회로를 더 포함하는, 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 장치.
  16. 제15항에 있어서,
    상기 논리 블록의 기능적 특징이 양방향성을 포함하는 경우, 상기 프로그래머블 스위치 포인트는 하나의 와이어 접속에서 상기 한 쌍의 프로그래머블 스위치 사이에 배치된 버퍼를 포함하는, 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 장치.
  17. 제7항에 있어서,
    상기 비동기 데이터흐름 설계는 FPGA 상의 회로에서 구현되며, 상기 회로는 비동기 연산 회로 및 동기 연산 회로를 포함하는 그룹으로부터 선택되는, 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 장치.
  18. 제7항에 있어서,
    상기 동기 논리 블록은 구성 신호를 사용하여 프로그램된 프로그래머블 동기 논리 블록을 포함하며,
    상기 비동기 데이터흐름 논리 블록은, 구성 신호를 사용하여 프로그램되고 상기 동기 논리 블록에 대응하는 프로그래머블 비동기 데이터흐름 논리 블록을 포함하며, 그리고
    상기 프로그래머블 동기 논리 블록을 프로그램하는 데 사용된 구성 신호 중 적어도 일부는 상기 프로그래머블 비동기 데이터흐름 논리 블록을 프로그램하는 데 사용된 구성 신호와 동일한, 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 장치.
  19. 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 장치에 있어서,
    프로세서; 및
    상기 프로세서에 접속되고,
    복수의 신호-전도 와이어, 복수의 동기 논리 블록, 복수의 접속 박스, 및 복수의 스위치 박스를 포함하는 동기 회로 설계로서, 상기 복수의 접속 박스는 상기 복수의 신호-전도 와이어를 상기 동기 논리 블록에 접속하는 동기 접속 스위치를 포함하고, 상기 복수의 스위치 박스는 상기 복수의 신호-전도 와이어와 다른 신호-전도 와이어를 접속하는 동기식 스위치 박스 스위치를 포함하는, 상기 동기 회로 설계를 식별하고,
    상기 동기 회로 설계의 기능적 특징을 판단하고,
    상기 동기 회로 설계로부터, 상기 복수의 동기 논리 블록의 적어도 일부를 대응하는 비동기 데이터흐름 논리 블록으로 변환하고, 상기 비동기 데이터흐름 논리 블록은 대응하는 비동기 데이터흐름 논리 함수에 프로토콜 신호를 제공하며,
    상기 동기 회로 설계에서, 상기 복수의 신호-전도 와이어를, 상기 비동기 데이터흐름 논리 블록 간에 데이터 및 프로토콜 신호를 통신하도록 상기 복수의 신호-전도 와이어를 각각 지원하는 트랙으로 변환하고,
    상기 동기 회로 설계에서, 상기 동기 회로 설계의 기능적 특징에 따라, 상기 동기식 스위치 박스 스위치를 프로그래머블 스위치 포인트로 변환하며, 그리고
    상기 동기 회로 설계에서, 상기 동기 회로 설계의 기능적 특징에 따라, 상기 동기 접속 스위치를 프로그래머블 스위치로 변환하도록
    상기 프로세서의 동작을 제어하는 명령을 저장하는 메모리
    를 포함하는, 동기 회로 설계를 비동기 데이터흐름 설계로 변환하기 위한 장치.
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
KR1020097016402A 2007-01-05 2007-12-31 동기 fpga 설계에서 비동기 fpga 설계로의 변환 KR101552181B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/650,238 2007-01-05
US11/650,238 US7614029B2 (en) 2007-01-05 2007-01-05 Methods and systems for converting a synchronous circuit fabric into an asynchronous dataflow circuit fabric

Publications (2)

Publication Number Publication Date
KR20090099083A KR20090099083A (ko) 2009-09-21
KR101552181B1 true KR101552181B1 (ko) 2015-09-10

Family

ID=39493121

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097016402A KR101552181B1 (ko) 2007-01-05 2007-12-31 동기 fpga 설계에서 비동기 fpga 설계로의 변환

Country Status (5)

Country Link
US (2) US7614029B2 (ko)
EP (1) EP2100242B1 (ko)
JP (1) JP5055378B2 (ko)
KR (1) KR101552181B1 (ko)
WO (1) WO2008085792A2 (ko)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8359186B2 (en) * 2006-01-26 2013-01-22 Subbu Ganesan Method for delay immune and accelerated evaluation of digital circuits by compiling asynchronous completion handshaking means
US7614029B2 (en) 2007-01-05 2009-11-03 Achronix Semiconductor Corporation Methods and systems for converting a synchronous circuit fabric into an asynchronous dataflow circuit fabric
US7739628B2 (en) * 2008-02-15 2010-06-15 Achronix Semiconductor Corporation Synchronous to asynchronous logic conversion
WO2009147789A1 (ja) * 2008-06-06 2009-12-10 日本電気株式会社 回路設計システムおよび回路設計方法
US7759974B1 (en) 2008-07-17 2010-07-20 Xilinx, Inc. Pipelined unidirectional programmable interconnect in an integrated circuit
US7743175B1 (en) 2008-07-17 2010-06-22 Xilinx, Inc. Methods of initializing routing structures in integrated circuits
US7605604B1 (en) 2008-07-17 2009-10-20 Xilinx, Inc. Integrated circuits with novel handshake logic
US7746113B1 (en) 2008-07-17 2010-06-29 Xilinx, Inc. Circuit structures utilizing multiple voltage level inputs
US7635989B1 (en) 2008-07-17 2009-12-22 Xilinx, Inc. Integrated circuits with bus-based programmable interconnect structures
JP5409231B2 (ja) * 2008-09-26 2014-02-05 株式会社半導体エネルギー研究所 設計システム
US8706793B1 (en) 2009-04-02 2014-04-22 Xilinx, Inc. Multiplier circuits with optional shift function
US7746110B1 (en) 2009-04-02 2010-06-29 Xilinx, Inc. Circuits for fanning out data in a programmable self-timed integrated circuit
US7746106B1 (en) 2009-04-02 2010-06-29 Xilinx, Inc. Circuits for enabling feedback paths in a self-timed integrated circuit
US7746102B1 (en) 2009-04-02 2010-06-29 Xilinx, Inc. Bus-based logic blocks for self-timed integrated circuits
US9411554B1 (en) 2009-04-02 2016-08-09 Xilinx, Inc. Signed multiplier circuit utilizing a uniform array of logic blocks
US7746111B1 (en) 2009-04-02 2010-06-29 Xilinx, Inc. Gating logic circuits in a self-timed integrated circuit
US8527572B1 (en) 2009-04-02 2013-09-03 Xilinx, Inc. Multiplier architecture utilizing a uniform array of logic blocks, and methods of using the same
US7746104B1 (en) 2009-04-02 2010-06-29 Xilinx, Inc. Dynamically controlled output multiplexer circuits in a programmable integrated circuit
US7948265B1 (en) 2009-04-02 2011-05-24 Xilinx, Inc. Circuits for replicating self-timed logic
US7746108B1 (en) 2009-04-02 2010-06-29 Xilinx, Inc. Compute-centric architecture for integrated circuits
US7982496B1 (en) 2009-04-02 2011-07-19 Xilinx, Inc. Bus-based logic blocks with optional constant input
US7746109B1 (en) 2009-04-02 2010-06-29 Xilinx, Inc. Circuits for sharing self-timed logic
US7746103B1 (en) 2009-04-02 2010-06-29 Xilinx, Inc. Multi-mode circuit in a self-timed integrated circuit
US7746101B1 (en) 2009-04-02 2010-06-29 Xilinx, Inc. Cascading input structure for logic blocks in integrated circuits
US7733123B1 (en) 2009-04-02 2010-06-08 Xilinx, Inc. Implementing conditional statements in self-timed logic circuits
US9002915B1 (en) 2009-04-02 2015-04-07 Xilinx, Inc. Circuits for shifting bussed data
US7746105B1 (en) 2009-04-02 2010-06-29 Xilinx, Inc. Merging data streams in a self-timed programmable integrated circuit
US7746112B1 (en) 2009-04-02 2010-06-29 Xilinx, Inc. Output structure with cascaded control signals for logic blocks in integrated circuits, and methods of using the same
US8964795B2 (en) * 2009-06-01 2015-02-24 Achronix Semiconductor Corporation Asynchronous pipelined interconnect architecture with fanout support
US8161435B2 (en) * 2009-07-20 2012-04-17 Achronix Semiconductor Corporation Reset mechanism conversion
US7932746B1 (en) * 2010-06-04 2011-04-26 Achronix Semiconductor Corporation One phase logic
US8913601B1 (en) 2010-10-01 2014-12-16 Xilinx, Inc. Programmable integrated circuit and method of asynchronously routing data in a circuit block of an integrated circuit
US8358148B1 (en) 2010-10-01 2013-01-22 Xilinx, Inc. Programmable integrated circuit and method of asynchronously routing data in an integrated circuit
US8294490B1 (en) 2010-10-01 2012-10-23 Xilinx, Inc. Integrated circuit and method of asynchronously routing data in an integrated circuit
US8402164B1 (en) 2010-10-27 2013-03-19 Xilinx, Inc. Asynchronous communication network and methods of enabling the asynchronous communication of data in an integrated circuit
US8856792B2 (en) 2010-12-17 2014-10-07 Microsoft Corporation Cancelable and faultable dataflow nodes
WO2013020114A1 (en) * 2011-08-03 2013-02-07 Cornell University Energy-efficient pipeline circuit templates for high performance asynchronous circuits
US9520180B1 (en) 2014-03-11 2016-12-13 Hypres, Inc. System and method for cryogenic hybrid technology computing and memory
US10038651B2 (en) * 2015-09-05 2018-07-31 Nevion Europe As Asynchronous switching system and method
US11451230B2 (en) 2020-04-23 2022-09-20 Xilinx, Inc. Compute dataflow architecture

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5067091A (en) * 1988-01-21 1991-11-19 Kabushiki Kaisha Toshiba Circuit design conversion apparatus
US5958077A (en) * 1995-12-27 1999-09-28 Nec Usa, Inc. Method for testing asynchronous circuits
AU8495098A (en) * 1997-07-16 1999-02-10 California Institute Of Technology Improved devices and methods for asynchronous processing
US6301655B1 (en) * 1997-09-15 2001-10-09 California Institute Of Technology Exception processing in asynchronous processor
US9195784B2 (en) * 1998-08-31 2015-11-24 Cadence Design Systems, Inc. Common shared memory in a verification system
EP1212706B1 (en) * 1999-08-19 2007-02-21 Massachusetts Institute Of Technology Synchronous circuit synthesis using an asynchronous specification
US6625797B1 (en) * 2000-02-10 2003-09-23 Xilinx, Inc. Means and method for compiling high level software languages into algorithmically equivalent hardware representations
US6690203B2 (en) * 2000-12-29 2004-02-10 California Institute Of Technology Method and apparatus for a failure-free synchronizer
US7157934B2 (en) * 2003-08-19 2007-01-02 Cornell Research Foundation, Inc. Programmable asynchronous pipeline arrays
US7260798B2 (en) * 2003-12-29 2007-08-21 Mentor Graphics Corporation Compilation of remote procedure calls between a timed HDL model on a reconfigurable hardware platform and an untimed model on a sequential computing platform
US7464361B2 (en) * 2004-01-20 2008-12-09 Texas Instruments Incorporated System and method for asynchronous logic synthesis from high-level synchronous descriptions
US7788332B2 (en) * 2004-05-06 2010-08-31 Cornell Research Foundation, Inc. Sensor-network processors using event-driven architecture
US7584449B2 (en) * 2004-11-22 2009-09-01 Fulcrum Microsystems, Inc. Logic synthesis of multi-level domino asynchronous pipelines
US7418676B2 (en) * 2005-01-19 2008-08-26 Seiko Epson Corporation Asynchronous circuit design tool and computer program product
US7647567B1 (en) * 2005-01-31 2010-01-12 Bluespec, Inc. System and method for scheduling TRS rules
US7478222B2 (en) * 2005-03-29 2009-01-13 Karl M. Fant Programmable pipeline array
US7411436B2 (en) * 2006-02-28 2008-08-12 Cornell Research Foundation, Inc. Self-timed thermally-aware circuits and methods of use thereof
US7505304B2 (en) * 2006-04-27 2009-03-17 Achronix Semiconductor Corporation Fault tolerant asynchronous circuits
US7504851B2 (en) * 2006-04-27 2009-03-17 Achronix Semiconductor Corporation Fault tolerant asynchronous circuits
US7610567B2 (en) * 2006-04-27 2009-10-27 Achronix Semiconductor Corporation Systems and methods for performing automated conversion of representations of synchronous circuit designs to and from representations of asynchronous circuit designs
US7594211B1 (en) * 2006-11-17 2009-09-22 Synopsys, Inc. Methods and apparatuses for reset conditioning in integrated circuits
US7614029B2 (en) * 2007-01-05 2009-11-03 Achronix Semiconductor Corporation Methods and systems for converting a synchronous circuit fabric into an asynchronous dataflow circuit fabric
US8065647B2 (en) * 2007-10-19 2011-11-22 The University Of Utah Research Foundation Method and system for asynchronous chip design
US20090119631A1 (en) * 2007-11-06 2009-05-07 Jordi Cortadella Variability-Aware Asynchronous Scheme for High-Performance Delay Matching
US8972915B2 (en) * 2008-02-12 2015-03-03 University Of Southern California Static timing analysis of template-based asynchronous circuits
US8104004B2 (en) * 2008-02-13 2012-01-24 Achronix Semiconductor Corporation Logic performance in cyclic structures
US7739628B2 (en) * 2008-02-15 2010-06-15 Achronix Semiconductor Corporation Synchronous to asynchronous logic conversion
US8086975B2 (en) * 2008-04-10 2011-12-27 University Of Southern California Power aware asynchronous circuits
US8161435B2 (en) * 2009-07-20 2012-04-17 Achronix Semiconductor Corporation Reset mechanism conversion

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
John Teifel 외 1인, 'An asynchronous dataflow FPGA architecture', IEEE Transactions on Computers, pp.1376-1392, 2004

Also Published As

Publication number Publication date
US8375339B2 (en) 2013-02-12
JP5055378B2 (ja) 2012-10-24
WO2008085792A3 (en) 2008-09-04
WO2008085792A2 (en) 2008-07-17
US20080168407A1 (en) 2008-07-10
US20100005431A1 (en) 2010-01-07
EP2100242B1 (en) 2017-11-22
JP2010515972A (ja) 2010-05-13
KR20090099083A (ko) 2009-09-21
US7614029B2 (en) 2009-11-03
EP2100242A2 (en) 2009-09-16

Similar Documents

Publication Publication Date Title
KR101552181B1 (ko) 동기 fpga 설계에서 비동기 fpga 설계로의 변환
Peeters et al. Click elements: An implementation style for data-driven compilation
US6044211A (en) Method for graphically representing a digital device as a behavioral description with data and control flow elements, and for converting the behavioral description to a structural description
JP5045961B2 (ja) 同期回路設計の表現から非同期回路設計の表現へおよび非同期回路設計の表現から同期回路設計の表現への自動変換を実行するためのシステムおよび方法
KR101058468B1 (ko) 집적 회로용의 재구성 가능한 로직 패브릭과, 재구성 가능한 로직 패브릭을 구성하기 위한 시스템 및 방법
US8146040B1 (en) Method of evaluating an architecture for an integrated circuit device
US20150295579A1 (en) System Reset Controller Replacing Individual Asynchronous Resets
Manohar Reconfigurable asynchronous logic
Petlin et al. Scan testing of micropipelines
Payne Self-timed field programmmable gate array architectures.
Mannakkara et al. Asynchronous pipeline controller based on early acknowledgement protocol
Li et al. Design, implementation, and validation of a new class of interface circuits for latency-insensitive design
US8234607B2 (en) Token enhanced asynchronous conversion of synchonous circuits
Rani et al. Design and Implementation of control Unit-ALU of 32 Bit Asynchronous Microprocessor based on FPGA
US7982502B2 (en) Asynchronous circuit representation of synchronous circuit with asynchronous inputs
Maree et al. Development of an All-SFQ superconducting field-programmable gate array
US7260753B2 (en) Methods and apparatus for providing test access to asynchronous circuits and systems
Quinton et al. Programmable logic core based post-silicon debug for SoCs
Aydin et al. Implementation of a programmable phased logic cell [FPGA]
Van Leeuwen Implementation and automatic generation of asynchronous scheduled dataflow graph
Comerro Optimizing FPGA Performance: Leveraging the Razor Technique in Digital Design
Hazari et al. A novel technique towards eliminating the global clock in VLSI circuits
Rajgara Implementation of Null Conventional Logic in COTS FPGA's
Taubin et al. 3 Synchronous-to-asynchronous RTL flow using NULL Convention Logic (NCL).
Galle Mannakarage et al. Asynchronous Pipeline Controller Based on Early Acknowledgement Protocol

Legal Events

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

Payment date: 20180823

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190827

Year of fee payment: 5