KR20150104814A - 스프레드 시트를 이용한 rtl 자동 합성 시스템, 방법 및 기록매체 - Google Patents

스프레드 시트를 이용한 rtl 자동 합성 시스템, 방법 및 기록매체 Download PDF

Info

Publication number
KR20150104814A
KR20150104814A KR1020140026631A KR20140026631A KR20150104814A KR 20150104814 A KR20150104814 A KR 20150104814A KR 1020140026631 A KR1020140026631 A KR 1020140026631A KR 20140026631 A KR20140026631 A KR 20140026631A KR 20150104814 A KR20150104814 A KR 20150104814A
Authority
KR
South Korea
Prior art keywords
port
spreadsheet
rtl
token
name
Prior art date
Application number
KR1020140026631A
Other languages
English (en)
Other versions
KR102218200B1 (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 KR1020140026631A priority Critical patent/KR102218200B1/ko
Priority to US14/618,381 priority patent/US9507899B2/en
Publication of KR20150104814A publication Critical patent/KR20150104814A/ko
Application granted granted Critical
Publication of KR102218200B1 publication Critical patent/KR102218200B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

스프레드 시트를 이용한 RTL 자동 합성 시스템, 방법 및 기록매체가 제공된다. RTL 자동 합성 방법은 제1 소자와 제2 소자의 연결관계를 스프레드 시트로 입력받고, 상기 제1 소자에 포함된 제1 포트와, 상기 제2 소자에 포함된 제2 포트를 네이밍 매칭 알고리즘(naming matching algorithm)을 이용하여 매칭시키고, 상기 매칭된 결과를 이용하여 상기 스프레드 시트를 RTL(Register Transfer Level) 코드로 변환하는 것을 포함하되, 상기 네이밍 매칭 알고리즘은 상기 제1 포트를 상기 제1 포트의 제1 포트명과 가장 유사한 포트명을 가진 상기 제2 포트에 매칭시킨다.

Description

스프레드 시트를 이용한 RTL 자동 합성 시스템, 방법 및 기록매체{System and method for RTL Auto-integration using spread-sheet and recording medium thereof}
본 발명은 스프레드 시트를 이용한 RTL 자동 합성 시스템, 방법 및 기록매체에 관한 것이다.
일반적으로, 특정 디바이스 또는 시스템을 구성하는 회로의 설계는, 설계하고자 하는 회로를 레지스터 전송 수준(Register Transfer Lavel: RTL)으로 작성하여 이에 대한 시뮬레이션을 통해 기능적 검증을 수행하고, RTL 시뮬레이션이 완료된 후 논리 합성(synthesis)을 통해 게이트 수준 설계로 변경하고 다시 시뮬레이션을 통해 이 게이트 수준에 대한 검증을 수행하는 과정을 거친다.
기존의 RTL 합성(integration)은, 사람이 일일이 직접 코딩하는 방법을 사용하였는데, 코딩해야 하는 양이 SOC의 크기에 따라 많게는 숙련된 엔지니어가 한 달 이상 작업을 해야 완료할 수 있을 정도로 방대하고, 또한 기존에 설계된 SOC를 활용하여 일부를 변경하는 경우도 기존 RTL을 재활용하기 어려운 경우가 많아서 새로 코딩해야하는 불편함이 존재한다.
본 발명이 해결하려는 과제는, 스프레드 시트를 이용하여 반복적이고 단순한 작업을 자동화 할 수 있는 RTL 자동 합성 방법을 제공하는 것이다.
본 발명이 해결하려는 다른 과제는, 스프레드 시트를 이용하여 반복적이고 단순한 작업을 자동화 할 수 있는 RTL 자동 합성 시스템을 제공하는 것이다.
본 발명이 해결하려는 또 다른 과제는, 스프레드 시트를 이용하여 반복적이고 단순한 작업을 자동화 할 수 있는 RTL 자동 합성 방법 이 수행되는 프로그램을 기록한 컴퓨터로 판독가능한 기록매체를 제공하는 것이다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 RTL 자동 합성 방법의 일 면(aspect)은, 제1 소자와 제2 소자의 연결관계를 스프레드 시트로 입력받고, 상기 제1 소자에 포함된 제1 포트와, 상기 제2 소자에 포함된 제2 포트를 네이밍 매칭 알고리즘(naming matching algorithm)을 이용하여 매칭시키고, 상기 매칭된 결과를 이용하여 상기 스프레드 시트를 RTL(Register Transfer Level) 코드로 변환하는 것을 포함하되, 상기 네이밍 매칭 알고리즘은 상기 제1 포트를 상기 제1 포트의 제1 포트명과 가장 유사한 포트명을 가진 상기 제2 포트에 매칭시킨다.
또한, 상기 소자의 연결관계를 스프레드 시트로 입력받는 것은, 상기 제1 소자와 상기 제2 소자의 연결관계를 포함하고 제1 회로에 대응되는 RTL 코드를, 상기 스프레드 시트로 변환하는 것을 포함하고, 상기 스프레드 시트를 통하여, 상기 제1 회로의 수정사항을 입력받는 것을 더 포함할 수 있다.
또한, 상기 제1 회로의 수정사항은, 상기 제1 회로에 포함된 소자를 삭제하거나, 새로운 소자를 추가하거나, 또는 상기 제1 회로에 포함된 복수의 소자의 연결관계를 수정하는 것을 포함할 수 있다.
또한, 상기 네이밍 매칭 알고리즘은, 상기 제1 포트명 및 상기 제2 소자에 포함된 각각의 포트의 포트명을 토큰(token) 단위로 분할하고, 상기 제1 포트명의 토큰과 상기 제2 소자에 포함된 각각의 포트의 토큰을 비교하여 중복되는 토큰의 수를 카운팅하고, 상기 토큰의 수가 가장 많은 포트명에 대응되는 상기 제2 포트를 상기 제1 포트에 매칭시키는 것을 포함하되, 상기 토큰은 상기 포트명에 포함된 구분자('_')를 기준으로 분리될 수 있다.
또한, 상기 토큰을 매칭시키기 전에, 상기 토큰에 포함된 대문자를 소문자로 치환하는 것을 더 포함하고, 상기 토큰의 수를 카운팅하는 것은, 제1 토큰이 제2 토큰에 포함되는 경우, 상기 제1 토큰과 상기 제2 토큰은 중복되는 토큰으로 판단할 수 있다.
또한, 상기 토큰 단위로 분할한 후에, 상기 분리된 토큰 중에서 글자 수가 하나인 토큰을 제거하는 프리 프로세싱을 수행하는 것을 더 포함할 수 있다.
또한, 상기 중복되는 토큰의 수가 가장 많은 포트명이 복수 개인 경우, 상기 제1 포트명과의 유사도를 판별할 수 있는 LD 알고리즘(Levenshtein Distance algorithm)을 이용하여, 상기 유사도가 가장 큰 포트명에 대응되는 포트를 상기 제1 포트에 매칭시킬 수 있다.
또한, 상기 스프레드 시트는 행과 열을 포함하고, 상기 스프레드 시트의 제1 행에 제1 소자, 제2 소자 및 제3 소자가 순서대로 위치해 있는 경우, 상기 RTL 코드는 상기 제1 소자, 제2 소자 및 제3 소자가 나열된 순서대로 연결되도록 변환될 수 있다.
또한, 상기 RTL 코드로 변환시, 순서대로 연결되는 상기 제1 소자와 상기 제2 소자 사이에 연결 포트 또는 와이어가 지정되지 않은 경우, 상기 연결 포트 또는 상기 와이어의 이름은 랜덤하게 형성될 수 있다.
또한, 상기 제1 소자와 상기 제2 소자의 연결관계를 상기 스프레드 시트에서 표현하는 경우, 상기 제1 소자가 입력된 제1 셀은 상기 제1 소자에 포함되는 상기 제1 포트의 포트명이 입력된 제2 셀과 인접하고, 상기 제2 셀은 상기 제1 소자와 연결될 상기 제2 소자가 입력된 제3 셀과 인접하고, 상기 제3 셀은 상기 제2 소자에 포함되는 상기 제2 포트의 포트명이 입력된 제4 셀과 인접할 수 있다.
또한, 상기 스프레드 시트를 블록 다이어그램으로 변환하는 것을 더 포함하되, 상기 블록 다이어그램은 상기 제1 소자와 상기 제2 소자 간의 연결관계를 시각적으로 나타내고, 각각의 포트를 소자 상에 표시할 수 있다.
또한, 상기 RTL 코드는 베릴로그(verilog)로 작성된 SOC 설계 코드에 해당할 수 있다.
상기 과제를 해결하기 위한 본 발명의 RTL 자동 합성 시스템의 일 면은, 프로세서, 및 상기 프로세서를 이용하여 연산을 수행하는 RTL 자동 합성 모듈 및 상기 RTL 자동 합성 모듈에서 처리한 데이터가 저장되는 저장부를 포함하되, 상기 RTL 자동 합성 모듈은, 제1 회로에 대응되는 RTL 코드를 스프레드 시트 포맷의 데이터로 변환하거나, 스프레드 시트 내에 포함된 데이터를 RTL 코드로 변환하는 컨버터 모듈과, 상기 스프레드 시트 포맷의 데이터를 스프레드 시트 상에 나타내고, 상기 제1 회로에 포함된 제1 소자 및 제2 소자의 연결관계에 대한 수정사항을 상기 스프레드 시트를 통하여 입력받는 인터페이스 모듈과, 네이밍 매칭 알고리즘을 이용하여, 상기 제1 소자에 포함된 제1 포트와, 상기 제2 소자에 포함된 제2 포트를 매칭시키는 매칭 모듈을 포함한다.
또한, 상기 네이밍 매칭 알고리즘은, 상기 제1 포트명 및 상기 제2 소자에 포함된 각각의 포트의 포트명을 토큰(token) 단위로 분할하고, 상기 제1 포트명의 토큰과 상기 제2 소자에 포함된 각각의 포트의 토큰을 비교하여 중복되는 토큰의 수를 카운팅하고, 상기 토큰의 수가 가장 많은 포트명에 대응되는 상기 제2 포트를 상기 제1 포트에 매칭시키는 것을 포함하되, 상기 토큰은 상기 포트명에 포함된 구분자('_')를 기준으로 분리될 수 있다.
또한, 상기 토큰을 매칭시키기 전에, 상기 토큰에 포함된 대문자를 소문자로 치환하는 것을 더 포함하고, 상기 토큰의 수를 카운팅하는 것은, 제1 토큰이 제2 토큰에 포함되는 경우, 상기 제1 토큰과 상기 제2 토큰은 중복되는 토큰으로 판단할 수 있다.
또한, 상기 토큰 단위로 분할한 후에, 상기 분리된 토큰 중에서 글자 수가 하나인 토큰을 제거하는 프리 프로세싱을 수행하는 것을 더 포함할 수 있다.
또한, 상기 중복되는 토큰의 수가 가장 많은 포트명이 복수 개인 경우, 상기 1 포트명과의 유사도를 판별할 수 있는 LD 알고리즘(Levenshtein Distance algorithm)을 이용하여, 상기 유사도가 가장 큰 포트명에 대응되는 포트를 상기 제1 포트에 매칭시킬 수 있다.
상기 과제를 해결하기 위한 본 발명의 프로그램을 기록한 컴퓨터로 판독가능한 기록매체의 일 면은, 제1 소자와 제2 소자의 연결관계를 스프레드 시트로 입력받고, 상기 제1 소자에 포함된 제1 포트와, 상기 제2 소자에 포함된 제2 포트를 네이밍 매칭 알고리즘(naming matching algorithm)을 이용하여 매칭시키고, 상기 매칭된 결과를 이용하여 상기 스프레드 시트를 RTL(Register Transfer Level) 코드로 변환하는 것을 포함하되, 상기 네이밍 매칭 알고리즘은 상기 제1 포트를 상기 제1 포트의 제1 포트명과 가장 유사한 포트명을 가진 상기 제2 포트에 매칭시키는 RTL 자동 합성 방법이 수행된다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 일 실시예에 따른 RTL 자동 합성 시스템을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따른 RTL 자동 합성 방법을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른 RTL 자동 합성 방법을 설명하기 위한 순서도이다.
도 4는 본 발명의 일 실시예에 따른 RTL 자동 합성 방법의 네이밍 매칭 알고리즘을 설명하기 위한 순서도이다.
도 5는 본 발명의 다른 실시예에 따른 RTL 자동 합성 방법의 네이밍 매칭 알고리즘을 설명하기 위한 순서도이다.
도 6a 및 도 6b는 본 발명의 몇몇 실시예에 따른 RTL 자동 합성 방법의 LD 알고리즘을 설명하기 위한 도면이다.
도 7은 본 발명의 또 다른 실시예에 따른 RTL 자동 합성 방법을 설명하기 위한 순서도이다.
도 8은 본 발명의 일 실시예에 따른 블록 다이어그램을 설명하기 위한 도면이다.
도 9a 및 도 9b는 본 발명의 일 실시예에 따른 스프레드 시트를 설명하기 위한 도면이다.
도 10a 및 도 10b는 본 발명의 일 실시예에 따른 RTL 코드를 설명하기 위한 도면이다.
도 11a 및 도 11b는 본 발명의 다른 실시예에 따른 스프레드 시트를 설명하기 위한 도면이다.
도 12는 본 발명의 다른 실시예에 따른 RTL 코드를 설명하기 위한 도면이다.
도 13은 본 발명의 다른 실시예에 따른 블록 다이어그램을 설명하기 위한 도면이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
하나의 소자(elements)가 다른 소자와 "접속된(connected to)" 또는 "커플링된(coupled to)" 이라고 지칭되는 것은, 다른 소자와 직접 연결 또는 커플링된 경우 또는 중간에 다른 소자를 개재한 경우를 모두 포함한다. 반면, 하나의 소자가 다른 소자와 "직접 접속된(directly connected to)" 또는 "직접 커플링된(directly coupled to)"으로 지칭되는 것은 중간에 다른 소자를 개재하지 않은 것을 나타낸다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다. "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
소자(elements) 또는 층이 다른 소자 또는 층의 "위(on)" 또는 "상(on)"으로 지칭되는 것은 다른 소자 또는 층의 바로 위뿐만 아니라 중간에 다른 층 또는 다른 소자를 개재한 경우를 모두 포함한다. 반면, 소자가 "직접 위(directly on)" 또는 "바로 위"로 지칭되는 것은 중간에 다른 소자 또는 층을 개재하지 않은 것을 나타낸다.
공간적으로 상대적인 용어인 "아래(below)", "아래(beneath)", "하부(lower)", "위(above)", "상부(upper)" 등은 도면에 도시되어 있는 바와 같이 하나의 소자 또는 구성 요소들과 다른 소자 또는 구성 요소들과의 상관관계를 용이하게 기술하기 위해 사용될 수 있다. 공간적으로 상대적인 용어는 도면에 도시되어 있는 방향에 더하여 사용시 또는 동작시 소자의 서로 다른 방향을 포함하는 용어로 이해되어야 한다. 예를 들면, 도면에 도시되어 있는 소자를 뒤집을 경우, 다른 소자의 "아래(below)" 또는 "아래(beneath)"로 기술된 소자는 다른 소자의 "위(above)"에 놓여질 수 있다. 따라서, 예시적인 용어인 "아래"는 아래와 위의 방향을 모두 포함할 수 있다. 소자는 다른 방향으로도 배향될 수 있고, 이에 따라 공간적으로 상대적인 용어들은 배향에 따라 해석될 수 있다.
비록 제1, 제2 등이 다양한 소자, 구성요소 및/또는 섹션들을 서술하기 위해서 사용되나, 이들 소자, 구성요소 및/또는 섹션들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자, 구성요소 또는 섹션들을 다른 소자, 구성요소 또는 섹션들과 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자, 제1 구성요소 또는 제1 섹션은 본 발명의 기술적 사상 내에서 제2 소자, 제2 구성요소 또는 제2 섹션일 수도 있음은 물론이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
도 1은 본 발명의 일 실시예에 따른 RTL 자동 합성 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 RTL 자동 합성 시스템(1)은 프로세서(20)와 저장부(10)를 포함한다. 상기 저장부(10)는 상기 프로세서(20)를 이용하여 연산을 수행하는 RTL 자동 합성 모듈(11) 및 RTL 자동 합성 모듈(11)에서 처리한 데이터가 저장될 수 있다. 예를 들어, RTL 코드(130)로부터 변환된 스프레드 시트 포맷의 데이터, 또는 RTL 자동 합성 모듈(11)에서 재생성된 RTL 코드(130)가 저장될 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.프로세서(20)는 프로그램을 실행하고 RTL 자동 합성 시스템(1)을 제어하는 역할을 할 수 있다. 프로세서(20)는 중앙처리장치(CPU)에 대응될 수 있다. 프로세서(20)는 하나의 반도체 소자 또는 반도체 패키지로 패키징되어 구현될 수 있다.
RTL 자동 합성 모듈(11)은 컨버터 모듈(12; Converter Module), 인터페이스 모듈(14; Interface Module), 매칭 모듈(16; Matching Module)을 포함할 수 있다.
컨버터 모듈(12)은 기존의 제1 회로에 대응되는 RTL(Register Transfer Level) 코드(130; 도 2를 참조하여 후술)를 스프레드 시트(110)로 변환할 수 있다. 구체적으로, RTL 코드(130)를 스프레드 시트(110)에 적용될 수 있는 스프레드 시트 포맷의 데이터로 변환할 수 있다. 상기 스프레드 시트 포맷의 데이터는 스프레드 시트(110) 상에 나타낼 수 있다. 예를 들어, 컨버터 모듈(12)은 기존의 RTL 코드(130)을 분석하여 데이터 베이스(120; 도 2를 참조하여 후술)를 만들고, 상기 데이터 베이스(120)를 이용하여 스프레드 시트(110; 도 2를 참조하여 후술)를 자동으로 생성할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다. 또한, 컨버터 모듈(12)은 스프레드 시트(110) 내에 포함된 데이터를 RTL 코드(130)로 변환할 수 있다. 예를 들어, 사용자는 상기 스프레드 시트(110)를 이용하여 원하는 형태의 회로를 설계하거나, 수정할 수 있다. 이어서, 새롭게 설계되거나 수정된 스프레드 시트(110) 내에 포함된 데이터를 데이터 베이스(120)로 변환할 수 있다. 이어서, 상기 데이터 베이스(120)를 이용하여 새로운 RTL 코드(130)를 생성할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
인터페이스 모듈(14)은 RTL 자동 합성 시스템(1)에 데이터를 입력 또는 출력하는데 이용될 수 있다. 인터페이스 모듈(14)은 스프레드 시트 포맷의 데이터를 수신하여 스프레드 시트(110) 상에 나타내고, 인터페이스 모듈(14)은 상기 제1 회로에 포함된 제1 소자 및 제2 소자의 연결관계에 대한 수정사항을, 스프레드 시트(110)를 통하여 입력받을 수 있다.
매칭 모듈(16)은 네이밍 매칭 알고리즘(naming matching algorithm)을 이용하여, 제1 소자에 포함된 제1 포트와, 제2 소자에 포함된 제2 포트를 매칭시킬 수 있다.
컨버터 모듈(12)은 네이밍 매칭 알고리즘을 이용하여 매칭된 결과를 이용하여, 스프레드 시트(110)를 데이터 베이스(120)로 변환하는 과정을 거쳐 RTL 코드(130)로 변환할 수 있다. 네이밍 매칭 알고리즘에 대한 자세한 설명은 후술하도록 한다.
도 2는 본 발명의 일 실시예에 따른 RTL 자동 합성 방법을 설명하기 위한 도면이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 RTL 자동 합성 방법은 스프레드 시트(110)를 이용한다.
상기 스프레드 시트(110)는 워크북, 워크시트, 셀로 구성되며, 상기 셀에는 숫자, 문자, 계산식 등을 입력할 수 있다. 또한, 스프레드 시트(110)에서 제공하는 스크립트 기반의 프로그램 언어를 이용하여 사용자는 특정 기능을 수행하는 함수를 직접 정의할 수 있으며, 사용자가 작성한 함수는 셀의 계산식에 사용할 수 있다.
본 발명의 일 실시예에 따른 RTL 자동 합성 방법은 스프레드 시트(110)에 입력된 데이터를 기초로 하여 데이터 베이스(120)를 만들고, 다시 이를 활용하여, 레지스터 전송 레벨(RTL; register transfer level) 회로를 구성할 수 있는 레지스터 전송 수준 코드(register transfer level code, 이하, RTL 코드(130)라 칭함)를 생성할 수 있다. RTL 코드(130)는 VHDL, verilog-HDL 또는 다른 하드웨어 기술 언어를 사용함으로써 계층 구조에 의한 논리 회로를 기술하는 회로 데이터이다.
많은 수의 로직을 단일 칩에 집적하는 고집적 회로 기술의 발전은 하나의 칩상에 시스템을 집적할 수 있다. 이러한 고집적 회로의 설계시, 집적도가 높아질수록 이에 비례하여 많은 개발 비용과 개발 기간을 필요로 한다. 이러한 고집적회로를 단 기간 개발하기 위해서는 기존의 잘 설계된 SOC(System On chip)을 재사용하는 것이 필요하다.
본 발명의 일 실시예에 따른 RTL 자동 합성 방법은, 사용자가 직접 작성한 회로 소자들 간의 연결관계를 포함하는 스프레드 시트(110)를 이용하여 RTL 코드(130)를 생성할 수 있다. 즉, 완전히 새로운 회로를 처음부터 스프레드 시트(110)를 이용하여 작성하고, 상기 스프레드 시트(110)를 데이터 베이스(120)로 변환한다. 이어서, 상기 데이터 베이스(120)를 RTL 코드(130)로 변환한다. 이 방법은 처음부터 스프레드 시트(110)를 이용하여 회로를 설계해야 한다는 점에서 후술할 기존의 SOC 설계를 활용하는 방법에 비해 많은 시간이 소요될 수 있다. 그러나, 직접 RTL 코드(130)를 작성하는 방법보다는 사용자의 편의성이 커질 수 있고, 추후 유사한 회로를 생성해야 하는 경우 수정이 용이할 수 있다. 또한, 스프레드 시트(110)에 포함된 복수 개의 소자간의 연결관계만 지정해주면 자동으로 이를 반영한 RTL 코드(130)가 생성되므로, 직접 RTL 코드(130)를 작성하는 경우보다 에러의 발생확률이 줄어들 수 있다.
본 발명의 다른 실시예에 따른 RTL 자동 합성 방법은 기존의 SOC 설계를 활용하는 경우로써, 기존의 RTL 코드(130)을 분석하여 데이터 베이스(120)를 만들고, 상기 데이터 베이스(120)를 이용하여 스프레드 시트(110)를 자동으로 생성할 수 있다. 이어서, 사용자는 상기 스프레드 시트(110)를 이용하여 원하는 형태로 회로의 설계를 수정할 수 있다. 이어서, 새로운 설계에 맞도록 수정된 스프레드 시트(110)를 데이터 베이스(120)로 변환할 수 있다. 이어서, 상기 업데이트된 데이터 베이스(120)를 이용하여 새로운 RTL 코드(130)를 생성할 수 있다. 본 발명의 다른 실시예에 따른 RTL 자동 합성 방법은 기존의 SOC 설계를 활용하여 최소한의 노력으로 새로운 SOC 설계가 가능할 수 있다.
또한, 기존의 RTL 코드(130)에서 변환된 스프레드 시트(110)는, 또 다른 SOC 설계시에 재사용(reuse)될 수 있다. 구체적으로, 기존의 RTL 코드(130)를 스프레드 시트(110)로 변환하는 과정 없이, 기존에 변환된 스프레드 시트(110)의 프레임 또는 데이터를 이용하여 새로운 SOC를 설계할 수 있다. 기존에 변환된 스프레드 시트(110)의 프레임 또는 데이터를 다시 이용한다는 점에서 위 방법은 효율적일 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
도 3은 본 발명의 일 실시예에 따른 RTL 자동 합성 방법을 설명하기 위한 순서도이다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 RTL 자동 합성 방법은 복수 개의 소자의 연결관계를 스프레드 시트(110)로 입력받을 수 있다(S210). 제1 소자와 제2 소자의 연결관계는 각 셀들의 위치로 나타낼 수 있다. 예를 들어, 상기 제1 소자와 상기 제2 소자의 연결관계를 상기 스프레드 시트(110)에서 표현하는 경우, 상기 제1 소자가 입력된 제1 셀은 상기 제1 소자에 포함되는 상기 제1 포트의 포트명이 입력된 제2 셀과 인접할 수 있다. 상기 제2 셀은 상기 제1 소자와 연결될 상기 제2 소자가 입력된 제3 셀과 인접할 수 있다. 상기 제3 셀은 상기 제2 소자에 포함되는 상기 제2 포트의 포트명이 입력된 제4 셀과 인접할 수 있다. 다시 말해서, 제1 소자와 제2 소자는 제1 소자에 포함된 제1 포트와 제2 소자에 포함된 제2 포트로 연결될 수 있다. 제1 소자가 입력된 셀, 제1 포트가 입력된 셀, 제2 소자가 입력된 셀 및 제2 포트가 입력된 셀은 순서대로 하나의 행에 위치할 수 있다. 즉, 하나의 행에 입력된 인접하는 셀들은 서로 연결관계에 있을 수 있다.
다만, 본 발명이 이에 한정되는 것은 아니고, 하나의 열에 인접하여 위치하거나, 소자와 포트의 순서가 변경될 수도 있다.
이어서, 제1 소자에 포함된 제1 포트와, 제2 포트에 포함된 제2 포트를 네이밍 매칭 알고리즘을 이용하여 매칭시킨다(S220). 네이밍 매칭 알고리즘은 상기 제1 포트의 제1 포트명과 가장 유사한 포트명을 가진 상기 제2 포트에 매칭시킬 수 있다. 네이밍 매칭 알고리즘에 대한 자세한 설명은 도 3을 참조하여 후술하도록 한다.
이어서, 상기 네이밍 매칭 알고리즘을 이용하여 매칭된 결과를 이용하여 상기 스프레드 시트(110)를 데이터 베이스(120)로 변환하는 과정을 거쳐 RTL(Register Transfer Level) 코드로 변환한다(S240). 상기 RTL 코드(130)는 베릴로그(verilog)로 작성된 SOC 설계 코드에 해당할 수 있다. 상기 RTL 코드(130)의 변환시, 순서대로 연결되는 상기 제1 소자와 상기 제2 소자 사이에 연결 포트가 지정되지 않은 경우, 상기 연결 포트 또는 연결 와이어의 이름은 랜덤하게 형성될 수 있다. 예를 들어, 소자 A 및 소자 B가 하나의 행에 인접하게 위치하는 경우, 소자 A와 소자 B의 연결관계가 성립할 수 있다. 이러한 연결관계를 RTL 코드(130)로 나타내는 경우, 사용자는 소자 A의 포트, 소자 B의 포트 및 소자 A와 소자 B를 연결하는 와이어명을 직접 지정할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니고, 본 발명의 일 실시예에 따른 RTL 자동 합성 방법은 지정되지 않은 소자 A와 소자 B를 연결하는 포트의 포트명 또는 와이어의 이름을 자동으로 설정하여 연결할 수 있다.
포트명은 임의대로 랜덤하게 형성될 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니고, 소자의 포트명은 연결관계에 따라 몇가지 카테고리 중에서 선택될 수 있다. 상기 카테고리는 클럭(Clock), 리셋(Reset), 버스(Bus), 보안(Securtiy), 시스템 레지스터(System Register), 인터럽트(Interrupt), 저전력 인터페이스(Low Power Interface) 또는 EMA를 포함할 수 있다.
도 4는 본 발명의 일 실시예에 따른 RTL 자동 합성 방법의 네이밍 매칭 알고리즘을 설명하기 위한 순서도이다.
도 4를 참조하면, 본 발명의 일 실시예에 따른 네이밍 매칭 알고리즘은 상기 제1 포트명 및 상기 제2 소자에 포함된 각각의 포트의 포트명을 토큰(token) 단위로 분할한다(S221). 각각의 토큰은 상기 포트명에 포함된 구분자('_')를 기준으로 분리될 수 있다. 예를 들어, 'ar_ready_s0'란 포트명의 경우, 구분자를 기준으로 'ar', ready' 및 's0'의 토큰으로 분할시킬 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
이어서, 제1 포트명의 토큰과 제2 소자에 포함된 각각의 포트의 토큰을 비교한다(S224). 예를 들어, 제1 소자의 제1 포트명이 'arready_m0'이고, 제2 소자에 포함된 각각의 포트의 포트명이 'ar_ready_s0'와 'ar_resp_s0'인 경우, 'arready_m0'와 'ar_ready_s0'의 토큰을 비교하고, 'arready_m0'와 'ar_resp_s0'의 토큰을 비교할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
이어서, 중복되는 토큰의 수를 카운팅한다(S225). 제1 토큰과 제2 토큰이 완전히 동일하지 않아도, 제1 토큰이 제2 토큰에 포함되는 경우, 상기 제1 토큰과 상기 제2 토큰은 중복되는 토큰으로 판단할 수 있다. 예를 들어, 제1 토큰이 'arready'이고, 제2 토큰이 'ready'인 경우, 상기 제2 토큰은 상기 제1 토큰에 포함되므로, 제1 토큰과 제2 토큰은 중복되는 것으로 판단할 수 있다. 예를 들어, 제1 포트명이 'arready_m0'이고, 제2 소자에 포함된 각각의 포트의 포트명이 'ar_ready_s0'와 'ar_resp_s0'인 경우, 'ar_ready_s0'는 'ar'토큰과 'ready' 토큰은 제1 포트명의 토큰 'arready'에 포함되므로 2점, 'ar_resp_s0'는 'ar'토큰만이 포함되므로 1점을 얻을 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
이어서, 카운팅한 상기 토큰의 수로 복수 개의 포트명을 정렬한다(S226). 이어서, 중복되는 상기 토큰의 수가 가장 많은 포트명에 대응되는 상기 제2 포트를 상기 제1 포트에 매칭시킨다(S228). 앞서 언급한 예에 따르면, 'ar_ready_s0'는 'ar_resp_s0'보다 중복되는 토큰의 수가 많으므로, 제2 소자의 'ar_ready_s0'는 제1 소자의 'arready_m0'에 매칭될 수 있다.
도 5는 본 발명의 다른 실시예에 따른 RTL 자동 합성 방법의 네이밍 매칭 알고리즘을 설명하기 위한 순서도이다. 설명의 편의를 위하여, 이하에서는 앞서 설명한 실시예와 동일한 사항에 대해서는 중복된 설명을 생략하고 차이점을 중심으로 설명하도록 한다.
도 5를 참조하면, 본 발명의 다른 실시예에 따른 네이밍 매칭 알고리즘은 제1 포트명 및 제2 소자에 포함된 각각의 포트의 포트명을 토큰 단위로 분할시킨다(S321). 이어서, 무의미한 토큰을 필터링한다(S322). 구체적으로, 상기 포트명을 토큰 단위로 분리시킨 후, 상기 분리된 토큰 중에서 글자 수가 하나인 토큰을 제거하는 프리 프로세싱을 수행할 수 있다. 예를 들어, 포트명이 'i_ready_s0' 또는 'o_resp_s0' 인 경우, 'i' 또는 'o' 토큰은 무의미한 토큰에 해당하므로, 프리 프로세싱에서 제거할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
이어서, 상기 토큰에 포함된 대문자는 소문자로 치환할 수 있다(S323). 컴퓨터는 대문자와 소문자를 다른 글자로 인식하므로, 알파벳의 경우 각각의 토큰들을 비교하기 전에 대문자를 소문자로 통일시켜주는 작업을 수행할 수 있다.
이어서, 제1 포트명의 토큰과 제2 소자에 포함된 각각의 포트의 토큰을 비교한다(S324). 이어서, 중복되는 토큰의 수를 카운팅한다(S325). 이어서, 카운팅한 상기 토큰의 수로 복수 개의 포트명을 정렬한다(S326).
이어서 중복되는 상기 토큰의 수가 가장 많은 포트명이 복수인지 판단한다(S327). 이어서, 중복되는 상기 토큰의 수가 가장 많은 포트명이 하나인 경우, 상기 포트명에 대응되는 상기 제2 포트를 상기 제1 포트에 매칭시킨다(S328).
반면, 중복되는 상기 토큰의 수가 가장 많은 포트명이 복수 개인 경우, LD 알고리즘(Levenshtein Distance algorithm)을 이용하여, 상기 제1 포트명과의 유사도를 계산한다(S330). 이어서, 상기 유사도가 가장 큰 포트명(즉, LD 알고리즘으로 계산한 거리가 가장 가까운 포트명)에 대응되는 포트를 상기 제1 포트에 매칭시킨다(S335).
도 6a 및 도 6b는 본 발명의 몇몇 실시예에 따른 RTL 자동 합성 방법의 LD 알고리즘을 설명하기 위한 도면이다.
LD 알고리즘은 한 문자열을 다른 문자열로 바꿀 때 몇 번의 변경이 필요한지를 측정하는 방식이다. 구체적으로, LD 알고리즘은 두 문자열이 주어졌을 때, 한 문자열이 다른 문자열로 변환되는데 필요한 연산 비용을 산출한다. 예를 들어, 'kitten'과 'sitting'의 문자열 간의 거리를 측정하는 경우, 'kitten'의 첫번째 문자 k를 s로 변경한다(kitten → sitten). 이어서, 'sitten'의 끝에서 2번째 문자인 e를 i로 변경한다(sitten → sittin). 이어서, g를 'sittin'의 마지막에 추가한다(sittin → sitting). 위와 같은 과정을 거치면, LD 값(Levenshtein Distance)은 3이 된다. 다만, 본 발명이 이에 한정되는 것은 아니다.
도 6a 및 도 6b를 참조하면, LD 값을 구하기 위해서는 2차원 배열를 이용할 수 있다. 예를 들어, 첫번째 행에 문자열 하나를(예를 들어, kitten) 배치시키고, 첫번째 열에 다른 문자를(예를 들어, sitting)을 배치한 뒤, 2차원 배열에 삽입, 삭제, 대치 연산에 대한 포인트를 추가하는 방법으로 LD 값을 구할 수 있다.
구체적으로, (s, k)는 같은 문자가 아니므로 (s, k) 셀의 '좌측 셀의 값', '상측 셀의 값' 및 '좌측-상측 사이의 대각선 셀의 값'에 각각 더한 값 중에서 최소 값을 입력한다. 예를 들어, (s, k) 셀의 좌측 셀과 상측 셀의 값은 '2', 좌측-상측 사이의 대각선 셀의 값은 '1'이 되므로 '1'을 (s, k) 셀에 입력한다. 이와 같은 방식으로, 도 6a의 2차원 배열을 채워 나가면, 도 6b와 같은 매트릭스가 완성될 수 있다. 도 5b의 우측 하단의 끝에 위치한 (n, g)이 LD 값이 될 수 있다. LD 알고리즘에 대한 자세한 내용은 선행 문헌에 개시되어 있다.
도 7은 본 발명의 또 다른 실시예에 따른 RTL 자동 합성 방법을 설명하기 위한 순서도이다. 설명의 편의를 위하여, 이하에서는 앞서 설명한 실시예와 동일한 사항에 대해서는 중복된 설명을 생략하고 차이점을 중심으로 설명하도록 한다.
도 7을 참조하면, 본 발명의 또 다른 실시예에 따른 네이밍 매칭 알고리즘은 제1 회로를 나타내는 제1 RTL 코드를, 데이터 베이스로 변환하는 과정을 거쳐 상기 제1 회로에 포함된 소자들의 연결관계를 나타내는 스프레드 시트로 변환한다(S410). 이어서, 상기 스프레드 시트를 통하여, 상기 제1 회로를 수정한 제2 회로에 대한 수정사항을 수신한다(S415). 상기 스프레드 시트의 수정사항은, 상기 제1 회로에 포함된 소자를 삭제하거나, 새로운 소자를 추가하거나, 또는 상기 제1 회로에 포함된 복수의 소자의 연결관계를 수정하는 것을 포함할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
이어서, 상기 제2 회로에 포함된 제1 소자 및 제2 소자에 대하여, 상기 제1 소자에 포함된 제1 포트와 상기 제2 소자에 포함된 제2 포트를 네이밍 매칭 알고리즘(naming matching algorithm)을 이용하여 매칭시킨다(S420). 네이밍 매칭 알고리즘 방법은 도 4 및 도 5를 참조하여 설명한 본 발명의 몇몇 실시예에 따른 네이밍 매칭 알고리즘 방법이 이용될 수 있다.
이어서, 상기 매칭된 결과를 이용하여 상기 변환된 스프레드 시트를 상기 제1 RTL 코드와 다른 제2 RTL 코드로 변환할 수 있다(S440). 상기 스프레드 시트는 행과 열을 포함하고, 상기 스프레드 시트의 제1 행에 제1 소자, 제2 소자 및 제3 소자가 순서대로 위치해 있는 경우, RTL 코드는 제1 소자, 제2 소자 및 제3 소자가 나열된 순서대로 연결되도록 변환될 수 있다.
제1 RTL 코드 또는 제2 RTL 코드는 베릴로그(verilog)로 작성된 SOC 설계 코드에 해당할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니고, 상기 스프레드 시트를 제1 소자와 제2 소자 간의 연결관계를 시각적으로 나타내고, 각각의 포트들이 표시되는 블록 다이어그램으로 변환할 수 있다.
스프레드 시트는 사용자에게 기존에 존재하는 제1 회로의 연결관계를 제공할 수 있다. 사용자는 기존의 제1 회로를 반영한 상기 스프레드 시트를 수정하여 상기 제1 회로와 다른 제2 회로를 만들 수 있다. 본 발명의 몇몇 실시예에 따르면 제1 회로에 대한 기존의 데이터를 활용하고, 스프레드 시트를 이용하여 회로를 구성하는 소자 및 포트 간의 연결관계를 사용자에게 이해하기 쉽게 제시할 수 있어, 사용자의 편의성이 증대될 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
도 8은 본 발명의 일 실시예에 따른 블록 다이어그램을 설명하기 위한 도면이다. 도 9a 및 도 9b는 본 발명의 일 실시예에 따른 스프레드 시트를 설명하기 위한 도면이다. 도 10a 및 도 10b는 본 발명의 일 실시예에 따른 RTL 코드를 설명하기 위한 도면이다.
블록 다이어그램은 사용자의 이해를 돕기 위하여, 회로에 포함된 복수 개의 소자들의 연결관계를 정리하여 체계화 시킨 것을 의미한다. 블록 다이어그램은 복수 개의 소자들의 연결관계를 시각적으로 나타낼 수 있다.
도 8을 참조하면, 본 발명의 일 실시예에 따른 블록 다이어그램(500)은 버스(510; Bus), 중앙처리장치(520; CPU), 제1 메모리 컨트롤러(530; Memory Controller 1), 제1 메모리(540; Memory 1), 제2 메모리 컨트롤러(550; Memory Controller 2), 제2 메모리(560; Memory 2)를 포함한다. 버스(510)는 복수 개의 포트(S0, M0, M1)을 포함할 수 있다. 버스(510)는 상기 S0 포트를 통하여 중앙처리장치(520)와 연결될 수 있다. 버스(510)는 상기 M0 포트를 통하여 제1 메모리 컨트롤러(530)와 연결되고, 상기 M1 포트를 통하여 제2 메모리 컨트롤러(550)와 연결될 수 있다. 중앙처리장치(520)는 M0 포트를 포함하고, 상기 M0 포트를 통하여 버스(510)와 연결될 수 있다. 제1 메모리 컨트롤러(530)는 버스(510) 및 제1 메모리(540)와 연결될 수 있다. 제1 메모리(540)는 S0 포트를 포함하고, 상기 S0 포트를 통하여 제1 메모리 컨트롤러(530)와 연결될 수 있다. 제2 메모리 컨트롤러(550)는 버스(510) 및 제2 메모리(560)와 연결될 수 있다. 제2 메모리(560)는 S0 포트를 포함하고, 상기 S0 포트를 통하여 제2 메모리 컨트롤러(550)와 연결될 수 있다.
블록 다이어그램(500)은 클럭 관리부(570; Clock Management Unit)를 더 포함할 수 있다. 클럭 관리부(570)는 버스(510), 중앙처리장치(520), 제1 메모리 컨트롤러(530), 제1 메모리(540), 제2 메모리 컨트롤러(550), 제2 메모리(560)와 연결될 수 있다. 클럭 관리부(570)는 상기 클럭 관리부(570)에 연결된 각각의 소자들의 동작 타이밍을 제어할 수 있다. 상기 클럭 관리부(570)는 각각의 소자와 연결되는 복수 개의 포트를 포함할 수 있다.
도 9a를 참조하면, 도 9a는 본 발명의 일 실시예에 따른 제1 블록 다이어그램에 포함된 복수 개의 소자들의 연결상태를 나타내는 스프레드 시트(515)를 의미한다. 상기 스프레드 시트(515)는 버스(510)의 연결상태를 나타낸다. 상기 스프레드 시트(515)의 1열에는 버스(510)의 포트(S0, M0, M1)가 순서대로 기재될 수 있다. 스프레드 시트(515)의 2열은 상기 버스(510)에 연결된 중간 소자들을 나타낸다. 스프레드 시트(515)의 3열은 상기 버스(510)의 중간 소자와 연결된 말단 소자들을 나타낸다. 스프레드 시트(515)의 4열은 상기 버스(510) 또는 상기 중간 소자와 연결되는 상기 말단 소자의 포트를 나타낸다.
구체적으로, 스프레드 시트(515)의 3행을 살펴보면, 버스(510)에 포함된 S0 포트는 중간 소자 없이 중앙처리장치(520)의 M0포트와 연결되는 것을 나타낸다. 스프레드 시트(515)의 4행을 살펴보면, 버스(510)에 포함된 M0 포트는 제1 메모리 컨트롤러(530)를 중간 소자로 하여 제1 메모리(540)의 S0포트와 연결되는 것을 나타낸다. 스프레드 시트(515)의 5행을 살펴보면, 버스(510)에 포함된 M1 포트는 제2 메모리 컨트롤러(550)를 중간 소자로 하여 제2 메모리(560)의 S0포트와 연결되는 것을 나타낸다. 스프레드 시트(515)를 RTL 코드의 변환하는 경우, 순서대로 연결되는 상기 제1 소자와 상기 제2 소자 사이에 연결 포트가 지정되지 않은 경우, 상기 연결 포트의 이름은 랜덤하게 형성될 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니고, 기 설정된 포트명 카테고리 중에서 가장 유사한 포트명을 이용하여 형성될 수 있다.
스프레드 시트(515)를 이용하여 새로운 소자를 추가할 수 있다. 예를 들어, 블록 다이어그램(500)에 클럭 관리부(570)를 추가할 수 있다.
도 9b를 참조하면, 스프레드 시트(575)는 추가할 소자명, 상기 소자에 포함되는 복수 개의 포트, 상기 복수 개의 포트와 연결될 목적지 소자 및 상기 목적지 소자에 포함되고 상기 추가할 소자와 연결될 포트가 순서대로 인접하여 배열될 수 있다. 스프레드 시트(575)에서 각각의 행은 각각의 포트들의 연결관계를 의미할 수 있다. 예를 들어, 클럭 관리부(570)의 CLK_CPU 포트는 중앙처리부 소자의 CLK 포트와 연결될 수 있다. 클럭 관리부(570)의 CLK_BUS 포트는 버스(510) 소자의 CLK 포트와 연결될 수 있다. 마찬가지로, 클럭 관리부(570)의 CLK_MEM1 포트는 제1 메모리(540) 소자의 CLK 포트와 연결될 수 있다.
만약, 스프레드 시트(575)의 4열이 기재되지 않은 경우라면, 클럭 관리부(570)의 CLK_BUS 포트는 버스(510) 소자에 포함된 복수 개의 포트 중에서 어느 포트와 연결되어야 할지 판단하여야 한다. 이때, 본 발명의 RTL 합성 방법은 네이밍 매칭 알고리즘을 사용하여 버스(510) 소자에 포함된 복수 개의 포트 중에서 가장 유사도가 높은 포트에 CLK_BUS를 연결할 수 있다.
예를 들어, 버스(510) 소자에 I_CLK, I_RESET, O_INTERRUPT 포트를 포함하는 경우, 각각의 모든 포트를 구분자로 분리하여 토큰을 생성한다. CLK_BUS는 CLK와 BUS 토큰으로 분리되고, I_CLK는 I와 CLK 토큰으로 분리되며, I_RESET은 I와 RESET 토큰으로 분리되고, O_INTERRUPT은 O와 INTERRUPT 토큰으로 분리될 수 있다. 이어서, 의미없는 토큰(예를 들어, 글자수가 하나인 토큰)을 제거하면, I와 O 토큰은 제거된다. 이어서, 중복되는 토큰 수를 카운팅 하면, CLK 토큰을 포함하는 I_CLK 포트만이 1개 토큰이 중복된다. 따라서, 클럭 관리부(570)의 CLK_BUS 포트는 버스(510) 소자중에서 중복되는 토큰수가 가장 많은 I_CLK 포트에 매칭된다.
만약, 중복되는 토큰의 수가 가장 많은 포트명이 복수 개인 경우, LD 알고리즘을 이용하여, 유사도가 가장 큰 포트명에 대응되는 포트를, 추가되는 소자의 포트에 연결할 수 있다.
다만, 본 발명이 네이밍 매칭 알고리즘을 사용하여 포트를 매칭시키는 것에 한정되는 것은 아니고, 엑셀 시트 상에 연결되는 양측의 포트명을 직접 지정할 수 있다. 또한, 각 소자들에 포함된 포트들의 카테고리를 지정하고, 상기 카테고리가 일치하는 포트끼리 우선 순위를 두어 연결할 수 있다. 예를 들어, 카테고리는 클럭 포트, 리셋 포트, 버스 포트, 보안 포트, 시스템 레지스터 포트, 인터럽트 포트, 저전력 인터페이스 포트 또는 EMA 등이 있을 수 있다.
도 10a 및 도 10b를 참조하면, 도 10a 및 도 10b는 도 9a 와 도 9b의 스프레드 시트(515, 575)를 RTL 코드로 자동 변환시킨 것이다. RTL 코드는 베릴로그(verilog)로 작성된 SOC 설계 코드에 해당할 수 있다. 스프레드 시트(515, 575)를 RTL 코드로 변환 시, 네이밍 매칭 알고리즘 또는 LD 알고리즘을 이용하여 얻은 매칭 결과를 사용할 수 있다.
또한, 순서대로 연결되는 제1 소자와 제2 소자 사이에 연결 포트 또는 와이어의 이름이 스프레드 시트 상에 지정되지 않은 경우, 연결 포트 또는 와이어의 이름은 랜덤하게 형성될 수 있다.
도 11a 및 도 11b는 본 발명의 다른 실시예에 따른 스프레드 시트를 설명하기 위한 도면이다. 도 12는 본 발명의 다른 실시예에 따른 RTL 코드를 설명하기 위한 도면이다. 도 13은 본 발명의 다른 실시예에 따른 블록 다이어그램을 설명하기 위한 도면이다. 설명의 편의를 위하여, 이하에서는 앞서 설명한 실시예와 동일한 사항에 대해서는 중복된 설명을 생략하고 차이점을 중심으로 설명하도록 한다.
도 11a 및 도 11b을 참조하면, 도 11a 및 도 11b는 도 9a 및 도 9b의 스프레드 시트(515, 575)를 수정한 것이다. 사용자는 기존의 회로를 반영한 스프레드 시트(515, 575)를 수정하여 새로운 회로를 만들 수 있다.
구체적으로, 도 11a는 도 9a와 비교하여, 제1 메모리 컨트롤러(530)와 제1 메모리(540; 도 13 참조)를 제거하고, 새로운 소자(630; New IP, 도 13 참조)를 추가하였다. New IP 소자(630)는 S0 포트를 포함하고, 버스의 M0 포트를 통해 연결될 수 있다. 또한, 제2 메모리 컨트롤러(550; 도 13 참조)와 제2 메모리(560; 도 13 참조)는 메모리 컨트롤러(650; 도 13 참조)와 메모리(660; 도 13 참조)로 수정될 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
도 11b는 클럭관리부(670; 도 13 참조)를 포함하는 스프레드 시트(675)를 나타낸다. 도 10a에서의 수정사항을 반영하여, 스프레드 시트(675)를 수정할 수 있다.
구체적으로, 사용자는 스프레드 시트(675)에 New IP 소자(630)와 클럭 포트명을 추가하고, 제2 메모리 컨트롤러(550)와 제2 메모리(560)를 메모리 컨트롤러(650)와 메모리(660)로 수정할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
사용자가 기존의 회로에 대응되는 RTL 코드를 스프레드 시트로 변환하여 수정하는 경우, 새로운 회로를 만들 때 RTL 코드를 모두 새로 코딩해야 하는 불편함을 줄일 수 있다. 또한, 기존에 설계된 회로의 코드를 이용할 수 있으므로, 코딩하는데 드는 시간과 노력을 상당히 절약할 수 있다.
본 발명의 몇몇 실시예는 스프레드 시트로 회로의 구성을 표현하기에, RTL 코드로 바로 작성하는 것보다 상대적으로 사용자의 이해가 쉬울 수 있다. 스프레드 시트를 RTL 코드로 자동으로 변환하여, 사용자가 직접 코드를 작성하는 것보다 오류가 적게 발생할 수 있다.
도 12을 참조하면, 도 12는 상기 도 11a 와 도 11b의 스프레드 시트(615, 675)를 RTL 코드로 자동 변환시킨 것이다. 상기 RTL 코드는 베릴로그(verilog)로 작성된 SOC 설계 코드에 해당할 수 있다.
스프레드 시트(615, 675)를 상기 RTL 코드로 변환 시, 네이밍 매칭 알고리즘 또는 LD 알고리즘을 이용하여 얻은 매칭 결과를 사용할 수 있다. 도 11의 RTL 코드는, 스프레드 시트(615, 675)의 수정사항이 반영될 수 있다. 또한, 순서대로 연결되는 제1 소자와 제2 소자 사이에 연결 포트 또는 와이어의 이름이 스프레드 시트 상에 지정되지 않은 경우, 연결 포트 또는 와이어의 이름은 랜덤하게 형성될 수 있다.
예를 들어, 도 12의 RTL 코드는 도 10의 RTL 코드와 비교하여, New IP 소자(630)가 추가되고, 제2 메모리 컨트롤러(550)와 제2 메모리(560)가 메모리 컨트롤러(650)와 메모리(660)로 수정될 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
도 13을 참조하면, 도 13의 블록 다이어그램(600)은 도 11a 와 도 11b을 참조하여 설명한 스프레드 시트(615, 675)에 대응된다. 스프레드 시트(615, 675)는 제1 소자와 제2 소자 간의 연결관계를 시각적으로 나타내고, 각각의 포트들이 표시되는 블록 다이어그램(600)으로 변환할 수 있다.
예를 들어, 본 발명의 몇몇 실시예에 따른 블록 다이어그램(600)은 도 11의 블록 다이어그램(500)과 비교하여 New IP 소자(630)가 추가되고, 제2 메모리 컨트롤러(550)와 제2 메모리(560)가 메모리 컨트롤러(650)와 메모리(660)로 수정될 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니고, 사용자는 스프레드 시트를 이용하여 다양하게 회로를 수정할 수 있다. 수정된 스프레드 시트는 RTL 코드 또는 블록 다이어그램으로 변환될 수 있다.
본 발명의 실시예들과 관련하여 설명된 방법 또는 알고리즘의 단계는, 프로세서에 의해 실행되는 하드웨어 모듈, 소프트웨어 모듈, 또는 그 2 개의 결합으로 직접 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드 디스크, 착탈형 디스크, CD-ROM, 또는 본 발명의 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터로 읽을 수 있는 기록 매체에 상주할 수도 있다. 예시적인 기록 매체는 프로세서에 연결되며, 그 프로세서는 기록 매체로부터 정보를 독출할 수 있고 기록 매체에 정보를 기입할 수 있다. 다른 방법으로, 기록 매체는 프로세서와 일체형일 수도 있다. 프로세서 및 기록 매체는 주문형 집적회로(ASIC) 내에 상주할 수도 있다. ASIC는 사용자 단말기 내에 상주할 수도 있다. 다른 방법으로, 프로세서 및 기록 매체는 사용자 단말기 내에 개별 구성 요소로서 상주할 수도 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
10: 저장부 11: RTL 자동 합성 모듈
12: 컨버터 모듈 14: 인터페이스 모듈
16: 매칭 모듈 20: 프로세서
110: 스프레드 시트 120: 데이터 베이스
130: RTL 코드

Claims (10)

  1. 제1 소자와 제2 소자의 연결관계를 스프레드 시트로 입력받고,
    상기 제1 소자에 포함된 제1 포트와, 상기 제2 소자에 포함된 제2 포트를 네이밍 매칭 알고리즘(naming matching algorithm)을 이용하여 매칭시키고,
    상기 매칭된 결과를 이용하여 상기 스프레드 시트를 RTL(Register Transfer Level) 코드로 변환하는 것을 포함하되,
    상기 네이밍 매칭 알고리즘은 상기 제1 포트를 상기 제1 포트의 제1 포트명과 가장 유사한 포트명을 가진 상기 제2 포트에 매칭시키는 RTL 자동 합성 방법.
  2. 제 1항에 있어서,
    상기 소자의 연결관계를 스프레드 시트로 입력받는 것은, 상기 제1 소자와 상기 제2 소자의 연결관계를 포함하고 제1 회로에 대응되는 RTL 코드를, 상기 스프레드 시트로 변환하는 것을 포함하고,
    상기 스프레드 시트를 통하여, 상기 제1 회로의 수정사항을 입력받는 것을 더 포함하는 RTL 자동 합성 방법.
  3. 제 1항에 있어서,
    상기 네이밍 매칭 알고리즘은, 상기 제1 포트명 및 상기 제2 소자에 포함된 각각의 포트의 포트명을 토큰(token) 단위로 분할하고,
    상기 제1 포트명의 토큰과 상기 제2 소자에 포함된 각각의 포트의 토큰을 비교하여 중복되는 토큰의 수를 카운팅하고,
    상기 토큰의 수가 가장 많은 포트명에 대응되는 상기 제2 포트를 상기 제1 포트에 매칭시키는 것을 포함하되,
    상기 토큰은 상기 포트명에 포함된 구분자('_')를 기준으로 분리되는 RTL 자동 합성 방법.
  4. 제 3항에 있어서,
    상기 토큰을 매칭시키기 전에, 상기 토큰에 포함된 대문자를 소문자로 치환하는 것을 더 포함하고,
    상기 토큰의 수를 카운팅하는 것은, 제1 토큰이 제2 토큰에 포함되는 경우, 상기 제1 토큰과 상기 제2 토큰은 중복되는 토큰으로 판단하는 RTL 자동 합성 방법.
  5. 제 3항에 있어서,
    상기 토큰 단위로 분할한 후에, 상기 분리된 토큰 중에서 글자 수가 하나인 토큰을 제거하는 프리 프로세싱을 수행하는 것을 더 포함하는 RTL 자동 합성 방법.
  6. 제 3항에 있어서,
    상기 중복되는 토큰의 수가 가장 많은 포트명이 복수 개인 경우, 상기 제1 포트명과의 유사도를 판별할 수 있는 LD 알고리즘(Levenshtein Distance algorithm)을 이용하여, 상기 유사도가 가장 큰 포트명에 대응되는 포트를 상기 제1 포트에 매칭시키는 RTL 자동 합성 방법.
  7. 제 1항에 있어서,
    상기 스프레드 시트는 행과 열을 포함하고,
    상기 스프레드 시트의 제1 행에 제1 소자, 제2 소자 및 제3 소자가 순서대로 위치해 있는 경우, 상기 RTL 코드는 상기 제1 소자, 제2 소자 및 제3 소자가 나열된 순서대로 연결되도록 변환되는 RTL 자동 합성 방법.
  8. 제 7항에 있어서,
    상기 RTL 코드로 변환시, 순서대로 연결되는 상기 제1 소자와 상기 제2 소자 사이에 연결 포트 또는 와이어가 지정되지 않은 경우, 상기 연결 포트 또는 상기 와이어의 이름은 랜덤하게 형성되는 RTL 자동 합성 방법.
  9. 제 1항에 있어서,
    상기 제1 소자와 상기 제2 소자의 연결관계를 상기 스프레드 시트에서 표현하는 경우, 상기 제1 소자가 입력된 제1 셀은 상기 제1 소자에 포함되는 상기 제1 포트의 포트명이 입력된 제2 셀과 인접하고,
    상기 제2 셀은 상기 제1 소자와 연결될 상기 제2 소자가 입력된 제3 셀과 인접하고,
    상기 제3 셀은 상기 제2 소자에 포함되는 상기 제2 포트의 포트명이 입력된 제4 셀과 인접하는 RTL 자동 합성 방법.
  10. 프로세서; 및
    상기 프로세서를 이용하여 연산을 수행하는 RTL 자동 합성 모듈 및 상기 RTL 자동 합성 모듈에서 처리한 데이터가 저장되는 저장부를 포함하되,
    상기 RTL 자동 합성 모듈은,
    제1 회로에 대응되는 RTL 코드를 스프레드 시트 포맷의 데이터로 변환하거나, 스프레드 시트 내에 포함된 데이터를 RTL 코드로 변환하는 컨버터 모듈과,
    상기 스프레드 시트 포맷의 데이터를 스프레드 시트 상에 나타내고, 상기 제1 회로에 포함된 제1 소자 및 제2 소자의 연결관계에 대한 수정사항을 상기 스프레드 시트를 통하여 입력받는 인터페이스 모듈과,
    네이밍 매칭 알고리즘을 이용하여, 상기 제1 소자에 포함된 제1 포트와, 상기 제2 소자에 포함된 제2 포트를 매칭시키는 매칭 모듈을 포함하는 RTL 자동 합성 시스템.
KR1020140026631A 2014-03-06 2014-03-06 스프레드 시트를 이용한 rtl 자동 합성 시스템, 방법 및 기록매체 KR102218200B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140026631A KR102218200B1 (ko) 2014-03-06 2014-03-06 스프레드 시트를 이용한 rtl 자동 합성 시스템, 방법 및 기록매체
US14/618,381 US9507899B2 (en) 2014-03-06 2015-02-10 System and method for register transfer level autointegration using spread sheet and computer readable recording medium thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140026631A KR102218200B1 (ko) 2014-03-06 2014-03-06 스프레드 시트를 이용한 rtl 자동 합성 시스템, 방법 및 기록매체

Publications (2)

Publication Number Publication Date
KR20150104814A true KR20150104814A (ko) 2015-09-16
KR102218200B1 KR102218200B1 (ko) 2021-02-23

Family

ID=54017596

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140026631A KR102218200B1 (ko) 2014-03-06 2014-03-06 스프레드 시트를 이용한 rtl 자동 합성 시스템, 방법 및 기록매체

Country Status (2)

Country Link
US (1) US9507899B2 (ko)
KR (1) KR102218200B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109391616B (zh) * 2018-10-10 2021-08-27 四川中电启明星信息技术有限公司 一种信息管理方法及终端

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010013719A (ko) * 1997-06-13 2001-02-26 레카 도날드 지. 저비용으로 용이하게 사용할 수 있는 자동 테스트 시스템소프트웨어
JP2002099561A (ja) * 2000-09-21 2002-04-05 Toshiba Corp データ変換方法およびデータ変換システム並びに記憶媒体
JP5014920B2 (ja) * 2007-08-17 2012-08-29 ラピスセミコンダクタ株式会社 回路設計方法、ならびにその方法により製造される集積回路

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3837800A (en) * 1971-05-06 1974-09-24 Meltzer H Method and apparatus for purifying fluids
JP2954894B2 (ja) 1996-12-13 1999-09-27 株式会社半導体理工学研究センター 集積回路設計方法、集積回路設計のためのデータベース装置および集積回路設計支援装置
JP2001318956A (ja) 2000-05-10 2001-11-16 Nec Corp レイアウト設計を考慮したlsi論理設計支援システム及びその方法
KR20050051207A (ko) 2003-11-27 2005-06-01 삼성전자주식회사 Amba시스템 집적 회로의 레지스터 전송 단계 코드의자동 통합 방법
JP2006171913A (ja) 2004-12-13 2006-06-29 Canon Inc 情報処理装置、情報処理方法、ならびにプログラム、記憶媒体
US20060129368A1 (en) 2004-12-14 2006-06-15 Smith Zachary S Object-oriented interface to RTL model signals
JP4393450B2 (ja) 2005-12-01 2010-01-06 株式会社東芝 論理回路モデル変換装置及び論理回路モデル変換プログラム
JP4586864B2 (ja) 2008-02-28 2010-11-24 日本電気株式会社 プロパティ自動生成装置
US8578307B2 (en) 2009-09-16 2013-11-05 Viasat, Inc. Control/monitor automation for ASICs and programmable logic
JP2013004066A (ja) 2011-06-22 2013-01-07 Renesas Electronics Corp 回路生成装置
US8584062B2 (en) 2011-10-27 2013-11-12 Apple Inc. Tool suite for RTL-level reconfiguration and repartitioning
GB2505881A (en) * 2012-09-12 2014-03-19 Ibm Determining common table definitions in distributed databases

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010013719A (ko) * 1997-06-13 2001-02-26 레카 도날드 지. 저비용으로 용이하게 사용할 수 있는 자동 테스트 시스템소프트웨어
JP2002099561A (ja) * 2000-09-21 2002-04-05 Toshiba Corp データ変換方法およびデータ変換システム並びに記憶媒体
JP5014920B2 (ja) * 2007-08-17 2012-08-29 ラピスセミコンダクタ株式会社 回路設計方法、ならびにその方法により製造される集積回路

Also Published As

Publication number Publication date
KR102218200B1 (ko) 2021-02-23
US9507899B2 (en) 2016-11-29
US20150254386A1 (en) 2015-09-10

Similar Documents

Publication Publication Date Title
US9235798B2 (en) Methods and systems for handling data received by a state machine engine
CN104583935A (zh) 状态机引擎中的指令插入
CN104603742A (zh) 用于状态机引擎的结果产生
CN103988212A (zh) 用于在状态机中路由的方法及系统
CN104487956A (zh) 用于使用状态机引擎中的状态向量数据的方法及系统
US20180365594A1 (en) Systems and methods for generative learning
CN113360654B (zh) 文本分类方法、装置、电子设备及可读存储介质
CN106845474A (zh) 图像处理装置和方法
CN101689216B (zh) 压缩型电路仿真输出
CN112686049A (zh) 文本审核方法、装置、设备及存储介质
CN115237410A (zh) 一种用户界面的生成方法及装置
CN113360139A (zh) 前端框架的集成方法、装置、电子设备及存储介质
KR20150104814A (ko) 스프레드 시트를 이용한 rtl 자동 합성 시스템, 방법 및 기록매체
CN112988964A (zh) 文本韵律边界预测的方法、装置、设备及存储介质
CN112733551A (zh) 文本分析方法、装置、电子设备及可读存储介质
CN109241322B (zh) 代码生成方法、代码生成装置和电子设备
CN115238092A (zh) 一种实体关系抽取方法、装置、设备及存储介质
US20140258302A1 (en) Information retrieval device and information retrieval method
CN112733478A (zh) 用于对设计进行形式验证的装置
CN108108472B (zh) 数据处理方法以及服务器
CN115796090B (zh) 电路模型生成方法、电路仿真验证方法及对应装置
WO2010038387A1 (ja) 回路設計方法、回路設計システム及び記録媒体
CN115185486B (zh) 用于生成asic结构声明的方法、装置及存储介质
CN115130471A (zh) 摘要生成模型的训练方法、装置、设备及存储介质
JP2016014950A (ja) 回路設計支援装置及び回路設計支援方法及びプログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant