KR100803254B1 - Computer readable recording medium for storing computer program - Google Patents

Computer readable recording medium for storing computer program Download PDF

Info

Publication number
KR100803254B1
KR100803254B1 KR1020050118069A KR20050118069A KR100803254B1 KR 100803254 B1 KR100803254 B1 KR 100803254B1 KR 1020050118069 A KR1020050118069 A KR 1020050118069A KR 20050118069 A KR20050118069 A KR 20050118069A KR 100803254 B1 KR100803254 B1 KR 100803254B1
Authority
KR
South Korea
Prior art keywords
circuit design
asynchronous
language
data
port
Prior art date
Application number
KR1020050118069A
Other languages
Korean (ko)
Other versions
KR20060084355A (en
Inventor
노부오 가라키
이탁관
Original Assignee
세이코 엡슨 가부시키가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/037,139 external-priority patent/US7418676B2/en
Application filed by 세이코 엡슨 가부시키가이샤 filed Critical 세이코 엡슨 가부시키가이샤
Publication of KR20060084355A publication Critical patent/KR20060084355A/en
Application granted granted Critical
Publication of KR100803254B1 publication Critical patent/KR100803254B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44589Program code verification, e.g. Java bytecode verification, proof-carrying code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

본 발명은 산업계에 널리 보급되어 있는 동기 회로 설계의 하드웨어 기술 언어에 숙달된 기술자가 비교적 용이하게 비동기 회로 설계를 행하기 위한 비동기 회로 설계 툴을 제공하는 것을 과제로 한다.An object of the present invention is to provide an asynchronous circuit design tool for a person skilled in the hardware description language of synchronous circuit design that is widely used in the industry to perform asynchronous circuit design relatively easily.

비동기 회로 설계 툴은, 동기 회로 설계용 하드웨어 기술 언어에 비동기 프로세스간 통신을 가능하게 하는 프리미티브가 부가된 비동기 회로 설계 언어에 의해 기술된 코드를 동기 회로 설계용 하드웨어 기술 언어로 변환하는 변환 수단을 구비한 트랜슬레이터를 포함한다. 비동기 회로 설계 언어에 의해 기술된 코드를 동기 회로 설계용 하드웨어 기술 언어로 변환함으로써, 동기 회로용 시판 시뮬레이터에 의해 회로 설계의 기능 검증을 행하는 것이 가능해진다.The asynchronous circuit design tool has conversion means for converting code described by an asynchronous circuit design language with a primitive that enables asynchronous interprocess communication to a hardware description language for synchronous circuit design into a hardware description language for synchronous circuit design. It includes one translator. By converting the code described by the asynchronous circuit design language into the hardware description language for the synchronous circuit design language, it becomes possible to perform functional verification of the circuit design by the commercial simulator for the synchronous circuit.

비동기 회로, 기술 언어, 회로 설계, 프리미티브, 툴 Asynchronous Circuits, Description Languages, Circuit Design, Primitives, Tools

Description

컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체{COMPUTER READABLE RECORDING MEDIUM FOR STORING COMPUTER PROGRAM}Computer-readable recording medium recording a computer program {COMPUTER READABLE RECORDING MEDIUM FOR STORING COMPUTER PROGRAM}

도 1은 업계 표준 Verilog HDL을 사용한 전형적인 회로 설계 플로(flow).1 is a typical circuit design flow using industry standard Verilog HDL.

도 2는 비동기 회로에서의 프로세스간 통신을 나타낸 도면.2 illustrates interprocess communication in an asynchronous circuit.

도 3은 프로세스간의 2상(相) 핸드셰이크(handshake)를 나타낸 도면.FIG. 3 shows a two phase handshake between processes. FIG.

도 4는 프로세스간의 4상 핸드셰이크를 나타낸 도면.4 shows a four phase handshake between processes.

도 5는 포트 속성의 조합을 나타낸 도면.5 illustrates a combination of port attributes.

도 6은 포트 속성과 채널 신호의 설명도.6 is an explanatory diagram of port attributes and channel signals;

도 7은 2선(線) 인코딩(encoding)의 설명도.7 is an explanatory diagram of two-line encoding.

도 8은 2선 인코딩의 설명도.8 is an explanatory diagram of two-line encoding.

도 9는 핸드셰이크 회로의 설명도.9 is an explanatory diagram of a handshake circuit.

도 10은 프로세스 A의 비동기 설계 기술(記述).10 is an asynchronous design description of process A.

도 11은 프로세스 B의 비동기 설계 기술.11 is an asynchronous design technique of Process B.

도 12는 프로세스 C의 비동기 설계 기술.12 illustrates an asynchronous design of process C.

도 13은 트랜슬레이터(translator)의 설명도.13 is an explanatory diagram of a translator.

도 14는 전용(專用) 시뮬레이터의 설명도.14 is an explanatory diagram of a dedicated simulator;

도 15는 프로세스 A의 Verilog 코드 변환 예.15 shows an example of Verilog code conversion of process A. FIG.

도 16은 핸드셰이크 회로의 비동기 설계 기술.16 illustrates an asynchronous design of the handshake circuit.

도 17은 핸드셰이크 회로의 Verilog 코드 변환 예.Fig. 17 shows Verilog code conversion example of the handshake circuit.

도 18은 2선식 인코딩(encoding)의 변환 스킴(scheme).18 shows a conversion scheme of two-wire encoding.

도 19는 2선식 인코더(encoder)/디코더(decoder)의 설명도.FIG. 19 is an explanatory diagram of a two-wire encoder / decoder. FIG.

도 20은 논리 합성 툴(tool)의 설명도.20 is an explanatory diagram of a logic synthesis tool.

도 21은 프로세스 A의 네트리스트(netlist).21 is a netlist of process A;

도 22는 프로세스 A의 회로도.22 is a circuit diagram of Process A.

도 23은 reg-simple 접속도.Fig. 23 is a reg-simple connection diagram.

도 24는 bit-to-dual 접속도.24 is a bit-to-dual connection diagram.

도 25는 Q_elem 접속도.25 is a Q_elem connection diagram.

도 26은 Q_elem의 입출력 신호의 시퀀스(sequence).Fig. 26 is a sequence of input / output signals of Q_elem.

도 27은 Muller-C 엘리먼트(element) 접속도.27 is a Muller-C element connection diagram.

도 28은 probe 커맨드(command)를 사용한 비동기 회로 설계 코드.28 is asynchronous circuit design code using a probe command.

도 29는 Verilog 코드의 코딩 예.29 is a coding example of Verilog code.

도 30은 비동기 프로세스간 통신의 설명도.30 is an explanatory diagram of asynchronous interprocess communication.

도 31은 프로세스간의 핸드셰이크의 설명도.31 is an explanatory diagram of an interprocess handshake;

도 32는 probe 커맨드를 사용한 비동기 회로 설계 코드.32 is an asynchronous circuit design code using a probe command.

도 33은 Verilog 코드의 코딩 예.33 is a coding example of Verilog code.

도 34는 비동기 프로세스간 통신의 설명도.34 is an explanatory diagram of asynchronous interprocess communication.

도 35는 프로세스간의 핸드셰이크의 설명도.35 is an explanatory diagram of an interprocess handshake;

도 36은 sync 커맨드를 사용한 비동기 회로 설계 코드.36 is an asynchronous circuit design code using a sync command.

도 37은 Verilog 코드의 코딩 예.37 is a coding example of Verilog code.

도 38은 비동기 프로세스간 통신의 설명도.38 is an explanatory diagram of asynchronous interprocess communication.

도 39는 프로세스간의 핸드셰이크의 설명도.39 is an explanatory diagram of an interprocess handshake;

도 40은 sync 커맨드를 사용한 비동기 회로 설계 코드.40 is an asynchronous circuit design code using a sync command.

도 41은 Verilog 코드의 코딩 예.Fig. 41 is a coding example of Verilog code.

*도면의 주요 부분에 대한 부호의 설명** Description of the symbols for the main parts of the drawings

10 : 트랜슬레이터(translator)10: translator

11 : 변환 수단11: conversion means

20 : 전용(專用) 시뮬레이터20: dedicated simulator

21 : 검증 수단21: Verification means

30 : 논리 합성 툴(tool)30: logic synthesis tool

31 : 논리 합성 수단31: logical synthesis means

32 : 셀 라이브러리(cell library)32: cell library

40 : 비동기 회로 설계 언어40: Asynchronous Circuit Design Language

50 : Verilog 코드50: Verilog Code

60 : 네트리스트(netlist)60: netlist

본 발명은 비동기 회로 설계 언어에 의해 기술(記述)된 코드를 검증 또는 논리 합성하기 위한 비동기 회로 설계 툴 및 컴퓨터 프로그램에 관한 것이다.The present invention relates to asynchronous circuit design tools and computer programs for verifying or logically synthesizing code described by an asynchronous circuit design language.

IC 기술의 급속한 발달에 의한 회로 규모의 비약적인 증대에 따라, 디지털 회로 설계에는 HDL(Hardware Description Language)에 의한 텍스트 베이스(text-base)의 회로 설계와 검증이 일반화되고 있다. 회로 규모의 비약적인 증대는 글로벌 클록(global clock)에 의해 전체 회로를 구동하는 동기 설계 수법을 상당히 단시간에 표준적인 수법으로서 보급시켰다. 현재의 상용(商用) 설계 환경을 구성하는 CAE/CAD 툴, SSI·MSI 부품, 셀 라이브러리 등은 거의 모두 동기 설계용으로만 준비된 것이다. 그런데, 최근 반도체 기술의 미세화, VLSI 칩의 대형화, 클록 주파수의 증대가 진행됨에 따라 클록 스큐(clock skew)의 문제가 발생하게 되었다. 프로세스의 미세화에 의해 스위칭 소자의 지연(delay)은 작아졌지만, 그 반면 배선 지연은 상대적으로 커진다. 그 결과, 칩을 횡단하는 클록 전체계의 지연은 칩 내의 장소에 따라 크게 달라지고, 그 크게 다른 글로벌 클록 신호에 의해 구동되는 소자의 입출력 신호의 위상 일관성은 이미 보증되지 않게 된다. 클록 스큐의 문제에 더하여, 소비전력 증대도 큰 문제로 되고 있다. 미세화에 따른 소자의 고속화와 회로 규모의 기하급수적인 증대에 따른 VLSI의 소비전력의 기하급수적인 증대가 큰 문제로 되고 있다. 또한, 동기 회로의 클록에 동기한 복사(輻射) 노이즈도 문제이다. 비동기 설계는 이러한 클록 스큐, 소비전력 및 복사 노이즈의 문제를 해결하는 기술로서 주목받고 있다.Due to the rapid increase in circuit scale due to the rapid development of IC technology, text-based circuit design and verification by HDL (Hardware Description Language) is becoming common in digital circuit design. The remarkable increase in circuit scale has made the synchronous design technique of driving the entire circuit by the global clock quite a short time as a standard technique. Almost all CAE / CAD tools, SSI and MSI components, and cell libraries that make up the current commercial design environment are ready for synchronous design. However, as the semiconductor technology, the VLSI chip, and the clock frequency increase in recent years, problems of clock skew have occurred. Due to the miniaturization of the process, the delay of the switching element is small, while the wiring delay is relatively large. As a result, the delay of the clock system across the chip varies greatly depending on the place in the chip, and the phase consistency of the input / output signal of the device driven by the significantly different global clock signal is not already guaranteed. In addition to the problem of clock skew, increasing power consumption is also a major problem. The exponential increase of the power consumption of the VLSI due to the high speed of the device due to miniaturization and the exponential increase of the circuit scale has become a big problem. In addition, radiation noise synchronized with the clock of the synchronization circuit is also a problem. Asynchronous design has attracted attention as a technique for solving such problems of clock skew, power consumption and radiated noise.

비동기 회로를 설계할 경우, 회로도 입력으로부터 시작하여 구조적·계층적으로 설계를 진행시키는 수법과, 텍스트 베이스에서 설계 언어를 사용하여 설계·검증을 행하는 방법이 있다. 전자(前者)의 수법은 직감적이며, 소규모 회로의 설계에는 적합하지만, 대규모 회로의 설계에는 부적합하다. 특히 설계된 회로가 원하는 기능을 발휘하는지의 여부의 베리피케이션(verification), 설계 변경에 따른 포멀(formal) 검증, 소프트웨어와의 결합 검증, 블록간 결합 검증 등이 필수인 최근의 회로 규모를 감안하면 상당히 비현실적인 수법이다. 후자(後者)의 설계 수법에서는, 텍스트 베이스에서의 설계 언어로서, OCCAM, CSP, Tangram 등이 있다. OCCAM은 Transputer용 병렬 프로그래밍(programming) 언어로서도 사용되었지만, 미국 Utha대학의 Brunvand 조교수 등에 의해 비동기 회로의 설계에 사용되었다. CSP는 캘리포니아공과대학의 Alain Martin 조교수 그룹에 의해 VLSI 프로그래밍 언어로서 사용되었다. Tangram은 CSP 베이스의 독자(獨自) 언어로서 필립스 연구소의 Kees van Berkel에 의해 개발된 비동기 회로 기술 언어이다. 논리 합성이 Syntax-directed Translation에 의해 실행되는 점은 CSP와 동일하다. 이들 설계 언어와 합성 툴은 아직 상용화되어 있지 않기 때문에, 이들을 구사하여 비동기 회로를 설계할 수 있는 엔지니어는 연구소 또는 대학 등의 연구기관에 한정되어 있다. 또한, 이들 설계 언어를 사용하여 기술된 설계를 최종적인 LSI로 하기 위한 각종 툴도 현재 상태에서는 각 기관 독자의 것이며, 업계 표준적인 것은 아직 제공되지 않았다는 문제가 있다.In the case of designing an asynchronous circuit, there are a method of proceeding designing structurally and hierarchically starting from a schematic input and a method of designing and verifying using a design language on a text base. The former technique is intuitive and suitable for the design of small circuits, but not for the design of large circuits. In particular, considering the recent circuit size, it is necessary to verify whether the designed circuit performs the desired function, formal verification according to the design change, joint verification with software, and inter-block joint verification. It's a pretty unreal technique. In the latter design method, there are OCCAM, CSP, Tangram, and the like as the design language in the text base. OCCAM was also used as a parallel programming language for the transmitter, but was used in the design of asynchronous circuits by Brunvand, an assistant professor at Utha University. CSP was used as a VLSI programming language by the Alain Martin assistant professor group at the California Institute of Technology. Tangram is a CSP-based proprietary language developed by Kees van Berkel of the Philips lab, asynchronous circuit description language. Logical synthesis is performed by Syntax-directed Translation in the same way as CSP. Since these design languages and synthesis tools are not commercially available, engineers who can use them to design asynchronous circuits are limited to research institutes and universities. In addition, various tools for making the final LSI described using these design languages are owned by the respective institutions in the current state, and there is a problem that an industry standard has not yet been provided.

그래서, 본 발명은 산업계에 널리 보급되어 있는 동기 회로 설계의 하드웨어 기술 언어에 숙달된 기술자가 비교적 용이하게 비동기 회로 설계를 행하기 위한 비동기 회로 설계 툴 및 컴퓨터 프로그램을 제공하는 것을 과제로 한다.Accordingly, an object of the present invention is to provide an asynchronous circuit design tool and a computer program for a person skilled in the hardware description language of synchronous circuit design that is widely used in the industry for relatively asynchronous circuit design.

상기 과제를 해결하기 위해, 본 발명의 비동기 회로 설계 툴은, 동기 회로 설계용 하드웨어 기술 언어에 비동기 프로세스간 통신을 가능하게 하는 프리미티브(primitive)가 부가된 비동기 회로 설계 언어에 의해 기술된 코드를 동기 회로 설계용 하드웨어 기술 언어로 변환하는 변환 수단을 구비하는 트랜슬레이터를 포함한다. 비동기 회로 설계 언어에 의해 기술된 코드를 동기 회로 설계용 하드웨어 기술 언어로 변환함으로써, 동기 회로용 시판(市販) 시뮬레이터에 의해 회로 설계의 기능 검증을 행하는 것이 가능해진다.In order to solve the above problems, the asynchronous circuit design tool of the present invention synchronizes codes described by an asynchronous circuit design language with a primitive that enables asynchronous interprocess communication to a hardware description language for synchronous circuit design. A translator having conversion means for converting to a hardware description language for circuit design. By converting the code described by the asynchronous circuit design language into the hardware description language for the synchronous circuit design language, it becomes possible to perform the functional verification of the circuit design by a commercial simulator for the synchronous circuit.

본 발명의 비동기 회로 설계 툴은, 동기 회로 설계용 하드웨어 기술 언어에 비동기 프로세스간 통신을 가능하게 하는 프리미티브가 부가된 비동기 회로 설계 언어에 의해 기술된 비동기 회로 설계를 기능 검증하기 위한 검증 수단을 구비하는 전용 시뮬레이터를 포함한다. 비동기 회로 설계 언어에 의해 기술된 비동기 회로 설계를 기능 검증하기 위한 전용 시뮬레이터를 사용함으로써, 비동기 회로 설계 언어를 동기 회로 설계용 하드웨어 기술 언어로 변환하지 않아도, 기능 검증을 행할 수 있다.The asynchronous circuit design tool of the present invention includes verification means for functionally verifying an asynchronous circuit design described by an asynchronous circuit design language with a primitive that enables asynchronous interprocess communication to a hardware description language for synchronous circuit design. Includes a dedicated simulator. By using a dedicated simulator for functionally verifying the asynchronous circuit design described by the asynchronous circuit design language, functional verification can be performed without converting the asynchronous circuit design language into the hardware description language for the synchronous circuit design language.

본 발명의 비동기 회로 설계 툴을 구성하는 전용 시뮬레이터에 있어서, 검증 수단은 컴파일(compile) 방식에 의해 비동기 회로 설계 언어를 중간 언어로 변환하고 나서 기능 검증을 행할 수도 있으며, 또는 인터프리터(interpreter) 방식에 의 해 비동기 회로 설계 언어를 차례로 해석하면서 기능 검증을 행할 수도 있다. 대규모 회로 설계에서는 컴파일 방식이 적합하고, 소규모 회로 설계에서는 인터프리터 방식이 적합하다.In the dedicated simulator constituting the asynchronous circuit design tool of the present invention, the verification means may perform functional verification after converting the asynchronous circuit design language into an intermediate language by a compile method, or in an interpreter method. The function verification can be performed by sequentially interpreting the asynchronous circuit design language. Compilation works well in large circuit designs, and interpreter works well in small circuit designs.

본 발명의 비동기 회로 설계 툴은, 동기 회로 설계용 하드웨어 기술 언어에 비동기 프로세스간 통신을 가능하게 하는 프리미티브가 부가된 비동기 회로 설계 언어에 의해 기술된 코드를 논리 합성하여 네트리스트를 생성하는 논리 합성 수단을 구비하는 논리 합성 툴을 포함한다. 비동기 회로 설계 언어에 의해 기술된 코드를 논리 합성하여 네트리스트를 생성함으로써, 실제 회로에 실장(實裝) 가능한 회로 접속 정보를 얻을 수 있다.The asynchronous circuit design tool of the present invention is a logic synthesizing means for generating a netlist by logically synthesizing a code described by an asynchronous circuit design language with a primitive that enables asynchronous interprocess communication to a hardware description language for synchronous circuit design. It includes a logic synthesis tool having a. By generating a netlist by logically synthesizing the code described by the asynchronous circuit design language, it is possible to obtain circuit connection information that can be mounted on an actual circuit.

본 발명의 비동기 회로 설계 툴을 구성하는 논리 합성 툴에 있어서, 동기 회로 설계용 셀과 비동기 회로 설계용 셀로 이루어지는 셀 라이브러리를 더 구비하고, 논리 합성 수단은 셀 라이브러리를 참조하여 네트리스트를 생성하는 구성으로 하는 것이 바람직하다. 동기 회로 설계용 셀에 더하여 비동기 회로 설계용 셀을 추가하는 것만으로, 네트리스트 생성에 필요한 셀 라이브러리를 구축할 수 있다.A logic synthesis tool constituting the asynchronous circuit design tool of the present invention, further comprising a cell library comprising a cell for synchronous circuit design and a cell for asynchronous circuit design, wherein the logic synthesis means generates a netlist by referring to the cell library It is preferable to set it as. By adding a cell for asynchronous circuit design in addition to a cell for synchronous circuit design, a cell library necessary for netlist generation can be constructed.

본 발명의 비동기 회로 설계 언어에 있어서, 프로세스간 통신용 데이터형으로서, cport와 channel을 포함하는 것이 바람직하다. cport는, 속성으로서, active/passive 및 input/output을 구비하는 것이 바람직하다. 예를 들어 스테이트먼트(statement) In the asynchronous circuit design language of the present invention, it is preferable to include cport and channel as data types for interprocess communication. The cport preferably has active / passive and input / output as attributes. For example, statements

cport active input [7:0] A;cport active input [7: 0] A;

는, cport A가 active port이고, 8비트의 input port임을 선언(宣言)한다.Declares that cport A is the active port and 8-bit input port.

또한, 스테이트먼트 Also, statements

channel [7:0] T;channel [7: 0] T;

는, channel T가 Sub-process의 cport를 접속하는 8비트 폭의 channel임을 선언한다.Declares that channel T is an 8-bit wide channel connecting the subport cport.

본 발명의 비동기 회로 설계 언어에 있어서, 프로세스간 통신용 커맨드로서, send, receive, sync 및 probe를 포함하는 것이 바람직하다. 스테이트먼트에서 통신을 행하는 cport와 변수를 지정한다.In the asynchronous circuit design language of the present invention, it is preferable to include send, receive, sync and probe as commands for interprocess communication. Specify a cport and a variable to communicate with in the statement.

스테이트먼트 Statement

send (A, x);, receive (B, y);send (A, x); receive (B, y);

는, 변수 x의 데이터를 cport A를 통하여 상대 프로세스에 송신하고, cport B를 통하여 수신한 데이터를 변수 y에 저장하는 것을 의미한다.Means that the data of the variable x is transmitted to the partner process through cport A, and the data received through the cport B is stored in the variable y.

또한, 스테이트먼트 Also, statements

sync (Z);sync (Z);

는, cport Z를 이용하여 동기를 취하는 것을 의미하지만, 데이터 송수신은 행하지 않는다. 상기 send, receive 및 sync 커맨드는, 실제 회로에서는 2상 내지 4상 핸드셰이킹(handshaking)을 기동(起動)한다.Means synchronizing using cport Z, but data transmission and reception are not performed. The send, receive, and sync commands activate 2-phase to 4-phase handshaking in the actual circuit.

또한, 커맨드 probe는 값을 되돌리는 Function이며, 예를 들어 스테이트먼트 In addition, a command probe is a function that returns a value, for example, a statement.

probe (B);probe (B);

는, cport B를 통하여 cport B에 접속되어 있는 channel 상에 있는 즉치(卽値)를 되돌린다. probe 커맨드를 사용함으로써, 프로세스간의 핸드셰이크를 개시 하기 전에, 예를 들어 준비로서 임의의 처리를 행할 수 있다.Returns immediate values on the channel connected to cport B via cport B. By using the probe command, any processing can be performed, for example, as preparation before initiating an interprocess handshake.

본 발명의 컴퓨터 프로그램은, 동기 회로 설계용 하드웨어 기술 언어에 비동기 프로세스간 통신을 가능하게 하는 프리미티브가 부가된 비동기 회로 설계 언어에 의해 기술된 코드를 동기 회로 설계용 하드웨어 기술 언어로 변환하는 변환 수단으로서, 컴퓨터 시스템을 기능시키기 위한 컴퓨터 프로그램이다. 비동기 회로 설계 언어에 의해 기술된 코드를 동기 회로 설계용 하드웨어 기술 언어로 변환하는 컴퓨터 프로그램을 실행함으로써, 동기 회로용 시판 시뮬레이터에 의해 회로 설계의 기능 검증을 행하는 것이 가능해진다.The computer program of the present invention is a converting means for converting a code described by an asynchronous circuit design language with a primitive that enables asynchronous interprocess communication to a hardware description language for synchronous circuit design into a hardware description language for synchronous circuit design. A computer program for operating a computer system. By executing a computer program for converting the code described by the asynchronous circuit design language into the hardware description language for the synchronous circuit design language, the function of the circuit design can be verified by the commercial simulator for the synchronous circuit.

본 발명의 컴퓨터 프로그램은, 동기 회로 설계용 하드웨어 기술 언어에 비동기 프로세스간 통신을 가능하게 하는 프리미티브가 부가된 비동기 회로 설계 언어에 의해 기술된 비동기 회로 설계를 기능 검증하기 위한 검증 수단으로서, 컴퓨터 시스템을 기능시키기 위한 컴퓨터 프로그램이다. 비동기 회로 설계 언어에 의해 기술된 비동기 회로 설계를 기능 검증하기 위한 컴퓨터 프로그램을 실행시킴으로써, 비동기 회로 설계 언어를 동기 회로 설계용 하드웨어 기술 언어로 변환하지 않아도, 기능 검증을 행할 수 있다.The computer program of the present invention is a verification means for functionally verifying an asynchronous circuit design described by an asynchronous circuit design language with a primitive that enables asynchronous interprocess communication to a hardware description language for a synchronous circuit design. Computer program for functioning. By executing a computer program for functional verification of the asynchronous circuit design described by the asynchronous circuit design language, functional verification can be performed without converting the asynchronous circuit design language into the hardware description language for the synchronous circuit design language.

본 발명의 컴퓨터 프로그램은, 동기 회로 설계용 하드웨어 기술 언어에 비동기 프로세스간 통신을 가능하게 하는 프리미티브가 부가된 비동기 회로 설계 언어에 의해 기술된 비동기 회로 설계를 컴파일 방식에 의해 중간 언어로 변환하고 나서 기능 검증을 행하는 검증 수단으로서 컴퓨터 시스템을 기능시키기 위한 컴퓨터 프로그램이다. 대규모 회로 설계에서는 컴파일 방식이 적합하다.The computer program of the present invention functions after converting an asynchronous circuit design described by an asynchronous circuit design language with a primitive that enables asynchronous interprocess communication to a hardware description language for synchronous circuit design into an intermediate language by a compilation method. It is a computer program for operating a computer system as verification means for performing verification. In large circuit designs, the compilation method is appropriate.

본 발명의 컴퓨터 프로그램은, 동기 회로 설계용 하드웨어 기술 언어에 비동기 프로세스간 통신을 가능하게 하는 프리미티브가 부가된 비동기 회로 설계 언어에 의해 기술된 비동기 회로 설계를 인터프리터 방식에 의해 비동기 회로 설계 언어를 차례로 해석하면서 기능 검증을 행하는 검증 수단으로서, 컴퓨터 시스템을 기능시키기 위한 컴퓨터 프로그램이다. 소규모 회로 설계에서는 인터프리터 방식이 적합하다.The computer program of the present invention sequentially analyzes an asynchronous circuit design language by an interpreter method, which is described by an asynchronous circuit design language with a primitive that enables asynchronous interprocess communication to a hardware description language for synchronous circuit design. It is a computer program for making a computer system function as a verification means which performs a function verification while performing. In small circuit designs, the interpreter method is suitable.

본 발명의 컴퓨터 프로그램은, 동기 회로 설계용 하드웨어 기술 언어에 비동기 프로세스간 통신을 가능하게 하는 프리미티브가 부가된 비동기 회로 설계 언어에 의해 기술된 코드를 논리 합성하여 네트리스트를 생성하는 논리 합성 수단으로서, 컴퓨터 시스템을 기능시키기 위한 컴퓨터 프로그램이다. 비동기 회로 설계 언어에 의해 기술된 코드를 논리 합성하여 네트리스트를 생성하는 컴퓨터 프로그램을 실행함으로써, 실제 회로에 실장 가능한 회로 접속 정보를 얻을 수 있다.The computer program of the present invention is a logic synthesis means for generating a netlist by logically synthesizing a code described by an asynchronous circuit design language with a primitive that enables asynchronous interprocess communication to a hardware description language for synchronous circuit design. A computer program for operating a computer system. By executing a computer program that generates a netlist by logically synthesizing the code described by the asynchronous circuit design language, circuit connection information that can be mounted on an actual circuit can be obtained.

본 발명의 컴퓨터 프로그램에 있어서, 프리미티브로서는, 예를 들어 비동기 프로세스간 통신에 있어서, 리퀘스트(request) 신호의 수신 후, 애크놀리지(acknowledge) 신호의 송신 전에 임의의 처리를 실행하는 probe 커맨드를 포함하는 것이 바람직하다. probe 커맨드를 사용함으로써, 프로세스간의 핸드셰이크를 개시하기 전에 임의의 처리를 행할 수 있다.In the computer program of the present invention, the primitive includes, for example, a probe command for executing an arbitrary process after reception of a request signal and before transmission of an acknowledgment signal in asynchronous interprocess communication. It is preferable. By using the probe command, arbitrary processing can be performed before initiating an interprocess handshake.

본 발명의 컴퓨터 프로그램에 있어서, 프리미티브로서는, 예를 들어 포트간의 동기를 취하기 위한 sync 커맨드를 포함하는 것이 바람직하다. sync 커맨드를 사용함으로써, 비동기 프로세스간 통신을 제어할 수 있다.In the computer program of the present invention, the primitive preferably includes a sync command for synchronizing between ports, for example. By using the sync command, you can control asynchronous interprocess communication.

본 발명의 컴퓨터 프로그램은 기록 매체에 기록할 수 있다. 기록 매체로서, 예를 들어 반도체 메모리 소자(ROM, RAM, EEPROM 등), 자기 기록 매체(플렉시블 디스크, 자기 카드 등의 자기적으로 데이터를 판독할 수 있는 기록 매체), 광 기록 매체(CD-RAM, CD-ROM, DVD-RAM, DVD-ROM, DVD-R, PD 디스크, MD 디스크, MO 디스크 등의 광학적으로 데이터를 판독할 수 있는 기록 매체)가 적합하다. 이들 기록 매체로의 정보 기록 형식은 특별히 한정되지 않는다.The computer program of the present invention can be recorded on a recording medium. As a recording medium, for example, a semiconductor memory element (ROM, RAM, EEPROM, etc.), a magnetic recording medium (a recording medium capable of magnetically reading data such as a flexible disk, a magnetic card), an optical recording medium (CD-RAM) , A recording medium capable of optically reading data such as a CD-ROM, DVD-RAM, DVD-ROM, DVD-R, PD disk, MD disk, MO disk). The information recording format on these recording media is not particularly limited.

이하, 각 도면을 참조하여 본 발명의 적합한 실시예에 대해서 설명한다.Hereinafter, preferred embodiments of the present invention will be described with reference to the drawings.

도 1은 업계 표준 Verilog HDL을 사용한 전형적인 회로 설계 플로를 나타낸다. 도 1에 있어서, 단선(單線) 프레임은 설계 기술 또는 설계 프로세스의 입출력 데이터를 의미하고, 2중선 프레임은 설계의 프로세스를 의미한다. 설계 사양은 해당 설계에 관한 사양 기술이다. 자연 언어, 표, 도면 등의 직감적이며 자연스러운 기술을 이용하여 미리 정해져 있는 사양을 상세하게 기술한다. 이것은 제품의 상세 사양서의 기초로 되는 것이다. 동작 기술(Behavioral Description)은 해당 설계에 관한 동작 레벨의 상세 기술이다. Verilog HDL을 사용하여 동작 레벨의 기술을 행하는 것도 가능하며, 그 경우는 Verilog HDL 전용의 시뮬레이터를 사용하여 설계 사양과의 정합성 검증을 행할 수 있다.Figure 1 shows a typical circuit design flow using industry standard Verilog HDL. In Fig. 1, a disconnected frame means input / output data of a design technique or a design process, and a double line frame means a process of design. A design specification is a specification description for that design. Predetermined specifications are described in detail using intuitive and natural techniques such as natural language, tables, and drawings. This is the basis for the detailed specification of the product. Behavioral Description is a detailed description of the level of operation with respect to the design. It is also possible to describe the operation level using Verilog HDL. In that case, the Verilog HDL-specific simulator can be used to verify consistency with the design specification.

RTL 기술(Description)은 Verilog HDL을 사용하여 기술되지만, 동작 기술이 아키텍처(architecture) 독립인 것에 대하여, RTL 기술은 아키텍처에 의존한다. 동작 기술은 논리 합성의 대상으로는 되지 않지만, RTL 기술은 논리 합성 가능한 기술이다. 동작 기술은 설계 사양이 정확하게 기술되어 있는지의 여부를 검증하기 위한 시뮬레이션에 사용되는 동시에, RTL 기술을 사용한 기능 검증 & Testing용 테스트 벡터의 생성에 사용된다. 논리 합성(Logic Synthesis)의 출력인 게이트 레벨 네트리스트(Gate-Level Netlist)는 셀 라이브러리와 함께 기능 검증 & Testing에 의한 논리 검증에 사용된다. 논리 검증 후, Floor Planning Automatic Place & Route 이후의 물리 검증이 실행되어, 물리 레이아웃(Physical Layout)을 얻는다. 레이아웃 검증의 결과를 보아 필요하면 레이아웃에 수정을 실시한 후에 실행(Implementation)을 행하고, 칩 제작을 행한다.The RTL description is described using Verilog HDL, while the RTL description is architecture dependent, while the operating technology is architecture independent. The operation technique is not an object of logic synthesis, but the RTL technique is a technique capable of logic synthesis. Operational techniques are used in simulations to verify whether design specifications are accurately described, and at the same time, in the creation of test vectors for functional verification and testing using RTL techniques. The gate-level netlist, which is the output of logic synthesis, is used for logic verification by functional verification and testing with the cell library. After the logic verification, the physical verification after the Floor Planning Automatic Place & Route is performed to obtain a physical layout. As a result of the layout verification, if necessary, the layout is corrected, followed by implementation (Implementation), and chip production.

도 2는 비동기 회로에서의 프로세스간 통신(핸드셰이크 통신)을 나타낸다. 비동기 회로는 글로벌 클록을 사용하지 않고 각각의 프로세스(최소 기능 회로)가 자율적 또는 타율적으로 국소적인 협조를 취하면서 분산 제어를 행하는 것을 목적으로 하여 설계된 회로를 의미한다. 동기 설계에서는 명령 페치(fetch), 디코드(decode), 실행(execution), 리드(read)/라이트(write) 등의 각 오퍼레이션은 글로벌 클록에 동기하여 실행되기 때문에, 회로 동작을 고속(高速)으로 하기 위해서는, 클록 지연, 클록 스큐, 클록 지터(clock jitter) 등의 문제가 생기지만, 비동기 설계에서는 프로세스끼리가 서로 핸드셰이크를 통하여 자율적 또는 타율적으로 동작하기 때문에, 이러한 문제는 생기지 않는다. 각각의 프로세스는 통신 채널을 통하여 다른 프로세스와 접속되고, 국소적인 협조 하에서 자율적 또는 타율적으로 이벤트 구동을 행한다. 통신 채널은 그 양단(兩端)에서 포트와 접속된다. 도 2에 나타낸 예에서는, 프로세스 A는 포트 a를 구비하고, 프로세스 B는 포트 b를 구비한다. 프로세스 A와 프로세스 B는 포트 a와 포트 b에서 통신 채널을 통하여 접속되 어 있다. 통신 채널은 요구(Request) 신호, 응답(Acknowledge) 신호, 및 데이터 신호로 구성된다. 각각의 프로세스는 다른 프로세스와는 독립적으로 병렬 동작이 가능하며, 다른 프로세스의 처리가 완료될 때까지 처리 대기할 필요가 없다. 프로세스는 원하는 처리를 실행할 준비가 완료된 단계에서 처리를 진행시킬 수 있다.2 illustrates interprocess communication (handshake communication) in an asynchronous circuit. An asynchronous circuit means a circuit designed for the purpose of performing distributed control with each process (minimum functional circuit) autonomous or autonomous with local coordination without using a global clock. In the synchronous design, each operation such as instruction fetch, decode, execution, read / write, etc. is executed in synchronization with the global clock, so that the circuit operation is performed at high speed. In order to achieve this, problems such as clock delay, clock skew, clock jitter, and the like occur, but in an asynchronous design, since the processes operate autonomously or autonomously through handshake with each other, this problem does not occur. Each process is connected to another process via a communication channel and performs event driving autonomously or autonomously under local cooperation. The communication channel is connected to the port at both ends thereof. In the example shown in FIG. 2, process A has port a and process B has port b. Process A and Process B are connected through a communication channel at port a and port b. The communication channel consists of a request signal, an acknowledgment signal, and a data signal. Each process can run in parallel, independent of other processes, and does not have to wait for other processes to complete processing. The process may proceed at a stage where it is ready to execute the desired process.

도 3은 프로세스간의 2상 핸드셰이킹(Non Return to Zero)을 나타내고 있으며, 신호의 상승 에지 또는 하강 에지에서 요구/응답 신호를 송수신한다. 예를 들어 상술한 예에서, 포트 a로부터 포트 b에 요구 신호를 송신하기 위해서는, 요구 신호를 L레벨로부터 H레벨로 상승시키거나, 또는 H레벨로부터 L레벨로 하강시킨다. 포트 b는 요구 신호의 상승 에지 또는 하강 에지를 검출함으로써, 포트 a로부터 포트 b를 향하여 요구 신호가 송신되었음을 검출한다. 포트 b가 포트 a로 응답 신호를 회신하기 위해서는, 응답 신호의 레벨을 L레벨로부터 H레벨로 상승시키거나, 또는 H레벨로부터 L레벨로 하강시키면 된다. 이것에 의해, 핸드셰이크가 완료된다.3 shows two phase handshaking (Non Return to Zero) between processes, and transmits and receives a request / response signal at the rising or falling edge of the signal. For example, in the above example, in order to transmit a request signal from port a to port b, the request signal is raised from L level to H level, or lowered from H level to L level. Port b detects that a request signal has been sent from port a toward port b by detecting the rising or falling edge of the request signal. In order for the port b to return the response signal to the port a, it is sufficient to raise the level of the response signal from the L level to the H level or to decrease the level from the H level to the L level. This completes the handshake.

도 4는 프로세스간의 4상 핸드셰이킹(Return to Zero)을 나타내고 있으며, 신호 레벨에서 요구/응답 신호를 송수신한다. 예를 들어 상술한 예에서, 포트 a로부터 포트 b에 요구 신호를 송신하기 위해서는, 요구 신호를 L레벨로부터 H레벨로 상승시키면 된다. 포트 b는 요구 신호가 H레벨로 천이(遷移)된 것을 검출하면, 요구 신호가 송신되었음을 검출한다. 포트 b가 포트 a로 응답 신호를 회신하기 위해서는, 응답 신호의 레벨을 L레벨로부터 H레벨로 상승시키면 된다. 응답 신호의 레벨이 H레벨로 천이된 것을 확인한 포트 a는 요구 신호의 레벨을 H레벨로부터 L레벨로 하강시킨다. 요구 신호의 레벨이 H레벨로부터 L레벨로 천이된 것을 확인한 포 트 b는 응답 신호의 레벨을 H레벨로부터 L레벨로 하강시키고, 핸드셰이크가 완료된다. 이하의 기술에서는, 설명의 편의상, 프로세스간 통신은 4상 핸드셰이킹을 채용하는 것으로 하여 설명을 행한다.4 shows four-phase handshaking (Return to Zero) between processes, sending and receiving request / response signals at the signal level. For example, in the above-described example, in order to transmit the request signal from the port a to the port b, the request signal may be raised from the L level to the H level. When port b detects that the request signal has transitioned to the H level, it detects that the request signal has been transmitted. In order for the port b to return the response signal to the port a, the level of the response signal may be increased from the L level to the H level. After confirming that the level of the response signal has transitioned to the H level, the port a lowers the level of the request signal from the H level to the L level. After confirming that the level of the request signal has transitioned from the H level to the L level, the port b lowers the response signal level from the H level to the L level, and the handshake is completed. In the following description, for convenience of explanation, the inter-process communication is explained by employing four-phase handshaking.

도 5는 포트 속성의 조합을 나타낸다. 프로세스는 자율적 또는 타율적으로 동작하기 때문에, 모든 포트에는 '액티브(Active)' 또는 '패시브(Passive)'의 속성 1이 부여된다. 또한, '입력(Input)' 또는 '출력(output)'의 속성 2를 고려하면, 합계 4종류의 속성으로 분류할 수 있다. 대향 포트 속성은 통신 상대의 포트 속성에 따라 일의적(一義的)으로 정해진다. 예를 들어 도 6에 나타낸 바와 같이, 자율적으로 데이터 전송을 요구하는 프로세스 A의 포트 속성이 '액티브 입력'인 경우는 타율적으로 데이터 전송을 행하는 프로세스 B의 포트 속성은 '패시브 출력'으로 된다. 통신 채널에서의 요구 신호와 응답 신호의 송수신은 상술한 2상 핸드셰이킹 또는 4상 핸드셰이킹에 의해 실행된다. 이 경우에서 2선 인코딩을 사용하면, 도 7에 나타낸 바와 같이, 응답 신호선을 삭감할 수 있다. 도 8에 나타낸 바와 같이, 프로세스 A의 포트가 '액티브 출력'인 경우는, 요구 신호선과 데이터 신호선의 방향이 동일하기 때문에, 요구 신호선을 삭감할 수 있다. 비동기 설계에서는, 컨트롤부와 데이터패스부(datapath part)의 설계에서 2선 인코딩을 사용함으로써 명시적인 지연 소자의 삽입이 불필요해지고, 회로계가 Delay Insensitive로 된다. 본 발명은 도 6에 나타낸 번들(bundle) 데이터 방식과, 도 7 또는 도 8에 나타낸 2선 인코딩 방식 모두에 대응할 수 있다.5 illustrates a combination of port attributes. Because the process runs autonomously or autonomously, every port is given a property of 'Active' or 'Passive'. In addition, considering the attribute 2 of 'input' or 'output', it can be classified into four kinds of attributes. The opposite port attribute is uniquely determined according to the port attribute of the communication partner. For example, as shown in FIG. 6, when the port attribute of the process A which autonomously requests data transfer is "active input", the port attribute of the process B which performs data transfer autonomously is "passive output". The transmission and reception of the request signal and the response signal in the communication channel are performed by the two-phase handshaking or the four-phase handshaking described above. In this case, when two-line encoding is used, the response signal line can be reduced as shown in FIG. As shown in Fig. 8, when the port of the process A is "active output", since the direction of the request signal line and the data signal line are the same, the request signal line can be reduced. In the asynchronous design, the use of two-wire encoding in the design of the control unit and the datapath part eliminates the need for explicit delay element insertion and makes the circuit system Delay Insensitive. The present invention may correspond to both the bundle data method shown in FIG. 6 and the two-line encoding method shown in FIG. 7 or 8.

도 9는 복수의 프로세스간의 핸드셰이크 회로를 나타낸다. 각각의 프로세스 는 복수의 포트를 구비하고 있으며, 복수의 프로세스와 통신할 수 있게 구성되어 있다. 도 9에 나타낸 핸드셰이크 회로에서는, 프로세스 A는 프로세스 B와 통신하면서 프로세스 C와도 통신을 행한다. 프로세스 A는 프로세스 B, C에 대하여 액티브(흑색 원으로 나타냄)이지만, 프로세스 B는 프로세스 A, C에 대하여 패시브(백색 원으로 나타냄)이다. 프로세스 C는 프로세스 A에 대해서는 패시브이고, 프로세스 B에 대해서는 액티브이다. 프로세스 A에 주목하면, 포트 Pa1의 속성은 액티브 입력이기 때문에, 도 6에 나타낸 바와 같이 요구 신호를 스스로 송신함으로써 핸드셰이크를 기동하여 프로세스 B로부터 데이터를 수취한다. 한편, 포트 Pa2의 속성은 액티브 출력이기 때문에, 도 8에 나타낸 바와 같이 요구 신호를 스스로 송신함으로써 핸드셰이크를 기동하여 프로세스 C에 데이터를 송신한다.9 shows a handshake circuit between a plurality of processes. Each process has a plurality of ports and is configured to communicate with the plurality of processes. In the handshake circuit shown in FIG. 9, Process A also communicates with Process C while communicating with Process B. FIG. Process A is active for processes B and C (indicated by black circles), but process B is passive for process A and C (indicated by white circles). Process C is passive for Process A and active for Process B. Note that in the process A, since the attribute of the port Pa1 is an active input, as shown in Fig. 6, the handshake is initiated by transmitting a request signal by itself to receive data from the process B. On the other hand, since the attribute of the port Pa2 is the active output, as shown in Fig. 8, the handshake is initiated by sending a request signal by itself to transmit data to the process C.

본 발명에서는 Verilog HDL 등의 하드웨어 기술 언어에 비동기 프로세스간 통신을 가능하게 하는 새로운 프리미티브를 추가함으로써, 상술한 핸드셰이크 회로에서 교환되는 프로세스간 통신을 실현한 비동기 회로 설계 언어를 사용하여 회로 설계를 행한다. 도 10은 도 9에 나타낸 프로세스 A를 본 발명의 비동기 회로 설계 언어를 사용하여 코딩한 코딩 예를 나타낸다. 도 10에 나타낸 코딩 예에 대해서 문법을 따라 설명하면, 우선 모듈 선언부에서는 모듈명 「A」, 입출력 신호명 「RESET, Pa1, Pa2」가 선언된다. 입출력 신호(포트) 선언부에서는, 1비트의 입력 신호 「RESET」과 2비트의 변수(레지스터) 「regA」가 선언된다. 또한, 본 발명의 비동기 회로 설계 언어에 의해 새롭게 도입된 선언문 cport에 의해, 비동기 프로세스간 통신을 행하기 위한 포트명 「Pa1, Pa2」와 그 속성이 선언된다. 포트 Pa1의 속성은 액티브 입력이고, 포트 Pa2의 속성은 액티브 출력이다. 프로세스 B로부터의 수신은 receive 커맨드에 의해 실행되고, 프로세스 C로의 송신은 send 커맨드에 의해 실행된다. receive 커맨드와 send 커맨드는 본 발명의 비동기 회로 설계 언어에 의해 새롭게 도입된 커맨드이다. always문을 참조하면, 초기화 신호 RESET이 해제되기를 대기하여, 포트 Pa1 경유에 의해 수신한 프로세스 B로부터의 데이터는 변수 regA에 수용되고, 포트 Pa2 경유에 의해 프로세스 C에 송신되도록 코딩된다. 도 9에 나타낸 프로세스 B, C를 비동기 회로 설계 언어로 코딩하면, 각각 도 11 및 도 12에 나타낸 바와 같이 된다.In the present invention, by adding a new primitive that enables asynchronous interprocess communication to a hardware description language such as Verilog HDL, circuit design is performed using an asynchronous circuit design language that realizes interprocess communication exchanged in the above-described handshake circuit. . FIG. 10 shows a coding example in which Process A shown in FIG. 9 is coded using the asynchronous circuit design language of the present invention. Referring to the coding example shown in FIG. 10 in accordance with the grammar, first, the module declaration unit declares the module name "A" and the input / output signal names "RESET, Pa1, Pa2". In the input / output signal (port) declaration unit, an input signal "RESET" of one bit and a variable "regA" of two bits are declared. In addition, the declaration cport newly introduced by the asynchronous circuit design language of the present invention declares the port names "Pa1, Pa2" and their attributes for performing asynchronous interprocess communication. The property of port Pa1 is the active input, and the property of port Pa2 is the active output. Receipt from process B is executed by the receive command, and transmission to process C is executed by the send command. The receive command and the send command are commands newly introduced by the asynchronous circuit design language of the present invention. Referring to the always statement, waiting for the initialization signal RESET to be released, data from Process B received via port Pa1 is received in variable regA and coded to be sent to Process C via port Pa2. The processes B and C shown in Fig. 9 are coded in an asynchronous circuit design language, as shown in Figs. 11 and 12, respectively.

도 13은 비동기 회로 설계 툴(100)의 기능 블록도이다. 비동기 회로 설계 툴(100)은 트랜슬레이터(10)를 구비한다. 트랜슬레이터(10)는 동기 회로 설계용 하드웨어 기술 언어(예를 들어 Verilog HDL 또는 VHDL의 서브셋(subset) 또는 풀셋(fullset))에 비동기 프로세스간 통신을 가능하게 하는 프리미티브가 추가된 비동기 회로 설계 언어에 의해 기술된 코드(40)를 동기 회로 설계용 하드웨어 기술 언어(예를 들어 Verilog HDL 또는 VHDL)(50)로 변환하는 변환 수단(11)을 구비한다. 코드(40)를 동기 회로 설계용 하드웨어 기술 언어(50)로 변환함으로써, 비동기 회로 설계 언어에 의해 기술된 회로 설계를 동기 회로용 시판 시뮬레이터에 의해 검증할 수 있다. 트랜슬레이터(10)는 컴퓨터 시스템을 변환 수단(11)으로서 기능시키는 컴퓨터 프로그램을 컴퓨터 시스템상에서 실행시킴으로써 실현된다.13 is a functional block diagram of the asynchronous circuit design tool 100. The asynchronous circuit design tool 100 includes a translator 10. The translator 10 is a hardware description language for synchronous circuit design (e.g., a subset or fullset of Verilog HDL or VHDL) to an asynchronous circuit design language with primitives that enable asynchronous interprocess communication. The conversion means 11 which converts the code 40 described by the hardware description language (for example, Verilog HDL or VHDL) 50 for a synchronous circuit design is provided. By converting the code 40 into the hardware description language 50 for synchronous circuit design, the circuit design described by the asynchronous circuit design language can be verified by a commercial simulator for synchronous circuits. The translator 10 is realized by executing a computer program on the computer system that functions the computer system as the converting means 11.

도 15는 그 코드 변환 예를 나타낸다. 도 15의 Verilog 코드는 도 7에 대응하고 있지만, 2선식 인코딩이 아니라, 데이터 버스를 포함한 신호선이 하이(high) 임피던스인지의 여부를 판정하는 회로로 되어 있다. 실제 회로는 2선식 인코딩에 의해 실장된다. 즉, 이 Verilog 코드는 시뮬레이션 검증에 사용되는 것이며, 논리 합성용이 아니다. 모듈 선언부에서는 모듈명 「A」, 입출력 신호명 「RESET, Pa1_req, Pa1_data, Pa2_data, Pa2_ack」가 선언된다. 입출력 신호 선언부에서는 1비트의 입력 신호 「RESET」과, 2비트의 변수 「regA」와, 1비트의 출력 신호 「Pa1_req」와, 2비트의 입력 데이터선 「Pa1_data」와, 2비트의 출력 데이터선 「Pa2_data」와, 1비트의 입력 신호선 「Pa2_ack」가 선언된다. 상술한 바와 같이, 본 실시예에서는 4상 핸드셰이킹을 채용하고 있기 때문에, 도 4 및 도 7을 참조하면서, 도 15의 Verilog 코드에 대해서 설명을 진행시킨다.Fig. 15 shows an example of the code conversion. The Verilog code of FIG. 15 corresponds to FIG. 7, but is not a two-wire encoding, but a circuit for determining whether a signal line including a data bus is high impedance. The actual circuit is implemented by two wire encoding. In other words, this Verilog code is used for simulation verification and is not intended for logic synthesis. In the module declaration section, the module name "A" and the input / output signal names "RESET, Pa1_req, Pa1_data, Pa2_data, Pa2_ack" are declared. In the input / output signal declaration section, the 1-bit input signal "RESET", the 2-bit variable "regA", the 1-bit output signal "Pa1_req", the 2-bit input data line "Pa1_data", and the 2-bit output data. The line "Pa2_data" and the 1-bit input signal line "Pa2_ack" are declared. As described above, since the four-phase handshaking is employed in this embodiment, the Verilog code of FIG. 15 will be described with reference to FIGS. 4 and 7.

Verilog 코드 최초의 begin-end 블록은 도 4에서 설명한 순서를 밟고 있지만, 신호선에 데이터가 출력되어 있는지의 여부의 판정은 2선식 인코딩의 스킴 대신에, 단선식 상태에서 하이 임피던스의 여부를 판정함으로써 행한다. 즉, 출력 신호 Pa1_req는 도 7의 요구 신호에 상당하고, 입력 신호 Pa1_data는 응답 신호 또는 데이터 신호에 상당한다. 우선 force 커맨드에 의해 Pa1_req를 High로 하여, 요구를 송출(送出)하고, 입력 데이터선 Pa1_data에 데이터가 출력될 때까지, 즉, 하이 임피던스가 아닐 때까지 대기한다. 데이터가 입력 데이터선 Pa1_data에 출력되면, 내부 레지스터 regA에 수용한다. 두번째 begin-end 블록은 도 8에서 설명한 순서를 밟고 있으며, 출력 데이터선 Pa2_data가 요구 신호 또는 데이터 신호에 상당하고, 입력 신호선 Pa2_ack는 응답 신호에 상당한다. 우선 force 커맨드에 의해 regA의 내용을 출력 데이터선 Pa2_data에 출력하고, Pa2_ack가 하이 임피던스가 아 닐 때까지 대기한다. Pa2_ack를 수신한 후, 출력 데이터선 Pa2_data를 하이 임피던스로 하여 개방하고, Pa2_ack가 하이 임피던스로 되기를 대기하여, 핸드셰이킹을 완결한다.The first begin-end block of the Verilog code follows the procedure described in Fig. 4, but the determination of whether data is output to the signal line is performed by determining whether the high impedance is in a single-wire state instead of the scheme of two-wire encoding. . In other words, the output signal Pa1_req corresponds to the request signal in FIG. 7, and the input signal Pa1_data corresponds to the response signal or data signal. First, Pa1_req is set to High by a force command, and a request is sent out and waits until data is output to the input data line Pa1_data, that is, until it is not high impedance. When data is output to the input data line Pa1_data, it is accommodated in the internal register regA. The second begin-end block follows the procedure described in Fig. 8, where the output data line Pa2_data corresponds to the request signal or data signal, and the input signal line Pa2_ack corresponds to the response signal. First, the contents of regA are outputted to the output data line Pa2_data by the force command, and wait until Pa2_ack is not high impedance. After receiving Pa2_ack, the output data line Pa2_data is opened with high impedance, waiting for Pa2_ack to become high impedance, and handshaking is completed.

도 16은 도 10 내지 도 12에 기술한 프로세스 A, B 및 C에 의해 구성한 도 9의 핸드셰이크 회로를 비동기 회로 설계 언어에 의해 코딩한 코딩 예를 나타낸다. 본 발명의 비동기 회로 설계 언어에 의해 새롭게 도입된 선언문 channel에 의해, 프로세스 A, B 및 C를 접속하는 2비트의 3개의 채널을 CH1, CH2 및 CH3으로서 선언한다. 각각의 프로세스의 인스턴스(instance)는 이들 채널에 의해 접속되어 있다. 이 코딩 예를 상술한 트랜슬레이터(10)에 의해 Verilog 코드로 변환하면, 도 17에 나타낸 바와 같은 Verilog 코드가 얻어진다. 도 17의 Verilog 코드에 나타낸 바와 같이, 도 16의 채널 CH(n=1, 2, 3)는 2종류의 배선(wire) CHn_ctrl(n=1, 2, 3) 및 CHn_data(n=1, 2, 3)로 전개된다. 프로세스 A의 포트 Pa1_req는 배선 CH1_ctrl에 접속되고, 포트 Pa1_data는 배선 CH1_data에 접속된다. 마찬가지로, 프로세스 C의 포트 Pc3_ack는 배선 CH3_ctr에 접속되고, 포트 Pc3_data는 배선 CH3_data에 접속된다.FIG. 16 shows a coding example in which the handshake circuit of FIG. 9 constituted by the processes A, B, and C described in FIGS. 10 to 12 is coded by an asynchronous circuit design language. With the declaration channel newly introduced by the asynchronous circuit design language of the present invention, three 2-bit channels connecting processes A, B and C are declared as CH1, CH2 and CH3. An instance of each process is connected by these channels. When this coding example is converted into a Verilog code by the translator 10 described above, a Verilog code as shown in Fig. 17 is obtained. As shown in the Verilog code of FIG. 17, the channel CH (n = 1, 2, 3) of FIG. 16 has two kinds of wires CHn_ctrl (n = 1, 2, 3) and CHn_data (n = 1, 2). , 3). The port Pa1_req of the process A is connected to the wiring CH1_ctrl, and the port Pa1_data is connected to the wiring CH1_data. Similarly, the port Pc3_ack of the process C is connected to the wiring CH3_ctr, and the port Pc3_data is connected to the wiring CH3_data.

또한, 상술한 설명에서는 비동기 회로 설계 언어에 의해 기술된 코드를 동기 회로 설계 언어로 변환하고 나서 동기 회로용 시판 시뮬레이터에 의해 기능 검증하는 경우를 예시했지만, 도 14에 나타낸 바와 같이, 전용 시뮬레이터(20)를 구비하는 비동기 회로 설계 툴(100)에 의해 기능 검증을 행할 수도 있다. 전용 시뮬레이터(20)는 동기 회로 설계용 하드웨어 기술 언어에 비동기 프로세스간 통신을 가능 하게 하는 프리미티브가 부가된 비동기 회로 설계 언어에 의해 기술된 코드(40)의 비동기 회로 설계를 기능 검증하기 위한 검증 수단(21)으로서 기능한다. 검증 수단(21)으로서는, 컴파일 방식에 의해 비동기 회로 설계 언어를 중간 언어로 변환하고 나서 기능 검증을 행하는 것일 수도 있고, 또는 인터프리터 방식에 의해 비동기 회로 설계 언어를 차례로 해석하면서 기능 검증을 행하는 것일 수도 있다. 전용 시뮬레이터(20)는 컴퓨터 시스템을 검증 수단(21)으로서 기능시키는 컴퓨터 프로그램을 컴퓨터 시스템상에서 실행시킴으로써 실현된다.Incidentally, in the above description, the case where the code described by the asynchronous circuit design language is converted into the synchronous circuit design language and then functionally verified by a commercial simulator for the synchronous circuit is illustrated. However, as shown in FIG. 14, the dedicated simulator 20 The functional verification can also be performed by the asynchronous circuit design tool 100 provided with). The dedicated simulator 20 is a verification means for functionally verifying the asynchronous circuit design of the code 40 described by the asynchronous circuit design language with a primitive added to enable the asynchronous interprocess communication to the hardware description language for the synchronous circuit design ( 21). As the verification means 21, function verification may be performed after converting an asynchronous circuit design language into an intermediate language by a compilation method, or function verification may be performed while sequentially interpreting the asynchronous circuit design language by an interpreter method. . The dedicated simulator 20 is realized by executing a computer program on the computer system that functions the computer system as the verification means 21.

비동기 회로 설계 언어의 코드는 본 발명의 논리 합성 툴에 의해 실장 가능한 네트리스트(회로의 접속 정보)로 변환된다. 상술한 바와 같이, 프로세스 A의 트랜슬레이터(10)의 출력 리스트에서는 실장이 곤란하다. 데이터 신호선의 하이 임피던스를 검출함으로써 데이터의 도래(到來)를 검출하는 것은 실제 회로에서는 실용적이지 않기 때문이다. 본 발명의 논리 합성 툴에 대해서 2선식 인코딩(Dual-rail Encoding) 방식에 의한 실장을 전제로 설명한다. 도 18은 2선식 인코딩의 코딩 스킴의 일례이다. 도 19는 4비트의 데이터 전송에 2선식 인코딩 방식을 이용한 경우의 회로도이다. 설명의 편의상, d0 비트에 주목하여 설명을 행한다. 우선 처음에는 모두 의미가 있는 데이터를 출력하고 있지 않기 때문에, 송신(Send) 신호는 Low이고, 모든 데이터선 페어는 {0, 0}으로 되어 있다. d0에 송신하고 싶은 데이터 예를 들어 1을 출력한 후, 송신 신호를 High로 하면, {d0.0, d0.1}={0, 1}로 된다. 수신 측의 각 데이터선 페어에 구비되는 디코더(4비트의 경우는 4개의 디코더)는 역시 도 18의 스킴에 따라 데이터의 도래를 검출하고, 데이터를 입수한다. 각 비트에 대응하는 디코더로부터의 도착 신호가 모두 정렬되기를 대기하기 위해, Muller-C 엘리먼트를 사용한다. Muller-C 엘리먼트로의 입력이 모두 High로 된 시점에서 수신(Receive) 신호가 High로 되고, 4비트 데이터의 도착으로 된다.The code of the asynchronous circuit design language is converted into a netlist (circuit connection information) that can be implemented by the logic synthesis tool of the present invention. As described above, it is difficult to implement in the output list of the translator 10 of the process A. This is because detecting the arrival of data by detecting the high impedance of the data signal line is not practical in an actual circuit. The logic synthesis tool of the present invention will be described on the assumption that it is implemented by a dual-rail encoding method. 18 is an example of a coding scheme of two-wire encoding. 19 is a circuit diagram when a two-wire encoding scheme is used for 4-bit data transmission. For convenience of explanation, explanation will be made with attention to the d0 bit. First, since no meaningful data is output at first, the Send signal is Low and all data line pairs are {0, 0}. When the data to be transmitted to d0, for example, 1 is output and the transmission signal is set to High, {d0.0, d0.1} = {0, 1}. The decoder (four decoders in the case of 4 bits) provided in each data line pair on the receiving side also detects the arrival of data and obtains the data according to the scheme of FIG. Use the Muller-C element to wait for all the arrival signals from the decoder corresponding to each bit to be aligned. When the inputs to the Muller-C elements are all high, the receive signal goes high, resulting in the arrival of 4-bit data.

상술한 비동기 회로 설계 언어는, 도 20에 나타낸 바와 같이, 논리 합성 툴(30)을 구비한 비동기 회로 설계 툴(100)에 의해 실장 가능한 Verilog 네트리스트로 변환된다. 논리 합성 툴(30)은 동기 회로 설계용 하드웨어 기술 언어에 비동기 프로세스간 통신을 가능하게 하는 프리미티브가 부가된 비동기 회로 설계 언어에 의해 기술된 코드(40)를 논리 합성하여 네트리스트(60)를 생성하는 논리 합성 수단(31)을 구비한다. 논리 합성 툴(30)은 동기 회로 설계용 셀과 비동기 회로 설계용 셀로 이루어지는 셀 라이브러리(32)를 더 구비한다. 논리 합성 수단(31)은 셀 라이브러리(32)를 참조하여 네트리스트(60)를 생성한다. 논리 합성 툴(30)은 컴퓨터 시스템을 논리 합성 수단(31)으로서 기능시키는 컴퓨터 프로그램을 컴퓨터 시스템 상에서 실행시킴으로써 실현된다.As described above, the asynchronous circuit design language described above is converted into a Verilog nestable that can be mounted by the asynchronous circuit design tool 100 having the logic synthesis tool 30. The logic synthesis tool 30 generates a netlist 60 by logically synthesizing the code 40 described by an asynchronous circuit design language with a primitive that enables asynchronous interprocess communication to a hardware description language for synchronous circuit design. Logical synthesis means 31 is provided. The logic synthesis tool 30 further includes a cell library 32 consisting of a cell for synchronous circuit design and a cell for asynchronous circuit design. The logical synthesizing means 31 generates the netlist 60 with reference to the cell library 32. The logic synthesizing tool 30 is realized by executing a computer program on the computer system that functions the computer system as the logical synthesizing means 31.

도 21은 도 10에 나타낸 프로세스 A의 코딩 예를 논리 합성 툴(30)에 의해 변환한 네트리스트이다. 이 네트리스트의 선언문을 참조하면, 도 10의 리스트에 기술된 2비트의 포트는 2선식 인코딩을 위해 input [3:0] Pa1_d; output [3:0] Pa2_d;로 전개되어 4비트의 포트로 변환됨을 알 수 있다. 도 21의 리스트에 대응하는 회로도를 도 22에 나타낸다. 도 22에 나타낸 회로를 설명하기 전에, 이 회로에 사용되어 있는 각각의 셀에 대해서 설명을 부가한다. 이들 셀은 논리 합성 툴(30)의 셀 라이브러리(32)에 속하는 것이다.FIG. 21 is a netlist obtained by converting the coding example of process A shown in FIG. 10 by the logic synthesis tool 30. Referring to the declaration of this netlist, the two-bit port described in the list of FIG. 10 may be configured as input [3: 0] Pa1_d; It can be seen that it is expanded to output [3: 0] Pa2_d; and converted to 4-bit port. 22 is a circuit diagram corresponding to the list of FIG. Before explaining the circuit shown in FIG. 22, the description is added about each cell used for this circuit. These cells belong to the cell library 32 of the logic synthesis tool 30.

도 23은 reg-simple 접속도를 나타낸다. 이 셀은 1비트 데이터의 2선식 인코딩 방식에서의 디코더이다. d0, d1은 1비트의 입력 데이터의 2선이며, 도 18의 스킴에 따라 디코드된 데이터가 내부 레지스터에 세트되는 동시에, 출력선 Q, Q_에 출력된다. 이 때, 데이터의 도착을 나타내는 put 신호가 High로 된다. 도 24는 bit-to-dual 접속도를 나타낸다. 송신 신호가 High로 되었을 때, 입력 신호 D를 2선식 인코딩하여 출력 신호 d0, d1에 출력한다. 도 25는 Q_element 접속도를 나타낸다. 이 셀은 도 26에 나타낸 시퀀스를 실행한다. 도 27은 Muller-C 엘리먼트 접속도를 나타낸다. A, B 모두 High일 때, Z가 High로 되고, A, B 모두 Low일 때, Z가 Low로 된다. 그 이외일 때는, Z출력은 변화하지 않는다.23 shows a reg-simple connection diagram. This cell is a decoder in the 2-wire encoding scheme of 1-bit data. d0 and d1 are two lines of one-bit input data. The decoded data is set in an internal register according to the scheme of FIG. 18 and output to the output lines Q and Q_. At this time, the put signal indicating the arrival of data becomes High. 24 shows a bit-to-dual connection diagram. When the transmission signal becomes high, the input signal D is 2-wire encoded and output to the output signals d0 and d1. 25 shows a Q_element connection diagram. This cell executes the sequence shown in FIG. 27 shows a Muller-C element connection diagram. When both A and B are high, Z is high. When both A and B are low, Z is low. Otherwise, the Z output does not change.

여기서, 도 22에 나타낸 프로세스 A의 회로도에 대해서 설명을 행한다. 점선으로 둘러싸인 부분이 논리 합성 툴(30)에 의해 생성된 접속도이며, 논리 합성 툴(30)에 부대(附帶)되는 셀 라이브러리(32)로부터 필요한 셀을 이용하여 도 20에 나타낸 리스트에 기술되어 있는 회로를 구성한다. 점선 상의 원은 대응하는 신호선이 선언문 cport에서 지정된 입출력 포트임을 나타낸다. 다음으로, 이 회로의 동작 순서를 설명한다. 도 10의 리스트에는 명시적으로 사용되어 있지 않지만, 논리 합성의 출력인 도 21의 리스트에는 초기화 신호 RESET이 삽입되어 있다. 처음에는 리셋(RESET) 신호는 High이기 때문에, Q_element의 lc 입력 X8_c는 Low이고, 도 26에 나타낸 시퀀스의 초기 상태이다. 리셋이 Low로 되면, Pa2_c도 Low이기 때문에, X8_c는 High로 된다(t1). 이것은, 도 26에 있어서, 입력 lc가 High로 되는 것을 의미하기 때문에, 도 26에 나타낸 시퀀스가 개시된다. 도 26에 나타낸 바와 같이, 입력 lc가 High로 천이된 것을 받아, 출력 rc가 High로 천이된다(t2). 이것은, 도 22에 있어서, Pa1_c가 High로 천이되는 것을 의미한다. Pa1_c는 프로세스 B(도 9 참조)로의 요구 신호이다.Here, the circuit diagram of the process A shown in FIG. 22 is demonstrated. The part enclosed by the dotted lines is a connection diagram generated by the logic synthesis tool 30, and is described in the list shown in FIG. 20 using the cells required from the cell library 32 that is added to the logic synthesis tool 30. Configure the circuit. The circle on the dotted line indicates that the corresponding signal line is the input / output port specified in the declaration cport. Next, the operation procedure of this circuit is demonstrated. Although not explicitly used in the list of FIG. 10, the initialization signal RESET is inserted into the list of FIG. 21, which is an output of logical synthesis. Since the RESET signal is initially high, the lc input X8_c of the Q_element is Low and is the initial state of the sequence shown in FIG. When the reset goes low, since Pa2_c is low, X8_c goes high (t1). Since this means that the input lc becomes High in FIG. 26, the sequence shown in FIG. 26 is started. As shown in Fig. 26, the input lc is transitioned to High, and the output rc is transitioned to High (t2). This means that Pa1_c transitions to High in FIG. Pa1_c is a request signal to process B (see Fig. 9).

프로세스 B는 이 요구 신호를 받아 2선식 인코딩된 데이터를 Pa1_d[n](n=0, 1, 2, 3)에 송출한다. 이 데이터는 복호되어 reg-simple 내부에 regA[0] 및 regA[1]로서 래치된다(regA[0]_ 및 regA[1]_은 반전 출력임). 동시에 이 타이밍에서 데이터의 수신을 승인하는 X1_d 및 X2_d가 High로 되고, Muller-C 엘리먼트에 입력된다. X1_d 및 X2_d의 데이터선 길이의 편차 등에 의해 데이터가 도착하는 타이밍에는 편차가 생길 수 있기 때문에, X1_d 및 X2_d가 모두 High로 되는 타이밍은 동시라고 단정할 수는 없다. Muller-C 엘리먼트의 출력 X0_d는 X1_d 및 X2_d가 모두 High로 된 시점에서 High로 된다(t3). 도 22의 X0_d는 도 26에서는 rd에 상당하고, 이것이 High로 천이된 것을 받아 Q_elem는 rc, 즉, 도 22의 Pa1_c를 Low로 한다(t4). 프로세스 B는 Pa1_c가 Low로 천이된 것을 받아, 프로세스 B로부터 프로세스 A로 송출한 데이터가 수령된 것을 검출하고, 데이터의 송출을 정지시키기 위해, Null을 데이터선 상에 출력한다. reg-simple은 데이터선 상에 Null이 출력된 시점에서 X1_d 및 X2_d를 Low로 하기 때문에, Muller-C 엘리먼트는 X1_d 및 X2_d가 모두 Low로 된 시점에서 X0_d를 Low로 한다(t5). 이것에 의해, 프로세스 B와의 핸드셰이킹은 완결되었다.Process B receives this request signal and sends two-wire encoded data to Pa1_d [n] (n = 0, 1, 2, 3). This data is decoded and latched as regA [0] and regA [1] inside reg-simple (regA [0] _ and regA [1] _ are inverted outputs). At the same time, X1_d and X2_d, which acknowledge the reception of data at this timing, go high and are input to the Muller-C element. Since there may be a deviation in the timing at which data arrives due to a deviation in the data line length of X1_d and X2_d, the timing at which both X1_d and X2_d become High cannot be assumed to be simultaneous. The output X0_d of the Muller-C element goes high when both X1_d and X2_d go high (t3). X0_d in FIG. 22 corresponds to rd in FIG. 26, and when it is shifted to High, Q_elem sets rc, that is, Pa1_c in FIG. 22 to Low (t4). The process B receives Pa1_c transitioned to Low, detects that the data sent from the process B to the process A has been received, and outputs Null on the data line to stop the sending of the data. Since reg-simple sets X1_d and X2_d to Low when the Null is output on the data line, the Muller-C element makes X0_d Low when both X1_d and X2_d become Low (t5). This completes handshaking with Process B.

도 22의 X0_d가 Low로 되는 것은, 도 26에 있어서, rd가 Low로 천이되는 것을 의미하기 때문에, Q_elem는 ld, 즉, 도 22의 X8_dd를 High로 한다(t6). X8_dd 는 bit-to-dual의 송신(Send) 신호이다. bit-to-dual은 reg-simple에 유지되어 있는 데이터 regA[0] 및 regA[1]을 2선식 인코딩하여 Pa2_d[n](n=0, 1, 2, 3)에 송출한다. 이 데이터 송출은 프로세스 C(도 9 참조)에서는 프로세스 A로부터의 요구이기 때문에, 프로세스 C는 이 요구를 수취하고 나서 응답 신호인 Pa2_c를 High로 한다. Pa2_c가 High로 되면, NOR의 출력인 X8_c(Q_elem의 입력 신호 lc)는 Low로 된다(t7). Q_elem는 입력 lc가 Low로 천이된 것을 받아, 출력 신호 ld(bit-to-dual의 송신 신호)로서의 X8_dd를 Low로 천이시킨다(t8). bit-to-dual은 송신 신호가 Low로 천이된 것을 받아, 2선식 인코드된 데이터의 송출을 정지시키고, Null을 데이터선 Pa2_d[n](n=0, 1, 2, 3)에 출력한다. 프로세스 C는 Null을 수신함으로써, 응답이 프로세스 A에 의해 수신된 것을 검출하고, 응답 신호인 Pa2_c를 High로 천이시킨다. 이것에 의해, 프로세스 C와의 시퀀스도 완결되지만, 도 10의 리스트에 나타낸 바와 같이, always wait(!RESET)으로 하고 있기 때문에, 리셋(RESET) 신호가 High로 되지 않는 한, 프로세스 B 및 프로세스 C와의 비동기 통신은 반복된다.Since X0_d in FIG. 22 goes low, rd transitions to Low in FIG. 26, Q_elem makes ld, that is, X8_dd in FIG. 22 high (t6). X8_dd is a bit-to-dual send signal. The bit-to-dual encodes the data regA [0] and regA [1] held in reg-simple and transmits them to Pa2_d [n] (n = 0, 1, 2, 3). Since this data transmission is a request from the process A in the process C (see FIG. 9), the process C sets the response signal Pa2_c to High after receiving this request. When Pa2_c goes high, X8_c (the input signal lc of Q_elem) that is the output of the NOR goes low (t7). Q_elem receives the input lc transitioned to Low, and transitions X8_dd as the output signal ld (bit-to-dual transmission signal) to Low (t8). The bit-to-dual receives the transition of the transmission signal to Low, stops the transmission of the 2-wire encoded data, and outputs Null to the data lines Pa2_d [n] (n = 0, 1, 2, 3). . Process C detects that a response has been received by process A by receiving Null, and transitions the response signal Pa2_c to High. As a result, the sequence with the process C is completed, but as shown in the list of FIG. 10, since it is always wait (! RESET), the process with the process B and the process C unless the RESET signal is set to High. Asynchronous communication is repeated.

본 발명의 probe 및 sync를 사용하면, 더 효율적인 회로를 보다 간단하게 구성하는 것이 가능하다. 우선 그 적합한 실시예를 설명하기 전에, Verilog HDL의 서브셋에 추가된 통신용 프리미티브를 이하에 정리한다.Using the probe and sync of the present invention, it is possible to construct a more efficient circuit more simply. First, before describing the preferred embodiment, the communication primitives added to the subset of Verilog HDL are summarized below.

1. channel : 새롭게 추가된 data type, 하기 cport를 접속함.1. channel: Newly added data type, connected to the following cport.

2. cport : 새롭게 추가된 data type, 이하의 6가지 타입이 있음.2. cport: newly added data type, there are 6 types as below.

active input : 능동적 입력 포트active input: active input port

active output : 능동적 출력 포트active output: active output port

passive input : 수동적 입력 포트passive input: passive input port

passive output : 수동적 출력 포트passive output: passive output port

active sync : 능동적 동기 포트active sync: active sync port

passive sync : 수동적 동기 포트passive sync: passive sync port

3. send/receive/sync/probe : 새롭게 추가된 통신용 커맨드.3. send / receive / sync / probe: New command for communication.

send : 변수로부터 판독한 데이터의 송신을 행하는 커맨드.send: A command to send data read from a variable.

receive : 데이터의 수신과 변수로의 기입을 행하는 커맨드.receive: A command to receive data and write to a variable.

sync : 데이터 송수신을 수반하지 않고 포트간의 동기를 취하는 커맨드.sync: A command that synchronizes ports without involving data transmission and reception.

4. probe : 새롭게 추가된 Function.4. probe: Newly added Function.

probe : 지정한 cport에 접속하는 channel 상의 즉치를 되돌리는 Function.probe: A Function that returns the immediate value on the channel connecting to the specified cport.

우선 Probe function을 이용한 실시예에 대해서 설명한다. Passive 포트 경유의 send 또는 receive의 핸드셰이킹에서는, 대향 포트로부터의 요구 신호의 도래에 의해, 송신 또는 수신의 시퀀스가 개시된다. 그러나, 실제 회로에서는 요구 신호의 도래에 의해 즉시 핸드셰이킹을 개시하는 것이 아니라, 예를 들어 요구 신호를 대기하여, 우선 다른 처리를 행한 후에, 송신 또는 수신의 핸드셰이킹을 행하는 경우가 있다. 새롭게 정의된 커맨드에 의하면, 대향 포트로부터의 요구 신호를 대기하여, 우선 다른 처리를 행한 후에, 송신 또는 수신의 핸드셰이킹을 행할 수 있다.First, an embodiment using a probe function will be described. In handshaking of send or receive via a passive port, a sequence of transmission or reception is initiated by the arrival of a request signal from an opposite port. However, in actual circuits, handshaking may not be started immediately by the arrival of the request signal, but for example, waiting for the request signal, first performing other processing, and then performing handshaking of transmission or reception. According to the newly defined command, it is possible to wait for a request signal from an opposing port, perform other processing first, and then perform handshaking of transmission or reception.

도 28은 probe의 사용예 1을 비동기 회로 설계 언어에 의해 기술한 코딩 예이다. 도 28에 나타낸 코딩 예에 있어서, 「…」는 임의의 스테이트먼트를 나타낸 다. 모듈 선언부에서는 모듈명 「M」, 입출력 신호명 「P」가 선언된다. 입출력 신호(포트) 선언부에서는, 포트 P는 8비트의 cport passive output인 것이 선언된다. if문에서는, probe(P)의 커맨드가 되돌리는 값이 1비트의 1일 경우에, 다음 스테이트먼트(if문과 send(P, a) 사이의 「…」)를 실행하도록 기술되어 있다. send(P, a)는 변수 a로부터 판독한 값을 포트 P를 통하여 대향 포트에 송신하기 위한 커맨드이다.28 is a coding example in which usage example 1 of the probe is described using an asynchronous circuit design language. In the coding example shown in FIG. 28, "..." Indicates an arbitrary statement. In the module declaration section, the module name "M" and the input / output signal name "P" are declared. In the input / output signal (port) declaration section, port P is declared to be an 8-bit cport passive output. In the if statement, it is described to execute the next statement ("..." between the if statement and send (P, a)) when the value returned by the probe (P) command is 1 bit. send (P, a) is a command for sending the value read from the variable a through the port P to the opposite port.

도 29는 probe의 사용예 1을 Verilog 코드로 변환한 코드 변환 예이다. 모듈 선언부에서는 모듈명 「M」, 입출력 신호명 「P_ctrl, P_data」가 선언된다. 입출력 신호 선언부에서는 1비트의 입력 신호 P_ctrl과 8비트의 출력 신호 P_data가 선언된다. 이 상태를 도시하면, 도 30에 나타낸 바와 같이 된다. 프로세스 M, N은 각각의 포트 P, Q를 통하여 접속되어 있다. 포트 P는 passive output, 포트 Q는 active input이다. 포트 P는 포트 Q로부터 P_ctrl을 통하여 요구 신호를 수신하면, P_data를 통하여 데이터(응답 신호)를 송신한다. 여기서, 도 29의 설명으로 되돌아가면, if문은, P_ctrl의 값이 1비트의 1일 경우에, 다음 스테이트먼트(if문과 begin 사이의 「…」)를 실행하도록 코딩된다. begin∼end문은 send(P, a)를 Verilog 코드로 변환한 스테이트먼트이다. 이 begin∼end문에 대해서 도 31을 참조하면서 설명한다. 우선 P_ctrl이 하이 임피던스가 아닐 때까지 대기하고, probe 커맨드를 실행한 후에, P_data에 변수 a의 값을 출력한다. 이어서, P_ctrl이 하이 임피던스로 되기를 대기하고, P_data를 개방한다(4상 핸드셰이킹). 여기서, P_ctrl은 요구 신호에 상당하고, P_data는 응답 신호에 상당한다. 이와 같이, probe 커맨드를 사용함으로써, 대향 포트로부터 요구 신호를 수신한 후, 상기 대향 포트에 응답 신호를 응답하기 전에, 임의의 스테이트먼트 「…」를 실행할 수 있다.Fig. 29 is a code conversion example in which the example 1 of the probe is converted into a Verilog code. In the module declaration section, the module name "M" and the input / output signal names "P_ctrl, P_data" are declared. In the input / output signal declaration section, an input signal P_ctrl of 1 bit and an output signal P_data of 8 bits are declared. This state is as shown in FIG. Processes M and N are connected via respective ports P and Q. Port P is passive output and port Q is active input. When the port P receives the request signal from the port Q through P_ctrl, the port P transmits data (response signal) through the P_data. Returning to the description of FIG. 29, the if statement is coded to execute the next statement ("..." between the if statement and begin) when the value of P_ctrl is 1 bit. The begin-end statement is a statement that converts send (P, a) into Verilog code. The begin to end statements will be described with reference to FIG. First, wait until P_ctrl is not high impedance, execute the probe command, and output the value of variable a to P_data. Then wait for P_ctrl to become high impedance and open P_data (4-phase handshaking). Here, P_ctrl corresponds to the request signal, and P_data corresponds to the response signal. In this way, by using the probe command, after receiving the request signal from the opposing port and before responding to the opposing port with the response signal, the arbitrary message " Can be executed.

도 32는 probe의 사용예 2를 비동기 회로 설계 언어에 의해 기술한 코딩 예이다. 모듈 선언부에서는 모듈명 「M」, 입출력 신호명 「P」가 선언된다. 입출력 신호 선언부에서는, 포트 P는 8비트의 cport passive input인 것이 선언된다. wait문에서는, probe(P)의 커맨드가 되돌리는 값이 8비트의 소정값일 경우(하이 임피던스가 아닐 경우)에, probe(P)의 커맨드가 되돌리는 값에 따라 정해진 case문의 스테이트먼트 「…」를 실행하도록 기술되어 있다. receive(P, a)는 포트 P를 통하여 수신한 값을 변수 a에 대입하기 위한 커맨드이다.32 is a coding example in which usage example 2 of the probe is described using an asynchronous circuit design language. In the module declaration section, the module name "M" and the input / output signal name "P" are declared. In the input / output signal declaration section, port P is declared to be an 8-bit cport passive input. In the wait statement, when the value returned by the probe (P) command is a predetermined value of 8 bits (not high impedance), the statement of the case statement determined according to the value returned by the probe (P) command is returned. To execute. receive (P, a) is a command for assigning a value received through port P to variable a.

도 33은 probe의 사용예 2를 Verilog 코드로 변환한 코드 변환 예이다. 모듈 선언부에서는 모듈명 「M」, 입출력 신호명 「P_ctrl, P_data」가 선언된다. 입출력 신호 선언부에서는, 8비트의 입력 신호 P_data와 1비트의 출력 신호 P_ctrl이 선언된다. 이 상태를 도시하면, 도 34에 나타낸 바와 같이 된다. 프로세스 M, N은 각각의 포트 P, Q를 통하여 접속되어 있다. 포트 P는 passive input, 포트 Q는 active output이다. 포트 P는 포트 Q로부터 P_data를 통하여 데이터(요구 신호)를 수신하면, P_ctrl을 통하여 응답 신호를 응답한다. 여기서, 도 33의 설명으로 되돌아가면, wait문은, P_data의 값이 8비트의 소정값일 경우(하이 임피던스가 아닐 경우)에, P_data의 값에 따라 정해진 case문의 스테이트먼트 「…」를 실행하도록 기술되어 있다. begin∼end문은 receive(P, a)를 Verilog 코드로 변환한 것 이다. 이 begin∼end문에 대해서 도 35를 참조하면서 설명한다. 우선 P_data가 하이 임피던스가 아닐 때까지 대기하고, probe 커맨드를 실행한 후, P_data에 출력된 값을 변수 a에 대입한다. 이어서, P_ctrl에 1비트의 1을 출력하고, P_data가 하이 임피던스로 되기를 대기하여, P_ctrl을 개방한다(4상 핸드셰이킹). 여기서, P_data는 요구 신호에 상당하고, P_ctrl은 응답 신호에 상당한다. 이와 같이, probe 커맨드를 사용함으로써, 대향 포트로부터 요구 신호를 수신한 후, 상기 대향 포트에 응답 신호를 응답하기 전에, case문에서 지정된 임의의 스테이트먼트 「…」를 실행할 수 있다.Fig. 33 is a code conversion example of converting use example 2 of the probe to Verilog code. In the module declaration section, the module name "M" and the input / output signal names "P_ctrl, P_data" are declared. In the input / output signal declaration section, an 8-bit input signal P_data and a 1-bit output signal P_ctrl are declared. This state is as shown in FIG. Processes M and N are connected via respective ports P and Q. Port P is passive input and port Q is active output. When the port P receives data (a request signal) from the port Q through P_data, the port P responds with a response signal through P_ctrl. Returning to the description of FIG. 33, the wait statement is a statement of the case statement determined according to the value of P_data when the value of P_data is an 8-bit predetermined value (not high impedance). To execute. The begin ~ end statement is the conversion of receive (P, a) into Verilog code. The begin to end statements will be described with reference to FIG. First, it waits until P_data is not high impedance, executes a probe command, and assigns the value output to P_data to variable a. Subsequently, 1 bit of 1 is output to P_ctrl, and P_ctrl is opened by waiting for P_data to become high impedance (four-phase handshaking). Here, P_data corresponds to the request signal, and P_ctrl corresponds to the response signal. In this way, by using the probe command, after receiving the request signal from the opposing port and before responding to the opposing port with the response signal, any statement specified in the case statement is... Can be executed.

도 36은 sync의 사용예 1을 비동기 회로 설계 언어에 의해 기술한 코딩 예이다. 모듈 선언부에서는 모듈명 「M」, 입출력 신호명 「P」가 선언된다. 입출력 신호 선언부에서는, 포트 P는 cport passive sync인 것이 선언된다. sync(P)는 포트 P를 통하여 포트간의 동기를 취하기 위한 커맨드이다.Fig. 36 is a coding example for describing the use example 1 of sync using an asynchronous circuit design language. In the module declaration section, the module name "M" and the input / output signal name "P" are declared. In the input / output signal declaration section, the port P is declared to be cport passive sync. sync (P) is a command for synchronizing between ports via the port P.

도 37은 sync의 사용예 1을 Verilog 코드로 변환한 코드 변환 예이다. 모듈 선언부에서는 모듈명 「M」, 입출력 신호명 「P_ctrl, P_data」가 선언된다. 입출력 신호 선언부에서는, 입력 신호 P_ctrl과 출력 신호 P_data가 선언된다. 이 상태를 도시하면, 도 38에 나타낸 바와 같이 된다. 프로세스 M, X는 포트 P, Q를 통하여 접속되어 있다. 포트 P는 passive sync, 포트 Q는 active sync이다. 또한, 프로세스 M, N은 포트 R, S를 통하여 접속되어 있다. 포트 R은 active input, 포트 S는 passive output이다. 포트 P, Q는 데이터 송수신을 행하지 않고 포트간의 동기를 취한다. 포트 R, S는 핸드셰이킹을 통하여 데이터 송수신을 행한다. 여기 서, 도 37의 설명으로 되돌아가면, begin∼end문은 sync(P)를 Verilog 코드로 변환한 것이다. 이 begin∼end문에서는, 우선 P_ctrl이 하이 임피던스가 아닐 때까지 대기하여, P_data에 1비트의 1을 출력한다. 이어서, P_ctrl이 하이 임피던스로 되기를 대기하여, P_data를 개방한다. 이것에 의해, 포트 P, Q간의 동기를 취할 수 있다.Fig. 37 is a code conversion example of converting sync example 1 to Verilog code. In the module declaration section, the module name "M" and the input / output signal names "P_ctrl, P_data" are declared. In the input / output signal declaration section, the input signal P_ctrl and the output signal P_data are declared. This state is as shown in FIG. Processes M and X are connected via ports P and Q. Port P is passive sync and port Q is active sync. In addition, processes M and N are connected via ports R and S. FIG. Port R is the active input and port S is the passive output. The ports P and Q perform synchronization between ports without performing data transmission / reception. Ports R and S perform data transmission and reception through handshaking. Returning to the description of FIG. 37, the begin to end statements convert sync (P) into Verilog codes. In this begin to end statement, first, the terminal waits until P_ctrl is not high impedance, and outputs 1 bit of 1 to P_data. Subsequently, P_ctrl waits for high impedance to open P_data. This makes it possible to synchronize ports P and Q.

sync 커맨드의 사용예에 대해서 도 38 및 도 39를 참조하면서 설명한다. 여기서는, 프로세스 X가 포트 P, Q를 통하여 프로세스 M, N간의 통신을 제어하는 순서를 예시한다. 프로세스 M은, P_ctrl이 하이 임피던스가 아니게 됨으로써, 포트 Q로부터의 요구 신호의 도래를 검출하면, 프로세스 N에 대하여 데이터 전송을 요구하는 요구 신호를 R_ctrl에 출력한다. 그리하면, 프로세스 N으로부터 R_data에 데이터가 출력된다. 이 데이터는 요구 신호에 대한 응답 신호이다. 프로세스 M은 R_data에 데이터가 출력된 것을 받아, R_ctrl을 취소(negate)한다. 프로세스 M은 R_data로부터의 데이터 수신을 완료하면, P_data에 응답 신호를 출력한다. 그리하면, P_ctrl은 취소된다. 이와 같이, sync 커맨드를 사용함으로써, 프로세스간의 통신을 제어하는 것도 가능하다.An example of the use of the sync command will be described with reference to FIGS. 38 and 39. Here, the process which the process X controls the communication between the processes M and N through the ports P and Q is illustrated. When the process M detects the arrival of the request signal from the port Q because P_ctrl is not high impedance, the process M outputs a request signal for requesting data transfer to the process N to R_ctrl. Then, data is output from process N to R_data. This data is a response signal to the request signal. Process M receives the data output in R_data and negates R_ctrl. When the process M completes the reception of data from R_data, it outputs a response signal to P_data. Then P_ctrl is canceled. In this way, it is also possible to control communication between processes by using the sync command.

도 40은 sync의 사용예 2를 비동기 회로 설계 언어에 의해 기술한 코딩 예이다. 모듈 선언부에서는 모듈명 「M」, 입출력 신호명 「P」가 선언된다. 입출력 신호 선언부에서는, 포트 P는 cport active sync인 것이 선언된다. if문은 probe(P)가 되돌리는 값이 1비트의 1일 경우에, if문과 sync(P) 사이의 스테이트먼트 「…」를 실행하도록 기술되어 있다. 본 예는 probe 커맨드를 사용하는 예를 나타내고 있지만, sync 커맨드를 사용하는데 if문은 필수가 아니라 생략할 수도 있다.40 is a coding example in which sync example 2 of sync is described using an asynchronous circuit design language. In the module declaration section, the module name "M" and the input / output signal name "P" are declared. In the input / output signal declaration section, the port P is declared to be cport active sync. The if statement is a statement between the if statement and sync (P) when the value returned by probe (P) is 1 bit 1. To execute. This example shows the use of the probe command, but the if statement is not required but can be omitted.

도 41은 sync의 사용예 2를 Verilog 코드로 변환한 코드 변환 예이다. 모듈 선언부에서는 모듈명 「M」, 입출력 신호명 「P_ctrl, P_data」가 선언된다. 입출력 신호 선언부에서는, 입력 신호 P_data와 출력 신호 P_ctrl이 선언된다. if문은, P_ctrl의 값이 1비트의 1일 경우에, 다음 스테이트먼트(if문과 begin 사이의 「…」)를 실행하도록 코딩된다. begin∼end문은 sync(P)를 Verilog 코드로 변환한 것이다. 이 begin∼end문에서는, 우선 P_ctrl에 1비트의 1을 출력하고, P_data가 하이 임피던스가 아니게 되기를 대기한다. P_data가 하이 임피던스가 아니게 되면, P_ctrl을 개방하고, P_data가 취소되기를 대기한다.Fig. 41 is a code conversion example of converting use example 2 of sync to Verilog code. In the module declaration section, the module name "M" and the input / output signal names "P_ctrl, P_data" are declared. In the input / output signal declaration section, the input signal P_data and the output signal P_ctrl are declared. The if statement is coded to execute the next statement ("..." between the if statement and begin) when the value of P_ctrl is 1 bit 1. The begin ~ end statement is a conversion of sync (P) into Verilog code. In this begin to end statement, first, one bit 1 is output to P_ctrl, and waits for P_data not to be high impedance. If P_data is not high impedance, open P_ctrl and wait for P_data to be canceled.

본 실시예에 의하면, 업계 표준의 HDL(Verilog HDL 및 VHDL)에 숙달된 기술자가 비교적 용이하게 비동기 회로를 설계할 수 있는 환경을 제공할 수 있다. 또한, 이것에 의해, 반도체 프로세스의 미세화가 진행됨에 따라 현재화된 동기 회로 설계의 한계(전력 문제, 클록 스큐 문제 등)를 초월하여, 프로세스가 제공하는 능력을 종래보다도 단기간에 저렴한 비용으로 높은 신뢰성 및 검증성에 의해 인출하는 것이 가능해진다. 또한, 비동기 회로의 이식성(移植性)은 높기 때문에, 본 발명에 의해 개발된 비동기 회로 설계 기술을 IP로서 반복 활용하는 것이 가능하기 때문에, 기술자 부족이나 단기간의 개발에 대응하기 쉬워진다. 또한, 본 실시예에 의해 전자 복사가 매우 적은 비동기 회로를 다양한 제품을 위해 개발하는 환경을 제공할 수 있다. 본 발명의 비동기 회로 설계 기술은 초저(超低)소비전력 VLSI, 그것을 일체로 구성한 반(半)완성품 또는 완성품(PDA, 스마트카드, 전자북 등), TFT 기술을 이용한 LSI, 그것을 사용한 반완성품 또는 완성품에 적용할 수 있다. 구체적으로는, 웨어러블(wearable) 기기, 완구, 가정용 방범 센서 관련 기기, RFID 등의 배터리를 탑재하지 않는 전자 기기, 자동차 탑재 기기, 의료 기기, 군수(軍需) 제품 등에 응용할 수 있다.According to the present embodiment, it is possible to provide an environment in which a technician skilled in the industry standard HDL (Verilog HDL and VHDL) can design an asynchronous circuit relatively easily. As a result, as semiconductor processes progress in miniaturization, the reliability of the synchronous circuit design (current power problem, clock skew problem, etc.) has been exceeded. And it becomes possible to draw out by verifiability. In addition, since the portability of the asynchronous circuit is high, it is possible to repeatedly use the asynchronous circuit design technology developed by the present invention as IP, so that it becomes easy to cope with a shortage of engineers and short-term development. In addition, the present embodiment can provide an environment in which asynchronous circuits with very low electromagnetic radiation are developed for various products. The asynchronous circuit design technology of the present invention is an ultra-low power consumption VLSI, a semi-finished or finished product (PDA, smart card, e-book, etc.) integrally composed thereof, LSI using a TFT technology, a semi-finished product using the same or Applicable to the finished product. Specifically, the present invention can be applied to wearable devices, toys, home crime prevention sensor-related devices, electronic devices that do not contain batteries such as RFID, automobile-mounted devices, medical devices, military products, and the like.

본 발명에 따르면, 산업계에 널리 보급되어 있는 동기 회로 설계의 하드웨어 기술 언어에 숙달된 기술자에게 비교적 용이하게 비동기 회로 설계를 행하기 위한 비동기 회로 설계 툴 및 컴퓨터 프로그램을 제공할 수 있다.According to the present invention, it is possible to provide an asynchronous circuit design tool and a computer program for performing asynchronous circuit design relatively easily to those skilled in the hardware description language of the synchronous circuit design that are widely used in the industry.

Claims (12)

삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 동기 회로 설계용 하드웨어 기술 언어에 비동기 프로세스간 통신을 가능하게 하는 프리미티브가 부가된 비동기 회로 설계 언어에 의해 기술된 코드를 상기 동기 회로 설계용 하드웨어 기술 언어로 변환하는 변환 수단으로서, 컴퓨터 시스템을 기능시키기 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.Functioning a computer system as a converting means for converting code described by an asynchronous circuit design language with a primitive that enables asynchronous interprocess communication to a hardware description language for synchronous circuit design into the hardware description language for synchronous circuit design. A computer readable recording medium having recorded thereon a computer program. 동기 회로 설계용 하드웨어 기술 언어에 비동기 프로세스간 통신을 가능하게 하는 프리미티브가 부가된 비동기 회로 설계 언어에 의해 기술된 비동기 회로 설계를 기능 검증하기 위한 검증 수단으로서, 컴퓨터 시스템을 기능시키기 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.A verification means for functionally verifying an asynchronous circuit design described by an asynchronous circuit design language with a primitive that enables asynchronous interprocess communication to a hardware description language for synchronous circuit design, which records a computer program for functioning a computer system. Computer-readable recording medium. 동기 회로 설계용 하드웨어 기술 언어에 비동기 프로세스간 통신을 가능하게 하는 프리미티브가 부가된 비동기 회로 설계 언어에 의해 기술된 비동기 회로 설계를 컴파일 방식에 의해 중간 언어로 변환하고 나서 기능 검증을 행하는 검증 수단으로서, 컴퓨터 시스템을 기능시키기 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.As verification means for performing functional verification after converting an asynchronous circuit design described by an asynchronous circuit design language with a primitive that enables asynchronous interprocess communication to a hardware description language for synchronous circuit design into an intermediate language by a compile method, A computer readable recording medium having recorded thereon a computer program for operating a computer system. 동기 회로 설계용 하드웨어 기술 언어에 비동기 프로세스간 통신을 가능하게 하는 프리미티브가 부가된 비동기 회로 설계 언어에 의해 기술된 비동기 회로 설계를 인터프리터 방식에 의해 상기 비동기 회로 설계 언어를 차례로 해석하면서 기능 검증을 행하는 검증 수단으로서, 컴퓨터 시스템을 기능시키기 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.Verification that performs functional verification while interpreting the asynchronous circuit design language in turn by an interpreter method, which is described by an asynchronous circuit design language with primitives that enable asynchronous interprocess communication to a hardware description language for synchronous circuit design. A computer-readable recording medium having recorded thereon a computer program for operating a computer system as a means. 동기 회로 설계용 하드웨어 기술 언어에 비동기 프로세스간 통신을 가능하게 하는 프리미티브가 부가된 비동기 회로 설계 언어에 의해 기술된 코드를 논리 합성하여 네트리스트를 생성하는 논리 합성 수단으로서, 컴퓨터 시스템을 기능시키기 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.A logical synthesis means for generating a netlist by logically synthesizing code described by an asynchronous circuit design language with primitives that enable asynchronous interprocess communication to a hardware description language for synchronous circuit design. Computer-readable recording medium that records a program.
KR1020050118069A 2005-01-19 2005-12-06 Computer readable recording medium for storing computer program KR100803254B1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US11/037,139 2005-01-19
US11/037,139 US7418676B2 (en) 2005-01-19 2005-01-19 Asynchronous circuit design tool and computer program product
JPJP-P-2005-00281558 2005-09-28
JP2005281558A JP4528704B2 (en) 2005-01-19 2005-09-28 Asynchronous circuit design apparatus and computer program

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020070006536A Division KR100830110B1 (en) 2005-01-19 2007-01-22 Inter-process communication method and simulation method in synchronous circuit

Publications (2)

Publication Number Publication Date
KR20060084355A KR20060084355A (en) 2006-07-24
KR100803254B1 true KR100803254B1 (en) 2008-02-13

Family

ID=37174446

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050118069A KR100803254B1 (en) 2005-01-19 2005-12-06 Computer readable recording medium for storing computer program

Country Status (1)

Country Link
KR (1) KR100803254B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114253862A (en) * 2021-12-29 2022-03-29 湖南泛联新安信息科技有限公司 Asynchronous event-driven automatic analysis method for HDL (hardware description language) code simulation coverage rate

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09184874A (en) * 1995-12-27 1997-07-15 Nec Corp Method for testing asynchronous circuit
JPH09231259A (en) * 1996-02-28 1997-09-05 Dainippon Printing Co Ltd Logical design support device and logical synthesizing tool
JPH1185810A (en) 1997-09-09 1999-03-30 Mitsubishi Electric Corp Logic circuit verification device for semiconductor integrated circuit, and logic circuit verification method for logic circuit verification device
KR20010103762A (en) * 1999-12-09 2001-11-23 롤페스 요하네스 게라투스 알베르투스 Method and apparatus for synthesizing communication support based on communication types of application
JP2003233638A (en) 2002-02-12 2003-08-22 Nec Microsystems Ltd Verification method and its program for asynchronous circuit
JP2004185311A (en) 2002-12-03 2004-07-02 Ricoh Co Ltd Asynchronous circuit verification support device

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09184874A (en) * 1995-12-27 1997-07-15 Nec Corp Method for testing asynchronous circuit
JPH09231259A (en) * 1996-02-28 1997-09-05 Dainippon Printing Co Ltd Logical design support device and logical synthesizing tool
JPH1185810A (en) 1997-09-09 1999-03-30 Mitsubishi Electric Corp Logic circuit verification device for semiconductor integrated circuit, and logic circuit verification method for logic circuit verification device
KR20010103762A (en) * 1999-12-09 2001-11-23 롤페스 요하네스 게라투스 알베르투스 Method and apparatus for synthesizing communication support based on communication types of application
JP2003233638A (en) 2002-02-12 2003-08-22 Nec Microsystems Ltd Verification method and its program for asynchronous circuit
JP2004185311A (en) 2002-12-03 2004-07-02 Ricoh Co Ltd Asynchronous circuit verification support device

Also Published As

Publication number Publication date
KR20060084355A (en) 2006-07-24

Similar Documents

Publication Publication Date Title
JP4528704B2 (en) Asynchronous circuit design apparatus and computer program
Spars et al. Principles asynchronous circuit design
JP2011512602A (en) Logical conversion from synchronous to asynchronous
Josephs et al. Modeling and design of asynchronous circuits
JPH10116302A (en) Integrated circuit designing method and integrated circuit designed by it
CN112232000A (en) Authentication system, authentication method and authentication device spanning multiple authentication domains
CN114780100B (en) Compiling method, electronic device and storage medium
US7496869B1 (en) Method and apparatus for implementing a program language description of a circuit design for an integrated circuit
CN114707444B (en) Method for compiling verification system, electronic device and storage medium
CN116029241A (en) FPGA bit stream configuration control layer and bit stream switching control method
KR100830110B1 (en) Inter-process communication method and simulation method in synchronous circuit
KR100803254B1 (en) Computer readable recording medium for storing computer program
CN111176926B (en) IP core simulation system and simulation method based on dual-port SRAM
CN105740579A (en) Construction method for connection of UVM verification platform
Szecówka et al. USB receiver/transmitter for FPGA implementation
Decaluwe MyHDL manual
Semba et al. Conversion from synchronous RTL models to asynchronous RTL models
Guo et al. A SPI interface module verification method based on UVM
CN105068908B (en) A kind of building method of functional verification platform for KVM ASIC
Aggarwal et al. SCF: A device-and language-independent task coordination framework for reconfigurable, heterogeneous systems
US20030121009A1 (en) Method for generating register transfer level code
KR200439053Y1 (en) Device having reconfigurable chip for interacting with processor using serial communication channel and system thereof
Bjerregaard et al. A channel library for asynchronous circuit design supporting mixed-mode modeling
Peeters Implementation of handshake components
Gauthier et al. Abstracting HW communications with channels for HDLRuby

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
A107 Divisional application of patent
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130118

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140117

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150120

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee