KR101629141B1 - Method and Apparatus for Convert SPICE Netlist to FPGA Synthesizable Verilog Code - Google Patents

Method and Apparatus for Convert SPICE Netlist to FPGA Synthesizable Verilog Code Download PDF

Info

Publication number
KR101629141B1
KR101629141B1 KR1020150024343A KR20150024343A KR101629141B1 KR 101629141 B1 KR101629141 B1 KR 101629141B1 KR 1020150024343 A KR1020150024343 A KR 1020150024343A KR 20150024343 A KR20150024343 A KR 20150024343A KR 101629141 B1 KR101629141 B1 KR 101629141B1
Authority
KR
South Korea
Prior art keywords
verilog
code
grammar
fpga
input
Prior art date
Application number
KR1020150024343A
Other languages
Korean (ko)
Inventor
강진구
박인항
Original Assignee
인하대학교 산학협력단
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인하대학교 산학협력단, 에스케이하이닉스 주식회사 filed Critical 인하대학교 산학협력단
Priority to KR1020150024343A priority Critical patent/KR101629141B1/en
Application granted granted Critical
Publication of KR101629141B1 publication Critical patent/KR101629141B1/en

Links

Images

Classifications

    • G06F17/5054
    • G06F17/5036

Abstract

Disclosed is a method and apparatus for converting a SPICE netlist into an FPGA-synthesizable Verilog code. The method for converting a SPICE netlist into an FPGA-synthesizable Verilog code, which is proposed by the present invention, includes: a first conversion step for converting a grammar code of a received SPICE netlist into a grammar code of a transistor-level Verilog, and selecting a wire to be used as an input and an output, using a graphic user interface; and a second conversion step for converting the grammar code of the transistor-level Verilog into an FPGA-synthesizable grammar code of a Verilog. The present invention can convert a SPICE netlist into a synthesizable Verilog code, and thus, can substitute simulation using a software manner for simulation using a hardware manner, thereby shortening a logic verification time.

Description

스파이스 넷리스트를 에프피지에이 합성이 가능한 베릴로그 코드로 변환하는 방법 및 시스템{Method and Apparatus for Convert SPICE Netlist to FPGA Synthesizable Verilog Code}TECHNICAL FIELD [0001] The present invention relates to a method and system for converting a Spice netlist to a Beryllogic code capable of synthesizing an FEP,

본 발명은 메모리 구동 주변회로를 검증할 때 소프트웨어 시뮬레이션의 느린 검증시간을 극복하기 위한 방법 및 시스템에 관한 것이다.The present invention relates to a method and system for overcoming slow verification times of software simulations when verifying memory-driven peripheral circuits.

기존의 메모리 구동 주변회로(Memory Peripheral Logic)를 검증하기 위해서는 도 1의 흐름처럼 그 회로(Circuit)에 대한 netlist(Netlist)정보를 Verilog HDL(합성 불가능한 문법)로 변환한 후에 시뮬레이션(Simulation)을 진행해야 한다. To verify the existing memory-driven peripheral circuit, the netlist information for the circuit is converted into a Verilog HDL (non-synthesizable grammar) as shown in the flowchart of FIG. 1, and then the simulation is performed Should be.

도 1은 종래기술에 따른 메모리 구동 주변 회로 검증 과정을 나타내는 도면이다. 1 is a diagram illustrating a memory driving peripheral circuit verification process according to the related art.

SPICE netlist로 표현한 회로(Circuit)을 Verilog HDL(합성 불가능한 코드)로 변환 한 후에 소프트웨어(software)를 이용한 시뮬레이션(simulation)을 진행한다. 메모리(Memory)의 용량과 기능이 증가하면서 다양하고 긴 입력 벡터(Input vector)를 검증해야 하며, 소프트웨어(software)를 이용한 시뮬레이션(simulation)은 매우 긴 시간이 걸린다. After converting the circuits expressed in the SPICE netlist into Verilog HDL (non-synthesizable code), the simulation using software is performed. As the capacity and function of the memory increase, various long input vectors must be verified. Simulation using software takes a very long time.

다시 말해, 메모리 구동 주변회로 netlist(110)를 Verilog 모델링(120)을 통해 변환한 후, 시뮬레이션(Simulation) 검증(130)을 수행할 수 있다. 이때 모델링(Modeling)된 Verilog HDL형태의 메모리 구동 주변회로(Memory Peripheral Logic)은 합성이 불가능하기에 FPGA위에 다운로드 할 수 없다. 따라서 시뮬레이션 소프트웨어(Simulation Software)(ModelSim/Questa)를 통한 검증만이 가능하다. 메모리 설계의 테스트 특성상 다양하고 긴 입력 벡터(Input Vector)를 통해 검증해야 할 동작이 매우 많기 때문에 종래 기술에 따른 시뮬레이션에는 매우 오랜 시간이 걸리게 되는 문제점이 있다.In other words, the memory-driven peripheral circuit netlist 110 may be transformed through the Verilog modeling 120, and then the simulation verification 130 may be performed. At this time, Modeled Verilog HDL memory-driven peripheral circuit (Memory Peripheral Logic) can not be synthesized and can not be downloaded onto the FPGA. Therefore, only verification through simulation software (ModelSim / Questa) is possible. Due to the nature of the memory design test, there are many operations that need to be verified through various input vectors, so that it takes a very long time for the simulation according to the prior art.

기존의 소프트웨어(Software)상에서의 긴 검증시간을 개선하기 위해서는 하드웨어(Hardware)상에서의 검증시스템이 필요하게 되었으며, 이를 위한 코드 변환 프로그램을 제시한다. 도 1의 프로세스(Process)는 도 2의 프로세스(Process)로 변경되는데 Verilog 모델링(Modeling)과정을 합성이 가능한 모델링(Modeling)과정으로 변경하기 위하여 제안하는 프로그램이 사용된다.In order to improve the verification time over existing software, a verification system on hardware is needed, and a code conversion program is proposed. The process of FIG. 1 is changed to the process of FIG. 2, and a program proposed to change the Verilog modeling process into a modeling process that can be synthesized is used.

본 발명이 이루고자 하는 기술적 과제는 메모리 구동 주변회로를 검증할 때 소프트웨어 시뮬레이션의 느린 검증시간을 극복하기 위해, FPGA를 이용한 검증이 가능하도록 SPICE netlist를 같은 기능을 갖는 Verilog 코드로 변환하기 위한 방법 및 시스템을 제공하는데 있다. The present invention provides a method and system for converting a SPICE netlist into a Verilog code having the same function so as to enable verification using an FPGA in order to overcome a slow verification time of a software simulation when verifying a memory- .

