Abstract

Translated from Korean

컴파일러를 위한 장치, 시스템 및 방법이 개시된다. The apparatus, system and method for a compiler.하나의 이러한 컴파일러는 소스 코드를 상태와 이 상태들 사이에 전이를 포함하는 오토마톤으로 변환하며, 여기서 상기 오토마톤의 상태는 특수 목적 하드웨어 요소에 대응하는 특수 목적 상태를 포함한다. One such compiler converts the automaton including a transition between the source state and the state, in which is state of the automaton includes a special purpose state corresponding to the special purpose hardware components.컴파일러는 오토마톤을 네트리스트로 변환하고, 타깃 디바이스를 구성하기 위한 기계 코드를 제공하기 위해 이 네트리스트를 배치하고 라우팅한다. The compiler arrangement and routing the netlist in order to provide the machine code for configuring the conversion to the automaton in the netlist, and the target device.

유한 상태 기계(finite state machine)(FSM)(이는 또한 유한 상태 오토마톤(automaton), 오토마톤, 또는 단순히 상태 기계라고도 지칭됨)는 상태(state), 상태와 동작 사이의 전이(transition)를 나타낸다. A finite state machine (finite state machine) (FSM) (which is also referred to, also known as a finite state automaton (automaton), the automaton, or simply a state machine) is the transition (transition) between a state (state), state and operation .유한 상태 기계는 병렬 기계(parallel machine)를 위한 디지털 논리, 컴퓨터 프로그램, 또는 이미지를 설계하는데 사용될 수 있다. Finite state machine can be used to design a digital logic, computer program, or an image for a parallel machine (parallel machine).유한 상태 기계는 유한 개의 상태, 이들 상태들 사이의 전이, 및 출력으로 구성된 거동(behavior) 모델이다. A finite state machine is a transition, and behavior (behavior) model configured to output among the finite number of states, these states.유한 상태 기계는 그래프로 표시될 수 있는데, 여기서 이 그래프의 정점(vertices)이 유한 상태 기계의 상태에 대응하고 그래프의 에지(edge)가 유한 상태 기계에 대한 하나 이상의 입력으로 인해 발생하는 상태들 사이의 전이에 대응한다. A finite state machine may be displayed in a graph, where the vertices (vertices) of the graph corresponds to a state of the finite state machine, and the edge (edge) of the graph between the states resulting from the one or more inputs to the finite state machine It corresponds to the transition.유한 상태 기계는 확률 전이(probabilistic transition), 퍼지 상태(fuzzy state), 또는 다른 특이성(oddity)을 더 구비할 수 있다. Finite state machine may further include a transition probability (probabilistic transition), state fuzzy (fuzzy state), or other specificity (oddity).유한 상태 기계는 유한 내부 메모리, 입력 특징 및 선택적 출력 특징을 구비한다. The finite state machine has a finite internal memory, input features, and selectively output characteristics.출력을 구비하는 유한 상태 기계는 유한 상태 트랜스듀서(transducer)라고 언급될 수 있다. A finite state machine having an output may be referred to as a finite state transducer (transducer).

도 1은 본 발명의 여러 실시형태에 따른 병렬 기계의 일례를 도시한 도면; 1 is a diagram showing an example of a parallel machine, according to various embodiments of the present invention;도 2는 본 발명의 여러 실시형태에 따라 유한 상태 기계 엔진으로 구현된 도 1의 병렬 기계의 일례를 도시한 도면; 2 is a view showing an example of a parallel machine of Figure 1 implemented as a finite state machine engine according to various embodiments of the present invention;도 3은 본 발명의 여러 실시형태에 따라 도 2의 유한 상태 기계 엔진의 블록의 일례를 도시한 도면; Figure 3 is a view showing an example of the block of Figure 2 the finite state machine engine according to various embodiments of the present invention;도 4는 본 발명의 여러 실시형태에 따라 도 3의 블록의 행(row)의 일례를 도시한 도면; 4 is a view showing an example of the line (row) in the block diagram of Figure 3 in accordance with various embodiments of the present invention;도 5는 본 발명의 여러 실시형태에 따라 도 4의 2개의 행의 그룹의 일례를 도시한 도면; Figure 5 is a view showing a second example of a group of rows of Figure 4 in accordance with various embodiments of the present invention;도 6은 본 발명의 여러 실시형태에 따라 도 1의 병렬 기계를 프로그래밍하도록 구성된 이미지로 소스 코드(source code)를 변환하는 컴파일러를 위한 방법의 일례를 도시한 도면; Figure 6 is a view showing an example of a method for a compiler that converts a source code (source code) to the image that is configured to program the parallel machine of Figure 1 according to various embodiments of the present invention;도 7은 본 발명의 여러 실시형태에 따라 구문 트리(syntax tree)를 오토마톤으로 변환하는 예시적인 방법에 포함될 수 있는 여러 동작을 도시한 도면; 7 is a diagram showing the various operations that may be included in an exemplary method of converting the syntax tree (syntax tree) in accordance with various embodiments of the present invention in the automaton;도 8은 본 발명의 여러 실시형태에 따라 구문 트리를 오토마톤으로 변환하는 방법을 도시한 도면; 8 is a view illustrating a method for converting a syntax tree as the automaton in accordance with various embodiments of the present invention;도 9는 본 발명의 여러 실시형태에 따라 특수 목적 카운터 상태를 가지는 예시적인 오토마톤을 도시한 도면; 9 is a view illustrating an exemplary automaton having a special purpose counter state according to various embodiments of the present invention;도 10은 본 발명의 여러 실시형태에 따라 특수 목적 카운터 상태를 가지는 다른 예시적인 오토마톤을 도시한 도면; 10 is a diagram illustrating another exemplary automaton having a special purpose counter state according to various embodiments of the present invention;도 11a 및 도 11b는 본 발명의 여러 실시형태에 따른 예시적인 오토마톤을 도시한 도면; Figure 11a and Figure 11b is a view illustrating an exemplary automaton, according to various embodiments of the present invention;도 12는 본 발명의 여러 실시형태에 따라 무 접두사 조건(no prefix condition)를 충족하지 않는 양화(quantification)를 가지는 regex에 대한 예시적인 오토마톤을 도시한 도면; Figure 12 is a diagram illustrating an exemplary automaton of the regex having a prefix-free conditions (no prefix condition) Hydrangea (quantification) that do not meet in accordance with various embodiments of the present invention;도 13a 내지 도 13c는 본 발명의 여러 실시형태에 따라 언롤링된(unrolled) 양화를 위한 예시적인 오토마톤을 도시한 도면; Figure 13a to Figure 13c is a diagram showing an exemplary automaton for unloading the rolled positive (unrolled) according to various embodiments of the present invention;도 14a 내지 도 14b는 본 발명의 여러 실시형태에 따라 오토마톤의 진입 차수(in-degree)를 제한하는 일부로서 상태 분할을 도시한 도면; Figure 14a to Figure 14b is a view showing the state division as part of limiting the entry order (in-degree) of the automaton in accordance with various embodiments of the present invention;도 15a 및 도 15b는 본 발명의 여러 실시형태에 따른 예시적인 네트리스트(netlist)를 도시한 도면; Figs. 15a and 15b shows an exemplary netlist (netlist), according to various embodiments of the present invention;도 16은 본 발명의 여러 실시형태에 따라 폰 노이만 아키텍처(Von Nuemann architecture)를 가지는 컴퓨터의 일례를 도시한 도면. 16 is a view showing an example of a computer having a von Neumann architecture (Von Nuemann architecture) in accordance with various embodiments of the present invention.

이하 상세한 설명과 도면은 이 기술 분야에 통상의 지식을 가진 자로 하여금 본 발명을 실시할 수 있게 하는 특정 실시형태를 충분히 예시한다. The following detailed description and the drawings illustrate specific embodiments to enable the present invention can be carried out as one of ordinary skill in the art fully.다른 실시형태는 구조적, 논리적, 전기적 공정, 및 다른 변화를 포함할 수 있다. Other embodiments may include structural, logical, electrical, process, and other changes.일부 실시형태의 부분과 특징은 다른 실시형태의 것에 포함되거나 이를 대체할 수 있다. Parts and features of some embodiments may be included in or to replace it in another embodiment.청구범위에 제시된 실시형태는 이 청구범위의 모든 이용가능한 균등물을 포함한다. Embodiment set forth in the claims includes all available equivalents of the claims.

병렬 기계(100)는 병렬 기계(100)에 프로그램(예를 들어, 이미지)을 로딩하기 위해 프로그래밍 인터페이스(111)를 더 포함할 수 있다. Parallel machine 100 may further include a programming interface 111 to load a program (e. G., Images) on the parallel machine (100).이미지는 일반 목적 요소(102)의 상태를 프로그래밍(예를 들어, 설정)할 수 있다. Images may program the state of the general purpose element 102 (e.g., set).즉, 이미지는 주어진 입력에 특정 방식으로 반응하도록 일반 목적 요소(102)를 구성할 수 있다. That is, the image may constitute the general purpose element 102 to respond in a particular way for a given input.예를 들어, 일반 목적 요소(102)는 데이터 입력 포트(110)에 문자 'a'가 수신될 때 하이 신호를 출력하도록 설정될 수 있다. For example, a general purpose element 102 can be set to output a high signal when the data input port 110, the character 'a' is received.일부 예에서, 병렬 기계(100)는 일반 목적 요소(102)의 동작 타이밍을 제어하는 클록 신호를 사용할 수 있다. In some instances, the parallel machine 100 may use a clock signal for controlling operation timing of a general purpose element 102.일부 실시형태에서, 데이터 입력 포트(110)에 수신된 데이터는 시간에 따라 수신된 고정된 데이터 세트 또는 한 번에 모두, 또는 시간에 따라 수신된 데이터의 스트림을 포함할 수 있다. In some embodiments, the received data to the data input port 110 may include a stream of all of the received data, or depending on the time in the fixed data set or a time according to the received time.데이터는 병렬 기계(100)에 연결된 데이터베이스, 센서, 네트워크 등과 같은 임의의 소스로부터 수신되거나 이 소스에 의해 생성될 수 있다. Data may be generated by the received from any source, or a source such as a database associated with the sensor, data on the parallel machine (100).

일례에서, 병렬 기계(100)에 로딩될 이미지는, 일반 목적 요소(102)의 상태를 설정하고 프로그래밍가능한 스위치(108)를 프로그래밍하고 병렬 기계(100) 내 특수 목적 요소(112)를 구성하기 위한 복수의 정보 비트(bit)를 포함한다. In one example, the image to be loaded in parallel machines 100, set the state of the general purpose element 102, and a programmable switch 108, the programming and parallel machine 100 for configuring within special-purpose element 112 to and a plurality of information bits (bit).일례에서, 이미지는 병렬 기계(100)에 로딩되어 병렬 기계(100)를 특정 입력에 기초하여 원하는 출력을 제공하도록 프로그래밍할 수 있다. In one example, the image may be programmed to provide a desired output based on a parallel machine 100 are loaded into the parallel machine 100 to a particular input.출력 포트(114)는 입력 포트(110)에 수신된 데이터에 대한 일반 목적 요소(102)의 반응에 기초하여 병렬 기계(100)로부터 출력을 제공할 수 있다. The output port 114 may provide an output from the parallel machine 100 based on the reaction products of general purpose element 102 on the data received on the input port 110.출력 포트(114)로부터 출력은 주어진 패턴의 매치(match)를 나타내는 단일 비트, 복수의 패턴과 매치 및 비-매치를 나타내는 복수의 비트를 포함하는 워드(word), 및 주어진 순간에 모든 또는 특정 일반 목적 요소(102)의 상태에 대응하는 출력 벡터(output vector)를 포함할 수 있다. Output from the output port 114 is a single bit, a plurality of pattern matching and the ratio indicative of a match (match) in the given pattern-word (word) containing a plurality of bits indicative of a match, and all or certain general at a given moment It may include an output vector (output vector) corresponding to the state of the target element 102. the

도 3은 블록(202)의 일례를 도시한다. Figure 3 illustrates an example of block 202.블록(202)은 프로그래밍가능한 블록 내부 스위치(208)와 서로 선택적으로 연결될 수 있는 복수의 행(206)을 포함할 수 있다. Block 202 may include a plurality of lines 206 that can be connected with each other selectively programmable block internal switch 208.추가적으로, 행(206)은 블록간 스위치(203)로 다른 블록(202) 내 다른 행(206)에 선택적으로 연결될 수 있다. Additionally, line 206 may optionally be connected to the switch 203, the other blocks 202 in the other row (206) to cross block.일례에서, 버퍼(201)는 블록간 스위치(203)로/로부터 신호 타이밍을 제어하기 위해 포함된다. In one example, the buffer 201 is included for controlling a timing signal from a switch 203 between the block /.행(206)은 본 명세서에서 GOT(groups of two)(210)라고 지칭되는 요소의 쌍으로 구성된 복수의 SME(204, 205)를 포함한다. The line 206 includes a plurality of the SME (204, 205) consisting of a pair of elements to be referred to as GOT (groups of two) (210) herein.일례에서, 블록(202)은 16개의 행(206)을 포함한다. In one example, the block 202 includes 16 rows of 206.

도 4는 행(206)의 일례를 도시한다. Figure 4 illustrates an example of a line 206. TheGOT(210)는 프로그래밍가능한 행 내부 스위치(212)에 의해 행(206) 내 다른 GOT(210) 및 임의의 다른 요소(224)에 선택적으로 연결될 수 있다. GOT (210) may be selectively coupled to the line 206 within the other GOT (210) and any other element (224) by a programmable row switch 212.GOT(210)는 블록 내부 스위치(208)로 다른 행(206) 내 다른 GOT(210)에 더 연결되거나 또는 블록간 스위치(203)로 다른 블록(202) 내 다른 GOT(210)에 더 연결될 수 있다. GOT 210 will block the internal switch 208, the other line 206 can further be connected to my other GOT other block 202 to the switch 203 between the further connection or block the 210 different GOT 210 within a have.일례에서, GOT(210)는 제1 및 제2 입력(214, 216)과 출력(218)을 구비한다. In one example, the GOT (210) has a first and a second input (214, 216) and the output (218).제1 입력(214)은 GOT(210)의 제1 SME(204)에 연결되고, 제2 입력(214)은 GOT(210)의 제2 SME(204)에 연결된다. The first input 214 is connected to the first SME (204) of GOT (210), a second input 214 is connected to the first SME (204) of GOT (210).

일례에서, 행(206)은 제1 및 제2 복수의 행 상호연결 전도체(220, 222)를 포함한다. In one example, the row 206 including the first and second plurality of row interconnect conductors (220, 222).일례에서, GOT(210)의 입력(214, 216)은 하나 이상의 행 상호연결 전도체(220, 222)에 연결될 수 있고, 출력(218)은 하나의 행 상호연결 전도체(220, 222)에 연결될 수 있다. In one example, it may be connected to the input (214, 216) has at least one row interconnect conductors (220, 222) of GOT (210), the output 218 may be coupled to a row interconnect conductors (220, 222) have.일례에서, 제1 복수의 행 상호연결 전도체(220)는 행(206) 내 각 GOT(210)의 각 SME(204)에 연결될 수 있다. In one example, the first plurality of row interconnect conductors 220 may be connected to each SME (204) of the line 206 within each GOT (210).제2 복수의 행 상호연결 전도체(222)는 행(206) 내 각 GOT(210)의 하나의 SME(204)에 연결될 수 있으나, GOT(210)의 다른 SME(204)에는 연결될 수 없다. A second plurality of row interconnect conductors 222, but can be connected to one of the SME (204) of the line 206 within each GOT (210), it can not be connected other SME (204) of GOT (210).일례에서, 제2 복수의 행 상호연결 전도체(222)의 제1 절반(half)은 행(206) 내 SME(204)(각 GOT(210)로부터 하나의 SME(204))의 제1 절반에 연결될 수 있고, 제2 복수의 행 상호연결 전도체(222)의 제2 절반은 행(206) 내 SME(204)(각 GOT(210)로부터 다른 SME(204))의 제2 절반에 연결될 수 있다. In one example, the first half (half) of the second plurality of row interconnect conductors 222 to the first half of line 206 within the SME (204) (one of the SME (204) from each of GOT (210)) may be connected, the second half of the second plurality of row interconnect conductors 222 may be connected to the second half of line 206 within the SME (204) (the other SME (204) from each of GOT (210)) .제2 복수의 행 상호연결 전도체(222)와 SME(204, 205) 사이에 제한된 연결은 본 명세서에서 "패리티(parity)"라고 지칭된다. The limited connectivity between the second plurality of row interconnect conductors 222 and SME (204, 205) is referred to as "parity (parity)" herein.

도 5는 GOT(210)의 일례를 도시한다. Figure 5 illustrates an example of GOT (210).GOT(210)는, 입력(214, 216)을 가지고, OR 게이트(230) 및 3대1 다중화기(multiplexer)(242)에 연결된 출력(226, 228)을 가지는 제1 SME(204) 및 제2 SME(205)를 포함한다. GOT (210) is, with the input (214, 216), OR gate 230, and the 3-to-1 multiplexer of claim 1, SME (204) having an output (226, 228) connected to the (multiplexer) (242) and the 2 includes an SME (205).3대1 다중화기(242)는 GOT(210)의 출력(218)을 제1 SME(204), 제2 SME(205), 또는 OR 게이트(230)에 연결하도록 설정될 수 있다. 3-to-1 multiplexer 242 may be set to connect the output 218 of the GOT (210) of claim 1, SME (204), the 2 SME (205), or the OR gate 230.OR 게이트(230)는 두 출력(226, 228)을 서로 연결하여 GOT(210)의 공통 출력(218)을 형성하는데 사용될 수 있다. OR gate 230 may be used by the two outputs (226, 228) connected to each other to form a common output 218 of the GOT (210).일례에서, 제1 및 제2 SME(204, 205)는 전술된 바와 같이 패리티를 나타내며, 여기서 제1 SME(204)의 입력(214)은 행 상호연결 전도체(222)의 일부에 연결될 수 있고, 제2 SME(205)의 입력(216)은 다른 행 상호연결 전도체(222)에 연결될 수 있다. In one example, the first and the 2 SME (204, 205) represents the parity, as described above, in which the input 214 of the first SME (204) can be connected to a part of row interconnect conductors 222, a second input 216 of the SME (205) may be connected to another interconnection line conductor 222. the일례에서, GOT(210) 내 2개의 SME(204, 205)는 어느 하나 또는 둘 모두의 스위치(240)를 설정하는 것에 의해 자체적으로 캐스케이드연결(cascaded)되고 및/또는 루프백(looped back)될 수 있다. In one example, GOT (210) within two SME (204, 205) are themselves in a cascade connected (cascaded) by setting the switch 240 in either or both and / or loop-back may be (looped back) have.SME(204, 205)는 SME(204, 205)의 출력(226, 228)을 다른 SME(204, 205)의 입력(214, 216)에 연결하는 것에 의해 캐스케이드연결될 수 있다. SME (204, 205) may be connected by a cascade connection to the input (214, 216) of the output (226, 228) the other SME (204, 205) of the SME (204, 205).SME(204, 205)는 출력(226, 228)을 자기 자신의 입력(214, 216)에 연결하는 것에 의해 자체적으로 루프백될 수 있다. SME (204, 205) may be a loopback by itself by connecting the output (226, 228) to its own input (214, 216).따라서, 제1 SME(204)의 출력(226)은 제1 SME(204)의 입력(214) 및 제2 SME(205)의 입력(216) 중 어느 것에도 연결되지 않거나 이들 중 어느 하나 또는 둘 모두에 연결될 수 있다. Thus, either or both of the outputs 226 or be connected in any of the input 216 of the input 214 and the 2 SME (205) of claim 1 SME (204) thereof 1 SME (204) It can be connected to both.

일례에서, 상태 기계 요소(204, 205)는 검출 라인(234)과 병렬 연결된 동적 랜덤 액세스 메모리(DRAM)에 종종 사용된 것과 같은 복수의 메모리 셀(232)을 포함한다. In one example, the state machines (204, 205) includes a plurality of memory cells 232, such as that often used in dynamic random access memory (DRAM) coupled in parallel to the detection line 234.하나의 이러한 메모리 셀(232)은 하이 또는 로우 값(예를 들어, 1 또는 0)에 대응하는 것과 같은 데이터 상태로 설정될 수 있는 메모리 셀을 포함한다. One such memory cell 232 includes a memory cell that can be set to the data state, such as those corresponding to the high or low value (e.g., 1 or 0).메모리 셀(232)의 출력은 검출 라인(234)에 연결되고, 메모리 셀(232)의 입력은 데이터 스트림 라인(236) 상의 데이터에 기초하여 신호를 수신한다. The output of the memory cell 232 is connected to a detection line 234, the input of the memory cell 232 receives the signal on the basis of the data on the data stream line 236. The일례에서, 데이터 스트림 라인(236)의 입력은 메모리 셀(232) 중 하나를 선택하도록 디코딩된다. In one example, the input line of the data stream 236 is decoded to select one of the memory cells (232).선택된 메모리 셀(232)은 저장된 데이터 상태를 검출 라인(234) 상에 출력으로 제공한다. The selected memory cell 232 is provided as an output on detecting a stored state of data line 234.예를 들어, 데이터 입력 포트(209)에서 수신된 데이터는 디코더(미도시)에 제공될 수 있고, 디코더는 데이터 스트림 라인(236) 중 하나를 선택할 수 있다. For example, the data received at data input port 209 may be provided to a decoder (not shown), the decoder can select one of the data stream line 236. The일례에서, 디코더는 ACSII 문자를 256개의 비트 중 하나로 변환할 수 있다. In one example, the decoder may convert the ACSII character in one of the 256 bits.

그리하여, 메모리 셀(232)이 하이 값으로 설정되고 데이터 스트림 라인(236) 상의 데이터가 메모리 셀(232)에 대응할 때 메모리 셀(232)은 검출 라인(234)에 하이 신호를 출력한다. Thus, the memory cells of memory cell 232, when 232 is set to the high value of the data on the data stream line 236 corresponds to a memory cell 232 outputs a high signal on the detection line 234.데이터 스트림 라인(236) 상의 데이터가 메모리 셀(232)에 대응하고 메모리 셀(232)이 로우 값으로 설정될 때 메모리 셀(232)은 검출 라인(234)에 로우 신호를 출력한다. The data on the data stream line 236 corresponds to the memory cell 232 and memory cell 232. When memory cell 232 is set to a low value, and outputs a low signal on the detection line 234.메모리 셀(232)로부터 검출 라인(234) 상으로의 출력은 검출 회로(238)에 의해 센싱된다. The output of the phase detection line 234 from the memory cell 232 is sensed by the detection circuit 238. The일례에서, 입력 라인(214, 216) 상의 신호는 각 검출 회로(238)를 활성(active) 상태 또는 비활성(inactive) 상태로 설정한다. In one example, the signal on the input line (214, 216) sets the angle detecting circuit 238 to the active (active) state or in an inert (inactive) state.비활성 상태로 설정될 때 검출 회로(238)는 각 검출 라인(234) 상의 신호에 상관없이 각 출력(226, 228)에 로우 신호를 출력한다. When it is set to an inactive state detection circuit 238 outputs a low signal to each output (226, 228) regardless of the signal on each detection line (234).활성 상태로 설정될 때, 검출 회로(238)는 각 SME(204, 205)의 메모리 셀(234) 중 하나로부터 하이 신호가 검출될 때 각 출력 라인(226, 228)에 하이 신호를 출력한다. When it is set to the active state, the detection circuit 238 outputs a high signal to each of the output lines (226, 228) when a high signal is detected from one of the memory cells 234 of each SME (204, 205).활성 상태에 있을 때, 검출 회로(238)는 각 SME(204, 205)의 메모리 셀(234) 전부로부터 신호가 로우일 때 각 출력 라인(226, 228) 상에 로우 신호를 출력한다. When in the active state, the detection circuit 238 outputs a low signal on the respective output lines (226, 228) when the signal is low from all the memory cells 234 of each SME (204, 205).

일례에서, SME(204, 205)는 256개의 메모리 셀(232)을 포함하며, 각 메모리 셀(232)은 상이한 데이터 스트림 라인(236)에 연결된다. In one example, SME (204, 205) includes a memory cell 256 (232), each memory cell 232 is connected to a different data stream, line 236.따라서, SME(204, 205)는 데이터 스트림 라인(236) 중 선택된 하나 이상의 것이 하이 신호를 가질 때 하이 신호를 출력하도록 프로그래밍될 수 있다. Therefore, SME (204, 205) may be at least a selected one of the data stream line 236 can be programmed to output a high signal when it has a high signal.예를 들어, SME(204)는 제1 메모리 셀(232)(예를 들어, 비트 0)을 하이로 설정하게 하고 모든 다른 메모리 셀(232)(예를 들어, 비트 1 내지 255)을 로우로 설정하게 할 수 있다. For example, the SME (204) is a first memory cell 232 (e. G., Bit 0) to be set high, and all other memory cells 232 (e.g., bit 1 to 255) to the low It can be set up.각 검출 회로(238)가 활성 상태에 있을 때, SME(204)는 비트 0에 대응하는 데이터 스트림 라인(236)이 하이 신호를 가질 때 출력(226)에 하이 신호를 출력한다. When each detector circuit 238 is active, SME (204) outputs a high signal on output 226 when the data stream line 236 corresponding to bit 0 is to have a high signal.다른 예에서, SME(204)는 적절한 메모리 셀(232)을 하이 값으로 설정하는 것에 의해 다수의 데이터 스트림 라인(236) 중 하나가 하이 신호를 가질 때 하이 신호를 출력하도록 설정될 수 있다. In another example, SME (204) is one of a plurality of data stream line 236 by setting the appropriate memory cell 232 to a high value can be set to output a high signal when it has a high signal.

일례에서, 메모리 셀(232)은 연관된 레지스터로부터 비트를 판독하는 것에 의해 하이 또는 로우 값으로 설정될 수 있다. In one example, the memory cell 232 can be set to a high or low value by reading a bit from an associated register.따라서, SME(204)는 컴파일러에 의하여 생성된 이미지를 레지스터에 저장하고 레지스터 내 비트를 연관된 메모리 셀(232)에 로딩하는 것에 의해 프로그래밍될 수 있다. Therefore, SME (204) may be programmed by storing the images generated by the compiler in a register and loaded to the bits in the memory cells 232 associated with the registers.일례에서, 컴파일러에 의해 생성된 이미지는 하이 및 로우(예를 들어, 1 및 0) 비트의 바이너리 이미지(binary image)를 포함한다. In one example, the images generated by the compiler containing the high and low (e.g., 1 and 0), the binary image of the bit (binary image).이미지는 SME(204, 205)를 캐스케이드연결하는 것에 의해 FSM으로 동작하도록 FSM 엔진(200)을 프로그래밍할 수 있다. Images may program the FSM engine 200 to operate in FSM by cascade connecting the SME (204, 205).예를 들어, 제1 SME(204)는 검출 회로(238)를 활성 상태로 설정하는 것에 의해 활성 상태로 설정될 수 있다. For example, the SME 1 (204) may be set as active by setting the detection circuit 238 to the active state.제1 SME(204)는 비트 0에 대응하는 데이터 스트림 라인(236)이 하이 신호를 가질 때 하이 신호를 출력하도록 설정될 수 있다. Claim 1 SME (204) it may be set to the data stream line 236 corresponding to bit 0 so as to output a high signal when it has a high signal.제2 SME(205)는 초기에 비활성 상태로 설정될 수 있으나, 활성일 때 비트 1에 대응하는 데이터 스트림 라인(236)이 하이 신호를 가질 때 하이 신호를 출력하도록 설정될 수 있다. Claim 2 SME (205) may be initially set to the disabled state. However, the active line data stream 236 corresponding to a bit 1 when the number to be set to output a high signal when it has a high signal.제1 SME(204) 및 제2 SME(205)는 제1 SME(204)의 출력(226)을 제2 SME(205)의 입력(216)에 연결하도록 설정하는 것에 의해 캐스케이드연결될 수 있다. Claim 1 SME (204) and the 2 SME (205) may be connected to the cascade by setting so as to connect the output 226 of claim 1 SME (204) to an input (216) of claim 2 SME (205).따라서, 하이 신호가 비트 0에 대응하는 데이터 스트림 라인(236)에서 센싱될 때, 제1 SME(204)는 출력(226)에 하이 신호를 출력하고 제2 SME(205)의 검출 라인(238)을 활성 상태로 설정한다. Thus, when a high signal to be sensed from the data stream, line 236 corresponding to the bit 0, a 1 SME (204) is a detection line 238, a high signal output and claim 2 SME (205) to the output (226) and sets the active.하이 신호가 비트 1에 대응하는 데이터 스트림 라인(236)에서 센싱되면, 제2 SME(205)는 다른 SME(205)를 활성화시키거나 FSM 엔진(200)으로부터 출력하기 위해 출력(228)에 하이 신호를 출력한다. When a high signal sensed from the data stream, line 236 corresponding to bit 1, claim 2 SME (205) is a high signal on the output 228 to activate the other SME (205) or to the output from the FSM engine 200 the outputs.

블록(604)에서, 구문 트리는 오토마톤으로 변환된다. In block 604, the syntax tree is converted to the automaton.일례에서, 오토마톤은 FSM의 소프트웨어 모델을 포함하고, 이에 따라 결정론적(deterministic) 또는 비결정론적인 것으로 분류될 수 있다. In one example, the automaton may be a software model of the FSM, thereby classified as being of deterministic (deterministic) or non-deterministic.결정론적 오토마톤은 주어진 시간에 단일 실행 경로를 가지는 반면, 비 결정론적 오토마톤은 다수의 동시 실행 경로를 구비한다. Whereas deterministic automata are executed with a single path at a given time, a non-deterministic automaton is provided with a large number of concurrent execution paths.오토마톤은 복수의 상태를 포함한다. The automaton comprises a plurality of states.오토마톤은 노드에 의해 표현될 수 있는 복수의 상태를 포함한다. The automaton comprises a plurality of states that can be represented by a node.구문 트리를 오토마톤으로 변환하기 위하여, 구문 트리에서 오퍼레이터 및 오퍼레이터들 사이의 관계는 오토마톤의 상태들 사이의 (방향성 에지(directed edge)에 의해 표현된) 전이를 가지는 (노드에 의해 표현된) 상태로 변환된다. (Represented by a node) in order to convert the syntax tree into the automaton, the relationship between the operator and the operator in the context tree has a (represented by the directional edge (directed edge)) between the states of the automaton transition It is converted to the state.일례에서, 오토마톤은 FSM 엔진(200)의 하드웨어에 부분적으로 기초하여 변환될 수 있다. In one example, the automaton can be converted based in part on the hardware of the FSM engine 200.

일례에서, 오토마톤의 입력 심볼은 알파벳 심볼, 부호 0 내지 9 및 다른 프린트가능한 문자를 포함한다. In one example, the input symbols of the automaton includes a symbol alphabet, numerals 0 to 9 and other printable characters.일례에서, 입력 심볼은 바이트 값 0 내지 255를 포함하여 이 바이트 값에 의해 표현된다. In one example, the input symbol is represented by two bytes, including a byte value from 0 to 255.일례에서, 오토마톤은 그래프의 노드(node)들이 상태의 세트에 대응하는, 방향성 그래프(directed graph)로 표현될 수 있다. In one example, the automaton can be represented as a node (node) are directional graphs (directed graph) corresponding to the set of states of the graph.일례에서, 오토마톤에 의해 허용된(예를 들어, 매칭된) 데이터는 오토마톤으로 순차적으로 입력될 때 최종 상태에 도달하는 모든 가능한 문자 데이터의 세트이다. In one example, as permitted by the automaton (e.g., the matched) data is a set of all possible character data reaching the final state when the input to the automaton sequentially.오토마톤에 의해 허용된 데이터에서 각 심볼은 시작 상태로부터 하나 이상의 최종 상태로 경로를 추적한다. Each symbol in the data accepted by the automaton will trace a path to one or more final states from the start state.

일례에서, 오토마톤은 일반 목적 상태 및 특수 목적 상태를 포함한다. In one example, the automaton includes a general purpose and special purpose state condition.일반 목적 상태 및 특수 목적 상태는 컴파일러가 기계 코드를 생성하고 있는 타깃 디바이스에 의하여 지원되는 일반 목적 요소 및 특수 목적 요소에 대응한다. General purpose and special purpose state condition is to compiler corresponding to the general purpose and special purpose component element supported by the target device, which generates machine code.상이한 유형의 타깃 디바이스는 상이한 유형의 일반 목적 요소 및 하나 이상의 상이한 유형의 특수 목적 요소를 지원할 수 있다. Target devices of different types may support a general-purpose components and special-purpose elements in one or more different type of different types.일반 목적 요소는 일반적으로 넓은 범위의 기능을 구현하는데 사용될 수 있는 반면, 특수 목적 요소는 일반적으로 더 좁은 범위의 기능을 구현하는데 사용될 수 있다. General-purpose elements, while normally that can be used to implement a wide range of functions in, special purpose elements may generally be used to implement the functionality of the narrower range.그러나, 일례에서, 특수 목적 요소는 예를 들어 좁은 범위의 기능에서 더 우수한 효율을 달성할 수 있다. However, in one example, the special purpose elements, for example, it is possible to achieve better efficiency in the function of the narrow range.따라서, 특수 목적 요소는 예를 들어 타깃 디바이스에서 특정 기능을 구현하는데 필요한 기계 자원 또는 기계 사이클을 감소시키는데 사용될 수 있다. Accordingly, special purpose elements may be used to reduce the resources machine or machine cycles required to implement a specific function in the target device, for example.일부 예에서, 타깃 디바이스는 단지 특수 목적 요소를 지원하며, 여기서 다수의 상이한 유형의 특수 목적 요소들이 지원된다. In some instances, the target device may only support the special purpose elements, and a plurality of special-purpose elements of different types are supported here.

컴파일러가 FSM 엔진(200)의 기계 코드를 생성하고 있는 예에서, 일반 목적 상태는 SME(204, 205)에 대응할 수 있고, 이에 따라 일반 목적 상태는 본 명세서에서 "SME 상태"라고 지칭된다. In the example compiler that generates machine code for the FSM engine 200, a general purpose status may correspond to the SME (204, 205), thus general purpose condition is referred to as "SME state" in the present specification.나아가, 컴파일러가 FSM 엔진(600)의 기계 코드를 생성하고 있을 때 특수 목적 상태는 카운터(224)에 대응할 수 있고, 이에 본 명세서에서 "카운터 상태"라고 지칭된다. Moreover, a special purpose state when the compiler may generate machine code and the FSM engine 600 may correspond to a counter 224, and thus is referred to herein as "counter state".일례에서, 오토마톤에서 SME 상태는, SME로 맵핑되지 않는 오토마톤의 시작 상태를 제외하고는, FSM 엔진(200)에서 SME(예를 들어, SME(204, 205))로 1대1 맵핑을 한다. In one example, SME status automaton is in and is FSM engine 200, except for the start state of the automaton is not mapped to the SME SME (e.g., SME (204, 205)) for a one-to-one mapped to the do.카운터(224)는 카운터 상태로 1대1 맵핑을 할 수도 있고 또는 하지 않을 수도 있다. Counter 224 may or may not also be a one-to-one mapping to the counter and state or not.

일례에서, 입력 심볼 범위 외 특수 전이 심볼이 오토마톤에서 사용될 수 있다. In one example, the input symbol out of range special transition symbol may be used in the automaton.이들 특수 전이 심볼은 예를 들어, 특수 목적 요소(224)의 사용을 가능하게 하는데 사용될 수 있다. These special transition symbol, for example, may be used to enable the use of special-purpose element 224.나아가, 특수 전이 심볼은 입력 심볼과는 다른 것에서 발생하는 전이를 제공하는데 사용될 수 있다. Furthermore, special transition symbol may be used to provide a transition to occur from the other input symbols.예를 들어, 특수 전이 심볼은 제2 상태와 제3 상태 모두가 인에이블될 때 제1 상태가 인에이블되는 (예를 들어, 전이되는) 것을 나타낼 수 있다. For example, a special transition symbol may indicate (e.g., a transition) is the first state is enabled when the enable both the second state and the third state.따라서, 제1 상태는 제2 상태와 제3 상태 모두가 활성화될 때 활성화되며, 제1 상태로의 전이는 입력 심볼에 직접 종속하지 않는다. Thus, the first state is activated when both the first state and the third state activation, the transition to the first state does not depend directly on the input symbols.특히, 제2 상태와 제3 상태 모두가 인에이블될 때 제1 상태가 인에이블되는 것을 나타내는 특수 전이 심볼은 예를 들어 특수 목적 요소(224)로서 부울리안 논리에 의하여 수행되는 부울리안 AND 함수를 나타내는데 사용될 수 있다. In particular, the second state and the third the Boolean AND function to state all the time the enable special transition symbol to indicate that the first state is enabled, for example, performed by the Boolean logic as the special purpose elements 224 It can be used to represent.일례에서, 특수 전이 심볼은 카운터 상태가 제로에 도달하여 다운스트림 상태로 전이하는 것을 나타내는데 사용될 수 있다. In one example, a special symbol can be used to indicate transition to the state counter reaches zero, which transition to the downstream condition.

블록(608)에서, 오토마톤은 네트리스트로 변환된다. In block 608, the automaton is converted into a net list.오토마톤을 네트리스트로 변환하는 것은 오토마톤의 상태를 FSM 엔진(200)의 하드웨어 요소(예를 들어, SME(204, 205), GOT(210), 특수 목적 요소(224))의 인스턴스(instance)로 맵핑하며, 인스턴스들 사이의 연결을 결정한다. The conversion of the automaton into a netlist hardware elements of the FSM engine 200, the state of the automaton (e.g., SME (204, 205), GOT (210), a special purpose element 224) an instance (instance of ) and mapped to, and determines the connections between the instances.일례에서, 네트리스트는 복수의 인스턴스를 포함하며, 각 인스턴스는 FSM 엔진(200)의 하드웨어 요소에 대응한다(예를 들어, 이 하드웨어 요소를 나타낸다). In one example, the net list includes a plurality of instances, each instance corresponding to the hardware elements of the FSM engine 200 (e.g., represents the hardware component).각 인스턴스는 다른 인스턴스에 연결하기 위한 하나 이상의 연결점(이는 "포트(port)"라고도 지칭됨)을 구비할 수 있다. Each instance at least one connection point for connecting to the other instances may be provided with a (which is also referred to as "port (port)").네트리스트는 인스턴스에 대응하는 하드웨어 요소를 연결하는 전도체에 대응하는(예를 들어, 전도체를 나타내는) 인스턴스의 포트들 사이에 복수의 연결을 더 포함한다. The net list further comprises a plurality of connections between the corresponding to the conductor connecting the hardware component corresponding to the port instance of the instance (e. G., Indicating a conductor).일례에서, 네트리스트는 상이한 유형의 하드웨어 요소에 대응하는 상이한 유형의 인스턴스를 포함한다. In one example, the net list includes an instance of a different type that corresponds to the hardware elements of different types.예를 들어, 네트리스트는 일반 목적 하드웨어 요소에 대응하는 일반 목적 인스턴스와, 특수 목적 하드웨어 요소에 대응하는 특수 목적 인스턴스를 포함할 수 있다. For example, the net list may comprise a special purpose instance for the general purpose instance, a special purpose hardware component corresponding to the general purpose hardware components.일례로서, 일반 목적 상태는 일반 목적 인스턴스로 변환될 수 있고, 특수 목적 상태는 특수 목적 인스턴스로 변환될 수 있다. As an example, a general purpose condition can be converted to a general purpose instance, a special purpose state may be converted into a special purpose instance.일례에서, 일반 목적 인스턴스는 SME(204, 205)의 SME 인스턴스와, SME 그룹을 포함하는 하드웨어 요소에 대한 SME 그룹 인스턴스를 포함할 수 있다. In one example, the general purpose instance may include a SME group instance for the hardware elements, including the instance of the SME SME (204, 205), SME groups.일례에서, SME 그룹 인스턴스는 GOT(210)에 대응하는 GOT 인스턴스를 포함하지만, 다른 예에서, SME 그룹 인스턴스는 3개 이상의 SME의 그룹을 포함하는 하드웨어 요소에 대응할 수 있다. In one example, SME group instance from other instances, but including GOT instance for the GOT (210), SME group instance may correspond to a hardware component comprising a group of at least 3 SME.특수 목적 인스턴스는 카운터(224)를 위한 카운터 인스턴스 및 논리 요소(224)를 위한 논리 인스턴스를 포함할 수 있다. Specialized instance may include a logic instances for instance, and the counter logic element 224 for the counter 224.GOT(210)는 2개의 SME(204, 205)를 포함하므로, GOT 인스턴스는 2개의 SME 인스턴스를 포함한다. Because GOT (210) comprises two SME (204, 205), and GOT instance comprises two SME instance.

네트리스트를 생성하기 위해, 오토마톤의 상태는, 시작 상태가 대응하는 인스턴스를 가지지 않는 것을 제외하고는, 네트리스트에서 인스턴스로 변환된다. To generate a net list, and the state of the automaton is, and is converted from a net list as an instance, except that it does not have a corresponding instance of the start state.SME 상태는 GOT 인스턴스로 변환되고, 카운터 상태는 카운터 인스턴스로 변환된다. SME status is converted to GOT instance, the counter status is converted into a counter instance.추가적으로, 제1 인스턴스로부터 제2 인스턴스로 대응하는 연결은 제1 인스턴스에 대응하는 상태로부터 제2 인스턴스에 대응하는 상태로의 전이에 대해 생성된다. Additionally, the connection corresponding to a second instance from the first instance is created for the transition to the state corresponding to the second instance from a state corresponding to the first instance.FSM 엔진(200)에서 SME(204, 205)가 GOT(210)라고 지칭된 쌍으로 그룹화되므로, 컴파일러는 SME 상태를 GOT 인스턴스의 쌍으로 그룹화될 수 있다. In the FSM engine 200 so grouped in pairs referred to as SME (204, 205) the GOT (210), the compiler may be grouped in pairs, the SME status of GOT instance.GOT(210)의 물리적 설계로 인해, 모든 SME 인스턴스가 GOT(210)를 형성하기 위해 서로 쌍으로 형성되는 것은 아니다. Due to the physical design of the GOT (210), not every instance of SME to be formed in pairs to each other to form a GOT (210).따라서, 컴파일러는 SME 상태 중 어느 것이 GOT(210)로 서로 맵핑될 수 있는 것인지를 결정하고 이 결정에 기초하여 SME 상태를 GOT 인스턴스로 쌍으로 형성한다. Therefore, the compiler determines whether any of the SME status is to be mapped to a GOT (210) is formed with a pair of SME to the GOT state instance on the basis of the decision.오토마톤을 네트리스트로 변환하는 예시적인 방법에 대한 추가적인 상세는 아래 도 15a 및 도 15b를 참조하여 후술된다. Additional details for an exemplary method of converting the automaton in the net list is described below with reference to Figs. 15a and 15b below.

블록(610)에서, 일단 네트리스트가 생성되면, 네트리스트는 네트리스트의 각 하드웨어 요소 인스턴스에 대해 타깃 디바이스(예를 들어, SME(204, 205), 다른 요소(224))의 특정 하드웨어 요소를 선택하도록 배치된다. At block 610, once the netlist is generated, the net list is the particular hardware element of the target device for each hardware component instance in the netlist (e.g., SME (204, 205), the other elements 224) It is arranged to select.본 발명의 일 실시형태에 따르면, 배치하는 것은 하드웨어 요소에 대한 일반 입력 및 출력의 제약에 기초하여 각 특정 하드웨어 요소를 선택한다. According to an aspect of the invention, placing on the basis of the constraints of the common input and output for the hardware element is selected for each specific hardware elements.

배치하는 것은 어려운 문제일 수 있고 학습법(heuristics)을 사용하여 일반적으로 해결된다. The arrangement can be a difficult problem and is solved in general by using the learning methods (heuristics).이것은 힘 방향(force directed) 기술, 파티셔닝(partitioning) 기술, 시뮬레이션된 어닐링(simulated annealing), 또는 전술된 기술의 조합과 같은 방법을 사용하여 수행될 수 있다. This can be done using the same method and a combination of the force direction (force directed) techniques, partitioning (partitioning) technology, simulated annealing (simulated annealing), or techniques described above.

