KR100839391B1 - Fast signal convolution using separated-spline kernel - Google Patents

Fast signal convolution using separated-spline kernel Download PDF

Info

Publication number
KR100839391B1
KR100839391B1 KR1020037015469A KR20037015469A KR100839391B1 KR 100839391 B1 KR100839391 B1 KR 100839391B1 KR 1020037015469 A KR1020037015469 A KR 1020037015469A KR 20037015469 A KR20037015469 A KR 20037015469A KR 100839391 B1 KR100839391 B1 KR 100839391B1
Authority
KR
South Korea
Prior art keywords
pattern
data
kernel
convolution
data representing
Prior art date
Application number
KR1020037015469A
Other languages
Korean (ko)
Other versions
KR20040011514A (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
Priority claimed from US09/866,890 external-priority patent/US6912323B2/en
Application filed by 어플라이드 머티어리얼즈 인코포레이티드 filed Critical 어플라이드 머티어리얼즈 인코포레이티드
Publication of KR20040011514A publication Critical patent/KR20040011514A/en
Application granted granted Critical
Publication of KR100839391B1 publication Critical patent/KR100839391B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)

Abstract

분리형-스플라인 커널에 의해 근사될 수 있는 평활 커널로 (n-차원 (n 은 2 이상) 의 패턴을 나타내는) 신호를 컨볼루션하는데 이용할 수 있는 고속 컨볼루션 방법, 및 소프트웨어 또는 신호 프로세싱 회로를 이용해 이러한 방법을 수행하도록 구성되는 시스템. 길이 N 의 신호에 대해 NlogN 차수의 산술 연산을 요하는 푸리에-기반의 컨볼루션 방법과 달리, 본 발명의 방법은 그렇게 하는데 N 차수의 산술 연산만을 필요로 한다. (동일한 신호를 컨볼루션하는데 통상적으로 본 발명에 따르는 것보다 많은 산술 연산을 필요로 하는) 웨이브릿-기반의 컨볼루션 근사와 달리, 본 발명의 방법은 스플라인 커널인 컨볼루션 커널에 적합하다. This can be accomplished using a fast convolution method that can be used to convolve a signal (n-dimensional (n represents a pattern of two or more)) with a smooth kernel that can be approximated by a separate-spline kernel, and software or signal processing circuitry. A system configured to perform a method. Unlike the Fourier-based convolution method, which requires NlogN order arithmetic operations on signals of length N, the method of the present invention requires only N order arithmetic operations to do so. Unlike the wavelet-based convolution approximation (convolution of the same signal typically requires more arithmetic operations than in accordance with the present invention), the method of the present invention is suitable for a convolution kernel which is a spline kernel.

분리형-스플라인 커널, 컨볼루션Isolated Spline Kernel, Convolution

Description

분리형-스플라인 커널을 이용한 고속 신호 컨볼루션{FAST SIGNAL CONVOLUTION USING SEPARATED-SPLINE KERNEL}FAST SIGNAL CONVOLUTION USING SEPARATED-SPLINE KERNEL}

관련 출원의 상호 참조Cross Reference of Related Application

본 출원은 2000년 1월 11일, Richard E. Crandall에 의해 출원되어, Etec Systems, Inc.에 양도된 계류 중인 미국 특허출원 제 09/480,908 호의 일부 계속 출원이다. 미국 특허출원 제 09/480,908 호 전체를 여기에서 참조한다. This application is part of pending US patent application Ser. No. 09 / 480,908, filed on January 11, 2000 by Richard E. Crandall, assigned to Etec Systems, Inc. See, here, the entire US patent application Ser. No. 09 / 480,908.

발명의 분야Field of invention

본 발명은, 패턴을 나타내는 데이터 (예를 들어, 픽셀 어레이를 나타내는 이미지 데이터) 에 컨볼루션을 수행하는 신호 프로세싱 방법 및 장치에 관한 것이다. 본 발명에 따르면, 컨볼루션 커널은 분리형-스플라인 함수이다 (또는 분리형-스플라인 함수로 근사된다). The present invention relates to a signal processing method and apparatus for performing convolution on data representing a pattern (eg, image data representing a pixel array). According to the invention, the convolution kernel is a discrete-spline function (or approximated to a discrete-spline function).

발명의 배경Background of the Invention

컨볼루션은 사운드, 정지 이미지, 비디오, 리소그래피 및 라디오 (레이더) 신호 프로세싱의 분야를 포함하여, 많은 정황의 신호에 대해 일반적으로 수행된다. 통상적으로, 컨볼루션될 신호는 패턴 신호이다. 여기에서 "패턴" 및 "패턴 신호" 라는 각 표현은 데이터 워드 (픽셀일 수 있지만, 반드시 픽셀일 필요는 없음) 의 1-차원 시퀀스 또는 2-차원의 (또는 더 높은 차원의) 어레이를 나타내는 넓은 개념으로 사용된다. 통상적으로, 데이터 워드는 이진 비트로 이루어지고, 컨볼루션은 소프트웨어, 디지털 신호 프로세싱 회로, 상용 하드웨어, 또는 FPGA 시스템 (field programmable gate array based computing systems) 을 이용하여 이진 비트에 대해 이산적인 방식으로 수행된다. Convolution is generally performed on many context signals, including the fields of sound, still image, video, lithography, and radio (radar) signal processing. Typically, the signal to be convolved is a pattern signal. Here each representation of "pattern" and "pattern signal" is a broad representation of a one-dimensional sequence of data words (which may be pixels, but not necessarily pixels) or a two-dimensional (or higher dimension) array. Used as a concept. Typically, data words are made up of binary bits, and convolution is performed in a discrete manner on binary bits using software, digital signal processing circuitry, commodity hardware, or field programmable gate array based computing systems.

여기에서 "데이터" 라는 용어는 데이터를 나타내는 하나 이상의 신호를 의미하며, "데이터 워드" 라는 표현은 데이터 워드를 나타내는 하나 이상의 신호를 의미한다.The term "data" herein refers to one or more signals representing data, and the expression "data word" means one or more signals representing data words.

매우 큰 패턴을 나타내는 데이터를 프로세싱하는 경우라 하더라도 컨볼루션을 고속으로 구현하고자 하는 동기는 무수히 존재한다. 본 발명은 리소그래피 분야에서의 근접 교정 (proximity correction) 에 대한 필요성에 의해 동기화되었다. 이러한 문제에서, 한가지 시도는 큰 패턴 "p" (이 경우, 패턴은 픽셀 어레이이다) 을 나타내는 데이터와 확산 커널 "d" 사이의 2-차원 컨볼루션이다. 종종 커널 "d" 는 가우시안이나 가우시안의 중첩, 또는 그게 아니라면 평활 커널 (smooth kernel) 이다. 보다 구체적으로, 본 발명은 컨볼루션이 정확하거나 정확함에 매우 근접하도록 가우시안 커널 (또는 다른 평활 커널) 을 이용하여 NN' 픽셀 (이 경우, N 과 N' 각각은 매우 크다) 로 이루어진 2-차원 패턴을 컨볼루션하는 적절한 "O(NN')" 알고리즘 (NN' 차수 이상의 승산과 가산을 요하지 않는 알고리즘) 을 확립하려는 시도에서 시작되었다. Even when processing data representing very large patterns, there are numerous motivations to implement convolution at high speed. The present invention has been motivated by the need for proximity correction in the field of lithography. In this problem, one attempt is a two-dimensional convolution between the data representing the large pattern "p" (in this case, the pattern is a pixel array) and the spreading kernel "d". Often the kernel "d" is a Gaussian, Gaussian superposition, or otherwise a smooth kernel. More specifically, the present invention uses a Gaussian kernel (or other smoothing kernel) to make the convolution very accurate or very close to a two-dimensional pattern consisting of NN 'pixels (in which case each of N and N' are very large). An attempt was made to establish an appropriate "O (NN ')" algorithm (an algorithm that does not require multiplication and addition above the NN' order) to convolve.

근접 교정을 수행하는 목적 (리소그래피 분야에서) 은, 광학계 (optics) 의 출력으로 하여금 마스크 또는 웨이퍼상에 소정 패턴을 생성하게 하기 위해, 반사 또는 굴절 광학계 (또는 전자 빔 광학계) 의 세트로 입력될 수 있는 "미가공 (raw)" 광학 신호 (또는 "미가공" 전자 빔 신호) 를 발생하는 것이다. 마스크 또는 웨이퍼상에 소정 패턴을 생성하는데 필요한 미가공 광학 신호 (또는 미가공 전자 빔 신호) 의 특성을 결정하기 위해서는 통상적으로, 널리 공지된 근접 문제를 교정하기 위해, (패턴 "p" 를 결정하는) 매우 큰 픽셀 어레이에 대해 디컨볼루션 동작 (deconvolution operation) 을 수행한다. 전자 빔 리소그래피의 경우, 기입 중인 기판 (마스크 또는 웨이퍼) 에서의 전자 산란으로 인해 근접 문제가 발생한다. 이러한 산란은 기판상에 입사되는 빔 직경을 초과하도록 전자 빔을 효과적으로 확장시킴으로써, 기판상의 넓은 영역 (즉, 픽셀 자체 뿐만 아니라 기입될 각 픽셀을 둘러싸고 있는 영역) 을 전자에 노출시킨다. The purpose of performing proximity correction (in the field of lithography) can be input into a set of reflective or refractive optics (or electron beam optics) to cause the output of the optics to produce a predetermined pattern on a mask or wafer. To generate a "raw" optical signal (or a "raw" electron beam signal). In order to determine the properties of the raw optical signal (or raw electron beam signal) required to generate a predetermined pattern on a mask or wafer, it is usually very necessary to determine the well known proximity problem (to determine the pattern "p"). Perform a deconvolution operation on a large array of pixels. In electron beam lithography, proximity problems arise due to electron scattering in the substrate (mask or wafer) being written. This scattering effectively extends the electron beam beyond the beam diameter incident on the substrate, thereby exposing a large area on the substrate (ie the region surrounding each pixel to be written as well as the pixel itself) to the electron.

거의 모든 근접 교정 방식에서, 이러한 디컨볼루션 동작은 하나 이상의 컨볼루션 단계를 포함한다. 따라서, 통상적인 근접 교정을 수행함에 있어, (패턴 "p" 을 결정하는) 매우 큰 픽셀 어레이는 확산 커널 (diffusion kernel) 로 컨볼루션되어야 한다. 이러한 컨볼루션은 통상적으로 매우 큰 이진 픽셀 어레이로 이루어진 패턴에 대해 수행되지만, 이러한 제한이 이하의 논의에서 필수적인 것은 아니며 본 발명의 구현에 필수적인 것도 아니다. 실제로, 본 발명은 후술되는 특성을 가진 평활 컨볼루션 커널 "d" 를 이용해 임의의 패턴 "p" 를 나타내는 데이터에 대한 컨볼루션을 구현할 수 있다.In almost all proximity calibration schemes, this deconvolution operation involves one or more convolution steps. Thus, in performing conventional proximity correction, very large pixel arrays (determining the pattern "p") must be convolved with a diffusion kernel. Such convolution is typically performed on a pattern consisting of a very large binary pixel array, but this limitation is not necessary in the following discussion and is not essential to the implementation of the present invention. Indeed, the present invention may implement a convolution for data representing any pattern "p" using a smooth convolution kernel "d" with the features described below.

패턴 "p" 와 컨볼루션 커널 "d" 를 나타내는 데이터에 대해, 순환적 컨볼루션 (cyclic convolution)

Figure 112007037998221-pct00098
및, 인덱스의 제한 (indicial constraint) 과 범위에서만 차이가 있는 비순환적 컨볼루션 (acyclic convolution)
Figure 112007037998221-pct00002
을 고려하는데, 여기서
Figure 112007037998221-pct00003
는 컨볼루션 연산자가 순환적 특성을 갖는 것을 의미하고,
Figure 112007037998221-pct00004
는 컨볼루션 연산자가 비순환적 특성을 갖는 것을 의미한다. Cyclic convolution on data representing pattern "p" and convolution kernel "d"
Figure 112007037998221-pct00098
And acyclic convolution, which differs only in individual constraints and ranges of the index.
Figure 112007037998221-pct00002
Consider, where
Figure 112007037998221-pct00003
Means that the convolution operator has recursive properties,
Figure 112007037998221-pct00004
Means that the convolution operator has acyclic properties.

간략화를 위해, 여기에서의 많은 논의는 (패턴 p 는 N 개 데이터 값의 순서화된 세트 (ordered set) 이고 커널은 M 개 값의 순서화된 세트인) 1-차원의 경우로 한정된다. 그럼에도 불구하고, 본 발명의 통상적인 실시형태의 경우, 패턴은 2-차원 (데이터 값의 2-차원 어레이 pjk 가 패턴을 결정함) 이고 컨볼루션을 정의하는 합 (상기 문단에서 설명한 합들 중 하나에 대응하는 합) 은 어레이 pjk 의 인덱스 j 뿐만 아니라 인덱스 k 를 넘는다는 것을 알 수 있다. 데이터 값의 N ×N' 어레이에 의해 결정되는 2-차원 패턴 p 의 경우, 상기 문단에서 설명한 공식에서의 인덱스 (n, i, j) 및 도메인 길이 (N) 는 2-벡터이다.For simplicity, many discussions here are limited to the one-dimensional case (pattern p is an ordered set of N data values and the kernel is an ordered set of M values). Nevertheless, for a typical embodiment of the present invention, the pattern is a two-dimensional (two-dimensional array of data values p jk determines the pattern) and a sum defining convolution (one of the sums described in the paragraph above) It can be seen that the sum corresponding to exceeds not only the index j of the array p jk but also the index k. For a two-dimensional pattern p determined by an N × N ′ array of data values, the index (n, i, j) and domain length (N) in the formula described in the paragraph above are two-vectors.

1-차원인 경우, 순환적 컨볼루션의 결과는 N 의 길이를 가지며 (순환적 컨볼루션의 결과는 N 개의 데이터 값으로 이루어짐), 비순환적 컨볼루션의 결과는 M+N-1 의 길이를 갖는다.In the one-dimensional case, the result of cyclic convolution has a length of N (the result of cyclic convolution consists of N data values), and the result of acyclic convolution has a length of M + N-1. .

순환적 컨볼루션

Figure 112007037998221-pct00099
은 등가의 매트릭스-벡터곱
Figure 112007037998221-pct00100
으로 계산될 수 있는데, 이 경우, D 는 d 의 회전 매트릭스 (circulant matrix ; 이하, d 의 "회전"이라 함) 로서, D 의 1-차원 형태 (N 은 3 보다 크다고 가정함) 는 다음과 같이 정의된다. Circular Convolution
Figure 112007037998221-pct00099
Is the equivalent matrix-vector product
Figure 112007037998221-pct00100
Where D is the rotation matrix of d (hereinafter referred to as "rotation" of d), where the one-dimensional form of D (assuming N is greater than 3) is Is defined.

Figure 112003044964105-pct00007
Figure 112003044964105-pct00007

따라서, 순환적 컨볼루션을 위한 종래의 방법은 매트릭스 대수 (matrix algebra) 의 언어로 계산될 수 있다. 비순환적 컨볼루션은 유사한 매트릭스 조작으로 획득될 수 있다.Thus, the conventional method for cyclic convolution can be calculated in the language of matrix algebra. Acyclic convolution can be obtained with similar matrix manipulation.

간략화를 위해, 이하에서는, 비순환적 또는 순환적 특성 중 어느 하나를 가진 컨볼루션을 나타내는데 심볼 ×을 사용한다. 대부분의 논의에서, 이 심볼은 비순환적 특성을 가진 컨볼루션을 의미한다. 당업자는, 특정 비순환적 특성이 주어지면 비순환적 컨볼루션을 결정하는 파라미터 (예를 들어, 커널의 회전에 대한 경계 조건 및 정의) 를 약간 변형하는 것에 의해, 그에 대응하는 순환적 컨볼루션을 구현할 수 있다는 것을 알 수 있다. For simplicity, in the following, the symbol x is used to denote a convolution with either acyclic or cyclical characteristics. In most discussions, this symbol means convolution with acyclic properties. One skilled in the art can implement the corresponding cyclic convolution by slightly modifying parameters (e.g., boundary conditions and definitions for kernel rotation) that determine acyclic convolution given a particular acyclic characteristic. It can be seen that there is.

상술한 미국 특허출원 제 09/480,908 호에는, 다항식의 스플라인 커널 f (f 는 L 개 구분을 가진 차수 δ의 구분 다항식 fi(x) 인 스플라인 함수 f(x) 임) 에 의해 평활 커널 d 를 근사한 다음, f 와 p 의 컨볼루션을 고속으로 계산하기 위해 소정 차수의 각 다항식을 (후술할 방식으로) 소멸화 (평탄화) 하는 적절한 연산자를 이용하는 것이 (1-차원 실시형태의) 중심 아이디어인 고속 컨볼루션 방법이 개시되어 있다. 일부 실시형태에서, 평활 커널 d 가 다항식의 스플라인 커널은 아니지만, 그 도메인의 인접 세그먼트에 대해 정의된 L 개의 구분으로 이루어진 스플라인 커널 f 에 의해 근사되기도 한다 (통상적인 2-차원의 경우, 후자의 스플라인 커널은 도메인이 방사 파라미터 (radial parameter) 에 대한 값들의 연속적이거나 이산적인 세트인 방사 대칭 함수 (radially symmetric function) 이다). 미국 특허출원 제 09/480,908 호에 설명한 바와 같은 "스플라인" 컨볼루션이 종래의 웨이브릿 방식을 상기시키는 특징을 가지며 (웨이브릿 방식과 같은) O(N) 알고리즘이지만, "스플라인" 컨볼루션의 이점은 (N 개 데이터값으로 이루어진 패턴 p 를 나타내는 데이터에 대해) cN 개의 산술적 연산으로 수행될 수 있는 한편, 동일한 데이터에 대한 종래의 웨이브릿 컨볼루션은 bN 개의 산술적 연산을 필요로 한다는 것인데, 이 경우, 팩터 "b" 는 통상적으로 (즉, 통상적인 에러 분석의 경우) 팩터 "c" 보다 훨씬 크다. 즉, 스플라인 컨볼루션에 내재된 큰-O 상수 (implied big-O constant) 가 종래의 웨이브릿 컨볼루션에 대한 통상적인 이러한 상수보다 훨씬 작다.The above-mentioned U.S. Patent Application Serial No. 09 / 480,908 discloses a smooth kernel d by the spline kernel f of the polynomial (f is the spline function f (x) which is the division polynomial f i (x) of order δ with L divisions). After approximation, using the appropriate operator to decay (flatten) each polynomial of a given order (in the manner described below) in order to compute the convolution of f and p at high speed is the central idea (in the one-dimensional embodiment). Convolution methods are disclosed. In some embodiments, smooth kernel d is not a polynomial spline kernel, but is also approximated by a spline kernel f consisting of L distinctions defined for adjacent segments of its domain (in the latter two-dimensional case, the latter spline The kernel is a radial symmetric function in which the domain is a continuous or discrete set of values for the radial parameter). A "spline" convolution, as described in US patent application Ser. No. 09 / 480,908, is an O (N) algorithm (such as a wavelet method) that is reminiscent of the conventional wavelet method, but the benefits of "spline" convolution Can be performed with cN arithmetic operations (for data representing a pattern p of N data values), whereas conventional wavelet convolution on the same data requires bN arithmetic operations, in which case , Factor "b" is typically much larger than factor "c" (ie, for conventional error analysis). In other words, the implied big-O constant inherent in spline convolution is much smaller than this constant, which is typical for conventional wavelet convolution.

미국 특허출원 제 09/480,908 호에 개시된 바와 같은 스플라인 컨볼루션은 평활 확산 커널 d 를 이용하여 패턴 "p" (즉, 패턴 "p" 를 나타내는 데이터) 의 순환적 또는 비순환적 컨볼루션을 수행하여, 컨볼루션 결과 r = Dp (D 는 d 의 회전) 를 나타내는 데이터를 발생하는 방법이다. 패턴 "p" 는 데이터 값 (또는 픽셀) 의 연속적인 (또는 이산적인) 1-차원 도메인에 의해 결정될 수 있다는 점에서 1-차원일 수도 있고, 또는 데이터 값의 연속적인 2-차원 도메인 (또는 이산적인 데이터 값의 2-차원 어레이) 에 의해 결정될 수 있다는 점에서 2-차원일 수 있으며, p 가 2 보다 더 큰 차원을 가질 수도 있다. 통상적인 이산 구현에서, 패턴 p 는 데이터 값 (예를 들어, 픽셀) pi (i 는 0 에서 N-1 까지 변하며, 여기서 N 은 신호의 길이) 의 이산적이며 순서화된 세트에 의해 결정된다는 점에서 1-차원이거나, 데이터 값의 어레이 pij (i 는 0 에서 N-1 까지 변하며, j 는 0 에서 N'-1 까지 변함) 에 의해 결정된다는 점에서 2-차원이거나, 또는 2 보다 더 큰 차원을 가진다 (3-차원 또는 그 보다 높은-차원의 데이터 값 세트에 의해 결정된다). 통상적으로, 커널 d 는 데이터 값 dij (i 는 0 에서 N-1 까지 변하며, j 는 0 에서 N'-1 까지 변함) 의 어레이에 의해 결정된다 (그런데, 다른 방법으로 커널 d 가 d0 내지 dN-1 의 데이터 값의 이산적인 세트에 의해 결정될 수도 있다). Spline convolution as disclosed in US patent application Ser. No. 09 / 480,908 performs cyclic or acyclic convolution of pattern "p" (ie, data representing pattern "p") using smooth spread kernel d, The convolution result is a method of generating data representing r = Dp (where D is the rotation of d). The pattern “p” may be one-dimensional in that it may be determined by a continuous (or discrete) one-dimensional domain of data values (or pixels), or a continuous two-dimensional domain (or discrete) of data values Can be two-dimensional, and p can have a dimension greater than two. In a typical discrete implementation, the pattern p is determined by a discrete, ordered set of data values (e.g., pixels) p i (i varies from 0 to N-1, where N is the length of the signal). Is one-dimensional at or is two-dimensional in that it is determined by an array of data values p ij (i varies from 0 to N-1, j varies from 0 to N'-1), or is greater than 2 Has a dimension (determined by a three-dimensional or higher-dimensional set of data values). Typically, the kernel d is determined by an array of data values d ij (i varies from 0 to N-1, j varies from 0 to N'-1), but alternatively the kernel d is from d 0 to d may be determined by a discrete set of data values of N-1 ).

미국 특허출원 제 09/480,908 호에 개시된 일부 실시형태에서, 컨볼루션 Dp 는, In some embodiments disclosed in US patent application Ser. No. 09 / 480,908, convolution Dp is

(a) 다항식의 스플라인 커널 f 에 의해 커널 d 를 근사하는 단계 (커널 d 자체가 다항식의 스플라인 커널이라면, d = f 이고 단계 (a) 는 생략된다);(a) approximating kernel d by the polynomial spline kernel f (if kernel d itself is a polynomial spline kernel, d = f and step (a) is omitted);

(b) q = Bp =

Figure 112003044964105-pct00008
를 계산하는 단계 (F 는 커널 f 의 회전이고,
Figure 112003044964105-pct00009
Figure 112003044964105-pct00010
가 희소 (sparse) 해지는 방식으로 회전 F 에 대해 작용하는 소멸화 (annihilation) 연산자로서 그 형태는 일반적으로 f 의 다항식 세그먼트에 대한 차수 δ에 의존한다); 및 (b) q = Bp =
Figure 112003044964105-pct00008
(F is the rotation of kernel f,
Figure 112003044964105-pct00009
Is
Figure 112003044964105-pct00010
As an annihilation operator that acts on rotation F in such a way that it becomes sparse, its form generally depends on the order δ for the polynomial segment of f); And

(c) r = Fp 를 결정하기 위해,

Figure 112003044964105-pct00011
를 거꾸로 풀어내는 단계를 수행하는 것에 의해 실현된다.(c) to determine r = Fp,
Figure 112003044964105-pct00011
It is realized by performing the step of unwinding backwards.

커널 d 자체가 다항식의 스플라인 커널인 경우 (그리하여, d = f 이고 F = D 인 경우), 본 방법은 정확한 결과 (r = Dp) 를 산출한다. 그렇지 않을 경우, 이 방법에 내재하는 에러는 (f-d) ×p (×는 컨볼루션을 나타냄) 이므로, 에러는 용이하게 제한된다. If the kernel d itself is a polynomial spline kernel (and therefore d = f and F = D), the method yields the correct result (r = Dp). Otherwise, the error inherent in this method is (f-d) xp (x represents convolution), so the error is easily limited.

(컨볼루션될 패턴이 길이 N 의 1-차원 패턴인) 1-차원의 경우,

Figure 112003044964105-pct00012
는 다음에 정의된 바와 같은 N ×N 의 회전 매트릭스 형태를 갖는데, For one-dimensional (where the pattern to be convolved is a one-dimensional pattern of length N),
Figure 112003044964105-pct00012
Has the form of a rotation matrix of N × N, as defined below:

Figure 112003044964105-pct00013
Figure 112003044964105-pct00013

이 경우, 각각의 엔트리는 2 항 계수 (binomial coefficient) 이고, δ는 스플라인 커널 f 에 대한 스플라인 세그먼트의 최대 차수이다. 예를 들어, 스플라인 커널 f 가 2 차 세그먼트 (quadratic segments) 로 이루어진 경우, δ= 2 이다. 2 이상의 차수인 경우, 소멸화 연산자는 다음과 같이 정의 될 수 있는데, In this case, each entry is a binomial coefficient, and δ is the maximum order of the spline segment for the spline kernel f. For example, when the spline kernel f consists of quadratic segments, δ = 2. For orders of two or more, the destructive operator can be defined as

Figure 112003044964105-pct00014
Figure 112003044964105-pct00014

이 경우,

Figure 112007037998221-pct00015
는 d 좌표의 h-번째에 대한 n-번째 편도함수 (partial derivative) 이다. in this case,
Figure 112007037998221-pct00015
Is the n-th partial derivative of the h-th of the d coordinate.

예를 들어, 라플라시안은, For example, Laplacian,

Figure 112003044964105-pct00016
Figure 112003044964105-pct00016

d-차원 인수의 구분-평면 함수 (f=f(x1, x2, ..., xd)) 를 소멸시킨다. Destroy the division-plane function (f = f (x 1 , x 2 , ..., x d )) of the d -dimensional argument.

1-차원의 경우에, 스플라인 커널 f 에 대한 각 세그먼트의 종료점 ("피벗점 (pivot points)") 은 커널 d 의 연속적인 요소 (di 및 di+1) 일 수도 있고, 단계 (a) 는, 스플라인 커널의 각 세그먼트를 커널 d 의 대응하는 세그먼트에 적절하게 매칭되는 것으로서 선택하기 위한 커브 핏팅 (curve fitting) 을 수행함으로써 구현될 수 있다. 일부 구현의 경우, 피벗점에 도함수를 매칭하거나 일부 다른 평활 기준을 충족시킴으로써, 각각의 피벗점에서 적절한 경계 조건이 만족된다. In the one-dimensional case, the end point of each segment ("pivot points") for the spline kernel f may be a contiguous element d i and d i + 1 of the kernel d, and step (a) Can be implemented by performing curve fitting to select each segment of the spline kernel as appropriately matching the corresponding segment of kernel d. In some implementations, appropriate boundary conditions are met at each pivot point by matching a derivative to the pivot point or meeting some other smoothing criteria.

미국 특허출원 제 09/480,908 호에 개시된 일부 구현에서, 단계 (c) 는 r = Fp 의 소수 개의 최저 성분이 F 의 소수의 행에 의한 p 의 정확한 승산에 의해 계산되는 예비적인 "점화 (ignition)" 단계, 및 스플라인 커널과 연산자 △δ+1 에 의해 결정되는 자연스런 회귀 관계를 이용하여 r 의 나머지 성분을 결정하는 후속 단계를 포함한다. 예를 들어, 1-차원의 경우에, r 의 최저 성분은 r0, r1, ..., rδ (이 경우, "δ" 는 스플라인 커널 f 의 스플라인 세그먼트에 대한 최고 차수) (예를 들어, 스플라인 커널이 2 차 세그먼트로 이루어진 경우, r0, r1 및 r2) 이고, 이들 (δ+1) 성분들은 F 의 (δ+1) 개 행에 의한 p 의 정확한 승산에 의해 결정된다. 다른 방법으로, (δ+1) 개의 성분이 다른 방식으로 결정될 수도 있다. 그 다음, "rδ" 성분의 나머지는 연산자 △δ+1 에 의해 결정되는 자연스런 회귀 관계 (natural recurrence relation) 를 이용하여 결정된다. r0, r1, ..., rδ 성분을 발생시키는 "점화" 동작은 O(N) 개의 계산으로 실현될 수 있다. 회귀 관계 계산도 O(N) 개의 계산으로 실현될 수 있다.In some implementations disclosed in US patent application Ser. No. 09 / 480,908, step (c) is a preliminary "ignition" in which the smallest number of components of r = Fp is calculated by the correct multiplication of p by the few rows of F. And a subsequent step of determining the remaining components of r using the natural regression relationship determined by the spline kernel and operator Δ δ + 1 . For example, in the one-dimensional case, the lowest component of r is r 0 , r 1 , ..., r δ (in this case "δ" is the highest order for the spline segment of spline kernel f) For example, if the spline kernel consists of secondary segments, r 0 , r 1 and r 2 ), and these (δ + 1) components are determined by the exact multiplication of p by the (δ + 1) rows of F . Alternatively, the (δ + 1) components may be determined in other ways. Then, the rest of the "r δ " component is determined using a natural recurrence relation determined by the operator Δ δ + 1 . The "ignition" operation of generating r 0 , r 1 , ..., r δ components can be realized with O (N) calculations. Regression relationship calculations can also be realized with O (N) calculations.

다른 실시형태로서, 미국 특허출원 제 09/480,908 호에 개시된 컨볼루션 r = Dp 를 수행하는 방법은, In another embodiment, a method of performing convolution r = Dp disclosed in US patent application Ser. No. 09 / 480,908,

(a) 다항식의 스플라인 커널 f 에 의해 커널 d 를 근사하는 단계 (커널 d 자체가 다항식의 스플라인 커널이라면, d = f 이고 단계 (a) 는 생략된다);(a) approximating kernel d by the polynomial spline kernel f (if kernel d itself is a polynomial spline kernel, d = f and step (a) is omitted);

(b) q = Bp =

Figure 112007037998221-pct00017
를 계산하는 단계 (F 는 커널 f 의 회전이고,
Figure 112007037998221-pct00018
Figure 112007037998221-pct00101
가 거의 모든 곳에서 국부적으로 일정한 매트릭스가 되도록 회전 F 에 대해 작용하는 평탄화 (flattening) 연산자로서 그 형태는 일반적으로 F 의 다항식 세그먼트에 대한 차수 δ에 의존한다); 및(b) q = Bp =
Figure 112007037998221-pct00017
(F is the rotation of kernel f,
Figure 112007037998221-pct00018
Is
Figure 112007037998221-pct00101
As a flattening operator acting on rotation F such that is a local constant matrix almost everywhere, its form generally depends on the order δ for the polynomial segment of F); And

(c) r = Fp 를 결정하기 위해,

Figure 112007037998221-pct00020
를 거꾸로 풀어내는 단계를 포함한다. (p 가 길이 N 을 갖는) 1-차원인 경우에,
Figure 112007037998221-pct00021
는 다음과 같은 N ×N 의 회전 매트릭스 (circulant matrix) 형태를 갖는데, (c) to determine r = Fp,
Figure 112007037998221-pct00020
Including the step of loosening upside down. If p is one-dimensional (with length N),
Figure 112007037998221-pct00021
Has the form of a circulant matrix of N × N

Figure 112003044964105-pct00022
Figure 112003044964105-pct00022

이 경우, 각각의 엔트리는 2 항 계수이고, δ는 스플라인 커널 f 에 대한 스플라인 세그먼트의 최대 차수이다. 보다 높은 차원의 경우에도, 평탄화 연산자

Figure 112007037998221-pct00023
는 유사하게 정의된다.In this case, each entry is a binary term coefficient, and δ is the maximum order of the spline segment for the spline kernel f. Flattening operator, even for higher dimensions
Figure 112007037998221-pct00023
Is defined similarly.

미국 특허출원 제 09/480,908 호에 개시된 다른 실시형태에서, 컨볼루션 Dp (D 는 평활 커널 d 의 회전이다) 는, In another embodiment disclosed in US patent application Ser. No. 09 / 480,908, convolution Dp (D is the rotation of smooth kernel d),

(a) 다항식의 스플라인 커널이 아닌 스플라인 커널 f 에 의해 커널 d 를 근사하는 단계 (커널 d 자체가 다항식의 스플라인 커널 이외의, 이와 같은 스플라인 커널이면, d = f 이고 단계 (a) 는 생략된다);(a) approximating kernel d by spline kernel f rather than polynomial spline kernel (if kernel d itself is such a spline kernel other than polynomial spline kernel, d = f and step (a) is omitted) ;

(b) q = Bp = AFp 를 계산하는 단계 (F 는 커널 f 의 회전이고, A 는, A 가 소멸화 연산자일 경우에는, AF = B 가 희소해지는 방식으로 회전 F 에 대해 작용하고, A 가 평탄화 연산자일 경우에는, AF = B 가 거의 모든 곳에서 국부적으로 일정한 매트릭스가 되는 방식으로 회전 F 에 대해 작용하는 소멸화 또는 평탄화 연산자이다); 및(b) calculating q = Bp = AFp (F is the rotation of kernel f, and A acts on rotation F in such a way that AF = B becomes sparse if A is an extinction operator, and A is In the case of a flattening operator, AF = B is an extinction or flattening operator that acts on rotation F in such a way that it is a local constant matrix almost everywhere); And

(c) r = Fp 를 결정하기 위해, Ar = q 를 거꾸로 풀어내는 단계를 포함한다.(c) solving Ar = q backwards to determine r = Fp.

종래의 컨볼루션 방법에 대한 본 발명의 이점을 좀더 잘 이해하기 위해, 이하에서는, 2 가지 형태의 종래의 컨볼루션 방법, 푸리에-기반의 컨볼루션 (Fourier-based convolution) 및 웨이브릿-기반의 컨볼루션 (wavelet-based convolution) 을 설명한다. In order to better understand the advantages of the present invention over conventional convolution methods, two forms of conventional convolution methods, Fourier-based convolution and wavelet-based convolution, are described below. Describes wavelet-based convolution.

널리 공지된 바와 같이, 푸리에-기반의 컨볼루션은 F 가 푸리에 매트릭스, 즉, As is well known, Fourier-based convolutions have F in which the Fourier matrix,

Fjk = e-2πijk/N 이라면, If F jk = e -2πijk / N ,

회전의 변환 FDF-1 가 대각 (diagonal) 이므로, Since the transformation FDF -1 of rotation is diagonal,

Dp = F-1(FDF-1)FpDp = F -1 (FDF -1 ) Fp

를 계산할 경우, 최우측의 Fp 는 보통의 푸리에 변환이고, 괄호 부분에 의한 연산은 (대각선성 (diagonlity) 에 의한) 2 항 승산 (dyadic multiplication) 이고, 마지막의 F-1 연산은 역 푸리에 변환이다. 임의적인 D 에 대해, 대각 매트릭스 FDF-1 의 생성은 한 번의 변환을 필요로 하므로, 실제로 3 번의 푸리에 변환이 필요하다. 그런데, D 가 고정이고 1 회 기반 (one-time basis) 으로 변환된다면, 후속의 컨볼루션 Dp 는, 널리 공지되어 있는 바와 같이, 각각 2 번의 변환만을 필요로 한다. 따라서, 2 또는 3 번의 FFT (Fast Fourier Transforms) 가 필요하기 때문에, 길이 N 의 패턴 p (N 개의 데이터 값에 의해 결정되는 패턴) 를 컨볼루션하기 위한 푸리에-기반의 순환적 컨볼루션의 복잡도는 (즉, NlogN 차수의 승산 및 가산에 대한) O(NlogN) 연산이다. 푸리에 방법은 (FFT 정확성에 의존하는 에러를 없앨 수 있는) 정확한 방법이다.Is computed, the rightmost Fp is the usual Fourier transform, the operation by the parentheses is a dyadic multiplication (by the diagonal), and the last F -1 operation is the inverse Fourier transform. . For arbitrary D, the creation of the diagonal matrix FDF- 1 requires one transformation, so actually three Fourier transforms are needed. By the way, if D is fixed and converted on a one-time basis, subsequent convolutions Dp only require two transformations each, as is well known. Therefore, since two or three Fast Fourier Transforms (FFTs) are required, the complexity of the Fourier-based cyclic convolution for convolving a pattern p of length N (pattern determined by N data values) is ( That is, O (NlogN) operation for multiplication and addition of NlogN orders. The Fourier method is an accurate method (can eliminate errors that depend on FFT accuracy).

종래의 컨볼루션 방법에 대한 다른 분류는 웨이브릿 컨볼루션 방법으로 이루어지는데, 이들의 본질에 의해, 일반적으로 부정확하다. 이러한 방법의 근간을 이루는 아이디어는 명확하며, 이하의 매트릭스-대수의 패러다임에 따라 진행한다. 소정의 N ×N 회전 D 를 가정하면, 다음의 특징을 가진 매트릭스 W (통상, 컴팩트 웨이브릿 변환임) 를 찾을 수 있는데, Another classification of conventional convolution methods consists of wavelet convolution methods, which, due to their nature, are generally inaccurate. The idea underlying this method is clear and proceeds according to the matrix-algebra paradigm below. Assuming a given N × N rotation D, we can find a matrix W (usually a compact wavelet transform) with

(1) W 는 단일함 (즉, W-1 은 W 의 수반 매트릭스임);(1) W is single (ie, W −1 is an accompanying matrix of W);

(2) W 는 희소임; 그리고(2) W is rare; And

(3) WDW-1 은 희소임(3) WDW -1 is rare

이 경우, 본 문맥에서 "희소 (sparse)"는 단순히, 임의의 x 에 대한 임의의 매트릭스-벡터곱 Wx 가 O(N2) 이 아닌 감소된 복잡도 O(N) 과 관련된다는 것을 의미한다. In this case, “sparse” in this context simply means that any matrix-vector product Wx for any x is associated with reduced complexity O (N) rather than O (N 2 ).

가정된 특징들을 이용하여, 3 번의 희소-매트릭스-벡터 승산의 방식으로,Using the hypothesized features, in the manner of three sparse-matrix-vector multiplications,

Dp = W-1(WDW-1)Wp Dp = W -1 (WDW -1 ) Wp

를 계산할 수 있는데, 단일성 (unitarity) 은 W-1 의 희소성 (sparseness) 을 내포한다. 따라서, 소정의 회전 D 에 대해 양자 모두에 희소 특성을 정밀하게 인가하는 매트릭스 W 를 발견하는 것이 일반적으로 불가능한 경우를 제외하면, N 개의 데이터 값에 의해 결정되는 패턴 p 를 컨볼루션하기 위한 웨이브릿-기반 컨볼루션 복잡도는 O(N) 이다. 통상적으로, 컨볼루션 커널 d 가 충분히 평활화되어 있다면, 일부 수용가능한 근사 에러내에서 상기 특징 (3) 이 성립하도록, (희소 매트릭스인) 웨이브릿 연산자 W 를 발견할 수 있다. 상술한 특징 (1) 및 (2) 는 (특징 (3) 이 일반적으로 근사인) 적어도 컴팩트 웨이브릿의 패밀리에 대해 공통이다.The unitarity implies the sparseness of W −1 . Thus, a wavelet for convolving the pattern p determined by the N data values, except where it is generally impossible to find a matrix W that precisely applies sparse properties to both for a given rotation D. The base convolution complexity is O (N). Typically, if the convolution kernel d is sufficiently smoothed, one can find the wavelet operator W (which is a sparse matrix) so that the above feature (3) holds within some acceptable approximation error. The above-mentioned features (1) and (2) are common to at least a family of compact wavelets (where feature (3) is generally approximation).

종래의 웨이브릿 컨볼루션에 대한 (미국 특허출원 제 09/480,908 호의 교시에 따른) "스플라인" 컨볼루션의 이점은 이것이 (N 개의 데이터 값으로 이루어진 패턴 p 를 나타내는 데이터에 대해) cN 개의 산술적 연산으로 수행될 수 있는 반면, 동일한 데이터에 대한 종래의 웨이브릿 컨볼루션은 bN 개의 산술적 연산을 필요로 한다는 점인데, 이 경우, (통상적인 에러 예산을 가정하면) 팩터 "b" 가 팩터 "c" 보다 훨씬 더 크다. (종래의 컨볼루션 방법에 대한) 특허출원 제 09/480,908 호의 "스플라인" 컨볼루션 방법의 중요한 다른 이점은, 웨이브릿 컨볼루션 방식이 설계에 의해 근사인 반면 (그리고, 웨이브릿 컨볼루션에 대한 에러 분석이 구현되기 어려운 반면), 스플라인 컨볼루션은 스플라인 커널 f 에 대하여 정확하고; 스플라인 컨볼루션에 의해 컨볼루션될 신호에 대한 신호 길이는 제한되지 않으며 (즉, 이들은 일부 종래 방법에서와 같이 2 의 멱승일 필요가 없으며, 실제로 이들은 임의의 특수한 형태를 가질 필요가 없고); 스플라인 컨볼루션으로 인해 비순환적 컨볼루션은 제로를 패딩 (padding) 할 필요가 없다는 점이다.The advantage of a "spline" convolution (in accordance with the teachings of US patent application Ser. No. 09 / 480,908) to conventional wavelet convolution is that it is based on cN arithmetic operations (for data representing a pattern p of N data values). On the other hand, conventional wavelet convolution for the same data requires bN arithmetic operations, in which case the factor "b" (assuming a normal error budget) is greater than the factor "c". Much bigger. An important other advantage of the "spline" convolution method of patent application 09 / 480,908 (for conventional convolution methods) is that while the wavelet convolution scheme is approximate by design (and error for wavelet convolution) While analysis is difficult to implement), spline convolution is accurate for spline kernel f; The signal lengths for the signals to be convolved by spline convolution are not limited (ie, they do not need to be powers of two as in some conventional methods, and in fact they do not have to have any special shape); Because of spline convolution, acyclic convolution does not require padding at zero.

(미국 특허출원 제 09/480,908 호에 따른 스플라인 컨볼루션과 같이) 본 발명에 따른 분리형-스플라인 컨볼루션은 N 개의 데이터 값에 의해 결정되는 패턴 p 를 컨볼루션하는 O(N) 방법이다. 본 발명에 따른 분리형-스플라인 컨볼루션은 (N 개의 데이터 값으로 이루어진 2 차원 이상의 패턴 p 를 나타내는 데이터에 대해) dN 개의 산술적 연산 (승산 및 가산) 으로 수행될 수 있는 한편, 미국 특허출원 제 09/480,908 호에 따른 스플라인 컨볼루션은 동일한 데이터에 대해 cN 개의 산술적 연산을 필요로 한다는 점에서, 본 발명에 따른 분리형-스플라인 컨볼루션은 미국 특허출원 제 09/480,908 호에 따른 스플라인 컨볼루션에 대해 이점을 갖는다 (팩터 "c" 는 팩터 "d" 보다 크며, 통상적으로 훨씬 크다). 다시 말해, 본 발명에 따른 분리형-스플라인 컨볼루션에 대한 내재된 큰-O 상수가 미국 특허출원 제 09/480,98 호에 설명된 바와 같은 스플라인 컨볼루션에 대한 통상적인 내재된 큰-O 상수보다 현저하게 작다.Isolated-spline convolutions (such as spline convolutions according to US patent application Ser. No. 09 / 480,908) are O (N) methods for convolving a pattern p determined by N data values. The isolated-spline convolution according to the invention can be performed with dN arithmetic operations (multiplication and addition) (for data representing a pattern p of two or more dimensions consisting of N data values), while US patent application 09 / In that the spline convolution according to 480,908 requires cN arithmetic operations on the same data, the isolated-spline convolution according to the present invention has an advantage over the spline convolution according to US patent application Ser. No. 09 / 480,908. (Factor "c" is greater than factor "d", typically much larger). In other words, the inherent large-O constants for isolated-spline convolutions according to the present invention are better than the conventional inherent large-O constants for spline convolution as described in US patent application Ser. No. 09 / 480,98. Remarkably small

발명의 개요Summary of the Invention

실시형태의 분류에서, 본 발명은 평활 확산 커널 d 로 n-차원 패턴 "p" (즉, n-차원 패턴 "p" 를 나타내는 데이터) 의 2-차원의 순환적 또는 비순환적 컨볼루션을 수행하여, 컨볼루션 결과 In the classification of embodiments, the present invention performs a two-dimensional cyclic or acyclic convolution of n-dimensional pattern "p" (ie, data representing n-dimensional pattern "p") with smooth spread kernel d by , Convolution results

r = Dp = d ×p r = Dp = d × p

를 나타내는 데이터를 발생하는 방법이다 (이 경우, n ≥2 이고, D 는 d 의 (여기에서는, "회전"이라고도 하는) 회전 매트릭스이며, " ×"는 컨볼루션을 나타낸다). 2-차원 패턴 p 는 데이터 값의 연속적인 2-차원 범위 또는 이산적인 데이터 값의 2-차원 어레이에 의해 결정된다. 통상적인 이산적 구현의 경우, 패턴 p 는, 패턴이 데이터 값 (예를 들어, 픽셀) pij (i 는 0 에서 N-1 까지 변하고, j 는 0 에서 N'-1 까지 변함) 의 이산적이며, 순서화된 세트에 의해 결정된다는 점에서 2-차원이다. 패턴 p 가 2 보다 큰 차원을 가질 경우, 패턴은 3-차원 또는 그 보다 높은 차원의 데이터 값 세트에 의해 결정된다. 통상적으로, 커널 d 는 데이터 값 dij (i 는 0 에서 N-1 까지 변하고, j 는 0 에서 N'-1 까지 변함) 의 어레이에 의해 결정된다. (In this case n ≧ 2, D is a rotation matrix (also referred to herein as “rotation”) of d, and “×” represents convolution). The two-dimensional pattern p is determined by a continuous two-dimensional range of data values or a two-dimensional array of discrete data values. For a typical discrete implementation, the pattern p is a discrete pattern of data values (e.g. pixels) p ij (i varies from 0 to N-1 and j varies from 0 to N'-1). And is two-dimensional in that it is determined by the ordered set. If the pattern p has a dimension greater than 2, the pattern is determined by a set of data values in three or higher dimensions. Typically, kernel d is determined by an array of data values d ij (i varies from 0 to N-1 and j varies from 0 to N'-1).

바람직한 실시형태에서, 컨볼루션 r = Dp = d ×p (d 는 분리형-스플라인 커널에 의해 양호하게 근사된다 (또는 분리형-스플라인 커널과 동일하다)) 을 수행하는 발명의 방법은, In a preferred embodiment, the inventive method of performing convolution r = Dp = d × p (where d is well approximated by the split-spline kernel (or same as split-spline kernel)),

(a) k(x1,..., xn) = k1(x1)k2(x2)...kn(xn) (이 경우, k 는 연산자 A = A1A2...An 를 허용하며, n 은 패턴 p 의 차원이고, Aj 는 (Aj 가 소멸화 연산자인 경우) AjKj 가 희소이나 (Aj 가 평탄화 연산자인 경우) AjKj 가 거의 모든 곳에서 국부적으로 일정한 매트릭스가 되는 방식으로, 커널 kj 의 회전 Kj 에 대해 작용하는 소멸화 또는 평탄화 연산자이다) 로서 분리형-스플라인 커널을 특정하는 단계;(a) k (x 1 , ..., x n ) = k 1 (x 1 ) k 2 (x 2 ) ... k n (x n ) (in this case, k is the operator A = A 1 A 2 ... allows A n , where n is the dimension of the pattern p, and A j is (if A j is a destructive operator) A j K j is sparse (if A j is a smoothing operator) A j K j Is a destructive or flattening operator that acts on the rotation K j of the kernel k j , in such a way that it is a local constant matrix almost everywhere);

(b) 패턴 p 의 각 행에 대한 q1 = A1k1 ×p 를 계산하는 단계;(b) calculating q 1 = A 1 k 1 × p for each row of the pattern p;

(c) 소수 개의 r1 성분을 직접 계산하는 예비 점화 단계를 수행한 다음, 연산자 A1 에 의해 결정된 자연스러운 회귀 관계를 이용하여 r1 성분의 나머지를 결정함에 의해, 패턴의 각 행에 대한 A1r1 = q1 을 거꾸로 풀어내어 패턴에 대한 r1 = k1 ×p 을 결정하는 단계; (c) performing a preliminary ignition step of directly calculating a few r 1 components and then determining the remainder of the r 1 components using the natural regression relationship determined by operator A 1 , thereby determining A 1 for each row of the pattern. solving r 1 = q 1 backwards to determine r 1 = k 1 x p for the pattern;

(d) 단계 (c) 에서 발생된 r1 = k1 ×p 를 치환하여 패턴에 대한 r1 T = (k1 ×p)T 를 발생하고, (k1 ×p)T 의 각 행에 대한 q2 = A2k2 ×r1 T = A2k2 ×(k1 ×p)T 를 계산하여 단계; 및(d) substituting r 1 = k 1 × p generated in step (c) to generate r 1 T = (k 1 × p) T for the pattern, and for each row of (k 1 × p) T calculating q 2 = A 2 k 2 xr 1 T = A 2 k 2 x (k 1 xp) T ; And

(e) (k1 ×p)T 의 상기 각 행에 대한 A2rT = q2 를 거꾸로 풀어내어 패턴에 대한 rT = (k2 ×k1 ×p)T 를 결정하는 단계를 포함한다. (e) solving A 2 r T = q 2 for each of said rows of (k 1 × p) T backwards to determine r T = (k 2 × k 1 × p) T for the pattern .

패턴 p 가 2-차원일 경우 (n = 2), 단계 (e) 의 결과는 통상적으로 r = (k2 ×k1 ×p) 를 나타내는 데이터를 발생시키기 위해 치환되는데, 이 경우, 결과 r 은, 소정 컨볼루션 r = Dp 에 근접한 근사인 k ×p 와 정확하게 동일하다. If the pattern p is two-dimensional (n = 2), the result of step (e) is typically substituted to generate data representing r = (k 2 x k 1 x p), where the result r is Is exactly equal to k × p, which is an approximation of a given convolution r = Dp.

p 가 n-차원 (n > 2) 패턴인 경우, (i-번째 반복 동안, i-번째 차원에 대한 qi = Aiki ×qi-1 이 계산되며) 각각의 추가적인 차원에 대해 이들이 각각 반복된다는 점에서, 단계 (d) 와 (e) 가 반복되며, 단계 (e) 의 마지막 반복 결과에 대한 치환은 소정 컨볼루션 r = Dp 에 근접한 근사인 k ×p 와 정확하게 동일하다. (축 i1, i2, ..., in 을 갖는) n-차원 어레이 M 에 대해, 다중 차원의 치환은

Figure 112007037998221-pct00102
으로 정의된다.If p is an n-dimensional (n> 2) pattern, (for i-th iteration, q i = A i k i × q i-1 for the i- th dimension is calculated) and for each additional dimension they are In that each is repeated, steps (d) and (e) are repeated, and the substitution for the last repetition result of step (e) is exactly the same as k x p, which is an approximation to a given convolution r = Dp. For an n-dimensional array M (with axes i 1 , i 2 , ..., i n ), the multidimensional substitution is
Figure 112007037998221-pct00102
Is defined.

단계 (c) 의 일부 구현에서는, r1 의 소수 개의 최저 성분이 예비 점화 단계 동안 직접적으로 계산된 다음, 자연스러운 회귀 관계를 이용해 r1 성분의 나머지가 결정된다. 단계 (c) 의 바람직한 구현에서는, r1 의 소수 개의 큰 음의 성분을 예비 점화 단계 동안 직접적으로 계산한 다음, 자연스러운 회귀 관계를 이용해 r1 성분의 나머지를 결정한다. In some implementations of step (c), the few lowest components of r 1 are calculated directly during the preliminary ignition step, and then the remainder of the r 1 components is determined using the natural regression relationship. In a preferred implementation of step (c), the few large negative components of r 1 are calculated directly during the preliminary ignition step and then the natural regression relationship is used to determine the remainder of the r 1 components.

커널 d 자체가 분리형-스플라인 커널인 경우 (그에 따라, d = k 이고 K = D 인 경우), 이 방법은 정확한 결과 (r = Dp) 를 산출한다. 그렇지 않으면, 이 방법에 내재하는 에러는 (k - d) ×p 이므로, 이 에러는 용이하게 한정된다.If the kernel d itself is a split-spline kernel (and therefore d = k and K = D), this method yields the correct result (r = Dp). Otherwise, the error inherent in this method is (k-d) x p, so this error is easily limited.

패턴 p 가 2-차원인 바람직한 실시형태의 일 분류에서, 2 차원 커널은 k(x,y) = k1(x)k1(y) 로서 정의되며, 이 경우,In one class of preferred embodiments where the pattern p is two-dimensional, the two-dimensional kernel is defined as k (x, y) = k 1 (x) k 1 (y), in which case

Figure 112007037998221-pct00103
Figure 112007037998221-pct00103

이다. 1-차원 커널 k1(x) 는 다음과 같은 3 개의 부분을 갖는데, to be. The one-dimensional kernel k 1 (x) has three parts:

Figure 112003044964105-pct00025
Figure 112003044964105-pct00025

이 경우, kc(x) 는 다음과 같은 커널이고,In this case, k c (x) is the kernel

Figure 112007037998221-pct00104
Figure 112007037998221-pct00104

k+(x) 는 다음과 같은 단측의 라플라시안 커널 (one-tailed Laplacian kernel) 이며,k + (x) is the one-tailed Laplacian kernel,

Figure 112007037998221-pct00105
Figure 112007037998221-pct00105

k-(x) 는 다음과 같은 단측의 라플라시안 커널이다.k - (x) is the Laplacian kernel of the next one-sided, such as.

Figure 112007037998221-pct00106
Figure 112007037998221-pct00106

각각의 1-차원 컨볼루션이 3 개의 부분에서 수행된다. (|x|≤R 인) 캡과 (

Figure 112007037998221-pct00107
인) 2 개의 감쇠 영역은 상이한 컨볼루션에 의해 각각 생성되며, 이들의 결과를 함께 가산하여 최종 결과를 획득한다.Each one-dimensional convolution is performed in three parts. (| X | ≤ R) cap and (
Figure 112007037998221-pct00107
The two attenuation regions are each created by different convolutions, and their results are added together to obtain the final result.

보다 구체적으로, 실시형태의 상기 분류에서, 본 발명의 방법은,More specifically, in the above classification of embodiments, the method of the present invention,

(a) k(x, y) = k1(x)k1(y) (이 경우, k1(x) 는 이전의 문단에서 정의되었다) 로서 분리형-스플라인 커널을 특정하는 단계;(a) specifying a separate-spline kernel as k (x, y) = k 1 (x) k 1 (y), in which case k 1 (x) is defined in the previous paragraph;

(b) 패턴 p 의 각 행에 대한 캡 컨볼루션 kc ×p(x), 상기 각 행에 대한 제 2 컨볼루션 k+ ×p(x), 및 상기 각 행에 대한 제 3 컨볼루션 k- ×p(x) 를 계산하고, 상기 각 행에 대한 캡 컨볼루션, 제 2 컨볼루션 및 제 3 컨볼루션을 함께 가산하여, (b) cap convolution k c × p (x) for each row of pattern p, second convolution k + × p (x) for each row, and third convolution k for each row; Calculate xp (x) and add together the cap convolution, the second convolution and the third convolution for each row,

Figure 112003044964105-pct00029
Figure 112003044964105-pct00029

를 나타내는 데이터를 발생하는 단계로서, 이 경우,Generating data indicative of

캡 컨볼루션은 상기 각 행에 대한 Ackc ×p 를 계산하고Cap convolution calculates A c k c × p for each row above

(이 경우, Ac

Figure 112007037998221-pct00030
로서 정의되는 소멸화 연산자), (In this case, A c
Figure 112007037998221-pct00030
Destructive operator, defined as

회귀 관계

Figure 112007037998221-pct00108
를 이용하여
Figure 112007037998221-pct00031
를 계산함으로써 실현되고,Regression relationship
Figure 112007037998221-pct00108
Using
Figure 112007037998221-pct00031
Is realized by calculating

삭제delete

제 2 컨볼루션은 상기 각 행에 대한 A+k+ ×p(x) 를 계산하고The second convolution calculates A + k + x p (x) for each row above

(이 경우, A+

Figure 112007037998221-pct00033
로서 정의되는 소멸화 연산자), (In this case, A +
Figure 112007037998221-pct00033
Destructive operator, defined as

회귀 관계

Figure 112007037998221-pct00109
를 이용하여
Figure 112007037998221-pct00034
를 계산함으로써 실현되고,Regression relationship
Figure 112007037998221-pct00109
Using
Figure 112007037998221-pct00034
Is realized by calculating

삭제delete

제 3 컨볼루션은 상기 각 행에 대한 A-k- ×p(x) 를 계산하고The third convolution of A for each of the line-and calculating × p (x) - k

(이 경우, A-

Figure 112007037998221-pct00036
로서 정의되는 소멸화 연산자), (In this case, A - is
Figure 112007037998221-pct00036
Destructive operator, defined as

회귀 관계

Figure 112007037998221-pct00110
를 이용하여 끝에서부터 시작까지 회귀하는 것에 의해
Figure 112007037998221-pct00037
를 계산함으로써 실현되는, 단계;Regression relationship
Figure 112007037998221-pct00110
By returning from end to beginning using
Figure 112007037998221-pct00037
Realized by calculating;

삭제delete

(c) (k1 ×p)T 를 발생시기키 위해 (k1 ×p) 를 치환하는 단계;(c) substituting (k 1 × p) to generate (k 1 × p) T ;

(d) p 의 행이 아닌 (k1 ×p)T 의 행에 대해 단계 (b) 를 반복함으로써, k1 으로 k1 ×p 의 모든 열을 컨볼루션하는 단계; 및 (d) p (k 1 × p) than the line of the by repeating step (b) for the rows of T, the k 1 further comprising: convolutional all columns of k 1 × p; And

(e) 단계 (d) 의 결과를 치환하여 r = k ×p 를 나타내는 데이터를 발생하는 단계를 수행함으로써, p 가 2-차원 패턴이고 d 가 분리형 스플라인 커널에 의해 양호하게 근사되는 (또는 그와 동일한) 커널인 컨볼루션 r = d ×p 을 실현한다. (e) substituting the result of step (d) to generate data representing r = k × p, where p is a two-dimensional pattern and d is well approximated by (or with) a separate spline kernel We realize convolution r = d × p, which is the same kernel.

통상적으로, 패턴 p(x, y) 는 단계 (b) 이전에 메모리에 저장되고, 단계 (b) 의 각 반복은 메모리로부터 판독된 패턴 p(x, y) 의 상이한 행에 대해 수행되며, 단계 (c) 는, (k1 ×p)T 의 각 행이 p(x, y) 의 대응하는 행이 이전에 차지했던 기억 위치를 차지하도록, (k1 ×p)T 를 메모리에 저장하는 단계를 포함한다. 선택적으로, 마지막 단계 (단계 (e)) 는 생략된다.Typically, the pattern p (x, y) is stored in memory before step (b), and each iteration of step (b) is performed on a different row of pattern p (x, y) read from the memory, and step (c) storing (k 1 × p) T in memory such that each row of (k 1 × p) T occupies a storage location previously occupied by the corresponding row of p (x, y) It includes. Optionally, the last step (step (e)) is omitted.

패턴 p 가 2-차원인 바람직한 실시형태의 다른 분류에서, 2-차원 커널은 다음과 같이 정의된다.
k(x,y)=k2(x)k2(y), 여기서,
In another class of preferred embodiments where the pattern p is two-dimensional, the two-dimensional kernel is defined as follows.
k (x, y) = k 2 (x) k 2 (y), where

Figure 112007037998221-pct00111
이다.
Figure 112007037998221-pct00111
to be.

1-차원 커널 k2(x) 는 다음과 같이 2 개의 부분을 가지며,One-dimensional kernel k 2 (x) has two parts as follows,

k2(x) = kc(x) + ki(x)k 2 (x) = k c (x) + k i (x)

이 경우, kc(x) 는 다음과 같은 커널이고,In this case, k c (x) is the kernel

Figure 112007037998221-pct00112
Figure 112007037998221-pct00112

ki(x) 는 다음과 같은 같다.k i (x) is

Figure 112007037998221-pct00113
Figure 112007037998221-pct00113

보다 구체적으로, 이전 문단에서 정의된 바와 같은 k2(x) 를 갖는 k(x, y) = k2(x)k2(y) 인 실시형태에서, 컨볼루션 r = d ×p (d 는 분리형-코사인 커널에 의해 양호하게 근사된다 (또는 분리형-코사인 커널과 동일하다)) 를 수행하는 본 발명의 방법은,More specifically, in an embodiment where k (x, y) = k 2 (x) k 2 (y) with k 2 (x) as defined in the previous paragraph, convolution r = d × p (d is The method of the present invention performing a good approximation (or the same as a discrete-cosine kernel) by a discrete-cosine kernel,

(a) k(x, y) = k2(x)k2(y) 로서 분리형-코사인 커널을 특정하는 단계;(a) specifying a discrete-cosine kernel as k (x, y) = k 2 (x) k 2 (y);

(b) 패턴 p(x, y) 의 각 행에 대해, 다음의 2 가지 단계를 수행하는 단계: (i) -R-3 ≤x ≤n-1 에 대해, 상기 각 행에 대한 값 Ak2 ×p 을 다음과 같이 계산하는 단계:(b) For each row of the pattern p (x, y), performing the following two steps: (i) For -R-3 <x <n-1, the value Ak 2 for each row above Calculate × p as:

Ak2(x) ×p(x) = 2sin2(π/2L)(p(x + R) + p(x + R +1)) - p(x -R) - p(x -R +1)); 및Ak 2 (x) × p (x) = 2sin 2 (π / 2L) (p (x + R) + p (x + R +1))-p (x -R)-p (x -R +1 )); And

(ii) 상기 각 행에 대한 r(x) = A-1(Ak2 ×p) 를 발견하기 위해, 회귀 관계 r(x + 2) = Ar(x) + 2sin2(π/2L)(r(x + 1) - r(x)) + r(x - 1) 를 이용하고, 상기 회귀 연산을 점화하도록 관계 r(-R - 4) = r(-R - 3) = r(-R - 2) =0 를 이용하여 회귀 연산을 수행함으로써, 단계 (ii) 의 마지막 반복의 끝에서, k2 ×p 를 나타내는 데이터를 생성하는 단계;(ii) the regression relationship r (x + 2) = Ar (x) + 2sin 2 (π / 2L) (r) to find r (x) = A -1 (Ak 2 xp) for each row above (x + 1)-r (x)) + r (x-1), and the relationship r (-R-4) = r (-R-3) = r (-R-to ignite the regression operation 2) generating data representing k 2 × p at the end of the last iteration of step (ii) by performing a regression operation with = 0;

(c) k2 ×p 를 치환하여 (k2 ×p)T 를 발생하는 단계; 및(c) by substituting k 2 × p (k 2 × p) generating a T; And

(d) p 의 행이 아닌 (k2 ×p)T 의 행에 대해 단계 (b) 를 반복함으로써, k2 로 k2 ×p 의 모든 열을 컨볼루션하는 단계를 포함한다. by (d) repeating step (b) for non-line of p (k 2 × p) T of the line, and a step of convolution all columns of 2 k × 2 k to p.

바람직하게도, 단계 (a)~(d) 는 적절히 프로그램된 프로세서에 의해 수행되며, 이 프로세서는 단계 (d) 후에, (e) 단계 (d) 의 결과를 치환하여 r(x, y) 를 발생하고, 초기 프로세서 상태로 되돌아가는 단계를 추가적으로 수행한다. 이러한 분류의 실시형태에 관한 변형에서, 팩터 2sin2(π/2L) 의 발생 각각은 팩터 1 로 대체된다. Preferably, steps (a) to (d) are performed by a suitably programmed processor, which, after step (d), (e) substitutes the result of step (d) to generate r (x, y). And further returning to the initial processor state. In a variation on embodiments of this classification, each occurrence of factor 2sin 2 ([pi] / 2L) is replaced with factor 1.

다른 실시형태에서, 본 발명은 본 발명의 방법에 대한 임의의 실시형태에 따른 분리형 커널을 이용하여, n-차원 패턴 (이 경우, n 은 2 이상) 을 나타내는 데이터에 대해 컨볼루션을 수행하도록 소프트웨어로 프로그램된 컴퓨터이다. 본 발명의 다른 실시형태로는 본 발명의 방법에 대한 임의의 실시형태에 따른 분리형 커널을 이용하여, n-차원 패턴 (이 경우, n 은 2 이상) 을 나타내는 데이터에 대해 컨볼루션을 수행하도록 구성된 디지털 신호 프로세싱 회로를 포함하는 디지털 신호 프로세서, 본 발명의 방법에 대한 임의의 실시형태에 따라 이러한 데이터에 대해 컨볼루션을 수행하도록 구성된 (상용이나 전용의 전자 회로, 또는 "FPGA 시스템"과 같은) 장치, 및 이러한 디지털 신호 프로세싱 회로, 이러한 상용이나 전용의 전자 회로, 또는 이러한 FPGA 시스템을 포함하는 리소그래피 시스템을 들 수 있다. In another embodiment, the invention uses software to perform convolution on data representing an n-dimensional pattern, in which case n is two or more, using a detachable kernel in accordance with any embodiment of the method of the invention. It is a computer programmed. Another embodiment of the invention is configured to perform convolution on data representing an n-dimensional pattern, in which case n is 2 or more, using a detachable kernel according to any embodiment of the method of the invention. A digital signal processor comprising a digital signal processing circuit, an apparatus (such as a commercial or dedicated electronic circuit, or an "FPGA system") configured to perform convolution on such data in accordance with any embodiment of the method of the present invention. And lithographic systems including such digital signal processing circuits, such commercial or proprietary electronic circuits, or such FPGA systems.

명령어의 실행에 응답하여, 컴퓨터가 본 발명의 방법에 대한 실시형태를 수행하도록 하는 컴퓨터-판독가능한 명령어를 저장하는 컴퓨터-판독가능 저장 매체 또한, 본 발명의 범위에 속한다.
Computer-readable storage media storing computer-readable instructions that, in response to execution of the instructions, cause the computer to perform embodiments of the method of the present invention, also fall within the scope of the present invention.

도면의 간단한 설명Brief description of the drawings

도 1 은 본 발명의 방법을 구현하는 소프트웨어로 프로그램된 컴퓨터 시스템의 블록도이다.1 is a block diagram of a computer system programmed with software implementing the method of the present invention.

도 2 는 이미지 데이터에 대해 (본 발명에 따른) 컨볼루션을 수행하도록 구성된 디지털 신호 프로세서, 및 그에 따라 컨볼루션된 이미지 데이터로부터 패턴 신호 (예를 들어, 진폭이 시간에 따라 변하는 광학 빔, 전자 빔) 를 발생하는 장치를 포함하는 리소그래피 시스템의 블록도이다. 패턴 신호는 광학계 (예를 들어, 반사 또는 굴절 광학계, 또는 전자 빔 광학계) 의 세트로 인가되고, 광학계의 출력은 유리판상에 패턴으로서 투사됨으로써, 집적회로 제작에 유용한 마스크를 생성한다. 2 is a digital signal processor configured to perform convolution (according to the invention) on image data, and thus a pattern signal (e.g., optical beam, electron beam whose amplitude varies with time) from the convolved image data. Is a block diagram of a lithographic system that includes an apparatus for generating a system. The pattern signal is applied to a set of optical systems (e.g., reflective or refractive optical systems, or electron beam optical systems), and the output of the optical systems is projected as a pattern on a glass plate, thereby creating a mask useful for fabricating integrated circuits.

도 3 은 이미지 데이터상에 (본 발명에 따른) 컨볼루션을 수행하도록 구성된 (도 2 의 디지털 신호 프로세서로 이용될 수 있는) 디지털 신호 프로세서의 블록도이다. 3 is a block diagram of a digital signal processor (which may be used with the digital signal processor of FIG. 2) configured to perform convolution (according to the invention) on image data.

도 4 는 도 2 의 시스템에 대한 변형인 리소그래피 시스템의 블록도이다.4 is a block diagram of a lithographic system, which is a variation on the system of FIG.

도 5 는 명령어의 실행에 응답하여, 컴퓨터가 본 발명의 방법에 따른 실시형태를 수행하게 하는 컴퓨터-판독가능 명령어를 저장하는 컴퓨터-판독가능 저장 매체 (CD-ROM) 의 간략화된 정면도이다.5 is a simplified front view of a computer-readable storage medium (CD-ROM) storing computer-readable instructions for causing a computer to perform embodiments in accordance with the methods of the present invention in response to execution of the instructions.

바람직한 실시형태의 상세한 설명Detailed Description of the Preferred Embodiments

청구범위를 포함하는 명세서 전체에서, "데이터"라는 용어는 데이터 워드를 나타내는 하나 이상의 신호를 의미한다. 따라서, 패턴 "p" 를 나타내는 데이터가 평활 커널 "d" 를 나타내는 데이터로 (본 발명에 따라) 컨볼루션된다는 문장은, 패턴 p 를 나타내는 하나 이상의 신호가 커널 d 를 나타내는 하나 이상의 다른 신호의 다른 세트로 프로세싱되어 컨볼루션 결과를 나타내는 데이터 (즉, 하나 이상의 신호) 가 발생된다는 것을 의미한다.Throughout the specification, including the claims, the term “data” means one or more signals representing data words. Thus, the statement that data representing pattern "p" is convolved (according to the invention) with data representing smooth kernel "d" means that one or more signals representing pattern p represent another set of one or more other signals representing kernel d. Means that data (ie, one or more signals) is generated that is processed to represent the convolution result.

"소멸화" 및 "평탄화" 연산자를 참조하여 본 발명의 바람직한 실시형태를 설명한다.Preferred embodiments of the present invention are described with reference to the "extinction" and "flattening" operators.

먼저, 분리 이론 (the theory of separation) 에 대한 문제 발견적 동기 (heuristic motivation) 를 제공한다. 스플라인 컨볼루션의 이론은 각 영역이 연산자 A 에 의해 소멸되는 구분 커널 (piecewise kernel) 로 시작한다는 전제에 기초한다. 그 다음, Ak 로 패턴의 컨볼루션을 수행한다. A 가 커널의 각 영역을 소멸시키기 때문에, 컨볼루션은 실제로 커널 영역의 경계와 일치한다. 따라서, 차원 d 컨볼루션의 경우, Ak 는 어떤 의미에서 (d-1)-차원의 커널이다. 예를 들어, 다음의 커널을 고려한다.First, it provides a heuristic motivation for the theory of separation. The theory of spline convolution is based on the premise that each region begins with a piecewise kernel that is destroyed by operator A. Then, convolution of the pattern is performed with Ak. Since A destroys each area of the kernel, convolution actually matches the boundaries of the kernel area. Thus, for dimension d convolution, Ak is in some sense a (d-1) -dimensional kernel. For example, consider the following kernel:

Figure 112007037998221-pct00114
Figure 112007037998221-pct00114

이러한 커널이 소멸될 경우, 그 경계는 k 의 불연속성에 의해 발생되는 r0 에서의 링이다. Ak 의 논-제로 영역은 r0 에서 선형이고, 이는 "차원" 이 d-1 인 것을 의미한다. When this kernel dies, the boundary is the ring at r 0 caused by the discontinuity of k. The non-zero region of Ak is linear at r 0 , meaning that the "dimension" is d-1.

본 발명에 따른 컨볼루션이 분리형 커널을 이용하는 이유가 바로 이것이다. 본 발명에 따른 2-차원 컨볼루션을 수행하기 위한 기본적인 전제는, 분리형-커널을 팩터링하여 2 개의 1-차원 컨볼루션을 수행한다는 것이다. 이들 컨볼루션은 반경에 의존하지 않으며, 실제로 이러한 기술은 컨볼루션 연산의 수를 과감하게 감소시킨다. This is why the convolution according to the present invention uses a separate kernel. The basic premise for performing two-dimensional convolution according to the present invention is that the two-dimensional convolution is performed by factoring the split-kernel. These convolutions do not depend on radius, and in practice this technique drastically reduces the number of convolution operations.             

다음과 같이 표현될 수 있는 2-차원 커널 k(x, y) 을 가진다고 가정한다. Suppose we have a two-dimensional kernel k (x, y) that can be expressed as

k(x, y) = kx(x)ky(y)k (x, y) = k x (x) k y (y)

그렇다면, 소정의 패턴 p 에 대한, 컨볼루션의 결과는 다음과 같이 표현될 수 있다.If so, for a given pattern p, the result of the convolution can be expressed as follows.

Figure 112003044964105-pct00043
Figure 112003044964105-pct00043

그러나,

Figure 112007037998221-pct00044
는 ky 와 p 의 열-대-열 컨볼루션이다. 본 발명에 따른 컨볼루션 결과를 얻기 위해, py(y, j) 를 결정한 다음, 이를 kx 로 행을 따라 컨볼루션한다. 다음의 일례가 나타내는 바와 같이, 이러한 컨볼루션은 픽셀당 단지 몇 개의 연산이라는 것이 특징이다.But,
Figure 112007037998221-pct00044
Is the column-to-row convolution of k y and p. To obtain a convolution result according to the invention, p y (y, j) is determined and then convolved along the row with k x . As the following example shows, this convolution is characterized by only a few operations per pixel.

다음은 본 발명에 따라 구현된 분리형-스플라인 컨볼루션의 2 가지 일례이다. 이들 예는 다항식, 라플라시안, 그리고 삼각 함수의 스플라인 기술을 소개하기 위해 선택되었다.
The following are two examples of separate-spline convolutions implemented in accordance with the present invention. These examples were chosen to introduce spline techniques for polynomials, Laplacian, and trigonometric functions.

실시예 1 : 라플라시안 감쇠 분리형 커널을 이용한 2 차식Example 1 Secondary Formula Using Laplacian Attenuated Isolated Kernel

이러한 알고리즘을 위한 1-차원 커널은 다음과 같이 정의된다.The one-dimensional kernel for this algorithm is defined as follows.

Figure 112007037998221-pct00115
Figure 112007037998221-pct00115

연속성을 실현하기 위해 a(b2 - R2) = cd-R 을 가정할 수도 있다.It may be assumed that a (b 2 -R 2 ) = cd -R to realize continuity.

2-차원 커널은 다음의 수학식 1 과 같이 정의된다.The two-dimensional kernel is defined as in Equation 1 below.

k(x, y) = k1(x)k1(y)k (x, y) = k 1 (x) k 1 (y)

각각의 1-차원 컨볼루션은 3 개의 부분으로 수행된다. (|x|≤R 인) 캡과 (

Figure 112007037998221-pct00116
인) 2 개의 감쇠 영역은 상이한 컨볼루션에 의해 각각 발생되며, 이들의 결과는 함께 가산되어 최종 결과가 획득된다.Each one-dimensional convolution is performed in three parts. (| X | ≤ R) cap and (
Figure 112007037998221-pct00116
Two attenuation regions are each generated by different convolutions, the results of which are added together to obtain a final result.

다음과 같은 커널을 이용하여 1-차원의 캡 컨볼루션을 이하와 같이 수행한다. One-dimensional cap convolution is performed using the following kernel.

Figure 112007037998221-pct00117
Figure 112007037998221-pct00117

다음의 형태를 갖는 소멸화 연산자 Ac 를 선택한다.Choose the destructive operator A c of the form

Figure 112003044964105-pct00047
Figure 112003044964105-pct00047

(이 경우, e, f, g, h, i, j, m 및 n 은 정수)(In this case e, f, g, h, i, j, m and n are integers)

적절히 선택된 e, f, g, h, i, j, m 및 n 값에서, AcKc(x) 는 파라미터 x 의 소수 개의 특정 값을 제외하면 제로가 된다. 따라서, x 의 각 값에 대한 (AcKc ×p) 를 계산하기 위해, 소수 회의 가산 (컨볼루션이 수행되는 구간의 경계 부근에서는 더 작은 수의 가산) 만을 계산하면 된다. x 의 각 값에 대한 (AcKc ×p)(x) 를 계산한 후, Ac -1(AcKc ×p)(x) = r(x) 를 계산하는데 회귀 관계가 이용된다. 통상적인 구현에서는, 회귀 관계의 계산을 "점화"하는 직접적인 계산에 의해 Ac -1(AcKc ×p)(x) 의 소수 개의 초기값이 발견된다.At properly selected values of e, f, g, h, i, j, m and n, A c K c (x) is zero except for a few specific values of the parameter x. Therefore, to calculate (A c K c × p) for each value of x, only a few additions (a smaller number of additions near the boundary of the interval where the convolution is performed) need to be calculated. After calculating (A c K c × p) (x) for each value of x, the regression relationship is used to calculate A c -1 (A c K c × p) (x) = r (x) . In a typical implementation, a few initial values of A c -1 (A c K c × p) (x) are found by direct calculations that "ignite" the calculation of the regression relationship.

Kc(x) 의 파라미터 "a" 및 "b" 가 a = 1 및 b = R 을 만족하는 경우를 고려한다. 이 경우, 소멸화 연산자 Ac 는 다음과 같이 선택한다.Consider the case where the parameters "a" and "b" of K c (x) satisfy a = 1 and b = R. In this case, the destructive operator A c is selected as follows.

Figure 112003044964105-pct00048
Figure 112003044964105-pct00048

이러한 연산자 Ac 에 대해, AcKc(x) 는 x = -2R + 1, x = 2R + 1, x = -2R - 1, 및 x = 2R - 1 의 4 개의 x 값을 제외하면 제로가 된다. 따라서, x 의 각 값에 대한 (Ackc ×p)(x) 를 계산하기 위해, 7 번의 가산 (컨볼루션이 수행되는 구간의 경계 부근에서는 더 적은 수의 가산) 만을 계산하면 된다. Ac -1(Ackc ×p)(x) = r(x) 를 계산하는데 이용되는 회귀 관계는 이렇게 정의된 Ac 를 다음의 등식에 재기입하고 x 에 대해 회귀적으로 (recursively) 풀어내는 것에 의해 결정된다.For such an operator A c , A c K c (x) is zero except for the four x values of x = -2R + 1, x = 2R + 1, x = -2R-1, and x = 2R-1 Becomes Therefore, to calculate (A c k c xp) (x) for each value of x, only seven additions (less additions near the boundary of the section where the convolution is performed) need to be calculated. The regression relationship used to calculate A c -1 (A c k c xp) (x) = r (x) rewrites A c defined in the following equation and recursively to x Determined by releasing.

Figure 112003044964105-pct00049
Figure 112003044964105-pct00049

마지막 어려움은 이렇게 하기 위해 3 개의 kc 초기값이 필요하다는 점이다. 컨볼루션을 "점화" 함에 있어서의 이러한 문제에 대한 2 가지 해결책이 있다. 먼저, 3(2R - 2) 번 승산하고 3(2R - 3) 번 가산하는 직접적인 계산을 통해 {r(0), r(1), r(2)} 값들을 풀 수 있다. 그렇지 않으면, -R 미만의 x 에 대한 r(x) 는, 이들 포인트가 패턴으로부터 벗어난 커널 반경 너머에 있기 때문에, 제로여야 한다. 따라서, r(-R - 2), r(-R - 1) 및 r(-R) 모두가 제로임을 알 수 있다. 그 다음, 회귀하여 {r(0), r(1), r(2)} 를 발견함으로써 컨볼루션을 점화할 수 있다. 후자의 프로시저는 3(R + 2) 의 가산 및 (R + 2) 의 승산을 필요로 하며, 따라서, 이러한 경우라면, 두번째 접근 방식이 훨씬 경제적이다. 두번째 접근 방식이 첫번째 접근 방식보다 덜 경제적인 다른 경우들이 있다.The final difficulty is that we need three k c initial values to do this. There are two solutions to this problem in "lighting" the convolution. First, {r (0), r (1), r (2)} values can be solved by a direct calculation of multiplying 3 (2R-2) times and adding 3 (2R-3) times. Otherwise, r (x) for x less than -R must be zero since these points are beyond the kernel radius deviating from the pattern. Thus, it can be seen that r (-R-2), r (-R-1) and r (-R) are all zero. The convolution can then be ignited by regression to find {r (0), r (1), r (2)}. The latter procedure requires addition of 3 (R + 2) and multiplication of (R + 2), so in this case, the second approach is much more economical. There are other cases where the second approach is less economical than the first approach.

양의 감쇠 영역에 대한 1-차원 컨볼루션은 다음과 같은 단측 라플라시안 감쇠 커널을 이용하여 수행되는데, One-dimensional convolution for the positive damping region is performed using the following one-sided Laplacian attenuation kernel,

Figure 112007037998221-pct00118
Figure 112007037998221-pct00118

이는, 다음과 같이 단순한 소멸화 연산자 A+ 에 의해 소멸된다.It is destroyed by the simple destructive operator A + as follows:

Figure 112003044964105-pct00051
Figure 112003044964105-pct00051

A+k+(R) = cd-R 이거나 그렇지 않으면 A+k+(R) = 0 이다. 이는 단순한 패턴 변환 및 스케일링이며, 회귀는 다음과 같이 단순한 것일 수 있다.A + k + (R) = cd -R or A + k + (R) = 0 otherwise. This is a simple pattern transformation and scaling, and the regression can be as simple as:

Figure 112003044964105-pct00052
Figure 112003044964105-pct00052

이러한 감쇠 커널의 흥미로운 점은 결과의 영역에서 점화될 수 있다는 점이 다. 즉, R 미만의 모든 x 에 대해 r 이 제로라는 것을 알고 있다. 그래서, 처음의 R 값을 제로로 채운 다음, 실제로 스플라인을 시작한다.The interesting thing about this attenuation kernel is that it can be ignited in the domain of the result. That is, we know that r is zero for all x less than R. So, after filling the initial R value to zero, we actually start the spline.

음의 감쇠 영역에 대한 1-차원 컨볼루션은, 회귀가 반대 방향을 취해야 한다는 것을 제외하면, 양의 감쇠 영역에 대한 1-차원 컨볼루션과 정확하게 동일하다. Kc 및 K+ 컨볼루션은 포인터의 단일 패스에서 계산될 수 있지만, k- 컨볼루션은 제 2 의 역의 패스 (reversed pass) 를 필요로 하기 때문에, 이는 알고리즘의 속도를 늦춘다. The one-dimensional convolution for the negative damping region is exactly the same as the one-dimensional convolution for the positive damping region, except that the regression must take the opposite direction. K c and K + convolution can be computed in a single pass of the pointer, but this slows down the algorithm because k convolution requires a second reversed pass.

다음은 본 발명에 따른 분리형-스플라인 컨볼루션으로 상술한 2-차원 컨볼루션을 구현하는 한가지 알고리즘이다. 알고리즘 서술을 위해, 다음의 정의가 필요하다. k- 커널은 다음과 같고,The following is one algorithm for implementing the above-described two-dimensional convolution with detachable-spline convolution according to the present invention. To describe the algorithm, the following definition is required. k -the kernel is

Figure 112007037998221-pct00119
Figure 112007037998221-pct00119

그것의 소멸화 연산자 A- 는 다음과 같다.Its destructive operator A - is

Figure 112003044964105-pct00054
Figure 112003044964105-pct00054

알고리즘은 (x, y) ∈ D 에 대한 입력으로서 패턴 p(x, y) 을 취하는데, D 는 소정 크기의 직사각형 도메인이다. 알고리즘은 D 의 모든 포인트에 대해 r(x, y) = (k ×p)(x, y) 를 돌려주는데, k(x, y) 는 상기 수학식 1 에 정의되어 있다. 이러한 경우, 라플라시안 감쇠의 특성으로 인해, k 를 기술하는 최적 "상수" 는 D 의 폭과 높이에만 의존하기 때문에, D 의 크기가 고정될 것을 요구할 수 있다. 알고리즘은 k(x, y) 를 다음과 같이 처리하는 것에 의해 컨볼루션을 계산한다.The algorithm takes a pattern p (x, y) as input to (x, y) ∈ D, where D is a rectangular domain of a predetermined size. The algorithm returns r (x, y) = (k × p) (x, y) for all points of D, where k (x, y) is defined in Equation 1 above. In such a case, due to the nature of the Laplacian attenuation, the optimal "constant" describing k depends only on the width and height of D, which may require the size of D to be fixed. The algorithm calculates convolution by processing k (x, y) as follows.

Figure 112003044964105-pct00055
Figure 112003044964105-pct00055

보다 용이한 이해를 위해, 알고리즘은 최적화되지 않은 방식으로 제시된다. 부동 소수점 계산의 경우, 다항의 컨볼루션시 돌발적이고 혼란스러운 거동이 발생할 수 있으므로, 이는 고정-소수점의 숫자로 수행되어야 한다.For easier understanding, the algorithm is presented in an unoptimized manner. In the case of floating-point calculations, this can be done with fixed-point numbers, because sudden and confusing behavior can occur during polynomial convolution.

"Algorithm for Quadratic with Laplacian decay separated-spline convolution"이라는 알고리즘은 다음과 같다.The algorithm "Algorithm for Quadratic with Laplacian decay separated-spline convolution" is as follows.

(a) 행을 루프화한다. 각 행에 대해, 각 행에 대한 캡 컨볼루션 (단계 ⅰ), 양의 감쇠 컨볼루션 (단계 ⅱ), 및 음의 감쇠 컨볼루션 (단계 ⅲ) 을 계산하고, 상기 행에 대해 단계 (ⅰ), (ⅱ) 및 (ⅲ) 에서 생성된 3 개의 컨볼루션을 함께 가산함 (단계 ⅳ) 으로써, k1(x) 로 행의 컨볼루션을 계산한다. 단계 (ⅰ), (ⅱ), (ⅲ) 및 (ⅳ) 의 1 회 반복은 패턴의 각 행에 대해 다음과 같이 수행된다.(a) Loop the rows. For each row, calculate the cap convolution (step iii), the positive attenuation convolution (step ii), and the negative attenuation convolution (step iii) for each row, and for that row, By adding together three convolutions generated in (ii) and (iii) (step iii), the convolution of the row is calculated by k 1 (x). One iteration of steps (iii), (ii), (iii) and (iii) is performed for each row of the pattern as follows.

(ⅰ) kc 컨볼루션 계산하기:(V) Compute k c convolution:

패턴의 상기 행으로 컨볼루션된 소멸화된 커널 (Ackc ×p)(x) 계산하기 (이 경우, Ac 는 상술한 바와 같음); 및Calculating an extinct kernel (A c k c × p) (x) convolved with the row of the pattern, in which case A c is as described above; And

kc(x) 의 파라미터 "a" 및 "b" 가 a = 1 및 b = R 을 만족하는 경우, kc(x+3) = Ackc(x) + kc(x) + 3kc(x+2) - 3kc (x+1) 의 상술한 회귀 관계를 이용하여 Ac -1(Ackc ×p)(x, y) 계산하기;If the parameters "a" and "b" of k c (x) satisfy a = 1 and b = R, then k c (x + 3) = A c k c (x) + k c (x) + 3k calculating A c -1 (A c k c xp) (x, y) using the above regression relationship of c (x + 2) -3k c (x + 1);

(ⅱ) k+ 컨볼루션 계산하기:(Ii) Calculate k + Convolution:

패턴의 상기 행으로 컨볼루션된 소멸화된 커널 (A+k+ ×p)(x) 계산하기 (이 경우, A+ 는 상술한 바와 같음). (A+k+ ×p)(x, y) = cd-Rp(x-R, y) 이므로 이는 단순한 계산임을 알 수 있음; 및Compute the extinct kernel (A + k + x p) (x) convolved with the row of the pattern, in which case A + is as described above. It can be seen that this is a simple calculation since (A + k + xp) (x, y) = cd -R p (xR, y); And

회귀 관계

Figure 112007037998221-pct00120
를 이용하여 A+ -1(A+k+ ×p)(x, y)) 계산하기;Regression relationship
Figure 112007037998221-pct00120
Calculating A + -1 (A + k + x p) (x, y)) using;

삭제delete

(ⅲ) k- 컨볼루션 계산하기:(V) k - Convolution

패턴의 상기 행으로 컨볼루션된 소멸화된 커널 (A-k- ×p)(x) 계산하기 (이 경우, A- 는 상술한 바와 같음). (A-k- ×p)(x, y) = cd-Rp(x+R, y) 이므로 이는 단순한 계산임을 알 수 있음; 및Compute the extinct kernel (A - k - xp) (x) convolved with the row of the pattern, in which case A - is as described above. It can be seen that this is a simple calculation since (A - k - xp) (x, y) = cd -R p (x + R, y); And

회귀 관계

Figure 112007037998221-pct00121
를 이용하여 끝에서부터 처음으로 회귀하는 것 에 의해, A- -1(A-k- ×p)(x, y) 계산하기;Regression relationship
Figure 112007037998221-pct00121
By the one to which the first return from the end use, A - -1 (A - k - × p) to calculate (x, y);

(ⅳ) 패턴의 상기 행에 대한 단계 (ⅰ), (ⅱ) 및 (ⅲ) 의 결과를 가 산함으로써, 단계 (ⅳ) 의 마지막 반복의 끝에서

Figure 112007037998221-pct00058
를 나타내는 데이터 생성하기;(Iii) at the end of the last iteration of step (iii) by adding the results of steps (iii), (ii) and (iii) for that row of patterns
Figure 112007037998221-pct00058
Generating data representative of;

(b) k1 ×p 를 치환하여 (k1 ×p)T 생성하기;(b) replacing k 1 x p to generate (k 1 x p) T ;

(c) p 의 행이 아닌 (k1 ×p)T 의 행에 대해 단계 (a) 를 반복함으로써, k1 으로 k1 ×p 의 모든 열을 컨볼루션하기; 및(c) a non-line of p (k 1 × p) by repeating step (a) for the rows of T, to convolution all columns of k × 1 p a k 1; And

(d) 단계 (c) 의 결과를 치환하여 r(x, y) 를 생성하고 돌려주기.(d) Substitute the result of step (c) to generate and return r (x, y).

통상적으로, 패턴 p(x, y) 는 단계 (a) 이전에 메모리에 저장되고, 단계 (i) 의 각 반복은 메모리로부터 판독된 패턴 p(x, y) 의 상이한 행에 대해 수행되며, 단계 (b) 는, (k1 ×p)T 의 각 행이 p(x, y) 의 대응하는 행이 이전에 차지했던 기억 위치를 차지하도록, (k1 ×p)T 를 메모리에 저장하는 단계를 포함한다.Typically, the pattern p (x, y) is stored in memory before step (a), and each iteration of step (i) is performed on a different row of pattern p (x, y) read from the memory, step (b) storing (k 1 × p) T in memory such that each row of (k 1 × p) T occupies a memory location previously occupied by the corresponding row of p (x, y) It includes.

속도를 증가시키기 위해 알고리즘을 약간 변형할 수 있다. 예를 들어, 모든 경우에서, 알고리즘은 각각의 소멸화된 컨볼루션을 계산하는 동시에 그것을 인플레이팅 (inflating) 하도록 프로그램된 프로세서에 의해 수행되는 것이 바람직하다. 이러한 방법에서는, 그것을 평탄화하기 전에 소멸화된 컨볼루션을 저장할 필요가 없다. 또한, k+ 및 kc 모두가 프로세서를 통과하는 동일 패스에 계산되는 것이 바람직하다. 또한, 캡 및 양의 감쇠 영역 컨볼루션을 계산하는데 열-페링 (column-ferrying) 기술이 이용될 경우에는 통상적으로 2 개의 완전 치환이 불필요하며, 열 복귀, 음의 컨볼루션 및 가산은 모두 동일 루프의 일부여야 한다. 또한, 알고리즘을 수행하기 위해 일부 타입의 프로세서를 이용할 경우, 적당한 연산들이 최고 속도가 될 수 있다.You can slightly modify the algorithm to increase the speed. For example, in all cases, the algorithm is preferably performed by a processor programmed to compute each extinct convolution and at the same time inflat it. In this way, there is no need to save the destroyed convolution before planarizing it. It is also desirable for both k + and k c to be calculated in the same pass through the processor. Also, when column-ferrying techniques are used to calculate the cap and positive attenuation region convolution, two complete substitutions are typically unnecessary, and thermal return, negative convolution and addition are all the same loop. Must be part of Also, when using some type of processor to perform the algorithm, the appropriate operations can be the fastest.

가우시안으로의 근사로서, 라플라시안 감쇠는 e-x 이고 가우시안은 e-x2 이므로, 본 발명에 따른 컨볼루션의 상술한 실시형태는 패턴의 크기에 의존한다. 따라서, 에러는 도메인의 크기에 의존한다.
As an approximation to Gaussian, since the Laplacian attenuation is e- x and Gaussian is e- x2 , the above-described embodiment of the convolution according to the present invention depends on the size of the pattern. Thus, the error depends on the size of the domain.

실시예 2 : 제곱 코사인 분리형 커널Example 2 Squared Cosine Isolated Kernel

다음으로, 또 하나의 분리형-스플라인 커널 ("제곱 코사인" 분리형 커널), 및 이러한 제곱 코사인 분리형 커널을 이용하는 본 발명의 컨볼루션 방법에 대한 실시형태를 제시한다. 제곱 코사인 커널을 이용한 컨볼루션은 패턴의 차수에 무관하기 때문에, 제곱 코사인 분리형 커널을 이용하는 컨볼루션은 상술한 "라플라시안 감쇠를 이용한 2 차" 커널을 이용하는 컨볼루션보다 빠르고 명료하다. 또한, 제곱 코사인 커널은 1 패스의 행 컨볼루션 세트를 위한 가장 적절한 방법을 허용하며, 전달시에 수행되는 계산을 이용하는 페링 기술도 허용한다. 제곱 코사인 커널은 보다 안정하기 때문에, 유동 소수점 계산이 이용될 수 있다. 이는, 다항식의 경우에, 에러는 다항식과 같이 혼란스러워지는 반면, 제곱 코사인 커널의 경우, 작은 에러가 작은 진동 잡음이 되기 때문이다. 패턴이 어떤 의미에서 "정규적"이라면, 어떤 (매우 작은) 레벨의 정확성에 대해서는 잡음이 인식되지 않는다. 1-차원의 제곱 코사인 커널은 다음과 같이 정의된다.Next, an embodiment is presented for another discrete-spline kernel (“square cosine” discrete kernel), and the convolution method of the present invention using such squared cosine discrete kernel. Since convolution using a square cosine kernel is independent of the order of the pattern, the convolution using a square cosine discrete kernel is faster and clearer than the convolution using a "secondary" kernel using Laplacian attenuation. In addition, the squared cosine kernel allows the most appropriate method for a one-pass row convolution set, and also allows a ferring technique that uses the computations performed on transfer. Since the square cosine kernel is more stable, floating point calculations can be used. This is because, in the case of polynomials, the error is as chaotic as in polynomials, while in the case of square cosine kernels, small errors become small vibration noise. If the pattern is "normal" in a sense, noise is not perceived for any (very small) level of accuracy. The one-dimensional square cosine kernel is defined as

Figure 112007037998221-pct00122
Figure 112007037998221-pct00122

2-차원의 커널은 다음의 수학식 2 와 같이 정의된다.A two-dimensional kernel is defined as in Equation 2 below.

k(x, y) = k2(x)k2(y)k (x, y) = k 2 (x) k 2 (y)

상술한 바와 같이, 커널 k2(x) 는 2 개 커널의 합으로 기입한다. 이들 중 첫번째는 다음과 같다.As described above, kernel k 2 (x) is written as the sum of two kernels. The first of these is:

Figure 112007037998221-pct00123
Figure 112007037998221-pct00123

다른 하나의 커널은 다음과 같다.The other kernel looks like this:

Figure 112007037998221-pct00124
Figure 112007037998221-pct00124

이들 2 개의 커널에 대해, k2(x) = kc(x) + ki(x) 이다. 커널 ki 는 표기의 연속성을 위해 Ai 라 하는 이산 도함수에 의해 용이하게 소멸된다. 이러한 소멸화 연산자의 명시적인 정의는 다음과 같다.For these two kernels, k 2 (x) = k c (x) + k i (x). The kernel k i is easily destroyed by a discrete derivative called A i for the continuity of the notation. The explicit definition of these destructive operators is as follows:

Figure 112003044964105-pct00062
Figure 112003044964105-pct00062

코사인 kc 를 소멸하는 것은 덜 직접적이지만, 다음에서, Dissipating cosine k c is less direct, but in

Figure 112003044964105-pct00063
Figure 112003044964105-pct00063

연산자 Ac 를 다음과 같이 정의하면, If you define operator A c as

Figure 112003044964105-pct00064
Figure 112003044964105-pct00064

kc 가 Ac 에 의해 소멸된다는 것을 알 수 있다. 이용할 소멸화 연산자 A 는 다음과 같은 이들 2 개 연산자의 "곱 (product)" 이다. It can be seen that k c is destroyed by A c . The destructive operator A to use is the "product" of these two operators:

Figure 112003044964105-pct00065
Figure 112003044964105-pct00065

A 는 k2 를 소멸시키는 것으로 볼 수 있으며, Ak2 = Ai ×Ack 2 이므로, 소멸된 무엇인가에 Ai 만이 작용하고 있으며, 이는 Aki 에 대해서도 마찬가지이다. A can be seen to dissipate k 2 , and since Ak 2 = A i × A c k 2 , only A i is acting on something that is extinguished, and this is also true for Ak i .

계산은 다음과 같이 Ak 의 논제로 값을 나타낸다.The calculation shows the value of the thesis of Ak as follows.

Figure 112003044964105-pct00066
Figure 112003044964105-pct00066

다음으로, 본 발명에 따른 r(x, y) 를 계산하기 위해, 패턴 p(x, y) 으로, 다음과 같은 상술한 제곱 코사인 커널에 의해 결정된 k(x, y) 의 컨볼루션을 위한 알고리즘을 제시한다. Next, in order to calculate r (x, y) according to the present invention, an algorithm for convolution of k (x, y) determined by the above-described square cosine kernel with the pattern p (x, y) To present.

k2(x)k2(y) = (kc(x) + ki(x)(kc(y) + ki(y)) k 2 (x) k 2 (y) = (k c (x) + k i (x) (k c (y) + k i (y))

이는 위에서 정의한 "라플라시안 감쇠를 이용한 2 차" 커널을 이용하는 컨볼루션을 위한 상술한 알고리즘과 매우 유사하다. "Algorithm for squared cosine separated-spline convolution"이라는 알고리즘은 다음과 같다.This is very similar to the algorithm described above for convolution using the "secondary with Laplacian attenuation" kernel defined above. The algorithm "Algorithm for squared cosine separated-spline convolution" is as follows.

(a) 행을 루프화하기. 패턴 p(x, y) 의 각 행에 대해, k2(x) 로 상기 행을 컨볼루션 계산하기. 이는 다음의 단계를 포함하는 1 차원의 스플라인 컨볼루션에 의해 수행된다:(a) Looping rows. For each row of the pattern p (x, y), calculate the convolution of that row with k 2 (x). This is done by one-dimensional spline convolution, which includes the following steps:

(ⅰ) -R-3 ≤x ≤n-1 에 대해, 상기 각 행에 대한 Ak2(x) ×p(x) 를 다음과 같이 계산하기:(Iii) For -R-3 <x <n-1, calculate Ak 2 (x) × p (x) for each row as follows:

Ak2(x) ×p(x) = 2sin2(π/2L)(p(x + R) + p(x + R +1)) - (p(x -R) - p(x - R +1)); 및Ak 2 (x) × p (x) = 2sin 2 (π / 2L) (p (x + R) + p (x + R +1))-(p (x -R)-p (x-R + One)); And

(ii) r(x + 2) = Ar(x) + (1 + 2cos(π/L))(r(x + 1) - r(x)) + r(x - 1) 의 회귀 관계에 의해, 회귀 연산을 점화하도록 r(-R - 4) = r(-R - 3) = r(-R - 2) =0 의 관계를 이용하여 행에 대한 r(x) 를 발견함으로써, 단계 (ii) 의 마지막 반복의 끝에서, k2 ×p 를 나타내는 데이터를 생성하기;(ii) by a regression relationship of r (x + 2) = Ar (x) + (1 + 2cos (π / L)) (r (x + 1)-r (x)) + r (x-1) By finding the r (x) for the row using the relationship r (-R-4) = r (-R-3) = r (-R-2) = 0 to ignite the regression operation. At the end of the last iteration,), generating data representing k 2 × p;

(b) k2 ×p 를 치환하여 (k2 ×p)T 를 생성하기; 및(b) replacing k 2 x p to produce (k 2 xp) T ; And

(c) p(x, y) 의 행이 아닌 (k2 ×p)T 의 행에 대해 단계 (a) 를 반복함으로써, k2 로 k2 ×p 의 모든 열을 컨볼루션하기. (c) p, not a row of the (x, y) (k 2 × p) is repeated in the step (a) for the rows of T, k 2 convolution to all columns of the k 2 × p.

바람직하게도, 단계 (c) 의 결과를 치환하는 마지막 단계는 r(x, y) 를 생성시키기 위해 수행되고, 그 다음, 프로세서는 그것의 초기 상태로 돌아간다. Preferably, the final step of substituting the result of step (c) is performed to generate r (x, y), and then the processor returns to its initial state.

통상적으로, 패턴 p(x, y) 는 단계 (a) 이전에 메모리에 저장되고, 단계 (i) 의 각 반복은 메모리로부터 판독된 패턴 p(x, y) 의 상이한 행에 대해 수행되며, 단계 (b) 는, (k2 ×p)T 의 각 행이 p(x, y) 의 대응하는 행이 이전에 차지했던 기억 위치를 차지하도록, (k2 ×p)T 를 메모리에 저장하는 단계를 포함한다.Typically, the pattern p (x, y) is stored in memory before step (a), and each iteration of step (i) is performed on a different row of pattern p (x, y) read from the memory, step (b) storing (k 2 xp) T in memory such that each row of (k 2 xp) T occupies a storage location previously occupied by the corresponding row of p (x, y) It includes.

상술한 알고리즘에 대한 순수한 계산 횟수는, 단계 (a) 의 h 회 반복 (h 는 높이); 1 회의 승산 및 3 회의 가산과 관련되는 Ak 계산은 w + R + 3 회 수행됨 (w 는 폭); 1 회의 승산 및 4 회의 가산을 요하는 회귀는 w + R + 3 회 수행됨 (w 는 폭) 과 같다. 따라서, 제곱

Figure 112007037998221-pct00067
어레이에 대한 전체 알고리즘은,The pure number of calculations for the algorithm described above may include h iterations of step (a), where h is the height; The Ak calculation associated with one multiplication and three additions is performed w + R + three times (w is width); Regression requiring one multiplication and four additions is performed w + R + three times (w is the width). Thus, squared
Figure 112007037998221-pct00067
The entire algorithm for an array is

Figure 112003044964105-pct00068
의 승산과
Figure 112003044964105-pct00068
With the odds of

Figure 112003044964105-pct00069
의 가산을 요한다.
Figure 112003044964105-pct00069
Requires addition.

이는 2 가지 방법으로 최적화될 수 있다. 먼저, 한가지는 마지막 스테이지에서 정규화하여 p(x + R) + p(x + R + 1) - (p(x - R) -p(x - R + 1)) 로서

Figure 112007037998221-pct00125
를 계산할 수 있다. 이는
Figure 112007037998221-pct00070
의 승산을 절감함으로써, 계산 비용을 현저하게 감소시킨다. 두번째는, 모든 승산이 동일하게 고정된 2 개의 숫자에 의한 것이어서, 이것이 최적으로 하드-코딩될 수 있는 것이다. 가장 중요한 세번째는, 이러한 프로세스가 행에 대해 독자적으로 작용하기 때문에, 이것이 매우 용이하게 병렬화 및 벡터화될 수 있다는 것이다. 가산의 횟수도 감소될 수 있지만, 이는 계산 시간에 그다지 영향을 미치지 않는다.This can be optimized in two ways. First, one thing is normalized in the last stage, as p (x + R) + p (x + R + 1)-(p (x-R) -p (x-R + 1))
Figure 112007037998221-pct00125
Can be calculated. this is
Figure 112007037998221-pct00070
By reducing the multiplication, the computational cost is significantly reduced. The second is that all multiplications are by two numbers that are equally fixed, so that this can be optimally hard-coded. The third and most important is that this process can be parallelized and vectorized very easily since it works on rows independently. The number of additions can also be reduced, but this does not affect the computation time very much.

좀더 일반적으로, 바람직한 실시형태의 분류에서, 컨볼루션 r = Dp = d ×p (×는 컨볼루션을 나타내고, d 는 분리형-스플라인 커널에 의해 양호하게 근사되거나 분리형-스플라인 커널과 동일함) 을 수행하는 본 발명의 방법은,More generally, in the classification of the preferred embodiment, perform convolution r = Dp = d × p (x represents convolution, d is well approximated by the split-spline kernel or is the same as the split-spline kernel) The method of the present invention,

(a) k(x1,..., xn) = k1(x1)k2(x2)...kn(xn) (이 경우, k 는 연산자 A = A1A2...An 를 허용하며, n 은 패턴 p 의 차원이고, Aj 는 (Aj 가 소멸화 연산자인 경우) AjKj = Bj 가 희소이나 (Aj 가 평탄화 연산자인 경우) AjKj = Bj 가 거의 모든 곳에서 국부적으로 일정한 매트릭스가 되는 방식으로, 커널 kj 의 회전 Kj 에 대해 작용하는 소멸화 또는 평탄화 연산자임) 로서 분리형-스플라인 커널을 특정하는 단계;(a) k (x 1 , ..., x n ) = k 1 (x 1 ) k 2 (x 2 ) ... k n (x n ) (in this case, k is the operator A = A 1 A 2 ... Allows n , where n is the dimension of pattern p, and A j is (if A j is a destructive operator) A j K j = B j is sparse (if A j is a flattening operator) A specifying a separate-spline kernel as an extinction or flattening operator that acts on the rotation K j of kernel k j in such a way that j K j = B j is a local constant matrix almost everywhere;

(b) 패턴 p 의 각 행에 대해 q1 = B1p = A1k1 ×p 를 계산하는 단계;(b) calculating q 1 = B 1 p = A 1 k 1 × p for each row of the pattern p;

(c) 소수 개의 r1 성분을 직접 계산하는 예비 점화 단계를 수행한 다음, 연산자 A1 에 의해 결정되는 자연스러운 회귀 관계를 이용하여 r1 성분의 나머지를 결정하는 단계를 수행하는 것에 의해, 상기 패턴에 대한 r1 = k1 ×p 를 결정하기 위해 패턴의 상기 행 각각에 대한 A1r1 = q1 을 거꾸로 풀어내는 단계; (c) performing a preliminary ignition step of directly calculating a small number of r 1 components, and then determining the remainder of the r 1 components using the natural regression relationship determined by operator A 1 . Resolving A 1 r 1 = q 1 for each of said rows of the pattern backwards to determine r 1 = k 1 × p;

(d) 단계 (c) 에서 발생된 r1 = k1 ×p 를 치환하여 패턴에 대한 r1 T = (k1 ×p)T 를 발생하고, (k1×p)T 의 각 행에 대한 q2 = B2r1 T = A2k2 ×(k1 ×p)T 를 계산하는 단계; 및(d) substituting r 1 = k 1 × p generated in step (c) to generate r 1 T = (k 1 × p) T for the pattern, and for each row of (k 1 × p) T calculating q 2 = B 2 r 1 T = A 2 k 2 x (k 1 xp) T ; And

(e) 상기 (k1 ×p)T 의 각 행에 대한 A2rT = q2 를 거꾸로 풀어내어 패턴에 대한 r2 T = (k2 ×k1 ×p)T 를 결정하는 단계를 포함한다. (e) inverting A 2 r T = q 2 for each row of (k 1 × p) T backwards to determine r 2 T = (k 2 × k 1 × p) T for the pattern do.

패턴 p 가 2-차원일 경우 (n = 2), 단계 (e) 의 결과는 통상적으로 r = (k2 ×k1 ×p) 를 나타내는 데이터를 발생시키기 위해 치환하는데, 이 경우, 결과 r 은 소정 컨볼루션 Dp 에 근접한 근사이다. n > 2 일 경우, (상기 요약에서 정의된 바와 같은 치환 연산자에 의해) 패턴 p 의 추가적인 차원 각각에 대해 단계 (d) 와 (e) 가 반복되며, 단계 (e) 의 마지막 반복 결과에 대한 치환은 소정 컨볼루션 Dp 에 근접한 근사이다 (또는 그와 정확하게 동일하다). If the pattern p is two-dimensional (n = 2), the result of step (e) is typically substituted to generate data representing r = (k 2 x k 1 x p), where the result r is It is an approximation close to the predetermined convolution Dp. If n> 2, steps (d) and (e) are repeated for each additional dimension of the pattern p (by a substitution operator as defined in the above summary), and the substitution for the last iteration result of step (e) Is an approximation (or exactly the same) as a given convolution Dp.

단계 (c) 의 일부 구현에서, r1 의 소수 개의 최저 성분은 예비 점화 단계 동안 직접적으로 계산되며, 그 다음, 자연스러운 회귀 관계를 이용해 r1 성분의 나머지가 결정된다. 단계 (c) 의 바람직한 구현에서는, r1 의 소수 개의 큰 음의 성분이 예비 점화 단계 동안 직접적으로 계산되며, 그 다음, 자연스러운 회귀 관계를 이용해 r1 성분의 나머지가 결정된다.In some implementations of step (c), the fewest lowest components of r 1 are calculated directly during the preliminary ignition step, and then the remainder of the r 1 components is determined using the natural regression relationship. In a preferred implementation of step (c), the few large negative components of r 1 are calculated directly during the preliminary ignition stage, and then the remainder of the r 1 components is determined using the natural regression relationship.

커널 d 자체가 분리형-스플라인 커널인 경우 (그에 따라, d = k 이고 K = D 인 경우), 이 방법은 정확한 결과 (r = Dp) 를 산출한다. 그렇지 않으면, 이 방법에 내재하는 에러는 (k - d) ×p 이므로, 용이하게 한정된다.If the kernel d itself is a split-spline kernel (and therefore d = k and K = D), this method yields the correct result (r = Dp). Otherwise, the error inherent in this method is (k-d) x p, which is easily limited.

본 발명에 따른 컨볼루션용 분리형-스플라인 기술을 구현하는 함수를 위한 워킹 소스 코드 (C 언어의) 의 일례는 다음과 같다. 일례에 특정된 커널은 상술한 제곱 코사인 커널이다. 이러한 함수는 입력 패턴 (*Pattern), 출력 어레이 (*Result) 및 1-차원 워킹 버퍼 (*r) 로 포인터를 송신하는 것에 의해 호출된다. 글로벌 변수 (global variables) 는 (NX ×NY 인) 어레이 크기 및 N = max(NX, NY) 이다. 이 코드는 몇 개의 논리적 구 (logical clauses) 를 이용해 최소 메모리에서 동작하도록 최적화되어 있다. 이것의 약점은 알고리즘의 간략성이 처음에는 명백하지 않다는 것이다. 대부분의 코드가 다음의 라인들에 대한 약간의 변형으로서,An example of working source code (in C language) for a function implementing a separate-spline technique for convolution according to the present invention is as follows. The kernel specified in one example is the square cosine kernel described above. These functions are called by sending pointers to input patterns (* Pattern), output arrays (* Result), and one-dimensional working buffers (* r). Global variables are the array size (where NX × NY) and N = max (NX, NY). This code is optimized to run in minimal memory using several logical clauses. The disadvantage of this is that the simplicity of the algorithm is not obvious at first. Most of the code is a minor variation on the following lines:

Figure 112003044964105-pct00071
Figure 112003044964105-pct00071

실제의 알고리즘은 개념적으로 매우 컴팩트하다.The actual algorithm is conceptually very compact.

실시예: 제곱 코사인 분리형-스플라인 컨볼루션을 구현하는 C 의 소스 코드:
Example: Source Code of C Implementing Squared Cosine Isolated-Spline Convolution:

Figure 112003044964105-pct00072
Figure 112003044964105-pct00072

Figure 112003044964105-pct00073
Figure 112003044964105-pct00073

Figure 112003044964105-pct00074
Figure 112003044964105-pct00074

Figure 112003044964105-pct00075
Figure 112003044964105-pct00075

Figure 112003044964105-pct00076

Figure 112003044964105-pct00076

본 발명의 방법에 대한 일부 2-차원 구현에서, 이산 컨볼루션은 매트릭스 형식을 이용하여 수행되는데, 그에 의해, 2-차원의 픽셀 직사각형이 사전 편찬식의 인덱싱 (lexicographical indexing) 을 이용하여 1-차원의 열 벡터로 변환된다. 이러한 경우, 회전 매트릭스 F 는 NN' ×NN' 의 기이한 형태가 되지만, 소멸화 연산자 A 가 적용될 경우, 연산자 AF 는 희소해진다. 본 발명의 실시형태에 대한 이러한 분류는 영이 아닌 원형 영역 (nonvanishing circular regions) 을 결정적으로-인덱싱된 (deterministically-indexed) 매트릭스 성분으로 변환하는 이점을 갖는다.In some two-dimensional implementations of the method of the present invention, discrete convolution is performed using a matrix format, whereby the two-dimensional pixel rectangle is one-dimensional using pre-lexicographical indexing. Is converted to a column vector of. In this case, the rotation matrix F becomes a bizarre form of NN '× NN', but when the destructive operator A is applied, the operator AF becomes sparse. This classification for embodiments of the present invention has the advantage of converting nonvanishing circular regions into deterministically-indexed matrix components.

도 1 은 본 발명을 구체화하는 컴퓨터 시스템의 블록도이다. 시스템은 (본 발명의 컨볼루션 방법에 대한 임의의 실시형태를 구현하기 위한 소프트웨어로 프로그램된) 프로세서 (2), 프로세서 (2) 에 결합되어 있는 디스플레이 장치 (4), 입력 장치 (6), 및 메모리 (8) 를 (그리고 선택적인 출력 장치 (5) 도) 포함한다. 프로세서 (2) 가 2 진 데이터를 프로세싱하도록 구성된 통상적인 프로세서일 경우, 프로세서 (2) 는 본 발명의 방법에 대한 "이산" 구현을 구현하기 위한 소프트웨어로 프로그램된다. 통상적으로, 메모리 (8) 는 컨볼루션 커널 d 의 회전 D 를 나타내는 데이터, 스플라인 커널 k(x1, x2, ...,xn) = k1(x1)k1(x2)...kn(xn) 의 팩터 커널 k1 에 대한 회전 K1, 컨볼루션될 패턴 p, 본 방법의 수행 중에 발생된 중간값들, 및 컨볼루션으로부터 얻어지는 컨볼루션된 신호 r = Kp 를 나타내는 데이터를 저장한다. 일부 구현에서, 프로세서 (2) 는 (관심있는 사용자-특정의 컨볼루션 커널 d 로부터) 스플라인 커널이 (사용자-특정의 제한들에 관계된) 컨볼루션 커널 d 를 근사할 수 있게 하는 스플라인 커널 k 의 소정 파라미터를 결정하도록 프로그램된다. 일부 구현에서, 프로세서 (2) 는 하나 이상의 룩-업 테이블을 발생하고, 이들을 메모리 (8) (또는 프로세서 (2) 와 관련된 캐시 메모리) 에 저장한 다음, 본 발명을 수행하는 동안, 저장되어 있는 룩-업 테이블을 액세스한다. (프로세싱 파라미터 또는 제한들을 특정하는 것에 의한 것을 포함하여) 사용자는 입력 장치 (6) 를 이용하여 프로세서 (2) 를 제어한다. (컨볼루션될 2-차원 패턴 p 및 본 발명에 따라 발생된 컨볼루션 결과 Kp 의 표현과 같이) 프로세서 (2) 에 의해 발생된 텍스트와 이미지는 디스플레이 장치 (4) 상에 디스플레이된다. (디스플레이 장치 (4) 를 대신하여 또는 그에 부가하여 이용될 수 있는) 출력 장치 (5) 는 사운드 재생 유닛, I/O 포트 (input/output port), 또는 신호 프로세싱 (및/또는 저장) 장치 (또는 시스템) 과 같이 패턴-가능한 장치 (pattern-capable device) 인 것이 바람직하다.1 is a block diagram of a computer system embodying the present invention. The system includes a processor 2 (programmed in software for implementing any embodiment of the convolution method of the present invention), a display device 4 coupled to the processor 2, an input device 6, and Memory 8 (and optional output device 5 also). If the processor 2 is a conventional processor configured to process binary data, the processor 2 is programmed with software to implement a "discrete" implementation for the method of the present invention. Typically, memory 8 contains data representing rotation D of convolution kernel d, spline kernel k (x 1 , x 2 , ..., x n ) = k 1 (x 1 ) k 1 (x 2 ). k. Rotation K 1 for factor kernel k 1 of k n (x n ), the pattern p to be convolved, the intermediate values generated during the performance of the method, and the convolved signal r = Kp resulting from the convolution Save the data. In some implementations, processor 2 may determine that spline kernel k (from the user-specific convolution kernel d of interest) allows spline kernel to approximate convolution kernel d (related to user-specific constraints). It is programmed to determine the parameters. In some implementations, processor 2 generates one or more look-up tables, stores them in memory 8 (or cache memory associated with processor 2), and then stores them while performing the present invention. Access the look-up table. The user controls the processor 2 using the input device 6 (including by specifying processing parameters or restrictions). Text and images generated by the processor 2 (such as the representation of the two-dimensional pattern p to be convolved and the convolution result Kp generated according to the invention) are displayed on the display device 4. The output device 5 (which may be used in place of or in addition to the display device 4) may be a sound reproduction unit, an input / output port, or a signal processing (and / or storage) device ( Or pattern-capable device).

도 2 는 메모리 유닛 (14) 에 저장된 이미지 데이터에 대해 (본 발명에 따른) 컨볼루션을 수행하도록 구성된 디지털 신호 프로세서 ("DSP" ; 10) 를 포함하는 리소그래피 시스템의 블록도이다. 메모리 유닛 (14) 에 저장된 이미지 데이터는 컨볼루션될 패턴 p 을 결정한다. DSP (10) 는 이미지 데이터를 프로세싱하여 컨볼루션 결과 r = Kp 를 나타내는 출력 데이터를 발생한다. 출력 데이터는 메모리 (14) 에 저장되고/저장되거나 (그리고 선택적으로 추가적인 프로세싱을 거쳐) "패턴 신호" 발생 장치 (16) 로 출력된다. 장치 (16) 는, 장치 (16) 가 DSP (10) 로부터 수신하는 데이터에 응답하여, 패턴 신호 (예를 들어, 진폭이 시간에 따라 변하는 광학빔 또는 다른 전자기 방사선 또는 진폭이 시간에 따라 변하는 전자 빔) 를 발생한다. 2 is a block diagram of a lithographic system including a digital signal processor (“DSP”) 10 configured to perform convolution (according to the invention) on image data stored in memory unit 14. The image data stored in the memory unit 14 determines the pattern p to be convolved. DSP 10 processes the image data to generate output data representing the convolution result r = Kp. The output data is stored in the memory 14 and / or output to the " pattern signal " generating device 16 (and optionally via further processing). Apparatus 16 is a pattern signal (e.g., an optical beam or other electromagnetic radiation whose amplitude varies with time, or an electron whose amplitude varies with time, in response to data received by DSP 16 from DSP 10). Beams).

실시형태의 분류에서, 장치 (16) 는 광학계 (18) 로 입사되어 리소그래피 목표물 (20) 상에 출력빔을 투사하는 광학 방사선 빔 (beam of optical radiation) 을 방출한다. 광학계 (18) 는, 제어 유닛 (12) 으로부터의 스캔닝 제어 신호에 응답하여, 리소그래피 목표물 (20) 에 출력빔을 스캐닝한다. 장치 (16) 로부터 방출되는 빔의 진폭은 (DSP (10) 로부터의 출력 데이터에 응답하여) 스캐닝된 출력빔 (광학계 (18) 의 출력) 이 목표물 (20) 을 픽셀의 패턴에 노출시키는 방식으로 (스캐닝 패턴이 유닛 (12) 으로부터의 스캐닝 제어 신호에 의해 결정되는 것으로 가정하는) 시간의 함수로서 변한다. In a class of embodiments, the device 16 emits a beam of optical radiation that is incident on the optical system 18 and projects an output beam onto the lithographic target 20. The optical system 18 scans the output beam on the lithographic target 20 in response to the scanning control signal from the control unit 12. The amplitude of the beam emitted from the device 16 is determined in such a way that the scanned output beam (in response to the output data from the DSP 10) (output of the optical system 18) exposes the target 20 to a pattern of pixels. It changes as a function of time (assuming the scanning pattern is determined by the scanning control signal from unit 12).

다른 실시형태에서, 장치 (16) 는 광학계 (18) 로 입사되어 리소그래피 목표물 (20) 상에 출력 전자 빔을 투사하는 전자 빔을 방출한다. 광학계 (18) 는, 제어 유닛 (12) 으로부터의 스캔닝 제어 신호에 응답하여, 리소그래피 목표물 (20) 에 출력 전자 빔을 스캐닝한다. 장치 (16) 로부터 방출되는 전자 빔의 진폭은 광학계 (18) 로부터의 스캐닝된 출력빔이 목표물 (20) 을 픽셀의 패턴에 노출시키는 방식으로 (스캐닝 패턴이 유닛 (12) 으로부터의 스캐닝 제어 신호에 의해 결정되는 것으로 가정하는 DSP (10) 로부터의 출력 데이터에 응답하여) 시간의 함수로서 변한다. In another embodiment, the device 16 emits an electron beam that is incident on the optical system 18 and projects an output electron beam onto the lithographic target 20. The optical system 18 scans the output electron beam on the lithographic target 20 in response to the scanning control signal from the control unit 12. The amplitude of the electron beam emitted from the device 16 is determined in such a way that the scanned output beam from the optical system 18 exposes the target 20 to the pattern of pixels (the scanning pattern is applied to the scanning control signal from the unit 12). In response to output data from the DSP 10, which is assumed to be determined by

다른 방법으로, 장치 (16) 는 광학계 (18) 에 의해 목표물 (20) 상에, 패턴을 결정하며 픽셀로 이루어진 이미지를 투사하도록 (스캐닝 없이) 포커싱된 방사선을 방출한다. 예를 들어, 장치 (16) 의 일 실시형태는, 광학계 (18) 가 목표물 (20) 에 임의의 빔을 스캐닝할 필요없이, 광학계 (18) 로부터 목표물 (20) 상의 패턴으로서 투사하도록 광학계 (18) 에 의해 포커싱된 광학 방사선을 방출한다.Alternatively, the device 16 emits the focused radiation (without scanning) on the target 20 by the optical system 18 to determine a pattern and project an image made of pixels. For example, one embodiment of the apparatus 16 allows the optical system 18 to project as a pattern on the target 20 from the optical system 18 without the need for the optical system 18 to scan any beam onto the target 20. To emit optical radiation focused.

장치 (16) 의 출력을 "패턴 신호" 라 하는데, 이러한 패턴 신호의 일례로는 광학계 (18) 에 의해 스캐닝될 다른 방사선 또는 광학 빔, 광학계 (18) 에 의해 스캐닝될 전자 빔, 및 광학계 (18) 에 의해 스캐닝되지는 않지만 그에 의해 포커싱되는 방사선을 들 수 있다. 광학계 (18) 는 (목표물 (20) 에 빔을 스캐닝하기 위해 광학계의 하나 이상의 소자를 이동시키는 수단을 포함하는 스캐닝 기능을 갖거나 갖지 않는) 반사 및/또는 굴절 광학계의 세트일 수 있거나 (목표물 (20) 에 빔을 스캐닝하기 위해 광학계의 하나 이상의 소자를 이동시키는 수단을 포함하는 스캐닝 기능을 갖는) 전자 빔 광학계의 세트일 수 있다. 광학계 (18) 의 출력은 리소그래피 목표물 (20) 상에 패턴으로서 (예를 들어, 스캐닝에 의한 것을 포함하여) 투사된다. The output of the device 16 is called a “pattern signal”, and examples of such a pattern signal include other radiation or optical beams to be scanned by the optical system 18, an electron beam to be scanned by the optical system 18, and the optical system 18. Radiation that is not scanned but is focused by it. Optics 18 may be a set of reflective and / or refractive optics (with or without scanning functionality including means for moving one or more elements of the optics to scan the beam to the target 20) 20) electron beam optics (with a scanning function) comprising means for moving one or more elements of the optics to scan the beam. The output of the optical system 18 is projected (including, for example, by scanning) as a pattern on the lithographic target 20.

통상적으로, 목표물 (20) 은 (패턴의 투사가 집적회로의 제작에 유용한 마스크를 생성하는) 유리판 또는 반도체 웨이퍼이다. 광학계 (18) 는 통상적으로 패턴 신호를 포커싱하는데, 그에 따라, 매우 작은 패턴이 목표물 (20) 상에 투사된다.Typically, the target 20 is a glass plate or semiconductor wafer (where the projection of the pattern produces a mask useful for the fabrication of integrated circuits). Optical system 18 typically focuses a pattern signal, so that a very small pattern is projected onto target 20.

장치 (16) 로부터 출력되는 "원래의 (raw)" 패턴 신호가 패턴을 결정하지만, 광학계 (18) 에 의해 도입되는 (또는 이미징 빔과 목표물 (20) 간의 상호작용에 내재하는) 회절 산물 (또는 다른 산물) 은, 목표물 (20) 상에 실제로 생성되는 패턴으로 하여금 이 패턴과 상이하게 할 수도 있다. 예를 들어, 장치 (16) 로부터 출력되는 "원래의" 패턴 신호가 전자 빔 광학계 (18) 에 의해 포커싱될 전자 빔이고, 시퀀스의 단일 픽셀 각각에 입사되는 포커싱된 전자 빔의 진폭에 의해 결정되는 패턴을 목표물 (20) 상에 투사하려는 시도에서, 목표물 (20) 상에 픽셀의 시퀀스가 스캐닝된다고 가정한다. 이러한 경우, 널리 공지된 (상술한) "근접 문제"는 (이러한 픽셀 각각으로부터 목표물의 주변 영역으로 벗어나는 전자의 산란으로 인해) 포커싱된 전자 빔이 입사되는 각 픽셀을 둘러싸고 있는 영역을 노출시킨다. 따라서, 포커싱된 전자 빔이 시퀀스의 픽셀들 중 하나에 입사될 때마다 다중-픽셀 영역이 노출되는 경우에, 목표물 (20) 상에 실제로 형성되는 패턴은 시퀀스의 각 픽셀에 포커싱된 전자 빔을 방출한 결과의 중첩에 의해 결정된다. The “raw” pattern signal output from the device 16 determines the pattern, but the diffraction product introduced by the optical system 18 (or inherent in the interaction between the imaging beam and the target 20) (or Other products) may cause the pattern actually generated on the target 20 to be different from this pattern. For example, the "original" pattern signal output from the device 16 is the electron beam to be focused by the electron beam optics 18 and is determined by the amplitude of the focused electron beam incident on each single pixel of the sequence. In an attempt to project the pattern onto target 20, assume that a sequence of pixels on target 20 is scanned. In this case, the well-known "proximity problem" (described above) exposes the area surrounding each pixel to which the focused electron beam is incident (due to scattering of electrons away from each of these pixels into the surrounding area of the target). Thus, when the multi-pixel region is exposed each time the focused electron beam is incident on one of the pixels of the sequence, the pattern actually formed on the target 20 emits an electron beam focused on each pixel of the sequence. It is determined by the overlap of one result.

따라서, DSP (10) 는, 장치 (16) 가 소정 패턴을 목표물 (20) 상에 생성하는데 필요한 특성을 갖는 "원래의" 패턴 신호를 출력할 수 있게 하는 출력 데이터를 발생하도록 구성된다. 이를 실현하기 위해, DSP (10) 는 광학계 (18) 에 의해 도입될 것으로 예상되는 임의의 산물 및/또는 광학계 (18) 로부터 목표물 (20) 상에 입사되는 전자 빔의 임의의 예상되는 (목표물 (20) 에 의한) 임의의 산란을 보상하기 위해 픽셀의 큰 어레이 (메모리 (14) 에 저장된 이미지 데이터) 에 대해 디컨볼루션 연산을 수행한다. DSP (10) 에 의해 수행되는 디컨볼루션 연산에는 DSP (10) 가 메모리 (14) 로부터 검색하는 저장된 이미지 데이터에 대해 (본 발명에 따라 수행되는) 컨볼루션 연산이 포함되는데, 이 경우, 이미지 데이터는, 반대로 패턴 "p" 를 결정하는 픽셀의 매우 큰 어레이를 결정한다. 따라서, DSP (10) 는 본 발명에 따라 이미지 데이터를 프로세싱하여 컨볼루션 결과 r = Kp 를 나타내는 데이터를 발생한다. 그 다음, 후자의 데이터는 장치 (16) 로 인가되거나 장치 (16) 로 인가되기 전에 추가적으로 프로세싱된다.Thus, the DSP 10 is configured to generate output data that enables the device 16 to output a " original " pattern signal having the characteristics necessary to generate a predetermined pattern on the target 20. FIG. In order to realize this, the DSP 10 may be any product expected to be introduced by the optical system 18 and / or any expected (eg target) of the electron beam incident on the target 20 from the optical system 18. 20) perform a deconvolution operation on the large array of pixels (image data stored in memory 14) to compensate for any scattering. The deconvolution operation performed by the DSP 10 includes a convolution operation (performed in accordance with the present invention) on the stored image data that the DSP 10 retrieves from the memory 14, in which case the image data Conversely determines a very large array of pixels that determines the pattern "p". Thus, the DSP 10 processes the image data according to the present invention to generate data representing the convolution result r = Kp. The latter data is then further processed before being applied to or applied to device 16.

도 2 시스템의 제어기 (12) 는 유닛 (10, 14, 16 및 18) 에 적절한 제어 신호를 인가하며, DSP (10) 가 특정 파라미터로 컨볼루션 연산을 실행하도록 하기 위해 (예를 들어) DSP (10) 로 명령어를 다운로딩할 수 있다.Controller 12 of the FIG. 2 system applies appropriate control signals to units 10, 14, 16, and 18, and in order to allow DSP 10 to execute convolution operations with certain parameters (e.g., 10) You can download the command.

도 3 은 도 2 의 DSP (10) 로 이용될 수 있는 디지털 신호 프로세서의 블록도로서, 이미지 데이터에 대해 본 발명에 따른 컨볼루션을 수행하도록 구성된다. 도 3 의 DSP 는 나타낸 바와 같이 접속되어 있는 (컨볼루션을 구현하는데 필요한 매트릭스 승산 및 회귀 관계 연산을 수행하기 위한) 가산 및 승산 회로를 포함하는 ACU (34 ; arithmetic computational unit), (컨볼루션 연산을 수행하기 위해 DSP 에 의해 실행되는 명령어들을 저장하는) 프로그램 메모리 (30), PCU (32 ; program control unit), 메모리 관리 유닛 (36), 및 데이터 메모리 (38) 를 포함한다. 사용자로부터의 명령에 응답하여, 도 2 의 제어기 (12) 는 적절한 명령어를 메모리 (30) 로 로딩하며, 패턴 p 를 나타내는 데이터 (도 3 에서 "INPUT" 이라 라벨링된 데이터) 가 메모리 (38) 로 로딩된다.3 is a block diagram of a digital signal processor that may be used with the DSP 10 of FIG. 2, configured to perform convolution according to the present invention on image data. The DSP of FIG. 3 is arithmetic computational unit (ACU) 34 that includes add and multiply circuits (to perform matrix multiplication and regression arithmetic operations necessary to implement convolution) that are connected as shown. Program memory 30), a program control unit (PCU) 32, a memory management unit 36, and a data memory 38 that store instructions executed by the DSP to perform. In response to a command from the user, the controller 12 of FIG. 2 loads the appropriate command into the memory 30, and the data representing the pattern p (data labeled “INPUT” in FIG. 3) is transferred to the memory 38. Loaded.

