KR102596637B1 - 상호작용형 다단계 물리적 합성 - Google Patents

상호작용형 다단계 물리적 합성 Download PDF

Info

Publication number
KR102596637B1
KR102596637B1 KR1020187012204A KR20187012204A KR102596637B1 KR 102596637 B1 KR102596637 B1 KR 102596637B1 KR 1020187012204 A KR1020187012204 A KR 1020187012204A KR 20187012204 A KR20187012204 A KR 20187012204A KR 102596637 B1 KR102596637 B1 KR 102596637B1
Authority
KR
South Korea
Prior art keywords
optimization
netlist
design
target
history file
Prior art date
Application number
KR1020187012204A
Other languages
English (en)
Other versions
KR20180058821A (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 KR20180058821A publication Critical patent/KR20180058821A/ko
Application granted granted Critical
Publication of KR102596637B1 publication Critical patent/KR102596637B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/347Physical level, e.g. placement or routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/392Floor-planning or layout, e.g. partitioning or placement
    • 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/39Circuit design at the physical level
    • G06F30/394Routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/398Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/06Power analysis or power optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing analysis or timing optimisation

Landscapes

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

Abstract

본 발명의 일실시예에 있어서, 프로세서로 구현된 방법이 회로 설계를 배치 및 라우팅하기 위해(102) 제공된다. 제 1 네트리스트가 회로 설계를 위해 제공된다. 제 1 배치된 설계를 생성하기 위해(110) 타겟 IC 상에 제 1 네트리스트(106)에 대한 배치가 수행된다(108). 제 1 배치된 설계 상에 최적화 세트가 수행된다. 최적화 세트는 최적화 이력 파일(116)에 기록된다(114). 제 1 네트리스트와는 상이한 제 2 네트리스트를 생성하기 위해 제 1 네트리스트 상에 최적화 이력 파일에서 지정된 하나 이상의 최적화가 수행된다(118/202). 제 1 배치된 설계와는 상이한 제 2 배치된 설계를 생성하기 위해(208) 타겟 IC 상에 제 2 네트리스트에 대한 배치가 수행된다(206). 배치 및 라우팅된 회로 설계를 생성하기 위해 제 2 배치된 설계의 네트가 라우팅된다(210).

Description

상호작용형 다단계 물리적 합성
본 개시는 일반적으로 프로그래밍가능 집적 회로에서 자원의 배치, 라우팅, 타이밍 클로저에 관한 것이다.
프로그래밍가능 논리 디바이스(Programmable logic device; PLD)는 사용자 구성가능 입력에 따라 디지털 논리 동작을 구현하는데 사용되는 집적 회로(integrated circuit; IC)이다. 예시의 PLD는 복합 프로그래밍가능 논리 디바이스(Complex Programmable Logic Device; CPLD) 및 필드 프로그래밍가능 게이트 어레이(Field Programmable Gate Array; FPGA)를 포함한다. CPLD는 종종 곱의 합(sum-of-product) 논리을 가진 프로그래밍가능(programmable logic array; PLA) 아키텍처를 기반으로하는 여러 기능 블록을 포함한다. 구성가능 상호접속 매트릭스는 기능 블록 간에 신호를 송신한다.
예시의 FPGA는 구성가능 논리 블록(configurable logic block; CLB)의 어레이 및 프로그래밍가능 입/출력 블록(input/output block; IOB)의 링 또는 열을 포함한다. CLB 및 IOB는 프로그래밍가능 상호접속 구조물(라우팅 자원)에 의해 상호접속된다. CLB, IOB 및 상호접속 구조물은 전형적으로, CLB, IOB 및 상호접속 구조물이 구성되는 방식을 정의하는 구성 데이터의 스트림(비트 스트림)을 내부 구성 메모리 셀에 로딩함으로써 프로그래밍된다. 구성 비트스트림은, 다른 유형의 메모리가 사용될 수도 있지만, 종래적으로 외부 집적 회로 메모리 EEPROM, EPROM, PROM 등과 같은 외부 메모리로부터 판독될 수있다. 개별 메모리 셀의 집합적인 상태가 FPGA의 기능을 결정한다. 특정 유형의 FPGA는 룩-업-테이블(look-up-table; LUT) 기반의 CLB를 사용한다. 구성 메모리는 CLB에 입력함으로써 제어되는 다수의 멀티플렉서에 입력 값을 제공한다.
ASIC 또는 FPGA와 같은 집적 회로에 대한 종래의 설계 프로세스는 회로 설계의 생성으로 시작된다. 회로 설계의 기능은 다양한 프로그래밍가능 언어(예를 들어, VHDL, ABEL 또는 Verilog) 또는 스케메틱 캡처 프로그램을 사용하여 나타내어질 수 있다. 설계는 논리적으로 합성되어 타겟 집적 회로 디바이스에 의해 지원되는 논리 네트워크 리스트("네트리스트")를 생성한다. 네트리스트는 타겟 디바이스(예를 들어, 타겟 프로그래밍가능 IC) 내에서 이용가능한 프리미티브 컴포넌트(primitive component)에 매핑된다.
논리적 합성에 후속하여, 네트리스트의 컴포넌트는 타겟 디바이스 내에서 구현을 위해 배치된다. 배치 동안에, 설계의 각 매핑된 컴포넌트는 대응하는 프리미티브 컴포넌트의 인스턴스가 기반을 둘 수 있는 칩 상의 물리적 위치에 할당된다. 배치자의 목적은 접속된 설계 객체들을 서로 물리적으로 가까운 곳에 배치하는 것이다. 이는 칩 상의 공간을 보존하고, 컴포넌트들 간의 소망하는 상호접속이 라우터에 의해 성공적으로 완료될 확률을 증가시킨다. 긴 상호접속 경로는 과도한 정전용량 및 저항과 연관되어 지연이 길어지는 결과를 초래하기 때문에, 접속된 컴포넌트들을 서로 가까이 배치하는 것은 일반적으로 회로의 성능을 향상시킨다.
설계의 컴포넌트들 간의 지정된 상호접속은 배치된 컴포넌트를 위한 타겟 디바이스 내에서 라우팅된다. 라우팅은 설계의 배치된 컴포넌트의 핀들 간에 신호를 전도하는데 사용될 물리적 배선 자원을 지정한다. 설계에서 지정된 각 접속에 대해, 라우팅은 접속을 완료하는데 필요한 배선을 할당해야 한다. 여기에 사용된 바와 같이, 하나의 컴포넌트의 출력 핀을 또다른 컴포넌트의 입력 핀에 접속하는데 있어서 와이어 자원의 선택 및 할당은 신호 라우팅이라고 한다. 신호가 주어진 영역 내의 배선 자원의 대부분 또는 모두를 사용하여 라우팅되었을 때, 영역은 일반적으로 혼잡하다고 하고, 이는 영역 내의 남아있는 배선 자원에 경쟁을 발생시키거나 영역 내의 추가의 신호 라우팅을 어렵거나 불가능하게 한다. 배치 및 라우팅 프로시저는 종종 설계의 타이밍, 전력 소비, 사용되는 자원의 라우팅 및 이들의 조합의 최적화를 포함한다. 일부 경우에, 설계의 타이밍 기반 추정도 제공된다.
다양한 예시적인 구현은 회로 설계의 논리적 합성, 배치, 최적화 및 라우팅을 위한 효율적인 방법에 관한 것이다. 본 발명의 일실시예에 있어서, 회로 설계를 위해 제 1 네트리스트가 생성된다. 제 1 배치된 설계를 생성하기 위해 제 1 네트리스트의 배치가 타겟 IC 상의 구현을 위해 결정된다. 제 1 배치된 설계 상에 최적화 세트가 수행된다. 최적화 세트의 각 최적화에 대해, 최적화는 최적화 이력 파일에서 기록된다. 제 1 네트리스트와는 상이한 제 2 네트리스트를 생성하기 위해 제 1 네트리스트 상에 최적화 이력 파일에서 지정된 하나 이상의 최적화가 수행된다. 제 1 배치된 설계와는 상이한 제 2 배치된 설계를 생성하기 위해 제 2 네트리스트의 배치가 타겟 IC 상의 구현을 위해 결정된다. 배치 및 라우팅된 회로 설계를 생성하기 위해 제 2 배치된 설계의 네트가 라우팅된다.
옵션적으로, 제 2 네트리스트의 배치를 결정하기 전의 하나 이상의 최적화는, 제 1 네트리스트의 배치 및 제 1 배치된 설계에서의 네트의 라우팅을 수행하는데 요구되는 프로세싱 자원에 비례하여, 제 2 네트리스트의 배치 및 제 2 배치된 설계에서의 네트의 라우팅를 수행하는데 요구되는 프로세싱 자원를 감소시킬 수 있다.
옵션적으로, 제 1 네트리스트에 대해 최적화 이력 파일에서 지정된 최적화를 수행하는 것은, 최적화 이력 파일 내의 높은 우선순위의 최적화 세트 및 최적화 이력 파일 내의 낮은 우선순위 최적화 세트를 결정하는 것, 및 높은 우선순위 최적화 세트에 포함되는 최적화들만 수행하는 것을 포함한다.
옵션적으로, 방법은 제 2 네트리스트의 배치를 후속하는 것, 및 제 2 배치된 네트리스트 상에 낮은 우선순위의 최적화 세트를 수행하는 것을 더 포함할 수 있다.
옵션적으로, 최적화 이력 파일은 또한 하나 이상의 타이밍 임계 회로 모듈을 식별하고, 타겟 IC 상의 제 2 네트리스트의 배치를 결정하는 것은 제 2 네트리스트의 다른 회로 모듈을 배치하기 전에 하나 이상의 타이밍 임계 회로 모듈을 배치한다.
옵션적으로, 방법은 최적화 이력 파일에 기록된 최적화에 대한 제 2 네트리스트에서 회로 모듈을 식별하는 것, 및 식별된 모듈 인스턴스 상에 최적화를 수행하는 것을 더 포함할 수 있다.
옵션적으로, 최적화 이력 파일에서 지정된 하나 이상의 최적화는 디지털 신호 프로세서(digital signal processor; DSP) 레지스터 최적화, BRAM 레지스터 최적화, 시프트 레지스터 최적화, 또는 이들의 조합을 포함할 수 있다.
옵션적으로, 최적화 이력 파일에서 지정된 하나 이상의 최적화는 회로 설계의 회로 모듈을 복수의 서브모듈로 분해하는 것을 더 포함할 수 있고, 제 2 네트리스트의 배치를 결정하는 것은 복수의 서브모듈 각각의 배치를 독립적으로 결정할 수 있다.
옵션적으로, 최적화 이력 파일에서 지정된 하나 이상의 최적화는 강제된 네트 복제, 팬-아웃 최적화, 교체(replacement) 최적화 또는 이들의 조합을 포함할 수 있다.
옵션적으로, 최적화 이력 파일에서 지정된 하나 이상의 최적화는 재배선/룩-업 테이블 최적화, 리타이밍(retiming) 최적화, 임계 핀 최적화, 및/또는 홀드-시간 고정 최적화, 또는 이들의 조합을 포함할 수 있다.
옵션적으로, 방법은 배치 및 라우팅된 회로 설계를 구현하기 위해 타겟 IC의 프로그래밍가능 자원을 프로그래밍하도록 구성된 구성 데이터 세트를 생성하는 것, 및 IC 표적에 결합된 비휘발성 메모리에 구성 데이터 세트를 저장하는 것을 포함할 수 있고, 타겟 IC는 전원 인가시, 비휘발성 메모리 내의 구성 데이터 세트로 타겟 IC의 프로그래밍가능 자원을 프래그래밍하도록 구성된다.
옵션적으로, 최적화 이력 파일은 툴 커맨드 언어 스크립트(tool command language script)에서 최적화 세트를 지정한다.
또한 회로 설계의 논리적 합성, 배치, 최적화 및 라우팅을 위한 시스템이 개시된다. 예시적인 구현에서, 시스템은 프로세서 및 프로세서에 결합된 메모리 어레인지먼트(memory arrangement)를 포함한다. 메모리 어레인지먼트는 명령어들로 구성되고, 이 명령어들은 프로세서에 의해 실행될 때, 프로세서로 하여금 메모리에 저장된 회로 설계를 위한 제 1 네트리스트를 생성하고, 제 1 배치된 설계(placed design)를 생성하기 위해 타겟 IC 상에 제 1 네트리스트의 배치를 결정하게 한다. 명령어들은 또한 프로세서로 하여금 제 1 배치된 설계 상에 최적화 세트를 수행하게 한다. 프로세서는 또한 최적화 이력 파일에 상기 최적화 각각을 기록한다. 명령어들은 또한 프로세서로 하여금 제 2 배치된 설계를 생성하기 위해 타겟 IC 상에 제 2 네트리스트의 배치를 결정하게 한다. 제 2 배치된 설계는 제 1 배치된 설계와는 상이한다. 배치 및 라우팅된 회로 설계를 생성하기 위해 제 2 배치된 설계의 네트가 라우팅된다.
옵션적으로, 제 2 네트리스트의 배치를 결정하기 전의 하나 이상의 최적화를 수행하는 것은, 제 1 네트리스트의 배치 및 제 1 배치된 설계에서의 네트의 라우팅을 수행하는데 요구되는 프로세싱 자원에 비해, 제 2 네트리스트의 배치 및 제 2 배치된 설계에서의 네트의 라우팅를 수행하는데 요구되는 프로세싱 자원를 감소시킬 수 있다.
옵션적으로, 제 1 네트리스트에 대해 최적화 이력 파일에서 지정된 최적화를 수행하는데 있어서 , 프로세서는 최적화 이력 파일에서보다 높은 우선 순위의 최적화 세트 및 최적화 이력 파일에서보다 낮은 우선 순위의 최적화 세트를 결정할 수 있다. 프로세서는 또한 높은 우선순위의 최적화 세트에 포함된 최적화만을 수행할 수 있고, 명령어들은 또한, 프로세서로 하여금 제 2 네트리스트의 배치에 후속한 제 2 배치된 네트리스트 상에 낮은 우선순위의 최적화 세트를 수행하게 할 수 있다.
옵션적으로, 최적화 이력 파일은 또한, 하나 이상의 타이밍 임계 회로 모듈을 식별할 수 있다. 타겟 IC 상에 상기 제 2 네트리스트의 배치를 결정하는 것에서, 프로세서는 제 2 네트리스트의 다른 회로 모듈을 배치하기 전에 하나 이상의 타이밍 임계 회로 모듈을 배치할 수 있다.
옵션적으로, 명령어들은 또한, 프로세서로 하여금 최적화 이력 파일에 기록된 최적화를 위해 제 2 네트리스트에서 모듈 인스턴스를 식별하게 하고 식별된 모듈 인스턴스 상에 최적화를 수행하게 할 수 있다.
옵션적으로, 프로세서에 의해 수행되는 하나 이상의 최적화는 팬-아웃 최적화, 임계 셀 최적화, 강제된 네트 복제, 교체 최적화, DSP 레지스터 최적화, BRAM 레지스터 최적화, 시프트 레지스터 최적화, 재배선/룩-업 테이블 최적화, 리타이밍 최적화, 임계 핀 최적화, 홀드-시간 고정 최적화 또는 이들의 조합을 포함할 수 있다.
옵션적으로, 최적화 이력 파일은 툴 커맨드 언어 스크립트에서 최적화 세트를 지정한다.
옵션적으로, 시스템은 타겟 IC를 더 포함한다. 명령어들은 또한, 프로세서로 하여금 배치 및 라우팅된 회로 설계를 구현하기 위해 타겟 IC의 프로그래밍가능 자원을 프로그래밍하도록 구성된 구성 데이터 세트를 생성하게 할 수 있다.
다양한 다른 실시예들이 상세한 설명 및 청구 범위에 설명되어 있음을 인지할 것이다.
본 발명의 다양한 양상 및 이점은 도면을 참조하여 다음의 상세한 설명의 검토시에 명백해질 것이다.
도 1은 하나 이상의 구현들과 일치하는, 회로 설계의 초기 배치 및 물리적 합성 최적화를 위한 예시적인 프로세스의 흐름도를 나타낸다.
도 2는 하나 이상의 구현들과 일치하는, 회로 설계의 최적화-인지(optimization-aware) 배치 및 라우팅를 위한 예시적인 프로세스의 흐름도를 나타낸다.
도 3은 하나 이상의 구현들과 일치하는, 회로 설계의 최적화-인지 배치 및 라우팅를 위한 또다른 예시적인 프로세스의 흐름도를 나타낸다.
도 4는 본 발명의 몇몇 실시예에 따라 논리적 합성, 물리적 합성 최적화, 배치 및 라우팅을 수행하도록 구성될 수 있은 컴퓨팅 어레인지먼트의 블록도를 나타낸다.
도 5는 본 발명의 다양한 실시예에 따른 배치 및 라우팅을 위한 타겟 디바이스로서 사용될 수 있는, 프로그래밍가능 집적 회로의 블록도를 나타낸다.
회로 설계의 라우팅에 있어서, 설계의 타이밍 요건을 충족시키는 라우팅 솔루션이 발견되기 전에 다수의 상이한 루트들이 테스트될 수 있다. 라우팅 시간은 최적화되지 않은 배치로 인해 길어질 수 있다. 현재의 배치 및 라우팅 기술에서, 배치 후에 물리적 합성 최적화가 수행되고 최적화된 설계의 라우팅이 후속된다. 물리적 합성 최적화는 예를 들어 타이밍, 노이즈 마진, 다이 면적 및/또는 전력 사용을 개선하기 위해 수행될 수 있다. 물리적 합성 최적화는 회로 설계의 물리적 요소를, 설계 요구 사항을 충족시키는, 상이하지만 논리적으로는 동일한 물리적 요소로 변환한다.
물리적 합성 최적화 동안 회로 설계에 변경이 이루어지기 때문에 배치는 수정된 회로 설계에 더 이상 적합하지 않을 수 있다. 물리적 합성 최적화는 배치 이후에 수행되기 때문에 배치는 최적화로 인한 변경을 고려 하지 않는다. 그 결과, 라우팅 소프트웨어는 회로 모듈의 배치를 수정하지 않고 신호의 라우팅을 통해 타이밍 요건을 충족시키기 위해 신호를 라우팅 및 리라우팅(rerouting)하는 많은 양의 컴퓨팅 자원(예를 들어, 프로세싱 시간 및/또는 프로세서 회로)을 낭비할 수 있다.
추가적으로, 혼잡으로 인해, 일부 최적화가 수행되면 유효한 라우팅 솔루션을 결정하는 것이 가능하지 않을 수 있다. 예를 들어, 일부 프로세스는 최적화를 구현하고 라우팅 솔루션이 가능한지를 추정하기 위해 변경을 평가할 수 있다. 라우팅 솔루션이 불가능한 것으로 추정되면, 변경은 되돌리기(undo)된다. 그렇지 않으면, 변경은 커밋(commit)되고 프로세스는 추가의 최적화를 계속할 수 있다. 일부 최적화를 수행할 수 없기 때문에, 배치 및 라우팅된 회로 설계의 효율/성능(예를 들어, 다이 면적, 전력 소비 또는 동작 주파수) 이 제한될 수 있다.
배치 이전에 물리적 합성 최적화를 수행함으로써 상기 언급된 한계들을 극복한 방법 및 시스템이 개시된다. 예시적인 구현에서, 회로 설계를 위해 제 1 네트리스트가 생성된다. 초기의 일시적인 배치가 회로 설계의 제 1 네트리스트를 위해 결정된다. 초기 배치를 사용하여, 배치된 네트리스트에 대해 물리적 합성 최적화가 수행되고 최적화 이력 파일에 기록된다. 초기 배치는 단지 일시적이기 때문에, 라우팅의 실행가능성을 추정하기 위해 최적화가 평가될 필요는 없다. 그 후, 초기 배치를 위해 신호를 라우팅하려고 시도하는 것보다는, 기록된 물리적 합성 최적화가 제 1 배치되지 않은 네트리스트 상에 수행되어 제 2 네트리스트를 생성한다. 그 후, 제 2 네트리스트는 최적화를 고려한 개선된 배치를 제공하도록 배치된다. 참조의 용이함을 위해, 최적화 후에 수행되는 배치는 최적화-인지(optimization-aware) 배치라고 할 수 있다. 최적화-인지 배치 후에, 배치 및 라우팅된 회로 설계를 생성하기 위해 설계의 네트가 라우팅된다.
개선된 배치의 결과, 배치 후에 최적화 변경을 구현한 이전 접근법에 비해 더 적은 라우팅 시도로 타이밍 요건을 충족시키는 신호 라이팅이 결정될 수 있다. 추가적으로, 라우팅 솔루션은 더 적은 컴퓨팅 자원(예를 들어, 프로세싱 시간, 메모리, 및/또는 프로세서 회로의 수)을 이용하여 결정될 수 있다.
배치 이전에 최적화를 수행하면 종래의 배치후(post-placement) 최적화를 사용하여 가능하지 않은 최적화를 수행하게 할 수도 있다. 예를 들어, 이전에 설명된 바와 같이, 이전의 접근법은 평가가 라우팅 솔루션이 가능하지 않을 수 있다고 추정하면 최적화 변경을 되돌리기할 수 있다. 그러나, 최적화 후에 배치가 수행되면, 제위치의 최적화 변경으로 라우팅을 용이하게 하도록 요소가 배치될 수 있다. 이러한 방식으로, 수행될 수 있는 가능한 최적화의 수가 증가된다. 결과적으로, 배치후 최적화 접근법에 비해 다양한 성능 메트릭(예를 들어, 다이 면적, 전력 소비 및/또는 동작 주파수)이 개선될 수 있다. 구현된 설계에서 달성되는 개선의 유형은 수행되는 최적화의 유형에 의존할 것이다. 예를 들어, 최적화 기술이 전력-관련 향상에 포커스를 두면 전력을 적게 소비하는 배치 및 라우트된 설계가 달성될 수 있다. 대조적으로, 최적화 기술이 타이밍 및 동작 주파수에 포커스를 두면, 더 높은 클록 주파수에서 동작하는 배치 및 라우팅된 설계가 달성될 수 있다.
이제 도면으로 돌아가서, 도 1은 회로 설계의 초기 배치 및 물리적 합성 최적화를 위한 예시적인 프로세스의 흐름도를 나타낸다. 블록(104)에서, 논리적 합성은 회로 설계(102)를 위한 제 1 네트리스트(106)(네트리스트 1.0)를 생성하기 위해 수행된다. 네트리스트(106)는 타겟 프로그래밍가능 IC 상에 이용가능한 프리미티브 컴포넌트로 회로 설계의 요소를 맵핑한다. 블록(108)에서, 제 1 네트리스트(106)는 제 1 배치된 설계(110)를 생성하기 위해 프로그래밍가능 IC 상의 구현을 위해 배치된다. 블록(112)에서, 물리적 합성 최적화는 제 1 배치된 설계 상에 수행된다.
물리적 합성 최적화는 예를 들어 팬-아웃 최적화, 임계 셀(critical cell) 최적화, 강제된 네트 복제, 교체 최적화, DSP 레지스터 최적화, BRAM 레지스터 최적화, 시프트 레지스터 최적화, 재배선/룩-업 테이블 최적화, 리타이밍 최적화, 임계 핀 최적화 및/또는 홀드-시간 고정 최적화를 포함한 다양한 최적화 기술을 포함할 수 있다. 팬아웃 최적화는 많은 수의 부하를 구동하는 대형 팬아웃 네트를 위해 드라이버를 복제한다. 일부 구현에서, 팬아웃 네트의 최적화는 근접성에 기반한 네트에 의해 구동된 부하를 클러스터(cluster)할 수 있다. 네트 드라이버 회로는 각 부하 클러스터를 구동하기 위해 복제 및 삽입된다. 임계 셀 최적화로 알려진, 이와 유사한 최적화는 타이밍 요구 사항을 충족시키지 않는 신호 경로의 부하(들)에 더 가까운 드라이버 회로를 추가한다. 예를 들어, 특정 셀 상의 부하가 떨어져 배치되면 부하 클러스터에 더 가까이 배치된 신규 드라이버로 셀은 복제될 수 있다. 높은 팬아웃이 이 최적화를 발생시키기 위한 요건은 아니다. 강제된 네트 복제는 타이밍 슬래(timing slack)과 관계없이 복제될 타이밍-제약된 경로 내의 네트 드라이버에 포커스를 둔다.
레지스터 최적화는 임계 경로의 타이밍을 개선하기 위해 레지스터를 이동시킬 수 있다. 예를 들어, DSP 레지스터 최적화는, 이동이 임계 경로 상의 지연을 개선한다면, 타겟 프로그래밍가능 IC 상에서 DSP 셀과 또다른 물리적 요소(예를 들어, 또다른 DSP 셀) 사이에 레지스터를 이동시킬 수 있다. 예를 들어, 제 1 DSP는 제 2 DSP의 입력에 결합된 출력을 갖는 레지스터를 포함할 수 있다. 레지스터와 제 2 DSP 사이의 경로의 타이밍이 임계(critical)이면, 레지스터는 제 2 DSP에 가깝거나, 심지어 제 2 DSP 내부로 이동될 수 있다(사용되지 않는 레지스터가 이용가능하다면). BRAM 레지스터 최적화로 알려진, 이와 유사한 최적화는 타겟 프로그래밍가능 IC 상에서 BRAM 셀과 다른 요소 사이에 레지스터를 이동할 수 있다. 시프트 레지스터 최적화는 시프트 레지스터의 시작 또는 끝에서 (예를 들어, 시프트 레지스터의 입력에 접속된 소스 또는 시프트 레지스터의 출력에 접속된 부하에 더 가까운) 다른 위치로 레지스터를 다시 위치시킨다.
리타이밍(retiming)이라 하는 또다른 최적화는 조합 논리를 가로질러 레지스터를 이동시킴으로써 임계 경로의 지연을 개선한다. 교체 최적화는 특정 파라미터를 최적화하도록 구성된 논리적으로 등가인 셀로 임계 셀을 교체할 수 있다. 예를 들어, 회로 설계에서 디폴트 고속 푸리에 변환(Fast-Fourier-Transform; FFT)은 예를 들어 더 높은 프로세싱 속도, 더 작은 풋프린트(footprint) 또는 감소된 전력 소모로 최적화된 FFT로 교체될 수 있다. 재배선 최적화는 LUT 상의 접속을 스왑(swap)하여 임계 신호를 위한 로직 레벨의 수를 감소시킨다. LUT 방정식은 설계 기능을 유지하기 위해 수정된다. 홀드-고정 최적화는 홀드 임계 경로 상의 지연을 증가시킴으로써 높은 홀드 위반의 슬랙을 개선하려고 시도한다.
블록(114)에서, 물리적 합성 최적화는 최적화 이력 파일(116)에 기록된다. 일부 구현에 있어서, 최적화는 실행될 때 최적화를 수행하는 툴 커맨드 언어(tool command language; TCL)로서 최적화 이력 파일에서 지정될 수 있다. 이전에 설명된 바와 같이, 물리적 합성 최적화의 결과로서 수행되는 변경으로 인해, 제 1 배치는 최적이 아닐 수 있다. 블록(118)에서, 최적화 이력 파일(116)은 최적화-인지 배치 및 라우팅을 수행하기 위해 사용된다. 일부 구현에 있어서, 타이밍 분석(예를 들어, 각 신호를 위한 최단 경로 타이밍)에 의해 획득된 데이터가 최적화 이력 파일에 또한 저장될 수 있다. 데이터는 그 타이밍이 제 1 배치와 임계였던 모듈 인스턴스를 식별하기 위해 사용될 수 있다. 최적화-인지 배치가 수행될 때, 블록(118)에서 식별된 모듈 인스턴스는 타이밍 임계 경로에 대한 라우팅 거리를 단축시키도록 배치될 수 있다.
도 2는 하나 이상의 구현들과 일치하는, 회로 설계의 최적화-인지 배치 및 라우팅를 위한 예시적인 프로세스의 흐름도를 나타낸다. 블록(202)에서, 최적화 이력 파일(116) 상에 표시된 물리적 합성 최적화는 제 1 배치되지 않은 네트리스트(106) 상에 수행되어 제 2 네트리스트(204)를 생성한다.
블록(206)에서, 제 2 네트리스트(204)는 제 2 배치된 설계(208)를 생성하기 위해 프로그래밍가능 IC 상의 구현을 위해 배치된다. 블록(208)에서 배치 전에 최적화가 수행되기 때문에, 배치는 최적화 변경을 고려하고 제 1 배치된 설계(110)와 비교하여 (예를 들어, 공간, 타이밍 또는 동작 속도에 대해) 개선된 배치를 제공할 수 있다. 일부 구현에 있어서, 블록(208)에서 수행된 배치는 물리적 최적화 프로세스 동안 결정된 성능 추정을 이용할 수 있다. 예를 들어, 물리적 합성 프로세스는 타이밍 임계 회로를 최적화를 위한 타겟으로서 식별할 수 있다. 타이밍 임계 회로는 낮은 또는 네거티브 타이밍 슬랙을 갖는 회로이다. 블록(208)에서 수행된 배치는 타이밍 임계 회로를 먼저 배치함으로써 프로그래밍가능 자원에 대해 비임계 회로와 경쟁하지 않고 타이밍 임계 회로는 함께 가깝게 배치될 수 있다.
블록(210)에서, 회로 설계의 네트는 배치된 설계의 요소들 사이에서 라우팅된다. 신호는 상이한 특성에 대해 라우팅을 최적화하려고 시도하는 다수의 상이한 라우팅 알고리즘을 이용하여 라우팅될 수 있다. 하나의 라우팅 알고리즘에서, 신호는 각 신호의 타이밍 지연 특성을 최소화하도록 라우팅된다. 이는 지연-모드 라우팅이라고 한다. 또다른 라우팅 알고리즘에서, 신호는 사용되는 라우팅 자원의 수를 최소화하도록 라우팅된다. 이는 자원-모드 라우팅이라고 한다. 일반적으로, 지연-모드 최적화는 자원-모드 최적화보다 긴 런타임을 요구한다. 지연-모드 최적화에서, 전파 지연 파라미터를 결정하기 위해 다른 가능한 경로들이 분석되거나 시뮬레이트된다. 라우팅 알고리즘은 원래의 타이밍 지연보다 작거나 동등한 타이밍 지연을 갖는 솔루션을 검색한다. 그러나, 솔루션이 발견되면 라우팅 알고리즘은 신호의 타이밍을 더욱 최적화하기 위해 시도하는 프로세싱을 낭비하지 않는다. 일부 구현에 있어서, 임계 신호는 지연-모드 라우팅을 사용하여 라우팅될 수 있고 비-임계 신호는 자원-모드 라우팅을 사용하여 라우팅될 수 있다. 블록(212)에서, 배치 및 라우팅된 회로 설계가 저장된다.
회로 설계는 개발 프로세스 전반에 걸쳐 여러 번 수정될 수 있다. 전체 설계의 배치 및 라우팅을 수행하는데 많은 시간이 요구되기 때문에, 설계의 작은 부분만 변경된 경우 물리적 합성 최적화, 배치 및 라우팅의 전체 프로세스를 반복하지 않는 것이 바람하다. 일부 구현에 있어서, 이전의 회로 설계의 배치 및 라우팅에 기록된 최적화 히스토리 파일은 회로 설계의 이후 버전에 대한 배치전(pre-placement) 최적화를 안내하기 위해 재사용될 수 있고, 이에 따라 프로세스는 도 1에서 수행된 초기 배치 및 최적화를 스킵할 수 있다.
일부 구현에 있어서, 최적화 이력 파일 내의 각 최적화는 최적화 유형 및 최적화에 의해 수정된 모듈 인스턴스(들)의 이름을 지정할 수 있다. 일부 시나리오에서, 블록(202)에서 수행되는 최적화 프로세스는 최적화 이력 파일에 표시된 모듈 인스턴스 이름에 기초하여 수정될 제 2 네트리스트(204) 내의 모듈을 식별할 수 있다. 그러나, 일부 예에서, 제 2 네트리스트 (204) 내의 모듈 인스턴스 이름은 모듈 이력 파일에 표시된 모듈 인스턴스 이름과는 상이할 수 있다. 예를 들어, 최적화 이력 파일이 회로 설계의 이후 버전에 대한 네트리스트의 배치전 최적화를 안내하기 위해 재사용될 때, 네트리스트 내의 모듈 인스턴스의 이름은 최적화 이력 파일 내의 모듈 인스턴스의 이름과 매칭되지 않을 수 있다. 예를 들어, 설계자에 의해 모듈이 업데이트되면 설계 소프트웨어는 모듈 인스턴스의 이름을 약간 변경시킬 수 있다. 기록된 최적화에 대한 모듈 인스턴스가 이름에 기초하여 식별될 수 없다면, 예를 들어 인스턴스의 이름, 인스턴스의 유형(LUT5, FDRE, DSP48E2 등), 접속된 네트의 이름에 기초한 보다 복잡한 서명-기반 접근법이 사용될 수 있다.
일부 구현에서, 프로세스는 배치를 반복하기 전에 최적화 이력 파일에서 최적화의 서브세트만을 수행할 수 있다. 도 3은 하나 이상의 구현들과 일치하는, 회로 설계의 최적화-인지 배치 및 라우팅를 위한 또다른 예시적인 프로세스의 흐름도를 나타낸다. 이 예에서, 물리적 합성 최적화의 성능은 배치전 스테이지와 배치후 스테이지로 분할된다. 물리적 합성 최적화를 배치전 스테이지 및 배치후 스테이지로 분할하여 네트리스트의 배치는 가장 중요한 특정 메트릭(예를 들어, 타이밍/클럭 속도, 다이 공간 또는 전력 소비)를 우선순위화하도록 수행될 수 있다. 예를 들어, 프로세싱 속도가 가장 중요하고, 타이밍 최적화가 최적화 이력 파일 내에서 높은 우선순위로서 표시될 수 있다. 다른 비-타이밍 최적화는 최적화 이력 파일 내에서 낮은 우선순위로서 표시될 수 있다.
블록 (302)에서, 최적화 이력 파일(116)에 표시된 높은 우선순위의 물리적 합성 최적화 세트가 제 1 네트리스트(106) 상에 수행되어 제 2 네트리스트(304)를 생성한다. 블록(306)에서, 제 2 네트리스트(304)는 제 2 배치된 설계(308)를 생성하기 위해 프로그래밍가능 IC 상의 구현을 위해 배치된다. 배치에 후속하여, 블록(310)에서 최적화 이력 파일에 표시된 낮은 우선순위의 물리적 합성 최적화 세트가 수행된다. 일부 구현에 있어서, 블록 (312)에서 최적화 이력 파일(116)에 표시되지 않은 신규 물리적 최적화가 수행될 수 있다. 수행된 모든 신규 최적화가 최적화 이력 파일에 추가되어 업데이트된 최적화 이력 파일을 생성한다(314). 블록(316)에서, 신호 네트는 제 2 배치된 설계를 위해 라우팅된다. 블록(318)에서, 배치 및 라우팅된 회로 설계가 저장된다.
도 4는 여기에 설명되는 개시된 논리적 합성, 물리적 합성 최적화, 배치 및 라우팅 프로세스를 수행하도록 구성될 수 있는 컴퓨팅 어레인지먼트의 블록도를 나타낸다. 당업자는 하나 이상의 프로세서, 및 프로그램 코드로 구성된 메모리 어레인지먼트를 포함하는 다양한 대안적인 컴퓨팅 어레인지먼트가 본 발명의 상이한 실시예의 프로세스 및 데이터 구조를 호스팅하고 알고리즘을 구현하는데 적합할 것임을 인지할 것이다. 프로세서 실행가능 포맷으로 인코딩된 본 발명의 프로세스를 포함하는 컴퓨터 코드는 자기 또는 광학 디스크 또는 테이프와 같은 다양한 비일시적인 컴퓨터 판독가능 저장 매체 또는 전달 채널, 전자 저장 디바이스를 통해, 또는 네트워크를 통한 애플리케이션 서비스로서 저장되고 제공될 수 있다.
프로세서 컴퓨팅 장치(400)는 호스트 버스(412)에 결합된 하나 이상의 프로세서(402), 클럭 신호 생성기(404), 메모리 유닛(406), 저장 유닛(408) 및 입출력 제어 유닛(410)을 포함한다. 어레인지먼트(400)는 회로 기판 상의 개별 컴포넌트로 구현될 수 있거나 집적 회로 내에서 내부적으로 구현될 수 있다. 집적 회로 내에서 내부적으로 구현될 때, 프로세서 컴퓨팅 어레인지먼트는 마이크로 컨트롤러로도 알려져 있다.
컴퓨팅 어레인지먼트의 아키텍쳐는 당업자에 의해 인지되는 바와 같이 구현 요건에 의존한다. 프로세서(402)는 하나 이상의 범용 프로세서, 또는 하나 이상의 범용 프로세서와 적합한 코-프로세서(co-processor)의 조합, 또는 하나 이상의 전용 프로세서(예를 들어, RISC, CISC, 파이프라인 등)일 수 있다.
메모리 어레인지먼트(406)는 전형적으로 다중 레벨의 캐시 메모리 및 메인 메모리를 포함한다. 저장 어레인지먼트(408)는 자기 디스크(도시되지 않음), 플래시, EPROM 또는 다른 비휘발성 데이터 저장 장치에 의해 제공되는 바과 같은 로컬 및/또는 원격 영구 저장 장치를 포함 할 수 있다. 저장 유닛은 판독될 수 있거나 판독/기입 가능할 수 있다. 또한, 메모리(406) 및 저장 장치(408)는 단일 어레인지먼트로 결합될 수 있다.
프로세서 어레인지먼트(402)는 저장 장치(408) 및/또는 메모리(406) 어레인지먼트에서의 소프트웨어를 실행하고, 저장 장치(408) 및/또는 메모리(406) 어레인지먼트로부터 데이터를 판독 및 저장하고, 입력/출력 제어 어레인지먼트(410)를 통해 외부 디바이스와 통신한다. 이들 기능은 클록 신호 생성기(404)에 의해 동기화된다. 컴퓨팅 어레인지먼트의 자원은 운영 시스템(도시되지 않음) 또는 하드웨어 제어 유닛(도시되지 않음) 중 어느 하나에 의해 관리될 수 있다. 당업자는 하나 이상의 프로세서, 및 프로그램 코드로 구성된 메모리 어레인지먼트를 포함하는 다양한 대안적인 컴퓨팅 어레인지먼트가 본 발명의 상이한 실시예의 프로세스 및 데이터 구조를 호스팅하는데 적합할 것임을 인지할 것이다.
도 5는 본 발명의 다양한 실시예에 따른 배치 및 라우팅을 위한 타겟 디바이스로서 사용될 수 있는, 프로그래밍가능 집적 회로의 블록도를 나타낸다. 또한, 프로그램가능 IC는 프로세서 서브시스템(510) 및 프로그램가능 논리 서브시스템 (530)을 포함하는 시스템 온 칩(System On Chip; SOC)으로 지칭 될 수 있다. 프로세서 서브시스템(510)은 사용자 프로그램의 실행을 통해 사용자 설계의 소프트웨어 부분을 구현하도록 프로그래밍될 수 있다. 프로그램은 구성 데이터 스트림의 일부로서 지정될 수 있거나 온-칩 또는 오프-칩 데이터 저장 디바이스로부터 검색될 수 있다. 프로세서 서브시스템(510)은 하나 이상의 소프트웨어 프로그램을 실행하기 위한 다양한 회로(512, 514, 516 및 518)를 포함할 수 있다. 회로(512, 514, 516 및 518)는 예를 들어, 하나 이상의 프로세서 코어, 부동 소수점 유닛(floating point unit; FPU), 인터럽트 프로세싱 유닛, 온-칩-메모리, 메모리 캐시 및/또는 캐시 코히런트 인터커넥트를 포함할 수 있다.
프로그래밍가능 IC(502)의 프로그래밍가능 논리 서브시스템(530)은 사용자 설계의 하드웨어 부분을 구현하도록 프로그래밍될 수 있다. 예를 들어, 프로그래밍가능 논리 서브시스템은 구성 데이터 스트림에 지정 된 회로 세트를 구현하도록 프로그래밍될 수 있는 다수의 프로그래밍가능 자원(532)을 포함할 수 있다. 프로그래밍가능 자원(532)은 프로그래밍가능 인터커넥트 회로, 프로그래밍가능 논리 회로, 및 구성 메모리 셀을 포함한다. 프로그래밍가능 논리 회로는 예를 들어 함수 발생기, 레지스터, 산술 논리 회로 등을 포함할 수 있는 프로그래밍가능 요소를 사용하여 사용자 설계의 논리를 구현한다. 프로그래밍가능 인터커넥트 회로는 프로그래밍가능 인터커넥트 포인트(programmable interconnect point; PIP)에 의해 인터커넥팅된 가변 길이의 다수의 인터커넥트 라인을 포함할 수 있다.
프로그래밍가능 자원(532)은 프로그래밍가능 인터커넥트 회로 및 프로그래밍가능 논리 회로가 어떻게 구성되는지를 정의하는 구성 데이터 스트림을 구성 메모리 셀로 로딩함으로써 프로그래밍될 수 있다. 그 후, 개별 메모리 셀의 집합 상태가 프로그래밍가능 자원(532)의 기능을 결정한다. 구성 데이터는 메모리로부터(예를 들어, 외부 PROM으로부터) 판독되거나 외부 장치에 의해 프로그래밍가능 IC(502)에 기입될 수 있다. 일부 구현에 있어서, 구성 데이터는 프로그래밍가능 논리 서브시스템(530)에 포함된 구성 제어기(534)에 의해 구성 메모리 셀로 로딩될 수 있다. 일부 다른 구현에 있어서, 구성 데이터는 프로세서 서브시스템(510)에 의해 실행되는 스타트업 프로세스에 의해 구성 메모리 셀로 로딩될 수 있다.
프로그래밍가능 IC(502)는 프로세서 서브시스템(510)을 프로그래밍가능 논리 서브시스템(530) 내에 구현된 회로와 인터커넥팅시키는 다양한 회로를 포함할 수 있다. 이 예에서, 프로그래밍가능 IC(502)는 프로세서 서브시스템(510) 및 프로그래밍 논리 서브시스템(530)의 다양한 데이터 포트 사이에서 데이터 신호를 라우팅할 수 있는 코어 스위치(526)를 포함한다. 코어 스위치 (526)는 또한 프로그래밍가능 논리 또는 프로세싱 서브시스템(510 및 530) 중 하나와 내부 데이터 버스와 같은 프로그래밍가능 IC의 다양한 다른 회로 사이에서 데이터 신호를 라우팅할 수 있다. 대안적으로 또는 추가적으로, 프로세서 서브시스템(510)은 코어 스위치(526)를 바이패싱하여 프로그래밍가능 논리 서브시스템과 직접 접속하기 위해 인터페이스를 포함할 수 있다. 이러한 인터페이스는 예를 들어 ARM에 의해 발표된 AXI(AMBA AXI Protocol Specification)를 사용하여 구현될 수 있다.
일부 구현에 있어서, 프로세서 서브시스템(510) 및 프로그래밍가능 논리 서브시스템(530)은 또한 메모리 제어기(521)를 통해 온-칩 메모리(522) 또는 오프-칩 메모리(도시되지 않음)의 메모리 위치에 기입하거나 판독할 수 있다. 메모리 제어기(521)는, 16비트, 32비트, ECC를 가진 16비트이든, DDR(Dual Data Rate)2, DDR3, LP(Low Power) DDR2 유형의 메모리를 포함하지만, 그에 한정되지 않은, 하나 이상의 상이한 유형의 메모리 회로와 통신하도록 구현 될 수 있다. 메모리 제어기(521)가 통신할 수 있는 상이한 메모리 유형의 리스트는 단지 예시의 목적으로 제공되며, 제한하거나 완전한 것으로 의도되지 않는다. 도 5에 도시된 바와 같이, 프로그래밍가능 IC(502)는 서브시스템(510 및 530)에 의해 사용되는 가상 메모리 어드레스를 메모리 제어기(521)에 의해 사용되는 물리적 메모리 어드레스로 번역하여 특정 메모리 위치에 액세스하기 위한 메모리 관리 유닛(520) 및 번역 룩-어사이드(look-aside) 버퍼(524)를 포함할 수 있다.
프로그래밍가능 IC는 외부 회로와의 데이터 통신을 위한 입력/출력(I/O) 서브시스템(550)을 포함할 수 있다. I/O 서브시스템(550)은 예를 들어 플래시 메모리 유형의 I/O 디바이스, 고성능 I/O 디바이스, 저성능 인터페이스, 디버깅 I/O 디바이스 및/또는 RAM I/O 디바이스를 포함하는 다양한 유형의 I/O 디바이스 또는 인터페이스를 포함할 수 있다.
I/O 서브시스템(550)은 560A 및 560B로 도시된 하나 이상의 플래시 메모리 인터페이스(560)를 포함할 수 있다. 예를 들어, 플래시 메모리 인터페이스(560) 중 하나 이상은 4비트 통신을 위해 구성된 쿼드-직렬 주변 장치 인터페이스(Quad-Serial Peripheral Interface; QSPI)로 구현될 수 있다. 플래시 메모리 인터페이스(560) 중 하나 이상은 병렬 8비트 NOR/SRAM 유형의 인터페이스로서 구현될 수 있다. 플래시 메모리 인터페이스(560) 중 하나 이상은 8비트 및/또는 16비트 통신을 위해 구성된 NAND 인터페이스로서 구현 될 수 있다. 설명된 특정 인터페이스는 설명의 목적으로 제공되며 제한을 위한 것이 아님을 인지해야 한다. 상이한 비프 폭을 가진 다른 인터페이스가 사용될 수 있다.
I/O 서브시스템(550)은 플래시 메모리 인터페이스(560)보다 높은 레벨의 성능을 제공하는 하나 이상의 인터페이스(562)를 포함할 수 있다. 인터페이스(562A-562C) 각각은 DMA 제어기(564A-564C)에 각각 결합될 수 있다. 예를 들어, 인터페이스(562) 중 하나 이상은 범용 직렬 버스(Universal Serial Bus; USB) 유형의 인터페이스로 구현될 수 있다. 인터페이스(562) 중 하나 이상은 기가비트 이더넷(Ethernet) 유형의 인터페이스로서 구현될 수 있다. 인터페이스(562) 중 하나 이상은 시큐어 디지털(Secure Digital; SD) 유형의 인터페이스로서 구현될 수 있다.
또한, I/O 서브시스템(550)은 인터페이스(562)보다 낮은 레벨의 성능을 제공하는 인터페이스(566A-566D)와 같은 하나 이상의 인터페이스(566)를 포함 할 수 있다. 예를 들어, 인터페이스(566) 중 하나 이상은 범용 I/O(General Purpose I/O; GPIO) 유형의 인터페이스로 구현될 수 있다. 인터페이스(566) 중 하나 이상은 범용 비동기 송수신기(Universal Asynchronous Receiver/Transmitter; UART) 유형의 인터페이스로서 구현될 수 있다. 인터페이스(566) 중 하나 이상은 직렬 주변장치 인터페이스(Serial Peripheral Interface; SPI) 버스 유형의 인터페이스의 형태로 구현될 수 있다. 인터페이스(566) 중 하나 이상은 CAN(Controller-Area-Network) 유형의 인터페이스 및/또는 I2C 유형의 인터페이스의 형태로 구현될 수 있다. 인터페이스(566) 중 하나 이상은 또한 타이머 유형의 인터페이스의 형태로 구현될 수 있다.
I/O 서브시스템(550)은 프로세서 JTAG(PJTAG) 인터페이스(568A) 및 트레이스 인터페이스(568B)와 같은 하나 이상의 디버그 인터페이스(568)를 포함 할 수 있다. PJTAG 인터페이스(568A)는 프로그래밍가능 IC(502)에 대한 외부 디버그 인터페이스를 제공할 수 있다. 트레이스 인터페이스(568B)는 프로세서 서브시스템(510) 또는 프로그래밍가능 논리 서브시스템(530)으로부터 디버그, 예를 들어 트레이스 정보를 수신하기 위한 포트를 제공할 수 있다.
도시된 바와 같이, 인터페이스(560, 562, 566, 및 568) 각각은 멀티플렉서(570)에 결합될 수 있다. 멀티플렉서(570)는 프로그래밍가능 IC(502)의 외부 핀, 예를 들어 프로그래밍가능 IC(502)가 내부에 배치되는 패키지의 볼(ball)에 직접 라우팅되거나 결합될 수있는 복수의 출력을 제공한다. 예를 들어, 프로그래밍가능 IC(502)의 I/O 핀은 인터페이스(560, 562, 566 및 568) 사이에서 공유될 수 있다. 사용자는, 구성 데이터 스트림을 통해, 어느 인터페이스(560-568)가 사용될지를 선택하고, 그에 따라 멀티플렉서 (570)를 통해 프로그래밍가능 IC(502)의 I/O 핀에 결합되도록 멀티플렉서(570)를 구성할 수 있다. 또한, I/O 서브 시스템(550)은 인터페이스(562-568)를 프로그래밍가능 논리 서브시스템의 프로그래밍가능 논리 회로에 접속시키기 위해 패브릭 멀티플랙서 I/O(fabric multiplexer I/O; FMIO) 인터페이스(도시되지 않음)를 포함할 수 있다. 추가적으로 또는 대안적으로, 프로그래밍가능 논리 서브시스템(530)은 프로그래밍가능 논리 회로 내에 하나 이상의 I/O 회로를 구현하도록 구성될 수 있다. 일부 구현에 있어서, 프로그래밍가능 IC(502)는 전력 및/또는 안전 관리를 위한 다양한 회로를 갖는 서브시스템(540)을 또한 포함할 수 있다. 예를 들어, 서브시스템(540)은 프로그래밍가능 IC(502)의 다양한 서브시스템에 전력을 인가하는데 사용되는 하나 이상의 전압 도메인을 모니터링하고 유지하도록 구성된 전력 관리 유닛(546)을 포함할 수 있다. 일부 구현에 있어서, 전력 관리 유닛(546)은 사용 중인 서브시스템에 대한 전력을 디스에이블시키지 않으면서 전력 소비를 감소시키기 위해 유휴 상태(idle)일 때 개별 서브시스템의 전력을 디스에이블할 수 있다.
서브시스템(540)은 또한 정확한 동작을 보장하기 위해 서브시스템의 상태를 모니터링하는 안전 회로를 포함할 수 있다. 예를 들어, 서브시스템(540)은 [예를 들어, 상태 레지스터(544)에 표시된 바와 같이] 다양한 서브시스템의 상태를 모니터링하도록 구성된 하나 이상의 실시간 프로세서(542)를 포함할 수 있다. 실시간 프로세서(542)는 에러 검출에 응답하여 다수의 태스크를 수행하도록 구성될 수 있다. 예를 들어, 일부 에러들에 대해, 실시간 프로세서(542)는 에러 검출에 응답하여 경보를 생성할 수 있다. 또다른 예로서, 실시간 프로세서(542)는 동작을 정정하기 위해 서브시스템을 리셋하여 서브시스템을 복원할 수 있다. 서브시스템(540)은 다양한 서브시스템을 인터커넥팅하는데 사용될 수 있는 스위치 네트워크(548)를 포함한다. 예를 들어, 스위치 네트워크(548)는 다양한 서브시스템(510, 530 및 540)을 I/O 서브시스템(550)의 다양한 인터페이스에 접속하도록 구성될 수 있다. 일부 애플리케이션에서, 스위치 네트워크(548)는 또한 실시간 프로세서(542)를 모니터링될 서브시스템으로부터 격리시키는데 사용될 수 있다. 이러한 격리는 실시간 프로세서(542)가 다른 서브시스템에서 발생하는 에러에 의해 영향을 받지 않도록 보장하기 위해 특정 애플리케이션 표준 (예를 들어, IEC-61508 SIL3 또는 ISO-26262 표준)에 의해 요구될 수 있다.
당업자는 하나 이상의 프로세서, 및 프로그램 코드로 구성된 메모리 어레인지먼트를 포함하는 다양한 대안적인 컴퓨팅 어레인지먼트가 여기에 개시된 프로세스 및 데이터 구조를 호스팅하는데 적합할 것임을 인지할 것이다. 또한, 프로세스는 자기 또는 광학 디스크 또는 테이프와 같은 다양한 컴퓨터-판독가능 저장 매체 또는 전달 채널, 전자 저장 디바이스를 통해, 또는 네트워크를 통한 애플리케이션 서비스로서 제공될 수 있다.
본 발명은 회로 설계의 배치 및 라우팅을 위한 다양한 시스템에 적용가능할 것으로 생각된다. 또한, FPGA 및 다른 PLD는 본 발명의 시스템 및 방법이 적용될 수 있는 적합한 타겟 프로그래밍가능 IC로서 설명되지만, 본 발명은 이에 제한되지 않는다. 본 발명의 다른 양상 및 실시예는 여기에 개시된 본 발명의 명세서 및 실시를 고려하는 것으로부터 당업자에게 명백해질 것이다. 명세서 및 예시된 실시예는 단지 예시로서 생각되어야 하며, 본 발명의 진정한 범위 및 사상은 다음의 청구 범위 및 그 등가물에 의해 지시되는 것으로 의도된다.

Claims (15)

  1. 방법에 있어서,
    프로세서 상에 동작들을 실행하는 단계
    를 포함하고, 상기 동작들은,
    상기 프로세서에 결합된 메모리에 저장되는 회로 설계를 위한 제 1 네트리스트(netlist)를 생성하는 동작;
    제 1 배치된 설계(placed design)를 생성하기 위해 타겟 IC 상에 상기 제 1 네트리스트의 배치를 결정하는 동작;
    상기 제 1 배치된 설계 상에 최적화 세트를 수행하는 동작;
    상기 최적화 세트 내의 각 최적화에 대해, 상기 최적화에 의해 수정되는 모듈 인스턴스의 이름 및 수행되는 물리적 합성 최적화의 유형을 지정함으로써 최적화 이력 파일에 상기 최적화 세트를 기록하는 동작;
    상기 제 1 네트리스트와는 상이한 제 2 네트리스트를 생성하기 위해 상기 지정된 물리적 합성 최적화의 유형에 따라 지명된 모듈 인스턴스를 수정함으로써 상기 제 1 네트리스트에 대해 상기 최적화 이력 파일에서 지정된 하나 이상의 최적화를 수행하는 동작;
    상기 제 1 배치된 설계와는 상이한 제 2 배치된 설계를 생성하기 위해 상기 타겟 IC 상에 상기 제 2 네트리스트의 배치를 결정하는 동작; 및
    배치 및 라우팅된 회로 설계를 생성하기 위해 상기 제 2 배치된 설계의 네트를 라우팅하는 동작
    을 포함하는 것인, 방법.
  2. 제 1 항에 있어서,
    상기 제 2 네트리스트의 배치를 결정하기 전에 상기 하나 이상의 최적화를 수행하는 것은, 상기 제 1 네트리스트의 배치 및 상기 제 1 배치된 설계에서의 네트의 라우팅을 수행하는데 요구되는 프로세싱 자원에 비해, 상기 제 2 네트리스트의 배치 및 상기 제 2 배치된 설계에서의 네트의 라우팅를 수행하는데 요구되는 프로세싱 자원를 감소시키는 것인, 방법.
  3. 제 1 항에 있어서,
    상기 제 1 네트리스트에 대해 상기 최적화 이력 파일에서 지정된 하나 이상의 최적화를 수행하는 동작은,
    상기 최적화 이력 파일 내의 높은 우선순위의 최적화 세트 및 상기 최적화 이력 파일 내의 낮은 우선순위의 최적화 세트를 결정하는 동작,
    상기 높은 우선순위의 최적화 세트에 포함된 최적화만을 수행하는 동작, 및
    상기 제 2 네트리스트의 배치에 후속하여 상기 제 2 배치된 네트리스트 상에 상기 낮은 우선순위의 최적화 세트를 수행하는 동작을 포함하는 것인, 방법.
  4. 제 1 항에 있어서,
    상기 최적화 이력 파일은 또한, 하나 이상의 타이밍 임계 회로 모듈을 식별하고,
    상기 타겟 IC 상에 상기 제 2 네트리스트의 배치를 결정하는 것은 상기 제 2 네트리스트의 다른 회로 모듈을 배치하기 전에 상기 하나 이상의 타이밍 임계 회로 모듈을 배치하는 것인, 방법.
  5. 삭제
  6. 제 1 항에 있어서,
    상기 최적화 이력 파일에서 지정된 상기 하나 이상의 최적화는 디지털 신호 프로세서(digital signal processor; DSP) 레지스터 최적화, BRAM 레지스터 최적화, 시프트-레지스터 최적화, 강제된(forced) 네트 복제, 팬-아웃 최적화, 교체(replacement) 최적화, 재배선/룩-업 테이블 최적화, 리타이밍(retiming) 최적화, 임계 핀 최적화 및/또는 홀드-시간 고정 최적화 또는 이들의 조합을 포함하는 것인, 방법.
  7. 제 1 항에 있어서,
    상기 최적화 이력 파일에서 지정된 상기 하나 이상의 최적화는 상기 회로 설계의 회로 모듈을 복수의 서브모듈로 분해하는 것을 포함하고,
    상기 제 2 네트리스트의 배치를 결정하는 것은 상기 복수의 서브모듈 각각의 배치를 독립적으로 결정하는 것인, 방법.
  8. 제 1 항에 있어서,
    상기 배치 및 라우팅된 회로 설계를 구현하기 위해 상기 타겟 IC의 프로그래밍가능 자원을 프로그래밍하도록 구성된 구성 데이터 세트를 생성하는 동작; 및
    상기 타겟 IC에 결합된 비휘발성 메모리에 상기 구성 데이터 세트를 저장하는 동작
    을 더 포함하고,
    상기 타겟 IC는, 전원 인가시, 상기 비휘발성 메모리의 상기 구성 데이터 세트로 상기 타겟 IC의 상기 프로그래밍가능 자원을 프로그래밍하도록 구성되고,
    상기 최적화 이력 파일은 툴 커맨드 언어 스크립트(tool command language script)에서 상기 최적화 세트를 지정하는 것인, 방법.
  9. 시스템에 있어서,
    프로세서; 및
    상기 프로세서에 결합된 메모리 어레인지먼트(memory arrangement)
    을 포함하고,
    상기 메모리 어레인지먼트는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금 동작들을 수행하게 하는 명령어들로 구성되고, 상기 동작들은,
    상기 메모리 어레인지먼트에 저장된 회로 설계를 위한 제 1 네트리스트를 생성하는 동작;
    제 1 배치된 설계를 생성하기 위해 타겟 IC 상에 상기 제 1 네트리스트의 배치를 결정하는 동작;
    상기 제 1 배치된 설계 상에 최적화 세트를 수행하는 동작;
    상기 최적화 세트 내의 각 최적화에 대해, 상기 최적화에 의해 수정되는 모듈 인스턴스의 이름 및 수행되는 물리적 합성 최적화의 유형을 지정함으로써 최적화 이력 파일에 상기 최적화 세트를 기록하는 동작;
    상기 제 1 네트리스트와는 상이한 제 2 네트리스트를 생성하기 위해 상기 지정된 물리적 합성 최적화의 유형에 따라 지명된 모듈 인스턴스를 수정함으로써 상기 제 1 네트리스트에 대해 상기 최적화 이력 파일에서 지정된 하나 이상의 최적화를 수행하는 동작;
    상기 제 1 배치된 설계와는 상이한 제 2 배치된 설계를 생성하기 위해 상기 타겟 IC 상에 상기 제 2 네트리스트의 배치를 결정하는 동작; 및
    배치 및 라우팅된 회로 설계를 생성하기 위해 상기 제 2 배치된 설계의 네트를 라우팅하는 동작
    을 포함하는 것인, 시스템.
  10. 제 9 항에 있어서,
    상기 제 2 네트리스트의 배치를 결정하기 전에 상기 하나 이상의 최적화를 수행하는 것은, 상기 제 1 네트리스트의 배치 및 상기 제 1 배치된 설계에서의 네트의 라우팅을 수행하는데 요구되는 프로세싱 자원에 비해, 상기 제 2 네트리스트의 배치 및 상기 제 2 배치된 설계에서의 네트의 라우팅를 수행하는데 요구되는 프로세싱 자원를 감소시키는 것인, 시스템.
  11. 제 1 항에 있어서,
    상기 배치 및 라우팅된 회로 설계를 구현하기 위해 상기 타겟 IC의 프로그래밍가능 자원을 프로그래밍하도록 구성된 구성 데이터 세트를 생성하는 동작; 및
    상기 타겟 IC에 결합된 비휘발성 메모리에 상기 구성 데이터 세트를 저장하는 동작
    을 더 포함하고,
    상기 타겟 IC는, 전원 인가시, 상기 비휘발성 메모리의 상기 구성 데이터 세트로 상기 타겟 IC의 상기 프로그래밍가능 자원을 프로그래밍하도록 구성되는 것인, 방법.
  12. 제 9 항에 있어서,
    상기 최적화 이력 파일은 또한, 하나 이상의 타이밍 임계 회로 모듈을 식별하고,
    상기 타겟 IC 상에 상기 제 2 네트리스트의 배치를 결정하는 동작에서, 상기 프로세서는 상기 제 2 네트리스트의 다른 회로 모듈을 배치하기 전에 상기 하나 이상의 타이밍 임계 회로 모듈을 배치하는 것인, 시스템.
  13. 제 9 항에 있어서,
    상기 프로세서에 의해 수행되는 상기 하나 이상의 최적화는 팬-아웃 최적화, 임계 셀 최적화, 강제된 네트 복제, 교체 최적화, DSP 레지스터 최적화, BRAM 레지스터 최적화, 시프트 레지스터 최적화, 재배선/룩-업 테이블 최적화, 리타이밍 최적화, 임계 핀 최적화, 홀드-시간 고정 최적화 또는 이들의 조합을 포함하는 것인, 시스템.
  14. 제 9 항에 있어서,
    상기 타겟 IC
    을 더 포함하고,
    상기 명령어들은 또한, 상기 프로세서로 하여금 상기 배치 및 라우팅된 회로 설계를 구현하기 위해 상기 타겟 IC의 프로그래밍가능 자원을 프로그래밍하도록 구성된 구성 데이터 세트를 생성하게 하고,
    상기 최적화 이력 파일은 툴 커맨드 언어 스크립트에서 상기 최적화 세트를 지정하는 것인, 시스템.
  15. 삭제
KR1020187012204A 2015-10-01 2016-09-01 상호작용형 다단계 물리적 합성 KR102596637B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/873,072 2015-10-01
US14/873,072 US9613173B1 (en) 2015-10-01 2015-10-01 Interactive multi-step physical synthesis
PCT/US2016/049990 WO2017058457A1 (en) 2015-10-01 2016-09-01 Interactive multi-step physical synthesis

Publications (2)

Publication Number Publication Date
KR20180058821A KR20180058821A (ko) 2018-06-01
KR102596637B1 true KR102596637B1 (ko) 2023-10-31

Family

ID=56896847

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187012204A KR102596637B1 (ko) 2015-10-01 2016-09-01 상호작용형 다단계 물리적 합성

Country Status (6)

Country Link
US (1) US9613173B1 (ko)
EP (1) EP3356966B1 (ko)
JP (1) JP6728345B2 (ko)
KR (1) KR102596637B1 (ko)
CN (1) CN108140067B (ko)
WO (1) WO2017058457A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10503861B1 (en) * 2018-05-21 2019-12-10 Xilinx, Inc. Placing and routing an interface portion and a main portion of a circuit design
US10614191B1 (en) 2018-05-29 2020-04-07 Xilinx, Inc. Performing placement and routing concurrently
US10776543B2 (en) 2018-06-25 2020-09-15 International Business Machines Corporation Automated region based optimization of chip manufacture
US10608641B2 (en) * 2018-07-20 2020-03-31 Xilinx, Inc. Hierarchical partial reconfiguration for programmable integrated circuits
EP3667523A1 (en) * 2018-12-10 2020-06-17 ABB Schweiz AG Method of determining a three-dimensional layout of electrical connections of an electric component
CN111400995B (zh) * 2018-12-25 2021-01-08 上海安路信息科技有限公司 布局优化方法及布局优化系统
US20200410153A1 (en) 2019-05-30 2020-12-31 Celera, Inc. Automated circuit generation

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030144828A1 (en) 2001-07-30 2003-07-31 Lin Sharon Sheau-Pyng Hub array system and method

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5726902A (en) * 1995-06-07 1998-03-10 Vlsi Technology, Inc. Method and apparatus for characterizing timing behavior of datapaths for integrated circuit design and fabrication
JP2877083B2 (ja) * 1996-06-27 1999-03-31 日本電気株式会社 回路設計の最適化装置
US6785873B1 (en) * 1997-05-02 2004-08-31 Axis Systems, Inc. Emulation system with multiple asynchronous clocks
US6651225B1 (en) * 1997-05-02 2003-11-18 Axis Systems, Inc. Dynamic evaluation logic system and method
US6799309B2 (en) * 2002-12-04 2004-09-28 International Business Machines Corporation Method for optimizing a VLSI floor planner using a path based hyper-edge representation
US8819608B2 (en) * 2007-07-23 2014-08-26 Synopsys, Inc. Architectural physical synthesis
CN100478966C (zh) * 2007-09-28 2009-04-15 中国电子科技集团公司第五十四研究所 对芯片中的海量模块进行阵列布局的方法
US8099702B2 (en) * 2008-07-30 2012-01-17 Synopsys, Inc. Method and apparatus for proximate placement of sequential cells
US8196081B1 (en) 2010-03-31 2012-06-05 Xilinx, Inc. Incremental placement and routing
US9015023B2 (en) * 2010-05-05 2015-04-21 Xilinx, Inc. Device specific configuration of operating voltage
US8250513B1 (en) 2010-11-04 2012-08-21 Xilinx, Inc. Parallel process optimized signal routing
US8201130B1 (en) 2010-11-04 2012-06-12 Xilinx, Inc. Parallel signal routing
US8196083B1 (en) 2010-12-09 2012-06-05 Xilinx, Inc. Incremental placement and routing
CN103366028B (zh) * 2012-03-31 2016-03-16 中国科学院微电子研究所 一种现场可编程门阵列芯片布局方法
US9524363B2 (en) * 2012-05-31 2016-12-20 Globalfoundries Inc. Element placement in circuit design based on preferred location
US8732641B1 (en) * 2012-11-15 2014-05-20 Taiwan Semiconductor Manufacturing Co., Ltd. Pattern matching based parasitic extraction with pattern reuse

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030144828A1 (en) 2001-07-30 2003-07-31 Lin Sharon Sheau-Pyng Hub array system and method

Also Published As

Publication number Publication date
US20170098024A1 (en) 2017-04-06
CN108140067A (zh) 2018-06-08
WO2017058457A1 (en) 2017-04-06
JP6728345B2 (ja) 2020-07-22
CN108140067B (zh) 2021-08-31
EP3356966B1 (en) 2019-11-27
US9613173B1 (en) 2017-04-04
KR20180058821A (ko) 2018-06-01
EP3356966A1 (en) 2018-08-08
JP2018531457A (ja) 2018-10-25

Similar Documents

Publication Publication Date Title
KR102596637B1 (ko) 상호작용형 다단계 물리적 합성
US8928351B1 (en) Emulating power domains in an integrated circuit using partial reconfiguration
US8775986B1 (en) Software debugging of synthesized hardware
US9298865B1 (en) Debugging an optimized design implemented in a device with a pre-optimized design simulation
JP2018531457A6 (ja) 対話型マルチステップ物理合成
US20220187899A1 (en) Methods And Apparatus For Selectively Extracting And Loading Register States
EP2626800A1 (en) Configuring a programmable device using high-level language
US10615800B1 (en) Method and apparatus for implementing configurable streaming networks
US8686753B1 (en) Partial reconfiguration and in-system debugging
Hung et al. Incremental trace-buffer insertion for FPGA debug
US9298866B1 (en) Method and system for modeling a flip-flop of a user design
US9183339B1 (en) System and method for preparing partially reconfigurable circuit designs
US8719752B1 (en) Hierarchical crosstalk noise analysis model generation
US8522185B1 (en) Method for placement and routing of a circuit design
US20180083633A1 (en) Methods and circuits for preventing hold time violations
US8196081B1 (en) Incremental placement and routing
US9824173B1 (en) Software development-based compilation flow for hardware implementation
US9646126B1 (en) Post-routing structural netlist optimization for circuit designs
US8079009B1 (en) Managing interrupt requests from IP cores
US9805152B1 (en) Compilation of system designs
US9864830B1 (en) Method and apparatus for placement and routing of circuit designs
CN110728098B (zh) Fpga重配置分区优化方法及系统
US20160216330A1 (en) Registers for post configuration testing of programmable logic devices
US10726182B1 (en) Operator aware finite state machine for circuit design simulation
US10754759B1 (en) Breakpointing circuitry that evaluates breakpoint conditions while running clock to target circuit

Legal Events

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