KR20220139399A - 신경망을 이용한 집적 회로 배치 생성 - Google Patents

신경망을 이용한 집적 회로 배치 생성 Download PDF

Info

Publication number
KR20220139399A
KR20220139399A KR1020227032461A KR20227032461A KR20220139399A KR 20220139399 A KR20220139399 A KR 20220139399A KR 1020227032461 A KR1020227032461 A KR 1020227032461A KR 20227032461 A KR20227032461 A KR 20227032461A KR 20220139399 A KR20220139399 A KR 20220139399A
Authority
KR
South Korea
Prior art keywords
node
neural network
training
netlist
integrated circuit
Prior art date
Application number
KR1020227032461A
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 KR20220139399A publication Critical patent/KR20220139399A/ko

Links

Images

Classifications

    • 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/20Design optimisation, verification or simulation
    • G06F30/27Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Architecture (AREA)
  • Biophysics (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Variable-Direction Aerials And Aerial Arrays (AREA)
  • Semiconductor Integrated Circuits (AREA)

Abstract

컴퓨터 칩 배치를 생성하기 위한 방법, 시스템 및 장치는 컴퓨터 저장 매체에 인코딩된 컴퓨터 프로그램을 포함한다. 방법 중 하나는 컴퓨터 칩에 대한 넷리스트(netlist) 데이터를 획득하는 단계와, 복수의 시간 단계를 포함하는 시퀀스의 각 시간 단계에서 개별 매크로 노드를 배치하는 단계를 포함하는 컴퓨터 칩 배치를 생성하는 단계를 포함하고, 상기 배치하는 단계는 각 시간 단계에 대해: 시간 단계에 대한 입력 표현을 생성하는 단계와; 복수의 네트워크 파라미터를 갖는 노드 배치 신경망을 사용하여 입력 표현을 처리하는 단계와, 상기 노드 배치 신경망은 컴퓨터 칩의 표면의 복수의 위치에 대한 스코어 분포를 생성하기 위해 네트워크 파라미터의 현재 값에 따라 입력 표현을 처리하도록 구성되고; 그리고 스코어 분포를 이용하여 복수의 위치 중 하나의 위치에 상기 시간 단계에 배치될 매크로 노드를 할당하는 단계를 포함한다.

Description

신경망을 이용한 집적 회로 배치 생성
본 출원은 2020년 4월 22일에 출원된 미국 특허 출원 번호 63/014,021에 대한 우선권을 주장하며, 전체 내용은 참고로 포함된다.
본 명세서는 전자 설계 자동화, 보다 구체적으로 컴퓨터 칩 배치를 생성하기 위한 신경망 사용에 관한 것이다.
컴퓨터 칩 배치는 컴퓨터 칩의 표면, 즉 칩 영역에 있는 컴퓨터 칩의 일부 또는 전체 회로 배치의 개략적인 표현이다.
신경망은 수신된 입력에 대한 출력을 예측하기 위해 하나 이상의 비선형 단위 계층을 사용하는 기계 학습 모델이다. 일부 신경망에는 출력 계층 이외에 하나 이상의 은닉 계층이 포함된다. 각 은닉 계층의 출력은 네트워크의 다음 계층, 즉 다음 은닉 계층 또는 출력 계층의 입력으로 사용된다. 네트워크의 각 계층은 개별 파라미터 세트의 현재 값에 따라 수신된 입력으로부터 출력을 생성한다.
본 명세서는 집적 회로용 칩 배치를 생성하는 하나 이상의 위치에 있는 하나 이상의 컴퓨터에서 컴퓨터 프로그램으로 구현된 시스템을 설명한다. 칩 배치가 생성되는 집적 회로는 본 명세서에서 "컴퓨터 칩"으로 지칭되지만 일반적으로 한조각의 반도체 재료로 제조되는 전자 회로의 임의의 모음(collection)을 지칭하는 것으로 이해되어야 한다. 칩 배치는 노드의 넷리스트로부터의 각 노드를 컴퓨터 칩 표면 상의 해당 위치에 배치한다.
본 명세서에 기술된 주제의 특정 실시예는 다음 이점 중 하나 이상을 실현하도록 구현될 수 있다.
칩 표면에 칩의 컴포넌트를 배치하는 것을 포함하는 플로어플래닝(Floorplanning)은 칩 설계 프로세스에서 중요한 단계이다. 컴포넌트의 배치는 면적, 총 배선 길이 및 혼잡도와 같은 메트릭(지표)을 최적화해야 한다. 플로어플랜이 이러한 메트릭에서 잘 수행되지 않으면, 플로어플랜에 기초하여 생성된 집적 회로 칩은 성능이 좋지 않을 것이다. 예를 들어, 집적 회로 칩이 작동하지 않거나, 과도한 양의 전력을 소비하거나, 허용할 수 없는 대기 시간을 갖거나, 칩에 부품을 최적으로 배치하지 않아 발생하는 다양한 기타 바람직하지 않은 속성을 가질 수 있다.
설명된 기술은 설명된 노드 배치 신경망 및 설명된 트레이닝 기술을 사용함으로써 최소한의 사용자 개입으로 고품질 칩 플로어플랜을 자동으로 생성할 수 있도록 한다. 특정 예로서, 분산 트레이닝이 사용되는 경우, 인간 전문가의 개입 없이 몇 시간 내에 고품질(즉, 초인적) 배치가 생성될 수 있다.
설명된 시스템과 달리, 기존 플로어플랜 솔루션은 사람이 많이 개입해야 하는 몇 주 동안의 프로세스를 사용한다. 잠재적인 노드 배치 조합의 엄청난 공간 때문에, 기존의 자동화된 접근 방식은 과도한 계산 능력과 시간을 소비하거나 전문가의 개입이 필요하며 둘 다 필요하지 않으면 고품질 플로어플랜를 안정적으로 생성할 수 없었다. 그러나, 설명된 노드 배치 신경망을 트레이닝하기 위해 강화 학습을 효과적으로 사용함으로써, 설명된 기술은 고품질 플로어플랜를 신속하게 생성할 수 있다.
또한, 이 방법으로 제조된 집적회로 칩은 기존의 방법으로 제조된 집적회로 칩에 비해 전력 소비를 줄일 수 있다. 이것은 또한 주어진 표면적에 대해 향상된 컴퓨팅 성능을 가질 수 있거나, 다른 관점에서 볼 때 주어진 양의 컴퓨팅 파워에 대해 더 적은 리소스를 사용하여 생성될 수 있다.
추가적으로, 설명된 노드 배치 신경망은 본 명세서에 설명된 대로 트레이닝될 때, 즉 인코더 신경망이 지도 학습을 통해 훈련되고 정책 신경망은 강화 학습을 통해 트레이닝될 때, 새로운 넷리스트 및 새로운 집적 회로 치수로 빠르게 일반화할 수 있다. 이것은 새로운 넷리스트에 대한 고품질 플로어플랜를 생성하는데 계산 비용이 많이 드는 미세 조정이 거의 또는 전혀 필요하지 않기 때문에 새로운 넷리스트에 대한 배치를 생성하는데 필요한 계산 리소스의 양을 크게 줄인다.
본 명세서에서 설명된 주제의 하나 이상의 실시예의 세부 사항은 첨부 도면 및 아래의 설명에 설명되어 있다. 주제의 다른 특징, 측면 및 이점은 설명, 도면 및 청구 범위에서 명백해질 것이다.
도 1은 예시적인 배치 생성 시스템을 도시한다.
도 2는 시간 단계에서 노드 배치 신경망의 처리를 도시한다.
도 3은 노드 배치 신경망을 트레이닝하기 위한 예시적인 프로세스의 흐름도이다.
도 4는 주어진 시간 단계에서 매크로 노드를 배치하기 위한 예시적인 프로세스의 흐름도이다.
다양한 도면에서 유사한 참조 번호 및 명칭은 유사한 요소를 나타낸다.
도 1은 예시적인 배치 생성 시스템(100)을 도시한다. 배치 생성 시스템(100)은 후술되는 시스템, 컴포넌트 및 기술이 구현되는 하나 이상의 위치에 있는 하나 이상의 컴퓨터 상의 컴퓨터 프로그램으로서 구현된 시스템의 예이다.
시스템(100)은 제조될 컴퓨터 칩, 즉 VLSI(very Large-scale integration) 칩에 대한 넷리스트(netlist) 데이터(102)를 수신하며, 이는 트랜지스터, 저항, 커패시터 등과 같은 복수의 집적 회로 컴포넌트(구성요소)를 포함한다. 복수의 집적 회로 컴포넌트는 칩의 원하는 기능에 따라 다를 수 있다. 예를 들어, 칩은 기계 학습 계산, 비디오 처리, 암호화 또는 기타 계산 집약적 기능을 위한 특수 목적 칩, 즉 ASIC(application-specific integrated circuit)일 수 있다.
넷리스트 데이터(102)는 컴퓨터 칩의 집적 회로 컴포넌트의 연결(성) (connectivity)을 기술하는 데이터이다. 특히, 넷리스트 데이터(102)는 컴퓨터 칩의 복수의 집적 회로 컴포넌트 중 하나 이상에 각각 대응하는 복수의 노드 사이의 컴퓨터 칩상의 연결을 지정한다. 즉, 각 노드는 집적 회로 컴포넌트의 각각의 적절한 서브세트에 대응하고, 이러한 서브세트는 오버랩되지 않는다. 다시 말해, 넷리스트 데이터(102)는 복수의 노드 각각에 대해, 제조된 컴퓨터 칩의 하나 이상의 배선(wire)으로 노드가 연결될 필요가 있는 다른 노드(존재하는 경우)를 식별한다. 일부 경우에, 집적 회로 컴포넌트는 예를 들어 이미 외부 시스템에 의해 또는 기존 클러스터링 기술을 사용하여 클러스터로 클러스터링되었으며, 넷리스트 데이터의 각 노드는 클러스터 중 다른 하나를 나타낸다.
시스템(100)은 출력으로서 넷리스트 데이터(102)에 있는 노드의 일부 또는 전부를 컴퓨터 칩의 표면 상의 개별(respective) 위치에 배치하는 최종 컴퓨터 칩 배치(152)를 생성한다. 즉, 최종 컴퓨터 칩 배치(152)는 넷리스트 데이터(102) 내의 노드의 일부 또는 전부에 대한, 결국 노드에 의해 표현되는 집적 회로 컴포넌트들에 대한 컴퓨터 칩 표면 상의 개별 위치를 식별한다.
일 예로서, 넷리스트 데이터(102)는 2가지 유형의 노드, 즉 매크로 컴포넌트를 나타내는 노드들과 표준 셀 컴포넌트를 나타내는 노드들을 식별할 수 있다.
매크로 컴포넌트는 넷리스트에서 단일 노드로 표시되는 SRAM(정적 랜덤 액세스 메모리) 또는 기타 메모리 블록과 같은 IC 컴포넌트의 큰 블록이다. 예를 들어, 매크로 컴포넌트를 나타내는 노드는 SRAM의 대응하는 인스턴스를 각각 나타내는 노드를 포함할 수 있다. 다른 예로서, 매크로 컴포넌트를 나타내는 노드는 고정된 수의 표준 셀로 구성된 하드 매크로, 예를 들어 고정된 수의 레지스터 파일의 인스턴스로 구성된 매크로를 포함할 수 있다. 다른 예로서, 매크로 컴포넌트를 나타내는 노드는 칩 상에 배치될 위상 잠금 루프(PLL) 회로를 각각 나타내는 하나 이상의 노드를 포함할 수 있다. 또 다른 예로서, 매크로 컴포넌트를 나타내는 노드는 칩 상에 배치될 센서를 각각 나타내는 하나 이상의 노드를 포함할 수 있다.
표준 셀 컴포넌트는 트랜지스터 및 상호 연결 구조의 그룹, 예를 들어 부울 논리 기능을 제공하는 그룹(예를 들어, AND, OR, XOR, XNOR, 인버터) 또는 저장 기능을 제공하는 그룹(예를 들어, 플립플롭 또는 래치)이다.
일부 구현에서, 넷리스트 데이터 내의 노드들은 단일 표준 셀 컴포넌트를 나타낸다. 일부 다른 구현에서, 넷리스트 데이터 내의 노드들은 이미 클러스터링된 표준 셀 컴포넌트를 나타낸다.
일반적으로, 배치(152)는 각 노드를 칩의 표면 위에 오버레이된 N × M 그리드(격자)의 그리드 정사각형에 할당하며, 여기서 N 및 M은 정수이다.
일부 구현에서, N 및 M의 값은 시스템(100)에 대한 입력으로 제공된다.
다른 구현에서, 시스템(100)은 N 및 M의 값을 생성한다.
예를 들어, 시스템(100)은 최적의 행 및 열의 수를 선택하는 것을 빈 패킹(bin-packing ) 문제로 취급하고 칩 표면에서 발생하는 낭비되는 공간의 양에 따라 행 및 열의 상이한 조합을 순위 지정(ranking)할 수 있다. 그런 다음 시스템(100)은 N 및 M에 대한 값으로서 낭비되는 공간의 양을 최소화하는 조합을 선택할 수 있다.
다른 예로서, 시스템(100)은 입력을 처리하여 집적 회로 칩의 표면을 N×M 그리드로 분할하는 방법을 정의하는 출력을 생성하도록 구성된 그리드 생성 기계 학습 모델을 사용하여 넷리스트 데이터, 집적 회로 칩의 표면을 특징짓는 데이터, 또는 둘 모두로부터 도출된 입력을 처리할 수 있다.
시스템(100)은 노드 배치 신경망(110) 및 그래프 배치 엔진(130)을 포함한다.
시스템(100)은 노드 배치 신경망(110)을 사용하여 매크로 노드 배치(122)를 생성한다.
특히, 매크로 노드 배치(122)는 개별 매크로 노드, 즉 넷리스트 데이터(102)에서, 매크로를 나타내는 각각의 노드를 컴퓨터 칩의 표면 상의 개별 위치에 배치한다.
시스템(100)은 복수의 시간 단계 시퀀스의 각 시간 단계에서 넷리스트 데이터(102)로부터 개별 매크로 노드를 배치함으로써 매크로 노드 배치(122)를 생성한다.
즉, 시스템(100)은 매크로 노드 순서에 따라 각각의 매크로 노드가 시간 단계들 중 다른 하나의 위치에 배치되도록 다수의 시간 단계에 걸쳐 노드별로 매크로 노드 배치를 생성한다. 매크로 노드 순서는 매크로 노드 순서에서 임의의 주어진 매크로 노드 이전(앞)에 있는 각 노드는 그 주어진 매크로 노드 이전에 배치되도록 매크로 노드들을 정렬한다.
시퀀스의 각각의 특정 시간 단계에서, 시스템(100)은 특정 시간 단계에 대한 입력 표현을 생성하고 그 입력 표현을 노드 배치 신경망(110)을 사용하여 처리한다.
특정 시간 단계에 대한 입력 표현은 일반적으로 적어도 (i) 매크로 노드 순서에서 특정 시간 단계에 배치될 특정 매크로 노드 이전에 있는 임의의 매크로 노드 칩 표면 상의 개별 위치 및 (ii) 특정 시간 단계에 배치될 특정 매크로 노드를 특징짓는다.
입력 표현은 또한 넷리스트 데이터(102)에 지정된 노드들 간의 연결을 특징짓는 데이터를 선택적으로 포함할 수 있다. 예를 들어, 입력 표현은 넷리스트에 따라 해당 노드가 연결된 노드들 중 하나 이상의 다른 노드의 일부 또는 전부에 대해 특징화할 수 있다. 예를 들어, 입력 표현은 임의의 두 노드 사이의 각 연결을 두 노드를 연결하는 에지로 나타낼 수 있다.
예시적인 입력 표현은 도 2를 참조하여 아래에서 더 자세히 설명된다.
시퀀스의 제1 시간 단계에서, 입력 표현은 노드들이 배치되지 않았음을 나타내고, 따라서 넷리스트 내의 각 노드에 대해, 노드가 아직 칩 표면 상에 위치하지 않음을 나타낸다.
노드 배치 신경망(110)은 파라미터(본 명세서에서 "네트워크 파라미터"라고 지칭함)를 가지며 네트워크 파라미터의 현재 값에 따라 입력 표현을 처리하여 스코어 분포, 예를 들어 컴퓨터 칩 표면 상의 복수의 위치에 대한 확률 분포 또는 로짓(logits) 분포를 생성하도록 구성된 신경망이다. 예를 들어, 이 분포는 칩 표면 위에 오버레이된 N×M 그리드의 그리드 사각형 위에 있을 수 있다.
그런 다음, 시스템(100)은 신경망에 의해 생성된 스코어 분포를 사용하여 특정 시간 단계에 배치될 매크로 노드를 복수의 위치로부터의 위치에 할당한다.
주어진 시간 단계에서 신경망(110)에 의해 수행되어 스코어 분포를 사용하여 시간 단계에 노드를 배치하는 동작들은 도 2-4를 참조하여 아래에서 더 자세히 설명된다.
매크로 노드를 배치에 하나씩 추가함으로써 시퀀스의 마지막 시간 단계 이후에, 매크로 노드 배치는 넷리스트 데이터(102)에 있는 모든 매크로 노드에 대한 개별 배치를 포함할 것이다.
일단 시스템(100)이 매크로 노드 배치(122)를 생성하면, 그래프 배치 엔진(130)은 매크로 노드 배치에 따라 배치된, 즉 매크로 노드 배치(122)에서와 같이 배치된 매크로 노드들에 의해 표현되는 매크로 컴포넌트들을 포함하는 부분적으로 배치된 집적 회로 칩의 표면 상의 개별 위치에 표준 셀 각각을 배치함으로써 초기 컴퓨터 칩 배치를 생성한다(132).
일부 구현에서, 엔진(130)은 표준 셀을 표준 셀 클러스터 세트로 클러스터링하고(또는 이미 생성된 클러스터를 식별하는 데이터를 획득함) 이어서 그래프 배치 기술을 사용하여 상기 부분적으로 배치된 집적 회로 칩의 표면 상의 개별 위치에 표준 셀의 각 클러스터를 배치한다. 특정 예로서, 엔진(130)은 정규화된 최소 컷(cut) 목적에 기초하는 분할(partitioning) 기술을 사용하여 표준 셀을 클러스터링할 수 있다. 이러한 기술의 예는 1998년 HMETIS에서, Karypis, G. 및 Kumar, V. A의 하이퍼그래프 파티셔닝 패키지에 설명된 hMETIS이다.
일부 다른 구현에서, 엔진(130)은 표준 셀을 클러스터링하지 않고 그래프 배치 기술을 사용하여 상기 부분적으로 배치된 집적 회로 칩의 표면 상의 개별 위치에 각각의 표준 셀을 직접 배치한다.
그래프 배치 기술은 그래프의 노드들을 배치하기 위한 임의의 적절한 기술일 수 있다. 예를 들어, 엔진(130)은 힘 기반 기술, 즉, 힘-지향 기술을 사용할 수 있다. 특히, 힘 기반 기술을 사용할 때 엔진(130)은 가중치 × 거리 공식에 따라, 각 노드에 힘을 가하여 밀접하게 연결된 노드들이 서로 끌리게 하는 스프링 시스템으로 넷리스트를 나타낸다. 선택적으로, 엔진(130)은 또한 배치 밀도를 줄이기 위해 중첩 노드들 사이에 반발력을 도입한다. 모든 힘을 가한 후, 엔진(130)은 힘 벡터의 방향으로 노드들을 이동시킨다. 진동을 줄이기 위해, 엔진(130)은 각 이동에 대해 최대 거리를 설정할 수 있다. 힘-지향 기술을 사용하여 노드를 배치하는 방법은 1991년 6월에 Shahookar, K. 및 Mazumder, P에 의한 Vlsi 셀 배치 기술 ACM Comput. Surv., 23(2):143220, ISSN 0360-0300. doi: 10.1145/103724.103725에 자세히 설명되어 있다.
일부 구현에서, 시스템(100)은 초기 배치(132)를 최종 배치(152)로서 사용한다.
일부 다른 구현에서, 시스템(100)은 최종 배치(152)를 생성하기 위해 초기 배치(132)를 조정하는 합법화 엔진(150)에 대한 입력으로 초기 배치(132)를 제공한다.
특히, 합법화 엔진(150)은 초기 집적 회로 칩 배치에 그리디(greedy) 합법화 알고리즘을 적용함으로써 합법화된 집적 회로 칩 배치를 생성할 수 있다. 예를 들어, 엔진(150)은 그리디 합법화 단계를 수행하여 최소 간격 제약을 준수하면서 매크로를 가장 가까운 법적(올바른) 위치에 스냅(snap)할 수 있다.
선택적으로, 엔진(150)은 합법화된 배치를 추가로 개선할 수 있거나, 예를 들어 보상 함수에 대해 시뮬레이션된 어닐링을 수행함으로써 합법화된 배치를 생성하지 않고 직접 초기 배치(132)를 개선할 수 있다. 보상 함수의 예는 아래에서 더 자세히 설명될 것이다. 특정 예로서, 엔진(150)은 최종 컴퓨터 칩 배치(152)를 생성하기 위해 합법화된 배치 또는 초기 배치(132)에서의 배치를 반복적으로 조정하도록 힐 클라이밍(hill climbing) 알고리즘을 적용함으로써 시뮬레이션된 어닐링을 수행할 수 있다. 매크로 노드 배치(122)를 조정하는데 사용될 수 있는 힐 클라이밍 알고리즘 및 기타 시뮬레이션된 어닐링 기술은 1983년 SCIENCE, 220(4598):671-680S에서 Kirkpatrick, C. D. Gelatt 및 M. P. Vecchi에 의한 시뮬레이션된 어닐링에 의한 최적화에 더 자세히 설명되어 있다. 다른 예로서, 시스템(100)은 합법화된 배치를 추가로 개선하거나, 평가 및 미세 조정을 위한 전자 설계 자동화(EDA) 소프트웨어 도구에 상기 합법화된 배치 또는 초기 배치(132)를 제공함으로써 합법화된 배치를 생성하지 않고 직접 초기 배치(132)를 게선할 수 있다.
선택적으로, 시스템(100) 또는 외부 시스템은 최종 배치(152)에 따라 칩(집적 회로)을 제조(생산)할 수 있다. 이러한 집적 회로는 개선된 성능을 나타낼 수 있고, 예를 들어, 종래의 설계 프로세스를 사용하여 설계된 것보다 더 낮은 전력 소비, 더 낮은 대기 시간, 또는 더 작은 표면적 중 하나 이상을 가질 수 있고, 및/또는 더 적은 리소스를 사용하여 생산 가능하다. 제조는 알려진 기술을 사용할 수 있다. 일부 경우, 최종 배치에 따라 칩을 제조하는 것은 사용자가 제조 전에 최종 배치(152)를 수정할 수 있도록 배치를 식별하는 데이터를 사용자에게 제공하거나 제조 전에 미세 조정을 위해 최종 배치(152)를 전자 설계 자동화(EDA)에 제공하는 것을 포함할 수 있다.
시스템(100)은 임의의 다양한 방식으로 넷리스트 데이터(102)를 수신할 수 있다.
예를 들어, 시스템(100)은, 예를 들어, 시스템(100)에 의해 이용가능하게 된 애플리케이션 프로그래밍 인터페이스(API)를 사용하여 데이터 통신 네트워크를 통해 시스템의 원격 사용자로부터 업로드로서 넷리스트 데이터(102)를 수신할 수 있다. 일부 경우에, 이어서 시스템(100)은 예를 들어 최종 배치(152)에 따라 칩을 제조하는데 사용하기 위해 시스템(100)에 의해 제공된 API를 통해 최종 배치(152)를 원격 사용자에게 제공할 수 있다.
다른 예로서, 시스템(100)은 전자 설계 자동화(EDA) 소프트웨어 도구의 일부일 수 있고 도구의 사용자로부터 또는 도구의 다른 컴포넌트로부터 넷리스트 데이터(102)를 수신할 수 있다. 이 예에서, 시스템(100)은 컴퓨터 칩이 제조되기 전에 EDA 소프트웨어 도구의 다른 컴포넌트에 의한 평가를 위한 최종 배치(152)를 제공할 수 있다.
도 2는 주어진 시간 단계에서 노드 배치 신경망(110)의 처리를 도시한다.
도 1을 참조하여 전술한 바와 같이, 배치 생성 중 각 시간 단계에서, 노드 배치 신경망(110)은 입력 표현을 수신하고 컴퓨터 칩의 표면 상의 복수의 위치에 대한 스코어 분포, 예를 들어 확률 분포 또는 로짓(logits)의 분포를 생성하기 위해 입력 표현을 처리하도록 구성된다.
일반적으로, 입력 표현은 적어도 (i) 매크로 노드 순서의 특정 시간 단계에 배치될 특정 매크로 노드 이전에 있는 임의의 매크로 노드 칩 표면 상의 개별 위치를 특징짓는 데이터 및 (ii) 특정 시간 단계에 배치될 특정 매크로 노드를 특징짓는 데이터를 포함한다.
도 2에 도시된 바와 같이, 노드 배치 신경망(110)은 인코더 신경망(210), 정책 신경망(220), 및 선택적으로 가치 신경망(230)을 포함한다.
인코더 신경망(210)은 각각의 특정 시간 단계에서, 입력 표현을 처리하여 입력 표현의 인코딩된 표현(212)을 생성하도록 구성된다. 인코딩된 표현은 고정된 차원 공간의 숫자 표현, 즉 고정된 수의 숫자 값의 정렬된 모음(collection))이다. 예를 들어, 인코딩된 표현은 벡터 또는 부동 소수점 값의 행렬 또는 다른 유형의 숫자 값일 수 있다.
정책 신경망(220)은 각각의 특정 시간 단계에서, 인코딩된 표현(212)을 처리하여 스코어 분포를 생성하도록 구성된다.
일반적으로, 정책 신경망(220)은 정책 신경망(220)이 인코딩된 표현(212)을 스코어 분포에 매핑하도록 하는 임의의 적절한 아키텍처를 가질 수 있다. 도 2의 예에 도시된 바와 같이, 정책 신경망(220)은 디컨볼루션(de-convolutional) 계층 세트가 뒤따르는 완전 연결 신경망을 포함하는 디컨볼루션 신경망이다. 정책 신경망(220)은 선택적으로 다른 유형의 신경망 계층, 예를 들어 배치(batch) 정규화 계층 또는 다른 종류의 정규화 계층을 포함할 수 있다. 그러나, 다른 예에서 정책 신경망(220)은 예를 들어, 순환 신경망, 즉 위치에 대해 스코어를 생성하는 출력 계층을 가진, 하나 이상의 순환 신경망 계층, 예를 들어 장기 단기 기억(LSTM) 계층, 게이트 순환 단위(GRU) 계층, 또는 다른 유형의 순환 계층을 포함하는 신경망일 수 있다. 예를 들어, 스코어가 확률인 경우 출력 계층는 소프트맥스 계층일 수 있다.
사용될 때 가치 신경망(230)은 각 특정 시간 단계에서, 인코딩된 표현(212)을 처리하여 특정 시간 단계에서 배치의 현재 상태 값을 추정하는 값 추정치를 생성하도록 구성된다. 현재 상태의 값은 현재 상태로부터 시작하여 즉, 현재 부분 배치로부터 시작하여 생성된 배치에 대한 보상 함수의 출력 추정치이다. 예를 들어, 가치 신경망(230)은 순환 신경망일 수 있거나 피드포워드 신경망, 예를 들어 하나 이상의 완전 연결 계층을 포함하는 신경망일 수 있다.
이 값 추정치는 신경망(110)의 트레이닝 동안, 즉 사용 가능한 값 추정치에 의존하는 강화 학습 기술을 사용할 때 사용될 수 있다. 즉, 노드 배치 신경망을 트레이닝하는데 사용되는 강화 학습 기법이 값 추정치를 요구할 때, 노드 배치 신경망(110)은 또한 강화 학습 기술에 필요한 값 추정치를 생성하는 가치 신경망(230)을 포함한다.
노드 배치 신경망(110)을 트레이닝하는 것은 아래에서 더 상세히 설명될 것이다.
도 2의 예에 도시된 바와 같이, 입력 기능 표현은 넷리스트에 있는 일부 또는 모든 노드의 각각의 벡터화된 표현("매크로 특징"), 넷리스트 데이터에 있는 두 개의 개별 노드를 각각 연결하는 에지로 넷리스트에 있는 노드들 간의 연결을 나타내는 "넷리스트 그래프 데이터", 및 특정 시간 단계에 배치되는 매크로 노드를 식별하는 "현재 매크로 ID"를 포함한다. 특정 예로서, 입력 특징 표현은 매크로 노드만의, 매크로 노드와 표준 셀 클러스터의, 또는 매크로 노드와 표준 셀 노드의, 각각의 벡터화된 표현을 포함할 수 있다.
각각의 벡터화된 표현은 대응하는 노드를 특징짓는다. 특히, 이미 배치된 각 노드에 대해, 벡터화된 표현은 칩 표면 상의 노드 위치를 식별하는 데이터, 예를 들어 노드의 중심 또는 노드의 다른 지정된 부분의 좌표를 포함하고, 아직 배치되지 않은 각 노드에 대해, 벡터화된 표현은 노드가 아직 배치되지 않았음을 나타내는 데이터, 예를 들어 노드가 아직 칩 표면 상에 배치되지 않았음을 나타내는 디폴트 좌표를 포함한다. 벡터화된 표현은 또한 노드를 특징짓는 다른 정보, 예를 들어 노드의 유형, 노드의 치수, 예를 들어 노드의 높이 및 폭 등을 포함할 수 있다.
도 2의 예에서, 인코더 신경망(210)은 넷리스트의 노드들의 벡터화된 표현을 처리하여 (i) 넷리스트 내의 노드들의 벡터화된 표현의 넷리스트 임베딩 및 (i) 특정 시간 단계에 배치될 매크로 노드를 나타내는 현재 노드 임베딩을 생성하는 그래프 인코더 신경망(214)을 포함한다. 임베딩은 고정 차원 공간에서의 숫자 표현, 즉 고정된 숫자 값의 정렬된 모음션이다. 예를 들어, 임베딩은 벡터 또는 부동 소수점 값의 행렬 또는 다른 유형의 숫자 값일 수 있다.
특히, 그래프 인코더 신경망(214)은 넷리스트 데이터의 각 에지에 대한 각각의 에지 임베딩을 예를 들어 무작위로 초기화하고, 노드 임베딩이 노드에 대한 각각의 벡터화된 표현과 동일하도록 넷리스트 데이터의 각 노드에 대한 개별 노드 임베딩을 초기화한다.
그런 다음, 그래프 인코더 신경망(214)은 복수의 메시지 전달 반복 각각에서 임베딩을 업데이트함으로써 노드 및 에지 임베딩을 반복적으로 업데이트한다.
마지막 메시지 전달 반복 후에, 그래프 인코더 신경망(214)은 노드 및 에지 임베딩으로부터 넷리스트 임베딩 및 현재 노드 임베딩을 생성한다.
특정 예로서, 신경망(214)은 마지막 메시지 전달 반복 후에 에지 임베딩을 결합함으로써 넷리스트 임베딩을 생성할 수 있다. 예를 들어, 시스템은 마지막 메시지 전달 반복 후 에지 임베딩에 평균 감소(reduce mean) 함수를 적용함으로써 넷리스트 임베딩을 계산할 수 있다.
다른 특정 예로서, 신경망(214)은 현재 노드에 대한 현재 노드 임베딩이 마지막 메시지 전달 반복 이후의 현재 노드에 대한 임베딩과 동일하도록 설정할 수 있다.
신경망(214)은 다양한 메시지 전달 기술 중 임의의 것을 사용하여 각 메시지 전달 반복에서 노드 및 에지 임베딩을 업데이트할 수 있다.
특정 예로서, 각 메시지 전달 반복에서, 신경망(214)은 에지로 연결된 2개의 노드에 대한 개별 노드 임베딩을 사용하여 각 에지에 대한 에지 임베딩을 업데이트한다.
각각의 반복에서, 주어진 에지에 대한 임베딩을 업데이트하기 위해, 네트워크(214)는 적어도 에지에 의해 연결된 2개의 노드에 대한 노드 임베딩으로부터 집계(된) 표현을 생성하고, 제1 완전 연결 신경망을 사용하여 그 집계 표현을 처리하여 주어진 에지에 대한 업데이트된 에지 임베딩을 생성한다. 일부 구현에서, 각 에지는 넷리스트 데이터에서 동일한 가중치, 즉 1을 갖는다. 일부 다른 구현에서, 각 에지는 넷리스트 데이터의 개별 가중치와 관련되고, 시스템은 에지에 의해 연결된 2개의 노드에 대한 노드 임베딩 및 넷리스트 데이터의 에지와 관련된 가중치로부터 집계 표현을 생성한다. 각 에지에 대한 가중치는 예를 들어 신경망의 트레이닝과 공동으로 학습될 수 있다.
주어진 메시지 전달 반복에서 주어진 노드에 대한 임베딩을 업데이트하기 위해, 시스템은 노드에 연결된 에지들에 대한 개별 에지 임베딩을 사용하여 노드에 대한 노드 임베딩을 업데이트한다. 예를 들어, 시스템은 노드에 연결된 에지들에 대한 개별 에지 임베딩을 평균화할 수 있다.
입력 특징 표현은 노드의 넷리스트를 특징짓는 "넷리스트 메타데이터"를 선택적으로 포함할 수도 있다. 넷리스트 메타데이터는 넷리스트를 특징짓는 임의의 적절한 정보를 포함할 수 있다. 예를 들어, 정보에는 기본 반도체 기술(수평 및 수직 라우팅 용량), 넷리스트에 있는 네트(에지), 매크로 및 표준 셀 클러스터의 총 수, 캔버스 크기(즉, 칩 표면의 크기), 또는 그리드의 행과 열의 수에 관한 임의의 정보가 포함될 수 있다.
입력 특징 표현이 넷리스트 메타데이터를 포함하는 경우, 인코더 신경망(210)은 넷리스트 메타데이터 임베딩을 생성하기 위해 메타데이터를 처리하는 완전 연결 신경망을 포함할 수 있다.
인코더 신경망(210)은 적어도 넷리스트 내의 노드들의 벡터화된 표현의 넷리스트 임베딩 및 특정 시간 단계에 배치될 매크로 노드를 나타내는 현재 노드 임베딩으로부터 인코딩된 표현을 생성한다. 인코더 신경망(210)이 또한 넷리스트 메타데이터 임베딩을 생성할 때, 시스템은 또한 넷리스트 메타데이터 임베딩을 사용하여 인코딩된 표현을 생성한다.
특정 예로서, 신경망(210)은 넷리스트 임베딩, 현재 노드 임베딩, 및 넷리스트 메타데이터 임베딩을 연결(concatenate)한 다음, 완전 연결 신경망을 사용하여 그 연결을 처리하여 인코딩된 표현을 생성할 수 있다.
시스템은 또한 칩의 위치 밀도, 즉 그리드에 있는 사각형의 밀도을 추적한다. 특히, 시스템은 해당 위치가 점유되는 정도를 나타내는 각 위치에 대한 밀도 값을 유지한다. 노드가 주어진 위치에 배치된 경우, 해당 위치의 밀도 값은 1(또는 해당 위치가 완전히 점유되었음을 나타내는 다른 최대값)과 동일하게 설정된다. 노드가 주어진 위치에 배치되지 않은 경우, 해당 위치의 밀도 값은 해당 위치를 통과하는 에지 수를 나타낸다. 주어진 위치에 대한 밀도 값은 또한 해당 위치에 대한 값을 1로 설정함으로써 칩 표면의 특정 부분을 차단하는 클록 스트랩 또는 기타 구조와 같은 막힘(blockages)을 반영할 수 있다.
일단 정책 신경망(220)이 시간 단계에서 스코어 분포를 생성하면, 시스템은 밀도를 사용하여 수정된 스코어 분포를 생성한 다음 그 수정된 스코어 분포를 사용하여 시간 단계에 해당하는 노드를 할당한다. 특히, 시스템은 임계값을 충족하는, 예를 들어 임계값을 초과하는 밀도 값을 갖는 임의의 위치에 대한 스코어를 0으로 설정함으로써 스코어 분포를 수정한다.
예를 들어, 시스템은 수정된 스코어 분포에서 가장 높은 스코어를 갖는 위치에 노드를 할당하거나 각 위치가 선택될 가능성과 동일한 가능성을 갖도록 상기 수정된 스코어 분포에서 위치를 샘플링하고, 그런 다음 샘플링된 위치에 노드를 할당할 수 있다.
이것은 스코어 분포에 적용될 수 있는 그리드 밀도 마스크, 즉 임계값 이상의 밀도를 갖는 임의의 위치에 대한 값이 0이고 임계값을 초과하지 않는 밀도를 갖는 임의의 위치에 대한 값은 수정된 스코어 분포를 생성하기 위해 1인 마스크로서 도 2에 표시된다.
특정 예로서, 임계값은 1과 동일할 수 있고 시스템은 노드가 이미 배치된, 즉 밀도 값이 1인 임의의 위치에 대한 스코어를 0으로 설정할 수 있다. 다른 예로서, 임계값은 1보다 작을 수 있으며, 이는 시스템이 또한 노드는 갖지 않지만 노드를 통과하는 배선이 너무 많은 위치(즉, 위치와 관련된 배선 수가 임계값 이상인)에 대해 스코어를 0으로 설정함을 나타낸다.
신경망(110)이 고품질 배치를 생성하는데 사용되기 위해, 시스템(또는 다른 시스템)은 트레이닝 데이터에 대해 신경망을 트레이닝한다.
일부 구현에서, 시스템은 보상 함수에 의해 측정된 바와 같이 수신되는 예상 보상을 최대화하기 위해 강화 학습을 사용하여 신경망(110)을 종단간 트레이닝한다. 보상 함수는 일반적으로 노드 배치 신경망(110)을 사용하여 생성된 배치의 품질을 측정한다. 보상 함수에 대해서는 도 3을 참조하여 아래에서 더 자세히 설명될 것이다.
그러나, 강화 학습을 통해서만 신경망을 트레이닝하면 새로운 넷리스트 데이터에 대한 일반화의 결과가 좋지 않을 수 있으므로 시스템은 예를 들어 새 넷리스트가 수신될 때마다 처음부터 신경망을 다시 트레이닝해야 할 수 있다.
신경망(110)의 일반화를 개선하기 위해, 시스템은 지도 학습을 통해 인코더 신경망(210)을 트레이닝시킨 다음 강화 학습을 통해 정책 신경망(220)을 트레이닝할 수 있다. 이와 같은 트레이닝 프로세스는 도 3을 참조하여 아래에서 더 자세히 설명된다.
도 3은 노드 배치 신경망을 트레이닝하기 위한 예시적인 프로세스(300)의 흐름도이다. 편의상, 프로세스(300)는 하나 이상의 위치에 위치한 하나 이상의 컴퓨터의 시스템에 의해 수행되는 것으로 설명될 것이다. 예를 들어, 배치 생성 시스템, 예를 들어 적절하게 프로그래밍된 도 1의 배치 생성 시스템(100)은 프로세스(300)를 수행할 수 있다.
시스템은 프로세스(300)를 수행하여 노드 배치 신경망을 트레이닝하기 위해, 즉 네트워크 파라미터의 트레이닝된 값을 결정할 수 있다.
일부 구현에서, 시스템은 노드 배치 신경망의 트레이닝을 많은 다른 작업자(worker), 즉 다수의 상이한 동종 또는 이종 컴퓨팅 디바이스, 즉 CPU, GPU 또는 ASIC을 사용하여 트레이닝 계산을 수행하는 디바이스에 걸쳐 분산한다. 이러한 구현들 중 일부에서, 노드 배치 신경망의 트레이닝 속도를 높이기 위해 단계(300)의 일부 또는 전부는 서로 비동기적으로 동작하는 많은 상이한 작업자에 의해 병렬로 수행될 수 있다. 다른 구현에서, 상이한 작업자는 신경망의 트레이닝 속도를 높이기 위해 프로세스(300)의 일부 또는 모든 단계를 병렬로 수행하도록 동기적으로 동작한다.
시스템은 프로세스(300)를 사용하여 (i) 복수의 시간 단계 각각에서, 집적 회로 칩의 표면 상의 노드들의 넷리스트 배치의 현재 상태를 나타내는 데이터를 포함하는 입력 표현을 수신하고 그 입력 표현을 처리하여 인코더 출력을 생성하도록 구성된 인코더 신경망 및 (ii) 복수의 시간 단계의 각각에서, 인코더 신경망에 의해 생성된 인코더 출력으로부터 생성된 인코딩된 표현을 수신하고 그 인코딩된 표현을 처리하여 집적 회로 칩의 표면 상의 복수의 위치에 걸쳐 스코어 분포를 생성하도록 구성된 정책 신경망을 포함하는 임의의 노드 배치 신경망을 트레이닝할 수 있다.
이러한 신경망의 한 예는 도 2를 참조하여 위에서 설명한 것이다.
이러한 신경망의 또 다른 예는 2019년 12월 4일에 '신경망을 이용한 집적 회로 플로어플랜 생성'이란 명칭으로 출원된 번호 16/703,837에 설명되어 있으며, 전체 내용은 그 전체가 본 명세서에 포함된다.
시스템은 지도된(supervised) 트레이닝 데이터를 획득한다(단계 302).
지도(된) 트레이닝 데이터는 (i) 각각이 노드의 개별 넷리스트의 개별 배치를 나타내는 복수의 트레이닝 입력 표현, 및 (ii) 각 트레이닝 입력 표현에 대한, 노드의 개별 네트리스트 배치의 품질을 측정하는 보상 함수의 개별 목표 값을 포함한다.
보다 구체적으로, 보상 함수은 최적화될 때 생성된 배치를 사용하여 제조된 칩이 예를 들어 전력 소비, 발열 또는 타이밍 성능 중 하나 이상의 측면에서 우수한 성능을 나타내는 생성된 배치의 특정 특성을 측정한다.
특히, 보상 함수는 하나 이상의 특성에 대한 개별 항을 포함한다. 예를 들어, 다중 항이 있는 경우, 보상 함수는 다중 항의 합 또는 가중 합일 수 있다.
일 예로서, 보상 함수는 배선(wire) 길이 측정, 즉 칩 표면 상의 배선의 배선 길이를 측정하는 항을 포함할 수 있으며, 이는 칩 표면 상의 노드 사이의 배선 길이가 짧을수록 더 길다.
예를 들어, 배선 길이는 맨해튼 거리의 음수이거나 칩 표면 상의 모든 인접 노드 사이의 다른 거리 측정값일 수 있다.
다른 예로서, 배선 길이 측정은 넷리스트의 모든 노드에 대한 경계 상자의 절반 둘레를 사용하여 배선 길이를 근사하는 절반 둘레 배선 길이(half-perimeter wirelength : HPWL)를 기반으로 할 수 있다. HPWL을 계산할 때, 시스템은 표준 셀 클러스터를 떠나는 모든 배선이 클러스터의 중심에서 시작된다고 가정할 수 있다. 특히, 시스템은 넷리스트의 각 에지에 대한 HPWL을 계산한 다음 넷리스트의 모든 에지에 대한 HPWL의 정규화된 합계의 음수와 동일한 배선 길이 측정치를 계산할 수 있다.
보상 함수에 배선 길이를 측정하는 항을 포함하면 배선 길이가 배선 비용을 대략적으로 측정하고 전력 및 타이밍과 같은 다른 중요한 메트릭과도 상관 관계가 있다는 장점이 있다.
다른 예로서, 보상 함수는 혼잡도 측정치, 즉 혼잡도를 측정하는 항을 포함할 수 있으며, 이것은 컴퓨터 칩 표면의 혼잡도가 낮을 때 더 높다. 혼잡도는 칩 상의 주어진 영역(연속 영역일 필요는 없음)에서 사용 가능한 배선 리소스와 그 영역을 통과하는 실제 배선 간의 차이를 측정한 것이다. 예를 들어, 혼잡도는 사용 가능한 배선 리소스(예를 들어, 해당 영역을 통과할 수 있는 최대 배선 수)에 대한 생성된 배치에 있는 영역을 통과하는 배선의 비율로 정의될 수 있다. 특정 예로서, 혼잡도 측정은 표면의 수평 및 수직 에지를 가로질러 배선의 밀도를 추적할 수 있다.
특히, 시스템은 넷리스트에 대한 라우팅 모델(예를 들어, 네트 경계 상자, 상위 L, 하위 L, A*, 최소 스패닝 트리 또는 실제 라우팅된 네트 등)을 사용할 수 있다. 이 라우팅 모델에 기초하여, 혼잡도 측정치는 표면 상의 각 위치에 대해, 해당 위치에 대한 라우팅 모델의 배선 추정과 배치 내의 사용 가능한 배선 리소스와의 비율을 결정함으로써 계산될 수 있다.
다른 예로서, 시스템은 예를 들어, 위에서 설명된 바와 같이 계산된, 각각의 위치에서 개별적으로 수직 및 수평 할당을 추적함으로써 혼잡도 측정치를 계산할 수 있다. 그런 다음 시스템은 수직 및 수평 방향 모두에서 각 방향에 있는 위치들의 수에 따라 5×1 컨볼루션 필터 또는 다른 크기의 필터와 같은 컨볼루션 필터를 실행함으로써 혼잡도 추정치를 평활화할 수 있다. 그런 다음 시스템은 혼잡도 추정치의 상위 10%, 15% 또는 20% 평균의 음수로 혼잡도 측정치를 계산할 수 있다.
다른 예로서, 보상 함수는 타이밍 항, 즉 칩의 성능이 더 좋을 때 더 높은 디지털 로직의 타이밍을 측정하는 항을 포함할 수 있다(예를 들어, 보상 함수는 특정 계산 작업을 수행하는데 더 적은 시간이 소요되는 개별 칩의 배치에 대해 상응하는 더 높은 값을 취함). 배치의 타이밍 또는 성능은 정적 타이밍 분석(STA)를 사용하여 측정될 수 있다. 이 측정에는 (내부 셀 지연 및 배선 지연을 포함하는) 로직 경로에 대한 스테이지 지연 계산 및 안전한 작동을 위해 클록이 실행할 수 있는 최대 속도를 결정하는 중요한 경로 찾기가 포함될 수 있다. 타이밍의 현실적인 관점을 위해, 노드 배치가 진행됨에 따라 더 길거나 짧아지는 경로를 수용하려면 논리 최적화가 필요할 수 있다.
다른 예로서, 보상 함수는 칩에 의해 소비될 전력 또는 에너지를 측정하는 하나 이상의 항, 즉 칩에 의해 소비될 전력이 더 낮을 때 더 높은 하나 이상의 항을 포함할 수 있다.
다른 예로서, 보상 함수는 배치의 면적을 측정하는, 즉 배치가 차지하는 면적이 낮을 때 더 높은 하나 이상의 항을 용어를 포함할 수 있다.
일부 경우, 시스템은 다른 시스템으로부터 지도 트레이닝 데이터를 수신한다.
다른 경우, 시스템은 지도 트레이닝 데이터를 생성한다. 특정 예로서, 복수의 트레이닝 입력 표현으로 표현되는 배치는 다른 노드 배치 신경망, 예를 들어 다른 넷리스트에 대한 다른 노드 배치 신경망의 트레이닝 동안 다른 시점에서, 도 2를 참조하여 위에서 설명된 것보다 단순한 아키텍처를 갖는 노드 배치 신경망의 출력에 기초하여 생성될 수 있다. 이것은 다양한 품질의 배치를 보장할 수 있다.
예를 들어, 시스템은 다양한 가속기 넷리스트 세트를 선택한 다음 각 넷리스트에 대한 배치를 생성함으로써 지도 트레이닝 데이터를 생성할 수 있다. 각 넷리스트에 대해 다양한 배치를 생성하기 위해, 시스템은 예를 들어 강화 학습을 통해 넷리스트 데이터에 대한 다양한 혼잡 가중치(0~1 범위) 및 무작위 시드(seeds)에서 더 간단한 정책 네트워크를 트레이닝하고 정책 트레이닝 과정에서 각 배치의 스냅샷을 수집할 수 있다. 각 스냅샷에는 배치의 표현과 해당 배치에 대한 보상 함수에 의해 생성된 보상 값이 포함된다. 트레이닝되지 않은 정책 네트워크는 랜덤 가중치로 시작하고 생성된 배치의 품질은 낮지만 정책 네트워크가 트레이닝됨에 따라 생성된 배치의 품질이 향상되므로 시스템은 다양한 품질의 배치로 다양한 데이터 세트를 수집할 수 있다.
일부 구현에서, 트레이닝 입력 표현은 모두 최종 배치, 즉 즉 해당 넷리스트의 모든 매크로 노드가 배치된 배치를 나타낼 수 있다. 일부 다른 구현에서, 트레이닝 입력 표현은 배치 생성 프로세스의 다양한 스테이지에서의 배치를 나타낼 수 있다. 즉, 일부 표현은 매크로 노드 중 일부만 배치된 부분 배치를 나타낼 수 있다.
시스템은 지도 학습을 통해 지도 트레이닝 데이터에 대해 보상 예측 신경망과 공동으로 인코더 신경망을 트레이닝한다(단계 304).
보상 예측 신경망은 각각의 트레이닝 인코더 입력에 대해, 트레이닝 입력 표현으로부터 인코더 신경망에 의해 생성된 인코더 출력을 수신하고 인코딩된 표현을 처리하여 트레이닝 입력 표현으로 표현된 배치에 대한 보상 함수의 예측 값을 생성하도록 구성된다.
보상 예측 신경망은 예를 들어 인코더 출력을 수신하고 그 인코더 출력을 처리하여 보상 예측을 생성하는 완전 연결 신경망일 수 있다. 인코더 신경망이 도 2를 참조하여 전술한 아키텍처를 갖는 경우, 인코더 출력은 넷리스트 그래프 임베딩 및 메타데이터 임베딩의 연결일 수 있다.
예를 들어, 시스템은 인코더 신경망과 보상 예측 신경망을 트레이닝하여 주어진 트레이닝 표현에 대해, 보상 함수의 목표 값과 트레이닝 입력 표현에 대한 보상 함수의 예측 값 사이의 오차를 측정하는 목적 함수(예를 들어, 평균 제곱 오차 손실)를 최적화할 수 있다.
그런 다음 시스템은 강화 학습을 통해 정책 신경망을 트레이닝하여 보상 함수을 최대화하는 배치로 이어지는 스코어 분포를 생성한다(단계 306). 시스템은 다양한 강화 학습 기술을 사용하여 노드 배치 신경망을 트레이닝할 수 있다.
예를 들어, 시스템은 트레이닝을 위해 강화(REINFORCE) 또는 근접 정책 최적화(Proximal Policy Optimization : PPO))와 같은 정책 기울기(gradient) 기술을 사용할 수 있다. 이러한 경우, 신경망이 가치 예측 신경망을 포함하는 경우, 가치 신경망에 의해 생성된 가치 예측은 강화 학습 손실 함수의 기울기를 계산할 때 보상 함수 값을 수정하는 베이스라인(기준) 값을 계산하는데 사용될 수 있다.
강화 학습을 통해 정책 신경망을 트레이닝하는 동안, 시스템은 지도 트레이닝 데이터에 대한 트레이닝을 통해 결정된 값으로 고정된 인코더 신경망의 파라미터 값을 유지할 수 있다.
특히, 주어진 칩에 대해 주어진 넷리스트에 대한 강화 학습을 통해 정책 신경망을 트레이닝시키면서, 시스템은 전술한 바와 같이 배치 신경망을 사여 주어진 넷리스트에 매크로 노드를 하나씩 배치할 수 있다. 매크로 노드들이 배치된 후, 시스템은 위에서 설명한 바와 같이 표준 셀 노드를 배치하여 최종 배치를 결정할 수 있다. 그런 다음 시스템은 예를 들어 위에서 설명한 필수 수량을 계산하므로써 최종 배치에 대한 보상 함수를 계산하고, 보상 값, 매크로 노드 배치 및 배치 신경망에 의해 생성된 스코어 분포를 사용하여 강화 학습을 통해 배치 신경망을 트레이닝할 수 있다. 따라서, 배치 신경망은 매크로 노드를 배치하는데만 사용되지만, 보상 값은 표준 셀 노드도 배치된 후에만 계산되므르로, 배치 신경망이 표준 셀 노드의 고품질 배치를 허용하는 매크로 노드 배치를 생성할 수 있도록 보장한다.
시스템은 새로운 넷리스트 데이터를 수신한다(단계 308).
일부 구현에서, 시스템은 트레이닝된 노드 배치 신경망을 사용하여, 즉 트레이닝된 노드 배치 신경망에 의해 생성된 스코어 분포를 사용하여 복수의 시간 단계 각각에서 새로운 넷리스트 데이터로부터 개별 노드를 배치함으로써 새로운 넷리스트 데이터에 대한 집적 회로 배치를 생성한다(단계 310). 즉, 시스템은 노드 배치 신경망을 더 이상 트레이닝하지 않고 새로운 넷리스트 데이터에 대한 배치를 생성한다.
즉, 지도 학습을 통해 인코더 신경망을 트레이닝한 후 강화 학습을 통해 정책 신경망을 트레이닝함으로써, 시스템은 노드 배치 신경망을 트레이닝하여 임의의 추가 트레이닝 없이 새로운 넷리스트로 일반화한다.
일부 다른 구현에서, 새로운 넷리스트에 대해 생성된 배치의 품질을 추가로 개선하기 위해, 시스템은 먼저 강화 학습을 통해 새로운 넷리스트 데이터에 대해 상기 트레이닝된 노드 배치 신경망을 미세 조정한 다음(단계 312), 전술한 바와 같이 미세 조정된 노드 배치 신경망을 사용하여 새로운 넷리스트 데이터에 대한 집적 회로 배치를 생성한다(단계 314).
시스템은 미세 조정 중에 위에서 설명한 것과 동일한 강화 학습 기술을 사용할 수 있으며, 구현에 따라 미세 조정 중에 인코더 신경망의 파라미터 값을 고정하거나 인코더 신경망의 파라미터 값을 업데이트할 수 있다.
도 4는 주어진 시간 단계에서 매크로 노드를 배치하기 위한 예시적인 프로세스(400)의 흐름도이다. 편의상, 프로세스(400)는 하나 이상의 위치에 위치한 하나 이상의 컴퓨터의 시스템에 의해 수행되는 것으로 설명될 것이다. 예를 들어, 배치 생성 시스템, 예를 들어 적절하게 프로그래밍된 도 1의 배치 생성 시스템(100)은 프로세스(400)를 수행할 수 있다.
시스템은 매크로 노드 순서에 따라 각 매크로 노드를 배치하기 위해 시간 단계 시퀀스에 있는 각 시간 단계에 대해 프로세스(400)를 수행할 수 있다.
일부 구현에서, 시스템은 넷리스트 데이터와 함께 입력으로서 매크로 노드 순서를 수신한다.
일부 다른 구현에서, 시스템은 넷리스트 데이터로부터 매크로 노드 순서를 생성할 수 있다.
일 예로서, 시스템은 크기에 따라(예를 들어, 내림차순 크기에 따라) 매크로 노드를 정렬하고 토폴로지 정렬을 사용하여 연결을 끊을 수 있다. 더 큰 매크로를 먼저 배치함으로써 시스템은 이후 매크로를 위한 실현 가능한 배치가 없을 가능성을 줄인다. 토폴로지 정렬은 연결된 노드들을 서로 가깝게 배치하는 방법을 정책 네트워크가 학습하는데 도움이 될 수 있다.
다른 예로서, 시스템은 넷리스트 데이터로부터 도출된 입력을 처리하도록 구성된 매크로 노드 순서 예측 기계 학습 모델을 통해 넷리스트 데이터로부터 도출된 입력을 처리하여 매크로 노드 순서를 정의하는 출력을 생성할 수 있다.
다른 예로서, 노드 배치 신경망은 매크로 노드에 대한 확률 분포를 생성하도록 추가로 구성될 수 있다. 그런 다음, 시스템은 복수의 시간 단계의 각 특정 시간 단계에 대해, 매크로 노드에 대한 확률 분포에 기초하여 특정 시간 단계 이후의 다음 시간 단계에 배치될 매크로 노드를 선택함으로써 매크로 노드 순서를 동적으로 생성할 수 있다. 예를 들어, 시스템은 가장 높은 확률을 가진 아직 배치되지 않은 매크로 노드를 선택할 수 있다.
시스템은 넷리스트 데이터로부터, 적어도 (i) 매크로 노드 순서에서 주어진 시간 단계에 배치될 특정 매크로 노드 이전에 있는 임의의 매크로 노드 칩 표면 상의 개별 위치 및 (ii) 주어진 시간 단계에 배치될 특정 매크로 노드를 특징짓는 입력 표현을 생성한다(단계 402). 선택적으로, 입력 표현은 넷리스트, 넷리스트 메타데이터 또는 둘 다의 노드들에 대한 기타 정보를 포함할 수도 있다. 입력 표현의 예는 도 2를 참조하여 위에서 설명되었다.
시스템은 복수의 파라미터("네트워크 파라미터")를 갖는 노드 배치 신경망을 사용하여 입력 표현을 처리한다(단계 404). 노드 배치 신경망은 네트워크 파라미터의 현재 값에 따라 입력 표현을 처리하여 집적 회로 칩의 표면 상의 복수의 위치에 대한 스코어 분포를 생성하도록 구성된다.
시스템은 스코어 분포를 사용하여 특정 시간 단계에 배치될 매크로 노드를 복수의 위치로부터의 위치에 할당한다(단계 406). 위에서 설명한 바와 같이, 시스템은 현재 배치의 추적된 밀도에 기초하여 즉, 임계값을 만족하는 밀도 값을 갖는 모든 위치에 대한 스코어를 0으로 설정함으로써 스코어 분포를 수정하고, 그런 다음 수정된 스코어 분포로부터 위치를 선택할 수 있다.
일부 구현에서, 시스템은 추가 정보를 사용하여 스코어 분포를 추가로 수정할 수 있다.
특히, 위에서 설명된 바와 같이, 일부 구현에서 신경망은 다수의 상이한 칩의 다수의 상이한 넷리스트에 대한 다수의 상이한 배치에서 트레이닝된다. 이를 위해서는 신경망이 다양한 크기의 칩 표면에 걸쳐 스코어 분포를 생성해야 할 수 있다. 즉, 복수의 위치가 집적 회로 칩의 표면 위에 오버레이된 N×M 그리드의 그리드 정사각형인 경우, 다른 칩은 N 및 M에 대해 다른 값을 가질 수 있다. 이를 설명하기 위해, 시스템은 고정 크기 maxN×maxM 그리드에 대해 스코어를 생성하도록 신경망을 구성할 수 있다. 현재 칩에 대한 N 값이 maxN보다 작으면, 시스템은 추가 행에 대한 스코어를 0으로 설정할 수 있다. 유사하게, 현재 칩에 대한 M 값이 maxM보다 작을 때, 시스템은 추가 열에 대한 스코어를 0으로 설정할 수 있다.
본 명세서는 시스템 및 컴퓨터 프로그램 컴포넌트와 관련하여 "구성된"이라는 용어를 사용한다. 하나 이상의 컴퓨터로 구성된 시스템이 특정 동작이나 액션을 수행하도록 구성된다는 것은 시스템에 소프트웨어, 펌웨어, 하드웨어 또는 동작시 시스템으로 하여금 동작이나 액션을 수행하게 하는 이들의 조합이 설치되어 있음을 의미한다. 하나 이상의 컴퓨터 프로그램이 특정 동작 또는 액션을 수행하도록 구성된다는 것은 데이터 처리 장치에 의해 실행될 때 그 장치로 하여금 동작 또는 액션을 수행하게 하는 명령들이 하나 이상의 프로그램에 포함되어 있음을 의미한다.
본 명세서에 기술된 주제 및 기능적 동작들의 실시예는 디지털 전자 회로, 유형적으로 구현된 컴퓨터 소프트웨어 또는 펌웨어, 본 명세서에 개시된 구조 및 그의 구조적 등가물을 포함하는 컴퓨터 하드웨어, 또는 이들 중 하나 이상의 조합으로 구현될 수 있다. 본 명세서에 기술된 주제의 실시예는 하나 이상의 컴퓨터 프로그램, 즉, 데이터 처리 장치에 의해 실행되거나 데이터 처리 장치의 동작을 제어하기 위해 유형의 비-일시적 저장 매체에 인코딩된 컴퓨터 프로그램 명령의 하나 이상의 모듈로 구현될 수 있다. 컴퓨터 저장 매체는 기계 판독 가능 저장 디바이스, 기계 판독 가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 디바이스, 또는 이들 중 하나 이상의 조합일 수 있다. 대안적으로 또는 추가적으로, 프로그램 명령은 데이터 처리 장치에 의한 실행을 위해 적절한 수신기 장치로 전송하기 위해 정보를 인코딩하도록 생성된 인위적으로 생성된 전파 신호, 예를 들어 기계 생성 전기, 광학 또는 전자기 신호에 인코딩될 수 있다.
"데이터 처리 장치"라는 용어는 데이터 처리 하드웨어를 지칭하며, 예를 들어 프로그램 가능 프로세서, 컴퓨터, 또는 다중 프로세서 또는 컴퓨터를 포함하여 데이터를 처리하기 위한 모든 종류의 장치, 디바이스 및 기계를 포함한다. 장치는 또한 예를 들어 FPGA(필드 프로그램 가능 게이트 어레이) 또는 ASIC(주문형 집적 회로)와 같은 특수 목적 논리 회로일 수 있거나 이를 추가로 포함할 수 있다. 장치는 하드웨어에 추가하여 컴퓨터 프로그램을 위한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 선택적으로 포함할 수 있다.
프로그램, 소프트웨어, 소프트웨어 애플리케이션, 앱, 모듈, 소프트웨어 모듈, 스크립트 또는 코드라고도 지칭되거나 기술될 수 있는 컴퓨터 프로그램은 컴파일 또는 해석된 언어, 선언적 또는 절차적 언어를 포함한 모든 형태의 프로그래밍 언어로 작성될 수 있으며, 독립 실행형 프로그램 또는 모듈, 컴포넌트, 서브루틴 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 단위를 포함하여 모든 형태로 배포될 수 있다. 프로그램은 파일 시스템의 파일에 대응할 수 있지만 반드시 그런 것은 아니다. 프로그램은 예를 들어 마크업 언어 문서에 저장된 하나 이상의 스크립트, 문제의 프로그램 전용 단일 파일 또는 여러 조정 파일(예를 들어, 하나 이상의 모듈, 하위 프로그램 또는 코드 부분을 저장하는 파일)에 저장된 다른 프로그램 또는 데이터를 보유하는 파일의 일부에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 한 사이트에 있거나 여러 사이트에 분산되어 있고 데이터 통신 네트워크로 상호 연결된 여러 컴퓨터에서 실행되도록 배포될 수 있다.
본 명세서에서, "데이터베이스"라는 용어는 모든 데이터 모음을 지칭하는데 광범위하게 사용되는데, 데이터는 특정 방식으로 구조화되거나 전혀 구조화될 필요가 없으며 하나 이상의 위치에 있는 저장 디바이스에 저장될 수 있다. 따라서, 예를 들어, 인덱스 데이터베이스는 각각 다르게 구성되고 액세스될 수 있는 다수의 데이터 모음을 포함할 수 있다.
유사하게, 본 명세서에서 용어 "엔진"이라는 용어는 하나 이상의 특정 기능을 수행하도록 프로그래밍된 소프트웨어 기반 시스템, 서브시스템 또는 프로세스를 지칭하기 위해 광범위하게 사용된다. 일반적으로 엔진은 하나 이상의 위치에 있는 하나 이상의 컴퓨터에 설치된 하나 이상의 소프트웨어 모듈 또는 컴포넌트로 구현될 것이다. 일부 경우에, 하나 이상의 컴퓨터는 특정 엔진 전용이며, 다른 경우에는 다수의 엔진이 동일한 컴퓨터에 설치되어 실행될 수 있다.
본 명세서에 설명된 프로세스 및 논리 흐름은 입력 데이터에 대해 작동하고 출력을 생성함으로써 기능을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍 가능 컴퓨터에 의해 수행될 수 있다. 프로세스 및 논리 흐름은 FPGA 또는 ASIC과 같은 특수 목적 논리 회로 또는 특수 목적 논리 회로와 하나 이상의 프로그래밍된 컴퓨터의 조합에 의해 수행될 수도 있다.
컴퓨터 프로그램의 실행에 적합한 컴퓨터는 범용 또는 특수 목적 마이크로프로세서나 둘 모두, 또는 다른 종류의 중앙 처리 장치를 기반으로 할 수 있다. 일반적으로, 중앙 처리 장치는 판독 전용 메모리나 랜덤 액세스 메모리 또는 둘 다로부터 명령과 데이터를 수신한다. 컴퓨터의 요소는 명령을 수행하거나 실행하기 위한 중앙 처리 장치와 명령 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 중앙 처리 장치와 메모리는 특수 목적 논리 회로에 의해 보완되거나 통합될 수 있다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예를 들어 자기, 광자기 디스크 또는 광 디스크로부터 데이터를 수신하거나 이들로 데이터를 전송하거나 둘 모두를 포함하거나 작동 가능하게 연결된다. 그러나, 컴퓨터에는 그러한 디바이스가 필요하지 않다. 더욱이 컴퓨터는 휴대전화, PDA(Personal Digital Assistant), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS(Global Positioning System) 수신기, 또는 USB(Universal Serial Bus) 플래시 드라이브와 같은 휴대용 저장 디바이스에 내장될 수 있다.
컴퓨터 프로그램 명령 및 데이터를 저장하기에 적합한 컴퓨터 판독 가능 매체는 예를 들어 반도체 메모리 디바이스(예를 들어, EPROM, EEPROM 및 플래시 메모리 디바이스); 자기 디스크(예를 들어, 내부 하드 디스크 또는 이동식 디스크); 자기 광 디스크; 및 CD ROM과 DVD-ROM 디스크를 비롯하여 모든 형태의 비-휘발성 메모리, 매체 및 메모리 디바이스를 포함한다.
사용자와의 상호 작용을 제공하기 위해, 본 명세서에 설명된 주제의 실시예는 사용자에게 정보를 표시하기 위한 디스플레이 디바이스(예를 들어, CRT(음극선관) 또는 LCD(액정 디스플레이) 모니터)와 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스(예를 들어, 마우스 또는 트랙볼)을 갖는 컴퓨터에서 구현될 수 있다. 다른 종류의 디바이스를 사용하여 사용자와의 상호 작용도 제공할 수 있다. 예를 들어, 사용자에게 제공되는 피드백은 시각적 피드백, 청각적 피드백 또는 촉각적 피드백과 같은 임의의 형태의 감각적 피드백일 수 있으며, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함한 모든 형태로 수신될 수 있다. 또한, 컴퓨터는 예를 들어 웹 브라우저로부터 수신된 요청에 대한 응답으로 사용자 디바이스의 웹 브라우저로 웹 페이지를 전송함으로써 사용자가 사용하는 디바이스로 문서를 보내고 문서를 수신하여 사용자와 상호 작용할 수 있다. 또한, 컴퓨터는 문자 메시지 또는 다른 형태의 메시지를 개인 디바이스(예를 들어, 메시징 애플리케이션을 실행하는 스마트폰)으로 전송하고 사용자로부터 응답 메시지를 수신함으로써 사용자와 상호 작용할 수 있다.
기계 학습 모델을 구현하기 위한 데이터 처리 장치는 또한 예를 들어 기계 학습 트레이닝 또는 생산(즉, 추론, 워크로드)의 공통적이고 및 계산 집약적인 부분을 처리하기 위한 특수 목적 하드웨어 가속기 유닛을 포함할 수 있다.
기계 학습 모델은 기계 학습 프레임워크, 예를 들어, TensorFlow 프레임워크, Microsoft Cognitive Toolkit 프레임워크, Apache Singa 프레임워크 또는 Apache MXNet 프레임워크를 사용하여 구현 및 배포될 수 있다.
본 명세서에 기술된 주제의 실시예는 예를 들어 데이터 서버와 같은 백엔드 컴포넌트를 포함하거나, 애플리케이션 서버와 같은 미들웨어 컴포넌트를 포함하거나, 프론트엔드 컴포넌트(예를 들어, 그래픽 사용자 인터페이스가 있는 클라이언트 컴퓨터, 웹 브라우저 또는 사용자가 본 명세서에 설명된 주제의 구현과 상호 작용할 수 있는 앱)를 포함하거나, 또는 하나 이상의 백엔드, 미들웨어 또는 프론트 엔드 컴포넌트의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트는 통신 네트워크와 같은 디지털 데이터 통신의 모든 형태 또는 매체에 의해 상호 연결될 수 있다. 통신 네트워크의 예로는 LAN(Local Area Network) 및 WAN(Wide Area Network), 예를 들어 인터넷이 있다.
컴퓨팅 시스템은 클라이언트와 서버를 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 멀리 떨어져 있으며 일반적으로 통신 네트워크를 통해 상호 작용한다. 클라이언트와 서버의 관계는 각각의 컴퓨터에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램 덕분에 발생한다. 일부 실시예에서, 서버는 예를 들어 클라이언트로서 작용하는 디바이스와 상호작용하는 사용자로부터 데이터를 디스플레이하고 사용자로부터 사용자 입력을 수신하기 위해 데이터, 예를 들어 HTML 페이지를 사용자 디바이스로 전송한다. 사용자 디바이스에서 생성된 데이터, 예를 들어 사용자 상호작용의 결과는 디바이스로부터 서버에서 수신될 수 있다.
본 명세서는 많은 특정 구현 세부 사항을 포함하지만, 이는 임의의 발명의 범위 또는 청구될 수 있는 범위에 대한 제한으로 해석되어서는 안 되며, 오히려 특정 발명의 특정 실시예에 특정할 수 있는 특징에 대한 설명으로 해석되어야 한다. 별도의 실시예와 관련하여 본 명세서에 설명된 특정 특징은 단일 실시예에서 조합하여 구현될 수도 있다. 역으로, 단일 실시예의 맥락에서 설명된 다양한 특징은 또한 개별적으로 또는 임의의 적절한 하위 조합으로 다중 실시예에서 구현될 수 있다. 더욱이, 특징들이 특정 조합으로 작용하는 것으로 위에서 설명될 수 있고 심지어 초기에 그렇게 청구될 수도 있지만, 청구된 조합의 하나 이상의 특징은 일부 경우에 조합에서 제거될 수 있으며 청구된 조합은 하위 조합 또는 하위 조합의 변형에 관한 것일 수 있다.
유사하게, 동작들이 도면에 도시되어 있고 청구범위에 특정 순서로 인용되어 있지만, 이는 바람직한 결과를 달성하기 위해 이러한 동작들이 도시된 특정 순서 또는 순차적인 순서로 수행되거나 또는 모든 예시된 동작이 수행되어야 함을 요구하는 것으로 이해되어서는 안된다. 특정 상황에서는 멀티태스킹과 병렬 처리가 유리할 수 있다. 더욱이, 위에서 설명된 실시예에서 다양한 시스템 모듈 및 컴포넌트의 분리는 모든 실시예에서 그러한 분리를 요구하는 것으로 이해되어서는 안 되며, 설명된 프로그램 컴포넌트 및 시스템은 일반적으로 단일 소프트웨어 제품 또는 여러 소프트웨어 제품으로 패키징된다.
주제의 특정 실시예가 설명되었다. 다른 실시예는 다음 청구항의 범위 내에 있다. 예를 들어, 청구범위에 언급된 동작들은 다른 순서로 수행될 수 있으며 여전히 바람직한 결과를 얻을 수 있다. 일 예로서, 첨부 도면에 도시된 프로세스는 바람직한 결과를 달성하기 위해 도시된 특정 순서 또는 순차적인 순서를 반드시 필요로 하는 것은 아니다. 일부 경우 멀티태스킹 및 병렬 처리가 유리할 수 있다.

Claims (45)

  1. 하나 이상의 컴퓨터에 의해 수행되는 방법으로서, 상기 방법은,
    집적 회로 칩에 대한 넷리스트(netlist) 데이터를 획득하는 단계와, 상기 넷리스트 데이터는 집적 회로 칩의 복수의 집적 회로 컴포넌트 중 하나 이상에 각각 대응하는 복수의 노드 사이의 집적 회로 칩상의 연결을 지정하고, 상기 복수의 노드는 매크로 컴포넌트를 나타내는 매크로 노드와 표준 셀 컴포넌트를 나타내는 표준 셀 노드를 포함하고; 그리고
    칩의 표면에 매크로 노드들의 매크로 노드 배치를 생성하기 위해 매크로 노드 순서에 따라 복수의 시간 단계 각각에 개별 매크로 노드를 배치하는 단계를 포함하여, 넷리스트 데이터의 각 노드를 집적 회로 칩 표면의 개별 위치에 배치하는 집적 회로 칩 배치를 생성하는 단계와, 상기 배치하는 단계는 복수의 시간 단계의 각 특정 시간 단계에 대해:
    넷리스트 데이터로부터, 적어도 (i) 매크로 노드 순서에서 특정 시간 단계에 배치될 특정 매크로 노드 이전에 있는 임의의 매크로 노드의 칩 표면 상의 개별 위치 및 (ii) 특정 시간 단계에 배치될 특정 매크로 노드를 특징짓는 입력 표현을 생성하는 단계와;
    복수의 네트워크 파라미터를 갖는 노드 배치 신경망을 사용하여 입력 표현을 처리하는 단계와, 상기 노드 배치 신경망은 집적 회로 칩의 표면의 복수의 위치에 대한 스코어 분포를 생성하기 위해 네트워크 파라미터의 현재 값에 따라 입력 표현을 처리하도록 구성되고; 그리고
    스코어 분포를 이용하여 특정 시간 단계에 배치될 매크로 노드를 복수의 위치 중 하나의 위치에 할당하는 단계를 포함하고; 그리고
    매크로 노드 배치에 따라 배치된 매크로 노드에 의해 표현되는 매크로 컴포넌트를 포함하는 부분적으로 배치된 집적 회로 칩의 표면의 개별 위치에 표준 셀 각각을 배치하는 단계를 포함하여, 초기 집적 회로 칩 배치를 생성하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  2. 제1항에 있어서,
    상기 표준 셀 각각을 배치하는 단계는,
    표준 셀의 복수의 클러스터를 생성하도록 표준 셀을 클러스터링하는 단계와; 그리고
    그래프 배치 기술을 사용하여 상기 부분적으로 배치된 집적 회로 칩의 표면의 개별 위치에 표준 셀의 각 클러스터를 배치하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  3. 제1항에 있어서,
    상기 표준 셀 각각을 배치하는 단계는,
    그래프 배치 기술을 사용하여 상기 부분적으로 배치된 집적 회로 칩의 표면 의 개별 위치에 표준 셀 각각을 배치하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  4. 제2항 또는 제3항에 있어서,
    상기 그래프 배치 기술은 힘(force) 기반 기술인 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  5. 임의의 선행하는 항에 있어서,
    매크로 노드 순서를 생성하는 단계를 더 포함하는 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  6. 제5항에 있어서,
    상기 매크로 노드 순서를 생성하는 단계는,
    매크로 노드 순서를 정의하는 출력을 생성하기 위해 넷리스트 데이터로부터 도출된 입력을 처리하도록 구성된 매크로 노드 순서 예측 기계 학습 모델을 통해 상기 넷리스트 데이터로부터 도출된 입력을 처리하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  7. 제5항에 있어서,
    상기 매크로 노드 순서를 생성하는 단계는,
    크기에 따라 매크로 컴포넌트를 정렬하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  8. 임의의 선행하는 항에 있어서,
    상기 복수의 위치는,
    집적 회로 칩의 표면 위에 오버레이된 N×M 그리드의 그리드 정사각형을 포함하는 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  9. 제8항에 있어서,
    집적 회로의 표면을 N×M 그리드로 분할하는 방법을 정의하는 출력을 생성하기 위해 입력을 처리하도록 구성된 그리드 생성 기계 학습 모델을 사용하여 넷리스트 데이터, 집적 회로 칩의 표면을 특징짓는 데이터 또는 둘 모두로부터 도출된 입력을 처리하는 단계를 더 포함하는 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  10. 임의의 선행하는 항에 있어서,
    상기 노드 배치 신경망은,
    입력 표현을 수신하여 인코딩된 표현을 생성하기 위해 입력 표현을 처리하도록 구성된 인코더 신경망과, 그리고
    스코어 분포를 생성하기 위해 상기 인코딩된 표현을 처리하도록 구성된 정책 신경망을 포함하는 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  11. 제10항에 있어서,
    상기 입력 특징 표현은 넷리스트에 있는 각 노드의 각각의 벡터화된 표현을 포함하고, 그리고
    상기 인코더 신경망은 (i) 넷리스트에 있는 노드의 벡터화된 표현의 넷리스트 임베딩 및 (ii) 특정 시간 단계에 배치될 매크로 노드를 나타내는 현재 노드 임베딩을 생성하기 위해 넷리스트에 있는 노드의 벡터화된 표현을 처리하는 그래프 인코더 신경망을 포함하는 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  12. 제11항에 있어서,
    상기 넷리스트 데이터는 넷리스트 데이터 내의 2개의 개별 노드를 각각 연결하는 에지로 노드 간의 연결을 나타내고, 그리고
    상기 그래프 인코더 신경망은,
    넷리스트 데이터의 각 에지에 대한 개별 에지 임베딩을 초기화하고;
    넷리스트 데이터의 각 노드에 대해, 노드에 대한 각각의 벡터화된 표현과 동일하도록 넷리스트 데이터의 노드에 대한 개별 노드 임베딩을초기화하고; 그리고
    동작을 반복적으로 수행하도록 구성되고, 상기 동작은,
    넷리스트 데이터의 각 에지에 대해, 에지에 의해 연결된 2개의 노드에 대한 개별 노드 임베딩을 사용하여 에지에 대한 에지 임베딩을 업데이트하는 동작과, 그리고
    넷리스트 데이터의 각 노드에 대해, 노드에 연결된 에지들에 대한 개별 에지 임베딩을 사용하여 노드에 대한 노드 임베딩을 업데이트하는 동작을 포함하는 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  13. 제12항에 있어서,
    상기 에지에 대한 에지 임베딩을 업데이트하는 단계는,
    적어도 에지에 의해 연결된 2개의 노드에 대한 노드 임베딩으로부터 집계 (aggregated) 표현을 생성하는 단계 및 업데이트된 에지 임베딩을 생성하도록 제1 완전 연결(fully-connected) 신경망을 사용하여 집계 표현을 처리하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  14. 제13항에 있어서,
    상기 통합 표현을 생성하는 단계는,
    각각의 노드에 대한 개별 중간 임베딩을 생성하도록 제2 완전 연결 신경망을 사용하여 노드 임베딩 각각을 처리하는 단계와, 그리고
    적어도 개별 중간 임베딩을 결합함으로써 집계 표현을 생성하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  15. 제13항 또는 제14항에 있어서,
    각 에지는 넷리스트 데이터의 가중치와 관련되며,
    상기 집계 표현을 생성하는 단계는,
    에지에 의해 연결된 2개의 노드에 대한 노드 임베딩 및 넷리스트 데이터의 엣지와 관련된 가중치로부터 집계 표현을 생성하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  16. 제11항 내지 제15항 중 어느 한 항에 있어서,
    상기 노드에 연결된 에지에 대한 개별 에지 임베딩을 사용하여 노드에 대한 노드 임베딩을 업데이트하는 단계는,
    노드에 연결된 에지들에 대한 개별 에지 임베딩을 평균화하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  17. 제11항 내지 제16항 중 어느 한 항에 있어서,
    상기 넷리스트 임베딩은,
    상기 동작을 반복적으로 수행한 후 에지 임베딩의 조합인 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  18. 제11항 내지 제17항 중 어느 한 항에 있어서,
    상기 현재 노드 임베딩은,
    상기 동작을 반복적으로 수행한 후 특정 시간 단계에 배치될 매크로 노드에 대한 노드 임베딩인 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  19. 제11항 내지 제18항 중 어느 한 항에 있어서,
    이미 배치된 각각의 노드에 대해, 벡터화된 표현에는 칩 표면의 노드의 위치를 식별하는 데이터가 포함되고, 그리고
    아직 배치되지 않은 각각의 노드에 대해, 벡터화된 표현에는 노드가 아직 배치되지 않았음을 나타내는 데이터가 포함되는 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  20. 제11항 내지 제19항 중 어느 한 항에 있어서,
    상기 인코더 신경망은,
    적어도 넷리스트에 있는 노드의 벡터화된 표현의 넷리스트 임베딩 및 특정 시간 단계에 배치될 매크로 노드를 나타내는 현재 노드 임베딩으로부터 인코딩된 표현을 생성하도록 구성되는 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  21. 제10항 내지 제20항 중 어느 한 항에 있어서,
    상기 인코더 신경망은 지도 학습을 통해 트레이닝된 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  22. 제10항 내지 제21항 중 어느 한 항에 있어서,
    상기 정책 신경망은 강화 학습을 통해 트레이닝된 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  23. 임의의 선행하는 항에 있어서,
    상기 스코어 분포를 사용하여 복수의 위치의 위치에 노드를 할당하는 단계는,
    매크로 노드 순서에서 특정 매크로 노드 이전에 있는 임의의 매크로 노드의 칩 표면의 개별 위치에 기초하여 결정된 밀도가 임계값을 초과하는 각 위치에 대해 스코어를 0으로 설정하는 수정된 스코어 분포를 생성하는 단계와; 그리고
    수정된 스코어 분포를 사용하여 노드를 할당하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  24. 제23항에 있어서,
    상기 수정된 스코어 분포를 사용하여 노드를 할당하는 단계는,
    수정된 스코어 분포에서 가장 높은 스코어를 갖는 위치에 노드를 할당하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  25. 제23항에 있어서,
    상기 수정된 스코어 분포를 사용하여 노드를 할당하는 단계는,
    수정된 스코어 분포에서 위치를 샘플링하는 단계와, 그리고
    샘플링된 위치에 노드를 할당하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  26. 임의의 선행하는 항에 있어서,
    상기 집적 회로 칩 배치를 생성하는 단계는,
    그리디(greedy) 합법화 알고리즘을 초기 집적 회로 칩 배치에 적용함으로써 합법화된 집적 회로 칩 배치를 생성하는 단계를 더 포함하는 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  27. 제26항에 있어서,
    상기 집적 회로 칩 배치를 생성하는 단계는,
    합법화된 집적 회로 칩 배치로부터 시작하여 보상 함수에 대한 시뮬레이션된 어닐링을 수행함으로써 집적 회로 칩 플로어플랜(floorplan)을 생성하는 단계를 더 포함하는 것을 특징으로 하는 하나 이상의 컴퓨터에 의해 수행되는 방법.
  28. 노드 배치 신경망을 트레이닝하기 위한 방법으로서, 노드 배치 신경망은,
    복수의 시간 단계 각각에서, 시간 단계에서의 집적 회로 칩 표면 상의 노드의 넷리스트 배치의 현재 상태를 나타내는 데이터를 포함하는 입력 표현을 수신하고 입력 표현을 처리하여 인코더 출력을 생성하도록 구성된 인코더 신경망과; 그리고
    복수의 시간 단계 각각에서, 인코더 신경망에 의해 생성된 인코더 출력으로부터 생성된 인코딩된 표현을 수신하고 인코딩된 표현을 처리하여 집적 회로 칩 표면의 복수의 위치에 대해 스코어 분포를 생성하도록 구성된 정책 신경망을 포함하며, 상기 방법은,
    각각이 노드의 개별 넷리스트의 개별 배치를 나타내는 복수의 트레이닝 입력 표현과, 그리고
    각 트레이닝 입력 표현에 대해, 노드의 개별 넷리스트의 배치의 품질을 측정하는 보상 함수의 개별 목표 값을 포함하는,
    지도 트레이닝 데이터를 획득하는 단계와; 그리고
    지도 학습을 통해 상기 지도 트레이닝 데이터에 대해 보상 예측 신경망과 공동으로 인코더 신경망을 트레이닝하는 단계를 포함하고, 상기 보상 예측 신경망은 각 트레이닝 인코더 입력에 대해, 트레이닝 입력 표현으로부터 인코더 신경망에 의해 생성된 인코더 출력을 수신하고 상기 인코딩된 표현을 처리하여 트레이닝 입력 표현으로 표현되는 배치에 대한 보상 함수의 예측 값을 생성하도록 구성되는 것을 특징으로 하는 노드 배치 신경망을 트레이닝하기 위한 방법.
  29. 제28항에 있어서,
    상기 보상 함수는,
    칩 표면의 노드들 사이의 배선 길이가 더 짧을 때 더 높은 배선 길이 측정치를 포함하는 것을 특징으로 하는 노드 배치 신경망을 트레이닝하기 위한 방법.
  30. 제28항 또는 제29항에 있어서,
    상기 보상 함수는,
    집적 회로 칩 표면의 혼잡도가 더 낮을 때 더 높은 혼잡도 측정치를 포함하는 것을 특징으로 하는 노드 배치 신경망을 트레이닝하기 위한 방법.
  31. 제28항 내지 제30항 중 어느 한 항에 있어서,
    보상 함수을 최대화하는 배치를 야기하는 스코어 분포를 생성하도록 강화 학습을 통해 정책 신경망을 트레이닝하는 단계를 더 포함하는 것을 특징으로 하는 노드 배치 신경망을 트레이닝하기 위한 방법.
  32. 제31항에 있어서,
    상기 노드 배치 NN은,
    복수의 시간 단계 각각에서, 인코더 신경망에 의해 생성된 인코딩된 표현을 수신하고 그 인코딩된 표현을 처리하여 값 추정치를 생성하도록 구성된 가치 신경망을 더 포함하고, 그리고
    상기 정책 신경망을 트레이닝하는 단계는,
    값 추정치를 사용하는 강화 기법을 사용하여 가치 신경망과 공동으로 정책 신경망을 트레이닝하는 단계를 포함하는 것을 특징으로 하는 노드 배치 신경망을 트레이닝하기 위한 방법.
  33. 제31항 내지 제32항 중 어느 한 항에 있어서,
    상기 강화 학습을 통해 정책 신경망을 트레이닝하는 단계는,
    지도 트레이닝 데이터에 대한 트레이닝을 통해 결정된 값으로 고정된 인코더 신경망의 파라미터 값을 유지하는 단계를 포함하는 것을 특징으로 하는 노드 배치 신경망을 트레이닝하기 위한 방법.
  34. 제28항 내지 제33항 중 어느 한 항에 있어서,
    노드 배치 신경망을 트레이닝한 후,
    트레이닝된 노드 배치 신경망에 의해 생성된 스코어 분포를 사용하여 복수의 시간 단계 각각에서 새로운 넷리스트 데이터로부터 개별 노드를 배치하는 단계를 포함하여, 트레이닝된 노드 배치 신경망을 사용하여 새로운 넷리스트 데이터에 대한 집적 회로 배치를 생성하는 단계를 더 포함하는 것을 특징으로 하는 노드 배치 신경망을 트레이닝하기 위한 방법.
  35. 제28항 내지 제33항 중 어느 한 항에 있어서,
    노드 배치 신경망을 트레이닝한 후:
    새로운 넷리스트 데이터를 수신하는 단계와;
    강화 학습을 통해 새로운 넷리스트 데이터에 대해 상기 트레이닝된 노드 배치 신경망을 미세 조정하는 단계와; 그리고
    미세 조정된 노드 배치 신경망에 의해 생성된 스코어 분포를 사용하여 복수의 시간 단계 각각에서 새로운 넷리스트 데이터로부터 개별 노드를 배치하는 단계를 포함하여, 미세 조정된 노드 배치 신경망을 사용하여 새로운 넷리스트 데이터에 대한 집적 회로 배치를 생성하는 단계를 더 포함하는 것을 특징으로 하는 노드 배치 신경망을 트레이닝하기 위한 방법.
  36. 제28항 내지 제35항 중 어느 한 항에 있어서,
    상기 인코더 신경망은,
    임의의 선행하는 항으로부터의 그래프 인코더 신경망을 포함하고, 상기 인코더 출력은 그래프 인코더 신경망에 의해 생성된 넷리스트의 임베딩을 포함하는 것을 특징으로 하는 노드 배치 신경망을 트레이닝하기 위한 방법.
  37. 제36항에 있어서,
    상기 인코더 신경망은,
    넷리스트와 관련된 메타데이터를 임베딩하는 메타데이터 임베딩 신경망을 포함하고, 상기 인코더 출력은 임베딩된 메타데이터를 포함하는 것을 특징으로 하는 노드 배치 신경망을 트레이닝하기 위한 방법.
  38. 제36항 또는 제37항에 있어서,
    상기 인코딩된 표현은,
    적어도 넷리스트의 임베딩 및 상기 그래프 인코더 신경망에 의해 생성된 현재 노드의 임베딩으로부터 생성된 시간 단계에서 배치될 노드의 넷리스트로부터의 현재 노드의 임베딩을 포함하는 것을 특징으로 하는 노드 배치 신경망을 트레이닝하기 위한 방법.
  39. 제28항 내지 제38항 중 어느 한 항에 있어서,
    상기 지도 학습을 통해 상기 지도 트레이닝 데이터에 대해 보상 예측 신경망과 공동으로 인코더 신경망을 트레이닝하는 단계는,
    주어진 트레이닝 표현에 대해, 보상 함수의 목표 값과 상기 트레이닝 입력 표현에 대한 보상 함수의 예측 값 사이의 오차를 측정하는 목적 함수를 최적화하기 위해 상기 인코더 신경망과 보상 예측 신경망을 트레이닝하는 단계를 포함하는 것을 특징으로 하는 노드 배치 신경망을 트레이닝하기 위한 방법.
  40. 제28항 내지 제39항 중 어느 한 항에 있어서,
    상기 복수의 트레이닝 입력 표현에 의해 표현되는 배치는,
    다른 노드 배치 신경망의 트레이닝 동안 다른 시점에서 다른 노드 배치 신경망의 출력에 기초하여 생성되는 것을 특징으로 하는 노드 배치 신경망을 트레이닝하기 위한 방법.
  41. 제5항에 종속되는 경우 임의의 선행하는 항에 있어서,
    상기 노드 배치 신경망은 매크로 노드에 대한 확률 분포를 생성하도록 추가로 구성되고, 그리고
    상기 매크로 노드 순서를 생성하는 단계는,
    복수의 시간 단계의 각 특정 시간 단계에 대해, 매크로 노드에 대한 확률 분포에 기초하여 특정 시간 단계 이후 다음 시간 단계에 배치될 매크로 노드를 선택하는 단계를 포함하는 것을 특징으로 하는 노드 배치 신경망을 트레이닝하기 위한 방법.
  42. 제1항 내지 제27항, 제34항, 제35항 또는 제41항 중 어느 한 항의 방법의 개별 동작을 포함하는 프로세스를 사용하여 생성된 배치에 따라 집적 회로 칩의 표면 상에 배치된 복수의 집적 회로 컴포넌트를 갖는 집적 회로 칩.
  43. 하나 이상의 컴퓨터에 의해 실행될 때 하나 이상의 컴퓨터로 하여금 제1항 내지 제41항 중 어느 한 항의 방법의 개별 동작을 수행하게 하는 명령들을 저장하는 하나 이상의 비-일시적 컴퓨터 판독 가능 저장 매체.
  44. 하나 이상의 컴퓨터 및 하나 이상의 컴퓨터에 의해 실행될 때 하나 이상의 컴퓨터로 하여금 제1항 내지 제41항 중 어느 한 항의 방법의 개별 동작을 수행하게 하는 명령들을 저장하는 하나 이상의 저장 디바이스를 포함하는 시스템.
  45. 집적 회로 칩을 제조하는 방법으로서,
    제1항 내지 제27항, 제34항, 제35항 또는 제41항 중 어느 한 항의 방법에 따라 집적 회로 칩 배치를 생성하는 단계와, 그리고
    배치에 따라 집적 회로 칩을 제조하는 단계를 포함하는 것을 특징으로 하는 집적 회로 칩을 제조하는 방법.
KR1020227032461A 2020-04-22 2021-04-22 신경망을 이용한 집적 회로 배치 생성 KR20220139399A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063014021P 2020-04-22 2020-04-22
US63/014,021 2020-04-22
PCT/US2021/028713 WO2021216923A1 (en) 2020-04-22 2021-04-22 Generating integrated circuit placements using neural networks

Publications (1)

Publication Number Publication Date
KR20220139399A true KR20220139399A (ko) 2022-10-14

Family

ID=76375612

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227032461A KR20220139399A (ko) 2020-04-22 2021-04-22 신경망을 이용한 집적 회로 배치 생성

Country Status (7)

Country Link
US (4) US11216609B2 (ko)
EP (1) EP4097624A1 (ko)
JP (1) JP7520995B2 (ko)
KR (1) KR20220139399A (ko)
CN (1) CN115315703A (ko)
IL (1) IL296449A (ko)
WO (1) WO2021216923A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102603130B1 (ko) * 2022-12-27 2023-11-17 주식회사 애자일소다 강화학습 기반의 면적 및 매크로 배치 최적화를 위한 설계 시스템 및 방법
KR102632950B1 (ko) * 2022-12-26 2024-02-05 주식회사 애자일소다 일반화 모델을 이용한 반도체 배치 시스템 및 방법
KR102688659B1 (ko) * 2024-02-14 2024-07-25 주식회사 알세미 인공신경망 모델을 이용한 회로 평가 방법 및 장치

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220027546A1 (en) * 2020-07-23 2022-01-27 Nvidia Corp. Standard cell layout generation with applied artificial intelligence
US11416660B1 (en) * 2020-12-30 2022-08-16 Cadence Design Systems, Inc. Automatic placement of analog design components with virtual grouping
US11675951B2 (en) * 2021-05-28 2023-06-13 Huawei Technologies Co., Ltd. Methods and systems for congestion prediction in logic synthesis using graph neural networks
KR20230073074A (ko) * 2021-11-18 2023-05-25 주식회사 마키나락스 인공지능 기반의 반도체 설계 자동화 방법
US11928409B2 (en) * 2022-01-03 2024-03-12 International Business Machines Corporation Dynamic abstract generation and synthesis flow with area prediction
KR102454202B1 (ko) * 2022-05-04 2022-10-17 주식회사 애자일소다 파티셔닝을 이용한 심층 강화학습 기반의 집적회로 설계 시스템 및 방법
US20240095424A1 (en) * 2022-08-18 2024-03-21 Google Llc Alignment Cost for Integrated Circuit Placement
GB2623541A (en) * 2022-10-19 2024-04-24 Ibm Reinforcement learning based correction of timing failures
WO2024084672A1 (ja) * 2022-10-21 2024-04-25 三菱電機株式会社 情報処理装置および情報処理方法
EP4409460A1 (en) * 2022-12-15 2024-08-07 Google LLC Generating integrated circuit placements using neural networks
CN115688670B (zh) * 2022-12-29 2023-04-14 全芯智造技术有限公司 集成电路的布图方法及装置、存储介质、终端设备
CN116562218B (zh) * 2023-05-05 2024-02-20 之江实验室 一种基于强化学习实现矩形宏单元的布图规划方法和系统
CN116579288B (zh) * 2023-07-12 2024-03-22 中山大学 一种模拟集成电路版图布局方法及系统
CN117291138B (zh) * 2023-11-22 2024-02-13 全芯智造技术有限公司 用于生成版图元素的方法、设备和介质
CN117829224B (zh) * 2024-03-05 2024-05-28 南京大学 一种基于复合介质栅结构的仿生神经网络电路系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03184173A (ja) * 1989-12-13 1991-08-12 Hitachi Ltd 配置最適化方法及びその装置と回路設計装置
US6301693B1 (en) 1998-12-16 2001-10-09 Synopsys, Inc. Non-linear optimization system and method for wire length and delay optimization for an automatic electric circuit placer
US7331029B2 (en) 2005-09-22 2008-02-12 International Business Machines Corporation Method and system for enhancing circuit design process
US8302052B2 (en) * 2009-06-23 2012-10-30 Cadence Design Systems, Inc. Methods, systems, and computer program product for implementing hotspot detection, repair, and optimization of an electronic circuit design
US8589855B1 (en) * 2012-05-30 2013-11-19 International Business Machines Corporation Machine-learning based datapath extraction
US20150286766A1 (en) * 2012-10-25 2015-10-08 Satish Chandra Tiwari Method and system for automated design of an integrated circuit using configurable cells
CN106777829B (zh) 2017-02-06 2019-04-12 深圳晶源信息技术有限公司 一种集成电路掩模设计的优化方法及计算机可读的存储介质
DE102019124928A1 (de) * 2018-09-28 2020-04-02 Taiwan Semiconductor Manufacturing Company, Ltd. Integriertes schaltungsdesign unter verwendung von fuzzy-maschinenlernen
KR102611938B1 (ko) 2018-12-04 2023-12-08 구글 엘엘씨 신경망을 사용한 통합 회로 플로어 플랜 생성
US20230252215A1 (en) * 2022-02-10 2023-08-10 Zhanguang Zhang System and method for generating a floorplan for a digital circuit using reinforcement learning

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102632950B1 (ko) * 2022-12-26 2024-02-05 주식회사 애자일소다 일반화 모델을 이용한 반도체 배치 시스템 및 방법
WO2024143912A1 (ko) * 2022-12-26 2024-07-04 주식회사 애자일소다 일반화 모델을 이용한 반도체 배치 시스템 및 방법
KR102603130B1 (ko) * 2022-12-27 2023-11-17 주식회사 애자일소다 강화학습 기반의 면적 및 매크로 배치 최적화를 위한 설계 시스템 및 방법
WO2024143913A1 (ko) * 2022-12-27 2024-07-04 주식회사 애자일소다 강화학습 기반의 면적 및 매크로 배치 최적화를 위한 설계 시스템 및 방법
KR102688659B1 (ko) * 2024-02-14 2024-07-25 주식회사 알세미 인공신경망 모델을 이용한 회로 평가 방법 및 장치

Also Published As

Publication number Publication date
US20210334445A1 (en) 2021-10-28
WO2021216923A1 (en) 2021-10-28
US11853677B2 (en) 2023-12-26
JP2023522567A (ja) 2023-05-31
JP7520995B2 (ja) 2024-07-23
IL296449A (en) 2022-11-01
US20240249058A1 (en) 2024-07-25
EP4097624A1 (en) 2022-12-07
CN115315703A (zh) 2022-11-08
US11556690B2 (en) 2023-01-17
US20220108058A1 (en) 2022-04-07
US20230117786A1 (en) 2023-04-20
US11216609B2 (en) 2022-01-04

Similar Documents

Publication Publication Date Title
JP7520995B2 (ja) ニューラルネットワークを使った集積回路配置の生成
KR102611938B1 (ko) 신경망을 사용한 통합 회로 플로어 플랜 생성
Mirhoseini et al. Chip placement with deep reinforcement learning
Mirhoseini et al. A graph placement methodology for fast chip design
US7752588B2 (en) Timing driven force directed placement flow
US7814451B2 (en) Incremental relative slack timing force model
Hamolia et al. A survey of machine learning methods and applications in electronic design automation
Chang et al. Flexible multiple-objective reinforcement learning for chip placement
US20240095424A1 (en) Alignment Cost for Integrated Circuit Placement
TW202431143A (zh) 使用神經網路產生積體電路配置
EP4409460A1 (en) Generating integrated circuit placements using neural networks
Goldie et al. RL for Placement and Partitioning
Liang MACHINE-LEARNING TECHNIQUES FOR VLSI DESIGN AUTOMATION
Fathi Rizi A Machine Learning Model to Predict Maximum Clock Frequency During FPGA Placement
Peter A Performance Driven Placement System Using an Integrated Timing Analysis Engine