PCU (32) 는 프로그램 메모리 (30) 로부터 명령어의 시퀀스를 꺼내오는 페치 회로 (fetch circuitry), 명령어 디코딩 회로, 및 적절한 시간에 유닛 (36) 및/또는 유닛 (34) 으로 인가하기 위해 디코딩 회로에 의해 발생되는 제어 비트를 저장하는 레지스터를 포함한다.PCU 32 is a fetch circuitry that fetches a sequence of instructions from program memory 30, instruction decoding circuitry, and decode circuitry to apply to unit 36 and / or unit 34 at appropriate times. It contains a register that stores the control bits generated by.

메모리 관리 유닛 (36) 은 PCU (32) 로부터의 제어 비트에 응답하여 (각각이 데이터를 기입하거나 데이터를 판독할 메모리 (38) 내의 기억 위치를 식별하는) 어드레스 신호를 발생하고, 이러한 어드레스 신호를 어드레스 버스를 통해 메모리 (38) 에 인가하도록 구성된다. 따라서, (프로그램 메모리 (30) 로부터의 디코딩 명령어에 의해 PCU (32) 에서 발생된) PCU (32) 로부터의 제어 비트에 응답하여, 유닛 (36) 은 어드레스 신호를 데이터 메모리 (38) 에 인가한다.The memory management unit 36 generates an address signal in response to the control bits from the PCU 32 (each of which identifies a storage location in the memory 38 to write data to or read data from) and generates this address signal. And to apply to memory 38 via an address bus. Thus, in response to the control bits from PCU 32 (generated in PCU 32 by decoding instructions from program memory 30), unit 36 applies an address signal to data memory 38. .

메모리 관리 유닛 (36) 에 의해 인가된 어드레스에 응답하여, 데이터 메모리 (38) 는 데이터를 나타내는 신호를 (데이터 버스를 통해) ACU (34) 로 송신한다. (부분적으로 프로세싱된 데이터 또는 최종적인 컨볼루션 결과 r = k ×p 를 나타내는) ACU (34) 로부터의 결과의 출력 신호는, 유닛 (36) 에 의해 메모리 (38) 에 인가된 어드레스에 의해 결정되는 메모리 (38) 위치에서의 저장을 위해, 데이터 버스를 통해 메모리 (38) 로 전파될 수 있다. 일부 구현에서, 메모리 (38) 는 DSP 용 I/O 버퍼로서 기능하며, 최종 컨볼루션 결과를 나타내는 데이터는 (출력 데이터 "OUTPUT1" 로서) 메모리 (38) 로부터 패턴 신호 발생기 (16) 로 출력된다. 다른 구현에서는, 최종 컨볼루션 결과를 나타내는 데이터가 ACU (34) 로부터 (출력 데이터 "OUTPUT2" 로서) 패턴 신호 발생기 (16) 로 직접 (또는 버퍼를 통해) 인가된다. In response to the address applied by the memory management unit 36, the data memory 38 transmits a signal representing the data to the ACU 34 (via the data bus). The resulting output signal from the ACU 34 (representing the partially processed data or the final convolution result r = k × p) is determined by the address applied by the unit 36 to the memory 38. For storage at the memory 38 location, it may be propagated through the data bus to the memory 38. In some implementations, the memory 38 functions as an I / O buffer for the DSP, and data representing the final convolution result is output from the memory 38 to the pattern signal generator 16 (as output data “OUTPUT1”). In another implementation, data representing the final convolution result is applied directly (or through a buffer) to the pattern signal generator 16 (as output data “OUTPUT2”) from the ACU 34.

도 4 는 도 2 의 시스템의 변형으로서, 소자들 (16, 18 및 20) 은 동일한 번호가 붙여진 도 2 의 소자들과 동일하다. 도 4 의 실시형태에서, 소자 (46) 는 소자 (46) 가 메모리 유닛 (44) 으로부터 수신한 (컨볼루션될 패턴 p 를 결정하는) 이미지 데이터에 대해 (본 발명의 임의의 실시형태에 따른) 컨볼루션을 수행하도록 구성된다. (본 발명의 방법에 대한 임의의 실시형태에 따라 데이터에 대해 컨볼루션을 수행하도록 구성된 디지털 신호 프로세싱 회로를 포함하는 디지털 신호 프로세서, 본 발명의 방법에 대한 임의의 실시형태에 따라 데이터에 대해 컨볼루션을 수행하도록 구성된 상용의 또는 전용의 전자 회로, 또는 본 발명의 방법에 대한 임의의 실시형태에 따라 데이터에 대해 컨볼루션을 수행하도록 구성된 프로그램 가능한 게이트 어레이-기반의 컴퓨팅 시스템일 수 있는) 소자 (46) 는 이미지 데이터를 프로세싱하여 컨볼루션 결과 r = Kp 를 나타내는 출력 데이터를 발생한다. 출력 데이터는 DSP 로부터 패턴 신호 발생 장치 (16) 로 직접 인가되며, 장치 (16) 는 소자 (46) 로부터의 출려 데이터에 응답하여 패턴 신호를 발생한다. 도 4 시스템의 제어기 (42) 는 적절한 제어 신호를 소자들 (44, 46, 16 및 18) 에 인가하며, 소자 (46) 가 특정 파라미터로 컨볼루션 연산을 실행하도록 하기 위해 (예를 들어) 소자 (46) 로 명령어를 다운로딩할 수 있다.4 is a variant of the system of FIG. 2, in which the elements 16, 18 and 20 are identical to the elements of FIG. 2 with the same numbers. In the embodiment of FIG. 4, element 46 is (in accordance with any embodiment of the present invention) for image data (determining the pattern p to be convolved) that element 46 receives from memory unit 44. Configured to perform convolution. (Digital signal processor comprising digital signal processing circuitry configured to perform convolution on data in accordance with any embodiment of the method of the present invention, convolution on data in accordance with any embodiment of the method of the present invention. A device (which may be a commercial or dedicated electronic circuit configured to perform the following, or a programmable gate array-based computing system configured to perform convolution on data in accordance with any embodiment of the method of the present invention). ) Processes the image data to produce output data representing the convolution result r = Kp. The output data is directly applied from the DSP to the pattern signal generator 16, which generates the pattern signal in response to the extraction data from the element 46. The controller 42 of the FIG. 4 system applies the appropriate control signal to the elements 44, 46, 16 and 18, in order to allow the element 46 to execute a convolution operation with certain parameters (e.g., You can download the command at (46).

도 3 의 DSP 는 본 발명의 방법에 대한 임의의 실시형태를 구현할 수 있다고 가정한다. 컨볼루션 연산의 종결시에, 컨볼루션 결과 r = Kp 를 나타내는 프로세싱된 데이터가 발생된다. 이 데이터는 장치 (16) 로 직접 인가되거나, (예를 들어, 유닛 (34) 에서) 추가적으로 프로세싱된 후, 장치 (16) 또는 메모리 (14) 로 인가될 수 있다.It is assumed that the DSP of FIG. 3 can implement any embodiment for the method of the present invention. At the end of the convolution operation, processed data representing the convolution result r = Kp is generated. This data may be applied directly to the device 16, or further processed (eg, in unit 34) and then applied to the device 16 or the memory 14.

이하의 관점에서, 컨볼루션 커널 ("d") 이 분리형-스플라인 커널 ("k") 에 의해 적절히 근사될 수 있도록 충분히 평활화되어 있다면, 본 발명의 방법은 임의의 컨볼루션 (r = d ×p) 을 구현할 수 있다. 본 방법에 내재하는 에러 ((k - d) ×p) 가 허용가능한 범위내라면, 커널 "d" 는 분리형-스플라인 커널 "k" 에 의해 적절히 근사된다. 통상적으로, 전자 빔 리소그래피 근접 에러 교정 분야에 이용되는 컨볼루션 커널 "d" 는 분리형-스플라인 커널 "k" 에 의해 적절히 근사될 수 있도록 충분히 평활화되어 있다. 암호 기법에서 접하게 되는 것과 같이, 잡음이 있는 (임의적인) 컨볼루션 커널은 통상적으로 분리형-스플라인 커널 "k" 에 의해 적절히 근사되기에 충분할 정도로 평활화되어 있지 않다.In view of the following, if the convolution kernel ("d") is sufficiently smoothed so that it can be appropriately approximated by a separate-spline kernel ("k"), the method of the present invention may be adapted to any convolution (r = d × p). ) Can be implemented. If the error ((k-d) x p) inherent in the method is within an acceptable range, the kernel "d" is appropriately approximated by the separate-spline kernel "k". Typically, the convolution kernel "d" used in the field of electron beam lithography proximity error correction is sufficiently smoothed to be properly approximated by the separate-spline kernel "k". As encountered in cryptography, noisy (arbitrary) convolution kernels are typically not smoothed enough to be adequately approximated by a separate-spline kernel "k".

도 5 는 컴퓨터-실행가능 명령어 (소프트웨어) 를 저장하는 (CD-ROM 인) 컴퓨터-판독가능 저장 매체 (50) 의 간략화된 정면도이다. 이 명령어들은, 명령어들의 실행에 응답하여 컴퓨터가 본 발명에 따른 방법의 실시형태를 수행하도록 하는 것이다.5 is a simplified front view of a computer-readable storage medium 50 (which is a CD-ROM) that stores computer-executable instructions (software). These instructions, in response to the execution of the instructions, cause the computer to perform an embodiment of the method according to the invention.

특정의 바람직한 실시형태와 관련하여 본 발명을 설명하였지만, 청구범위에 따른 본 발명이 이러한 특정 실시형태로 부당하게 한정되어서는 안된다는 것을 알 수 있다. 예를 들어, 일부 실시형태에서는, 본 발명이 소프트웨어보다 배선된 (hardwired) 회로 (예를 들어, 상용이나 전용의 전자 회로) 또는 FPGA 시스템에 의해, 또는 DSP 를 포함하는 시스템에 의해 구현된다. While the invention has been described in connection with certain preferred embodiments, it will be appreciated that the invention in accordance with the claims should not be unduly limited to such specific embodiments. For example, in some embodiments, the present invention is implemented by hardwired circuitry (eg, commercial or dedicated electronic circuitry) or FPGA systems, or by systems including DSPs.

Claims (36)