일례에서, 2개의 방법이 큰 결합 최적화(combinatorial optimization) 문제를 해결하는데 사용될 수 있고; In one example, it may be used to correct this large combination of two optimization methods (combinatorial optimization) problem;이들은 시뮬레이션된 어닐링 및 다중 레벨 하이퍼 그래프 파티셔닝(multi-level hyper-graph partitioning)이다. These are the simulated annealing and multilevel hyper graph partitioning (multi-level hyper-graph partitioning).이들 방법 사이에 트레이드 오프(trade-off)는 정밀도 대 속도이다. Trade-off between these processes (trade-off) is a precision speed.시뮬레이션된 어닐링은 초고품질 배치를 생성할 수 있으나 중앙 처리 유닛(CPU) 시간에 비해 극히 값비싸다. Simulated annealing to produce high-quality second place, but very expensive compared to the value of the time the central processing unit (CPU).대조적으로, 하이퍼 그래프 파티셔닝은 한 자리수 더 빠를 수 있으나 덜 최적인 배치를 생성하는 경향이 있다. In contrast, the hyper-graph partitioning, but may be faster one digit tends to produce a less optimal placement.일례에서, 시뮬레이션된 어닐링은 타깃 하드웨어 디바이스의 필요를 충족하는 고품질의 배치를 보장하는데 사용될 수 있다. In one example, simulated annealing can be used to ensure the high quality of the batch to meet the needs of the target hardware device.다른 예에서, 하이퍼 그래프 파티셔닝이 제1 단계로 사용되고 나서 하이퍼 그래프 파티셔닝 단계에 의해 생성된 배치를 정교하게 하기 위해 시뮬레이션 어닐링 동작을 사용할 수 있다. In another example, then the hyper-graph partitioning used in the first step can be used to simulate an annealing operation in order to elaborate the layout produced by the hyper-graph partitioning step.일부 예에서 시뮬레이션된 어닐링 및 다중 레벨 하이퍼 그래프 파티셔닝의 조합을 사용하여 각 학습법의 강도를 집중시킬 수 있다. Using a combination of an annealed and multilevel hyper graph partitioning the simulation, in some instances it is possible to concentrate the intensity of each learning.

블록(612)에서, 배치된 네트리스트는 네트리스트에 의해 기술된 연결을 달성하기 위해 선택된 하드웨어 요소를 서로 연결하기 위하여 프로그래밍 가능한 스위치(예를 들어, 블록간 스위치(203), 블록 내부 스위치(208) 및 행 내부 스위치(212))에 대한 설정을 결정하도록 라우팅된다. Block 612 in, placed netlist is programmed to interconnect the hardware component selected to achieve the connection described by a netlist possible switch (e.g., a block-switch 203, the block internal switch (208 ) and the line is routed to determine the settings for the inside of the switch 212).일례에서, 프로그래밍가능한 스위치에 대한 설정은 프로그래밍가능한 스위치에 대한 설정과, 선택된 하드웨어 요소를 연결하는데 사용될 수 있는 FSM 엔진(200)의 특정 전도체를 결정하는 것에 의해 결정된다. In one example, the settings for the programmable switches is determined by determining the specific conductors of the FSM engine 200 that may be used to connect the set and, selected hardware elements of the programmable switch.라우팅은 블록(610)에서 배치하는 것보다 하드웨어 요소들 사이에 보다 특정한 연결 제한을 고려할 수 있다. Route may take into account more specific restrictions connected between one hardware component than to place in the block 610.따라서, 라우팅은 FSM 엔진(200)에 전도체의 실제 제한이 주어지면 적절한 연결을 만들기 위하여 전체적인 배치에 의하여 결정된 하드웨어 요소들 중 일부의 위치를 조절할 수 있다. Therefore, routing can control the position of some of the hardware elements determined by the overall arrangement is given the physical limits of the conductor to the FSM engine 200 to make the appropriate connections.

네트리스트가 배치되고 라우팅되면, 배치되고 라우팅된 네트리스트는 FSM 엔진(200)의 프로그래밍을 위한 복수의 비트로 변환될 수 있다. When the netlist is placed and routed, the arrangement being routed netlist may be converted to a plurality of bits for programming the FSM engine 200.복수의 비트는 본 명세서에서 이미지라 지칭된다. A plurality of bits is referred to as images in the present specification.

일부 예에서, 블록(608)에서 오토마톤을 네트리스트로 변환하기 전에, 오토마톤은 다수의 더 작은 오토마톤으로 분할되고, 각 더 작은 오토마톤은 블록(608)에서 네트리스트로 개별적으로 변환된다. In some instances, prior to converting the automaton into a netlist at block 608, the automaton is divided into a number of smaller the automaton, and each smaller automaton is transformed individually into a netlist at block 608 .블록(610)에서 배치의 복잡성은 인스턴스의 개수가 증가함에 따라 증가하므로, 오토마톤을 복수의 더 작은 오토마톤으로 분할하고, 더 작은 오토마톤을 개별적인 네트리스트로 변환하는 것은 블록(610)과 블록(612)에서 배치하고 라우팅하기 위해 더 작은 네트리스트를 제공할 수 있다. The complexity of the layout in block 610, so increased with increasing the number of instances, is to divide the automaton into a plurality of smaller automaton and to convert a smaller automaton into individual netlist block 610 and block to place and route at 612 may provide a smaller netlist.따라서, 더 작은 네트리스트를 배치하는 것은 허용가능한 구성을 결정하는데 필요한 시간을 감소시키게 할 수 있다. Therefore, there is arranged a smaller net list to thereby reduce the time required to determine an acceptable configuration.일례에서, 오토마톤은 그래프 이론을 사용하여 다수의 더 작은 오토마톤으로 분할된다. In one example, the automaton using a graph theory is divided into a number of smaller automaton.각 더 작은 오토마톤은 네트리스트로 개별적으로 변환될 수 있고(블록 608), 할당된 영역 내에 배치될 수 있다(블록 610). Each further has a small automaton can be arranged in a can be converted into a net list individually, (block 608), an allocated (block 610).따라서, 이용가능한 영역은 상이한 네트리스트로 분할되고 할당될 수 있으며 각 네트리스트는 할당된 부분 내에 개별적으로 배치된다. Thus, the available area is to be divided and assigned to the different net list and the net list, each is individually disposed in the allocated portion.전술된 바와 같이, 이용가능한 영역의 일부 부분은 미할당된 채 유지될 수 있어서 다른 네트리스트를 배치하는데 이용가능하다. As described above, it is possible to use some portion of the available area is disposed in the other netlist can be maintained while the unassigned.일례에서, 더 작은 오토마톤으로부터 형성된 각 네트리스트는 전체 처리 시간을 감소시키기 위해 병렬로 결정된 구성을 가질 수 있다. Each formed from a net list in one example, the smaller the automaton can have a configuration determined in parallel in order to reduce the overall processing time.

도 7은 구문 트리를 오토마톤으로 변환하는 컴파일러를 위한 예시적인 방법(604)에 포함될 수 있는 여러 추가적인 동작을 도시한다. Figure 7 illustrates a number of additional operations that may be included in an exemplary method 604 for the compiler to convert the syntax tree as the automaton.방법(604)은 심볼(710)을 삽입하는 동작, 구문 트리를 타깃 디바이스(720) 내에서 동작하도록 처리하는 동작, 구문 트리 요소(730)를 분류하는 동작, 비 결정론적 오퍼레이터(740)를 대체하는 동작을 포함할 수 있다. Method 604 is replace operation, the non-deterministic operator 740 for classifying operation, the syntax tree element 730 to process to operate within a target for operation, the syntax tree for inserting a symbol 710, the device 720 an operation for may include.도 7에 도시된 방법(604)은 하나 이상의 구문 트리를 하나 이상의 오토마톤으로 변환하는 동안 수행될 수 있는 여러 동작을 도시한다. The method 604 shown in Figure 7 illustrates the various operations that may be performed during the conversion of the one or more syntax trees into at least one automaton.도 7에 도시된 동작 순서는 단지 예시적인 것이며, 이 동작은 여러 순서로 수행될 수 있다. The operation procedure shown in Figure 7 is illustrative only, and the operation can be carried out in various order.추가적으로, 특정 예에서, 상이한 조합의 동작이 사용될 수 있다. Additionally, in a particular example, the behavior of different combinations may be used.

일례에서, 방법(700)은 구문 트리를 오토마톤으로 변환하는 동안 특수 전이 심볼을 오토마톤으로 삽입한다. In one example, the method 700 is a special symbol transition for converting the syntax tree as the automaton is inserted into the automaton.하나의 이러한 예에서 특수 전이 심볼은 오토마톤 상태로 1:1 맵핑되지 않는 오퍼레이터에 대응한다. A special transition symbol in this example is 1 in the automaton state: the operator does not correspond to one mapping.전술된 바와 같이 특수 전이 심볼은 특히 부울리안 연산, 카운터 및 데이터 종료(End-of-data) 기능을 위해 예비될 수 있다. Special transition symbol may be reserved for particular Boolean operation, the counter and the data end (End-of-data) function, as described above.

(720)에서 방법(700)은 타깃 하드웨어 디바이스의 제약을 감안하여 구문 트리를 조절하는 동작을 포함할 수 있다. In the method 720, 700 may include an operation to control the syntax tree in view of the constraints of the target hardware device.일례에서 타깃 하드웨어 디바이스(예를 들어, FSM 엔진(200))의 제약은 오토마톤의 구조에 제한을 부과할 수 있다. In one example the target (e.g., FSM engine 200) of the hardware device limitations may impose restrictions on the structure of the automaton.이러한 제약이 제한을 부과하는 상황에서 컴파일러는 하드웨어 제약에 순응하도록 오토마톤 내에 생성된 상태 및/또는 전이를 조절하는 동작을 변환 단계에 포함할 수 있다. In the context of such a constraint is imposed a restriction, the compiler may include an operation to control the state and / or metastasis generated in the automaton to conform to hardware limitations in the conversion step.

(730)에서, 방법(700)은 속성 세트를 사용하여 각 구문 트리를 분류하는 동작을 포함할 수 있다. In 730, the method 700 may include an operation to classify each syntax tree, using a set of attributes.일례에서, 동작은 글루시코브(Glushkov)의 방법과 같은 표준 기술 중 하나를 사용하여 분류될 수 있다. In one example, the operation can be classified using one of the standard techniques such as the method of the glue during Cove (Glushkov).

오토마톤으로 변환될 때 특정 정규 표현은 다수의 상태를 야기할 수 있다. When converted to the automaton particular regular expression it can lead to a number of conditions.다수의 상태는 구현을 위해 다수의 일반 목적 요소(102)를 사용할 수 있다. Number of states may be used a plurality of general-purpose elements 102 for implementation.상태의 수를 감소시켜 사용되는 일반 목적 요소(102)의 수를 감소시키기 위해 특수 목적 하드웨어 요소(112)는 특정 정규 표현을 구현하는데 사용될 수 있다. Special purpose hardware element 112 to reduce the number of general-purpose elements 102 that are used to reduce the number of states may be used to implement a particular regular expression.예를 들어, 표준 일반 목적 요소(102)로 변환될 때 다수의 상태를 요구할 수 있는 하나의 정규 표현은 양화 표현(quantification expression)이다. For example, a regular expression, which may require a number of states when they are converted to a standard general purpose element 102 is a positive expression (expression quantification).양화 표현은 다수회 하나 이상의 표현을 반복하는 루프 구조에 대응한다. Positive expression corresponds to a loop structure for repeating a number of times one or more expression.양화 표현은 언롤링되고 직렬인 다수의 일반 목적 상태로 구현된다. Positive expression is achieved by unrolling and a plurality of general purpose serial state.그러나, 일례에서, 카운터와 같은 특수 목적 하드웨어 요소(예를 들어, 다른 요소(112))는 양화 표현을 구현하는데 사용되는 상태의 수를 감소시키기 위해 양화 표현에 있는 반복된 표현을 이용하는데 사용될 수 있다. However, special purpose hardware elements such In one example, a counter (e. G., Another component 112) may be used to use the repeat expressed in the positive expression in order to reduce the number of states used to implement the positive expression have.

나아가, 표현 및 서브 표현 이라는 용어는 본 명세서에서 관계 설명(예를 들어, 서브 표현은 표현의 일부임)을 위한 용도로만 사용되는 것이고, 표현 및 서브 표현 이라는 용어는 임의의 특정 길이, 구문, 또는 문자의 수로 제한되는 것은 아닌 것으로 이해된다. Moreover, the expression and the term sub-expression is described relationship in the present specification will be used only for the (for example, a sub-expression is part Im of expression), expression and the term sub-expression has any particular length, the syntax, or What is the number of characters is limited to not understand.특히, 소스 코드는 다수의 문자(메타-문자 및 검색 문자를 포함함)를 포함할 수 있고, 이들 문자의 전체 세트 또는 임의의 개별 부분은 "표현"으로 고려될 수 있다. In particular, source code, a large number of characters - may comprise a (meth including the character and the search character), the entire set or any of the individual parts of these characters may be considered as "expression".예를 들어, 이하 각각, 즉 "a(bb｜d?){5, 20}c", "(b){0, 10}", "(b｜d)" 및 "b"은 표현으로 고려될 수 있다. For example, below, respectively, i.e., "a (bb |? D) {5, 20} c", "(b) {0, 10}", "(b | d)" and "b" are considered to be expressed It can be.

양화는 regex에서 "(B){n1, n2}"로 표현되고, 여기서 B는 서브 표현이고 n1 및 n2는 이전의 서브 표현이 발생할 수 있도록 허용되는 횟수를 지정하는 정수이다. Positive is represented by "(B) {n1, n2}" in the regex, where B is the sub-representation n1 and n2 is an integer that specifies the number of times allowed to occur prior to the sub-expressions.B는 본 명세서에서 반복된 서브 표현으로 지칭되는데 그 이유는 B는 n1 및 n2에 의해 지정된 횟수만큼 반복된 서브 표현이기 때문이다. B is that it is because the sub-B is represented by repeating a given number of times n1 and n2 are referred in the sub-expression repeated herein.양화 "(B){n1, n2}"와 매칭하기 위하여, 반복된 서브 표현(B)은 n1 내지 n2 횟수에 매칭되어야 한다. Foreign film "(B) {n1, n2}" and the repeated sub-expression (B) to the matching is to be matched to the number n1 to n2.예를 들어, regex "(B){5, 7}"은 서브 표현(B)이 5, 6 또는 7회에 매칭될 것을 요구한다. For example, regex "(B) {5, 7}" requires that the sub-expression (B) is to be matched to the 5, 6 or 7 times.regex "A(B){n1, n2}C"에서, 서브 표현(A)은 본 명세서에서 구동 표현으로 지칭되는데 그 이유는 서브 표현(A)이 매칭될 때 양화로 전이하기 때문이다. In regex "A (B) {n1, n2} C", the sub-expression (A) is because there is referred to as a drive expression in this specification because the transition to a positive when the matching sub-expression (A).추가적으로, 양화를 위한 카운트를 반복하고 증분시키는 것을 계속하기 위하여 양화의 반복된 서브 표현(들)은 연속적으로 매칭되어야 한다. Additionally, the repeated sub-expression (s) of the foreign film to continue to repeat the count for the positive and incremental should be continuously matched.즉, 반복된 서브 표현이 양화의 주어진 루프 동안 매칭되지 않으면, 양화는 종료한다. That is, if the repeated sub-expression is not matched for a given loop of the foreign film, foreign film ends.일례에서, 심볼 "?"은 양화에 더 대응하며, 여기서 "?" In one example, the symbol "?" May further correspond to positive, where "?"이전의 심볼은 일(one)회 또는 제로(zero)회 식별될 수 있다. Previous symbol may be identified per day (one) times or zero (zero).

타깃 디바이스가 FSM 엔진(200)이라면, 방법(800)은 특정 양화를 식별하고 이 양화를 FSM 엔진(200) 상의 카운터(224)로 맵핑할 수 있다. If the target device FSM engine 200, method 800 can identify the specific positive and mapping this foreign film to the counter 224 on the FSM engine 200.카운터(224)로 특정 양화를 구현하는 것은 상태 기계 요소(204, 205)로 양화를 구현하는 것에 비해 효율적일 수 있다. Implementing a specific positive in counter 224 may be more efficient than implementing the positive to the state machines (204, 205).따라서, FSM 엔진(200)을 위한 오토마톤과 결과 이미지는 간략화될 수 있다. Therefore, the automaton and the resulting image for the FSM engine 200 can be simplified.예를 들어, 양화를 구현하는 구문 트리의 일부는 구현하는데 다수의 SME(204, 205)를 요구할 수 있다. For example, a portion of a syntax tree that implements a foreign film may require a large number of SME (204, 205) to implement.그러나, 일례에서, 이들 양화 중 일부는 SME(204, 205)에 의해 요구되는 것보다 더 적은 상태로 카운터(224)를 사용하여 구현될 수 있다. However, in one example, some of these positives may be implemented using a counter 224, with fewer states than required by the SME (204, 205).

블록(802)에서 컴파일러는 FSM 엔진(200)에서 카운터(224)로 구현을 가능하게 하기 위해 양화에 대응하는 구문 트리의 일부를 식별한다. In block 802, the compiler identifies a portion of a syntax tree corresponding to the positive in order to enable the implementation in the FSM engine 200 to the counter 224.구문 트리의 일부가 양화에 대응하지 않으면, 방법(800)은 블록(803)으로 진행하고 여기서 일부는 SME(204, 205)로 구현하기 위해 일반 목적 상태로 변환된다. If a portion of a syntax tree will not correspond to the positive, the method 800 proceeds to a part where the block 803 is converted into a general-purpose condition to implement a SME (204, 205).구문 트리의 일부가 양화에 대응하면 양화는 식별된 부분이 카운터(224)로 구현될 수 있는지 여부를 결정하기 위해 더 분석된다. When a portion of a syntax tree corresponding to the positive positive are further analyzed to determine whether the identified section can be implemented with a counter (224).

블록(804)에서, 컴파일러가 카운터(224)로 구현될 수 있는 양화를 일단 식별하면, 컴파일러는 식별된 부분에 따응하는 구문 트리의 부분이 결정론적인지 여부를 결정한다. At block 804, once a positive identification that the compiler can be implemented with a counter 224, the compiler determines whether a portion of a syntax tree that ttaeung the identified deterministic part jeokinji.식별된 부분이 결정론적이면, 식별된 부분은 하나 이상의 카운터(224)로 구현될 수 있고, 방법(800)은 블록(806, 807)으로 진행하고, 여기서 식별된 부분은 하나 이상의 SME 상태와 함께 하나 이상의 카운터 상태로 변환된다. If the identified portion is deterministic, the identified portion may be implemented as one or more counters 224, method 800 can, together with one or more SME state the identified part, and proceeds to block (806, 807), wherein It is converted to at least one counter state.식별된 부분이 비 결정론적이면, 식별된 부분은 카운터(224)를 사용하여 구현되지 않고, 방법(800)은 블록(808)으로 진행하고, 여기서 식별된 부분은 도 13에 대하여 후술되는 하나 이상의 SME 상태를 사용하여 언롤링된다. If the identified portion of the non-deterministic, and the identified portion is not implemented with a counter 224, the method 800 is more than one is in progress and, below the part with respect to Figure 13 to identify where to block 808 using the SME status is unrolling.

일반적으로, 블록(806)과 블록(808, 810)은 양화를 오토마톤으로 변환하는 2가지 방법에 대응한다. In general, the block 806 and the block (808, 810) corresponds to two methods for converting a positive to the automaton.블록(806)에서 양화는 루프로 양화를 구현하기 위해 하나 이상의 SME 상태와 함께 하나 이상의 카운터 상태를 사용하여 변환된다. In block 806, foreign film is converted using at least one counter state, together with one or more SME state to implement the positive to the loop.블록(808, 810)에서, 양화는 SME 상태를 사용하되 카운터 상태 없이 양화를 "언롤링"하는 것에 의해 변환된다. At block (808, 810), foreign film are converted by "unrolling" foreign film without the counter state but using SME status.언롤링하는 것은 비양화 구문으로 양화를 재기록하는 것을 포함한다. The unrolling involves rewriting the foreign film in a non-positive phrase.예를 들어, regex "(b｜c){1, 2}"는 "(b｜c)(b｜c)?"으로 언롤링될 수 있다. For example, regex "(b | c) {1, 2}" may be unrolling the "| | (c b) (b c)?".언롤링의 장점은 (1) 결과적인 오토마톤이 방향성 비순환 그래프(directed acyclic graph)(DAG)이고, 분석하고 구현하기에 용이할 수 있다는 것과 (2) 결과적인 오토마톤이 특수 목적 요소 대신에 일반 목적 요소, 특히 상태 기계 요소로 구현될 수 있다는 것을 포함한다. The advantage of unrolled (1) the resulting automaton is the directed acyclic graph (directed acyclic graph) (DAG), and that it can be easy to analyze, and implement (2) the resulting automaton is normal instead of the special purpose elements including that objective factors, in particular, can be implemented as a state machine element.그러나, 언롤링된 양화를 구현하는데 사용되는 일반 목적 상태의 수, 그리하여 상태 기계 요소의 수는 n1 과 n2에 선형이다. However, the number of the number of general-purpose status and thus the state machine element that is used to implement the frozen rolled quantification is linear in n1 and n2.따라서, 상태의 수는 n1 또는 n2가 큰 수인 경우 클 수 있다. Thus, the number of states may be larger if a greater number n1 or n2.특히 실제 생활 자원이 제한되어 있어 일부 예에서 이 언롤링 기술은 제한된 카테고리의 양화에만 사용된다. In particular, the real restriction here is a living resource unrolling technique in some instances are used only to a limited category of foreign film.양화를 언롤링하는 것에 관한 보다 상세한 사항은 블록(808, 810) 및 도 13a 내지 도 13c에 대하여 후술된다. For more information relates to unrolling foreign film are described below with respect to the block (808, 810), and Figure 13a to Figure 13c.