일 측면에 있어서, 본 발명에서 제안하는 SPICE netlist를 FPGA 합성이 가능한 Verilog 코드로 변환하는 방법은 입력 받은 SPICE netlist의 문법 코드를 트랜지스터 레벨 Verilog의 문법 코드로 변환하고, 그래픽 사용자 인터페이스를 사용하여 입력 및 출력으로 사용할 와이어를 선택하는 1차 변환 단계, 입력 받은 상기 트렌지스터 레벨 Verilog의 문법 코드를 FPGA 합성 가능한 Verilog 문법 코드로 변환하는 2차 변환 단계를 포함할 수 있다. In one aspect, a method for converting a SPICE netlist proposed in the present invention into a Verilog code capable of FPGA synthesis is performed by converting a grammar code of a received SPICE netlist into a grammar code of a transistor level Verilog, A first conversion step of selecting a wire to be used as an output, and a second conversion step of converting a grammar code of the received transistor level Verilog into an FPGA synthesizable Verilog syntax code.

상기 1차 변환 단계는 타이틀카드, 소자카드, 제어카드, .END 카드로 작성된 SPICE netlist의 문법코드를 상기 소자카드 이외의 카드들은 모두 제거한 후, 상기 소자카드에 적혀있는 회로구성을 Verilog 문법에 맞게 변환할 수 있다. Wherein the first conversion step includes removing all the cards other than the device card from the grammar code of the SPICE netlist formed by the title card, the device card, the control card, the .E.END card, and then setting the circuit configuration written in the device card according to the Verilog syntax Can be converted.

상기 제2 변환 단계는 상기 소자카드에 적혀있는 회로구성의 트랜지스터들의 연결구조를 파악하여 같은 기능을 하는 합성 가능한 게이트 또는 모듈로 대체할 수 있다. The second conversion step may be performed by identifying a connection structure of the transistors in the circuit configuration written in the element card and replacing the gate or the module with a synthesizable function performing the same function.

상기 제2 변환 단계는 목표 게이트 라이브러리를 이용하여 회로구조를 파악하고, 상기 목표 게이트 라이브러리는 미리 작성된 복수의 예제들을 포함하고, 상기 미리 작성된 복수의 예제들은 변환 전 상기 트렌지스터 레벨 Verilog의 문법 코드 및 변화 후 원하는 FPGA 합성 가능한 Verilog 문법 코드가 차례로 적혀있을 수 있다. Wherein the second conversion step determines a circuit structure using a target gate library, the target gate library includes a plurality of prebuilt examples, the plurality of prebuilt examples include a grammar code of the transistor level Verilog and a change Then the desired FPGA synthesizable Verilog grammar code may be listed in turn.

상기 2차 변환 단계 후, FPGA 합성 불가능한 소자가 남아있다면 예제를 더 추가할 수 있다. After the secondary conversion step, additional examples can be added if there is a device that can not synthesize the FPGA.

상기 제2 변환 단계는 상기 예제와 같은 회로구조를 입력 파일에서 모두 찾고 변환할 수 있다. The second conversion step can find and convert all the circuit structures in the input file as in the example above.

또 다른 일 측면에 있어서, 본 발명에서 제안하는 SPICE netlist를 FPGA 합성이 가능한 Verilog 코드로 변환하는 시스템은 입력 받은 SPICE netlist의 문법 코드를 트랜지스터 레벨 Verilog의 문법 코드로 변환하고, 입력 받은 상기 트렌지스터 레벨 Verilog의 문법 코드를 FPGA 합성 가능한 Verilog 문법 코드로 변환하는 변환부, 그래픽 사용자 인터페이스를 사용하여 상기 변환된 코드의 입력 및 출력으로 사용할 와이어를 선택하는 선택부를 포함할 수 있다. In another aspect, a system for converting a SPICE netlist proposed in the present invention into a Verilog code capable of FPGA synthesis converts a grammar code of a received SPICE netlist into a grammar code of a transistor level Verilog, And a selector for selecting a wire to be used as an input and an output of the converted code using a graphical user interface.

상기 변환부는 목표 게이트 라이브러리를 이용하여 회로구조를 파악하고, 상기 목표 게이트 라이브러리에 포함된 예제와 같은 회로구조를 입력 파일에서 모두 찾고 변환할 수 있다.The conversion unit can identify the circuit structure using the target gate library, and can find and convert the circuit structure such as the example included in the target gate library in the input file.

본 발명의 실시예들에 따르면 SPICE netlist를 갖은 로직(logic)을 갖는 합성 가능한 Verilog 코드로 변환 가능해지므로 소프트웨어 상에서의 시뮬레이션을 하드웨어 상에서의 시뮬레이션으로 대체하여 로직(Logic) 검증시간을 단축시킬 수 있다. According to the embodiments of the present invention, it is possible to convert into synthesizable Verilog code having logic having a SPICE netlist, so that logic simulation verification time can be shortened by replacing software simulation with hardware simulation.

도 1은 종래기술에 따른 메모리 구동 주변 회로 검증 과정을 나타내는 도면이다.
도 2는 개선된 메모리 구동 주변 회로 검증 과정을 나타내는 도면이다.
도 3은 본 발명의 일 실시예에 따른 SPICE netlist를 FPGA 합성이 가능한 Verilog 코드로 변환하는 방법을 설명하기 위한 흐름도이다.
도 4는 본 발명의 일 실시예에 따른 프로그램의 전체 구성도이다.
도 5는 본 발명의 일 실시예에 따른 NAND 게이트의 구조와 Verilog 코드를 나타내는 도면이다.
도 6은 본 발명의 일 실시예에 따른 2차 변환 알고리즘을 나타내는 도면이다.
도 7은 본 발명의 일 실시예에 따른 프로그램 적용 전후의 회로도를 나타내는 도면이다.
도 8은 본 발명의 일 실시예에 따른 프로그램 적용 전후의 SPICE netlist의 결과파형을 나타내는 도면이다.
도 9는 본 발명의 일 실시예에 따른 SPICE netlist를 FPGA 합성이 가능한 Verilog 코드로 변환하는 시스템의 구성을 나타내는 도면이다.
1 is a diagram illustrating a memory driving peripheral circuit verification process according to the related art.
2 is a diagram illustrating an improved memory drive peripheral circuit verification process.
3 is a flowchart illustrating a method for converting a SPICE netlist into a Verilog code capable of FPGA synthesis according to an embodiment of the present invention.
4 is an overall configuration diagram of a program according to an embodiment of the present invention.
5 is a diagram illustrating a structure of a NAND gate and a Verilog code according to an embodiment of the present invention.
6 is a diagram illustrating a quadratic transformation algorithm according to an embodiment of the present invention.
7 is a circuit diagram showing a state before and after application of a program according to an embodiment of the present invention.
8 is a diagram showing a resultant waveform of a SPICE netlist before and after application of a program according to an embodiment of the present invention.
9 is a diagram illustrating a configuration of a system for converting a SPICE netlist into a Verilog code capable of FPGA synthesis according to an embodiment of the present invention.

이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.

도 2는 개선된 메모리 구동 주변 회로 검증 과정을 나타내는 도면이다. 2 is a diagram illustrating an improved memory drive peripheral circuit verification process.

