KR20210034625A - 프로그래밍가능 집적 회로들에 대한 계층적 부분 재구성 - Google Patents

프로그래밍가능 집적 회로들에 대한 계층적 부분 재구성 Download PDF

Info

Publication number
KR20210034625A
KR20210034625A KR1020217004734A KR20217004734A KR20210034625A KR 20210034625 A KR20210034625 A KR 20210034625A KR 1020217004734 A KR1020217004734 A KR 1020217004734A KR 20217004734 A KR20217004734 A KR 20217004734A KR 20210034625 A KR20210034625 A KR 20210034625A
Authority
KR
South Korea
Prior art keywords
partial
container
module
zone
modules
Prior art date
Application number
KR1020217004734A
Other languages
English (en)
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 KR20210034625A publication Critical patent/KR20210034625A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • 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
    • 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]
    • G06F30/347Physical level, e.g. placement or routing
    • 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
    • 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
    • H03K19/17744Structural details of routing resources for input/output signals
    • 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/17756Structural details of configuration resources for partial configuration or partial reconfiguration
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture

Abstract

집적 회로들에 대한 계층적 부분 재구성은, 컴퓨터 하드웨어를 사용하여, 회로 설계의 제1 부분 재구성 모듈을 제1 부분 재구성 콘테이너로 변환하는 것(415) - 회로 설계는 배치 및 배선됨 -, 컴퓨터 하드웨어를 사용하여 제1 네트리스트를 제1 부분 재구성 콘테이너에 로딩하는 것(420) - 제1 네트리스트는 초기에 비어있는 제1 복수의 부분 재구성 모듈들을 포함함 -, 및 컴퓨터 하드웨어를 사용하여, 제1 복수의 부분 재구성 모듈들 각각 내에 추가적인 네트리스트를 포함시키는 것(435)을 포함한다. 컴퓨터 하드웨어를 사용하여, 제1 부분 재구성 콘테이너가 구현되며(440), 제1 복수의 부분 재구성 모듈들은 제1 부분 재구성 콘테이너 내에서 구현된다.

Description

프로그래밍가능 집적 회로들에 대한 계층적 부분 재구성
본 특허 문서의 개시내용의 일부는 저작권 보호를 받는 자료를 포함한다. 저작권 소유자는 특허 및 상표청의 특허 파일 또는 기록들에 나타난 것과 같이 특허 문서 또는 특허 개시내용을 누군가가 팩시밀리 재생(facsimile reproduction)하는 것에 반대하지 않지만, 그 밖의 모든 것은 저작권으로 보호된다.
본 개시내용은 집적 회로(IC)들에 관한 것으로, 더 상세하게는 프로그래밍가능 IC들의 부분 재구성에 관한 것이다.
프로그래밍가능 집적 회로(IC)는 프로그래밍가능 회로부를 포함하는 IC의 타입을 지칭한다. 프로그래밍가능 IC의 일 예는 FPGA(field programable gate array)이다. FPGA는 프로그래밍가능 회로 블록들의 포함을 특징으로 한다. 프로그래밍가능 회로 블록들의 예들은 IOB(input/output block)들, CLB(configurable logic block)들, BRAM(dedicated random access memory block), 승산기들, DSP(digital signal processing block)들, 프로세서들, 클록 관리자들, 및 DLL(delay lock loop)들을 포함한다(그러나 이에 제한되지 않음). 회로 설계들은 구성 비트스트림을 프로그래밍가능 IC의 구성 메모리에 로딩함으로써 프로그래밍가능 IC의 프로그래밍가능 회로부 내에 물리적으로 구현될 수 있다.
부분 재구성은, "부분 재구성 구역" 또는 "PR 구역"으로 지칭되는 프로그래밍가능 IC 내의 프로그래밍가능 회로부의 구역이 부분 구성 비트스트림을 프로그래밍가능 IC에 로딩함으로써 동적으로 재구성될 수 있는 프로세스이다. 부분 구성 비트스트림은 PR 구역에서 이전에 구현된 것과는 상이한 회로부를 특정할 수 있다. 부분 구성 비트스트림은 PR 구역 외부의 프로그래밍가능 회로부의 부분들에 대해 새로운 및/또는 상이한 회로부를 특정하지 않는다. PR 구역은 부분 재구성, 예컨대 PR 구역에 대한 부분 구성 비트스트림의 로딩을 통한 수정을 반복적으로 경험할 수 있으며, 여기서 상이한 부분 구성 비트스트림들은 상이한 회로부(또는 애플리케이션들)를 특정하는 반면, "정적 회로부" 또는 "정적 구역"으로 지칭되는 프로그래밍가능 IC의 프로그래밍가능 회로부의 다른 구역들은 중단 없이 계속 동작한다.
PR 구역을 이용하는 회로 설계를 사용할 때, PR 구역의 다양한 특성들이 일정하게 유지된다. PR 구역 내의 회로부가 부분 재구성 기술을 사용하여 시간에 걸쳐 변화될 수 있지만, PR 구역의 경계들은 변화되지 않을 수 있다. 그러므로, 특정한 특성들, 이를테면 PR 구역의 사이즈, PR 구역의 형상, 다른 회로부와의 PR 구역의 연결성, 및 PR 구역들의 수는 프로그래밍가능 IC 내에서 변화되지 않은 채로 유지된다.
하나 이상의 실시예들에서, 방법은, 컴퓨터 하드웨어를 사용하여, 회로 설계의 제1 부분 재구성 모듈을 제1 부분 재구성 콘테이너로 변환하는 단계 - 회로 설계는 배치 및 배선(route)됨 -, 컴퓨터 하드웨어를 사용하여 제1 네트리스트(netlist)를 제1 부분 재구성 콘테이너에 로딩하는 단계 - 제1 네트리스트는 초기에 비어있는 제1 복수의 부분 재구성 모듈들을 포함함 -, 컴퓨터 하드웨어를 사용하여, 제1 복수의 부분 재구성 모듈들 각각 내에 추가적인 네트리스트를 포함시키는 단계, 및 컴퓨터 하드웨어를 사용하여, 제1 부분 재구성 콘테이너를 구현하고, 제1 부분 재구성 콘테이너 내에서 제1 복수의 부분 재구성 모듈들을 구현하는 단계를 포함할 수 있다.
하나 이상의 실시예들에서, 방법은, 프로그래밍가능 집적 회로의 정적 구역 내에서 제1 회로부를 구현하는 단계 - 제1 회로부는 제1 부분 비트스트림에 의해 특정됨 -, 프로그래밍가능 집적 회로의 부분 재구성 콘테이너 구역 내에서 제2 회로부를 구현하는 단계 - 제2 회로부는 제2 부분 비트스트림에 의해 특정됨 -, 및 부분 재구성 콘테이너 구역 내에 포함된 제1 부분 재구성 구역 내에서 제3 회로부를 그리고 부분 재구성 콘테이너 구역 내에 포함된 제2 부분 재구성 구역 내에서 제4 회로부를 구현하는 단계를 포함할 수 있으며, 여기서 제3 회로부는 제3 부분 비트스트림에 의해 특정되고, 제4 회로부는 제4 부분 비트스트림에 의해 특정된다.
하나 이상의 실시예들에서, 집적 회로는, 외부 디바이스와의 인터페이스를 구현하도록 구성된 제1 프로그래밍가능 회로부를 포함하는 정적 구역, 및 제2 프로그래밍가능 회로부를 사용하여 정적 구역에 대한 인터페이스를 구현하는, 정적 구역에 커플링된 부분 재구성 콘테이너 구역을 포함할 수 있다. 부분 재구성 콘테이너 구역은 제1 복수의 부분 재구성 구역들을 포함할 수 있으며, 여기서 제1 복수의 부분 재구성 구역들 중 적어도 하나는 부분 재구성 콘테이너 구역에 커플링된다.
이러한 요약 섹션은 청구된 청구 대상의 임의의 중요 또는 본질적인 특징들을 식별하는 것이 아니라 특정한 개념들을 도입하기 위해서만 제공된다. 본 발명의 어레인지먼트(arrangement)들의 다른 특징들은 첨부한 도면들 및 다음의 상세한 설명으로부터 명백할 것이다.
본 발명의 어레인지먼트들은 첨부한 도면들에서 예로서 예시된다. 그러나, 도면들은, 본 발명의 어레인지먼트들을 도시된 특정한 구현들로만 제한하는 것으로 해석되지 않아야 한다. 다양한 양상들 및 장점들은 다음의 상세한 설명의 검토 시에 그리고 도면들을 참조할 시에 명백해질 것이다.
도 1은 본 명세서에 설명되는 하나 이상의 실시예들과 함께 사용하기 위한 데이터 프로세싱 시스템의 일 예를 예시한다.
도 2는 프로그래밍가능 집적 회로(IC)의 일 예를 예시한다.
도 3은 프로그래밍가능 IC의 다른 예를 예시한다.
도 4는 계층적 부분 재구성의 예시적인 방법을 예시한다.
도 5a 내지 도 5g는 도 4에서 수행되는 예시적인 동작들을 예시한다.
도 6은 도 5g의 회로 설계를 구현하는 예시적인 IC를 예시한다.
도 7은 PPLOC 핸들링의 일 예를 예시한다.
도 8은 배치 및 배선을 위한 예시적인 기법을 예시한다.
도 9는 계층적 부분 재구성의 다른 예시적인 방법을 예시한다.
도 10a 내지 도 10e는 도 9에서 수행되는 예시적인 동작들을 예시한다.
도 11은 PPLOC 프로세싱의 다른 예를 예시한다.
도 12는 IC 내에서 회로부를 구현하는 예시적인 방법을 예시한다.
도 13은 IC에 대한 예시적인 아키텍처를 예시한다.
본 개시내용이 신규한 특징들을 정의하는 청구항들로 종결되지만, 본 개시내용 내에서 설명된 다양한 특징들이 도면들과 함께 상세한 설명을 고려할 때 더 양호하게 이해될 것으로 생각된다. 본 명세서에 설명된 프로세스(들), 머신(들), 제조(들) 및 그들의 임의의 변경들은 예시의 목적들을 위해 제공된다. 본 개시내용 내에서 설명된 특정한 구조 및 기능 세부사항들은 제한으로서 해석되는 것이 아니라, 오로지, 청구항들에 대한 기반으로서 그리고 사실상 임의의 적절하게 상세한 구조로 설명된 특징들을 다양하게 이용하기 위해 당업자에게 교시하기 위한 대표적인 기반으로서 해석되어야 한다. 추가로, 본 개시내용 내에서 사용된 용어들 및 어구들은 제한하는 것으로 의도되는 것이 아니라 오히려, 설명된 특징들의 이해가능한 설명을 제공하도록 의도된다.
본 개시내용은 집적 회로(IC)들에 관한 것으로, 더 상세하게는 프로그래밍가능 IC들의 부분 재구성에 관한 것이다. 본 개시내용 내에서 설명된 본 발명의 어레인지먼트들에 따르면, 프로그래밍가능 IC(본 명세서에서 "타겟 IC"로 또한 지칭됨)는 부분 재구성을 통해 내부에 상이한 회로부 및/또는 시스템들을 구현하면서 외부 시스템과의 통신 링크를 유지할 수 있다. 프로그래밍가능 IC의 정적 구역은 외부 시스템과 통신하기 위한 회로부를 구현하는 데 사용된다. 정적 구역은 하드웨어 가속 사용자 애플리케이션들 및/또는 사용자 특정 회로부(본 명세서에서 "커널들"로 지칭됨)에 대한 지원을 제공한다. 커널들은 정적 구역과 통신하는 프로그래밍가능 IC의 부분 재구성(PR) 구역 내에서 구현된다.
일부 경우들에서, PR 구역은 정적 구역과 밀접하게 연관되며, 사이즈 및 경계들의 측면들에서 고정된다. 그러나, PR 구역의 고정된 속성은, 특정한 애플리케이션들, 이를테면 데이터 센터들 내에서 사용되는 애플리케이션들에 대해 종종 요구되는 바와 같이 신속한 재구성을 제한한다. PR 구역의 고정된 속성은 또한, 커널들의 다른 세트가 연산들의 다음 세트를 준비하도록 타겟 IC 내에서 새롭게 구현되는 동안 커널들의 하나의 세트가 계속 컴퓨팅될 수 있는 파인-그레인드(fine grained) 병렬처리를 방지한다.
본 개시내용 내에 설명된 본 발명의 어레인지먼트들은 이들 문제들 및 다른 문제들을 해결한다. 예컨대, 본 개시내용 내에 설명된 본 발명의 어레인지먼트들은 FaaS(Function as a Service) 사용자들이 필요에 따라 하드웨어 가속 플랫폼 설계를 맞춤화하게 허용한다. 본 명세서에 설명된 실시예들을 사용하여, 사용자들은, 사용자의 특정 애플리케이션들에 대해 타겟팅 및 최적화된 다수의 컴퓨트 구역들을 갖는 완전한 맞춤형 플랫폼 설계로 디폴트 단일 컴퓨트 구역을 맞춤화할 수 있다. 일반적으로, FaaS는 소비자들이 애플리케이션을 개발 및 개시하는 것과 통상적으로 연관되는 인프라구조를 구축 및 유지하는 복잡도 없이 애플리케이션 기능들을 개발, 실행, 및 관리하게 허용하는 플랫폼을 제공하는 클라우드 컴퓨팅 서비스들의 카테고리이다.
부가적으로, 본 명세서에 설명되는 예시적인 실시예들은 부분 구성 비트스트림들(이하, "부분 비트스트림들")의 수를 부분 비트스트림들의 "N choose M" 수로부터 아래로 부분 비트스트림들의 "N×M" 수로 감소시킬 수 있으며, 여기서 N은 PR 구역들의 수이고, M은 주어진 PR 구역에서 구현될 수 있는 런타임 함수들의 수이다.
하나 이상의 실시예들에서, PR 콘테이너 구역이 타겟 IC 상에서 제공된다. PR 콘테이너 구역은 정적 구역에 커플링, 예컨대 통신가능하게 링크될 수 있다. PR 콘테이너 구역은 복수의 계층적으로 네스팅된(nested) PR 구역들 및/또는 PR 콘테이너 구역들을 포함할 수 있다. 추가로, PR 콘테이너 구역 내의 PR 구역들 중 하나 이상은 PR 콘테이너 구역들로 변환될 수 있으며, 여기서 각각의 PR 콘테이너 구역은 추가적인 복수의 PR 구역들을 포함할 수 있다. 이러한 방식으로, PR 구역들은 PR 콘테이너 구역들 내에 계층적으로 네스팅될 수 있다. 이것은 사용자들이 타겟 IC 내에서 PR 구역들의 계층들을 임의적인 깊이까지 형성하게 허용한다.
하나 이상의 다른 실시예들에서, PR 콘테이너 구역 내의 PR 구역들의 경계들은 상이한 PR 콘테이너 구역을 프로그래밍가능 IC에 로딩함으로써 수정될 수 있다. 각각의 상이한 PR 콘테이너 구역은 상이한 수의 PR 구역들 및/또는 내부에 포함된 PR 구역들에 대한 상이한 경계들을 포함할 수 있다. 여전히, 상이한 PR 콘테이너 구역들이 타겟 IC 내에서 구현되므로, 정적 구역은 외부 시스템과의 통신 링크를 유지할 수 있다.
특정한 실시예들에서, PR 콘테이너 구역 내의 PR 구역들은 서로 접촉하지 않거나 교차하지 않는다. PR 구역들에 의한 중첩 및/또는 접촉의 결여는, PR 콘테이너 구역의 하나의 PR 구역이, PR 콘테이너 구역 내의 임의의 다른 PR 구역들 및 정적 회로부가 중단없이 계속 동작하는 동안, 부분 재구성을 경험하게 허용한다. 결과적으로, 일부 커널들이 계속 동작할 수 있는 동안 다른 상이한 커널들이 타겟 IC 내에서 구현되므로, 타겟 IC의 데이터 처리량이 증가된다.
종래의 부분 재구성 방식들에서, 본 명세서에 설명되는 예시적인 실시예들에 의해 제공되는 바와 같은 PR 구역들에서의 증가된 입도가 이용가능하지 않다. 이것은, 부분 재구성이 타겟 IC에 걸쳐 필요한 것보다 더 광범위하게 수행되는 상황(예컨대, 더 적고 더 큰 PR 구역들을 사용함)들을 유발한다. 결과적으로, 새로운 및/또는 상이한 커널들을 구현하고 그리고/또는 타겟 IC 내에서 유닛들을 컴퓨팅하기 위해 많은 커널들 또는 컴퓨트 유닛들이 일시적으로 다운될 수 있으며, 그에 의해 데이터 처리량을 감소시키거나 또는 가능하게는 부분 재구성 동작 동안 타겟 IC의 데이터 처리량을 일시적으로 중단시킨다.
본 발명의 어레인지먼트들의 추가적인 양상들은 도면들을 참조하여 더 상세히 아래에서 설명된다. 예시의 간략화 및 명확화의 목적들을 위해, 도면들에 도시된 엘리먼트들은 반드시 실척대로 도시될 필요는 없다. 예컨대, 엘리먼트들 중 일부 엘리먼트들의 치수들은 명확화를 위해 다른 엘리먼트들에 비해 과장될 수 있다. 추가로, 적절한 것으로 고려될 경우, 참조 번호들은 대응하는, 유사한, 또는 동일한 특징들을 표시하기 위해 도면들 사이에서 반복된다.
도 1은 본 명세서에 설명되는 하나 이상의 실시예들과 함께 사용하기 위한 예시적인 시스템(100)을 예시한다. 시스템(100)은, 컴퓨터, 서버, 휴대용 컴퓨터, 이를테면 랩톱 또는 태블릿 컴퓨터, 또는 다른 데이터 프로세싱 시스템을 구현하는 데 사용될 수 있는 컴퓨터 하드웨어의 일 예이다. 컴퓨터 하드웨어를 사용하여 구현된 시스템 또는 디바이스는 IC 내에서의 구현을 위해 회로 설계를 프로세싱하는 것에 관련하여 본 명세서에 설명되는 다양한 동작들을 수행할 수 있다.
도 1의 예에서, 시스템(100)은 적어도 하나의 프로세서(105)를 포함한다. 프로세서(105)는 인터페이스 회로부(115)를 통해 메모리(110)에 커플링된다. 시스템(100)은 메모리(110) 내에 컴퓨터 판독가능 명령들("프로그램 코드"로 또한 지칭됨)을 저장할 수 있다. 메모리(110)는 컴퓨터 판독가능 저장 매체들의 일 예이다. 프로세서(105)는 인터페이스 회로부(115)를 통해 메모리(110)로부터 액세스된 프로그램 코드를 실행할 수 있다.
메모리(110)는, 예컨대 로컬 메모리 및 대용량 저장 디바이스와 같은 하나 이상의 물리적 메모리 디바이스들을 포함할 수 있다. 로컬 메모리는 프로그램 코드의 실제 실행 동안 일반적으로 사용되는 비-영구 메모리 디바이스(들)를 지칭한다. 로컬 메모리의 예들은, RAM(random access memory) 및/또는 프로그램 코드의 실행 동안 프로세서에 의한 사용에 적합한 임의의 다양한 타입들의 RAM(예컨대, 동적 RAM 또는 "DRAM" 또는 정적 RAM 또는 "SRAM")을 포함한다. 대용량 저장 디바이스는 영구 데이터 저장 디바이스를 지칭한다. 대용량 저장 디바이스들의 예들은, HDD(hard disk drive), SSD(solid-state drive), 플래시 메모리, ROM(read-only memory), EPROM(erasable programmable read-only memory), EEPROM(electrically erasable programmable read-only memory), 또는 다른 적합한 메모리를 포함한다(그러나 이에 제한되지 않음). 시스템(100)은 또한, 프로그램 코드가 실행 동안 대용량 저장 디바이스로부터 리트리브(retrieve)되어야 하는 횟수를 감소시키기 위해 적어도 일부 프로그램 코드의 임시 저장소를 제공하는 하나 이상의 캐시 메모리들(도시되지 않음)을 포함할 수 있다.
메모리(110)는 프로그램 코드 및/또는 데이터를 저장할 수 있다. 예시의 목적들을 위해, 메모리(110)는 운영 체제(125), 하나 이상의 애플리케이션(들)(130), 및 회로 설계(135)를 저장한다. 하나 이상의 실시예들에서, 애플리케이션(들)(130)은 EDA(electronic design automation) 애플리케이션을 포함한다. EDA 애플리케이션은 설계 흐름의 하나 이상의 동작들(예컨대, 합성, 배치, 배선, 및/또는 비트스트림 생성) 및 타겟 IC 내에서의 회로 설계(135)의 구현 및 부분 재구성에 관련하여 본 명세서에 설명되는 다양한 동작들을 수행할 수 있다. 타겟 IC는 도 13과 관련하여 설명되는 아키텍처와 동일하거나 유사한 아키텍처를 가질 수 있다.
시스템(100), 예컨대 프로세서(105)는 본 개시내용 내에 설명되는 동작들을 수행하기 위해 운영 체제(125) 및 애플리케이션(들)(130)을 실행할 수 있다. 그러므로, 운영 체제(125) 및 애플리케이션(들)(130)은 시스템(100)의 통합된 부분으로 고려될 수 있다. 추가로, 시스템(100)(예컨대, 프로세서(105))에 의해 사용, 생성, 및/또는 동작되는 임의의 데이터가 시스템의 일부로서 이용될 때 기능을 부여하는 기능적 데이터 구조들이라는 것을 인식해야 한다.
인터페이스 회로부(115)의 예들은 시스템 버스 및 입력/출력(I/O) 버스를 포함한다(그러나 이에 제한되지 않음). 인터페이스 회로부(115)는 다양한 버스 아키텍처들 중 임의의 버스 아키텍처를 사용하여 구현될 수 있다. 버스 아키텍처들의 예들은 EISA(Enhanced Industry Standard Architecture) 버스, AGP(Accelerated Graphics Port), VESA(Video Electronics Standards Association) 로컬 버스, USB(Universal Serial Bus), 및 PCle(Peripheral Component Interconnect Express) 버스를 포함할 수 있다(그러나 이에 제한되지 않음).
시스템(100)은 인터페이스 회로부(115)에 커플링된 하나 이상의 I/O 디바이스들(120)을 더 포함할 수 있다. I/O 디바이스들(120)은 직접적으로 또는 개재 I/O 제어기들을 통해 시스템(100), 예컨대 인터페이스 회로부(115)에 커플링될 수 있다. I/O 디바이스들(120)의 예들은 키보드, 디스플레이 디바이스, 포인팅 디바이스, 하나 이상의 통신 포트들, 및 네트워크 어댑터를 포함한다(그러나 이에 제한되지 않음). 네트워크 어댑터는, 시스템(100)이 개재 사설 또는 공용 네트워크들을 통해 다른 시스템들, 컴퓨터 시스템들, 원격 프린터들, 및/또는 원격 저장 디바이스들에 커플링되게 할 수 있는 회로부를 지칭한다. 모뎀들, 케이블 모뎀들, 이더넷 카드들, 및 무선 트랜시버들은 시스템(100)과 함께 사용될 수 있는 상이한 타입들의 네트워크 어댑터들의 예들이다.
시스템(100)은 구현되는 디바이스 및/또는 시스템의 특정한 타입에 의존하여, 도 1에 도시된 것보다 더 적은 컴포넌트들 또는 도 1에 예시되지 않은 부가적인 컴포넌트들을 포함할 수 있다. 부가적으로, 포함된 특정한 운영 체제, 애플리케이션(들), 및/또는 I/O 디바이스들은 시스템 타입에 기반하여 변할 수 있다. 추가로, 예시된 컴포넌트들 중 하나 이상은 다른 컴포넌트에 통합되거나 그렇지 않으면 그의 일부를 형성할 수 있다. 예컨대, 프로세서는 적어도 일부 메모리를 포함할 수 있다. 시스템(100)은, 도 1의 아키텍처 또는 그와 유사한 아키텍처를 사용하여 각각 구현된 단일 컴퓨터 또는 복수의 네트워킹된 또는 상호연결된 컴퓨터들을 구현하는 데 사용될 수 있다.
하나 이상의 실시예들에서, 시스템(100)은, 정적 구역, 하나 이상의 상이한 PR 콘테이너 구역들, 및 PR 콘테이너 구역들 내의 하나 이상의 PR 구역들을 구현하기 위해 부분 비트스트림들을 구현하도록 회로 설계(135)를 프로세싱할 수 있는 개발 시스템(예컨대, EDA 시스템)을 표현한다. 정적 구역은 통신 링크를 통해 타겟 IC 외부의 시스템과 통신할 수 있는 타겟 IC 내의 통신 회로부를 구현한다. 예컨대, 정적 구역은 호스트 시스템과 통신할 수 있는 PCle 엔드포인트를 구현할 수 있다. PR 콘테이너 구역은 정적 구역에 커플링된다. PR 콘테이너 구역은 사용자 애플리케이션들(예컨대, 하드웨어 가속 사용자 애플리케이션들) 및/또는 회로 설계의 사용자 특정된 부분들을 참조하여, 커널들에 의한 사용을 위한 인프라구조 회로부를 구현할 수 있다. 커널들은 PR 콘테이너 구역들 내에 포함된 하나 이상의 PR 구역들 내에서 구현될 수 있다. 시스템(100)은 타겟 IC 내에서 부분 비트스트림들로서 결과적인 회로 설계들을 구현할 수 있다. 프로그래밍가능 IC(140)는 타겟 IC의 일 예이다.
하나 이상의 다른 실시예들에서, 시스템(100)은 런타임 시스템, 예컨대 호스트 시스템을 표현하며, 여기서 프로그래밍가능 IC(140)는 인터페이스 회로부(115)에 커플링되고 하드웨어 가속기로서 동작한다. 프로그래밍가능 IC(140)는, 예컨대 동작 동안 프로그래밍가능 IC(140)에 의한 사용을 위해 이용가능한 부가적인 메모리(예컨대, RAM - 도시되지 않음)를 포함하는 회로 보드 상에 장착될 수 있다. 그 경우, 프로그래밍가능 IC(140)는 시간에 걸쳐 내부에서 상이한 회로부를 구현하도록 프로세서(105)(예컨대, 호스트 프로세서)에 의해 부분 비트스트림들로 로딩될 수 있다. 프로세서(105)는, 예컨대 시간에 걸쳐 프로그래밍가능 IC에 로딩되는 특정한 부분 비트스트림들, 및 시간에 걸쳐 프로그래밍가능 IC(140) 내에서 구현되는 커널들로의 특정한 태스크들의 오프로딩을 제어하는 애플리케이션을 실행할 수 있다. 프로그래밍가능 IC(140)는 임의의 결과들을 프로세서(105)에 다시 제공할 수 있다.
시스템(100)은 FaaS 사용자들이, 예컨대 필요에 따라 하드웨어 가속 플랫폼 설계를 맞춤화하게 허용한다. 시스템(100)을 사용하여, 사용자들은, 사용자의 특정 애플리케이션들에 대해 타겟팅 및 최적화된 다수의 컴퓨트 구역들을 갖는 완전한 맞춤형 플랫폼 설계로 디폴트 단일 컴퓨트 구역을 맞춤화할 수 있다. 부가적으로, 본 명세서에 설명되는 본 발명의 어레인지먼트들은 부분 재구성을 수반하는 설계들에 대해 부분 비트스트림들의 수를 부분 비트스트림들의 "N choose M" 수로부터 아래로 부분 비트스트림들의 "N×M" 수로 감소시킬 수 있다. 생성될 필요가 있는 부분 비트스트림들의 수를 감소시킴으로써, 본 개시내용 내에 설명되는 본 발명의 어레인지먼트들은 시스템의 동작을 개선시킨다. 각각의 부분 비트스트림의 생성이 통상적으로 몇 시간의 컴퓨테이셔널 시간을 요구하므로, 시스템의 런타임이 상당히 감소될 수 있다. 계층적 부분 재구성을 구현하기 위해 본 명세서에 설명되는 바와 같이 회로 설계들에 대해 동작함으로써, 더 적은 부분 비트스트림들이 필요하고, 이는 시스템의 동작을 개선시킨다.
도 2는 프로그래밍가능 IC(IC)(200)의 일 예를 예시한다. IC(200)는 도 1의 프로그래밍가능 IC(140)의 예시적인 구현이다. 본 개시내용 내에서, 용어 "구역"은 타겟 IC의 물리적 부분들 또는 영역들을 지칭하는 데 사용된다. 일반적으로, 본 명세서에 설명되는 구역들은 회로 설계의 특정한 모듈들 및/또는 콘테이너들에 대응한다. "PR 콘테이너"는 하나 이상의 PR 모듈들 및 하나 이상의 PR 콘테이너들을 유지 또는 포함할 수 있는 회로 설계의 논리 구조를 지칭한다. "PR 콘테이너 구역"은 PR 콘테이너에 대응하는 타겟 IC 상의 구역을 지칭한다. 그러므로, PR 콘테이너 구역은 복수의 PR 구역들을 포함할 수 있으며, 여기서 각각의 PR 구역은 회로 설계의 PR 모듈에 대응한다. 그러나, PR 구역은 다른 PR 구역을 포함하지 않을 수 있다. 유사하게, PR 모듈은 임의의 다른 PR 모듈들을 포함하지 않을 수 있다.
도 2의 예에서, IC(200)는 정적 구역(205) 및 PR 콘테이너 구역(210)을 포함한다. 정적 구역(205) 및 PR 콘테이너 구역(210) 둘 모두는 IC(200)의 프로그래밍가능 회로부를 사용하여 구현된다. PR 콘테이너 구역(210)은 복수의 사용자 정의된 PR 구역들(215 및 220)을 포함한다. 도시된 바와 같이, PR 구역들(215 및 220)은 PR 콘테이너 구역(210) 내에서 계층적으로 순서화된다. 예컨대, PR 구역들(215 및 220)은 PR 콘테이너 구역(210) 내에 완전히 포함된다.
도 2는 또한, 도시된 상이한 구역들을 구현하기 위해 IC(200)에 로딩될 수 있는 복수의 부분 비트스트림들을 예시한다. 예컨대, 부분 비트스트림(230)은 정적 구역(205) 내에서 회로부를 구현하기 위해 IC(200)에 로딩될 수 있다. 부분 비트스트림(235)은 PR 콘테이너 구역(210) 내에서 회로부를 구현하기 위해 IC(200)에 로딩될 수 있다.
PR 구역(215)은, PR 구역(215) 내에서 상이한 회로부를 각각 초래하는 복수의 상이한 사용자 애플리케이션들을 구현할 수 있다. 도 2의 예에서, PR 구역(215)은, 부분 비트스트림(240)을 로딩함으로써 애플리케이션 A에 대응하는 회로부 또는 부분 비트스트림(245)을 로딩함으로써 애플리케이션 B에 대응하는 회로부를 구현할 수 있다. PR 구역(220)은, 부분 비트스트림(250)을 로딩함으로써 애플리케이션 C에 대응하는 회로부 또는 부분 비트스트림(255)을 로딩함으로써 애플리케이션 D에 대응하는 회로부를 구현할 수 있다.
예시된 바와 같이, PR 구역(215)은 PR 구역(220)과 중첩하지 않거나 접촉하지 않는다. 이것은 PR 구역(215)이 PR 구역(220)과는 독립적으로 부분적으로 재구성되게 허용한다. 예컨대, PR 구역(215)은 애플리케이션 A에 대응하는 회로부를 구현할 수 있는 반면, PR 구역(220)은 애플리케이션 C에 대응하는 회로부를 구현한다. PR 구역(215)은, PR 구역(220)이 애플리케이션 C를 중단없이 계속 실행하는 동안(애플리케이션 C에 대응하는 회로부가 중단없이 동작하게 함), 부분 비트스트림(245)을 로딩함으로써 애플리케이션 B에 대응하는 회로부를 구현하도록 재구성될 수 있다. 유사하게, PR 구역(215) 외부의 PR 콘테이너 구역(210)의 구역들은 정적 구역(205)에 대한 경우와 같이 중단없이 계속 동작할 수 있다.
임의의 지점에서, 호스트 시스템, 예컨대 프로세서(105)는 상이한 PR 콘테이너 구역을 구현하는 IC(200) 내에 상이한 부분 비트스트림을 로딩할 수 있다. 상이한 PR 콘테이너 구역은 도 2에 도시된 것과는 상이한 수의 PR 구역들 및/또는 상이한 경계들을 갖는 동일한 수의 PR 구역들을 포함할 수 있으며, 그에 의해 PR 구역들의 상이한 형상들 및 사이즈들을 허용한다.
예시의 목적들을 위해, PR 구역(215) 및/또는 PR 구역(220)은 PR 콘테이너 구역으로 변환될 수 있다. 그 경우, 하나 이상의 PR 구역들은 변환된 PR 콘테이너 구역에서 구현될 수 있다. 이러한 프로세스는 IC(200) 내에서 부분 재구성 계층구조를 생성하기 위해 새롭게 생성된 PR 구역들에 대해 반복적으로 수행될 수 있다(예컨대, PR 콘테이너 구역들로 변환함).
도 3은 IC(200)의 다른 예를 예시한다. 도 3의 예에서, 새로운 부분 비트스트림은, 상이한 PR 콘테이너 구역(310)을 구현하는 IC(200)에 로딩된다. PR 콘테이너 구역(310)은 4개의 PR 구역들(315, 320, 325, 및 330)을 포함한다. PR 구역들(315, 320, 325, 및 330) 각각은 상이한 부분 비트스트림들을 IC(200)에 로딩함으로써 하나 이상의 상이한 애플리케이션들을 구현할 수 있다. 도 3은, PR 구역 경계들 및/또는 PR 구역들의 수가 IC 내에서 어떻게 변화될 수 있는지의 일 예를 예시한다.
도 4는 계층적 부분 재구성의 예시적인 방법(400)을 예시한다. 방법(400)은 도 1과 관련하여 설명된 시스템과 동일하거나 유사한 시스템(100)에 의해 수행될 수 있다. 방법(400)은 계층적 부분 재구성을 구현하기 위해 회로 설계의 PR 모듈들을 세분하는 예들을 예시한다. 예시의 목적들을 위해, 방법(400)은 또한, 회로 설계에 대해 수행되는 동작들의 시각적인 예시들을 제공하는 도 5a 내지 도 5g를 참조하여 설명된다.
블록(405)에서, 시스템은 구현된 회로 설계를 로딩할 수 있다. 구현된 회로 설계는 배치 및 배선된 회로 설계이다. 회로 설계는 도 5a에 도시된 바와 같이 정적 모듈(505) 및 PR 모듈(510)을 포함한다. 정적 모듈(505) 및 PR 모듈(510)은 배치 및 배선된다.
블록(410)에서, 시스템은 도 5b에 예시된 바와 같이 PR 모듈(510)의 콘텐츠들을 제거할 수 있다. 도 5b의 예에서, PR 모듈(510)의 음영은 시스템이 PR 모듈(510)의 콘텐츠들을 제거했다는 것을 예시한다. 이와 관련하여, PR 모듈(510)은 빈 모듈, 예컨대 어떠한 콘텐츠도 갖지 않고 "부분 재구성" 및 "모듈" 속성들을 갖는 회로 설계의 논리 모듈인 "블랙 박스(black box)"로 지칭된다.
블록(415)에서, 시스템은 PR 모듈(510)을 PR 콘테이너 모듈(515)로 변환할 수 있다. 예컨대, 시스템은 PR 모듈(510)의 "모듈" 속성을 "콘테이너"로 변화시킨다.
블록(420)에서, 시스템은 네트리스트를 PR 콘테이너(515)에 로딩할 수 있다. 도 5b는 PR 콘테이너(515) 내에 포함된 네트리스트(545)를 예시한다. PR 콘테이너(515)에 로딩된 네트리스트, 예컨대 네트리스트(545)는 2개 이상의 PR 모듈들(520 및 525)을 포함하고 도 5c에 예시된다. PR 모듈들(520 및 525) 각각은 비어있을 수 있다.
블록(425)에서, 시스템은 PR 콘테이너(515)로부터 PR 모듈들(520 및 525) 중 적절한 PR 모듈들의 경계들로 PPLOC들을 리로케이팅(relocate)시킬 수 있다. PPLOC들의 리로케이션은 도 7과 관련하여 더 상세히 설명된다.
블록(430)에서, 시스템은 PR 모듈들(520 및 525) 각각에 대한 PR 모듈 플로어플랜(floorplan)을 생성할 수 있다. PR 모듈 플로어플랜은 각각의 PR 모듈에 대한 위치 제약들을 특정한다. 이와 관련하여, PR 모듈(520)에 대한 PR 모듈 플로어플랜은 타겟 IC 내의 PR 모듈(520)의 물리적 경계들을 특정한다. 특히, PR 모듈(520)에 대한 PR 모듈 플로어플랜은, 물리적 경계들이 PR 콘테이너(515)의 물리적 경계들 내에(예컨대, PR 콘테이너(515)에 대한 플로어플랜의 경계들 내에) 완전히 있다는 것을 특정한다. PR 모듈(510)이 초기에 배치 및 배선되었으므로, 그 모듈에 대응하는 경계들이 블록(405)에서 로딩된 오리지널 회로 설계로부터 유지될 수 있다는 것을 인식해야 한다. 그러므로, PR 콘테이너(515)의 플로어플랜이 이용가능하다(예컨대, 동일하다). PR 모듈(525)에 대한 PR 모듈 플로어플랜은 PR 모듈(525)의 경계들이 PR 콘테이너(515)의 경계들 내에 완전히 있다는 것을 특정한다. 추가로, PR 모듈(520) 및 PR 모듈(525)의 경계들은 서로 중첩하지 않거나 또는 그렇지 않으면 서로 접촉하지 않는다.
하나 이상의 실시예들에서, 사용자는 PR 모듈들(520 및 525) 각각의 물리적 경계들을 특정하는 하나 이상의 사용자 입력들을 제공할 수 있다. 특정한 실시예들에서, 시스템은 PR 콘테이너(515)에 의해 커버되는 타겟 IC의 구역의 그래픽 예시를 디스플레이할 수 있다. 사용자는 PR 모듈들(520 및 525) 각각에 대응하는 PR 콘테이너(515) 내에 원하는 치수들 및 위치를 갖는 직사각형을 드로잉(draw)할 수 있다. 시스템은 PR 모듈들(520 및 525)의 각각의 개개의 PR 모듈에 대한 PR 모듈 플로어플랜으로서 사용자-특정 입력을 사용할 수 있다.
블록(435)에서, 시스템은 PR 모듈들(520 및 525) 각각 내에 네트리스트를 포함시킬 수 있다. 도 5c는, 네트리스트(550)가 PR 구역(520)에 포함되는 반면, 네트리스트(555)가 PR 구역(525)에 포함되는 것을 예시한다. 사용자는, 예컨대 PR 모듈(520) 내에 포함될 네트리스트 및 PR 모듈(525) 내에 포함될 네트리스트를 특정할 수 있다. 시스템은 PR 모듈(520 및 525) 각각 내에 사용자 특정 네트리스트들을 포함한다.
블록(440)에서, 시스템은 PR 콘테이너(515)를 구현할 수 있다. 이를 행할 시에, 시스템은 개개의 PR 모듈 플로어플랜들에 기반하여, PR 모듈들(520 및 525) 각각 및 그 내에 포함된 개개의 네트리스트들을 포함하는 PR 콘테이너(515)를 구현할 수 있다. 예컨대, 시스템은 PR 콘테이너(515)에 대한 플로어플랜을 사용하여 PR 콘테이너(515)에 대응하는 회로부를 배치 및 배선시킬 수 있다. 시스템은 또한, PR 모듈들의 각각의 개개의 PR 모듈에 대해 개발된 PR 모듈 플로어플랜에 기반하여 PR 모듈(520)(예컨대, 네트리스트(550)) 및 PR 모듈(525)(예컨대, 네트리스트(555)) 각각을 배치 및 배선시킬 수 있다. 도 5d는 PR 모듈들(520 및 525)을 포함하는 PR 콘테이너(515)가 완전히 배치 및 배선된 일 예를 예시한다.
하나 이상의 실시예들에서, 시스템은 PR 콘테이너에 대한 부분 비트스트림, PR 모듈(520)에 대한 부분 비트스트림, 및 PR 모듈(525)에 대한 부분 비트스트림을 출력할 수 있다. 정적 모듈(505)에 대한 부분 비트스트림은, 블록(405)의 회로 설계가 구현됨에 따라 초기에 이용가능할 수 있다.
PR 모듈들(520 및 525)에 대응하는 타겟 IC 상의 PR 구역들 내에서 구현될 상이한 애플리케이션들에 대해 추가적인 부분 비트스트림들을 생성하기 위해, 도 5c의 회로 설계의 상태가 후속 사용을 위해 저장될 수 있다. 방법은, 상이한 네트리스트들을 PR 모듈(520) 및/또는 PR 모듈(525)에 삽입하고, 애플리케이션들 각각에 대해 추가적인 부분 비트스트림들을 생성하기 위해 새로운 및/또는 상이한 네트리스트들을 사용하여 PR 모듈들(520 및 525) 각각을 구현함으로써 이러한 지점으로부터 반복될 수 있다.
도 5e 내지 도 5g는 PR 모듈들을 추가로 세분하기 위해 수행될 수 있는 부가적인 프로세스 단계들을 예시한다. 예컨대, 방법(400)과 관련하여 설명된 동작들은 추가적인 PR 콘테이너들 내의 추가적인 PR 모듈들을 임의적인 깊이로 생성하기 위해 반복적으로 수행될 수 있다. 도 5e 내지 도 5g의 예들에서, PR 모듈(525)은 추가적인 PR 모듈들(535 및 540)을 포함하는 PR 콘테이너(530)로 변환된다.
도 5e의 예를 참조하면, 시스템은 도 5f에 예시된 바와 같이, PR 모듈(525)의 콘텐츠들을 제거하고, PR 모듈(525)의 파라미터를 "콘테이너"의 파라미터로 변화시키며, 복수의 PR 모듈들(535 및 540)을 포함하는 내부의 네트리스트(560)를 PR 콘테이너(530)에 로딩함으로써 PR 콘테이너(530)를 생성할 수 있다. PR 모듈들(535 및 540) 각각은 비어있을 수 있다. 도 5e의 예에서, PR 모듈(525)의 음영은 시스템이 PR 모듈(525)의 콘텐츠들을 제거했다는 것을 예시한다. 이와 관련하여, PR 모듈(525)은 블랙 박스로 지칭된다. 도 5f의 예에서, 네트리스트(560)는 이제 PR 콘테이너(530)인 것에 포함된다. 시스템은 네트리스트(565)를 PR 모듈(535)에 포함시키고 네트리스트(570)를 PR 모듈(540)에 포함시킬 수 있다. 이어서, 시스템은 PR 콘테이너(530)를 구현하고, 예컨대 배치 및 배선시킬 수 있다. 이어서, 시스템은 도 5g에 도시된 바와 같이, PR 모듈들(535 및 540)을 포함하는 PR 콘테이너(530)를 구현할 수 있다.
논의된 바와 같이, PR 콘테이너들 및 PR 모듈들의 계층구조는 임의적인 깊이까지 계속될 수 있다. 추가로, 임의의 주어진 PR 콘테이너에 포함된 PR 모듈들의 수는 2 초과일 수 있다. 사용자는, 예컨대 EDA 시스템을 사용하여 설명된 동작들을 개시하여, 복수의 PR 모듈들을 포함할 수 있는 PR 콘테이너로 임의의 PR 모듈을 변환하고, 원하는 레벨의 부분 재구성 계층구조로 프로세스를 반복할 수 있다.
도 6은 도 5g의 회로 설계를 구현하는 예시적인 IC(600)를 예시한다. 도 5a 내지 도 5g는 회로 설계의 상태의 논리적 예시들을 예시하면서, 또한 타겟 IC에 대한 물리적 관계를 예시하려고 시도한다. 도 6은 도 5g에 예시되는 배치 및 배선된 회로 설계로부터 IC(600)에서 구현된 물리적 구역들을 예시한다. 도시된 바와 같이, IC(600)는 정적 모듈(505)에 대응하는 정적 구역(605)을 포함한다. 논의된 바와 같이, 정적 구역(605)은 통신 버스를 통해 호스트 프로세서와 같은 외부 시스템과의 통신 링크를 유지할 수 있는 통신 회로부를 구현할 수 있다. IC(600)는 또한 PR 콘테이너 구역(615)을 포함한다. 일반적으로, PR 콘테이너 구역(615)은 PR 콘테이너(515)를 구현하는 IC(600) 상의 물리적 구역을 예시한다.
PR 콘테이너 구역(615)은 PR 구역(620) 및 PR 콘테이너 구역(630)을 포함한다. PR 구역(620)은 PR 모듈(520)을 구현하는 IC(600) 상의 물리적 구역을 예시한다. PR 콘테이너 구역(630)은 PR 콘테이너(530)를 구현하는 IC(600) 상의 물리적 구역을 예시한다. PR 콘테이너 구역(630)은 PR 구역(635) 및 PR 구역(640)을 포함한다. PR 구역들(635 및 640)은, 각각, PR 모듈들(535 및 540)을 구현하는 IC 상의 물리적 구역들이다.
도 6의 예에서, PR 구역(620, 635 및/또는 640) 중 임의의 하나 내에서 상이한 회로부를 구현하기 위한 동작 동안 임의의 시간에 상이한 부분 비트스트림들이 IC(600)에 로딩될 수 있다. PR 구역(620, 635, 및/또는 640) 각각은 호스트 시스템의 제어 하에서 다른 것들과는 독립적으로 재구성될 수 있다. 다른 예에서, PR 구역(630)의 완전히 새로운 구현은, PR 구역(620) 및 PR 콘테이너 구역(615)이 중단없이 계속 동작하는 동안 언제든지 IC(600) 내에서 구현될 수 있다. PR 구역(630)의 새로운 구현은, PR 구역들(635 및 640)에 대해 예시된 것들과는 상이한 경계들의 PR 구역들 및/또는 PR 콘테이너 구역(630)에 대해 전체적으로 도시된 것과는 상이한 수의 PR 구역들을 포함할 수 있다. 또 다른 예에서, 도 6에 도시된 것과는 완전히 상이한 아키텍처를 갖는 완전히 새로운 버전의 PR 콘테이너 구역(615)이 구현될 수 있다.
도 6의 예는 상이한 PR 구역들 사이의 독립성을 예시하도록 의도되며, 하나 이상의 PR 구역들은, 다른 PR 구역들의 커널들이 중단없이 IC(600) 내에서 계속 동작하는 동안 상이한 커널들을 구현하도록 동적으로 재구성될 수 있다. 이것은 IC(600)의 데이터 처리량이 높게 유지되게 허용하며, 이때, 선택된 커널들은, 다른 커널들이 상이한 태스크들을 수행하도록 IC(600) 내의 회로부에서 구현되는 동안 계속 동작한다. 도 6의 예는, 애플리케이션 레벨에서, 사용자들이 요구될 수 있는 대로 상이한 PR 구역들 사이의 경계들을 제어하고 변화시킬 수 있다는 것을 추가로 예시한다. 일반적으로, 사용자 애플리케이션들은, 계층구조가 정적 구역(605) 내에 포함되지 않는 IC(600)의 이용가능한 부분들 내에서 구현될 수 있는 한, 주어진 애플리케이션에 대해 필요한 PR 콘테이너 구역들 및 PR 구역들의 임의의 계층구조를 생성할 수 있다.
도 7은 PPLOC 핸들링의 일 예를 예시한다. PPLOC는, 파티션 핀이 록킹(lock)되어 이동될 수 없다는 것을 표시하는 파라미터를 갖는 파티션 핀을 지칭한다. 파티션 핀들은 정적 모듈(정적 구역)과 PR 모듈(PR 구역) 사이 또는 PR 모듈들(PR 구역들) 사이의 신호 교차들을 정의한다. PPLOC 핸들링은 도 4의 블록(425)과 관련하여 설명된 바와 같이 재구성 모듈들의 생성의 일부로서 수행될 수 있다.
도 7은, PPLOC들이 회로 설계에서 파티션들(예컨대, 모듈 경계들)에 관해 어떻게 핸들링되는지를 예시한다. 예시의 목적들을 위해, PPLOC들이 PR 콘테이너(515) 및 PR 모듈(525)에 대해서만 예시된다. 추가적인 PPLOC들이 PR 모듈(520)에 연결되는 네트(net)들(도시되지 않음)에 대해 존재할 수 있지만, 동일하거나 유사한 방식으로 핸들링될 수 있다.
일반적으로, 시스템은 PR 콘테이너(515)의 경계를 교차하는 연결들을 2개의 상이한 카테고리들로 카테고리화한다. 제1 카테고리는 PPLOC 파라미터를 갖지 않는 연결들을 포함한다. 제2 카테고리는 PPLOC 파라미터를 갖는 연결들을 포함한다. 도 7의 예에서, 셀 A(예컨대, 회로 블록)는 셀 G에 연결된다. 셀 B는 셀 H 및 PR 모듈(525)에 연결된다. 셀 C는 PR 모듈(525)에 연결된다. 연결들 A-G, B-H, 및 C-PR 모듈(525)은 연결들의 제1 카테고리에 속한다. 제1 카테고리 내의 연결들의 경우, 시스템은 어떠한 액션도 취하지 않는다.
제2 카테고리 내의 연결들의 경우, 시스템은 선택적으로 PPLOC들을 리로케이팅시킨다. PPLOC를 리로케이팅시키는 것은, 파티션 핀으로부터 "록" 속성을 제거하고 "록" 속성을 다른 상이한 파티션 핀에 추가하는 것을 지칭한다. 셀 D를 수반하는 연결의 경우, 시스템은 PR 콘테이너(515)의 경계 상의 파티션 핀으로부터 PR 구역(525)의 경계 상의 파티션 핀으로 PPLOC P1을 리로케이팅시킨다. 셀 D(1)가 PR 콘테이너(525)의 경계 상에 로케이팅된 PPLOC를 갖고, PR 모듈들(520 및 525) 외부에 있는 PR 콘테이너(515) 내의 임의의 다른 셀에 연결되지 않기 때문에, 시스템은 PPLOC P1을 리로케이팅시킨다.
셀 E 및 셀 I를 수반하는 연결의 경우, 시스템은, E-I 연결이 PR 모듈(525) 또는 PR 모듈(520)을 수반하지 않으므로, PR 콘테이너(525)의 경계 상에 로케이팅됨에도 불구하고 PPLOC P2를 이동시키지 않는다. 연결 F-J의 경우, 시스템은, 셀 J가 PR 모듈(520) 또는 PR 모듈(525)에 직접 연결되지 않으므로, PR 콘테이너(515)에 대한 경계 상에 로케이팅됨에도 불구하고 PPLOC P3를 이동시키지 않는다. PR 모듈(525)에 대한 연결은, PPLOC P3 이후 발생하고 PR 콘테이너(515) 내에 있다.
도 8은 배치 및 배선을 위한 예시적인 기법을 예시한다. 도 8에 예시된 기법은 도 4의 블록(440)의 일부로서 PR 콘테이너(515)를 구현할 시에 사용될 수 있다. 도 8의 예에서, PR 콘테이너 구역(810)은 PR 구역(820) 및 PR 구역(830)을 포함한다. PR 콘테이너 구역(810)에 대응하는 PR 콘테이너의 회로 엘리먼트들을 배치할 시에, 시스템은, PR 콘테이너 구역(810)에 대한 플로어플랜에 따라 PR 구역들(820 및 825)을 제외한 PR 콘테이너 구역(810) 내의 임의의 곳에 그러한 회로 엘리먼트들을 배치하는 것으로 제한된다. PR 콘테이너 구역(810) 내의 셀들에 대한 연결들을 배선시킬 때, 시스템은 확장된 구역(805)으로 표현되는 확장된 영역을 사용하도록 허용된다. 각각의 확장된 영역은 확장되는 기본 영역(예컨대, 이러한 예에서는 PR 콘테이너 구역(810))으로부터 미리 결정된 거리로 연장될 수 있다.
원으로 둘러싸인 1로 라벨링된 연결들 각각은 확장된 구역(805) 내에 로케이팅된 와이어들만을 사용하여 배선되어야 하는 연결들이다. 그러므로, 셀들 E 및 F 사이의 연결, 셀 G와 PR 구역(830) 사이의 연결, PR 구역(830)과 셀 D 사이의 연결, 및 셀 A와 PPLOC P2 사이의 연결을 배선시킬 때, 시스템은 확장된 구역(805)에 포함된 이들 배선 리소스들(예컨대, 와이어들)만을 사용하는 것으로 제한된다.
유사하게, PR 구역들(820 및 830)에 대응하는 PR 모듈들의 회로 엘리먼트들을 배치할 때, 시스템은 각각의 PR 구역의 PR 모듈 플로어플랜들에 기반하여 PR 구역들(820 및 830) 내에 회로 엘리먼트들을 각각 배치하는 것으로 제한된다. PR 구역(820) 내에 로케이팅된 셀들 사이의 임의의 연결의 경우, 시스템은 확장된 구역(815) 내에 로케이팅된 이들 배선 리소스들만을 사용하는 것으로 제한된다. PR 구역(830) 내에 로케이팅된 셀들 사이의 임의의 연결의 경우, 시스템은 확장된 구역(825) 내에 로케이팅된 이들 배선 리소스들만을 사용하는 것으로 제한된다.
설명된 바와 같이, 본 명세서에 설명된 예시적인 실시예들을 사용하여, 설계자는 원할 수 있는 대로 PR 콘테이너 구역들 및 PR 구역들의 계층구조들을 생성할 수 있다. 이것은, 다른 PR 구역들에서 구현된 커널들이 중단없이 계속 동작할 수 있는 동안 새로운 및/또는 상이한 커널들이 특정한 PR 구역들에서 구현되게 허용한다. 이것은 임의의 원하는 레벨의 입도로 수행될 수 있다. 설계자가 부분 재구성 계층구조의 하나 이상의 레벨들을 더 이상 필요로 하지 않는 경우들에서, PR 구역들은 회로 설계 내에서 계층구조의 레벨들을 감소시키도록 재결합될 수 있다.
도 9는 계층적 부분 재구성의 다른 예시적인 방법(900)을 예시한다. 더 구체적으로, 도 4가 부가적인 계층구조를 생성하는 것을 예시하지만, 방법(900)은 회로 설계 내에서 부분 재구성 계층구조의 양을 감소시키는 것에 관한 것이다. 방법(900)은 도 1과 관련하여 설명된 시스템과 동일하거나 유사한 시스템(100)에 의해 수행될 수 있다. 방법(900)은 회로 설계의 PR 모듈들을 재결합하고, 그에 의해 사용된 계층적 부분 재구성의 양을 감소시키는 예들을 예시한다. 예시의 목적들을 위해, 방법(900)은 또한, 회로 설계에 대해 수행되는 동작들의 시각적인 예시들을 제공하는 도 10a 내지 도 10e를 참조하여 설명된다.
블록(905)에서, 시스템은 구현된 회로 설계를 로딩할 수 있다. 구현된 회로 설계는 배치 및 배선된 회로 설계이며, 부분 재구성 계층구조를 포함한다. 도 10a에 도시된 바와 같이, 회로 설계는 정적 모듈(505), PR 콘테이너(515), PR 모듈(520), PR 콘테이너(530), 및 PR 모듈들(535 및 540)을 포함한다. 도 10a에 예시된 회로 설계는, 예시의 목적들을 위해 도 5g와 관련하여 원래 설명된 회로 설계이다. 설명된 모듈들 및 콘테이너들 각각은 배치 및 배선된다.
블록(910)에서, 시스템은 PPLOC 프로세싱을 수행할 수 있다. 블록(910)에서, 시스템은, PR 콘테이너(530)로부터, 선택된 PPLOC들을 제거하고, 다른 선택된 PPLOC들을 PR 모듈들의 경계들로부터 PR 콘테이너(530)의 경계로 이동시킬 수 있다. 부분 재구성 계층구조의 레벨들을 재결합시키려는 목적들을 위한 PPLOC 핸들링은 도 11과 관련하여 더 상세히 설명된다.
블록(915)에서, 시스템은 PR 콘테이너(530)를 PR 모듈(525)로 변환할 수 있다. 예컨대, 시스템은 PR 콘테이너(530)와 연관된 속성을 "콘테이너"로부터 "모듈"로 변화시킨다. PR 모듈(525)로의 PR 콘테이너(530)의 변환은 도 10b에 적어도 부분적으로 예시된다. 블록(920)에서, 시스템은 PR 모듈(525)의 콘텐츠들을 제거할 수 있다. 콘텐츠들의 제거는 PR 모듈(525)을 블랙 박스로 전환시킨다. 도 10b의 음영은 PR 모듈(525)의 블랙 박스 속성을 예시한다.
블록(925)에서, 시스템은 네트리스트를 PR 모듈(525)에 로딩할 수 있다. 시스템은 도 10b에 도시된 바와 같이, 네트리스트(1005)를 PR 모듈(525)에 로딩할 수 있다. PR 모듈(525)에 로딩된 네트리스트, 예컨대 네트리스트(1005)는 표준 네트리스트일 수 있고, 어떠한 PR 모듈들도 포함하지 않는다.
블록(930)에서, 시스템은 PR 모듈(525)을 구현할 수 있다. 시스템은, 예컨대 PR 모듈(525)에 포함된 네트리스트를 배치 및 배선시킬 수 있다. PR 모듈(525)에 대한 플로어플랜은 도 4와 관련하여 설명된 부분 재구성 계층구조의 이전 생성으로부터 저장될 수 있다. PR 모듈(525)에 대한 플로어플랜은 그 PR 모듈 내에 로딩된 네트리스트(1005)를 구현할 시에 사용될 수 있다. 도 10c는 PR 모듈(525)이 배치 및 배선된 일 예를 예시한다. 시스템은 PR 모듈(525)에 대한 부분 비트스트림을 생성 및 출력할 수 있다. 추가로, 시스템은 상이한 네트리스트를 PR 모듈(525)의 블랙-박스 버전에 로딩하고 이어서 그러한 네트리스트들을 설명된 바와 같이 구현함으로써 다른 애플리케이션들에 대한 추가적인 부분 비트스트림들을 생성할 수 있다.
도 9의 예에서, PR 콘테이너(530)가 프로세싱을 위해 선택되었다. 도 10에 예시된 것보다 더 많은 레벨들을 갖는 부분 재구성 계층구조가 프로세싱될 수 있고, 사용자가 도 9와 관련하여 설명된 바와 같이 프로세싱을 위해 그 계층구조 내에서 임의의 재구성 콘테이너를 선택할 수 있다는 것을 인식해야 한다. 프로세싱은 PR 콘테이너의 PR 모듈들을 효과적으로 제거하고, PR 콘테이너를 PR 모듈로 변환한다.
예시의 목적들을 위해, 도 10d 및 도 10e는 PR 콘테이너(515)가 프로세싱될 수 있는 추가적인 프로세싱을 예시한다. 도 10d의 예에서, 시스템은 PPLOC 프로세싱을 수행할 수 있다. 시스템은, PR 콘테이너(515)의 블랙 박스 구현을 남겨두면서 PR 콘테이너(515)의 콘텐츠들을 추가로 제거할 수 있다. 이어서, 시스템은 PR 콘테이너(515)의 파라미터를 "콘테이너"로부터 "모듈"로 변화시킬 수 있으며, 그에 의해 PR 콘테이너(515)를 PR 모듈(510)로 변환한다. 이어서, 시스템은 네트리스트(1010)를 PR 모듈(510)의 블랙 박스 버전에 추가할 수 있다.
이어서, 시스템은 PR 모듈(510)을 구현할 수 있다. 그러므로, PR 모듈(510)은 배치 및 배선된다. 추가로, 시스템은 PR 모듈(510)에 대한 부분 비트스트림을 생성 및/또는 출력할 수 있다. PR 모듈(510)을 구현할 시에, 시스템은 도 4와 관련하여 설명된 프로세스 동안 생성된 바와 같은 PR 모듈(510)에 대한 플로어플랜을 사용할 수 있다.
논의된 바와 같이, PR 콘테이너들 및 PR 모듈들의 계층구조는 임의적인 깊이까지 계속될 수 있다. 사용자는, 계층구조 내의 임의의 선택된 PR 콘테이너로부터 부분 재구성 계층구조의 레벨들의 수를 감소시키도록 재결합 프로세스를 구현할 수 있다. 예컨대, PR 콘테이너(515)는 도 9를 설명할 시에 예시의 목적들을 위해 PR 콘테이너(530) 대신 초기에 선택될 수 있다.
도 11은 PPLOC 프로세싱의 다른 예를 예시한다. 더 구체적으로, 도 11은 부분 재구성 계층구조의 레벨들을 재결합시키기 위한 PPLOC 프로세싱을 예시한다. 도 11에 예시된 PPLOC 프로세싱은 도 9의 블록(910)을 구현할 시에 시스템에 의해 수행될 수 있다. 예시의 목적들을 위해, PPLOC들이 PR 콘테이너(530), PR 모듈(535), 및 PR 모듈(540)에 대해 예시된다.
일반적으로, 시스템은, PR 콘테이너(530)의 경계를 교차하거나 또는 PR 콘테이너(530) 내에 있는 연결들을 2개의 상이한 카테고리들로 카테고리화한다. 제1 카테고리는 PPLOC 파라미터를 갖지 않는 연결들을 포함한다. 제2 카테고리는 PPLOC 파라미터를 갖는 연결들을 포함한다. 도 11의 예에서, 셀 A(예컨대, 회로 블록)는 셀 G에 연결된다. 셀 B는 셀 H 및 PR 모듈(535)에 연결된다. 셀 C는 PR 모듈(535)에 연결된다. 연결들 A-G, B-H, 및 C-PR 모듈(535)은 연결들의 제1 카테고리에 속한다. 제1 카테고리 내의 연결들의 경우, 시스템은 어떠한 액션도 취하지 않는다.
제2 카테고리 내의 연결들의 경우, 시스템은 선택적으로 PPLOC들을 제거 및/또는 리로케이팅시킨다. 셀 D를 수반하는 연결의 경우, 시스템은 PR 모듈(535)의 경계 상의 파티션 핀으로부터 PR 콘테이너(530)의 경계 상의 파티션 핀으로 PPLOC P1을 리로케이팅시킨다. 일반적으로, 시스템은 회로 설계로부터 제거되는 PR 모듈들로부터 계층구조 내에서 하나의 레벨 위로 부모(parent) PR 콘테이너로 PPLOC들을 리로케이팅시킨다. 셀 D가 PR 모듈(535)의 경계 상에 로케이팅된 PPLOC를 갖고, PR 모듈들(535 및 540) 외부에 있는 PR 콘테이너(530) 내의 임의의 다른 셀에 연결되지 않기 때문에, 시스템은 PPLOC P1을 리로케이팅시킨다.
셀 E 및 셀 I를 수반하는 연결의 경우, 시스템은, PPLOC P2가 PR 콘테이너(530)의 경계 상에 이미 로케이팅되고 연결 E-I가 PR 모듈(535) 또는 PR 모듈(540)을 수반하지 않기 때문에 PPLOC P2를 이동시키지 않는다. 연결 F-J의 경우, 시스템은, PPLOC P3이 PR 콘테이너(530)의 경계 상에 이미 로케이팅되고 셀 J가 PR 모듈(535) 또는 PR 모듈(540)에 직접 연결되지 않으므로 PPLOC P3을 이동시키지 않는다.
회로 설계로부터 제거되고 PPLOC P1과 관련하여 설명된 바와 같이 이동되지 않은 PR 모듈의 경계 상에 로케이팅된 PPLOC들의 경우, 시스템은 그러한 PPLOC들을 제거한다. 예컨대, 시스템은 PPLOC들 P6 및 P7을 제거하는데, 그 이유는, 이들 PPLOC들이 회로 설계로부터 제거되는 PR 모듈들의 경계들 상에 로케이팅되고, 회로 설계로부터 제거되는 2개의 PR 모듈들 사이에 연결되기 때문이다. 시스템은 또한, 부모 PR 콘테이너 외부에 로케이팅된 셀에 연결되지 않은, 제거되는 PR 모듈의 경계 상에 로케이팅된 PPLOC들을 제거한다. 예컨대, 시스템은, PPLOC P5(그것은 PR 콘테이너(530)에 로케이팅됨)가 셀 K에 연결되므로 PPLOC P5를 제거한다. 시스템은 또한, PPLOC P8이 PR 모듈(535)의 경계 상에 있고 연결의 다른 단부가 PR 콘테이너(530)의 경계 상에서 다른 PPLOC P3으로 이동하므로 PPLOC P8을 제거한다.
배치 및 배선의 목적들을 위해, 시스템은 도 8과 관련하여 설명된 바와 같이 배치 및 배선 기법들을 사용할 수 있다. 예컨대, 도 10b 및 도 10c를 참조하면, 네트리스트(1005)를 배치할 때, 시스템은 PR 모듈(525)에 대응하는 PR 구역 내에 네트리스트(1005)의 컴포넌트들을 배치할 수 있다. PR 모듈(525)을 배선시킬 때, 시스템은 PR 모듈(525)에 대응하는 PR 구역을 넘어 연장되는 구역 내에 로케이팅된 배선 리소스들을 사용할 수 있다. 유사하게, 시스템은 PR 모듈(510)에 대응하는 PR 구역 내에 네트리스트(1010)의 컴포넌트들을 배치할 수 있다. 시스템은, 네트리스트(1010)를 배선시킬 때, PR 모듈(510)에 대응하는 PR 구역을 넘어 연장되는 구역 내에 로케이팅된 배선 리소스들을 사용할 수 있다.
도 12는 IC 내에서 회로부를 구현하는 예시적인 방법(1200)을 예시한다. 방법(1200)은 타겟 IC 내에서 계층적 부분 재구성을 구현하도록 호스트 시스템, 예컨대 도 1의 프로세서(105)에 의해 수행될 수 있다. 더 구체적으로, 방법(1200)은 런타임 동안 본 명세서에 설명된 바와 같이 회로부의 상이한 구역들을 구현하기 위해 하드웨어 가속기로서 타겟 IC를 사용하는 호스트 시스템에 의해 수행될 수 있다. 도 12와 관련하여 설명된 다양한 구역들의 구현은, 호스트 시스템의 제어 하에서 내부에 부분 비트스트림들을 로딩함으로써 타겟 IC의 부분 재구성을 사용하여 수행될 수 있다.
블록(1205)에서, 호스트 시스템은 타겟 IC의 정적 구역 내에서 제1 회로부를 구현할 수 있다. 제1 회로부는 타겟 IC에 로딩된 제1 부분 비트스트림에 의해 특정될 수 있다. 블록(1210)에서, 호스트 시스템은 타겟 IC의 PR 콘테이너 구역 내에서 제2 회로부를 구현할 수 있다. 제2 회로부는 타겟 IC에 로딩된 제2 부분 비트스트림에 의해 특정될 수 있다.
블록(1215)에서, 호스트 시스템은 PR 콘테이너 구역 내에 포함된 제1 PR 구역 내에서 제3 회로부를 그리고 PR 콘테이너 구역 내에 포함된 제2 PR 구역 내에서 제4 회로부를 구현할 수 있다. 제3 회로부는 타겟 IC에 로딩된 제3 부분 비트스트림에 의해 특정될 수 있다. 제4 회로부는 타겟 IC에 로딩된 제4 부분 비트스트림에 의해 특정될 수 있다.
호스트 시스템은, 제1 회로부, 제2 회로부, 및 제4 회로부가 중단없이 계속 동작하는 동안, PR 구역들 중 하나 또는 둘 모두 내에서 상이한 회로부를 구현하는 것과 같은 추가적인 동작들을 수행할 수 있다.
호스트 시스템은 또한, 내부에 하나 이상의 상이한 PR 구역들을 포함하는 타겟 IC에서 완전히 상이한 PR 콘테이너 구역을 구현하기 위해 추가적인 부분 비트스트림들을 로딩할 수 있다. 호스트는 상이한 부분 비트스트림들을 타겟 IC에 로딩함으로써 각각의 개개의 PR 구역 내에서 상이한 회로부를 구현할 수 있다.
도 13은 IC에 대한 예시적인 아키텍처(1300)를 예시한다. 일 양상에서, 아키텍처(1300)는 프로그래밍가능 IC 내에서 구현될 수 있다. 예컨대, 아키텍처(1300)는 FPGA(field programmable gate array)를 구현하는 데 사용될 수 있다. 아키텍처(1300)는 또한 IC의 SOC(system-on-chip) 타입을 표현할 수 있다. SOC는, 프로그램 코드를 실행하는 프로세서 및 하나 이상의 다른 회로들을 포함하는 IC이다. 다른 회로들은 하드와이어링된 회로부, 프로그래밍가능 회로부, 및/또는 이들의 조합으로서 구현될 수 있다. 회로들은 서로 그리고/또는 프로세서와 협력하여 동작할 수 있다.
도시된 바와 같이, 아키텍처(1300)는 수개의 상이한 타입들의 프로그래밍가능 회로, 예컨대, 로직, 블록들을 포함한다. 예컨대, 아키텍처(1300)는, MGT(multi-gigabit transceiver)들(1301), CLB(configurable logic block)들(1302), BRAM(random access memory block)들(1303), IOB(input/output block)들(1304), 구성 및 클록킹 로직(CONFIG/CLOCKS)(1305), DSP(digital signal processing block)들(1306), 특수화된 I/O 블록들(1307)(예컨대, 구성 포트들 및 클록 포트들), 및 다른 프로그래밍가능 로직(1308), 이를테면 디지털 클록 관리기들, 아날로그-디지털 변환기들, 시스템 모니터링 로직 등을 포함하는 많은 수의 상이한 프로그래밍가능 타일들을 포함할 수 있다.
일부 IC들에서, 각각의 프로그래밍가능 타일은, 각각의 인접한 타일 내의 대응하는 상호연결 엘리먼트(INT)(1311)로의 그리고 대응하는 상호연결 엘리먼트(INT)(1311)로부터의 표준화된 연결들을 갖는 프로그래밍가능 상호연결 엘리먼트(INT)(1311)를 포함한다. 따라서, 함께 취해진 INT들(1311)은 예시된 IC에 대한 프로그래밍가능 상호연결 구조를 구현한다. 각각의 INT(1311)는 또한, 도 13의 최상부에 포함된 예들에 의해 도시된 바와 같이, 동일한 타일 내의 프로그래밍가능 로직 엘리먼트로의 그리고 프로그래밍가능 로직 엘리먼트로부터의 연결들을 포함한다.
예컨대, CLB(1302)는, 사용자 로직 외에(plus) 단일 INT(1311)를 구현하도록 프로그래밍될 수 있는 구성가능한 로직 엘리먼트(CLE)(1312)를 포함할 수 있다. BRAM(1303)은 하나 이상의 INT들(1311)에 부가하여 BRAM 로직 엘리먼트(BRL)(1313)를 포함할 수 있다. 통상적으로, 타일에 포함된 INT들(1311)의 수는 타일의 높이에 의존한다. 도시된 바와 같이, BRAM 타일은 5개의 CLB들과 동일한 높이를 갖지만, 다른 수들(예컨대, 4)이 또한 사용될 수 있다. DSP 타일(1306)은 적절한 수의 INT들(1311)에 부가하여 DSPL(DSP logic element)(1314)를 포함할 수 있다. IOB(1304)는, 예컨대, INT(1311)의 하나의 인스턴스에 부가하여 I/O 로직 엘리먼트(IOL)(1315)의 2개의 인스턴스들을 포함할 수 있다. IOL(1315)에 연결된 실제 I/O 패드들은 IOL(1315)의 영역으로 한정되지 않을 수 있다.
도 13에 도시된 예에서, 다이의 중심 근처의, 예컨대 구역들(1305, 1307, 및 1308)로 형성된 열(columnar) 영역은 구성, 클록, 및 다른 제어 로직에 대해 사용될 수 있다. 이러한 열(column)로부터 연장되는 수평 영역들(1309)은 프로그래밍가능 IC의 폭에 걸쳐 클록들 및 구성 신호들을 분배하는 데 사용될 수 있다.
도 13에 예시된 아키텍처를 이용하는 일부 IC들은 IC의 많은 부분을 구성하는 규칙적인 열 구조를 방해하는 부가적인 로직 블록들을 포함한다. 부가적인 로직 블록들은 프로그래밍가능 블록들 및/또는 전용 회로부일 수 있다. 예컨대, PROC(1310)로서 도시된 프로세서 블록은 CLB들 및 BRAM들의 수개의 열들에 걸쳐 있다.
일 양상에서, PROC(1310)는 IC의 프로그래밍가능 회로부를 구현하는 다이의 일부로서 제조되는 전용 회로부, 예컨대 하드와이어링된 프로세서로서 구현될 수 있다. PROC(1310)는 복잡도에서, 개별 프로세서, 예컨대 프로그램 코드를 실행할 수 있는 단일 코어로부터 하나 이상의 코어들, 모듈들, 코-프로세서들, 인터페이스들 등을 갖는 전체 프로세서 시스템에 이르기까지 다양한 상이한 시스템들 및/또는 프로세서 타입들 중 임의의 것을 표현할 수 있다.
다른 양상에서, PROC(1310)는 아키텍처(1300)로부터 생략될 수 있으며, 다른 다양한 설명된 프로그래밍가능 블록들 중 하나 이상으로 대체될 수 있다. 추가로, 그러한 블록들은, 프로그래밍가능 회로부의 다양한 블록들이 PROC(1310)의 경우와 같이 프로그램 코드를 실행할 수 있는 프로세서를 형성하기 위해 사용될 수 있다는 점에서 "소프트 프로세서"를 형성하는 데 이용될 수 있다.
어구 "프로그래밍가능 회로부"는 IC 내의 프로그래밍가능 회로 엘리먼트들, 예컨대, 본 명세서에 설명된 다양한 프로그래밍가능 또는 구성가능한 회로 블록들 또는 타일들 뿐만 아니라, IC에 로딩된 구성 데이터에 따라 다양한 회로 블록들, 타일들, 및/또는 엘리먼트들을 선택적으로 커플링시키는 상호연결 회로부를 지칭한다. 예컨대, PROC(1310) 외부에 있는 도 13에 도시된 회로 블록들, 이를테면 CLB들(1302) 및 BRAM들(1303)은 IC의 프로그래밍가능 회로부로 고려된다.
일반적으로, 프로그래밍가능 회로부의 기능은 구성 데이터가 IC에 로딩될 때까지 설정되지 않는다. 구성 비트들의 세트는 IC의 프로그래밍가능 회로부, 이를테면 FPGA를 프로그래밍하기 위해 사용될 수 있다. 구성 비트(들)는 통상적으로 "구성 비트스트림"으로 지칭된다. 일반적으로, 프로그래밍가능 회로부는, 먼저 구성 비트스트림을 IC에 로딩하지 않으면 동작 또는 기능하지 않는다. 구성 비트스트림은 프로그래밍가능 회로부 내의 특정한 회로 설계를 효과적으로 구현한다. 회로 설계는, 예컨대 프로그래밍가능 회로 블록들의 기능 양상들, 및 다양한 프로그래밍가능 회로 블록들 사이의 물리적 연결을 특정한다.
하드와이어링된" 또는 "경화된", 즉 프로그래밍가능하지 않은 회로부는 IC의 일부로서 제조된다. 프로그래밍가능 회로부와는 달리, 하드와이어링된 회로부 또는 회로 블록들은, IC의 제조 이후에는 구성 비트스트림의 로딩을 통해 구현되지 않는다. 하드와이어링된 회로부는 일반적으로, 예컨대 먼저 구성 비트스트림을 IC, 예컨대 PROC(1310)에 로딩하지 않으면서 기능하는 전용 회로 블록들 및 상호연결부들을 갖는 것으로 고려된다.
일부 인스턴스들에서, 하드와이어링된 회로부는, IC 내의 하나 이상의 메모리 엘리먼트들에 저장된 레지스터 세팅들 또는 값들에 따라 세팅 또는 선택될 수 있는 하나 이상의 동작 모드들을 가질 수 있다. 동작 모드들은, 예컨대 구성 비트스트림의 IC로의 로딩을 통해 세팅될 수 있다. 이러한 능력에도 불구하고, IC의 일부로서 제조될 때, 하드와이어링된 회로부가 동작가능하고 특정한 기능을 가지므로, 하드와이어링된 회로부는 프로그래밍가능 회로부로 고려되지 않는다.
SOC의 경우, 구성 비트스트림은, 프로그래밍가능 회로부 내에서 구현될 회로부 및 PROC(1310) 또는 소프트 프로세서에 의해 실행될 프로그램 코드를 특정할 수 있다. 일부 경우들에서, 아키텍처(1300)는, 구성 비트스트림을 적절한 구성 메모리 및/또는 프로세서 메모리에 로딩하는 전용 구성 프로세서를 포함한다. 전용 구성 프로세서는 사용자-특정된 프로그램 코드를 실행하지 않는다. 다른 경우들에서, 아키텍처(1300)는, 구성 비트스트림을 수신하고, 구성 비트스트림을 적절한 구성 메모리에 로딩하며, 그리고/또는 실행을 위해 프로그램 코드를 추출하도록 PROC(1310)를 이용할 수 있다.
도 13은 프로그래밍가능 회로부, 예컨대 프로그래밍가능 패브릭(fabric)을 포함하는 IC를 구현하기 위해 사용될 수 있는 예시적인 아키텍처를 예시하도록 의도된다. 예컨대, 열 내의 로직 블록들의 수, 열들의 상대적인 폭, 열들의 수 및 순서, 열들에 포함된 로직 블록들의 타입들, 로직 블록들의 상대적인 사이즈들, 및 도 13의 최상부에 포함된 상호연결/로직 구현들은 순수하게 예시적이다. 실제 IC에서, 예컨대, CLB들의 하나 초과의 인접한 열은 통상적으로, 사용자 회로 설계의 효율적인 구현을 용이하게 하기 위해, CLB들이 나타나는 곳마다 포함된다. 그러나, 인접한 CLB 열들의 수는 IC의 전체 사이즈에 따라 변할 수 있다. 추가로, IC 내의 PROC(1310)와 같은 블록들의 포지셔닝 및/또는 사이즈는 단지 예시의 목적들을 위한 것이며, 제한들로서 의도되지 않는다.
도 1과 관련하여 설명된 바와 같은 시스템은, 예컨대 도 13의 아키텍처와 동일하거나 유사한 아키텍처를 갖는 IC 내에서의 구현을 위해 본 명세서에 설명된 프로세싱을 경험하는 회로 설계를 추가로 프로세싱할 수 있다. 시스템은, 예컨대 회로 설계를 합성, 배치, 및 배선시킬 수 있다. 시스템은 또한, 특정된 또는 임의적인 깊이로 부분 재구성 계층구조를 생성하고 그리고/또는 부분 재구성 계층구조의 레벨들을 감소시키기 위해 재결합을 수행할 수 있다. 시스템은 적절한 비트스트림들, 예컨대 부분 비트스트림들을 생성할 수 있어서, 비트스트림들이 IC에 로딩될 수 있게 하며, 그에 의해 IC 내에서, 특정된 부분 재구성 계층구조의 임의의 레벨을 포함하는 회로 설계를 물리적으로 구현한다.
설명의 목적들을 위해, 특정한 명칭이 본 명세서에서 개시된 다양한 본 발명의 개념들의 완전한 이해를 제공하도록 기재된다. 그러나, 본 명세서에서 사용된 용어는 단지 본 발명의 어레인지먼트들의 특정한 양상들을 설명하려는 목적을 위한 것일 뿐이며, 제한하는 것으로 의도되지 않는다.
본 명세서에서 정의된 바와 같이, 단수형들은, 문맥상 명확하게 달리 표시되지 않으면, 복수형들을 또한 포함하도록 의도된다.
본 명세서에서 정의된 바와 같이, 용어 "대략적으로"는 거의 맞거나 정확하고, 값 또는 양이 가깝지만, 정밀하지는 않다는 것을 의미한다. 예컨대, 용어 "대략적으로"는, 언급된 특성, 파라미터, 또는 값이 정확한 특성, 파라미터, 또는 값의 미리 결정된 양 내에 있다는 것을 의미할 수 있다.
본 명세서에서 정의된 바와 같이, 용어들 "적어도 하나", "하나 이상", 및 "및/또는"은 달리 명확하게 나타내지 않으면, 동작에서 연결형 및 분리형 둘 모두인 개방형(open-ended) 표현들이다. 예컨대, 표현들 "A, B 및 C 중 적어도 하나", "A, B, 또는 C 중 적어도 하나", "A, B, 및 C 중 하나 이상", "A, B, 또는 C 중 하나 이상", 및 "A, B, 및/또는 C" 각각은, A 단독, B 단독, C 단독, A와 B 모두, A와 C 모두, B와 C 모두, 또는 A, B 및 C 모두를 의미한다.
본 명세서에서 정의된 바와 같이, 용어 "자동으로"는 사용자 개입이 없는 것을 의미한다. 본 명세서에서 정의된 바와 같이, 용어 "사용자"는 사람을 의미한다.
본 명세서에서 정의된 바와 같이, 용어 "컴퓨터 판독가능 저장 매체"는, 명령 실행 시스템, 장치, 또는 디바이스에 의한 또는 그들과 관련하여 사용을 위한 프로그램 코드를 포함 또는 저장하는 저장 매체를 의미한다. 본 명세서에서 정의된 바와 같이, "컴퓨터 판독가능 저장 매체"는 일시적인 전파 신호 그 자체는 아니다. 컴퓨터 판독가능 저장 매체는 전자 저장 디바이스, 자기 저장 디바이스, 광학 저장 디바이스, 전자기 저장 디바이스, 반도체 저장 디바이스, 또는 전술한 것들의 임의의 적합한 조합일 수 있다(그러나 이에 제한되지 않음). 본 명세서에 설명된 바와 같이, 다양한 형태들의 메모리는 컴퓨터 판독가능 저장 매체들의 예들이다. 컴퓨터 판독가능 저장 매체의 더 특정한 예들의 비-포괄적인 리스트는, 휴대용 컴퓨터 디스켓, 하드 디스크, RAM, ROM(read-only memory), EPROM(erasable programmable read-only memory 또는플래시 메모리), EEPROM(electronically erasable programmable read-only memory), SRAM(static random access memory), 휴대용 CD-ROM(compact disc read-only memory), DVD(digital versatile disk), 메모리 스틱, 플로피 디스크 등을 포함할 수 있다.
본 명세서에서 정의된 바와 같이, 용어 "~라면"은 맥락에 의존하여, "때" 또는 "~시에" 또는 "~에 대한 응답으로" 또는 "~에 응답하여"를 의미한다. 따라서, 어구 "결정되면" 또는 "[언급된 조건 또는 이벤트]가 검출되면"은 문맥에 의존하여, "결정할 시에" 또는 "결정하는 것에 대한 응답으로" 또는 "[언급된 조건 또는 이벤트]를 검출할 시에" 또는 "[언급된 조건 또는 이벤트]를 검출하는 것에 대한 응답으로" 또는 "[언급된 조건 또는 이벤트]를 검출하는 것에 응답하여"를 의미하도록 해석될 수 있다.
본 명세서에서 정의된 바와 같이, 용어 "~에 응답하여" 및 위에서 설명된 바와 같은 유사한 언어, 예컨대 "~라면", "때", 또는 "~시에"는 액션 또는 이벤트에 쉽게 응답 또는 반응하는 것을 의미한다. 응답 또는 반응은 자동으로 수행된다. 따라서, 제2 액션이 제1 액션"에 응답하여" 수행되면, 제1 액션의 발생과 제2 액션의 발생 사이에 인과 관계가 존재한다. 용어 "에 응답하여"는 인과 관계를 표시한다.
본 명세서에서 정의된 바와 같이, 용어들 "일 실시예", "실시예", "하나 이상의 실시예들", "특정한 실시예들", 또는 유사한 언어는, 실시예와 관련하여 설명된 특정한 특징, 구조, 또는 특성이 본 개시내용 내에서 설명된 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서, 본 개시내용 전반에 걸친 어구들 "일 실시예에서", "실시예에서", "하나 이상의 실시예들에서", "특정한 실시예들에서", 및 유사 언어의 출현들은 모두 동일한 실시예를 지칭할 수 있지만, 반드시 그러할 필요는 없다. 용어들 "실시예" 및 "어레인지먼트"는 본 개시내용 내에서 상호교환가능하게 사용된다.
본 명세서에서 정의된 바와 같이, 용어 "프로세서"는 적어도 하나의 하드웨어 회로를 의미한다. 하드웨어 회로는 프로그램 코드에 포함된 명령들을 수행하도록 구성될 수 있다. 하드웨어 회로는 집적 회로일 수 있다. 프로세서의 예들은, CPU(central processing unit), 어레이 프로세서, 벡터 프로세서, DSP(digital signal processor), FPGA, PLA(programmable logic array), ASIC, 프로그래밍가능 로직 회로부, 및 제어기를 포함한다(그러나 이에 제한되지 않음).
본 명세서에서 정의된 바와 같이, 용어 "출력"은 물리적 메모리 엘리먼트들, 예컨대 디바이스들에 저장하는 것, 디스플레이 또는 다른 주변 출력 디바이스에 기입하는 것, 다른 시스템에 전송 또는 송신하는 것, 내보내는 것 등을 의미한다.
본 명세서에서 정의된 바와 같이, 용어 "실질적으로"는, 언급된 특성, 파라미터, 또는 값이 정확하게 달성될 필요가 있다는 것이 아니라, 예컨대 허용오차들, 측정 에러, 측정 정확도 제한들, 및 당업자들에게 알려져 있는 다른 인자들을 포함하는 편차들 또는 변동들은 특성이 제공하고자 했던 효과를 배제하지 않는 양들로 발생할 수 있다는 것을 의미한다.
용어들 제1, 제2 등은 다양한 엘리먼트들을 설명하기 위해 본 명세서에서 사용될 수 있다. 달리 언급되지 않거나 또는 문맥상 명확하게 달리 표시되지 않으면, 이들 용어들이 하나의 엘리먼트를 다른 엘리먼트와 구별하기 위해서만 사용되므로, 이들 엘리먼트들은 이들 용어들에 의해 제한되지 않아야 한다.
컴퓨터 프로그램 제품은, 프로세서로 하여금, 본 명세서에 설명된 본 발명의 어레인지먼트들의 양상들을 수행하게 하기 위한 컴퓨터 판독가능 프로그램 명령들을 갖고 있는 컴퓨터 판독가능 저장 매체(또는 매체들)을 포함할 수 있다. 본 개시내용 내에서, 용어 "프로그램 코드"는 용어 "컴퓨터 판독가능 프로그램 명령들"과 상호교환가능하게 사용된다. 본 명세서에 설명된 컴퓨터 판독가능 프로그램 명령들은 컴퓨터 판독가능 저장 매체로부터 개개의 컴퓨팅/프로세싱 디바이스들로 다운로딩되거나, 또는 네트워크, 예컨대 인터넷, LAN, WAN 및/또는 무선 네트워크를 통해 외부 컴퓨터 또는 외부 저장 디바이스로 다운로딩될 수 있다. 네트워크는 구리 송신 케이블들, 송신 광섬유들, 무선 송신, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 에지 서버들을 포함하는 에지 디바이스들을 포함할 수 있다. 각각의 컴퓨팅/프로세싱 디바이스 내의 네트워크 어댑터 카드 또는 네트워크 인터페이스는, 네트워크로부터 컴퓨터 판독가능 프로그램 명령들을 수신하고, 개개의 컴퓨팅/프로세싱 디바이스 내의 컴퓨터 판독가능 저장 매체로의 저장을 위해 컴퓨터 판독가능 프로그램 명령들을 포워딩한다.
본 명세서에 설명된 본 발명의 어레인지먼트들에 대한 동작들을 수행하기 위한 컴퓨터 판독가능 프로그램 명령들은, 어셈블러 명령들, ISA(instruction-set-architecture) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 또는 오브젝트 지향 프로그래밍 언어 및/또는 절차적 프로그래밍 언어들을 포함하는 하나 이상의 프로그래밍 언어들의 임의의 조합으로 기입된 소스 코드 또는 오브젝트 코드 중 어느 하나의 코드일 수 있다. 컴퓨터 판독가능 프로그램 명령들은 상태-세팅 데이터를 포함할 수 있다. 컴퓨터 판독가능 프로그램 명령들은, 사용자의 컴퓨터 상에서 전체적으로, 사용자의 컴퓨터 상에서 부분적으로, 독립형 소프트웨어 패키지로서, 사용자의 컴퓨터 상에서 부분적으로 그리고 원격 컴퓨터 상에서 부분적으로 또는 원격 컴퓨터 또는 서버 상에서 전체적으로 실행될 수 있다. 후자의 시나리오에서, 원격 컴퓨터는, LAN 또는 WAN을 포함하는 임의의 타입의 네트워크를 통해 사용자의 컴퓨터에 연결될 수 있거나, 또는 연결은 (예컨대, 인터넷 서비스 제공자를 사용하여 인터넷을 통해) 외부 컴퓨터에 대해 이루어질 수 있다. 일부 경우들에서, 예컨대 프로그래밍가능 로직 회로, FPGA, 또는 PLA를 포함하는 전자 회로는, 본 명세서에 설명된 본 발명의 어레인지먼트들의 양상들을 수행하기 위해 전자 회로를 개인화(personalize)하도록 컴퓨터 판독가능 프로그램 명령들의 상태 정보를 이용함으로써 컴퓨터 판독가능 프로그램 명령들을 실행할 수 있다.
본 발명의 어레인지먼트들의 특정한 양상들은, 방법들, 장치(시스템들), 및 컴퓨터 프로그램 제품들의 흐름도들 및/또는 블록 다이어그램들을 참조하여 본 명세서에서 설명된다. 흐름도들 및/또는 블록 다이어그램들의 각각의 블록, 및 흐름도들 및/또는 블록 다이어그램들 내의 블록들의 조합들이 컴퓨터 판독가능 프로그램 명령들, 예컨대 프로그램 코드에 의해 구현될 수 있다는 것을 이해할 것이다.
이들 컴퓨터 판독가능 프로그램 명령들은 머신을 생성하기 위해 범용 컴퓨터, 특수 목적 컴퓨터, 또는 다른 프로그래밍가능 데이터 프로세싱 장치의 프로세서에 제공될 수 있어서, 컴퓨터 또는 다른 프로그래밍가능 데이터 프로세싱 장치의 프로세서를 통해 실행되는 명령들은 흐름도 및/또는 블록 다이어그램 블록 또는 블록들에서 특정된 기능들/동작들을 구현하기 위한 수단을 생성한다. 특정한 방식으로 기능하도록 컴퓨터, 프로그래밍가능 데이터 프로세싱 장치, 및/또는 다른 디바이스들에게 지시할 수 있는 이들 컴퓨터 판독가능 프로그램 명령들은 또한 컴퓨터 판독가능 저장 매체에 저장될 수 있어서, 명령들이 저장된 컴퓨터 판독가능 저장 매체는 흐름도 및/또는 블록 다이어그램 블록 또는 블록들에서 특정된 동작들의 양상들을 구현하는 명령들을 포함한 제조 물품을 포함한다.
컴퓨터 판독가능 프로그램 명령들은 또한, 컴퓨터로 구현되는 프로세스를 생성하도록 일련의 동작들로 하여금 컴퓨터, 다른 프로그래밍가능 장치 또는 다른 디바이스 상에서 수행되게 하기 위해 컴퓨터, 다른 프로그래밍가능 데이터 프로세싱 장치, 또는 다른 디바이스 상에 로딩될 수 있어서, 컴퓨터, 다른 프로그래밍가능 장치, 또는 다른 디바이스 상에서 실행되는 명령들은 흐름도 및/또는 블록 다이어그램 블록 또는 블록들에서 특정된 기능들/동작들을 구현한다.
도면들 내의 흐름도 및 블록 다이어그램들은 본 발명의 어레인지먼트들의 다양한 양상들에 따른, 시스템들, 방법들, 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능, 및 동작을 예시한다. 이와 관련하여, 흐름도 또는 블록 다이어그램들 내의 각각의 블록은, 특정된 동작들을 구현하기 위한 하나 이상의 실행가능한 명령들을 포함하는 모듈, 세그먼트, 또는 명령들의 일부를 표현할 수 있다.
일부 대안적인 구현들에서, 블록들에서 언급된 동작들은 도면들에서 언급된 순서를 벗어나 발생될 수 있다. 예컨대, 수반된 기능에 의존하여, 연속적으로 도시된 2개의 블록들은 실질적으로 동시에 실행될 수 있거나 또는 블록들은 종종 역순으로 실행될 수 있다. 다른 예들에서, 블록들은 일반적으로 증가하는 숫자 순서로 수행될 수 있는 반면, 또 다른 예들에서, 하나 이상의 블록들은 다양한 순서로 수행될 수 있어서, 결과들은 바로 후속하지 않는 후속 또는 다른 블록들에 저장되고 이용된다. 블록 다이어그램들 및/또는 흐름도의 각각의 블록 및 블록 다이어그램들 및/또는 흐름도의 블록들의 조합들이 특정된 기능들 또는 동작들을 수행하거나 또는 특수 목적 하드웨어 및 컴퓨터 명령들의 조합들을 수행하는 특수 목적 하드웨어-기반 시스템들에 의해 구현될 수 있음을 또한 유의할 것이다.
아래의 청구항들에서 발견될 수 있는 모든 수단 또는 단계 더하기 기능 엘리먼트들의 대응하는 구조들, 재료들, 동작들, 및 등가물들은, 구체적으로 청구된 바와 같은 다른 청구된 엘리먼트들과 조합하여 기능을 수행하기 위한 임의의 구조, 재료, 또는 동작을 포함하도록 의도된다.
하나 이상의 실시예들에서, 방법은, 컴퓨터 하드웨어를 사용하여, 회로 설계의 제1 부분 재구성 모듈을 제1 부분 재구성 콘테이너로 변환하는 단계 - 회로 설계는 배치 및 배선(route)됨 -, 컴퓨터 하드웨어를 사용하여 제1 네트리스트를 제1 부분 재구성 콘테이너에 로딩하는 단계 - 제1 네트리스트는 초기에 비어있는 제1 복수의 부분 재구성 모듈들을 포함함 -, 컴퓨터 하드웨어를 사용하여, 제1 복수의 부분 재구성 모듈들 각각 내에 추가적인 네트리스트를 포함시키는 단계, 및 컴퓨터 하드웨어를 사용하여, 제1 부분 재구성 콘테이너를 구현하고, 제1 부분 재구성 콘테이너 내에서 제1 복수의 부분 재구성 모듈들을 구현하는 단계를 포함할 수 있다.
일 양상에서, 방법은, 제1 복수의 부분 재구성 모듈들 각각에 대해, 제1 부분 재구성 모듈 플로어플랜을 생성하는 단계를 포함할 수 있다. 각각의 제1 부분 재구성 모듈 플로어플랜은 제1 부분 재구성 콘테이너의 플로어플랜 내에 포함되며, 제1 복수의 부분 재구성 모듈들의 개개의 부분 재구성 모듈들을 구현하는 데 사용된다.
다른 양상에서, 제1 부분 재구성 콘테이너를 구현하는 것은, 제1 복수의 부분 재구성 모듈들의 각각의 부분 재구성 모듈의 회로 엘리먼트들이 각각의 개개의 제1 부분 재구성 모듈 플로어플랜에 의해 특정된 경계 내에 로케이팅되도록 제1 부분 재구성 콘테이너 및 제1 복수의 부분 재구성 모듈들 각각을 배치 및 배선시키는 것을 포함할 수 있다.
다른 양상에서, 변환하는 것은 제1 네트리스트를 로딩하기 전에 제1 부분 재구성 모듈의 콘텐츠들을 비우는 것을 포함할 수 있다.
다른 양상에서, 방법은, 제1 복수의 부분 재구성 모듈들 중 선택된 부분 재구성 모듈에 대한 연결의 파티션 핀을, 제1 부분 재구성 콘테이너의 경계로부터 제1 복수의 부분 재구성 모듈들 중 선택된 부분 재구성 모듈의 경계로 이동시키는 단계를 포함할 수 있다.
다른 양상에서, 방법은 제1 복수의 부분 재구성 모듈들에 대한 경계들을 특정하는 사용자 입력을 수신하는 단계를 포함할 수 있다.
다른 양상에서, 방법은, 제1 복수의 부분 재구성 모듈들 중 적어도 하나의 선택된 부분 재구성 모듈에 대해, 적어도 하나의 선택된 부분 재구성 모듈을 제2 부분 재구성 콘테이너로 변환하는 단계, 및 제2 부분 재구성 콘테이너 내에서 제2 복수의 부분 재구성 모듈들을 구현하는 단계를 포함할 수 있다.
하나 이상의 실시예들에서, 방법은, 프로그래밍가능 집적 회로의 정적 구역 내에서 제1 회로부를 구현하는 단계 - 제1 회로부는 제1 부분 비트스트림에 의해 특정됨 -, 프로그래밍가능 집적 회로의 부분 재구성 콘테이너 구역 내에서 제2 회로부를 구현하는 단계 - 제2 회로부는 제2 부분 비트스트림에 의해 특정됨 -, 및 부분 재구성 콘테이너 구역 내에 포함된 제1 부분 재구성 구역 내에서 제3 회로부를 그리고 부분 재구성 콘테이너 구역 내에 포함된 제2 부분 재구성 구역 내에서 제4 회로부를 구현하는 단계를 포함할 수 있으며, 여기서 제3 회로부는 제3 부분 비트스트림에 의해 특정되고, 제4 회로부는 제4 부분 비트스트림에 의해 특정된다.
일 양상에서, 방법은, 제1 회로부, 제2 회로부, 및 제4 회로부가 중단없이 계속 동작하는 동안 제1 부분 재구성 구역 내에서 제5 회로부를 구현하는 단계를 포함할 수 있다. 제5 회로부는 제3 회로부를 대체할 수 있다.
다른 양상에서, 제5 회로부는 제5 부분 비트스트림에 의해 특정된다.
다른 양상에서, 방법은, 제1 회로부 및 제2 회로부가 중단없이 계속 동작하는 동안, 제1 부분 재구성 구역 내에서 제5 회로부를 구현하고, 제2 부분 재구성 구역 내에서 제6 회로부를 구현하는 단계를 포함할 수 있다. 제5 회로부는 제3 회로부를 대체할 수 있고, 제6 회로부는 제4 회로부를 대체할 수 있다.
다른 양상에서, 제5 회로부는 제5 부분 비트스트림에 의해 특정될 수 있고, 제6 회로부는 제6 부분 비트스트림에 의해 특정될 수 있다.
다른 양상에서, 방법은, 프로그래밍가능 집적 회로의 부분 재구성 콘테이너 구역 내에서 제5 회로부를 구현하는 단계를 포함할 수 있으며, 여기서 제5 회로부는 제5 부분 비트스트림에 의해 특정된다. 방법은 또한, 부분 재구성 콘테이너 구역 내에서, 제3 부분 재구성 구역 내에서 제6 회로부를 구현하고, 제4 부분 재구성 구역 내에서 제7 회로부를 구현하는 단계를 포함할 수 있으며, 여기서 제6 회로부는 제6 부분 비트스트림에 의해 특정되고, 제7 회로부는 제7 부분 비트스트림에 의해 특정된다.
하나 이상의 실시예들에서, 집적 회로는, 외부 디바이스와의 인터페이스를 구현하도록 구성된 제1 프로그래밍가능 회로부를 포함하는 정적 구역, 및 제2 프로그래밍가능 회로부를 사용하여 정적 구역에 대한 인터페이스를 구현하는, 정적 구역에 커플링된 부분 재구성 콘테이너 구역을 포함할 수 있다. 부분 재구성 콘테이너 구역은 제1 복수의 부분 재구성 구역들을 포함할 수 있으며, 여기서 제1 복수의 부분 재구성 구역들 중 적어도 하나는 부분 재구성 콘테이너 구역에 커플링된다.
일 양상에서, 제1 복수의 부분 재구성 구역들 중 선택된 부분 재구성 구역 내의 회로부는 집적 회로의 동작 동안 변화되는 반면, 정적 구역 및 부분 재구성 콘테이너 구역은 중단없이 계속 동작한다.
다른 양상에서, 제1 복수의 부분 재구성 구역들 각각 내의 회로부는 집적 회로의 동작 동안 변화되는 반면, 정적 구역 및 부분 재구성 콘테이너 구역은 중단없이 계속 동작한다.
다른 양상에서, 제1 복수의 부분 재구성 구역들의 수는 사용자-특정된다.
다른 양상에서, 제1 복수의 부분 재구성 구역들의 경계들은 사용자-특정된다.
다른 양상에서, 부분 재구성 콘테이너 구역은 제2 복수의 부분 재구성 구역들을 포함하는 추가적인 부분 재구성 콘테이너 구역을 포함한다.
다른 양상에서, 제1 복수의 부분 재구성 구역들의 각각의 부분 재구성 구역 및 제2 복수의 부분 재구성 구역들의 각각의 부분 재구성 구역은 독립적으로 재구성가능하다.
본 명세서에서 제공된 본 발명의 어레인지먼트들의 설명은 예시의 목적들을 위한 것이며, 포괄적인 것으로 의도되거나 또는 개시된 형태 및 예들로 제한되지 않는다. 본 명세서에서 사용된 용어는 본 발명의 어레인지먼트들의 원리들, 시장에서 발견되는 기술들에 대한 실제적인 애플리케이션 또는 기술적 개선을 설명하고, 그리고/또는 당업자들이 본 명세서에 개시된 본 발명의 어레인지먼트들을 이해할 수 있도록 선정되었다. 변형들 및 변경들은 설명된 본 발명의 어레인지먼트들의 범위 및 사상을 벗어나지 않으면서 당업자들에게 자명할 수 있다. 따라서, 전술한 개시내용보다는, 그러한 특징들 및 구현들의 범위를 표시하는 다음의 청구항들에 대한 참조가 이루어져야 한다.

Claims (14)

  1. 방법으로서,
    컴퓨터 하드웨어를 사용하여, 회로 설계의 제1 부분 재구성 모듈을 제1 부분 재구성 콘테이너로 변환하는 단계 - 상기 회로 설계는 배치 및 배선(route)됨 -;
    상기 컴퓨터 하드웨어를 사용하여 제1 네트리스트(netlist)를 상기 제1 부분 재구성 콘테이너에 로딩하는 단계 - 상기 제1 네트리스트는 초기에 비어있는 제1 복수의 부분 재구성 모듈들을 포함함 -;
    상기 컴퓨터 하드웨어를 사용하여, 상기 제1 복수의 부분 재구성 모듈들 각각 내에 추가적인 네트리스트를 포함시키는 단계; 및
    상기 컴퓨터 하드웨어를 사용하여, 상기 제1 부분 재구성 콘테이너를 구현하고, 상기 제1 부분 재구성 콘테이너 내에서 상기 제1 복수의 부분 재구성 모듈들을 구현하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 제1 복수의 부분 재구성 모듈들 각각에 대해, 제1 부분 재구성 모듈 플로어플랜(floorplan)을 생성하는 단계를 더 포함하며,
    각각의 제1 부분 재구성 모듈 플로어플랜은 상기 제1 부분 재구성 콘테이너의 플로어플랜 내에 포함되며, 상기 제1 복수의 부분 재구성 모듈들의 개개의 부분 재구성 모듈들을 구현하는 데 사용되는, 방법.
  3. 제2항에 있어서,
    상기 제1 부분 재구성 콘테이너를 구현하는 것은, 상기 제1 복수의 부분 재구성 모듈들의 각각의 부분 재구성 모듈의 회로 엘리먼트들이 각각의 개개의 제1 부분 재구성 모듈 플로어플랜에 의해 특정된 경계 내에 로케이팅되도록 상기 제1 부분 재구성 콘테이너 및 상기 제1 복수의 부분 재구성 모듈들 각각을 배치 및 배선시키는 것을 포함하는, 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 변환하는 단계는, 상기 제1 네트리스트를 로딩하기 전에 상기 제1 부분 재구성 모듈의 콘텐츠들을 비우는 단계를 포함하는, 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 제1 복수의 부분 재구성 모듈들 중 선택된 부분 재구성 모듈에 대한 연결의 파티션 핀을, 상기 제1 부분 재구성 콘테이너의 경계로부터 상기 제1 복수의 부분 재구성 모듈들 중 선택된 부분 재구성 모듈의 경계로 이동시키는 단계를 더 포함하는, 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 제1 복수의 부분 재구성 모듈들에 대한 경계들을 특정하는 사용자 입력을 수신하는 단계를 더 포함하는, 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 제1 복수의 부분 재구성 모듈들 중 적어도 하나의 선택된 부분 재구성 모듈에 대해, 상기 적어도 하나의 선택된 부분 재구성 모듈을 제2 부분 재구성 콘테이너로 변환하는 단계, 및 상기 제2 부분 재구성 콘테이너 내에서 제2 복수의 부분 재구성 모듈들을 구현하는 단계를 더 포함하는, 방법.
  8. 집적 회로로서,
    외부 디바이스와의 인터페이스를 구현하도록 구성된 제1 프로그래밍가능 회로부를 포함하는 정적 구역; 및
    제2 프로그래밍가능 회로부를 사용하여 상기 정적 구역에 대한 인터페이스를 구현하는, 상기 정적 구역에 커플링된 부분 재구성 콘테이너 구역을 포함하며,
    상기 부분 재구성 콘테이너 구역은 제1 복수의 부분 재구성 구역들을 포함하고, 상기 제1 복수의 부분 재구성 구역들 중 적어도 하나는 상기 부분 재구성 콘테이너 구역에 커플링되는, 집적 회로.
  9. 제8항에 있어서,
    상기 제1 복수의 부분 재구성 구역들 중 선택된 부분 재구성 구역 내의 회로부는 상기 집적 회로의 동작 동안 변화되는 반면, 상기 정적 구역 및 상기 부분 재구성 콘테이너 구역은 중단없이 계속 동작하는, 집적 회로.
  10. 제8항 또는 제9항에 있어서,
    상기 제1 복수의 부분 재구성 구역들 각각 내의 회로부는 상기 집적 회로의 동작 동안 변화되는 반면, 상기 정적 구역 및 상기 부분 재구성 콘테이너 구역은 중단없이 계속 동작하는, 집적 회로.
  11. 제8항 내지 제10항 중 어느 한 항에 있어서,
    상기 제1 복수의 부분 재구성 구역들의 수는 사용자-특정되는, 집적 회로.
  12. 제8항 내지 제11항 중 어느 한 항에 있어서,
    상기 제1 복수의 부분 재구성 구역들의 경계들은 사용자-특정되는, 집적 회로.
  13. 제8항 내지 제12항 중 어느 한 항에 있어서,
    상기 부분 재구성 콘테이너 구역은 제2 복수의 부분 재구성 구역들을 포함하는 추가적인 부분 재구성 콘테이너 구역을 포함하는, 집적 회로.
  14. 제13항에 있어서,
    상기 제1 복수의 부분 재구성 구역들의 각각의 부분 재구성 구역 및 상기 제2 복수의 부분 재구성 구역들의 각각의 부분 재구성 구역은 독립적으로 재구성가능한, 집적 회로.
KR1020217004734A 2018-07-20 2019-07-19 프로그래밍가능 집적 회로들에 대한 계층적 부분 재구성 KR20210034625A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/041,602 US10608641B2 (en) 2018-07-20 2018-07-20 Hierarchical partial reconfiguration for programmable integrated circuits
US16/041,602 2018-07-20
PCT/US2019/042661 WO2020018942A1 (en) 2018-07-20 2019-07-19 Hierarchical partial reconfiguration for programmable integrated circuits

Publications (1)

Publication Number Publication Date
KR20210034625A true KR20210034625A (ko) 2021-03-30

Family

ID=67515200

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217004734A KR20210034625A (ko) 2018-07-20 2019-07-19 프로그래밍가능 집적 회로들에 대한 계층적 부분 재구성

Country Status (6)

Country Link
US (1) US10608641B2 (ko)
EP (1) EP3803675B1 (ko)
JP (1) JP7377852B2 (ko)
KR (1) KR20210034625A (ko)
CN (1) CN112437925A (ko)
WO (1) WO2020018942A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11443018B2 (en) * 2019-03-12 2022-09-13 Xilinx, Inc. Locking execution of cores to licensed programmable devices in a data center
US11294992B2 (en) * 2019-03-12 2022-04-05 Xilinx, Inc. Locking execution of cores to licensed programmable devices in a data center
US10990737B2 (en) * 2019-04-23 2021-04-27 Owl Cyber Defense Solutions, Llc Secure one-way network gateway
EP3985541A1 (de) * 2020-10-15 2022-04-20 Siemens Aktiengesellschaft Verfahren zur integritätsprüfung von nachladbaren funktionseinheiten
US11681846B1 (en) 2021-01-12 2023-06-20 Xilinx, Inc. Sub-FPGA level compilation platform with adjustable dynamic region for emulation/prototyping designs
US11886789B1 (en) 2021-07-07 2024-01-30 Xilinx, Inc. Block design containers for circuit design
US11720735B2 (en) 2021-08-20 2023-08-08 Xilinx, Inc. Flat shell for an accelerator card
US11610042B1 (en) 2021-09-28 2023-03-21 Xilinx, Inc. Scalable scribe regions for implementing user circuit designs in an integrated circuit using dynamic function exchange
US11861010B2 (en) 2022-02-14 2024-01-02 Xilinx, Inc. Extensible device hosted root of trust architecture for integrated circuits

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6507211B1 (en) 1999-07-29 2003-01-14 Xilinx, Inc. Programmable logic device capable of preserving user data during partial or complete reconfiguration
US6678646B1 (en) * 1999-12-14 2004-01-13 Atmel Corporation Method for implementing a physical design for a dynamically reconfigurable logic circuit
US6526557B1 (en) 2000-07-25 2003-02-25 Xilinx, Inc. Architecture and method for partially reconfiguring an FPGA
US6625794B1 (en) 2000-11-06 2003-09-23 Xilinx, Inc. Method and system for safe device reconfiguration
US6573748B1 (en) 2001-11-06 2003-06-03 Xilinx, Inc. Programmable logic device with output register for specifying memory space during reconfiguration
US6907595B2 (en) 2002-12-13 2005-06-14 Xilinx, Inc. Partial reconfiguration of a programmable logic device using an on-chip processor
US7599299B2 (en) 2004-04-30 2009-10-06 Xilinx, Inc. Dynamic reconfiguration of a system monitor (DRPORT)
US7218137B2 (en) 2004-04-30 2007-05-15 Xilinx, Inc. Reconfiguration port for dynamic reconfiguration
US7138820B2 (en) 2004-04-30 2006-11-21 Xilinx, Inc. System monitor in a programmable logic device
US7233532B2 (en) 2004-04-30 2007-06-19 Xilinx, Inc. Reconfiguration port for dynamic reconfiguration-system monitor interface
US7109750B2 (en) 2004-04-30 2006-09-19 Xilinx, Inc. Reconfiguration port for dynamic reconfiguration-controller
US7640526B1 (en) * 2005-09-12 2009-12-29 Xilinx, Inc. Modular partial reconfiguration
US7739092B1 (en) * 2006-01-31 2010-06-15 Xilinx, Inc. Fast hardware co-simulation reset using partial bitstreams
US7478357B1 (en) * 2006-08-14 2009-01-13 Xilinx, Inc. Versatile bus interface macro for dynamically reconfigurable designs
US8671377B2 (en) * 2011-03-03 2014-03-11 Altera Corporation Method and apparatus for placement and routing of partial reconfiguration modules
US8869087B2 (en) 2011-05-06 2014-10-21 Xcelemor, Inc. Computing system with data and control planes and method of operation thereof
US8476926B1 (en) * 2012-02-08 2013-07-02 Altera Corporation Method and apparatus for implementing periphery devices on a programmable circuit using partial reconfiguration
US8719750B1 (en) * 2012-11-12 2014-05-06 Xilinx, Inc. Placement and routing of a circuit design
US9218443B1 (en) 2014-11-12 2015-12-22 Xilinx, Inc. Heterogeneous multiprocessor program compilation targeting programmable integrated circuits
US9846660B2 (en) 2014-11-12 2017-12-19 Xilinx, Inc. Heterogeneous multiprocessor platform targeting programmable integrated circuits
US9613173B1 (en) 2015-10-01 2017-04-04 Xilinx, Inc. Interactive multi-step physical synthesis
US9590635B1 (en) * 2015-12-03 2017-03-07 Altera Corporation Partial reconfiguration of programmable devices
CN106886505A (zh) * 2017-01-20 2017-06-23 西南电子技术研究所(中国电子科技集团公司第十研究所) 多波形运行的局部动态可重构系统

Also Published As

Publication number Publication date
US10608641B2 (en) 2020-03-31
EP3803675B1 (en) 2022-11-02
JP2021530809A (ja) 2021-11-11
JP7377852B2 (ja) 2023-11-10
CN112437925A (zh) 2021-03-02
US20200028511A1 (en) 2020-01-23
EP3803675A1 (en) 2021-04-14
WO2020018942A1 (en) 2020-01-23

Similar Documents

Publication Publication Date Title
KR20210034625A (ko) 프로그래밍가능 집적 회로들에 대한 계층적 부분 재구성
US8819608B2 (en) Architectural physical synthesis
US8595674B2 (en) Architectural physical synthesis
US9864828B1 (en) Hardware acceleration device handoff for using programmable integrated circuits as hardware accelerators
US7117469B1 (en) Method of optimizing placement and routing of edge logic in padring layout design
US8689170B2 (en) Changing the location of a buffer bay in a netlist
US10621299B1 (en) Dynamic platform support in programmable integrated circuits
JP4411322B2 (ja) 数値解析モデルデータ生成プログラム、数値解析モデルデータ生成方法、および数値解析モデルデータ生成装置
CN115769217A (zh) 半导体电路设计和单元引脚布置
US10796058B1 (en) Partial reconfiguration of integrated circuits using shell representation of platform design
US10437946B1 (en) Using implemented core sources for simulation
US20170011139A1 (en) Physically-aware circuit design partitioning
US9292648B1 (en) Activity-driven capacitance reduction to reduce dynamic power consumption in an integrated circuit
US10031994B1 (en) Systems and methods for congestion and routability aware detailed placement
US10963613B1 (en) Partial reconfiguration of integrated circuits using shell representation of platform design with extended routing region
Du Nguyen et al. Synthesizing HDL to memristor technology: A generic framework
US10289775B1 (en) Systems and methods for assigning clock taps based on timing
US10586005B1 (en) Incremental synthesis for changes to a circuit design
US20210264081A1 (en) Methods of designing semiconductor devices, design systems performing the same and methods of manufacturing semiconductor devices using the same
US8938704B1 (en) Circuit module generation for programmable integrated circuits
US10839125B1 (en) Post-placement and post-routing physical synthesis for multi-die integrated circuits
US10242150B1 (en) Circuit design implementation using control-set based merging and module-based replication
US8875084B1 (en) Optimal spare latch selection for metal-only ECOs
US10740529B1 (en) Implementation of circuitry for radio frequency applications within integrated circuits
CN117610491A (zh) 一种芯片设计方法、装置、设备及计算机可读存储介质