그러나, 타깃 디바이스는 카운터(224)와 같은 카운팅 기능을 구현하도록 설계된 특수 목적 요소를 구비할 때 언롤링은 특정 경우에 회피될 수 있다. However, the target device is unrolled when provided with a special purpose component, designed to implement a counting function of the counter 224 may be avoided in certain cases.이 방법의 장점은 반복된 표현의 더 작은 개수의 사본이 오토마톤에 요구되고 이 사본의 개수는 n1과 n2에 독립적이라는 것이다. The advantage of this method is that a copy of a smaller number of iterations is required to express the number of the automaton, a copy is that independent of n1 and n2.그리하여, 상당한 자원이 절감될 수 있다. Thus, there are significant resources can be saved.예를 들어, 하나 이상의 카운터(224)는 반복된 표현(들)과 하나 이상의 카운터(224)로 루프를 생성하는 것에 의해 양화를 구현하는데 사용될 수 있다. For example, one or more counter 224 is repeated in the expression (s) and one or more counters 224 may be used to implement a foreign film by generating a loop.반복된 표현(들)이 매칭될 때마다, 카운터(224)는 증분(또는 감분)될 수 있다. Each time the Repeat expression (s) to be matched, the counter 224 may be incremented (or decremented).반복된 표현(들)은 다른 매치를 검색하도록 재활성화될 수 있다. Repeated represent (s) can be re-activated to look for another match.카운터(224)가 양화에 의해 언급된 횟수와 동일하게 증분(또는 감분)되면, 카운터(224)는 양화 이후 상태(들)를 활성화시킬 수 있다. When the same increment (or decrement) the counter 224 is noted by a positive number, the counter 224 may be activated after a positive state (s).따라서, 양화는 반복된 표현(들)을 구현하는데 사용되는 SME가 재사용되므로 더 적은 개수의 SME(204, 205)로 구현될 수 있다. Thus, since the foreign film are used to implement the repeated representation (s) SME reuse may be implemented in a less number of the SME (204, 205).그러나, 전체 오토마톤(예를 들어, 전체 구문 트리에 대응하는)의 병렬화, 즉 동시에 활성화될 수 있는 다수의 상태로 인해, 카운터(224)는 일부 예에서 전체 오토마톤의 결정론적 부분에 대응하는 양화에만 사용될 수 있다. However, the entire automaton parallelization (e.g., corresponding to a complete syntax tree), that is, due to the number of states that can be activated at the same time, the counter 224 corresponding to the deterministic portion of the total the automaton in some instances It can only be quantified.

오토마톤(900)은 상태(904)에서 시작하여, 서브 표현 "A"과 매칭할 때 상태(906)로 전이한다. Automaton 900 begins at state 904 and transitions to state 906, when matched with the sub-expression "A".상태(906)에 있는 동안 서브 표현 "B"이 매칭될 때마다 카운터 상태(902)의 입력 포트는 활성화되고 카운터 상태(902)는 일(one)만큼 증분한다. Sub-expression "B" are each time matching the input port of the counter state 902 is enabled and counter state 902. While in state 906, is incremented by one (one).추가적으로, 서브 표현 "B"이 매칭될 때마다 상태(906)는 자체적으로 활성화하고 상태(910)를 활성화시킨다. Additionally, the state 906, each time the matching sub-expression "B" is thereby self-activated and activated state (910).카운터 상태(902)가 제로에 도달하면, 출력이 활성화되고 오토마톤(900)은 서브 표현 "C"을 검색한다. If the state counter 902 reaches zero, the output is activated and the automaton (900) retrieves the sub-expression "C".이하 사이클에서 2개의 시나리오가 발생한다, 즉 제1 시나리오는 "~B"가 매칭될 때 발생한다. 2 and the generation of scenarios, that is, a first scenario in the following cycle is generated when the "~ B" be matched."~B"가 매칭되면, 카운터 상태(902)는 리셋되고 그 값은 n1으로 다시 설정된다. When the "~ B" match, the state counter 902 is reset and its value is reset to n1.따라서, 그 다음으로 서브 표현 "A"이 매칭될 때 공정은 상태(904)로부터 시작한다. Therefore, at that time, and then the sub-expression "A" be a matching process is started from the state 904.제2 시나리오에서 상태(906)의 자체 루프는 여전히 활성이고 카운터(902)의 입력 포트는 서브 표현 "B"의 매치시에 계속 트리거된다. The input port of the self-loop in the second scenario, the state 906 is still active and the counter 902 is still trigger at the time of matching of the sub-expression "B".카운터 상태(902)가 펄스 모드에서 구성되므로, 카운터 상태(902)는 출력을 다시 활성화하지 않으나 상태(906)의 자체 루프가 활성으로 유지된다. Since the state counter 902 is configured in the pulse mode, the state counter 902 is in its own loop, but not re-activate the output state 906 is maintained active.

서브 표현 "B"의 부정 버전(negated version)은 본 명세서에서 "~B"로도 지칭된다. Negative version of the sub-expression "B" (negated version) is also referred to as "~ B" herein.일례에서, 서브 표현 "B"의 부정 버전은 카운터 상태(902)의 리셋 포트를 활성화시키는데 사용된다. In one example, the negative version of the sub-expression "B" is used to activate the reset port of the counter state 902.이것은 "B"가 양화"(B){n1, n1}"의 반복된 표현이어서" B가 아닌 어떤 것(예를 들어, "B"의 부정 버전)이 (상태(906)가 일단 활성화되면) 입력에 수신될 때 양화는 종료하고 이에 따라 카운터가 리셋되기 때문이다. 따라서, 상태(910)가 활성화되면, 카운터 상태(902)는 리셋되고 양화는 서브 표현 "B"의 부정 버전이 매칭될 때 매칭되지 않는다. 일례에서, 반복된 표현(들)은 표준 오토마톤 이론을 사용하여 부정된다. (If the state 906 is once activated). This "B" is positive, "(B) {n1, n1}" Repeated expression then "anything other than B (for example," negative version of the B ") of the when receiving the input foreign film is that it is terminated and hence the counter is reset accordingly. Accordingly, when the state 910 is active, the counter state 902 is reset and positive is when a match is negative version of the sub-expression "B" do not match. in one example, the repetition representation (s) are negative with the standard theory of automaton.

단일 카운터 상태(224)가 n1이 n2일 때 양화를 구현하도록 예시되고 기술되었지만, 다수의 카운터(224)가 단일 카운터(224)에 의해 지원되는 것보다 더 큰 수를 고려하기 위하여 캐스케이드 연결될 수 있는 것으로 인식된다. Have been illustrated single counter state 224 is to implement a positive when n1 is n2 and described, a number of the counter 224 is in cascade may be connected in order to consider a larger number than supported by a single counter 224 It is recognized as.

카운터 상태(1002)는 초기에 n1으로 설정되고, 카운터 상태(1004)는 초기에 n2로 설정된다. Counter state 1002 is initially set to n1, the counter state 1004 is initially set to n2.서브 표현 "A"이 매칭될 때 오토마톤은 상태(1006)로부터 상태(1008)로 전이한다. Sub expression automaton when "A" be a matching transitions to state 1008 from state 1006.상태(1008)가 활성화되면, 카운터 상태(1002)와 카운터 상태(1004)의 입력 포트는 서브 표현 "B"이 매칭될 때마다 활성화된다. If the state 1008 is active, the input port of the counter state 1002 and the counter state 1004 is activated each time a match is sub-expression "B".따라서, 카운터 상태(1002)와 카운터 상태(1004)는 일만큼 증분된다. Thus, the state counter 1002 and the counter state 1004 is incremented by one.카운터 상태(1002)가 제로에 도달하면, 출력은 활성화되고, 오토마톤(1000)은 서브 표현 "C"의 매치를 검색하며 상태(1010)를 활성화한다. If the state counter 1002 reaches zero, the output is enabled, the automaton 1000 is the search for a match of the sub-expression "C", and enable the state 1010.서브 표현 "B"이 n1회 매치되면, 카운터 상태(1004)의 값은 n2-n1이다. When the sub-expression "B" is n1 times match, the value of the state counter 1004 is n2-n1.차후에 서브 표현 "B"이 매치될 때마다, 카운터 상태(1002)의 입력 포트는 활성화되고, 카운터 상태(1002)의 값은 제로에 있고 출력은 여전히 활성화된다. Each time subsequently the sub-expression "B" match, the input port of the counter state 1002 is active, the value of the counter state 1002 is in the zero output is still active.한편, 카운터 상태(1004)는 계속 감분된다. On the other hand, the counter state 1004 is still decremented.서브 표현 "B"이 n2회 매치되면, 카운터 상태(1004)가 제로에 도달하고 그 출력은 활성화되어 카운터 값(1002)의 리셋 포트를 구동한다. When the sub-expression "B" is n2 times match, the counter state 1004 reaches zero and its output is enabled and drives the reset port of the counter value (1002).카운터 상태(1004)에서 카운터 상태(1002)로의 레이턴시가 2개의 사이클이므로, 카운터 상태(1002)는 출력을 상태(1010)로 계속 활성화시킨다. Since the counter state 1004, the latency counter to state 1002 two cycles, the state counter 1002 is still active in the output state 1010.그 다음 사이클에서 카운터 상태(1002)는 카운터 상태(1004)의 출력으로부터 리셋되고, 출력은 카운터 상태(1002)로부터 선언되지 않는다. The counter state 1002. At the next cycle, is reset from the output of the state counter 1004, the output is not declared the counter state 1002.이하 사이클에서 2개의 시나리오가 발생한다. 2 generates the scenarios below cycle.제1 시나리오에서 "~B"가 매치된다. The "~ B" in the first scenario matches.카운터 상태(1002)와 카운터 상태(1004) 모두는 상태(1012)에 의해 리셋되고 그 값은 각각 n1과 n2로 설정된다. All counter state 1002 and the counter state 1004 is reset by the state 1012, the value is set to n1 and n2, respectively.따라서, 그 다음으로 상태(1006)가 활성이고 그 다음으로 서브 표현 "A"이 매치될 때, 상태(1008)는 활성화되고 카운터 상태(1002, 1004)는 다시 감분된다. Therefore, the next state 1006 is active and the next time a sub-expression "A" match, state 1008 is active and the counter state (1002, 1004) is decremented again.제2 시나리오에서 상태(1008)의 자체 루프는 활성화되어 유지되고 두 카운터 상태(1002, 1004)의 입력 포트가 활성화된다. The loop itself is active in state 1008 in the second scenario is maintained is enabled and the input ports of the two counter states (1002, 1004).카운터 상태(1004)가 출력을 계속 활성화하므로, 카운터 상태(1002)는 계속해서 리셋되고, 상태(1008)의 자체 루프가 활성화되는 한, 출력을 활성화하지 않는다. Since the state counter 1004 is still active, the output, the counter state 1002 continues to be reset, it does not enable one, the output is self-loop is enabled, the state (1008).

나아가, 상태(1008)가 활성화되는 동안 서브 표현 "B"의 매치는 상태(1012)를 활성화시킨다. Further, the match of the sub-expression "B" while the state 1008 is active, activates the status 1012.일단 상태(1012)가 활성화되고 "~B"가 매치되면, 카운터 상태(1002, 1004)가 리셋되고 양화는 매치되지 않는다. Once the state 1012 is active, and the "~ B" match, the counter state (1002, 1004) is reset and the foreign film are not matched."B"는 양화 "(B){n1, n2}"의 반복된 표현이므로 서브 표현 "B"의 부정 버전이 사용된다. "B" is a negative version of the foreign film "(B) {n1, n2}" because of repeated expression of the sub-expression "B" is used.따라서, 상태(1008)에서 표현 'B'은 n1 내지 n2 횟수에서 반복적으로 매칭될 수 있다. Thus, the expression 'B' in a state 1008 may be matched iteratively from n1 to n2 number of times.단일 카운터가 하한 임계값(예를 들어, n1)과 상한 임계값(예를 들어, n2)을 각각 구현하도록 예시되고 기술되었지만, 이 기술 분야에 통상의 지식을 가진 자라면 단일 카운터에 의해 지원되는 것보다 더 많은 수를 카운트하기 위하여 다수의 카운터를 캐스케이드 연결할 수 있다는 것을 인식할 수 있을 것이다. Have been illustrated, a single counter so as to implement the lower threshold value (e.g., n1) and the upper limit threshold value (e.g., n2) respectively is described, and those skilled in the art, supported by a single counter It will be recognized that the number of counters can be cascaded to connect to count the number of more than.

도 10의 오토마톤(1000)을 참조하면, 무 재진입 조건이 상태(1006)로부터 상태(1008)로의 에지는 활성화될 수 없고 카운터 상태(1002)는 활성화될 것(예를 들어, 카운터 상태(1002)가 카운팅될 것)을 요구한다. Referring to the automaton 1000 in Figure 10, non-re-entry conditions edge to state 1008. From this state 1006 can not be enabled, the counter state 1002 will be active (e.g., the counter state (1002 ) that requires to be counted).즉, 양화가 이미 처리되고 있는 동안 양화를 위한 구동 표현이 매치될 수 있는지 여부가 결정된다. That is, it is determined that the positive drive is a representation for positive while already being processed can be matched.구동 표현을 매치하는 것은 양화 직전의 상태가 양화에 대응하는 상태로 전이하는 것을 의미한다. It matches a driving expression means that the state just before the positive transition to a state corresponding to a foreign film.따라서, 양화는 카운터 상태가 반복된 표현을 여전히 처리하고 있는 동안 "재진입"할 수 있다. Therefore, foreign film may be "re-entry", while still processing a representation of the counter state repeatedly.FSM 엔진(200)의 이 예에서 카운터(224)는 임의의 주어진 시간에 단일 루프만을 구현할 수 있으므로, 루프가 이미 처리되고 있는 동안 양화로 전이하는 것은 카운터(224)로 하여금 주어진 루프 동안 부정확하게 카운트하게 할 수 있다. FSM engine counter 224. In this example, the 200 may implement only a single loop at any given time, the loop is to transition to a positive while already being processed incorrectly causes the counter 224 for a given loop count It can be made.

오토마톤(1100)은 정규 표현 abb?(b｜c){1, 2}" 에 대응하고 시작 상태(1102)와 최종 상태(1112, 1104)를 포함한다. 최종 상태는 이중 원으로 도 11a에 식별된다. 시작 상태(1102)는 초기에 활성화되어 입력 심볼 'a'에서 상태(1106)로 전이한다. 상태(1106)는 입력 심볼 'b'에서 두 상태(1108)와 상태(1110)로 전이한다. 상태(1108)는 입력 심볼 'b'에서 상태(1110)로 전이하고, 상태(1110)는 입력 심볼 'b' 또는 'c'에서 상태(1112)로 전이한다. 또한, 오토마톤(1100)은 입력 심볼 'b' 또는 'c'에서 상태(1112)로부터 상태(1104)로 전이한다. Automaton 1100 is the regular expression abb?. | And a (b c) {1, 2} "corresponds to a start state 1102 and the final state (1112, 1104) to in Figure 11a to the final state is a double circle is identified. start state 1102 is active for the initial transitions to the state 1106 at the input symbol 'a'. state 1106 transitions from input symbol 'b' to the two state 1108 and the state 1110 the status 1108 is the input symbol transition, and the state 1110, with 'b' state 1110 in the transitions to the state 1112 at the input symbol 'b' or 'c'. Moreover, the automaton (1100 ) will transition to state 1104 from state 1112 in the input symbol 'b' or 'c'.

regex "a(blbc){3}"이 카운터(224)로 구현된다면, 입력 'abbc'은 거짓으로 매치될 수 있다. regex "a (blbc) {3}" If the implementation of a counter 224, the input 'abbc' may be matched to false.예를 들어, 오토마톤(1200)은 카운터 상태(1212)를 사용하여 regex "a(blbc){3}"의 가정적 변환의 결과이다. For example, the automaton 1200 using the counter state (1212) regex "a (blbc) {3}" is the result of a hypothetical conversion.후술되는 바와 같이, 이 변환 결과는 카운터 상태(1212)의 부정확한 성능을 초래한다. As described below, the result of the conversion results in an incorrect performance of the counter state 1212.상태(1202)는 초기에 활성화되고 입력 "a"에서 상태(1202)는 상태(1204)를 활성화시킨다. State 1202 activates the initial state, and 1202 at the input "a" is active state 1204.상태(1204)가 활성화되면, 입력 "b"에서 상태(1204)는 상태(1206, 1208)를 활성화시키고 상태(1204) 그 자체를 재활성화시킨다. If the state 1204 is activated, and activates the state 1204 at the input "b" is a state (1206, 1208) and state 1204 is active material itself.또한, 입력 "b"에서 상태(1204)는 카운터(1212)의 입력 포트를 활성화시키고 여기서 카운터 상태(1212)의 초기 값은 3이고 이후 2로 감소된다. In addition, the initial value of the state 1204 at the input "b" enables the input port of the counter 1212. The counter and state 1212 is 3, and is reduced to 2 after.상태(1204, 1206, 1208)가 활성화되면, 카운터 상태(1212)의 입력 포트는 다른 입력 "b"에서 다시 상태(1204)에 의하여 활성화되고, 카운터 상태(1212)의 값은 1로 감소된다. When a state (1204, 1206, 1208) enable the input port of the counter state 1212 is activated by again the state 1204 at the other input "b", the value of the counter state 1212 is reduced to one.이 점에서 상태(1204, 1206, 1208)가 활성화된다. State at this point (1204, 1206, 1208) is activated.이후, 입력 값 "c"이 카운터 상태(1212)의 입력 포트로 하여금 상태(1208)에 의해 활성화되어 카운터(1212)의 값을 0으로 감소시키게 한다. Thereafter, the input value "c" is led to the input port of the counter state 1212 is activated by the state 1208 is to reduce the value of the counter 1212 to zero.카운터(1212)의 값이 제로인 경우 출력은 활성화되고 상태(1214)는 활성화되어 매치를 나타낸다. If the value of the counter 1212 is zero output is enabled and the state 1214 is active, it indicates a match.그러나, 이 매치는 시퀀스 "abbc"가 regex"a(blbc){3}"을 충족하지 않을 때 입력 "abbc"가 매치를 유발한 것이므로 거짓 긍정이다. However, the match is because the sequence "abbc" is input when not meet the regex "a (blbc) {3}" "abbc" leads to a false positive match.따라서, regex "a(blbc){3}"은 무 접두사 조건을 충족하지 않고, 카운터 상태를 사용하여 변환되지 않으며 카운터(224)로 구현되지 않는다. Thus, regex "a (blbc) {3}" does not satisfy the condition no prefix, it is not converted by using the counter state are not implemented in the counter 224.

블록(808)을 다시 참조하면, 단일 개수의 루프로 매칭될 수 있는 양화는 직렬로 링크된 복수의 반복된 서브 표현을 가지는 오토마톤을 형성하도록 언롤링된다. Referring to block 808 again, the foreign film, which can be matched by the loop of the single number is unroll so as to form the automaton having a plurality of repeated sub-expression to the serial link.단일 개수의 루프를 가지는 양화는 n1이 n2인 양화에 대응한다. Having a loop of single positive number corresponds to the quantification of the n1 n2.예를 들어 양화 "B{n1}"는 B의 n1개의 사본을 가지는 "BB...B"로 언롤링될 수 있다. For example, foreign film "B {n1}" may be unroll as "BB ... B" with n1 copies of the B.

블록(810)에서, 다수 개의 루프로 매칭될 수 있는 양화는, n1이 n2와 같지 않을 때, 그리고 n1이 1이고 n2가 1보다 클 때 언롤링된다. In block 810, the foreign film, which can be matched to a large number of loops, when the n1 is not equal to n2, and n1 is 1 and n2 is unroll time is greater than 1.n1이 1보다 클 때, 양화는 n1-1개의 루프로 매칭될 수 있는 제1 양화와, 1 내지 n2-n1+1개의 루프로 매칭될 수 있는 제2 양화로 분할된다. When n1 is greater than 1, foreign film is divided into a second foreign film that can be matched to the first positive and the first to n2-n1 + 1 of loops that can be matched to n1-1 loops.예를 들어, 양화 B{n1, n2}, 여기서 n1 > 1, n2 > 1 및 n1 < n2는 다수 개의 루프로, 특히 n1 내지 n2개의 루프로 매칭될 수 있다. For example, a positive B {n1, n2}, wherein can be matched with n1> 1, n2> 1, and n1 <n2 is a number of loops, in particular n1 to n2 of the loop.이 양화 B{n1, n2}는 이하 양화 B{n1 - 1}B{1, n2 - n1 + 1}로 분할될 수 있다. The positive B {n1, n2} or less foreign film B may be partitioned into {n1 - - 1} B {n1 + 1 1, n2}.제1 양화는 n1-1개와 같은 다수의 루프로 매칭될 수 있는 반복된 서브 표현(B)이다. The first is a positive number in the loop can be matched with repeated sub-expression (B) in the same dog and n1-1.이 제1 양화는 1 내지 n2-n1+1개의 다수의 루프에 의하여 매칭될 수 있는 반복된 서브 표현을 구비하는 제2 양화와 연쇄적으로 연결된다. The first positive is connected to the second positive and cascade having a repeating sub-expression, which can be matched by the first to n2-n1 + 1 of the plurality of loops.제1 양화(B{n1-1})는 (1302)에서 상태로 언롤링된다. A first positive (n1-1 {B}) is unrolling in a state in 1302.

제2 양화 B{1, n2-n1 + 1}는 결과적인 오토마톤의 진입 차수(in-degree) 및/또는 진출 차수(out-degree)에 기초하여 언롤링될 수 있다. Second positive B {1, n2-n1 + 1} may be rolling on the basis of a result of the entry order of the automaton (in-degree) and / or the entry order (out-degree) language.양화를 언롤링하는 것은 큰 진입 차수 또는 큰 진출 차수를 가지는 상태를 생성할 수 있다. The unrolling foreign film may generate a state having a large entry order or greater expansion degree.일례에서, 진입 차수는 오토마톤의 상태로 전이하는 개수에 대응하고, 진출 차수는 오토마톤의 상태로부터 전이하는 개수에 대응한다. In one example, the entry order is corresponding to the number of transitions to the state of the automaton, and the expansion order is corresponding to the number of transition from the state of the automaton.따라서, 제2 양화는 제2 양화를 오토마톤으로 변환할 때 상태로 들어가게 전이하는 것(진입 차수) 또는 상태로부터 나오게 전이하는 것(진출 차수)을 제어하도록 언롤링될 수 있다. Thus, the second foreign film may be unroll to a second positive control to enter the transition state when converting the automaton to transition out from the (order entry) or conditions (order entry).예를 들어, 양화는 각 언롤링된 상태의 진입 차수를 임계값 수 미만으로 제한하도록 언롤링될 수 있다. For example, foreign film may be unroll so as to restrict the entry order of the respective unloading the rolled state to be less than the critical value.진입 차수를 제한하는 것은 예를 들어 타깃 디바이스 내 요소의 측면 및/또는 제한을 고려하도록 수행될 수 있다. Intended to limit the entry order may be performed to, for example, consider the target side and / or limitations of the elements in the device.나아가, 언롤링 동안 진입 차수를 제한하는 것은 컴파일러에 대한 후속 처리를 감소시킬 수 있다. It further limits the entry order for unrolling it is possible to reduce the subsequent processing for the compiler.

일례로서, 양화 B{1, n2-n1+1}를 언롤링할 때, 오토마톤은 진입 차수와 진출 차수 사이에 트레이드오프(trade-off)로 생성된다. As an example, when unrolling positive B {1, n2-n1 + 1}, the automaton is generated as a tradeoff (trade-off) between order entry and entering the order.따라서, 진입 차수를 감소시키는 것은 진출 차수를 증가시킬 수 있고 진출 차수를 감소시키는 것은 진입 차수를 증가시킬 수 있다. Therefore, that, to reduce the entry order it can increase the expansion degree reduce the expansion degree may increase the entry order.일례에서, 양화 B{1, n2-n1+1}의 루프 구조를 언롤링하기 위하여 오토마톤으로 하여금 k개의 연쇄 연결된 B의 임의의 스트링을 허용하도록 언롤링된 상태로 또는 언롤링된 상태로부터 다수의 전이가 이루어지며, 여기서 1<=k<=n2-n1+1이다. In one example, a positive B {1, n2-n1 + 1} of the loop structure in the rolled state unloading causes the automaton to allow for any string of B k of a chain connected to unroll or unloading a number from the rolled state the transition is made, where 1 <= k <= n2-n1 + 1.언롤링된 상태로 또는 언롤링된 상태로부터 전이가 이루어지는지 여부를 제어하는 것은 오토마톤에 대한 진입 차수/진출 차수를 제어하는데 사용될 수 있다. Controlling whether or not the transition is made from the frozen state into the rolled or unrolled states can be used to control the order entry / expansion order with respect to the automaton.

방법(800)이 단일 양화에 대응하는 것으로 기술되어 있으나, 방법(800)은 구문 트리 내에 복수의 양화에 대해 반복될 수 있고, 결과적인 개별 오토마톤은 더 큰 오토마톤으로 링크될 수 있다. Method 800, but is described as corresponding to a single positive, the method 800 may be repeated for a plurality of positive in the syntax tree, and the resulting individual automaton can be linked to a larger automaton.

도 13a는 표현(AB{1, 4})이 진입 차수를 최소화하도록 언롤링된 오토마톤(1300)의 일례를 도시한다. Figure 13a shows an example of the representation (AB {1, 4}) of the automaton unroll so as to minimize the entry order (1300).진입 차수를 최소화하기 위해 언롤링된 양화로부터 초래되는 오토마톤은 본 명세서에서는 또한 분산 패턴(scatter pattern)이라고도 지칭된다. Automaton resulting from the frozen rolled positive to minimize the entry order is referred to also referred to as dispersion pattern (scatter pattern) in the present specification.표현(AB{1, 4})의 언롤링된 버전인 분산 패턴은 표현 A((((B?) B)? B)? B)에 직접 대응하고, 이 표현에 오토마톤(1300)이 대응한다. Representation (AB {1, 4}) unloading the rolled version of the dispersion pattern is expressed A of ((((B?) B)? B)? B) correspond directly to, and the automaton (1300) corresponds to the expression do.오토마톤(1300)은 양화 B{1, 4}를 위한 구동 상태(1302)와, 양화의 제1 상태(1304)와, 양화의 마지막 상태(1308)를 포함하는 복수의 언롤링된 상태(1304 내지 1308)를 포함한다. Automaton 1300 is positive B {1, 4} for for driving state 1302, a first state (1304), and the rolled plurality of language including the final state 1308 the status of foreign film of the positive (1304 and a to 1308).일례에서, 표현(A, B) 각각은 미도시된 더 작은 오토마톤을 위한 다수의 상태에 대응할 수 있다. In one example, each representation (A, B) may correspond to a number of conditions for the smaller automaton not shown.오토마톤(1300)의 진입 차수를 최소화하기 위하여 양화를 위한 전이는 제1 상태(1304)로부터 다른 언롤링된 상태(1305 내지 1308)로 진출 전이(out-transition)로 할당된다. Transition for the foreign film, to minimize the entry order of the automaton 1300 is assigned to the first state 1304 transitions (out-transition) from the advance to the other unloading the rolled state (1305 to 1308).따라서, 제1 상태(1304)는 큰 진출 차수(4개의 진출 전이)를 구비하며, 모든 양화 상태(1304 내지 1308)는 작은 진입 차수(1 또는 2개의 진입 전이(in-transition))를 구비한다. Accordingly, a first condition 1304 is a large expansion degree (four entry transfer), all positive state (1304 to 1308) and having a small entry order (one or two entry transition (in-transition)) .

도 13b는 표현(AB{1, 4}이 진출 차수를 최소화하기 위해 언롤링된 오토마톤(1310)의 일례를 도시한다. 진출 차수를 최소화하기 위해 언롤링된 양화로부터 초래되는 오토마톤은 본 명세서에서는 또한 병합 패턴(merge pattern)이라고도 지칭된다. 표현(AB{1, 4})의 언롤링된 버전의 병합 패턴은 언롤링된 표현(AB(B(B(B)?)?)?)에 직접 대응한다. 오토마톤(1308)은 상태(1302, 1304 내지 1308)들 사이에 상이한 전이를 가지는 오토마톤(1300)과 동일한 상태(1302, 1304 내지 1308)를 포함한다. 오토마톤(1310)의 진출 차수를 최소화하기 위하여 양화를 위한 전이는 양화의 마지막 상태(1308)로 가는 입력 전이로 할당된다. 입력 전이는 언롤링된 상태(1304 내지 1307) 각각으로부터 온다. 따라서, 양화 상태(1304 내지 1308) 전부는 작은 진출 차수(1 또는 2개의 진출 전이)를 구비하지만, 양화의 마지 Figure 13b automaton resulting from the frozen rolled foreign film in order to minimize the expression (shows an example of the AB {1, 4} are frozen the automaton (1310 roll in order to minimize the expansion degree) entered order is herein in addition to the combined pattern (merge pattern), also known as referred to. representation (AB {1, 4}) frozen merge pattern of the rolling version is rolled representation language of the (AB (B (B (B)?)?)?) directly it corresponds. the automaton 1308 includes the same state (1302, 1304 to 1308) and the automaton (1300) having different transition among the states (1302, 1304 to 1308) of the automaton 1310 transition for the foreign film in order to minimize the expansion order is allocated to the thin type transition to the final state 1308, the positive input transitions unloading the rolled state (1304 through 1307) coming from each other. Therefore, the positive state (1304 to 1308 ) all are provided with a small expansion degree (one or two expansion transition), however, the last of the foreign film 상태(1308)는 큰 진입 차수(4개의 진입 전이)를 구비한다. State 1308 has a large entry order (four entry transition).

일례에서, 양화를 구비하는 표현은 진출 차수 또는 진입 차수 중 하나를 임계값 미만으로 제한하도록 언롤링된다. In one example, the expression including a foreign film is unroll to restrict one of the advanced degree or order entry below the threshold.일례에서, 진입 차수를 임계값으로 제한하도록 표현(AB{1, n1})을 언롤링하기 위하여 임계값까지 양화(B{1, n1})를 위한 다수의 전이는 양화(B{1, n1})의 마지막 상태로 가는 진입 전이로 할당될 수 있고, 다른 전이는 양화(B{1, n1})의 제1 상태를 위한 진출 전이로 할당될 수 있다. In one example, the number of transitions for a foreign film (B {1, n1}) to the threshold value in order to unroll the representation (AB {1, n1}) so as to restrict the entry order as the threshold is positive (B {1, n1 }) may be allocated to the thin entry transitions to the final state of the other transition may be assigned to the entry transition for a first state of positive ({B 1, n1}).역으로, 진출 차수를 임계값으로 제한하기 위하여 표현(AB{1, n1})을 언롤링하기 위하여 임계값까지 양화(B{1, n1})를 위한 다수의 전이는 양화를 위한 제1 상태에 가는 진출 전이로 할당될 수 있고, 다른 전이는 양화(B{1, n1})의 마지막 상태를 위한 진출 전이로 할당될 수 있다. Conversely, the number of transitions for the representation (AB {1, n1}) the unloading threshold foreign film (B {1, n1}) up to rolling in order to limit the expansion degree as the threshold is the first state for positive and going to be assigned to the entry transition, the transition to the other may be assigned to the entry for the final transition state of the foreign film (B {1, n1}).

도 13c는 임의의 상태를 위한 진입 전이를 3 이하로 제한하기 위해 표현(AB{1, 4})이 언롤링되는 오토마톤(1312)의 다른 예를 도시한다. Figure 13c shows another example of the representation (AB {1, 4}) The automaton 1312 is unrolled in order to restrict the entry transition for any state of 3 or less.오토마톤(1312)은 상태(1302, 1304 내지 1308)들 사이에 상이한 전이를 가지는 오토마톤(1300, 1308)과 동일한 상태(1302, 1304 내지 1308)를 포함한다. The automaton 1312 includes a state (1302, 1304 to 1308) and the same state automaton (1300, 1308) having different transition between (1302 and 1304 to 1308).일례에서, 오토마톤(1312)의 진입 차수를 3개 이하의 진입 전이로 제한하기 위하여 양화를 위한 전이는 3의 제한값에 도달할 때까지 양화(B{1, 4})의 마지막 상태(1308)로 가는 진입 전이로 초기에 할당되고, 다른 전이는 양화 상태(1304 내지 1308)로부터 진출 전이로 할당된다. In one example, the final state 1308 of the positive (B {1, 4}) until the transition to the positive to limit the entry order of the automaton 1312, the entry transitions to three reaches the third limit value is assigned to the initial entry by going transition, the other transition is assigned to the entry transition from positive state (1304 to 1308).따라서, 양화의 마지막 상태(1308)와, 다른 양화 상태(1304 내지 1307)는 3의 제한값 이하의 진입 차수를 가지고, 제1 상태(1304)는 3의 진출 차수를 구비한다. Thus, the final state 1308 of the foreign film, another positive state (1304 to 1307) has a penetration degree of 3 or less of the limit value, the first state 1304 is entered with a degree of 3.

다른 예에서, 표현의 진입 차수와 진출 차수는 서로 특정 비(ratio)(예를 들어, 1대1, 2대1)로 설정될 수 있다. In another example, the order of entry and the entry order of the expression may be set each other by a certain ratio (ratio) (for example, one to one, two to one).또 다른 예에서, 표현의 진입 차수와 진출 차수는 임계값이 진입 전이 또는 진출 전이에 도달할 때까지 서로 특정 비로 설정될 수 있고, 다른 비도 사용될 수 있으며, 또는 모든 전이는 진입 전이 또는 진출 전이로 각각 할당될 수 있다. In another example, the entry order of the expansion degree of expression and the threshold can be set a certain ratio to each other until the entry transition or reaching the entry transition, a different non-may be used, or any metastases entry transitions or advance transitions It may be allocated.

네트리스트는 연결 인스턴스이며, 여기서 인스턴스는 하드웨어 요소에 대응하고, 방향성 에지는 하드웨어 요소를 연결하는 네트(net)이다. Netlist is connected to the instance, in which the instance corresponds to a hardware element, the directional edge is a net (net) for connecting the hardware element.상태가 다른 상태를 구동하면, 2개의 상태가 할당된 SME들 사이에 전기적 연결이 있을 수 있다. When the driving state is a different state, there may be an electrical connection between the two states assigned SME.대부분의 물리적 디바이스는 하드웨어 성분들 사이에 연결의 개수에 일부 제한을 가지고 있다. Most of the physical device may have some limitations on the number of connections between the hardware components.오토마톤으로부터 물리적 디바이스로 가능한 맵핑을 얻기 위하여 오토마톤은 모든 상태의 진입 차수가 하드웨어 연결 제한을 충족하도록 변환되어야 한다. In order to obtain a mapping from the physical devices available to the automaton automaton is to be converted enters the order for all the states so as to satisfy the hardware connection limit.

전술된 바와 같이, 컴파일러는 SME 중 어느 것이 만약 있다면 FSM 엔진(200)의 제한에 기초하여 서로 그룹화 될 수 있는지를 결정한다. As described above, the compiler determines whether which of SME If on the basis of the limitations of the FSM engine 200 may be grouped together.따라서, GOT(210)에서 컴파일러는 SME 중 어느 것이 GOT(210)에서 SME(204, 205)에 대한 출력 제한에 기초하여 서로 쌍으로 형성될 수 있는지를 결정한다. Thus, in the GOT (210), the compiler determines which of the SME that is the basis of the output limit of the SME (204, 205) in the GOT (210) may be formed in pairs to each other.

하나의 이러한 실시형태에서, FSM 엔진(200)은 모든 하드웨어 성분에 대해 제한된 연결을 가진다. In one such embodiments of, FSM engine 200 has a limited connection for all hardware components.오토마톤으로부터 FSM 엔진(200)으로 가능한 맵핑을 얻기 위하여, 오토마톤은 모든 상태의 진입 차수가 연결 제한을 충족하도록 변환되어야 한다. In order to obtain possible maps to FSM engine 200 from the automaton, the automaton has to be converted enters the order for all the states so as to satisfy the connection limit.

그리하여, 일례에서 오토마톤의 진입 차수는 타깃 디바이스의 하드웨어 제약에 기초하여 제한될 수 있다. Thus, the entry order of the automaton in the example can be limited based upon the hardware constraints of the target device.일례에서 2개 레벨의 구조가 FSM 엔진(200)에 사용되어 SME(204, 205)의 구동 입력을 제한할 수 있다. In one example of a two-level structure it is used for the FSM engine 200 may limit the drive input of the SME (204, 205).제일 먼저, GOT(210)에 의해 제공된 OR 게이트(230)를 레버리지(leverage)할 수 있고, 이는 SME 상태로부터 출력을 단일 출력으로 쌍으로 형성하는 것에 의해 최대 50%만큼 진입 차수를 감소시킬 수 있다. The first, and the OR gate 230 is provided by the GOT (210) can leverage (leverage), which may reduce the entry order by up to 50% by forming the pair of the output from the SME status of a single Output .다른 성분은 복소 논리 함수를 제공하도록 구성될 수 있는 부울리안이다. The other component is a Boolean, which can be configured to provide a complex logical function.이 예에서는, 단지 단일 OR 성분으로만 이를 고려한다. In this example, the only consideration of this, only a single OR component.이하 알고리즘에서, 보수적인 방식으로 GOT(210)의 사용을 예측한다. In the following algorithm, it predicts the use of GOT (210) with a conservative approach.이 알고리즘에서 예측된 진입 차수가 FSM 엔진(200)의 제약을 초과하면, 일부 상태는 다수의 상태로 분할되거나, 또는 부울리안 OR이 필요에 따라 진입 차수를 감소시키도록 삽입된다. If the entry order in the prediction algorithm exceeds the limitations of FSM engine 200, or some status is divided into a number of conditions, or is inserted so as to Boolean OR is reduced to the order entry, if necessary.

상태 분할의 기본적인 아이디어는 상태를 다수의 상태로 분할하고, 각 분할된 상태의 진입 차수가 제약을 충족하도록 미리 분할된 상태의 구동 입력을 분할된 상태에 분배하는 것이다. The basic idea of ​​the state division is to divide the state of a plurality of states, the entry order of the divided state distribution on the divided driving input of the pre-divided state condition to meet the constraints.오토마톤이 방향성 비순환 그래프(DAG)라면, 오토마톤의 간단한 폭 제1 횡단이 이 문제를 해결할 수 있다. If the automaton is the directed acyclic graph (DAG), it has a simple cross-sectional width of the first automaton can solve this problem.그러나, 루프(예를 들어, 양화)가 존재할 때, 분할은 상태의 개수를 지수적으로 증가시키거나 또는 가능한 해법이 가능하지 않는 상황을 야기할 수 있다. However, the loop (e.g., positive) that is, the number of divisions is not possible to give rise to a number of states increases exponentially or possible solution in the presence of conditions.부울리안 논리는 증가된 상태를 감소시키는 것을 도와주어서 이 상황을 완화시킬 수 있다. Boolean logic can mitigate the situation by giving help to reduce the increased state.일 실시형태에서, 부울리안 OR 또는 그 등가물이 루프 조건을 처리하는데 사용된다. In one embodiment, a Boolean OR or the like is used to process the loop condition.

상태를 분할하는 일례는 도 14a 및 도 14b에 도시된다. An example of dividing a state is shown in Figure 14a and 14b.도 9a에 도시된 예에서, 8개의 상태(1430)는 하나의 상태(1432)를 공급하며, 이는 다시 2개의 상태(1434)를 공급한다. In the example shown in Figure 9a, 8 states 1430, and supplies the one state (1432), which is fed back to the two states (1434).도 9b에 도시된 바와 같이, 전술된 바와 같이 분할된 상태는 2개의 새로운 상태(1436)(C2, C3)의 추가를 초래한다. As it is shown in Figure 9b, the split state as described above, results in the addition of two new state (1436) (C2, C3).그러나, 이제 3개의 상태는 2개의 상태(1434)를 공급한다. However, now the three state supplies the two states (1434).

도 5를 다시 참조하면, GOT(210)는 SME(204, 205)에 출력 제한을 구비한다. Referring to Figure 5 again, GOT (210) has an output limited to the SME (204, 205).특히, GOT(210)는 2개의 SME(204, 205)에 의해 공유된 단일 출력(218)을 구비한다. In particular, the GOT (210) has a single output (218) shared by the two SME (204, 205).따라서, GOT(210)에서 각 SME(204, 205)는 출력(218)을 독립적으로 구동할 수 없다. Thus, each SME (204, 205) in the GOT (210) may not be driven independently of the output 218.이 출력 제한은 SME 상태 중 어느 것이 GOT 인스턴스로 서로 쌍으로 형성할 수 있는 것인지를 제한한다. The output restriction is limited to what can be any of the SME state formation in pairs with one another GOT instance.특히 외부 SME 상태(예를 들어, GOT 인스턴스의 외부 SME에 대응하는 SME 상태)의 상이한 세트를 구동(예를 들어, 전이, 활성화)하는 2개의 SME 상태는 GOT 인스턴스에서 서로 쌍으로 형성될 수 없다. In particular, external SME state two SME condition for driving (e. G., Transition, enable) the different sets of (e.g., SME state corresponding to an external SME of GOT instance) may not be formed in pairs to each other in the GOT instance .그러나, 이러한 제한은, GOT(210)가 스위치(240)를 통해 이 기능을 내부에서 제공할 수 있으므로, 2개의 SME 상태가 서로 또는 자체 루프를 구동하는지 여부를 제한하지 않는다. However, this limitation, since the GOT (210) can be provided within this feature via a switch 240, and two SME status does not limit whether the drive to each other or self-loop.FSM 엔진(200)은 SME(204, 205)에 대응하는 특정 물리적 설계를 가지는 것으로 기술되었으나, 다른 예에서, SME(204, 205)는 다른 물리적 설계를 구비할 수 있다. FSM engine 200 may have been described as having a certain physical design corresponding to the SME (204, 205), In another example, SME (204, 205) has a different physical design.예를 들어, SME(204, 205)는 SME(204, 205)의 3개 이상의 세트로 서로 그룹화될 수 있다. For example, SME (204, 205) may be grouped together in more than three sets of SME (204, 205).추가적으로, 일부 예에서, SME(204, 205)으로부터 출력(226, 228)에 제한이 있거나 없이 SME(204, 205)의 입력(214, 216)에 제한이 있을 수 있다. Additionally, in some instances, SME may be a limit to the input (214, 216) of the output (226, 228) the SME (204, 205) with or without limits from the (204, 205).

그러나, 어느 경우이든, 컴파일러는 SME 상태 중 어느 것이 FSM 엔진(200)의 물리적 설계에 기초하여 서로 그룹화될 수 있는 것인지를 결정한다. However, in either case, the compiler determines whether any of the SME state to be able to be grouped together on the basis of the physical design of the FSM engine 200.따라서, GOT 인스턴스에서, 컴파일러는 SME 상태 중 어느 것이 SME(204, 205)에 대한 출력 제한에 기초하여 GOT(210)로 서로 쌍으로 형성될 수 있는지를 결정한다. Thus, in GOT instance, the compiler determines whether any of the SME state to be formed in pairs to each other in GOT (210) on the basis of the output limit of the SME (204, 205).일례에서, GOT(210)의 물리적 설계에 기초하여 2개의 SME 상태가 GOT(210)를 형성하도록 서로 쌍으로 형성될 수 있는 5개의 상황이 존재한다. In one example, on the basis of the physical design of the GOT (210) 2 and the five conditions that may be formed in pairs to each other to form the presence of the SME status GOT (210).

제1 및 제2 SME 상태가 GOT(210)로 서로 쌍으로 형성될 수 있는 제1 상황은 제1 또는 제2 SME 상태 중 어느 것도 최종 상태가 아닌 경우 및 제1 및 제2 SME 상태 중 하나가 제1 또는 제2 SME 상태와는 다른 임의의 상태를 구동하지 않을 때 발생한다. One of the first and second cases 2 SME first situation in which the state can be formed in pairs to each other with GOT (210) is any one of claim 1 or claim 2 SME state it is not the last state, and the first and the 2 SME status claim 1 or claim 2 is the SME status occurs when it is not driving any other state.일례로서, 제1 상태는 제1 상태가 제2 상태로 전이할 때 제2 상태를 구동하는 것으로 고려된다. As an example, the first state is considered to drive a second state when the first state to transition to the second state.이 제1 상황이 발생하면, 제1 및 제2 SME 상태 중 최대 하나가 외부 상태(들)를 구동한다. When this situation occurs, first, the first and second drive the SME status up one of the external condition (s).따라서, 제1 및 제2 SME 상태는 GOT(210)의 출력 제한에 의해 영향을 받지 않고 서로 쌍으로 형성될 수 있다. Thus, the first and SME 2 state may be formed as a pair to each other without being affected by the output limit in the GOT (210).그러나, SME(204, 205)를 서로 내부적으로 연결할 수 있는 GOT(210)의 능력으로 인해, 제1 및 제2 SME 상태는 서로 구동하고 자체 루프 연결되어 자체적으로 구동하는 것이 허용된다. However, due to the SME (204, 205) by the power of GOT (210) that can be connected to each other internally, the first and the 2 SME status to each other and connect the drive itself, the loop is allowed to drive in-house.오토마톤 용어에서 제1 SME 상태(상태 q1에 대응함) 및 제2 SME 상태(상태 q2에 대응함)는 q1과 q2 중 어느 것도 최종 상태에 있지 않고 δ(q1) - {q1, q2}가 비어 있을 때 또는 δ(q2) - {q1, q2}가 비어있을 때 서로 쌍으로 형성될 수 있다. First (corresponding to the state q1) SME state and a 2 SME state (corresponding to the state q2) is any of q1 and q2 is not in the final state δ (q1) in the automaton term - the empty {q1, q2} or when δ (q2) - when {q1, q2} is empty, can be formed in a pair with each other.

제1 및 제2 SME 상태가 GOT(210)로 서로 쌍으로 형성될 때의 제2 상황은 제1 또는 제2 SME 상태 중 어느 것도 오토마톤에서 최종 상태에 있지 않을 때 및 제1 및 제2 SME 상태 모두가 동일한 외부 상태를 구동할 때 발생한다. First and second SME status when the second situation, when the formation in pairs with each other in GOT (210) is not in the final state, in none of the automaton of the first or second SME status and the first and second SME both conditions occur when driving the same external conditions.본 명세서에 사용된 바와 같이 외부 상태는, 예를 들어, GOT 인스턴스에서 제1 및 제2 SME 상태가 서로 또는 자체 루프 연결되어 구동하는지에 상관없이 GOT 인스턴스의 외부 상태에 대응한다. The external state, as used herein, e.g., the first and a 2 state in SME GOT instance is connected to each other or self-loop corresponds to the external state of the GOT instance, regardless of whether the drive.여기서 다시, GOT(210)의 출력 제한은, 제1 및 제2 SME 상태가 동일한 외부 상태를 구동하므로, 제1 및 제2 SME 상태에 영향을 미치지 않는다. Here again, the output limitation of GOT (210) includes a first and second state so SME drives the same external conditions, the does not affect the first and second SME status.또한, SME(204, 205)를 서로 내부적으로 연결할 수 있는 GOT(210)의 능력으로 인해, 동일한 상태를 구동하는데 있어서 제한은 제1 및 제2 상태가 서로 또는 자체 루프 연결되어 구동하는지 여부를 포함하지 않는다. In addition, because of the SME (204, 205) by the power of GOT (210) that can each connect internally limited in to drive the same condition comprises whether the driving of the first and second states to each other or connected to its own loop I never do that.오토마톤 용어를 사용하면, 제1 SME 상태(상태 q1에 대응하는) 및 제2 SME 상태(상태 q2에 대응하는)는, q1과 q2 중 어느 것도 최종 상태에 있지 않고 δ(q1) - {q1, q2} = δ(q2) - {q1, q2}일 때 서로 쌍으로 형성될 수 있다. The automaton term claim 1 SME state (corresponding to the state q2) and a 2 SME state (corresponding to the state q1) is, q1 and δ (q1) none of q2 is not in the final state - {q1 , q2} = δ (q2) - when {q1, q2} may be formed in pairs to each other.

제1 및 제2 SME 상태가 GOT(210)로 서로 쌍으로 형성될 수 있는 제3 및 제4 상황은, 제1 및 제2 SME 상태 중 어느 하나가 최종 상태에 있고 제1 및 제2 SME 상태 중 다른 하나가 임의의 외부 상태를 구동하지 않을 때 발생한다. A first and a 2 SME status of the third and fourth conditions that may be formed in pairs to each other with GOT (210), the first and the 2 SME any of the state is in the final state, the first and the 2 SME status one generated when the other is not driving any of the external conditions.즉, 제1 SME 상태(상태 q1에 대응하는) 및 제2 SME 상태(상태 q2에 대응하는)는, q1이 최종 상태에 있고 δ(q2) - {q1, q2}가 비어 있을 때, 또는 q2가 최종 상태에 대응하고, δ(q1) - {q1, q2}가 비어있을 때 서로 쌍으로 형성될 수 있다. In other words, the 1 SME state (corresponding to the state q2) and a 2 SME state (corresponding to the state q1) is, q1 is in the final state δ (q2) - when {q1, q2} is empty, or q2 there are {q1, q2} can be formed in a pair with each other when empty - that corresponds to the last state, δ (q1).최종 상태는 regex에 매치의 표시(indication)를 출력하므로, 최종 상태에 대응하는 SME 상태는 매치를 나타내기 위하여 GOT(210)의 출력(218)의 독립적인 사용을 가져야 한다. The final state, so the output display (indication) of the match to the regex, SME state corresponding to the final state are to have an independent use of the output 218 of the GOT (210) to indicate the match.따라서, GOT(210)에서 다른 SME 상태는 출력(218)을 사용하는 것이 허용되지 않는다. Accordingly, other SME status on GOT (210) is not allowed to use the output 218.

제1 및 제2 SME 상태가 GOT(210)로 서로 쌍으로 형성될 수 있을 때의 제5 상황은, 제1 및 제2 SME 상태 모두가 오토마톤에서 최종 상태에 대응하고 제1 및 제2 SME 상태 모두가 동일한 외부 상태를 구동할 때 발생한다. A first and a 2 SME state is the fifth state of when it can be formed in pairs to each other with GOT (210), the first and the 2 SME status all correspond to the final state in the automata and the first and the 2 SME both conditions occur when driving the same external conditions.오토마톤 용어를 사용하면 제1 상태(상태 q1에 대응하는) 및 제2 SME 상태(상태 q2에 대응하는)는, q1 및 q2 모두가 최종 상태이고 δ(q1) - {q1, q2} = δ(q2) - {q1, q2}일 때 서로 쌍으로 형성될 수 있다. The automaton terms (corresponding to the state q2) and a 2 SME state (corresponding to the state q1) the first state, both q1 and q2 final state and δ (q1) - {q1, q2} = δ (q2) - when {q1, q2} may be formed in pairs to each other.

일단 컴파일러가 하나 이상의 SME 상태가 서로 쌍으로 형성될 수 있는지 여부를 결정하면, 컴파일러는 SME 상태를 GOT 인스턴스로 쌍을 형성한다. Once the compiler has one or more SME status determination whether to be formed in a pair with each other, the compiler to form a pair of SME to the GOT state instance.일례에서, 컴파일러는 GOT 인스턴스를 형성하도록 쌍으로 형성될 수 있도록 결정된 순서로 SME 상태를 GOT 인스턴스로 쌍으로 형성한다. In one example, the compiler forms the SME status in an order determined so that it can be formed in a pair to form a pair with GOT GOT instance instance.즉, 2개의 특정 SME 상태가 서로 쌍으로 형성될 수 있는 것으로 결정되면, 이들 2개의 SME 상태는 GOT 인스턴스로 쌍으로 형성될 수 있다. That is, if it is determined that there are two particular SME state can be formed in a pair with each other, the two SME status may be formed in pairs to GOT instance.2개의 SME 상태가 GOT 인스턴스를 형성하도록 쌍으로 형성되면, 쌍을 이루는 SME 상태는 다른 SME 상태와 쌍을 형성하는데 이용될 수 없다. When two SME status is formed as a pair to form a GOT instance, SME state in the pair can not be used to form other SME status and the pair.이 공정은 쌍을 형성할 SME 상태가 더 이상 남아있지 않을 때까지 지속될 수 있다. This process can continue until the SME state to form the pair no longer remain.

일례에서, 컴파일러는 SME 중 어느 것이 GOT 인스턴스로 서로 쌍으로 형성될 것인지를 결정하는데 그래프 이론을 사용한다. In one example, the compiler uses graph theory to determine which of the SME is going to be formed in pairs to each other in GOT instance.특정 SME만이 서로 쌍을 이룰 수 있으므로, 일부 SME 쌍은 다른 SME가 자기 자신의 GOT 인스턴스로 구현되게 하고 GOT 인스턴스에서 다른 SME 위치는 미사용되어 폐기되게 할 수 있다. Since only a particular SME be paired with each other, some SME pair may be disposed of to be implemented in the other SME own GOT instance and other SME position in GOT instance is not in use.그래프 이론은 네트리스트의 GOT 인스턴스의 미사용된 SME 인스턴스의 수를 감소시키는 것에 의해 GOT(210)로 SME 사용을 최적화하는데(예를 들어, 미사용된 SME의 개수를 감소시키는데) 사용될 수 있다. Graph theory can be used to optimize the SME used as GOT (210) (e.g., to reduce the number of unused SME) by reducing the number of unused SME instance of GOT instance of the net list.그래프 이론을 사용하면, 컴파일러는 전술된 FSM 엔진(200)의 물리적 설계에 따라 SME 상태들 사이에 모든 가능한 쌍을 제일 먼저 결정한다. Using a graph theory, the compiler determines all possible pairs among the SME status according to the physical design of the above-described FSM engine 200 first.컴파일러는 이후 그래프의 정점(vertices)이 SME 상태에 대응하고 그래프의 에지(edge)가 SME 상태의 가능한 쌍에 대응하는 그래프를 생성한다. The compiler vertex (vertices) of the graph corresponds to a state after the SME and generate a graph corresponding to the edge (edge) of the graph in possible pairs of the SME status.즉, 2개의 SME 상태가 GOT 인스턴스로 서로 쌍으로 형성될 수 있는 것으로 결정되면, 2개의 대응하는 정점은 에지에 연결된다. That is, if it is determined that the two SME status may be formed in pairs to each other in GOT instance, the vertex corresponding to the two are connected to the edge.따라서, 그래프는 SME 상태의 모든 가능한 쌍을 포함한다. Thus, the graph includes all possible pairs of SME status.

컴파일러는 SME 상태 중 어느 것이 GOT(210)로 서로 쌍으로 형성될 것인지를 식별하기 위해 그래프의 정점을 매칭시키는 것을 찾아낼 수 있다. The compiler can be found that to match the peak of the graph in order to identify which of the SME status is going to be formed in pairs to each other in GOT (210).즉, 컴파일러는 그래프의 매칭 정점들 사이에 2개의 에지들이 공통 정점을 공유하지 않도록 에지(및 그리하여 정점의 쌍)를 식별한다. That is, the compiler edge so that the two edges between matched vertex of the graph have not share a common vertex identifies (and therefore the pair of vertices).일례에서, 컴파일러는 그래프의 최대 매칭을 찾아낼 수 있다. In one example, the compiler can find the maximum matching graph.다른 예에서, 컴파일러는 그래프의 최대 매칭을 찾아낼 수 있다. In another example, the compiler can find the maximum matching graph.최대 매칭은 최대로 가능한 수의 에지를 포함하는 매칭이다. Maximum matching is matched, including the edge of the can as possible to the maximum.많은 최대 매칭이 있을 수 있다. There can be a maximum number of matches.일반적인 그래프에서 최대 매칭을 찾는 문제는 다항식 시간(polynomial time)으로 해결될 수 있다. Problem of finding a maximum matching in a typical graph can be solved in polynomial time (polynomial time).

모든 매칭 정점이 (예를 들어, 최대 매칭으로) 식별되면, 매칭 정점에 대응하는 SME 상태의 각 쌍은 GOT 인스턴스로 맵핑된다. When all matching vertices identified (e. G., The maximum matching), each pair of SME state corresponding to matching vertices are mapped to the GOT instance.매칭되지 않는 정점에 대응하는 SME 상태는 자기 자신의 GOT 인스턴스로 맵핑된다. SME state corresponding to non-matching peaks is mapped to its own GOT instance.즉, 매칭되지 않는 정점에 대응하는 SME 상태는 GOT 인스턴스에서 SME 위치의 하나로 맵핑되고, GOT 인스턴스에서 다른 SME 위치는 미사용된다. I.e., SME state corresponding to non-matching peaks are mapped to one location of the SME in the GOT instance, other SME position in GOT instance is not in use.따라서, 네트리스트(N)와 및 매칭 정점(M)의 대응하는 세트가 주어지면, 사용된 N의 GOT 인스턴스의 수는 ｜Q｜- 1 -｜M｜과 같으며, 여기서 Q는 오토마톤의 상태 세트이고, "-1"은 이 예에서 오토마톤의 시작 상태가 SME 상태에 대응하지 않기 때문이다. Thus, the number of the net list (N) and in a matching vertex (M) corresponding to the given surface, GOT instance of using N sets of the | Q | - 1 - | M | equals where Q is the automaton a set of states, "-1" is due to the start state of the automaton in this example does not correspond to the SME status.

SME 상태가 GOT 인스턴스로 쌍으로 형성되면, GOT 인스턴스, 카운터 인스턴스 및 논리 인스턴스는 오토마톤의 상태들 사이의 전이에 따라 연결된다. If SME status is formed as a pair in GOT instance, GOT instance, counter instance and the logical instance is connected along a transition between states of the automaton.각 GOT(210)는 단일 출력을 가지므로, 네트리스트에서 각 GOT 인스턴스는 다른 인스턴스에 연결하기 위해 단일 출력 포트를 구비한다. Each GOT (210) is because of the single output, GOT each instance in the netlist is provided with a single output port for connection to a different instance.따라서, 제1 GOT 인스턴스에서 SME 상태가 제2 GOT 인스턴스에서 SME 상태를 구동하면, 제1 GOT 인스턴스의 출력 포트는 제2 GOT 인스턴스의 입력에 연결된다. Thus, if the first condition in the SME GOT instances drive the SME status in claim 2 GOT instance, the first output port of the GOT instance is coupled to the input of the 2 GOT instance.

따라서, 다른 실시형태들이 실현될 수 있다. Thus, there may be other embodiments are realized.예를 들어, 컴퓨터, 메모리 시스템, 자기 또는 광 디스크, 일부 다른 저장 디바이스, 또는 임의의 유형의 전자 디바이스 또는 시스템과 같은 제조 물품은 하나 이상의 프로세서(1602)에 의해 실행될 때 상기 방법에 대하여 전술된 동작 중 어느 것을 수행할 수 있게 하는 명령(1624)(예를 들어, 컴퓨터 프로그램 명령)을 저장한 메모리(예를 들어, 이동식 저장 매체 및 전기, 광, 또는 전자기 전도체를 구비하는 임의의 메모리)와 같은 컴퓨터 판독가능한 매체(1622)에 연결된 하나 이상의 프로세서(1602)를 포함할 수 있다. For example, a computer, a memory system, a magnetic or optical disk, some other storage device, or article of manufacture, such as any type of electronic device or system, when executed by one or more processors 1602, the operations described above with respect to the method of the commands 1624 to be able to perform either the (e. g., computer program instructions), a storage memory such as a (e.g., any memory having a removable storage medium, and electrical, optical, or electromagnetic conductor) It may include one or more processors 1602 coupled to a computer readable medium (1622).

컴퓨터(1600)는 직접 및/또는 버스(1608)를 사용하여 다수의 성분에 연결된 프로세서(1602)를 가지는 컴퓨터 시스템의 형태를 취할 수 있다. Computer 1600 may take the form of a computer system having a processor (1602) connected to the plurality of components using a direct and / or bus 1608.이 성분은 메인 메모리(1604), 정적 또는 비휘발성 메모리(1606) 및 대용량 저장매체(1616)를 포함할 수 있다. The component may include a main memory 1604, a static or non-volatile memory 1606 and a mass storage medium (1616).프로세서(1602)에 연결된 다른 성분은 비디오 디스플레이와 같은 출력 디바이스(1610), 키보드와 같은 입력 디바이스(1612) 및 마우스와 같은 커서 제어 디바이스(1614)를 포함할 수 있다. Other components coupled to the processor 1602 can include a cursor control device 1614, such as an output device 1610, input devices 1612, such as a keyboard and mouse, such as a video display.프로세서(1602) 및 다른 성분을 네트워크(1626)에 연결하는 네트워크 인터페이스 디바이스(1620)는 버스(1608)에 더 연결될 수 있다. Network interface device 1620 that connects the processor 1602 and other components on the network 1626 may be further coupled to bus 1608.명령(1624)은 다수의 잘 알려진 전송 프로토콜(예를 들어, HTTP) 중 어느 하나를 사용하여 네트워크 인터페이스 디바이스(1620)를 통해 네트워크(1626)를 통해 더 송수신될 수 있다. Command 1624 may further be transmitted and received over a network 1626 through a network interface device 1620 using any of a number of well-known transfer protocols (e.g., HTTP).버스(1608)에 연결된 이들 요소 중 어느 것은 구현될 특정 실시형태에 따라 없을 수도 있거나, 하나만 존재할 수 있거나, 또는 복수 개 존재할 수도 있다. Or may not be in accordance with any particular embodiment is implemented of these elements coupled to the bus 1608, or only one may be present, or a plurality may be present.

일례에서, 프로세서(1602), 메모리(1604, 1606), 또는 저장 디바이스(1616) 중 하나 이상은 실행될 때 컴퓨터(1600)로 하여금 본 명세서에 설명된 방법 중 임의의 하나 이상을 수행할 수 있게 하는 명령(1624)을 각각 포함할 수 있다. In one example, processor 1602, when the memory (1604, 1606), or one or more of the storage device 1616 is executed causing a computer 1600 to be able to perform one or more of any of the methods described herein It may include a command 1624, respectively.대안적인 실시형태에서, 컴퓨터(1600)는 독립형 디바이스로서 동작하거나 또는 다른 디바이스에 연결(예를 들어, 네트워킹 연결)될 수 있다. In an alternative embodiment, the computer 1600 may be connected to operate as a stand-alone device, or another device (e.g., network connection).네트워킹 환경에서, 컴퓨터(1600)는 서버-클라이언트 네트워크 환경에서 서버 또는 클라이언트 디바이스의 능력으로 동작하거나 또는 피어 투 피어(또는 분산) 네트워크 환경에서 피어 디바이스로서 동작할 수 있다. In a networked environment, computer 1600 is a server can be operated by the power of a server or a client device in a client network environment, or peer-to-peer operation (or variance) as a peer device in the network environment.컴퓨터(1600)는 퍼스널 컴퓨터(PC), 태블릿 PC, 셋탑 박스(set-top box: STB), PDA(Personal Digital Assistant), 셀폰(cellular telephone), 웹 기기(web appliance), 네트워크 라우터, 스위치 또는 브리지, 또는 이 디바이스에 의해 취해질 동작을 특정하는 명령 세트(순차 또는 그 밖의 것)를 실행할 수 있는 임의의 디바이스를 포함할 수 있다. Computer 1600 includes a personal computer (PC), a tablet PC, a set-top box (set-top box: STB), (Personal Digital Assistant), PDA, cell phones (cellular telephone), the web device (web appliance), a network router, switch or bridges, or may include any device capable of executing a set of instructions (sequential or to other) for specifying the action to be taken by the device.나아가, 단일 컴퓨터(1600)만이 도시되어 있으나, "컴퓨터"라는 용어는 본 명세서에 설명된 방법 중 임의의 하나 이상을 수행하는 명령 세트(또는 다수의 세트)를 개별적으로 또는 공동으로 실행하는 임의의 디바이스 집합을 포함하는 것으로 또한 해석되어야 한다. Further, a single computer 1600 only are illustrated, "computer" as used herein is any running as an individual or common command set (or multiple sets) of performing any one or more of the methods described herein It should also be interpreted to include a device set.

컴퓨터 판독가능한 매체(1624)가 단일 매체로 도시되어 있으나, "컴퓨터 판독가능한 매체"라는 용어는 하나 이상의 명령(1624) 세트를 저장하는 단일 매체 또는 다수의 매체(예를 들어, 중앙집중된 또는 분산된 데이터베이스, 또는 연관된 캐시 및 서버, 및 또는 여러 유형의 저장 매체, 예를 들어, 프로세서(1602) 레지스터, 메모리(1604, 1606) 및 저장 디바이스(1616))를 포함하는 것으로 해석되어야 한다. The computer-readable medium 1624 that are illustrated as a single medium, the term "computer readable medium" is, for a single medium or multiple media that stores one or more instructions 1624 set (e.g., a centralized or distributed database, or associated caches and servers, and or different types of storage media, for example, to be construed as including a processor 1602, a register, a memory (1604, 1606) and a storage device 1616)."컴퓨터 판독가능한 매체"라는 용어는 컴퓨터에 의해 실행하기 위한 명령 세트를 저장, 인코딩 또는 운반할 수 있고, 컴퓨터로 하여금 본 발명의 방법 중 임의의 하나 이상의 것을 수행하게 하거나 또는 이 명령 세트에 의하여 사용되거나 이와 연관된 데이터 구조를 저장, 인코딩 또는 운반할 수 있는 임의의 매체를 포함하는 것으로 해석되어야 한다. The term "computer readable medium" is used by the storage, encoding, or may be carried, perform that cause a computer over any one of a method of the invention, or a command set of the set of instructions for execution by a computer or the associated data structure should be construed to include any medium capable of storing, encoding or carrying.따라서 "컴퓨터 판독가능한 매체"라는 용어는 솔리드 스테이트 메모리(solid-state memory), 광 매체 및 자기 매체와 같은 유형적인 매체를 포함하나 이로 제한되지 않는 것으로 해석되어야 한다. Therefore, the term "computer readable medium" shall be construed to include a tangible medium such as a solid state memory (solid-state memory), optical media, magnetic media, and one that is not limited thereto.

본 명세서의 특성과 개요를 독자들에게 확인할 수 있게 하는 요약을 요구하는 37 CFR 1.72(b)항에 따라 요약이 제공된다. This Summary is provided in accordance with 37 CFR 1.72 (b), wherein requesting a summary which allows to determine the nature and abstract of the disclosure to the reader.이 요약은 청구의 범위 또는 의미를 제한하거나 해석하는데 사용되어서는 안 되는 것으로 이해된다. This summary is understood that should not be used to interpret or limit the scope or meaning of the claims.이하 청구범위는 상세한 설명에 포함되며, 각 청구항은 별개의 실시형태로서 각자 존재한다. The following claims are incorporated into the Detailed Description, with each claim be each present as a separate embodiment.

예시적인 실시형태Exemplary embodiments

실시형태 1은 명령을 저장한 메모리를 구비하는 컴퓨터를 포함한다. Embodiment 1 includes a computer provided with a memory which stores the commands.상기 컴퓨터는 또한 상기 메모리에 통신가능하게 연결된 프로세서를 더 포함하고, 여기서 상기 명령은 프로세서에 의해 실행될 때 프로세서로 하여금, 소스 코드를 상태 및 상기 상태들 사이에 전이를 포함하는 오토마톤으로 변환하도록 하며, 상기 오토마톤에서 상태는 특수 목적 하드웨어 요소에 대응하는 특수 목적 상태를 포함한다. The computer may further include an associated processor, enable the communication to the memory, wherein the command and causes, when executed by a processor, a processor, configured to convert the automaton including a transition between the source state and the state and in the state automaton comprises a special purpose state corresponding to the special purpose hardware components.상기 명령은 또한 상기 프로세서로 하여금 상기 오토마톤을 네트리스트로 변환하게 하고, 상기 네트리스트를 배치하고 라우팅하여 타깃 디바이스를 구성하기 위한 기계 코드를 제공하게 한다. The instructions also cause the processor to provide a machine code for configuring the target device, and to convert the automaton into a netlist, to place and route the netlist.

실시형태 2는 하나 이상의 프로세서를 사용하여, 소스 코드를 구문 트리로 파싱하는 단계를 포함하는 컴퓨터로 구현되는 방법을 포함한다. Embodiment 2 includes a method of using one or more processors, implement a computer comprises the step of parsing the source code into a syntax tree.본 방법은 하나 이상의 프로세서를 사용하여, 상기 구문 트리를 오토마톤으로 변환하는 단계를 더 포함하며, 여기서 상기 오토마톤은 복수의 상태와 상기 복수의 상태들 사이의 전이를 가지는 거동 모델을 한정하며, 상기 오토마톤 구조는 타깃 하드웨어 디바이스에 의해 지시된다. By the method using one or more processors, further comprising the step of: converting the syntax tree into the automaton, wherein wherein the automaton defines a behavior model having a plurality of states and transitions between the plurality of states, the automaton structure is indicated by the target hardware device.본 방법은 하나 이상의 프로세서를 사용하여, 상기 오토마톤을 네트리스트로 변환하는 단계를 더 포함하며, 상기 네트리스트는 복수의 인스턴스를 포함하며, 각 인스턴스는 타깃 디바이스의 하드웨어 요소에 대응한다. By the method using one or more processors, further comprising the step of converting the automaton into a netlist, it said netlist comprises a plurality of instances, each instance corresponding to the hardware components of the target device.본 방법은 하나 이상의 프로세서를 사용하여, 각 인스턴스를 배치하는 단계를 더 포함하며, 상기 배치하는 단계는 상기 네트리스트의 각 인스턴스를 상기 타깃 디바이스의 하드웨어 요소에 할당하는 단계를 포함한다. By the method using one or more processors, further comprising the step of placing each instance, wherein the arrangement comprises the step of assigning the hardware components of the target device for each instance of the net list.본 방법은 하나 이상의 프로세서를 사용하여, 네트리스트의 함수로서 하드웨어 요소들 사이에 연결을 라우팅하는 단계와, 배치하는 단계와 라우팅하는 단계에 기초하여 타깃 디바이스를 프로그래밍하는데 사용되는 프로그래밍 데이터를 생성하는 단계를 더 포함한다. The method for generating programming data to, used on the basis of routing the connections between the hardware components as a function of the net list, and a step of placing and routing program the target device using the one or more processors the further it included.

실시형태 3은 하나 이상의 입력과 하나 이상의 출력을 구비하는 복수의 프로그래밍가능한 요소를 포함하는 프로그래밍가능한 디바이스를 포함한다. Embodiment 3 includes a programmable device comprising a plurality of programmable elements having at least one input and one output.프로그래밍가능한 디바이스는 외부 회로에 대해 복수의 프로그래밍가능한 요소의 일부를 인터페이싱하기 위한 입력 블록과 출력 블록을 더 포함한다. The programmable device further comprises an input block and output block for interfacing a portion of the plurality of programmable elements to an external circuit.프로그래밍가능한 디바이스는 복수의 프로그래밍 가능한 요소와 입력 블록과 출력 블록을 통신가능하게 연결하는 복수의 프로그래밍가능한 스위치를 더 포함하며, 여기서 하나 이상의 프로그래밍가능한 스위치를 설정하는 것은 상기 복수의 프로그래밍가능한 요소와 상기 복수의 프로그래밍 가능한 스위치 중 임의의 2개 이상 사이의 신호 라우팅을 선택적으로 제어한다. Programmable device further comprising: a plurality of programmable switch for communicably connecting a plurality of programmable elements and input block and the output block, where it is to set up one or more programmable switches and the plurality of the plurality of programmable elements of the programmable switch and selectively controlling the signal routing between any two or more thereof.프로그래밍가능한 디바이스는 복수의 프로그래밍가능한 요소와 복수의 프로그래밍가능한 스위치를 구성할 수 있는 프로그래밍가능한 데이터를 저장하도록 구성된 복수의 레지스터를 더 포함하며, 여기서 상기 프로그래밍가능한 데이터는 하나 이상의 프로세서를 사용하여, 소스 코드를 구문 트리로 파싱하는 것; The programmable device may further include a plurality of registers configured to store the programmable data for configuring a plurality of programmable elements and a plurality of programmable switches, wherein the programmable data using one or more processors, and the source code to parsing a syntax tree;상기 하나 이상의 프로세서를 사용하여, 구문 트리를 오토마톤으로 변환하는 것으로서, 상기 오토마톤은 복수의 상태와 상기 복수의 상태들 사이에 전이를 가지는 거동 모델을 한정하고, 상기 오토마톤 구조는 타깃 하드웨어 디바이스에 의해 지시되는 것인, 변환하는 것; As is used to convert an the one or more processors, the syntax tree into the automaton, the automaton defines a behavior model having a transition between a plurality of states and said plurality of status, and the automaton structure is a target hardware device, It would be indicated by, the conversion;상기 하나 이상의 프로세서를 사용하여, 상기 오토마톤을 네트리스트로 변환하는 것으로서, 여기서 상기 네트리스트는 복수의 인스턴스를 포함하고, 각 인스턴스는 타깃 디바이스의 하드웨어 요소에 대응하는 것인, 변환하는 것; As to use the one or more processors, and converting the automaton in the netlist, wherein the netlist includes a plurality of instances, each instance is to the, conversion to the corresponding hardware elements of the target device;상기 하나 이상의 프로세서를 사용하여, 각 인스턴스를 배치하는 것으로서, 상기 배치하는 것은 네트리스트의 각 인스턴스를 타깃 디바이스의 하드웨어 요소에 할당하는 것을 포함하는 것인, 배치하는 것; To use the one or more processors, as to place each instance, it is that the arrangement of, arranged to include the assignment of the hardware components of the target device for each instance of a net list;상기 하나 이상의 프로세서를 사용하여, 상기 네트리스트의 함수로서 상기 하드웨어 요소들 사이에 연결을 라우팅하는 것; To use the one or more processors, routing the connections between the hardware components as a function of the net list;및 상기 배치하는 것과 라우팅하는 것에 기초하여 상기 타깃 디바이스를 프로그래밍하는데 사용된 프로그래밍 데이터를 생성하는 것에 의해 생성된다. And it is generated by that route based upon the generated as placing the programming data used to program the target device.

실시형태 4는, 명령을 포함하는 컴퓨터 판독가능한 매체로서, 상기 명령이 하나 이상의 프로세서에 의해 실행될 때 이하 동작, 즉 소스 코드를 구문 트리로 파싱하는 동작; Embodiment 4 is a computer-readable medium comprising instructions, operable to parse the following operation when the instruction is executed by one or more processors, that is, source code syntax tree;상기 구문 트리를 오토마톤으로 변환하는 동작으로서, 상기 오토마톤은 복수의 상태와 상기 복수의 상태들 사이에 전이를 가지는 거동 모델을 한정하고, 상기 오토마톤 구조는 타깃 하드웨어 디바이스에 의해 지시되는 것인, 변환하는 동작; In that an operation for converting the syntax tree into the automaton, the automaton defines a behavior model having a transition between a plurality of states and said plurality of status, and the automaton structure is indicated by the target hardware device , transform operations to;상기 오토마톤을 네트리스트로 변환하는 동작으로서, 상기 네트리스트는 타깃 디바이스와 연관된 복수의 하드웨어 요소를 포함하고, 상기 네트리스트는 하드웨어 요소들 사이에 연결을 한정하는 것인, 변환하는 동작; As the operation for converting the automaton in the netlist, the netlist comprises a plurality of hardware elements, and the net list associated with the target device is in operation for, conversion to limit the connections between the hardware components;각 하드웨어 요소를 배치하는 동작으로서, 상기 배치하는 동작은 네트리스트의 각 하드웨어 요소를 타깃 디바이스 내의 위치로 할당하는 동작을 포함하는 것인, 배치하는 동작; An operation to place the respective hardware elements, the operation to place the above, operation for placing comprises an operation for allocating a position in the target for each of the hardware elements of the netlist device;네트리스트의 함수로서 상기 하드웨어 요소들 사이에 연결을 라우팅하는 동작; As a function of the net list operation for routing the connection between the hardware elements;및 상기 배치하는 동작과 라우팅하는 동작을 반영하기 위해 타깃 디바이스를 프로그래밍하는데 사용된 프로그래밍 데이터를 생성하는 동작을 수행하게 한다. And to perform the operation for generating the programming data used to program the target device to reflect the operation for routing the operation to the arrangement.

실시형태 5는, 하나 이상의 프로세서를 사용하여, 소스 코드를 구문 트리로 파싱하는 단계; Embodiment 5 is, by using one or more processors, the method comprising: parsing the source code into a syntax tree;상기 하나 이상의 프로세서를 사용하여, 상기 변환하는 단계를 사용하여 상기 구문 트리를 오토마톤으로 변환하는 단계를 포함하고, 상기 변환하는 단계는 타깃 디바이스에 기초하여 오토마톤 구조를 제한하는 것을 포함하고, 상기 타깃 하드웨어 디바이스는 GOT(group of two)로 쌍으로 형성된 상태 기계 요소를 포함하는 것인 컴퓨터로 구현되는 방법을 포함한다. Wherein using the one or more processors, and step comprises the step of using the step of the converting converts the syntax tree in the automaton, and wherein the conversion comprises limiting the automaton structure on the basis of the target device, the target hardware device comprises a method implemented in a computer comprising the state machine element is formed by a pair (group of two) GOT.본 방법은, 상기 하나 이상의 프로세서를 사용하여, 오토마톤을 네트리스트로 변환하는 단계로서, 상기 네트리스트는 타깃 디바이스와 연관된 복수의 하드웨어 요소를 포함하고, 상기 네트리스트는 상기 하드웨어 요소들 사이에 연결을 한정하는 것인, 변환하는 단계; The method, using the one or more processors, comprising the steps of: converting the automaton in the netlist, the netlist comprises a plurality of hardware elements, and the net list associated with the target device is connected between the hardware elements converting a, to a limited;상기 하나 이상의 프로세서를 사용하여, 각 하드웨어 요소를 배치하는 단계로서, 상기 배치하는 단계는 네트리스트의 각 하드웨어 요소를 타깃 디바이스 내 위치로 할당하는 단계를 포함하는 것인, 배치하는 단계; The method comprising using the one or more processors, the method comprising: placing the respective hardware elements, the method comprising: placing the can comprises the step of assigning to the target within the respective hardware elements of the netlist device position, disposed;상기 하나 이상의 프로세서를 사용하여, 상기 네트리스트의 함수로서 상기 하드웨어 요소들 사이에 연결을 라우팅하는 단계; The method comprising using the one or more processors, routing the connections between the hardware components as a function of the net list;및 상기 배치하는 단계와 라우팅하는 단계를 반영하기 위해 상기 타깃 디바이스를 프로그래밍하는데 사용되는 복수의 비트를 생성하는 단계를 더 포함한다. And further comprising generating a plurality of bits that are used to program the target device to reflect the routing and placing the.

실시형태 6에서, 실시형태 1 내지 5 중 어느 하나의 주제는, 소스 코드를 변환하는 것이 양화가 특수 목적 하드웨어 요소로 맵핑되는 조건을 충족할 때 양화를 특수 목적 하드웨어 상태를 포함하는 복수의 상태로 변환하는 것을 포함하는 것을 선택적으로 포함할 수 있다. In Embodiment 6, any one of the subject of the embodiment 1-5, a positive time to convert source code to satisfy the condition that is positive is mapped to the special purpose hardware elements of a plurality of states including a special purpose hardware state It may optionally include in that it comprises the conversion.

실시형태 7에서, 실시형태 1 내지 6 중 어느 하나의 주제는, 소스 코드를 변환하는 것이 양화가 특수 목적 하드웨어 요소로 맵핑되는 조건을 충족하지 않을 때 양화를 복수의 일반 목적 상태로 언롤링하는 것을 포함하는 것을 선택적으로 포함할 수 있다. Carried out in the mode 7, the embodiments 1 to 6 which one subject of which is, that is to convert a source code rolling foreign film is frozen to positive when the condition is not met, which maps to a special purpose hardware component of a plurality of general purpose status comprises may optionally include.

실시형태 8에서, 실시형태 1 내지 7 중 어느 하나의 주제는, 언롤링하는 것이 오토마톤의 진입 차수를 제어하기 위해 양화를 언롤링하는 것을 포함하는 것을 선택적으로 포함할 수 있다. In Embodiment 8, any of the subjects of the embodiments 1 to 7, unrolling it may optionally include that which comprises unrolling a foreign film in order to control the entry order of the automaton to.

실시형태 9에서, 실시형태 1 내지 8 중 어느 하나의 주제는, 오토마톤을 최적화하는 것을 선택적으로 포함하며, 여기서 상기 최적화하는 것은 특정 상태의 예측된 진입 차수가 타깃 디바이스의 제약을 초과할 때 오토마톤의 특정 상태를 다수의 상태로 분할하는 것을 포함하는 것을 선택적으로 포함할 수 있다. Performed in Embodiment 9, Embodiment 1 to 8 which one of the subjects of which, and optionally including to optimize the automaton, it is to the optimization, where the auto when the predicted entry order of the specified state to exceed the constraints of the target device, in that it comprises splitting a particular state of the automaton into a plurality of conditions it may optionally include.

실시형태 10에서, 실시형태 1 내지 9 중 어느 하나의 주제는, 특정 상태를 분할하는 것이 특정 상태의 구동 상태를 다수의 상태로 분배하되 다수의 상태 각각의 진입 차수가 제약을 충족하도록 분배하는 것을 포함하는 것을 선택적으로 포함할 수 있다. Carried out in the form 10, any one of the subject of the embodiments 1 to 9, that is to divide the defined state, but the distribution of the driving state of a particular state of a plurality of conditions for distributing a plurality of states each entry order to meet the constraints comprises may optionally include.

실시형태 11에서, 실시형태 1 내지 10 중 어느 하나의 주제는, 오토마톤을 네트리스트로 변환하는 것이 상태를 네트리스트의 인스턴스로 맵핑하는 것을 포함하고, 맵핑은 특수 목적 상태를 특수 목적 요소에 대응하는 특수 목적 인스턴스로 맵핑하는 것을 포함하는 것을 선택적으로 포함할 수 있다. In Embodiment 11, one of the subjects of the embodiments 1 to 10, including be converted to the automaton in the netlist that maps the condition as an instance of the netlist, and the mapping corresponding to the special purpose state in the special purpose elements that involves mapping a special purpose instances can optionally be included.

실시형태 12에서, 실시형태 1 내지 11 중 어느 하나의 주제는, 오토마톤을 네트리스트로 변환하는 것이 타깃 디바이스의 물리적 설계에 기초하여 상태를 서로 그룹화하는 것을 포함하는 것을 선택적으로 포함할 수 있다. Embodiment any of the subjects of the in form 12, the embodiments 1 to 11, may optionally contain that comprises to convert the automaton into a netlist that groups with each other on the basis of the physical design of the target device.

실시형태 14에서, 실시형태 1 내지 13 중 어느 하나의 주제는, 구문 트리를 오토마톤으로 변환하는 것이 소스 코드의 양화를 타깃 디바이스의 카운터 요소에 대응하는 특수 목적 상태를 포함하는 복수의 상태로 변환하는 것을 포함하는 것을 선택적으로 포함할 수 있다. In Embodiment 14, Embodiments 1 to 13, any one of the subject of which is, it converts the syntax tree of a plurality of conditions to be converted to the automaton target a foreign film of the source code includes a special purpose state that corresponds to the counter component of the device that comprises may optionally include.

실시형태 15에서 실시형태 1 내지 14 중 어느 하나의 주제는, SME에 대응하는 복수의 일반 목적 상태가 GOT 하드웨어 요소의 출력 제한에 기초하여 GOT 인스턴스를 형성하도록 서로 그룹화되는 것을 선택적으로 포함할 수 있다. Embodiment any of the subjects of the first embodiment to 14-15 is, a plurality of general purpose state corresponding to the SME may optionally contain that group one another to form a GOT instance on the basis of the output limit of the GOT hardware component .

실시형태 16에서, 실시형태 1 내지 15 중 어느 하나의 주제는 오토마톤의 진입 차수를 제한하는 것을 선택적으로 포함하며, 여기서 상기 진입 차수를 제한하는 것은 오토마톤의 상태로 전이하는 개수를 제한하는 것을 포함하는 것을 선택적으로 포함할 수 있다. Carried out in the form 16, the embodiments 1 to 15 which one subject of which is selectively included by limiting the entry order of the automaton, wherein limiting the entry order to limit the number of transitions to the state of the automaton comprises may optionally include.

실시형태 17에서, 실시형태 1 내지 16 중 어느 하나의 주제는, 진입 차수를 제한하는 것이 특정 상태를 다수의 상태로 분할하고 상기 특정 상태의 구동 상태를 다수의 상태로 분배하되 상기 다수의 상태 각각의 진입 차수가 제약을 충족하도록 분배하는 것을 포함하는 것을 선택적으로 포함할 수 있다. In Embodiment 17, Embodiments 1 to 16 of any of the subjects, but dividing the particular condition to limit the entry order of a number of conditions and distribution of the driving state of the particular state of a plurality of states each of the plurality of states the order of the entry which comprises distribution to meet the constraints may optionally include.

실시형태 18에서, 실시형태 1 내지 17 중 어느 하나의 주제는, 진입 차수를 제한하는 것이 양화를 복수의 언롤링된 상태로 언롤링하는 것과 상기 언롤링된 상태 중 어느 것에 대해 진입 전이의 개수를 제한하는 것을 포함하는 것을 선택적으로 포함할 수 있다. Carried out in the form 18, the embodiments 1 to 17 which one subject of which is, the number of the entry transition for any of the above unrolled state as to limit the entry order to unroll a foreign film in the rolled state a plurality of frozen to include limiting may optionally include.

실시형태 19에서, 실시형태 1 내지 18 중 어느 하나의 주제는, 변환하는 것이 소스 코드의 양화가 타깃 디바이스의 카운터로 맵핑될 조건을 충족하는지 여부를 결정하는 것과; In Embodiment 19, Embodiments 1 to 18, any one of which is subject, to convert to determining whether the source code of the foreign film meet the conditions that will be mapped to a counter of a target device;상기 양화가 상기 조건을 충족할 때, 상기 양화를 카운터 상태를 포함하는 복수의 상태로 변환하는 것; When the foreign film meet the conditions, the conversion of the quantification of a plurality of states including a state counter;및 상기 양화가 상기 조건을 충족하지 않을 때 상기 양화를 언롤링하는 것에 의해 상기 양화를 복수의 SME 상태로 변환하는 것을 포함하는 것을 선택적으로 포함할 수 있다. And has the positive number is optionally included as that comprising when not meet these criteria by unrolling the positive converting the quantification of a plurality of SME status.

실시형태 21에서, 실시형태 1 내지 20 중 어느 하나의 주제는, 양화가 상기 조건을 충족하는지 여부를 결정하는 것이 상기 양화의 반복된 표현이 상기 양화의 다른 반복된 표현의 접두사인지 여부를 결정하는 것을 포함하는 것을 선택적으로 포함할 수 있다. In Embodiment 21, Embodiments 1 to 20, any one of the subject of which is, for quantification is to determine whether or not the repeated representation of the positive prefix of another repeated expression of the foreign film to determine whether or not meet these criteria It may optionally include to include.

실시형태 22에서, 실시형태 1 내지 21 중 어느 하나의 주제는, 상기 양화를 카운터 상태를 포함하는 복수의 상태로 변환하는 것이 상기 복수의 상태를 양화와 카운터 상태의 반복된 표현을 포함하는 루프로 구현하는 것을 포함하고, 상기 카운터 상태는 반복된 표현이 매치되는 횟수를 카운트하도록 구성되며, 상기 카운터 상태는 반복된 표현이 양화에 의해 지정된 횟수에서 매치될 때 다운스트림 상태를 활성화시키는 것을 선택적으로 포함할 수 있다. In the embodiment 22, any one of the subject of the embodiments 1 to 21 are in a loop that is converting the quantification of a plurality of states including a counterbalanced condition including repeated representation of the positive and the counter state the state of said plurality the counter state, and includes the implementation is configured to count the number of times the repeat structure is a match, the counter status is optionally include that the repeated representation to enable the downstream state when a match on a given number of times by the positive can do.

실시형태 23에서, 실시형태 1 내지 22 중 어느 하나의 주제는, 언롤링하는 것이 타깃 디바이스의 진입 차수 제약에 기초하여 오토마톤의 진입 차수를 제어하도록 양화를 언롤링하는 것을 포함하는 것을 선택적으로 포함할 수 있다. In Embodiment 23, Embodiments 1 to 22, any one of the subject of which it is optionally include that which comprises, frozen by rolling is based on the entry order of the constraints of the target device to unroll a foreign film to control the entry order of the automaton can do.

실시형태 24에서, 실시형태 1 내지 23 중 어느 하나의 주제는, 변환하는 것이 공통 출력을 공유하는 GOT에 기초하여 오토마톤 구조를 제한하는 것을 포함하는 것을 선택적으로 포함할 수 있다. Carried out in the form 24, any one of the subject of the embodiments 1 to 23, there to be converted on the basis of the GOT that share a common output to optionally include in that it comprises limiting the automaton structure.

실시형태 25에서, 실시형태 1 내지 24 중 어느 하나의 주제는, 제한하는 것이 타깃 디바이스의 카운터 요소에 기초하여 오토마톤 구조를 제한하는 것을 포함하는 것을 선택적으로 포함할 수 있다. In Embodiment 25, Embodiments 1 to 24 of any of the subject is limited to the basis of the counter elements of the target device may optionally include in that it comprises limiting the automaton structure.

실시형태 26에서, 실시형태 1 내지 25 중 어느 하나의 주제는 복수의 비트를 발행하는 것을 선택적으로 포함할 수 있다. One embodiment of the subject in the form of 26, the embodiments 1 to 25 may optionally include to issue a plurality of bits.

실시형태 27에서, 실시형태 1 내지 26 중 어느 하나의 주제는 상기 복수의 상태를 감소시키기 위해 상기 오토마톤을 최적화하는 것을 선택적으로 포함할 수 있다. Carried out in the form 27, the embodiments 1 to 26 which one of the subject may optionally include to optimize the automaton in order to reduce the plurality of conditions.

실시형태 28에서, 실시형태 1 내지 27 중 어느 것의 주제를 사용하여 생산된 이미지에 의하여 프로그래밍된 병렬 기계를 포함한다. Carried out in the form 28, a first embodiment 27 to a parallel machine programmed by the image produced using the subject of any of the.

Claims (29)

Translated from Korean

컴퓨터로서, A computer,명령을 저장한 메모리; A memory storing instructions;및 And상기 메모리에 통신가능하게 연결된 프로세서를 포함하되, Comprising: a processor communicatively coupled to the memory,상기 명령은 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금, Wherein the instructions cause the processor, when executed by the processor,소스 코드를 상태 및 상기 상태들 사이의 전이를 포함하는 오토마톤(automaton)으로 변환하는 동작으로서, 상기 오토마톤의 상태는 특수 목적 하드웨어 요소에 대응하는 특수 목적 상태를 포함하는 것인, 상기 변환하는 동작; As the operation for converting the automaton (automaton), including a transition between states, and the state of the source code, the state of the automaton is to include a special purpose state corresponding to the special purpose hardware element, wherein the conversion action;상기 오토마톤을 네트리스트(netlist)로 변환하는 동작; Motion converting the automaton into a netlist (netlist);및 And타깃 디바이스를 구성하기 위한 기계 코드를 제공하기 위해 상기 네트리스트를 배치하고 라우팅하는 동작을 수행하게 하는 것인 컴퓨터. In order to provide the machine code for configuring the target device to perform an operation for placing and routing the netlist computer.

제2항에 있어서, 상기 프로세서로 하여금 소스 코드를 변환하게 하는 동작은 상기 양화가 특수 목적 하드웨어 요소로 맵핑될 조건을 충족하지 않을 때 상기 양화를 복수의 일반 목적 상태로 언롤링하는 동작을 포함하는 것인 컴퓨터. The method of claim 2, wherein the operation of causing converts the source code, the processor comprises the operation of unrolling the quantification of a plurality of general purpose state when the foreign film does not meet the conditions that will be mapped to a special purpose hardware component like a computer.

제3항에 있어서, 언롤링하는 동작은 상기 오토마톤의 진입 차수(in-degree)를 제어하도록 상기 양화를 언롤링하는 동작을 포함하는 것인 컴퓨터. The method of claim 3, wherein the unloading of a rolling operation which is to include the operation of unrolling the foreign film to control the entry order (in-degree) of the automaton computer.

제1항에 있어서, 상기 프로세서로 하여금 상기 오토마톤의 최적화를 수행하게 하는 명령을 더 포함하되, 상기 최적화하는 동작은 상기 오토마톤의 특정 상태의 예측된 진입 차수가 상기 타깃 디바이스의 제약을 초과할 때 상기 오토마톤의 특정 상태를 다수의 상태로 분할하는 동작을 포함하는 것인 컴퓨터. The method of claim 1, wherein the instructions cause the processor operable to further include a command to perform an optimization of the automaton, the optimization will be that the predicted entry order of the specific state of the automaton exceed the limitations of the target device, when the computer comprises the operation of dividing a certain state of the automaton into a plurality of states.

제5항에 있어서, 상기 특정 상태를 분할하는 동작은 상기 다수의 상태 각각의 진입 차수가 제약을 충족하도록 상기 특정 상태의 구동 상태를 상기 다수의 상태로 분배하는 것을 포함하는 것인 컴퓨터. The method of claim 5, wherein the computer operation for dividing the particular state is to include distributed to a plurality of the state of the driving state of the predetermined state, each of the entry order of the plurality of states to meet the constraints.

제1항에 있어서, 상기 프로세서로 하여금 상기 오토마톤을 네트리스트로 변환하게 하는 동작은 상기 상태를 상기 네트리스트의 인스턴스(instance)로 맵핑하는 동작을 포함하며, 상기 맵핑하는 동작은 상기 특수 목적 상태를 특수 목적 요소에 대응하는 특수 목적 인스턴스로 맵핑하는 동작을 포함하는 것인 컴퓨터. The method of claim 1, wherein the instructions cause the processor operating to transition the automaton a net list includes an operation for mapping the condition as an instance (instance) of the net list, operation of the mapping for the special purpose state which comprises an operation that maps to a special purpose instance corresponding to the special purpose computer components.

제7항에 있어서, 상기 프로세서로 하여금 상기 오토마톤을 네트리스트로 변환하게 하는 동작은 상기 타깃 디바이스의 물리적 설계에 기초하여 상태를 함께 그룹화하는 동작을 포함하는 것인 컴퓨터. A computer according to claim 7, wherein the operation of causing the processor to convert the automaton into a netlist is to include the operation for grouping condition, on the basis of the physical design of the target device.

컴퓨터로 구현되는 방법으로서, A method implemented in a computer,하나 이상의 프로세서를 사용하여, 소스 코드를 구문 트리(syntax tree)로 파싱(parsing)하는 단계; Parsing by using one or more processors, the syntax tree (syntax tree) a source comprising: (parsing);상기 하나 이상의 프로세서를 사용하여, 상기 구문 트리를 오토마톤으로 변환하는 단계로서, 상기 오토마톤은 복수의 상태와 상기 복수의 상태들 사이의 전이를 가지는 거동 모델을 한정하며, 상기 오토마톤의 구조는 타깃 하드웨어 디바이스에 의해 지시되는 것인, 상기 오토마톤으로 변환하는 단계; Using the one or more processors, comprising the steps of: converting the syntax tree into the automaton, the automaton is and only the behavior model having a transition between a plurality of states and said plurality of states, the structure of the automaton is It would be indicated by the target hardware device, converting to the automatons;상기 하나 이상의 프로세서를 사용하여, 상기 오토마톤을 네트리스트로 변환하는 단계로서, 상기 네트리스트는 복수의 인스턴스를 포함하며, 각 인스턴스는 타깃 하드웨어 디바이스의 하드웨어 요소에 대응하는 것인, 상기 네트리스트로 변환하는 단계; Using the one or more processors, the automaton comprising: converting a netlist, the netlist comprises a plurality of instances, each instance in the netlist is, corresponds to the hardware elements of a target hardware device, converting;상기 하나 이상의 프로세서를 사용하여, 상기 인스턴스 각각을 배치하는 단계; The method comprising using the one or more processors, arranging the instance, respectively;상기 하나 이상의 프로세서를 사용하여, 상기 네트리스트의 함수로서 상기 하드웨어 요소들 사이에 연결을 라우팅하는 단계; The method comprising using the one or more processors, routing the connections between the hardware components as a function of the net list;및 And배치하는 단계와 라우팅하는 단계에 기초하여 상기 타깃 하드웨어 디바이스를 프로그래밍하는데 사용되는 프로그래밍 데이터를 생성하는 단계를 포함하되, On the basis of the disposing and the step of routing comprising the step of generating the programming data used to program the target hardware device,상기 배치하는 단계는 상기 네트리스트의 각 인스턴스를 상기 타깃 하드웨어 디바이스의 하드웨어 요소에 할당하는 단계를 포함하는 것인 컴퓨터로 구현되는 방법. Method comprising: disposing the it can be implemented in a computer comprising the step of assigning the hardware components of the target hardware device, each instance of the net list.

제10항에 있어서, 상기 구문 트리를 오토마톤으로 변환하는 단계는 상기 소스 코드의 양화를 상기 타깃 하드웨어 디바이스의 카운터 요소에 대응하는 특수 목적 상태를 포함하는 복수의 상태로 변환하는 단계를 포함하는 것인 컴퓨터로 구현되는 방법. The method of claim 10, further comprising: converting the syntax tree as the automaton is comprising the step of converting a plurality of states including a special purpose state corresponding to the counter element of the target hardware device, the positive of the source code, a method implemented in a computer.

제10항에 있어서, SME에 대응하는 복수의 일반 목적 상태는 GOT(Group of Two) 하드웨어 요소의 출력 제한에 기초하여 GOT 인스턴스를 형성하도록 함께 그룹화된 것인 컴퓨터로 구현되는 방법. The method of claim 10, wherein the plurality of general purpose status corresponding to the SME is a method implemented in a computer will be grouped together to form a GOT instance on the basis of the output limit of the hardware elements (Group of Two) GOT.

제10항에 있어서, 상기 구문 트리를 오토마톤으로 변환하는 단계는 상기 오토마톤의 진입 차수를 제한하는 단계를 포함하되, 상기 진입 차수를 제한하는 단계는 상기 오토마톤의 상태로의 전이 개수를 제한하는 것을 포함하는 것인 컴퓨터로 구현되는 방법. The method of claim 10, further comprising: converting the syntax tree as the automaton comprises the steps of: comprising the step of restricting the entry order of the automaton, restrict the entry order is limited to the transition count to the state of the automaton a method implemented in a computer to include.

제13항에 있어서, 상기 진입 차수를 제한하는 단계는 특정 상태를 다수의 상태로 분할하는 단계와, 상기 다수의 상태 각각의 진입 차수가 제약을 충족하도록 상기 특정 상태의 구동 상태를 상기 다수의 상태로 분배하는 단계를 포함하는 것인 컴퓨터로 구현되는 방법. The method of claim 13, wherein the step of restricting the entry order is specified state a number of states wherein the driving state of the predetermined condition to dividing into a plurality of states and each of the entry order of the plurality of states to meet the constraints a method implemented in a comprises a step of distributing a computer.

제13항에 있어서, 상기 진입 차수를 제한하는 단계는 양화를 복수의 언롤링된 상태로 언롤링하는 단계와, 상기 언롤링된 상태 중 어느 것에 대해 진입 차수의 개수를 제한하는 단계를 포함하는 것인 컴퓨터로 구현되는 방법. The method of claim 13, wherein the step of restricting the entry order is comprising the step of limiting the number of entry order for any of the the steps of: unrolling a foreign film in the rolled state a plurality of unloading, rolling the frozen state a method implemented in a computer.

프로그래밍가능한 디바이스로서, A programmable device,하나 이상의 입력과 하나 이상의 출력을 포함하는 복수의 프로그래밍가능한 요소; A plurality of programmable elements comprising at least one input and one output;외부 회로에 대해 상기 복수의 프로그래밍가능한 요소의 일부를 인터페이싱하기 위한 입력 블록과 출력 블록; An input block for interfacing a portion of the plurality of programmable elements to the external circuit and the output blocks;상기 복수의 프로그래밍가능한 요소와 상기 입력 블록과 상기 출력 블록을 통신가능하게 연결하는 복수의 프로그래밍가능한 스위치; A plurality of programmable switch for communicably coupling the plurality of programmable elements and the input block and the output block;및 And상기 복수의 프로그래밍가능한 요소와 상기 복수의 프로그래밍가능한 스위치를 구성할 수 있는 프로그래밍 데이터를 저장하도록 구성된 복수의 레지스터를 포함하되, Comprising: a plurality of registers configured to store the programming data for configuring the plurality of programmable elements and the plurality of programmable switches,하나 이상의 프로그래밍가능한 스위치를 설정하는 것은 상기 복수의 프로그래밍가능한 요소와 상기 복수의 프로그래밍가능한 스위치 중 임의의 2개 이상 사이에 신호 라우팅을 선택적으로 제어하고, Setting at least one programmable switch and selectively controlling the signal routing between the plurality of programmable elements and the plurality of programmable switch of any two or more,상기 프로그래밍 데이터는, The programming data,하나 이상의 프로세서를 사용하여, 소스 코드를 구문 트리로 파싱하는 동작; Using at least one processor, it operates to parse source code into a syntax tree;상기 하나 이상의 프로세서를 사용하여, 상기 구문 트리를 오토마톤으로 변환하는 동작으로서, 상기 오토마톤은 복수의 상태와 상기 복수의 상태들 사이의 전이를 가지는 거동 모델을 한정하고, 상기 오토마톤의 구조는 타깃 디바이스에 의해 지시되는 것인, 상기 오토마톤으로 변환하는 동작; Using the one or more processors, as the operation for converting the syntax tree into the automaton, the automaton defines a behavior model having a plurality of states and transitions between the plurality of states, the structure of the automaton is It would be indicated by the target device, the operation of converting the said automaton;상기 하나 이상의 프로세서를 사용하여, 상기 오토마톤을 네트리스트로 변환하는 동작으로서, 상기 네트리스트는 복수의 인스턴스를 포함하며, 각 인스턴스는 상기 타깃 디바이스의 하드웨어 요소에 대응하는 것인, 상기 네트리스트로 변환하는 동작; Using the one or more processors, the automaton as an operation to convert the netlist, the netlist comprises a plurality of instances, each instance in the netlist which corresponds to the hardware components of the target device, operation for conversion;상기 하나 이상의 프로세서를 사용하여, 각 인스턴스를 배치하는 동작; Operation for using the one or more processors, place each instance;상기 하나 이상의 프로세서를 사용하여, 상기 네트리스트의 함수로서 상기 하드웨어 요소들 사이에 연결을 라우팅하는 동작; Using the at least one processor, it operates to route the connections between the hardware components as a function of the net list;및 And배치하는 동작과 라우팅하는 동작에 기초하여 상기 타깃 디바이스를 프로그래밍하는데 사용되는 프로그래밍 데이터를 생성하는 동작 On the basis of the placing operation and the routing operation of an operation of generating the programming data used to program the target device에 의해 생성되며, To be generated by,배치하는 동작은 상기 네트리스트의 각 인스턴스를 상기 타깃 디바이스의 하드웨어 요소에 할당하는 동작을 포함하는 것인 프로그래밍가능한 디바이스. Placing the operation of the programmable device comprises the operations of assigning the hardware components of the target device for each instance of the net list.

일시적 전파 신호가 아닌 컴퓨터 판독가능 매체로서, A computer-readable medium is not a temporary radio wave signal,상기 컴퓨터 판독가능 매체는 명령을 포함하고, The computer-readable medium contains a command,상기 명령은, 하나 이상의 프로세서에 의해 구현될 때, 이하의 동작들: Wherein the instructions, when implemented by the one or more processors, the following operation:소스 코드를 구문 트리로 파싱하는 동작; Operation to parse the source code as a syntax tree;상기 구문 트리를 오토마톤으로 변환하는 동작으로서, 상기 오토마톤은 복수의 상태와 상기 복수의 상태들 사이의 전이를 가지는 거동 모델을 한정하고, 상기 오토마톤의 구조는 타깃 디바이스에 의해 지시되는 것인, 상기 오토마톤으로 변환하는 동작; In that an operation for converting the syntax tree into the automaton, the automaton defines a behavior model having a transition between a plurality of states and said plurality of status, and the structure of the automaton is indicated by the target device, , operating to convert said automaton;상기 오토마톤을 네트리스트로 변환하는 동작으로서, 상기 네트리스트는 상기 타깃 디바이스와 연관된 복수의 하드웨어 요소를 포함하고, 상기 네트리스트는 상기 하드웨어 요소들 사이에 연결을 한정하는 것인, 상기 네트리스트로 변환하는 동작; The automaton as an operation to convert the netlist, the netlist is the net list, and a plurality of hardware elements associated with said target device in the netlist is, to limit the connections between the hardware components operation for conversion;상기 하드웨어 요소들 각각을 배치하는 동작; Operation for placing each of said hardware components;상기 네트리스트의 함수로서 상기 하드웨어 요소들 사이에 연결을 라우팅하는 동작; As a function of the net list operation for routing the connection between the hardware elements;및 And배치하는 동작과 라우팅하는 동작을 반영하기 위해 상기 타깃 디바이스를 프로그래밍하는데 사용되는 프로그래밍 데이터를 생성하는 동작을 수행하게 하며, To reflect the behavior and routing operation of the arrangement, and to perform the operation for generating the programming data used to program the target device,배치하는 동작은 상기 네트리스트의 각 하드웨어 요소를 상기 타깃 디바이스 내 위치에 할당하는 것을 포함하는 것인 컴퓨터 판독가능한 매체. Placing the operation of the computer readable medium comprising the assignment to the inside of the target device to each of the hardware elements of the netlist position.

제17항에 있어서, 상기 구문 트리를 오토마톤으로 변환하는 동작은, 18. The method of claim 17, wherein the operation of converting the syntax tree as the automaton is상기 소스 코드의 양화가 상기 타깃 디바이스의 카운터로 맵핑될 조건을 충족하는지 여부를 결정하는 동작; Operable to determine whether the positive of the source code to meet the conditions that will be mapped to the counter of the target device;상기 양화가 상기 조건을 충족할 때, 상기 양화를 카운터 상태를 포함하는 복수의 상태로 변환하는 동작; When the positive meet these criteria, the operation of converting a plurality of the positive state in which a counter state;및 And상기 양화가 상기 조건을 충족하지 않을 때, 상기 양화를 언롤링하는 것에 의해 상기 양화를 복수의 SME 상태로 변환하는 동작을 포함하는 것인 컴퓨터 판독가능한 매체. When the positive do not meet these criteria, the computer readable medium comprises an operation for by unrolling the positive converting the quantification of a plurality of SME status.

제19항에 있어서, 상기 양화가 상기 조건을 충족하는지 여부를 결정하는 동작은 상기 양화의 반복된 표현이 상기 양화의 다른 반복된 표현의 접두사인지 여부를 결정하는 동작을 포함하는 것인 컴퓨터 판독가능한 매체. 20. The method of claim 19, wherein the operation of determining whether the foreign film meets the above conditions is possible in computer program comprises an operation of the repeated expression of the foreign film determines if the prefix of the other repeated expression of the foreign film media.

제20항에 있어서, 상기 양화를 카운터 상태를 포함하는 복수의 상태로 변환하는 동작은 상기 복수의 상태를 상기 양화와 상기 카운터 상태의 반복된 표현을 포함하는 루프로서 구현하는 동작을 포함하고, 상기 카운터 상태는 상기 반복된 표현이 매치되는 횟수를 카운트하도록 구성되고, 상기 카운터 상태는 상기 반복된 표현이 상기 양화에 의해 지정된 횟수만큼 매치될 때 다운스트림 상태를 활성화하는 것인 컴퓨터 판독가능한 매체. 21. The method of claim 20, wherein the operation of converting the foreign film into a plurality of states including a counter state includes an act of implementing a loop, including the repeated expression of the counter state in which the positive and the condition of the plurality, wherein the counter state is a computer readable medium that is configured to count the number of times the expression of the match iteration, the counter state is active state when the downstream expression of the repeat be matched by the number of times designated by the foreign film.

제20항에 있어서, 언롤링하는 동작은 상기 타깃 디바이스의 진입 차수의 제약에 기초하여 상기 오토마톤의 진입 차수를 제어하도록 상기 양화를 언롤링하는 동작을 포함하는 것인 컴퓨터 판독가능한 매체. The method of claim 20, wherein the unrolling operation of the computer readable medium comprises the operation of unrolling the foreign film to control the entry order of the automaton on the basis of the constraints of the entry order of the target device.

컴퓨터로 구현되는 방법으로서, A method implemented in a computer,하나 이상의 프로세서를 사용하여, 소스 코드를 구문 트리로 파싱하는 단계; Using one or more processors, the method comprising: parsing the source code into a syntax tree;상기 하나 이상의 프로세서를 사용하여, 상기 구문 트리를 오토마톤으로 변환하는 단계로서, 상기 변환하는 단계는 The method comprising: using the one or more processors, converts the syntax tree as the automaton, wherein the conversion is타깃 하드웨어 디바이스에 기초하여 상기 오토마톤의 구조를 제한하는 단계를 포함하고, 상기 타깃 하드웨어 디바이스는 GOT로 쌍으로 형성된 상태 기계 요소를 포함하는 것인, 상기 오토마톤으로 변환하는 단계; Determining, based on the target hardware device comprising the step of limiting the structure of the automaton, and the conversion to the target hardware device includes a state machine element are formed in pairs in GOT, by the automaton;상기 하나 이상의 프로세서를 사용하여, 상기 오토마톤을 네트리스트로 변환하는 단계로서, 상기 네트리스트는 상기 타깃 하드웨어 디바이스와 연관된 복수의 하드웨어 요소를 포함하고, 상기 네트리스트는 상기 하드웨어 요소들 사이에 연결을 한정하는 것인, 상기 네트리스트로 변환하는 단계; The method comprising: converting the automaton in the netlist, the netlist comprises a plurality of hardware elements associated with said target hardware device, using the one or more processors, the netlist is the connection between the hardware elements It is limited to the step of conversion to the netlist;상기 하나 이상의 프로세서를 사용하여, 각 하드웨어 요소를 배치하는 단계; The method comprising using the one or more processors, place each hardware element;상기 하나 이상의 프로세서를 사용하여, 상기 네트리스트의 함수로서 상기 하드웨어 요소들 사이에 연결을 라우팅하는 단계; The method comprising using the one or more processors, routing the connections between the hardware components as a function of the net list;및 And배치하는 단계 및 라우팅하는 단계를 반영하기 위해 상기 타깃 하드웨어 디바이스를 프로그래밍하는데 사용되는 복수의 비트를 생성하는 단계를 포함하되, To reflect the step of disposing and the step of routing comprising the step of generating a plurality of bits that are used to program the target hardware device,배치하는 단계는 상기 네트리스트의 각 하드웨어 요소를 상기 타깃 하드웨어 디바이스 내 위치에 할당하는 단계를 포함하는 것인 컴퓨터로 구현되는 방법. Method placing is implemented in a comprises the step of assigning to the target location within the hardware device, each hardware element of the computer net list.

제24항에 있어서, 구문 트리를 오토마톤으로 변환하는 단계는 공통 출력을 공유하는 GOT에 기초하여 오토마톤의 구조를 제한하는 단계를 포함하는 것인 컴퓨터로 구현되는 방법. The method of claim 24, wherein the step of converting the syntax tree as the automaton is based on the method of GOT that share a common output in the implementation comprises the step of limiting the structure of the automaton computer.

제24항에 있어서, 오토마톤의 구조를 제한하는 단계는 상기 타깃 하드웨어 디바이스의 카운터 요소에 기초하여 상기 오토마톤의 구조를 제한하는 단계를 포함하는 것인 컴퓨터로 구현되는 방법. 25. The method of claim 24, further comprising: limiting the structure of the automaton is implemented in a computer comprising the step of limiting the structure of the automaton on the basis of the counter elements of the target hardware device.

제24항에 있어서, 상기 구문 트리를 오토마톤으로 변환하는 단계에 응답하여, 상기 오토마톤내의 복수의 상태를 감소시키기 위해 상기 오토마톤을 최적화하는 단계 - 상기 오토마톤내의 복수의 상태는 특수 목적 하드웨어 요소에 대응하는 특수 목적 상태를 포함함 - 를 더 포함하는, 컴퓨터로 구현되는 방법. 25. The method of claim 24, wherein in response to the step of converting the syntax tree into the automaton, the method comprising optimizing the automaton in order to reduce the plurality of states in the automaton - a plurality of states in the automaton is of special purpose hardware the method implemented, the computer further comprising: - including a special purpose state corresponding to the element.

Generation method for automaton for verifying validity of xml document, validity verifying method for xml document, generation system for automaton for verifying validity of xml document, and system and program for verifying validity of xml document