프로그램은 SPICE netlist를 입력으로 받아서 같은 기능을 갖는 FPGA합성 가능한 Verilog 코드(code)를 만든다. 변환은 2단계에 걸쳐서 진행되며, 2차 변환에서는 인버터(inverter), 낸드(nand)와 같은 전형적인 회로뿐만 아니라 비표준 방식의 특수한 회로들에도 대응할 수 있도록 '목표 게이트 라이브러리'를 사용한다. 프로그램은 Qt 라이브러리를 사용하여 작성하였다. 합성이 가능하게 모델링(Modeling)된 회로는 FPGA상에 다운로드를 하는 것이 가능해지며, 하드웨어(Hardware)상에는 더욱 빠른 회로의 로직(logic)검증이 가능하다.The program takes the SPICE netlist as an input and generates Verilog code (code) that can be synthesized with the FPGA. The conversion is performed in two stages. In the second conversion, a 'target gate library' is used to cope with not only typical circuits such as an inverter and NAND but also special circuits of a non-standard type. The program was written using the Qt library. Simplified circuit modeling can be downloaded onto the FPGA, allowing faster circuit logic verification on the hardware.

다시 말해, 종래 기술에 따른 소프트웨어(Software) 상에서의 긴 검증시간을 개선하기 위한 하드웨어(Hardware) 상에서의 검증시스템을 제안한다. 도 1의 프로세스는 도 2의 프로세스로 변경될 수 있다. 메모리 구동 주변회로 netlist(210)를 Verilog 모델링(220)을 통해 변환할 수 있고, 이때 Verilog 모델링(220) 과정을 합성이 가능한 모델링(Modeling)과정으로 변경하여 진행하는 것이 우선작업이 되어야 한다. 합성이 가능하도록 모델링(Modeling)된 회로는 FPGA에 로드(Load)(230) 하는 것이 가능해진다. 다시 말해, 하드웨어(Hardware)상에서 구현이 가능해질 수 있다. FPGA에 구현된 회로를 검증하기 위해서는 이를 위한 시스템을 설계해야 한다. 따라서, 제안된 시스템을 통해 검증(240)을 수행할 수 있다. In other words, we propose a verification system on hardware to improve the long verification time on software according to the prior art. The process of FIG. 1 may be changed to the process of FIG. The memory-driven peripheral circuit netlist 210 can be converted through the Verilog modeling 220 and the Verilog modeling process 220 can be modified into a modeling process. The modeled circuit can be loaded 230 into the FPGA so that synthesis can be performed. In other words, it can be implemented on hardware. To verify the circuit implemented in the FPGA, a system must be designed for it. Thus, verification 240 can be performed through the proposed system.

도 3은 본 발명의 일 실시예에 따른 SPICE netlist를 FPGA 합성이 가능한 Verilog 코드로 변환하는 방법을 설명하기 위한 흐름도이다. 3 is a flowchart illustrating a method for converting a SPICE netlist into a Verilog code capable of FPGA synthesis according to an embodiment of the present invention.

SPICE netlist를 FPGA 합성이 가능한 Verilog 코드로 변환하는 방법은 입력 받은 SPICE netlist의 문법 코드를 트랜지스터 레벨 Verilog의 문법 코드로 변환하고, 그래픽 사용자 인터페이스를 사용하여 입력 및 출력으로 사용할 와이어를 선택하는 1차 변환 단계(310), 입력 받은 상기 트렌지스터 레벨 Verilog의 문법 코드를 FPGA 합성 가능한 Verilog 문법 코드로 변환하는 2차 변환 단계(320)를 포함할 수 있다. To translate the SPICE netlist into Verilog code capable of FPGA synthesis, it is necessary to convert the grammar code of the input SPICE netlist into the grammar code of the transistor level Verilog and use the graphical user interface to select the wire to be used as input and output. (310), and a second conversion step (320) for converting the input grammar code of the transistor level Verilog into a FPGA synthesizable Verilog grammar code.

1차 변환 단계(310)에서, 스파이스 netlist를 FPGA 합성이 가능한 Veriolg 코드로 변환하는 방법은 입력 받은 SPICE netlist의 문법 코드를 트랜지스터 레벨 Verilog의 문법 코드로 변환하고, 그래픽 사용자 인터페이스를 사용하여 입력 및 출력으로 사용할 와이어를 선택할 수 있다. 이때, 타이틀카드, 소자카드, 제어카드, .END 카드로 작성된 SPICE netlist의 문법코드를 상기 소자카드 이외의 카드들은 모두 제거한 후, 상기 소자카드에 적혀있는 회로구성을 Verilog 문법에 맞게 변환할 수 있다. In the first conversion step 310, a method of converting a spice netlist into a Veriolg code capable of FPGA synthesis converts the grammar code of a received SPICE netlist into a grammar code of a transistor level Verilog, Can be selected. At this time, after removing all the cards other than the device card, the syntax of the SPICE netlist created by the title card, the device card, the control card, and the .END card can be replaced with the Verilog syntax .

2차 변환 단계(320)에서, 입력 받은 상기 트렌지스터 레벨 Verilog의 문법 코드를 FPGA 합성 가능한 Verilog 문법 코드로 변환할 수 있다. 도 4를 참조하여 더욱 상세히 설명한다. 이때, 상기 소자카드에 적혀있는 회로구성의 트랜지스터들의 연결구조를 파악하여 같은 기능을 하는 합성 가능한 게이트 또는 모듈로 대체할 수 있다. 2차 변환 단계에서는 목표 게이트 라이브러리를 이용하여 회로구조를 파악하고, 상기 목표 게이트 라이브러리는 미리 작성된 복수의 예제들이 포함되어 있다. 도 4를 참조하여 더욱 상세히 설명한다.In the second conversion step 320, the grammar code of the received transistor level Verilog can be converted into a Verilog grammar code that can be synthesized by FPGA. This will be described in more detail with reference to FIG. At this time, the connection structure of the transistors of the circuit configuration written on the device card can be grasped and replaced with a synthesizable gate or module having the same function. In the second conversion step, the circuit structure is identified using the target gate library, and the target gate library includes a plurality of pre-written examples. This will be described in more detail with reference to FIG.

도 4는 본 발명의 일 실시예에 따른 프로그램의 전체 구성도이다. 4 is an overall configuration diagram of a program according to an embodiment of the present invention.

1차 변환(420)에서는 입력으로 받은 SPICE netlist(410)의 문법 코드를 트랜지스터 레벨의 Verilog의 문법 코드(430)로 변환하는데 중점을 둔다. SPICE는 타이틀카드, 소자카드, 제어카드, .END카드 4부분으로 작성된다. 회로구성을 표현하는 소자카드 이외에는 모두 필요 없으므로 제거한 뒤, 소자카드에 적혀있는 회로구성을 Verilog문법에 맞게 고친다. SPICE는 트랜지스터를 기반으로 회로를 표현하기 때문에 단순히 문법만을 SPICE에서 Verilog에 맞게 고치고 나면 FPGA합성이 불가능한 트랜지스터 레벨의 Verilog코드가 된다. 마지막으로 GUI를 사용하여 전체 와이어(wire) 중에서 Verilog 모듈의 입력(input), 출력(output)으로 사용할 와이어(wire)를 사용자에게 선택하게 함으로써 1차 변환(420)은 완료된다.The primary conversion 420 focuses on converting the grammar code of the SPICE netlist 410 received as input to the Verilog grammar code 430 of the transistor level. SPICE is composed of four parts: title card, device card, control card, and .END card. Since all the device cards expressing the circuit configuration are not necessary, remove them, and then modify the circuit configuration on the device card to conform to the Verilog syntax. Since SPICE represents a circuit based on a transistor, it is Verilog code of a transistor level that can not synthesize an FPGA after correcting only the grammar for SPICE to Verilog. Finally, the primary transformation 420 is completed by using the GUI to select the wire to be used as the input and output of the Verilog module among the entire wire.

2차 변환(440)에서는 입력으로 받은 트랜지스터 레벨의 Verilog의 문법 코드(430)를 FPGA합성 가능한 Verilog의 문법 코드(450)로 변환한다. 트랜지스터는 합성 가능한 소자가 아니므로 트랜지스터들의 연결구조를 파악하여 같은 기능을 하는 합성 가능한 게이트 또는 모듈로 대체해야 한다. 예를 들어 NMOS트랜지스터와 PMOS트랜지스터가 게이트와 드레인을 공유하며 각각의 소스는 VSS와 VDD에 연결되어있다면 이것은 인버터이다. 해당 NMOS와 PMOS를 삭제하고 같은 위치에 인버터 게이트를 넣어서 대체한다.In the quadratic transformation 440, Verilog's grammar code 430 of the transistor level received as input is converted into Verilog's grammar code 450 that can be synthesized by the FPGA. Since a transistor is not a synthesizable device, it is necessary to identify the connection structure of the transistors and replace them with synthesizable gates or modules that perform the same function. For example, if an NMOS transistor and a PMOS transistor share a gate and drain and each source is connected to VSS and VDD, this is an inverter. Remove the corresponding NMOS and PMOS and replace the inverted gate in the same location.

2차 변환에서는 '목표 게이트 라이브러리'(441)를 사용하여 회로구조 파악한다. '목표 게이트 라이브러리'(441) 안에는 사용자가 직접 작성한 예제들이 들어있다. 사용자는 변환 전 트랜지스터 레벨의 Verilog의 문법 코드(430)와 변환 후 FPGA합성 가능한 Verilog의 문법 코드(450)가 차례로 적힌 예제들을 목표 게이트 라이브러리에 작성한다. 프로그램은 예제와 같은 회로구조를 입력(input)파일에서 모두 찾고 변환한다. 목표 게이트 라이브러리를 사용함으로써 사용자는 원하는 예제를 손쉽게 추가할 수 있고, 변경 후 회로의 기능이 변경 전 회로의 기능과 같다는 신뢰성을 확보할 수 있다.
In the secondary conversion, the circuit structure is determined using the 'target gate library' 441. The 'target gate library' (441) contains examples written by the user. The user writes to the target gate library examples of Verilog's grammar code (430) at the transistor level before conversion and Verilog's grammar code (450) that can be synthesized after the conversion. The program finds and transforms all the circuit structures in the input file. By using the target gate library, the user can easily add the desired examples, and it is possible to secure the reliability that the function of the circuit after the change is the same as the function of the circuit before the change.

도 5는 본 발명의 일 실시예에 따른 NAND 게이트의 구조와 Verilog 코드를 나타내는 도면이다. 5 is a diagram illustrating a structure of a NAND gate and a Verilog code according to an embodiment of the present invention.

도 5를 참조하면, 프로그램이 목표 게이트 라이브러리의 예제를 어떡해 파악하는지 나타내었다. 먼저, 예제의 첫 번째 소자 M1(510)부터 차례로 다른 소자들 M2(520), M3(530), M4(540)과의 연결구성을 확인한다. 모든 소자의 연결정보를 저장한 뒤 입력(input)파일 안에서 같은 회로가 있는지 검색한다.
Referring to FIG. 5, the program shows how to understand an example of a target gate library. First, the connection configuration between the first device M1 510 and the other devices M2 520, M3 530, and M4 540 is checked. Save the connection information of all devices and search for the same circuit in the input file.

도 6은 본 발명의 일 실시예에 따른 2차 변환 알고리즘을 나타내는 도면이다. 6 is a diagram illustrating a quadratic transformation algorithm according to an embodiment of the present invention.

도 6은 2차 변환의 전체 알고리즘이다. 크게 예제, 소자, 와이어(wire)를 찾는 3개의 루프로 구성되어 있다. Fig. 6 is a whole algorithm of the quadratic transformation. It consists largely of three loops for example, element, and wire.

먼저, 모표 게이트 라이브러리의 모든 예제를 파악한다(611). 그리고, 새로운 예제를 로드한다(612). 연결정보의 출발소자를 입력파일에서 찾고(620), 상기 연결정보의 출발소자를 찾았는지 여부를 판단한다(621). 연결정보의 출발소자를 찾았을 경우, 출발소자의 입출력 포트에서 와이어(wire)이름을 파악한다(630). 그리고, 같은 와이어(wire)에 연결된 소자를 찾는다(640). 같은 와이어(wire)에 연결된 소자를 찾았는지 여부를 판단(641)하고, 찾았을 경우 찾은 소자의 정보가 연결정보의 도착소자와 일치하는지 확인할 수 있다(650). 찾은 소자의 정보가 연결정보의 도착소자와 일치하지 않을 경우, 다시 같은 와이어(wire)에 연결된 소자를 찾을 수 있다(640). 반면에, 찾은 소자의 정보가 연결정보의 도착소자와 일치하는 경우, 마지막 연결정보인지 확인할 수 있다(660). 마지막 연결정보가 아닐 경우, 다음 연결정보로 넘어갈 수 있다(661). 그리고, 다시 연결정보의 출발소자를 입력파일에서 찾을 수 있다(620). 마지막 연결정보일 경우, 찾은 소자들을 주석 처리하여 삭제 합성 가능한 게이트로 대체할 수 있다(670). 이후, 삭제한 구조와 같은 기능을 갖는 합성 가능한 게이트를 삽입하여 대체한다(680). 이후, 첫 번째 연결정보로 돌아갈 수 있다(681). 그리고, 다시 연결정보의 출발소자를 입력파일에서 찾을 수 있다(620).First, identify all the examples of the target gate library (611). Then, a new example is loaded (612). A start element of the connection information is searched in an input file (620), and it is determined whether a start element of the connection information is found (621). When the starting element of the connection information is found, the wire name is obtained at the input / output port of the starting element (630). Then, an element connected to the same wire is found (640). It is determined whether an element connected to the same wire is found (641). If it is found, it can be checked whether the information of the found element coincides with the arrival element of the connection information (650). If the information of the found element does not match the arrival element of the connection information, the element connected to the same wire can be found again (640). On the other hand, if the information of the found device corresponds to the arrival element of the connection information, it can be confirmed that it is the last connection information (660). If it is not the last connection information, the next connection information can be skipped (661). Then, the starting element of the connection information can be found in the input file (620). If it is the last connection information, the found elements can be annotated and replaced with a deletable composite gate (670). Subsequently, a synthesizable gate having the same function as the deleted structure is inserted (680). Thereafter, the first connection information can be returned (681). Then, the starting element of the connection information can be found in the input file (620).

연결정보의 출발소자를 찾지 못 했을 경우, 또는 같은 와이어(wire)에 연결된 소자를 찾지 못 했을 경우에는 첫 번째 연결정보인지 확인할 수 있다(622). 첫 번째 연결정보가 아닐 경우, 이전 연결정보로 돌아간다(625). 첫 번째 연결정보일 경우에는 라이브러리의 마지막 예제인지 확인할 수 있다(623). 라이브러리의 마지막 예제일 경우 2차 변화 단계를 종료하고, 라이브러리의 마지막 예제가 아닐 경우에는 다음 예제로 넘어갈 수 있다(624). 그리고, 다시 새로운 예제를 로드할 수 있다(612).If the starting element of the connection information is not found, or if an element connected to the same wire is not found, it can be confirmed that the first connection information is 622. If it is not the first connection information, the previous connection information is returned (625). If it is the first connection information, it can be confirmed that this is the last example of the library (623). If it is the last example of the library, it ends the secondary change step. If it is not the last example of the library, you can skip to the next example (624). Then, a new example can be loaded again (612).

모든 예제에 대하여 검색을 마쳤다면 변환은 끝난다. 만약 2차 변환이 끝난 후에도 합성 불가능한 소자가 남아있다면 예제가 충분치 않다는 뜻이므로 사용자는 예제를 더 추가할 수 있다.
If you have done a search for all examples, the conversion is over. If there are still non-synthesizable devices remaining after the second conversion, the example is not enough and you can add more examples.

도 7은 본 발명의 일 실시예에 따른 프로그램 적용 전후의 회로도를 나타내는 도면이다. 7 is a circuit diagram showing a state before and after application of a program according to an embodiment of the present invention.

도 7a은 변경 전 SPICE netlist의 회로도이다. 도 7a에 프로그램을 적용시키면 도 7b과 같은 FPGA합성 가능한 회로도를 얻을 수 있다. 모든 트랜지스터는 게이트 또는 모듈로 대체된 것을 볼 수 있다.
7A is a circuit diagram of the SPICE netlist before change. When the program is applied to FIG. 7A, a circuit diagram that can be synthesized with an FPGA as shown in FIG. 7B can be obtained. All transistors can be seen to have been replaced by gates or modules.

도 8은 본 발명의 일 실시예에 따른 프로그램 적용 전후의 SPICE netlist의 결과파형을 나타내는 도면이다. 8 is a diagram showing a resultant waveform of a SPICE netlist before and after application of a program according to an embodiment of the present invention.

도 8a는 프로그램 적용 전 SPICE netlist의 결과파형이고, 도 8b는 프로그램 적용 후 합성 가능한 Verilog code의 결과파형이다. 도 8a의 SPICE netlist의 결과파형과 도 8b 프로그램 적용 후 결과파형이 일치함으로써 두 회로도가 같은 기능을 가지고 있으며 변환이 이상 없이 이루진 것을 확인 하였다.
FIG. 8A shows the resultant waveform of the SPICE netlist before application of the program, and FIG. 8B shows the resultant waveform of the synthesizable Verilog code after application of the program. The result waveform of the SPICE netlist of FIG. 8A coincides with the resultant waveform of FIG. 8B after application of the program, so that the two circuits have the same function and the conversion is completed without any abnormality.

도 9는 본 발명의 일 실시예에 따른 SPICE netlist를 FPGA 합성이 가능한 Verilog 코드로 변환하는 시스템의 구성을 나타내는 도면이다.9 is a diagram illustrating a configuration of a system for converting a SPICE netlist into a Verilog code capable of FPGA synthesis according to an embodiment of the present invention.

본 실시예에 따른 Verilog 코드 변환 시스템(900)은 프로세서(910), 버스(920), 네트워크 인터페이스(930), 메모리(940) 및 데이터베이스(950)를 포함할 수 있다. 메모리(940)는 운영체제(941) 및 Verilog 코드 변환 루틴(942)을 포함할 수 있다. 프로세서(910)는 변환부(911), 선택부(912)를 포함할 수 있다. 다른 실시예들에서 Verilog 코드 변환 시스템(900)은 도 9의 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, Verilog 코드 변환 시스템(900)은 디스플레이나 트랜시버(transceiver)와 같은 다른 구성요소들을 포함할 수도 있다.The Verilog code conversion system 900 according to the present embodiment may include a processor 910, a bus 920, a network interface 930, a memory 940 and a database 950. The memory 940 may include an operating system 941 and a Verilog code conversion routine 942. The processor 910 may include a conversion unit 911 and a selection unit 912. In other embodiments, the Verilog code conversion system 900 may include more components than the components of FIG. However, there is no need to clearly illustrate most prior art components. For example, the Verilog code conversion system 900 may include other components such as a display or a transceiver.

메모리(940)는 컴퓨터에서 판독 가능한 기록 매체로서, RAM(random access memory), ROM(read only memory) 및 디스크 드라이브와 같은 비소멸성 대용량 기록장치(permanent mass storage device)를 포함할 수 있다. 또한, 메모리(940)에는 운영체제(941)와 Verilog 코드 변환 루틴(942)을 위한 프로그램 코드가 저장될 수 있다. 이러한 소프트웨어 구성요소들은 드라이브 메커니즘(drive mechanism, 미도시)을 이용하여 메모리(940)와는 별도의 컴퓨터에서 판독 가능한 기록 매체로부터 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독 가능한 기록 매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독 가능한 기록 매체(미도시)를 포함할 수 있다. 다른 실시예에서 소프트웨어 구성요소들은 컴퓨터에서 판독 가능한 기록 매체가 아닌 네트워크 인터페이스(930)를 통해 메모리(940)에 로딩될 수도 있다. The memory 940 may be a computer-readable recording medium and may include a permanent mass storage device such as a random access memory (RAM), a read only memory (ROM), and a disk drive. Also, the memory 940 may store program codes for the operating system 941 and the Verilog code conversion routine 942. These software components may be loaded from a computer readable recording medium separate from the memory 940 using a drive mechanism (not shown). Such a computer-readable recording medium may include a computer-readable recording medium (not shown) such as a floppy drive, a disk, a tape, a DVD / CD-ROM drive, or a memory card. In other embodiments, the software components may be loaded into memory 940 via a network interface 930 rather than a computer-readable recording medium.

버스(920)는 Verilog 코드 변환 시스템(900)의 구성요소들간의 통신 및 데이터 전송을 가능하게 할 수 있다. 버스(920)는 고속 시리얼 버스(high-speed serial bus), 병렬 버스(parallel bus), SAN(Storage Area Network) 및/또는 다른 적절한 통신 기술을 이용하여 구성될 수 있다.The bus 920 may enable communication and data transfer between the components of the Verilog code conversion system 900. The bus 920 may be configured using a high-speed serial bus, a parallel bus, a Storage Area Network (SAN), and / or other suitable communication technology.

네트워크 인터페이스(930)는 Verilog 코드 변환 시스템(900)을 컴퓨터 네트워크에 연결하기 위한 컴퓨터 하드웨어 구성요소일 수 있다. 네트워크 인터페이스(930)는 Verilog 코드 변환 시스템(900)의 무선 또는 유선 커넥션을 통해 컴퓨터 네트워크에 연결시킬 수 있다.The network interface 930 may be a computer hardware component for connecting the Verilog code conversion system 900 to a computer network. The network interface 930 may be coupled to the computer network via a wireless or wired connection of the Verilog code conversion system 900.

데이터베이스(950)는 Verilog 코드 변환을 위해 필요한 모든 정보를 저장 및 유지하는 역할을 할 수 있다. 도 9에서는 Verilog 코드 변환 시스템(900)의 내부에 데이터베이스(950)를 구축하여 포함하는 것으로 도시하고 있으나, 이에 한정되는 것은 아니며 시스템 구현 방식이나 환경 등에 따라 생략될 수 있고 혹은 전체 또는 일부의 데이터베이스가 별개의 다른 시스템 상에 구축된 외부 데이터베이스로서 존재하는 것 또한 가능하다.The database 950 may store and maintain all information required for Verilog code conversion. 9, the database 950 is built and included in the Verilog code conversion system 900. However, the present invention is not limited thereto and may be omitted depending on the system implementation method or environment, It is also possible to exist as an external database built on a separate, separate system.

프로세서(910)는 기본적인 산술, 로직 및 Verilog 코드 변환 시스템(900)의 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(940) 또는 네트워크 인터페이스(930)에 의해, 그리고 버스(920)를 통해 프로세서(910)로 제공될 수 있다. 프로세서(910)는 변환부(911), 선택부(912)를 위한 프로그램 코드를 실행하도록 구성될 수 있다. 이러한 프로그램 코드는 메모리(940)와 같은 기록 장치에 저장될 수 있다.The processor 910 may be configured to process instructions of a computer program by performing basic arithmetic, logic, and input / output operations of the Verilog code conversion system 900. [ The instructions may be provided to the processor 910 by the memory 940 or the network interface 930 and via the bus 920. The processor 910 may be configured to execute the program code for the converting unit 911 and the selecting unit 912. [ Such program code may be stored in a recording device such as memory 940. [

변환부(911), 선택부(912)는 도 3의 단계들(310~320)을 수행하기 위해 구성될 수 있다.The converting unit 911 and the selecting unit 912 may be configured to perform the steps 310 to 320 of FIG.

Verilog 코드 변환 시스템(900)은 변환부(911), 선택부(912)를 포함할 수 있다. The Verilog code conversion system 900 may include a conversion unit 911 and a selection unit 912.

변환부(911)는 입력 받은 SPICE netlist의 문법 코드을 트랜지스터 레벨 Verilog의 문법 코드로 변환하고, 입력 받은 상기 트렌지스터 레벨 Verilog의 문법 코드를 FPGA 합성 가능한 Verilog 문법 코드로 변환할 수 있다. 그리고, 목표 게이트 라이브러리를 이용하여 회로구조를 파악하고, 상기 목표 게이트 라이브러리에 포함된 예제와 같은 회로구조를 입력 파일에서 모두 찾고 변환할 수 있다. The conversion unit 911 converts the grammar code of the received SPICE netlist into the grammar code of the transistor level Verilog and converts the grammar code of the received transistor level Verilog into the FPGA synthesizable Verilog grammar code. Then, the circuit structure can be grasped by using the target gate library, and the same circuit structure as the example included in the target gate library can be found and converted in the input file.

선택부(912)는 그래픽 사용자 인터페이스를 사용하여 상기 변환된 코드의 입력 및 출력으로 사용할 와이어를 선택할 수 있다. The selection unit 912 can select a wire to be used as the input and output of the converted code using a graphical user interface.

다시 말해, 변환부(911)는 1차 변환단계에서는 입력으로 받은 SPICE netlist의 문법 코드를 트랜지스터 레벨의 Verilog의 문법 코드로 변환하는데 중점을 둔다. SPICE는 타이틀카드, 소자카드, 제어카드, .END카드 4부분으로 작성된다. 회로구성을 표현하는 소자카드 이외에는 모두 필요 없으므로 제거한 뒤, 소자카드에 적혀있는 회로구성을 Verilog문법에 맞게 고친다. SPICE는 트랜지스터를 기반으로 회로를 표현하기 때문에 단순히 문법만을 SPICE에서 Verilog에 맞게 고치고 나면 FPGA합성이 불가능한 트랜지스터 레벨의 Verilog코드가 된다. 마지막으로 GUI를 사용하여 전체 wire중에서 Verilog 모듈의 input, output으로 사용할 wire를 사용자에게 선택하게 함으로써 1차 변환은 완료된다.In other words, the conversion unit 911 focuses on converting the grammar code of the SPICE netlist received as the input to the Verilog grammar code of the transistor level in the first conversion step. SPICE is composed of four parts: title card, device card, control card, and .END card. Since all the device cards expressing the circuit configuration are not necessary, remove them, and then modify the circuit configuration on the device card to conform to the Verilog syntax. Since SPICE represents a circuit based on a transistor, it is Verilog code of a transistor level that can not synthesize an FPGA after correcting only the grammar for SPICE to Verilog. Finally, the first conversion is completed by using the GUI to select the wire to be used as the input and output of the Verilog module among all the wires.

2차 변환에서는 입력으로 받은 트랜지스터 레벨의 Verilog의 문법 코드를 FPGA합성 가능한 Verilog의 문법 코드로 변환한다. 트랜지스터는 합성 가능한 소자가 아니므로 트랜지스터들의 연결구조를 파악하여 같은 기능을 하는 합성 가능한 게이트 또는 모듈로 대체해야 한다. 예를 들어 NMOS트랜지스터와 PMOS트랜지스터가 게이트와 드레인을 공유하며 각각의 소스는 VSS와 VDD에 연결되어있다면 이것은 인버터이다. 해당 NMOS와 PMOS를 삭제하고 같은 위치에 인버터 게이트를 넣어서 대체한다.In the second conversion, Verilog's grammatical code of the transistor level received as input is converted into Verilog's grammar code that can be synthesized with FPGA. Since a transistor is not a synthesizable device, it is necessary to identify the connection structure of the transistors and replace them with synthesizable gates or modules that perform the same function. For example, if an NMOS transistor and a PMOS transistor share a gate and drain and each source is connected to VSS and VDD, this is an inverter. Remove the corresponding NMOS and PMOS and replace the inverted gate in the same location.

2차 변환에서는 '목표 게이트 라이브러리'를 사용하여 회로구조 파악한다. '목표 게이트 라이브러리' 안에는 사용자가 직접 작성한 예제들이 들어있다. 사용자는 변환 전 트랜지스터 레벨의 Verilog의 문법 코드와 변환 후 FPGA합성 가능한 Verilog의 문법 코드가 차례로 적힌 예제들을 목표 게이트 라이브러리에 작성한다. 프로그램은 예제와 같은 회로구조를 입력(input)파일에서 모두 찾고 변환한다. 목표 게이트 라이브러리를 사용함으로써 사용자는 원하는 예제를 손쉽게 추가할 수 있고, 변경 후 회로의 기능이 변경 전 회로의 기능과 같다는 신뢰성을 확보할 수 있다.
In the secondary conversion, the circuit structure is determined by using the target gate library. The 'Targeted Gate Library' contains examples written by the user. The user writes Verilog grammar code of transistor level before conversion and Verilog grammar code which can synthesize FPGA after conversion afterwards in the target gate library. The program finds and transforms all the circuit structures in the input file. By using the target gate library, the user can easily add the desired examples, and it is possible to secure the reliability that the function of the circuit after the change is the same as the function of the circuit before the change.

이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The apparatus described above may be implemented as a hardware component, a software component, and / or a combination of hardware components and software components. For example, the apparatus and components described in the embodiments may be implemented within a computer system, such as, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable array (FPA) A programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For ease of understanding, the processing apparatus may be described as being used singly, but those skilled in the art will recognize that the processing apparatus may have a plurality of processing elements and / As shown in FIG. For example, the processing unit may comprise a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as a parallel processor.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instructions, or a combination of one or more of the foregoing, and may be configured to configure the processing device to operate as desired or to process it collectively or collectively Device can be commanded. The software and / or data may be in the form of any type of machine, component, physical device, virtual equipment, computer storage media, or device , Or may be permanently or temporarily embodied in a transmitted signal wave. The software may be distributed over a networked computer system and stored or executed in a distributed manner. The software and data may be stored on one or more computer readable recording media.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to an embodiment may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions to be recorded on the medium may be those specially designed and configured for the embodiments or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. For example, it is to be understood that the techniques described may be performed in a different order than the described methods, and / or that components of the described systems, structures, devices, circuits, Lt; / RTI > or equivalents, even if it is replaced or replaced.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

Claims (8)

Verilog 코드 변환 방법에 있어서,
입력 받은 SPICE netlist의 문법 코드를 트랜지스터 레벨 Verilog의 문법 코드로 변환하고, 그래픽 사용자 인터페이스를 사용하여 입력 및 출력으로 사용할 와이어를 선택하는 1차 변환 단계; 및
입력 받은 상기 트랜지스터 레벨 Verilog의 문법 코드를 FPGA 합성 가능한 Verilog 문법 코드로 변환하여 하드웨어 상에서 구현 가능하도록 하는 2차 변환 단계
를 포함하고,
상기 2차 변환 단계는,
목표 게이트 라이브러리를 이용하여 회로구조를 파악하고, 소자 간 연결정보의 출발소자를 입력파일에서 찾아 출발소자의 입출력 포트의 와이어 이름과 같은 와이어에 연결된 소자를 찾고, 상기 소자의 정보가 연결정보의 도착소자와 일치하는지 여부 및 전체 회로의 마지막 연결정보인지 여부를 확인하고, 상기 소자의 정보가 연결정보의 도착소자이고, 마지막 연결정보일 경우, 찾은 소자들을 주석 처리하여 삭제하고, 삭제한 구조와 같은 기능을 갖는 FPGA 합성 가능한 게이트를 삽입하여 대체하는 Verilog 코드 변환 방법.
In the Verilog code conversion method,
A first conversion step of converting a grammar code of an input SPICE netlist into a grammar code of a transistor level Verilog and selecting a wire to be used as an input and an output using a graphical user interface; And
A second conversion step of converting the grammatical code of the input transistor level Verilog into a Verilog grammatical code capable of FPGA synthesis so as to be implemented in hardware
Lt; / RTI >
Wherein the second transformation step comprises:
The circuit structure is determined by using the target gate library, and the starting element of the inter-element connection information is searched in the input file to find the element connected to the same wire as the wire name of the input / output port of the starting element, It is checked whether or not the received information is the last connection information of the entire circuit. If the information of the element is the arrival element of the connection information and the last connection information, the found elements are annotated and deleted, A Verilog code conversion method that inserts and replaces FPGA synthesizable gate with function.
제1항에 있어서,
상기 1차 변환 단계는,
타이틀카드, 소자카드, 제어카드, .END 카드로 작성된 SPICE netlist의 문법코드를 상기 소자카드 이외의 카드들은 모두 제거한 후, 상기 소자카드에 적혀있는 회로구성을 Verilog 문법에 맞게 변환하는 것을 특징으로 하는 Verilog 코드 변환 방법.
The method according to claim 1,
Wherein the first transformation step comprises:
A syntax card of a SPICE netlist formed of a title card, an element card, a control card, and an .End card is removed from all the cards other than the device card, and then the circuit configuration written on the device card is converted according to the Verilog grammar How to convert Verilog code.
삭제delete 제1항에 있어서,
상기 목표 게이트 라이브러리는 미리 작성된 복수의 예제들을 포함하고, 또는 사용자가 원하는 예제를 추가 및 변경 가능하고, 상기 미리 작성된 복수의 예제들은 변환 전 상기 트랜지스터 레벨 Verilog의 문법 코드 및 변환 후 원하는 FPGA 합성 가능한 Verilog 문법 코드가 차례로 적힌 것을 특징으로 하는 Verilog 코드 변환 방법.
The method according to claim 1,
Wherein the target gate library includes a plurality of prebuilt examples or a user can add and change an example of interest, and the plurality of prebuilt examples include a grammar code of the transistor level Verilog before conversion, A method of converting a Verilog code that is characterized by sequential grammar codes.
제1항에 있어서,
상기 2차 변환 단계 후, FPGA 합성 불가능한 소자가 남아있다면 예제를 더 추가하는 것을 특징으로 하는 Verilog 코드 변환 방법.
The method according to claim 1,
And after the secondary conversion step, if an FPGA-incapable element remains, an additional example is added.
제4항에 있어서,
상기 2차 변환 단계는,
상기 예제와 같은 회로구조를 입력 파일에서 모두 찾고 변환하는 것을 특징으로 하는 Verilog 코드 변환 방법.
5. The method of claim 4,
Wherein the second transformation step comprises:
Wherein the circuit structure as in the above example is found and converted in an input file.
Verilog 코드 변환 시스템에 있어서,
입력 받은 SPICE netlist의 문법 코드를 트랜지스터 레벨 Verilog의 문법 코드로 변환하고, 입력 받은 상기 트랜지스터 레벨 Verilog의 문법 코드를 FPGA 합성 가능한 Verilog 문법 코드로 변환하여 하드웨어 상에서 구현 가능하도록 하는 변환부; 및
그래픽 사용자 인터페이스를 사용하여 상기 변환된 코드의 입력 및 출력으로 사용할 와이어를 선택하는 선택부
를 포함하고,
상기 변환부는,
목표 게이트 라이브러리를 이용하여 회로구조를 파악하고, 소자 간 연결정보의 출발소자를 입력파일에서 찾아 출발소자의 입출력 포트의 와이어 이름과 같은 와이어에 연결된 소자를 찾고, 상기 소자의 정보가 연결정보의 도착소자와 일치하는지 여부 및 전체 회로의 마지막 연결정보인지 여부를 확인하고, 상기 소자의 정보가 연결정보의 도착소자이고, 마지막 연결정보일 경우, 찾은 소자들을 주석 처리하여 삭제하고, 삭제한 구조와 같은 기능을 갖는 FPGA 합성 가능한 게이트를 삽입하여 대체하는 Verilog 코드 변환 시스템.
In a Verilog code conversion system,
A converting unit converting a grammar code of a received SPICE netlist into a grammar code of a transistor level Verilog and converting a grammar code of the input transistor level Verilog into a Verilog grammar code capable of FPGA synthesis and implementing it on hardware; And
A selection unit for selecting a wire to be used as an input and an output of the converted code using a graphical user interface
Lt; / RTI >
Wherein,
The circuit structure is determined by using the target gate library, and the starting element of the inter-element connection information is searched in the input file to find the element connected to the same wire as the wire name of the input / output port of the starting element, It is checked whether or not the received information is the last connection information of the entire circuit. If the information of the element is the arrival element of the connection information and the last connection information, the found elements are annotated and deleted, A Verilog code conversion system that inserts and replaces FPGA synthesizable gates.
삭제delete
KR1020150024343A 2015-02-17 2015-02-17 Method and Apparatus for Convert SPICE Netlist to FPGA Synthesizable Verilog Code KR101629141B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150024343A KR101629141B1 (en) 2015-02-17 2015-02-17 Method and Apparatus for Convert SPICE Netlist to FPGA Synthesizable Verilog Code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150024343A KR101629141B1 (en) 2015-02-17 2015-02-17 Method and Apparatus for Convert SPICE Netlist to FPGA Synthesizable Verilog Code

Publications (1)

Publication Number Publication Date
KR101629141B1 true KR101629141B1 (en) 2016-06-10

Family

ID=56190849

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150024343A KR101629141B1 (en) 2015-02-17 2015-02-17 Method and Apparatus for Convert SPICE Netlist to FPGA Synthesizable Verilog Code

Country Status (1)

Country Link
KR (1) KR101629141B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112560401A (en) * 2020-12-22 2021-03-26 成都海光微电子技术有限公司 Verilog file conversion method, device, storage medium and equipment

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004303022A (en) * 2003-03-31 2004-10-28 Toshiba Corp Preprocessor, design system of integrated circuit, and design method of integrated circuit
KR100939642B1 (en) * 2008-11-06 2010-01-29 전자부품연구원 Test device generating stimulus based on software, method for testing using the same and computer-readable storage medium storged program for generating the stimulus

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004303022A (en) * 2003-03-31 2004-10-28 Toshiba Corp Preprocessor, design system of integrated circuit, and design method of integrated circuit
KR100939642B1 (en) * 2008-11-06 2010-01-29 전자부품연구원 Test device generating stimulus based on software, method for testing using the same and computer-readable storage medium storged program for generating the stimulus

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"FPGA 설계 데이터로부터 Verilog 기능 모델 추출", 정보과학회논문지 : 컴퓨팅의 실제 및 레터 제18권 제5호(페이지 380-388), 2012년 05월* *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112560401A (en) * 2020-12-22 2021-03-26 成都海光微电子技术有限公司 Verilog file conversion method, device, storage medium and equipment
CN112560401B (en) * 2020-12-22 2024-04-09 成都海光微电子技术有限公司 Verilog file conversion method, device, storage medium and equipment

Similar Documents

Publication Publication Date Title
US8584062B2 (en) Tool suite for RTL-level reconfiguration and repartitioning
US8594988B1 (en) Method and apparatus for circuit simulation using parallel computing
US8860458B2 (en) Integrated circuits with logic regions having input and output bypass paths for accessing registers
US10025895B2 (en) Circuit simulation using a recording of a reference execution
US8869091B2 (en) Incremental clock tree synthesis
US8291359B2 (en) Array concatenation in an integrated circuit design
US10318684B2 (en) Network flow based framework for clock tree optimization
US8336016B2 (en) Eliminating, coalescing, or bypassing ports in memory array representations
US8307313B2 (en) Minimizing memory array representations for enhanced synthesis and verification
JP4492803B2 (en) Behavioral synthesis apparatus and program
JP4654203B2 (en) Method for creating HDL description file for digital system and resulting system
US10437946B1 (en) Using implemented core sources for simulation
KR101629141B1 (en) Method and Apparatus for Convert SPICE Netlist to FPGA Synthesizable Verilog Code
US7131095B2 (en) Routed layout optimization with geotopological layout encoding for integrated circuit designs
WO2007063495A1 (en) Method for providing an ic design and ic design tool
US10152566B1 (en) Constraint based bit-stream compression in hardware for programmable devices
US9697314B1 (en) Identifying and using slices in an integrated circuit (IC) design
US9690890B1 (en) Creating and using a wide-bus data structure to represent a wide-bus in an integrated circuit (IC) design
US9652573B1 (en) Creating and using a wide-gate data structure to represent a wide-gate in an integrated circuit (IC) design
CN115204104A (en) Computing device, operating method thereof and computer program product
CN104981806A (en) Automatic clock tree synthesis exceptions generation
US10643012B1 (en) Concurrent formal verification of logic synthesis
US20190012418A1 (en) Simulation program, method, and device
US9733941B2 (en) Technique for translating dependent instructions
KR101679477B1 (en) Method and System for Verify using Embedded DDR Memory to Reduce the Proving Time for Memory Driving Peripheral circuit

Legal Events

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

Payment date: 20190408

Year of fee payment: 4