컨볼루션 결과 r = Dp = d ×p (D 는 d 의 회전 (circulant)) 를 나타내는 데이터를 발생시키기 위해 적어도 근사적으로 분리형-스플라인 커널과 동일한 평활 커널 d 로 n-차원 (n 은 1 보다 큼) 패턴 p(x1, ..., xn) 의 컨볼루션을 수행하는 방법으로서,Convolutional result r = Dp = d × p (D is a circular kernel d) with at least approximately the same smooth kernel d as the discrete-spline kernel to generate data representing n-dimensions (n is greater than 1) ) Method for convolution of the pattern p (x 1 , ..., x n ) (a) k(x1,..., xn) = k1(x1)...kn(xn) 로서 상기 분리형-스플라인 커널을 특정하는 단계 (여기서, kj 는 회전 Kj 를 갖고, k(x1,..., xn) 는 연산자 A = A1A2...An 를 허용하며, Aj 는, (Aj 가 소멸화 연산자인 경우에는) AjKj 가 희소 (sparse) 해지고 (Aj 가 평탄화 연산자인 경우에는) AjKj 가 거의 모든 곳에서 국부적으로 일정한 매트릭스가 되도록, 커널 kj 의 회전 Kj 에 작용하는 소멸화 또는 평탄화 연산자);(a) specifying the discrete-spline kernel as k (x 1 , ..., x n ) = k 1 (x 1 ) ... k n (x n ), where k j is the rotation K j Where k (x 1 , ..., x n ) accepts operators A = A 1 A 2 ... A n , where A j is A j K (if A j is a destructive operator). j is rare (sparse) becomes (if a j is a flattened operator) a j K j is such that the local constant matrix almost everywhere, extinction acting on the rotation K j of the kernel k j screen or planarization operator); (b) 패턴 p 를 나타내는 패턴 데이터 및 커널 k1 을 나타내는 커널 데이터를 프로세싱하여, 상기 패턴 p 의 각 행에 대한 q1 = A1k1 ×p 을 나타내는 추가적인 데이터를 발생하는 단계;(b) generating an additional data to process the kernel data representing the pattern data and the kernel k 1 represents the pattern p, q 1 = A 1 represents the k × 1 p for each row of the pattern p; (c) 소수 개의 r1 성분을 직접 계산하는 예비 점화 단계를 수행한 다음, 상기 연산자 A1 에 의해 결정되는 자연스러운 회귀 관계를 이용하여 r1 성분의 나머지 전부를 결정함에 의해, 상기 패턴의 상기 각 행에 대한 A1r1 = q1 을 거꾸로 풀어내도록 상기 추가적인 데이터를 프로세싱하여 상기 패턴에 대한 r1 = k1 ×p 를 나타내는 데이터를 결정하는 단계; (c) performing a preliminary ignition step of directly calculating a few r 1 components and then determining all of the remainder of the r 1 components using the natural regression relationship determined by the operator A 1 , thereby determining the angle of the pattern. Processing the additional data to solve backwards A 1 r 1 = q 1 for a row to determine data representing r 1 = k 1 × p for the pattern; (d) r1 = k1 ×p 를 나타내는 데이터를 프로세싱하여, (k1 ×p)T 의 각 행에 대한 q2 = A2k2 ×(k1 ×p)T 를 나타내는 데이터를 발생하는 단계 (여기서, r1 T = (k1 ×p)T 는 r1 의 치환 (transposition) 을 나타냄); 및(d) r 1 = processes the data representing the k 1 × p, (k 1 × p) q 2 = A 2 k 2 × for each line of T (k 1 × p) for producing data representing the T Step, where r 1 T = (k 1 × p) T represents the transposition of r 1 ; And (e) (k1 ×p)T 의 상기 각 행에 대한 A2r2 T = q2 를 거꾸로 풀어내도록 q2 = A2k2 ×r1 T 를 나타내는 데이터를 프로세싱함으로써 상기 패턴 p 에 대한 r2 T = (k2 ×k1 ×p)T 를 나타내는 데이터를 결정하는 단계를 포함하는, 컨볼루션 수행 방법.(e) for the pattern p by processing data representing q 2 = A 2 k 2 xr 1 T to solve backwards A 2 r 2 T = q 2 for each row of (k 1 × p) T r 2 T = (k 2 x k 1 x p) determining the data representing T. 제 1 항에 있어서,The method of claim 1, n = 2 이고, n = 2, 단계 (e) 는, r2 T = (k2 ×k1 ×p)T 를 나타내는 데이터에 대한 치환을 수행하여 상기 패턴에 대한 r = (k2 ×k1 ×p) (여기서, r 은 상기 컨볼루션 Dp 에 근접한 근사임) 를 나타내는 데이터를 발생하는 단계를 포함하는, 컨볼루션 수행 방법.Step (e) performs a substitution on the data representing r 2 T = (k 2 × k 1 × p) T so that r = (k 2 × k 1 × p) for the pattern, where r is Generating data representing an approximation to convolution Dp). 제 2 항에 있어서,The method of claim 2, (f) 상기 패턴에 대한 r = (k2 ×k1 ×p) 를 나타내는 데이터에 의해 적어도 부분적으로 결정되는 컨볼루션된 이미지 데이터에 응답하여 패턴 신호를 발생하는 단계; 및(f) generating a pattern signal in response to convolved image data determined at least in part by data representing r = (k 2 x k 1 x p) for the pattern; And (g) 상기 패턴 신호를 광학계의 세트에 입사시키고, 상기 패턴 신호에 응답하여 상기 광학계로부터의 패턴 이미지를 리소그래피 목표물상에 투사하는 단계를 더 포함하는, 컨볼루션 수행 방법.(g) injecting the pattern signal into a set of optical systems and projecting a pattern image from the optical system onto a lithographic target in response to the pattern signal. 제 3 항에 있어서,The method of claim 3, wherein 상기 패턴 신호는 광학 신호인, 컨볼루션 수행 방법.And the pattern signal is an optical signal. 제 3 항에 있어서,The method of claim 3, wherein 상기 패턴 신호는 전자 빔 신호인, 컨볼루션 수행 방법.And the pattern signal is an electron beam signal. 제 3 항에 있어서,The method of claim 3, wherein 단계 (f) 에서 이용되는 상기 컨볼루션된 이미지 데이터는 상기 패턴에 대한 r = (k2 ×k1 ×p) 를 나타내는 데이터인, 컨볼루션 수행 방법.And the convolved image data used in step (f) is data representing r = (k 2 x k 1 x p) for the pattern. 제 1 항에 있어서,The method of claim 1, n 은 2 보다 크고,n is greater than 2 (f) 상기 패턴에 대한 r2 T = (k2 ×k1 ×p)T 를 나타내는 데이터를 결정한 후, 단계 (d) 및 (e) 의 j 회 반복을 수행하는 단계를 더 포함하며, (f) determining the data representing r 2 T = (k 2 × k 1 × p) T for the pattern, and then performing j iterations of steps (d) and (e), 단계 (d) 및 (e) 의 i-번째 반복 동안 (여기서, i 는 양의 정수이고, j = (n-2)), qi+2 = Ai+2ki+2 ×qi+1 및 ri+2 T = (ki+2 ×ki+1 ×... ×k1 ×p)T 를 나타내는 데이터가 발생되는, 컨볼루션 수행 방법.During the i-th iteration of steps (d) and (e), where i is a positive integer and j = (n-2), q i + 2 = A i + 2 k i + 2 × q i + 1 and r i + 2 T = (k i + 2 x k i + 1 x ... x k 1 x p) Data representing T is generated. 제 1 항에 있어서,The method of claim 1, 상기 패턴 데이터는 단계 (b) 이전에 메모리의 기억 위치에 저장되고,The pattern data is stored in a storage location in the memory before step (b), 단계 (d) 는,Step (d) is (i) p 의 행을 나타내는 패턴 데이터가 이전에 차지하고 있던 상기 기억 위치의 행을 (k1 ×p) 의 각 열을 나타내는 데이터가 차지하도록, r1 = k1 ×p 를 나타내는 데이터를 상기 메모리에 저장하는 단계; 및(i) the data representing r 1 = k 1 × p so that the data representing each column of (k 1 × p) occupies the row of the storage position previously occupied by the pattern data representing the row of p; Storing in; And (ii) (k1 ×p)T 의 상기 각 행에 대한 q2 = A2k2 ×(k1 ×p)T 를 나타내는 데이터를 발생하는 동안, 상기 기억 위치의 하나의 상기 행으로부터 (k1 ×p) 의 하나의 상기 열을 나타내는 데이터를 판독하는 단계를 포함하는, 컨볼루션 수행 방법. (ii) (k 1 × p ) for each line of T q 2 = A 2 k 2 × (k 1 × p) for generating data indicative of T, from one said row of said memory location (k 1 p × a method of performing, convolution including the step of reading out the data indicative of the heat of). 컨볼루션 결과 r = Dp = d ×p (D 는 d 의 회전) 를 나타내는 데이터를 발생시키기 위해 적어도 근사적으로 분리형-스플라인 커널과 동일한 평활 커널 d 로 2-차원 패턴 p(x, y) 의 컨볼루션을 수행하는 방법으로서, Convolution of the two-dimensional pattern p (x, y) with at least approximately the same smooth kernel d as the discrete-spline kernel to produce data representing r = Dp = d × p where D is the rotation of d. As a method of performing a solution, (a) k(x,y) = k1(x)k1(y) 로서 상기 분리형-스플라인 커널을 특정하는 단계로서, 여기서,(a) specifying the discrete-spline kernel as k (x, y) = k 1 (x) k 1 (y), wherein
Figure 112007037998221-pct00126
Figure 112007037998221-pct00126
이고, 커널 k1(x) 는 다음을 만족시키며, K 1 (x) satisfies
Figure 112007037998221-pct00078
Figure 112007037998221-pct00078
kc(x) 는 다음과 같은 커널이고, k c (x) is the kernel
Figure 112007037998221-pct00127
Figure 112007037998221-pct00127
k+(x) 는 다음과 같은 단측의 라플라시안 커널이며, k + (x) is the one-sided Laplacian kernel,
Figure 112007037998221-pct00128
Figure 112007037998221-pct00128
k-(x) 는 다음과 같은 단측의 라플라시안 커널인, 상기 특정 단계;k - (x) has the following Laplacian kernel of the same short-side, said specifying step;
Figure 112007037998221-pct00129
Figure 112007037998221-pct00129
(b) 패턴 p 를 나타내는 패턴 데이터, 및 상기 커널 kc, 상기 커널 k+ 및 상기 커널 k- 를 나타내는 커널 데이터를 프로세싱하여, 상기 패턴 p 의 각 행에 대한 캡 컨볼루션 kc ×p(x), 상기 각 행에 대한 제 2 컨볼루션 k+ ×p(x), 및 상기 각 행에 대한 제 3 컨볼루션 k- ×p(x) 를 나타내는 추가적인 데이터를 발생하고, 상기 각 행에 대한 상기 캡 컨볼루션, 상기 제 2 컨볼루션 및 상기 제 3 컨볼루션을 나타내는 추가적인 데이터를 함께 가산하여 q1 = k1 × p(x,y) = (kc × p(x,y)) + (k+ × p(x,y)) + (k- × p(x,y)) 를 나타내는 데이터를 발생하는 단계로서, (b) processing pattern data representing the pattern p, and kernel data representing the kernel k c , the kernel k + and the kernel k , to generate a cap convolution k c × p (x for each row of the pattern p; ), Generating additional data representing a second convolution k + x p (x) for each row, and a third convolution k - x p (x) for each row, Additional data representing cap convolution, the second convolution, and the third convolution are added together to q 1 = k 1 × p (x, y) = (k c × p (x, y)) + (k Generating data representing + x p (x, y)) + (k - x p (x, y)), 상기 캡 컨볼루션을 나타내는 데이터는, 상기 각 행에 대해 Ackc ×p(x) (여기서, Ac
Figure 112007037998221-pct00083
로서 정의되는 소멸화 연산자) 를 계산하고,
The data representing the cap convolution is, for each row, A c k c × p (x) (where A c is
Figure 112007037998221-pct00083
Compute the destructive operator defined as
Figure 112007037998221-pct00084
의 회귀 관계를 이용하여
Figure 112007037998221-pct00085
를 계산함으로써 발생되고,
Figure 112007037998221-pct00084
Using the regression relationship of
Figure 112007037998221-pct00085
Generated by calculating
상기 제 2 컨볼루션을 나타내는 데이터는, 상기 각 행에 대해 A+k+ ×p(x) (여기서, A+
Figure 112007037998221-pct00086
로서 정의되는 소멸화 연산자) 를 계산하고,
The data representing the second convolution is A + k + x p (x) for each row, where A + is
Figure 112007037998221-pct00086
Compute the destructive operator defined as
Figure 112007037998221-pct00087
의 회귀 관계를 이용하여
Figure 112007037998221-pct00088
를 계산함으로써 발생되며,
Figure 112007037998221-pct00087
Using the regression relationship of
Figure 112007037998221-pct00088
Is calculated by
상기 제 3 컨볼루션을 나타내는 데이터는, 상기 각 행에 대해 A-k- ×p(x) (여기서, A-
Figure 112007037998221-pct00089
로서 정의되는 소멸화 연산자) 를 계산하고,
The data representing the third convolution is, for each row, A - k - x p (x) (where A - is
Figure 112007037998221-pct00089
Compute the destructive operator defined as
Figure 112007037998221-pct00090
의 회귀 관계를 이용하여 끝에서부터 시작까지 회귀하는 것에 의해
Figure 112007037998221-pct00091
를 계산함으로써 발생되는, 상기 발생 단계;
Figure 112007037998221-pct00090
By regression from end to beginning using the regression relationship of
Figure 112007037998221-pct00091
Generated by calculating a;
(c) (k1 ×p(x, y)) 를 나타내는 데이터를 치환하여 (k1 ×p(x, y))T 를 나타내는 데이터를 발생하는 단계; 및 (c) (k 1 × p (x, y)) by substituting the data (k 1 × p (x, y)) represents the step of generating data representative of the T; And (d) 상기 커널 데이터를 이용하여, 상기 패턴 데이터가 아닌 (k1 ×p(x, y))T 를 나타내는 데이터를 프로세싱하는 것으로 단계 (b) 를 반복함으로써, q1 T = (k1(x) ×k1(y) ×p(x, y))T 를 나타내는 데이터를 발생하는 단계를 포함하는, 컨볼루션 수행 방법.(d) repeating step (b) by using the kernel data to process data representing (k 1 x p (x, y)) T , not the pattern data, thereby q 1 T = (k 1 ( x) generating data representing xk 1 (y) xp (x, y)) T.
제 9 항에 있어서,The method of claim 9, 상기 패턴 데이터는 단계 (b) 이전에 메모리의 기억 위치에 저장되고, The pattern data is stored in a storage location in the memory before step (b), 단계 (c) 는, p(x, y) 의 행을 나타내는 상기 패턴 데이터가 이전에 차지하고 있던 상기 기억 위치의 행을 (k1 ×p) 의 각 열을 나타내는 데이터가 차지하도록, (k1 ×p) 를 나타내는 데이터를 상기 메모리에 저장하는 단계에 의해 실현되는, 컨볼루션 수행 방법.Step (c) is performed such that the data representing each column of (k 1 × p) occupies a row of the storage position previously occupied by the pattern data representing a row of p (x, y), (k 1 × storing data representing p) in the memory. 제 9 항에 있어서,The method of claim 9, (e) q1 T = (k1 ×k1 ×p)T 를 나타내는 데이터를 치환하여 r = k ×p 를 나타내는 데이터를 생성하는 단계를 더 포함하는, 컨볼루션 수행 방법.(e) substituting data representing q 1 T = (k 1 × k 1 × p) T to generate data representing r = k × p. 제 11 항에 있어서,The method of claim 11, (f) r = k ×p 를 나타내는 데이터에 의해 적어도 부분적으로 결정되는 컨볼루션된 이미지 데이터에 응답하여 패턴 신호를 발생하는 단계; 및(f) generating a pattern signal in response to convolved image data at least partially determined by data representing r = k × p; And (g) 상기 패턴 신호를 광학계의 세트에 입사시키고, 상기 패턴 신호에 응답하여 상기 광학계로부터의 패턴 이미지를 리소그래피 목표물상에 투사하는 단계를 더 포함하는, 컨볼루션 수행 방법.(g) injecting the pattern signal into a set of optical systems and projecting a pattern image from the optical system onto a lithographic target in response to the pattern signal. 제 12 항에 있어서,The method of claim 12, 상기 패턴 신호는 광학 신호인, 컨볼루션 수행 방법.And the pattern signal is an optical signal. 제 12 항에 있어서,The method of claim 12, 상기 패턴 신호는 전자 빔 신호인, 컨볼루션 수행 방법.And the pattern signal is an electron beam signal. 컨볼루션 결과 r(x, y) = Dp = d ×p (D 는 d 의 회전) 를 나타내는 데이터를 발생시키기 위해 적어도 근사적으로 분리형 커널과 동일한 평활 커널 d 로 2-차원 패턴 p(x, y) 의 컨볼루션을 수행하는 방법으로서, Two-dimensional pattern p (x, y with at least approximately the same smooth kernel d as the detachable kernel to produce data representing convolutional results r (x, y) = Dp = d × p (where D is a rotation of d) A method of performing convolution of (a) 커널 d 를 근사하는 k(x,y) 를 이용하여, k(x, y) = k2(x)k2(y) 로서 특정하는 단계로서, 여기서,(a) specifying k (x, y) = k 2 (x) k 2 (y) using k (x, y) approximating the kernel d, where:
Figure 112007037998221-pct00130
인, 상기 특정 단계;
Figure 112007037998221-pct00130
Phosphorous, said specific step;
(b) 패턴 p 의 각 행을 나타내는 패턴 데이터 및 커널 k2 를 나타내는 커널 데이터를 프로세싱하여, (b) processing the pattern data representing each row of the pattern p and the kernel data representing the kernel k 2 , (i) -R-3 ≤x ≤n-1 에 대해, 상기 각 행에 대한 Ak2 ×p 를 나타내는 데이터를 발생하는 단계:(i) for -R-3 &lt; = x &lt; n-1, generating data representing Ak 2 × p for each row: 여기서, Ak2(x) ×p(x) = B(p(x + R) + p(x + R +1) - p(x -R) - p(x -R +1))); 및Where Ak 2 (x) × p (x) = B (p (x + R) + p (x + R + 1) −p (x−R) −p (x−R + 1))); And (ii) 상기 각 행에 대한 r(x) = A-1(Ak2(x) ×p(x)) 를 발견하기 위해, 회귀 관계 r(x + 2) = Ar(x) + B(r(x + 1) - r(x)) + r(x - 1) 를 이용하고, 회귀 연산을 점화하도록 관계 r(-R - 4) = r(-R - 3) = r(-R - 2) = 0 를 이용하여 상기 회귀 연산을 수행함으로써, 단계 (ii) 의 마지막 반복의 끝에서, k2 ×p 를 나타내는 데이터를 생성하는 단계;(ii) regression relationship r (x + 2) = Ar (x) + B (r, to find r (x) = A -1 (Ak 2 (x) x p (x)) for each of the above rows Use (x + 1)-r (x)) + r (x-1) and fire a regression operation: r (-R-4) = r (-R-3) = r (-R-2 Performing the regression operation with 0) to generate data representing k 2 x p at the end of the last iteration of step (ii); (c) k2 ×p 를 나타내는 데이터를 치환하여 (k2 ×p)T 를 나타내는 데이터를 생성하는 단계; 및(c) by substituting the data representing the k 2 × p (k 2 × p) generating data representative of the T; And (d) 상기 패턴 데이터의 행이 아닌 (k2 ×p)T 를 나타내는 데이터의 행에 대해 단계 (b) 를 반복함으로써, k2 로 k2 ×p 의 모든 열의 컨볼루션을 나타내는 데이터를 발생하는 단계를 포함하는, 컨볼루션 수행 방법.(d) for producing data representing a convolution of all the columns of by repeating the step (b) for the line of data indicating non-line (k 2 × p) T of the pattern data, k 2 × p by k 2 And a step of performing a convolution.
제 15 항에 있어서,The method of claim 15, 단계 (b), (c) 및 (d) 는 프로그램된 프로세서에 의해 수행되고,Steps (b), (c) and (d) are performed by a programmed processor, 상기 프로세서는 단계 (b) 의 시작시에 초기 상태에 있으며, The processor is in an initial state at the beginning of step (b), 단계 (d) 후에, 상기 프로세서는,After step (d), the processor (e) k2 로 k2 ×p 의 모든 열의 컨볼루션을 나타내는 데이터를 치환하여 컨볼루션 결과 r(x, y) 를 나타내는 데이터를 생성하는 단계; 및(e) by substituting the data that represents the convolution of all the columns of 2 k × 2 k p to the convolution result to produce data representative of the r (x, y); And (f) 단계 (e) 후에, 상기 초기의 프로세서 상태로 복귀하는 단계의 추가적인 단계를 수행하는, 컨볼루션 수행 방법.(f) after step (e), performing an additional step of returning to the initial processor state. 제 16 항에 있어서,The method of claim 16, (g) 상기 컨볼루션 결과 r(x, y) 를 나타내는 데이터에 의해 적어도 부분적으로 결정되는 컨볼루션된 이미지 데이터에 응답하여 패턴 신호를 발생하는 단계; 및(g) generating a pattern signal in response to convolutional image data at least partially determined by data representing the convolution result r (x, y); And (g) 상기 패턴 신호를 광학계의 세트에 입사시키고, 상기 패턴 신호에 응답하여 상기 광학계로부터의 패턴 이미지를 리소그래피 목표물상에 투사하는 단계를 더 포함하는, 컨볼루션 수행 방법.(g) injecting the pattern signal into a set of optical systems and projecting a pattern image from the optical system onto a lithographic target in response to the pattern signal. 제 17 항에 있어서,The method of claim 17, 상기 패턴 신호는 광학 신호인, 컨볼루션 수행 방법.And the pattern signal is an optical signal. 제 17 항에 있어서,The method of claim 17, 상기 패턴 신호는 전자 빔 신호인, 컨볼루션 수행 방법.And the pattern signal is an electron beam signal. 제 15 항에 있어서,The method of claim 15, 상기 패턴 데이터는 단계 (b) 이전에 메모리의 기억 위치에 저장되고, The pattern data is stored in a storage location in the memory before step (b), 단계 (c) 는, p(x, y) 의 행을 나타내는 상기 패턴 데이터가 이전에 차지하고 있던 상기 기억 위치의 행을 (k2 ×p) 의 각 열을 나타내는 데이터가 차지하도록, k2 ×p 를 나타내는 데이터를 상기 메모리에 저장하는 단계에 의해 실현되는, 컨볼루션 수행 방법.Step (c), p (x, y), said pattern data representing a line of a so as to occupy the data representing each column of a row of the storage position occupied previously (k 2 × p) k 2 × p And storing the data indicative in the memory. 제 15 항에 있어서,The method of claim 15, B = 2sin2(π/2L) 인, 컨볼루션 수행 방법.A method of performing convolution, wherein B = 2sin 2 (π / 2L). 제 15 항에 있어서,The method of claim 15, B = 1 인, 컨볼루션 수행 방법.Method of performing convolution, with B = 1. 제 1 데이터를 이용하여 d 를 근사하는 분리형-스플라인 커널 k(x1,..., xn) = k1(x1)...kn(xn) 을 나타내는 제 2 데이터를 프로세싱하여 패턴 p 의 각 행에 대한 q1 = A1k1 ×p 를 나타내는 제 3 데이터를 발생하고 (여기서, kj 는 회전 Kj 를 갖고, 커널 k(x1,..., xn) 는 연산자 A = A1A2...An 를 허용하며, Aj 는 (Aj 가 소멸화 연산자인 경우에는) AjKj 가 희소이고 (Aj 가 평탄화 연산자인 경우에는) AjKj 가 거의 모든 곳에서 국부적으로 일정한 매트릭스가 되도록, 커널 kj 의 회전 Kj 에 작용하는 소멸화 또는 평탄화 연산자임), 상기 패턴의 상기 각 행에 대한 A1r1 = q1 을 거꾸로 풀어내도록 상기 제 3 데이터를 프로세싱하여 상기 패턴에 대한 r1 = k1 ×p 를 나타내는 제 4 데이터를 결정하고, 상기 제 4 데이터를 프로세싱하여 (k1 ×p)T 의 각 행에 대한 q2 = A2k2 ×(k1 ×p)T 를 나타내는 제 5 데이터를 발생하며 (여기서, r1 T = (k1 ×p)T 는 r1 의 치환을 나타냄), (k1 ×p)T 의 상기 각 행에 대해 A2rT = q2 를 거꾸로 풀어내도록 상기 제 5 데이터를 프로세싱하여, 상기 패턴에 대한 r2 T = (k2 ×k1 ×p)T 를 나타내는 제 6 데이터를 결정함으로써, n-차원 패턴 p(x1, ..., xn) (n 은 1 보다 큼) 을 나타내는 제 1 데이터를 적어도 근사적으로 상기 분리형-스플라인 커널과 동일한 평활 커널 d 로 컨볼루션하여 컨볼루션 결과 r = Dp = d ×p (D 는 d 의 회전) 를 나타내는 데이터를 발생하게 하는, 소프트웨어로 프로그램된 프로세서; Processing second data representing a discrete-spline kernel k (x 1 , ..., x n ) = k 1 (x 1 ) ... k n (x n ) approximating d using the first data Generate third data representing q 1 = A 1 k 1 × p for each row of pattern p (where k j has rotation K j and kernel k (x 1 , ..., x n ) operator, and a = a 1 a 2 ... a n permit, a j is (a j is destroyed screen when the operator) a j K j is the rare and (in the case of a j are flattened operator) a j K j is such that the local constant matrix almost everywhere, kernel extinction acting on the rotation K j screen or planarization operator responsibility of the k j), to pay a a 1 r 1 = q 1 for each row of the pattern released backwards and by processing the third data to determine the fourth data representative of the r 1 = k 1 × p with respect to the pattern, and processing the fourth data (k 1 × p) q for each line of T = 2 Generates fifth data representing A 2 k 2 × (k 1 × p) T , where r 1 T = (k 1 × p) T represents a substitution of r 1 , (k 1 × p) T Processing the fifth data to solve A 2 r T = q 2 backwards for each of the rows of to determine the sixth data representing r 2 T = (k 2 x k 1 x p) T for the pattern Thereby convolving first data representing an n-dimensional pattern p (x 1 , ..., x n ) (where n is greater than 1) to at least approximately the same smooth kernel d as the detached-spline kernel. A software programmed processor that generates data indicative of the solution result r = Dp = d × p where D is a rotation of d; 상기 프로세서에 결합되어 상기 프로세서에 의해 액세스 가능하며, 적어도 상기 제 1 데이터, 상기 제 2 데이터 및 상기 제 5 데이터를 저장하도록 구성된 하나 이상의 메모리; 및One or more memories coupled to the processor and accessible by the processor and configured to store at least the first data, the second data and the fifth data; And 상기 프로세서에 결합되는 입력 장치를 구비하고,An input device coupled to the processor, 상기 프로세서는 상기 입력 장치로부터의 하나 이상의 제어 신호에 응답하여 상기 소프트웨어를 실행하는, 컴퓨터 시스템.And the processor to execute the software in response to one or more control signals from the input device. 제 23 항에 있어서,The method of claim 23, n = 2 이고, n = 2, 상기 소프트웨어는, 상기 프로세서로 하여금 상기 제 6 데이터에 대한 치환을 수행하여 상기 패턴에 대한 r = (k2 ×k1 ×p) 을 나타내는 제 7 데이터를 발생하게 하며, The software causes the processor to perform substitution on the sixth data to generate seventh data representing r = (k 2 x k 1 x p) for the pattern, 상기 제 7 데이터는 상기 컨볼루션 결과 r = Dp = d ×p 를 나타내는 데이터인, 컴퓨터 시스템.And the seventh data is data representing the convolution result r = Dp = d × p. n-차원의 패턴 p(x1, ..., xn) 를 나타내는 제 1 데이터 및 분리형-스플라인 커널 k(x1,..., xn) = k1(x1)...kn(xn) 를 나타내는 제 2 데이터를 포함하는 데이터에 산술 연산을 수행하도록 구성되는 디지털 신호 프로세싱 회로로서, kj 는 회전 Kj 를 갖고, 커널 k(x1,..., xn) 는 연산자 A = A1A2...An 를 허용하며, Aj 는 (Aj 가 소멸화 연산자인 경우에는) AjKj 가 희소이고 (Aj 가 평탄화 연산자인 경우에는) AjKj 가 거의 모든 곳에서 국부적으로 일정한 매트릭스가 되도록, 커널 kj 의 회전 Kj 에 작용하는 소멸화 또는 평탄화 연산자이고, 상기 커널 k 는 적어도 근사적으로 회전 D 를 갖는 평활 커널 d 와 동일하며, n 은 1 보다 큰, 상기 디지털 신호 프로세싱 회로; 및First data representing an n -dimensional pattern p (x 1 , ..., x n ) and a split-spline kernel k (x 1 , ..., x n ) = k 1 (x 1 ) ... k A digital signal processing circuit configured to perform an arithmetic operation on data including second data representing n (x n ), wherein k j has a rotation K j and kernel k (x 1 , ..., x n ) the operator a = a and allow 1 a 2 ... a n, a j is (a j is extinguished when the screen operator) a j K j is the rare and (in the case of a j are flattened operator) a j Is an extinction or flattening operator acting on the rotation K j of kernel k j such that K j is a local constant matrix almost everywhere, and the kernel k is at least approximately equal to the smooth kernel d with rotation D, n is greater than 1, wherein the digital signal processing circuit; And 상기 제 1 데이터와 상기 제 2 데이터를 프로세싱하여 상기 패턴 p 의 각 행에 대한 q1 = A1k1 ×p 를 나타내는 제 3 데이터를 발생하고, 상기 패턴의 상기 각 행에 대한 A1r1 = q1 을 거꾸로 풀어내도록 상기 제 3 데이터를 프로세싱하여 상기 패턴에 대한 r1 = k1 ×p 를 나타내는 제 4 데이터를 결정하고, 상기 제 4 데이터를 프로세싱하여 (k1 ×p)T 의 각 행에 대한 q2 = A2k2 ×(k1 ×p)T 를 나타내는 제 5 데이터를 발생하고 (여기서, r1 T = (k1 ×p)T 는 r1 의 치환을 나타냄), (k1 ×p)T 의 상기 각 행에 대한 A2r2 T = q 를 거꾸로 풀어내도록 상기 제 5 데이터를 프로세싱함으로써 상기 패턴에 대한 r2 T = (k2 ×k1 ×p)T 를 나타내는 제 6 데이터를 결정하는 것에 의해, 명령어에 응답하여 제어 비트를 발생하도록 구성되고 상기 제어 비트를 상기 디지털 신호 프로세싱 회로에 인가하여 상기 디지털 신호 프로세싱 회로가 상기 제 1 데이터에 대한 컨볼루션을 수행하도록 구성되며, 상기 디지털 신호 프로세싱 회로에 결합되는 프로그램 제어 유닛을 구비하는, 디지털 신호 프로세서.Processing the first data and the second data to generate third data representing q 1 = A 1 k 1 × p for each row of the pattern p, wherein A 1 r 1 for each row of the pattern = by the q 1 naedorok released backwards by processing the third data determine the fourth data representative of the r 1 = k 1 × p with respect to the pattern, and processing the fourth data (k 1 × p) each of T Generate fifth data representing q 2 = A 2 k 2 × (k 1 × p) T for a row, where r 1 T = (k 1 × p) T represents a substitution of r 1 , ( k 1 × p) T the by a 2 r 2 naedorok inverted releasing T = q processing said fifth data for each row r 2 T = to said pattern (k 2 × k 1 × p a) showing a T By determining a sixth data, generate a control bit in response to a command and convert the control bit into the digital signal processing. And a program control unit, applied to the circuit, the digital signal processing circuit configured to perform convolution on the first data, the program control unit being coupled to the digital signal processing circuit. 제 25 항에 있어서,The method of claim 25, n = 2 이고, n = 2, 상기 제어 비트는, 상기 디지털 프로세싱 회로가 상기 제 6 데이터에 대한 치환을 수행하여 상기 패턴에 대한 r = (k2 ×k1 ×p) 를 나타내는 제 7 데이터를 발생하게 하는, 디지털 신호 프로세서. And the control bit causes the digital processing circuit to perform substitution for the sixth data to generate seventh data representing r = (k 2 x k 1 x p) for the pattern. 디지털 신호 프로세싱 회로 및 상기 디지털 신호 프로세싱 회로에 결합되는 프로그램 제어 유닛을 구비하는 디지털 신호 프로세서로서, 상기 디지털 신호 프로세싱 회로는 상기 프로그램 제어 유닛으로부터의 제어 비트에 응답하여, n-차원의 패턴 p(x1, ..., xn) 을 나타내는 제 1 데이터 및 분리형-스플라인 커널 k(x1,..., xn) = k1(x1)...kn(xn) 을 나타내는 제 2 데이터를 포함하는 데이터에 산술 연산을 수행하여 (여기서, kj 는 회전 Kj 를 갖고, 커널 k(x1,..., xn) 는 연산자 A = A1A2...An 를 허용하며, Aj 는 (Aj 가 소멸화 연산자인 경우에는) AjKj 가 희소 (sparse) 이고 (Aj 가 평탄화 연산자인 경우에는) AjKj 가 거의 모든 곳에서 국부적으로 일정한 매트릭스가 되도록, 커널 kj 의 회전 Kj 에 작용하는 소멸화 또는 평탄화 연산자이고, 상기 스플라인 커널 k 는 적어도 근사적으로 회전 D 를 갖는 평활 커널 d 와 동일하며, n 은 1 보다 큼), 상기 제 1 데이터와 상기 제 2 데이터를 프로세싱하여 상기 패턴 p 의 각 행에 대한 q1 = A1k1 ×p 를 나타내는 제 3 데이터를 발생하고, 상기 패턴의 상기 각 행에 대한 A1r1 = q1 을 거꾸로 풀어내도록 상기 제 3 데이터를 프로세싱하여 상기 패턴에 대한 r1 = k1 ×p 를 나타내는 제 4 데이터를 결정하고, 상기 제 4 데이터를 프로세싱하여 (k1 ×p)T 의 각 행에 대한 q2 = A2k2 ×(k1 ×p)T 를 나타내는 제 5 데이터를 발생하고 (여기서, r1 T = (k1 ×p)T 는 r1 의 치환을 나타냄), (k1 ×p)T 의 상기 각 행에 대한 A2r2 T = q 를 거꾸로 풀어내도록 상기 제 5 데이터를 프로세싱함으로써 상기 패턴에 대한 r2 T = (k2 ×k1 ×p)T 를 나타내는 제 6 데이터를 결정하고, 상기 제 6 데이터에 대한 치환을 수행하여 상기 패턴에 대한 r2 = (k2 ×k1 ×p) 를 나타내는 제 7 데이터를 발생하는 것에 의해, 상기 제 1 데이터에 대한 컨볼루션을 수행하도록 구성되는, 상기 디지털 신호 프로세서;A digital signal processor having a digital signal processing circuit and a program control unit coupled to the digital signal processing circuit, the digital signal processing circuit responsive to control bits from the program control unit, wherein the n-dimensional pattern p (x) First data representing 1 , ..., x n ) and second representing spline kernel k (x 1 , ..., x n ) = k 1 (x 1 ) ... k n (x n ) Perform an arithmetic operation on data containing 2 data, where k j has rotation K j and kernel k (x 1 , ..., x n ) is operator A = A 1 A 2 ... A n to allow and, a j is (a j is destroyed screen when the operator) a j K j is rare (sparse) and (a j is the case of the flattening operator) a j K j is locally constant almost everywhere Chemistry and extinction or planarization operator acting on the rotation of the kernel k j so that the matrix K j, the spline Channel k is the same as smoothing kernel d having a rotation D, at least in approximation, n is 1 greater than), q 1 for the processing of the second data with the first data on each line of the pattern p = A 1 generate third data representing k 1 × p and process the third data to solve A 1 r 1 = q 1 backwards for each row of the pattern, thereby generating r 1 = k 1 × p to determine the fourth data indicating, and process the fourth data (k 1 × p) q 2 = a 2 k 2 × for each line of T (k 1 × p) generating a fifth data indicative of a T and (wherein, r 1 T = (k 1 × p) T is r represents the substitution of the 1), (k 1 × p ) T wherein a 2 r 2 T = q naedorok the loose upside-down wherein for each row of the 5 by processing the data to determine a sixth data indicative of the r 2 T = (k 2 × k 1 × p) T with respect to the pattern for the sixth data The digital signal processor configured to perform convolution on the first data by performing substitution to generate seventh data representing r 2 = (k 2 × k 1 × p) for the pattern; 상기 제 7 데이터에 의해 적어도 부분적으로 결정되는 컨볼루션된 이미지 데이터에 응답하여, 패턴 신호를 발생하도록 구성되는 패턴 신호 발생기; 및A pattern signal generator configured to generate a pattern signal in response to the convolved image data determined at least in part by the seventh data; And 상기 패턴 신호가 그 위에 입사하도록 위치하는 광학계의 세트를 구비하고,A set of optical systems positioned such that said pattern signal is incident thereon, 상기 광학계는 상기 패턴 신호에 응답하여 리소그래피 목표물상에 패턴 이미지를 투사하는, 리소그래피 시스템.And the optical system projects a pattern image onto the lithographic target in response to the pattern signal. 제 27 항에 있어서,The method of claim 27, 상기 디지털 신호 프로세서는 상기 제 7 데이터를 상기 패턴 신호 발생기로 인가하고,The digital signal processor applies the seventh data to the pattern signal generator, 상기 패턴 신호 발생기는 상기 제 7 데이터에 응답하여 상기 패턴 신호를 발생하도록 구성되는, 리소그래피 시스템.And the pattern signal generator is configured to generate the pattern signal in response to the seventh data. 제 27 항에 있어서,The method of claim 27, 상기 패턴 신호는 광학 신호인, 리소그래피 시스템.And the pattern signal is an optical signal. 제 29 항에 있어서,The method of claim 29, 상기 광학 신호는 광학 빔이고,The optical signal is an optical beam, 상기 광학계의 세트는 상기 광학 빔을 포커싱하여 포커싱된 빔을 발생하고 상기 포커싱된 빔을 상기 리소그래피 목표물에 대해 스캐닝하도록 구성되는, 리소그래피 시스템.The set of optics is configured to focus the optical beam to generate a focused beam and to scan the focused beam against the lithographic target. 제 27 항에 있어서,The method of claim 27, 상기 패턴 신호는 전자 빔 신호인, 리소그래피 시스템.And the pattern signal is an electron beam signal. 제 31 항에 있어서,The method of claim 31, wherein 상기 광학계의 세트는 상기 전자 빔 신호를 포커싱하여 포커싱된 전자 빔을 발생하고 상기 포커싱된 전자 빔을 상기 리소그래피 목표물에 대해 스캐닝하도록 구성되는, 리소그래피 시스템.The set of optics is configured to focus the electron beam signal to generate a focused electron beam and to scan the focused electron beam against the lithographic target. n-차원의 패턴 p(x1, ..., xn) 을 나타내는 제 1 신호를 평활 커널 d 를 근사하는 분리형-스플라인 커널 k(x1,..., xn) = k1(x1)...kn(xn) 을 나타내는 제 2 신호로 컨볼루션하도록 구성되어 (여기서, kj 는 회전 Kj 를 갖고, 커널 k(x1,..., xn) 는 연산자 A = A1A2...An 를 허용하며, Aj 는 (Aj 가 소멸화 연산자인 경우에는) AjKj 가 희소이고 (Aj 가 평탄화 연산자인 경우에는) AjKj 가 거의 모든 곳에서 국부적으로 일정한 매트릭스가 되도록, 커널 kj 의 회전 Kj 에 작용하는 소멸화 또는 평탄화 연산자), 상기 제 1 신호 및 상기 제 2 신호로부터 패턴 p 의 각 행에 대한 q1 = A1k1 ×p 을 나타내는 제 3 신호를 발생하고, 패턴의 상기 각 행에 대한 A1r1 = q1 을 거꾸로 풀어내도록 상기 제 3 신호를 프로세싱하여, 상기 패턴에 대한 r1 = k1 ×p 를 나타내는 제 4 신호를 발생하며, 상기 제 4 신호로부터, (k1 ×p)T 의 각 행에 대한 q2 = A2k2 ×(k1 ×p)T 를 나타내는 제 5 신호를 발생하고 (여기서, r1 T = (k1 ×p)T 는 r1 의 치환을 나타냄), (k1 ×p)T 의 상기 각 행에 대한 A2r2 T = q 를 거꾸로 풀어내도록 상기 제 5 신호를 프로세싱함으로써 상기 패턴에 대한 r2 T = (k2 ×k1 ×p)T 를 나타내는 제 6 신호를 발생하는 것에 의해, 컨볼루션 결과 r = Dp = d ×p (여기서, D 는 d 의 회전이며, n 은 1 보다 큼) 을 나타내는 신호를 발생하고, The first signal representing the n -dimensional pattern p (x 1 , ..., x n ) is a split-spline kernel k (x 1 , ..., x n ) approximating the smoothing kernel d = k 1 (x 1 ) ... convolved with a second signal representing k n (x n ), where k j has rotation K j and kernel k (x 1 , ..., x n ) is operator A = a and allow 1 a 2 ... a n, a j is (a j is destroyed screen when the operator) a j K j is the rare and (in the case of a j are flattened operator) a j K j is An extinction or flattening operator acting on the rotation K j of kernel k j to be a local constant matrix almost everywhere), q 1 = A 1 for each row of pattern p from the first and second signals. generate a third signal representing k 1 × p and process the third signal to solve A 1 r 1 = q 1 backwards for each row of the pattern, r 1 = k 1 × p for the pattern Fourth signal indicating Occurs, and from said fourth signal, (k 1 × p) q 2 = A 2 k 2 × for each line of T (k 1 × p) generating a fifth signal indicative of the T, and (wherein, r 1 T = (k 1 × p) T denotes the substitution of r 1), (k 1 × p) the pattern naedorok inverted releasing the a 2 r 2 T = q for each of the rows of T, by processing said fifth signal By generating a sixth signal representing r 2 T = (k 2 × k 1 × p) T with respect to the convolutional result r = Dp = d × p (where D is the rotation of d and n is 1 Greater than), 상기 제 6 신호는 적어도 근사적으로 상기 컨볼루션 결과 r = Dp 을 나타내는, 컨볼루션 장치. And the sixth signal at least approximately represents the convolution result r = Dp. 제 33 항에 있어서,The method of claim 33, wherein 상기 장치는 전자 회로로 이루어지는, 컨볼루션 장치.And the device comprises an electronic circuit. 제 33 항에 있어서,The method of claim 33, wherein 상기 장치는 프로그램 가능한 게이트 어레이-기반의 컴퓨팅 시스템인, 컨볼루션 장치.And the device is a programmable gate array-based computing system. 명령어를 저장하는 컴퓨터-판독가능 저장 매체로서,A computer-readable storage medium storing instructions 상기 명령어는 컴퓨터에 의해 실행가능하고,The instructions are executable by a computer, 상기 명령어는, The command is 상기 컴퓨터가 상기 명령어의 실행에 응답하여, n-차원 패턴 p(x1, ..., xn) 을 나타내는 제 1 데이터를 적어도 근사적으로 분리형-스플라인 커널 k(x1,..., xn) = k1(x1)...kn(xn) 과 동일한 평활 커널 d 로 컨볼루션하여 컨볼루션 결과 r = Dp = d ×p 을 나타내는 데이터를 발생하는 방법을 수행하게 하며 (여기서, kj 는 회전 Kj 를 갖고, 커널 k(x1,..., xn) 는 연산자 A = A1A2...An 를 허용하며, Aj 는 (Aj 가 소멸화 연산자인 경우에는) AjKj 가 희소 (sparse) 이고 (Aj 가 평탄화 연산자인 경우에는) AjKj 가 거의 모든 곳에서 국부적으로 일정한 매트릭스가 되도록, 커널 kj 의 회전 Kj 에 작용하는 소멸화 또는 평탄화 연산자이고, D 는 d 의 회전이며, n 은 1 보다 큼),In response to execution of the instruction, the computer at least approximately detaches the spline kernel k (x 1 , ..., the first data representative of the n -dimensional pattern p (x 1 ,..., X n ). x n ) = k 1 (x 1 ) ... convolves with the same smooth kernel d as k n (x n ) to produce a data that represents the convolution result r = Dp = d × p ( Where k j has rotation K j , kernel k (x 1 , ..., x n ) accepts operators A = A 1 A 2 ... A n , where A j is (A j is destroyed) Operator j ) acts on the rotation K j of kernel k j such that A j K j is sparse (if A j is a flattening operator) and A j K j is a local constant matrix almost everywhere. Is a destructive or flattening operator, D is a rotation of d, and n is greater than 1), 상기 방법은,The method, 상기 분리형-스플라인 커널 k(x1,..., xn) = k1(x1)...kn(xn) 을 나타내는 제 2 데이터를 상기 제 1 데이터로 프로세싱하여, 패턴 p 의 각 행에 대한 q1 = A1k1 ×p 를 나타내는 제 3 데이터를 발생하는 단계; Processing second data representing the discrete-spline kernel k (x 1 , ..., x n ) = k 1 (x 1 ) ... k n (x n ) into the first data, thereby Generating third data representing q 1 = A 1 k 1 × p for each row; 상기 패턴의 상기 각 행에 대한 A1r1 = q1 을 거꾸로 풀어내도록 상기 제 3 데이터를 프로세싱하여, 상기 패턴에 대한 r1 = k1 ×p 를 나타내는 제 4 데이터를 결정하는 단계; Processing the third data to solve backwards A 1 r 1 = q 1 for each row of the pattern, to determine fourth data representing r 1 = k 1 × p for the pattern; 상기 제 4 데이터를 프로세싱하여, (k1 ×p)T 의 각 행에 대한 q2 = A2k2 ×(k1 ×p)T 를 나타내는 제 5 데이터를 발생하는 단계 (여기서, r1 T = (k1 ×p)T 는 r1 의 치환을 나타냄); To process the fourth data, (k 1 × p) q 2 = A 2 k 2 × for each line of T (k 1 × p) generating a fifth data indicative of the T (where, r 1 T = (k 1 x p) T represents a substitution of r 1 ); (k1 ×p)T 의 상기 각 행에 대해 A2r2 T = q2 를 거꾸로 풀어내도록 상기 제 5 데이터를 프로세싱함으로써, 상기 패턴에 대한 r2 T = (k2 ×k1 ×p)T 를 나타내는 제 6 데이터를 결정하는 단계; 및By processing the fifth data to solve A 2 r 2 T = q 2 backwards for each row of (k 1 × p) T , r 2 T = (k 2 × k 1 × p) for the pattern Determining sixth data representing T ; And 상기 제 6 데이터에 대한 치환을 수행하여 상기 패턴에 대한 r = (k2 ×k1 ×p) 를 나타내는 제 7 데이터를 발생시키는 단계를 포함하고,Performing substitution on the sixth data to generate seventh data representing r = (k 2 × k 1 × p) for the pattern, 상기 제 7 데이터는 적어도 근사적으로 상기 컨볼루션 결과 r = Dp 를 나타내는, 컴퓨터-판독가능 저장 매체.And the seventh data at least approximately represents the convolution result r = Dp.
KR1020037015469A 2001-05-29 2002-05-24 Fast signal convolution using separated-spline kernel KR100839391B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/866,890 2001-05-29
US09/866,890 US6912323B2 (en) 2000-01-11 2001-05-29 Method and apparatus for fast signal convolution using separated-spline kernel
PCT/US2002/016475 WO2002097655A2 (en) 2001-05-29 2002-05-24 Fast signal convolution using separated -spline kernel

Publications (2)

Publication Number Publication Date
KR20040011514A KR20040011514A (en) 2004-02-05
KR100839391B1 true KR100839391B1 (en) 2008-06-20

Family

ID=25348651

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037015469A KR100839391B1 (en) 2001-05-29 2002-05-24 Fast signal convolution using separated-spline kernel

Country Status (5)

Country Link
EP (1) EP1527397A2 (en)
JP (1) JP2005517999A (en)
KR (1) KR100839391B1 (en)
TW (1) TWI220482B (en)
WO (1) WO2002097655A2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI616813B (en) * 2016-11-14 2018-03-01 耐能股份有限公司 Convolution operation method
TWI645335B (en) * 2016-11-14 2018-12-21 耐能股份有限公司 Convolution operation device and convolution operation method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0855682A2 (en) * 1997-01-24 1998-07-29 Canon Kabushiki Kaisha Scan line rendering of convolutions
WO2001052101A2 (en) * 2000-01-11 2001-07-19 Etec Systems, Inc. Method and apparatus for fast signal convolution using spline kernel

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0855682A2 (en) * 1997-01-24 1998-07-29 Canon Kabushiki Kaisha Scan line rendering of convolutions
WO2001052101A2 (en) * 2000-01-11 2001-07-19 Etec Systems, Inc. Method and apparatus for fast signal convolution using spline kernel

Also Published As

Publication number Publication date
KR20040011514A (en) 2004-02-05
EP1527397A2 (en) 2005-05-04
WO2002097655A3 (en) 2005-03-03
TWI220482B (en) 2004-08-21
WO2002097655A2 (en) 2002-12-05
JP2005517999A (en) 2005-06-16

Similar Documents

Publication Publication Date Title
US6912323B2 (en) Method and apparatus for fast signal convolution using separated-spline kernel
US7353145B2 (en) Method for correcting a mask pattern, a computer program product, a method for producing a photomask, and method for manufacturing a semiconductor device
KR100393129B1 (en) Method and apparatus for run-time correction of proximity effects in pattern generation
JP4822330B2 (en) Integrated verification and manufacturing adaptation tools
JP3266499B2 (en) Optical proximity correction method and system
US6817003B2 (en) Short edge management in rule based OPC
US11567746B2 (en) Computation modification by amplification of stencil including stencil points
US20080260283A1 (en) Triangulating Design Data and Encoding Design Intent for Microlithographic Printing
JP3512946B2 (en) Electron beam writing apparatus and electron beam writing method
KR20200145648A (en) Neural network hardware accelerator system with zero-skipping and hierarchical structured pruning methods
WO2015023610A1 (en) An edge-based full chip mask topography modeling
US7246343B2 (en) Method for correcting position-dependent distortions in patterning of integrated circuits
Pang et al. Study of mask and wafer co-design that utilizes a new extreme SIMD approach to computing in memory manufacturing: full-chip curvilinear ILT in a day
JP2501265B2 (en) Method and apparatus for design pattern division in electronic beam lithography
US20210117806A1 (en) Composable neural network kernels
KR100839391B1 (en) Fast signal convolution using separated-spline kernel
US6678868B2 (en) Using Boolean expressions to represent shapes within a layout of an integrated circuit
JP4543614B2 (en) Photomask manufacturing method and semiconductor integrated circuit manufacturing method
US7406675B2 (en) Method and system for improving aerial image simulation speeds
US8059885B2 (en) Calculating image intensity of mask by decomposing Manhattan polygon based on parallel edge
JP7159970B2 (en) Charged particle beam writing method and charged particle beam writing apparatus
US8024717B2 (en) Method and apparatus for efficiently processing array operation in computer system
US8478808B1 (en) Approximate calculation of 2D matrix entries via GPU
JP4048752B2 (en) Pattern data correction method, pattern data correction apparatus and program thereof
JP3413984B2 (en) Photomask manufacturing method

Legal Events

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

Payment date: 20120530

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee