KR100627712B1 - 브이에이치디엘에서 중복 기술된 신호선 할당 구문 제거 방법 - Google Patents

브이에이치디엘에서 중복 기술된 신호선 할당 구문 제거 방법 Download PDF

Info

Publication number
KR100627712B1
KR100627712B1 KR1019990062458A KR19990062458A KR100627712B1 KR 100627712 B1 KR100627712 B1 KR 100627712B1 KR 1019990062458 A KR1019990062458 A KR 1019990062458A KR 19990062458 A KR19990062458 A KR 19990062458A KR 100627712 B1 KR100627712 B1 KR 100627712B1
Authority
KR
South Korea
Prior art keywords
signal line
node
syntax
vhdl
assignment
Prior art date
Application number
KR1019990062458A
Other languages
English (en)
Other versions
KR20010058242A (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 KR1019990062458A priority Critical patent/KR100627712B1/ko
Publication of KR20010058242A publication Critical patent/KR20010058242A/ko
Application granted granted Critical
Publication of KR100627712B1 publication Critical patent/KR100627712B1/ko

Links

Images

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

본 발명은 VHDL 합성기 내에 구현된 신호선 할당 구문의 검사 및 처리 방법에 관한 것으로서, 본 발명에 따른 신호선 할당 제거기는 VHDL을 이용하여 기술된 설계 사양 중에서 중복 사용된 신호선 할당 구문을 검사하여 제거하기 위하여 VHDL 구문들 간의 상호 연관관계를 검사하여 각 신호선 구문이 중복 사용되어 VHDL 설계 사양 내에서 불필요한 구문인지, 아니면 반드시 필요한 구문인 지를 검사하여 불 필요한 구문을 제거하는 기능을 수행한다.
본 발명은 VHDL 언어 내의 중복 기술된 신호선 할당 구문을 제거할 때, 처리의 편리를 위하여 신호선을 분할하고, VHDL 원시 코드를 트리 형태의 내부의 표현으로 변환하여 중복 기술된 신호선 할당 구문을 탐색하고 제거함으로써 논리 합성의 결과로 생성되는 하드웨어의 크기를 줄일 수 있고, 검증을 위한 VHDL 모의실험에서 실행 시간을 단축시킬 수 있다.

Description

브이에이치디엘에서 중복 기술된 신호선 할당 구문 제거 방법 {Method for Removing Redundant Signal Assignment Statement in VHDL}
도 1은 본 발명의 한 실시예에 따른 중복 기술된 신호선 할당 구문 제거방법을 도시한 동작 흐름도,
도 2는 본 발명에 사용되는 분할표의 일 예를 도시한 도면,
도 3은 본 발명에서 중복된 신호선 할당 구문을 조사하기 위하여 VHDL 구문들을 트리 형태로 표현한 도면,
도 4는 본 발명의 일 예를 설명하기 위해 도시한 프로그램 리스트,
도 5는 도 4의 일 예에 의해 생성된 분할표,
도 6은 본 발명의 일 예를 설명하기 위해 도시한 프로그램 리스트,
도 7은 도 6의 프로그램에 의해 생성된 트리,
도 8 내지 도 9는 부분 기술정보와 전체 기술정보를 구분하는 과정을 설명하기 위하여 도시한 도면,
도 10은 본 발명에 의해 산출된 결과를 설명하기 위한 프로그램 리스트이다.
본 발명은 반도체 컴퓨터이용설계(Computer Aided Design, 이하 CAD 라 칭함)분야에 관한 것으로서, 보다 상세하게 설명하면 하드웨어 기술언어인 VHDL을 이용하여 기술된 설계 사양에서 중복 기술되어 불필요한 신호선 할당 구문을 검사하고 제거하는 방법에 관한 것이다.
지금까지 공개된 내용 중 본 발명의 하드웨어 기술언어인 VHDL(VHSIC Hardware Description Language) 구문과 가장 유사한 연구분야는 종래의 소프트웨어 기술 언어들에서 행하는 코드 최적화 기술이다. 그러나, 이러한 소프트웨어 기술 언어는 병렬성을 기술할 수 없기 때문에 신호선 할당 구문이 없으며, 따라서, 본 발명의 유사하다고 말할 수 없다. 즉, 이러한 기술분야에 종사하는 회사들은 관련 기술에 대한 논문이나 특허를 발표하지 않음으로써 기술의 유출을 막고 있다.
따라서, 본 발명은 상기와 같은 종래기술의 문제점을 해결하기 위하여 안출된 것으로서, 하드웨어 기술 언어로 기술된 설계사양에서 사용되는 신호선 할당 구문의 검사를 통하여, 중복된 신호 할당 구문을 탐색하고 제거함으로써 논리 합성시 하드웨어의 크기를 감소시키도록 하는 중복 기술된 신호선 할당 구문 제거방법을 제공하기 위한 것이다.
상기한 목적을 달성하기 위하여 본 발명에 따라 중복 기술된 신호선 할당 구문 제거방법은, 현재 처리하지 않은 프로세스 중 하나를 선택하는 제 1 단계와, 상기 선택한 프로세스 내의 신호선 할당 구문들을 탐색하여 신호선을 분할하는 제 2 단계, 상기 신호선 분할로 인하여 새로이 구성된 VHDL 구문의 구조를 트리 구조의 내부 표현으로 변환하는 제 3 단계, 및 상기 내부의 트리 구조를 탐색하며 신호선 전체가 정의되었는지 아니면 부분적으로 정의되었는 지를 검사하며 중복된 신호선 할당 구문을 제거하는 제 4 단계를 포함하는 것을 특징으로 한다.
양호하게는, 상기 제 2 단계는, 상기 신호선의 인덱스를 참조하여 1차원 배열의 분할표를 생성하는 분할표 생성단계와, 상기 분할표를 이용하여 신호선 할당구문을 분할하는 구문 분할단계를 포함하는 것을 특징으로 한다.
보다 양호하게는, 상기 분할표 생성단계는, 내림차순의 신호선일 때, 임의의 A(K downto L)의 신호선 할당구문을 만나면, 분할표 Pa[K+1]과 Pa[L]에 분할되어질 정보 1을 설정하고, K+1이 신호선 A의 범위를 벗어나면 Pa[K+1]의 분할표에는 값을 설정하지 않는 단계와, 올림차순의 신호선일 때, 임의의 A(L to K)의 신호선 할당구문을 만나면, 분할표 Pa[L-1]과 Pa[K]에 분할되어질 정보 1을 설정하고, L-1이 신호선 A의 범위를 벗어나면 Pa[L-1]의 분할표에는 값을 설정하지 않는 단계, 프로세스 내의 모든 신호선 할당 구문에 상기의 단계를 순서적으로 탐색하며 수행하는 단계, 및 상기 탐색이 끝나면, 상기 분할표를 참조하여 분할되어질 신호선의 정보를 얻고 신호선을 분할하는 단계를 포함하는 것을 특징으로 한다.
양호하게는, 상기 제 3 단계는, 프로세스 노드를 최상위 노드로 정의하는 단계와, 프로세스 구문을 분석하여 상기 프로세스 노드의 하위에 조건 구문을 중간 노드로 표현하는 단계, 및 상기 프로세스 노드 및 중간 노드의 하위에 신호선 할당 구문과 변수 할당 구문을 종말노드로 표현하는 단계를 포함하는 것을 특징으로 한다.
보다 양호하게는, 상기 제 4 단계는, 임의의 노드가 잎 노드이며 전체 기술이면 그 부모 노드를 전체 기술로 인지하고, 해당 신호선과 신호선 할당 구문에 대한 원소 (sig, ST)를 생성하여 전체 기술집합(Ti) 및 부분 기술집합(Pi)에서 검색되는 신호선 sig에 대한 정보를 모두 제거하고 새로운 생성 원소를 전체 기술집합(Ti)에 추가하는 단계와; 임의의 노드가 조건 노드이며 해당 신호선이 모든 형제 노드에서 전체 기술이면, 그 부모 노드를 전체 기술로 인지하고, 원소 (sig, ST)를 생성하여 Ti 및 Pi에서 검색되는 신호선 sig에 대한 정보를 모두 제거하고 새로운 생성 원소를 Ti에 추가하는 단계; 임의의 노드가 조건 노드이며 해당 신호선이 모든 형제 노드에서 전체 기술이 아니면, 그 부모 노드를 부분 기술로 인지하고, 원소 (sig, ST)를 Pi에 추가하는 단계; 임의의 노드가 조건문 노드이며 해당 신호선이 전체 기술이면 그 부모 노드를 전체 기술로 인지하고, 원소 (sig, ST)를 생성하여 Ti 나 Pi에서 검색되는 신호선 sig에 대한 정보를 모두 제거하고 새로운 생성 원소를 Ti에 추가하는 단계; 임의의 노드가 조건문 노드이며 해당 신호선이 부분 기술이면 그 부모 노드를 부분 기술로 인지하고, 원소 (sig, ST)를 생성하여 이를 Pi에 추가하는 단계; 내부 구문이 존재하지 않는 조건 구문을 제거하는 단 계를 포함하는 것을 특징으로 한다.
이하, 첨부된 도면을 참조하면서 본 발명의 한 실시예에 따른 "VHDL에서 중복 기술된 신호선 할당 구문 제거방법"에 대해 보다 상세하게 설명하면 다음과 같다.
VHDL 언어는 여러 개의 프로세스 구문으로 이루어지고, 각각의 프로세스 구문은 병렬성을 가지므로 독립적인 동작을 수행한다. 하나의 프로세스 구문은 내부에 신호선 할당구문, 변수할당구문, 선택수행구문(IF, CASE), 반복구문(FOR Loop, While Loof)으로 구성된다.
도 4에는 PA라는 이름의 프로세스 구문의 일 예가 개시된다. 이 PA 프로세스는 IF 구문과 다수의 신호선할당구문으로 이루어진다. VHDL 언어에서는 '<='으로 신호할당구문임을 표현한다. IF구문은 내부에 A="00"인 조건과 그 외의 조건으로 이루어지며, 각각은 신호선할당구문('C(3 downto 2) <= A', 'C(1 downto 0) <= B', 'C <= B&A' )으로 이루어진다. 즉, 이 PA 프로세스 내에는 3개의 신호할당구문이 있다.
본 발명에서는 도 4에 개시된 프로세스 구문에서 중복 기술된 신호선할당구문을 제거하는 방법을 설명한다.
도 1은 본 발명의 한 실시예에 따른 VHDL에서 중복 기술된 신호선 할당 구문 제거 방법을 도시한 동작 흐름도이다.
먼저, 현재 처리하지 않은 프로세스가 있는 지를 검사하여(S11) 현재 처리하지 않은 프로세스 중 하나를 선택한다(S12). 프로세스는 병렬성으로 동작하므로 선택의 순서에 영향은 없다. 다음, 선택한 프로세스 내의 신호선 할당 구문들을 탐색하여 신호선을 분할한다(S13). 다음, 신호선 분할로 인하여 새로이 구성된 VHDL 구문의 구조를 트리 구조의 내부 표현으로 변환한다(S14). 다음, 단계 S14에서 생성된 내부의 트리 구조를 탐색하며 신호선 전체가 정의되었는지 아니면 부분적으로 정의되었는 지를 검사하며 중복된 신호선 할당 구문을 제거한다(S15).
이하에서는 신호선 분할과정(S13), 트리구조 표현과정(S14) 및 중복된 신호선할당구문 제거과정(S15)에 대해 상세하게 설명한다.
신호선 분할과정(S13)
단계 S13의 신호선을 분할하는 기능에 대하여 자세히 기술하면 다음과 같다. 먼저, 신호선 분할을 위한 분할표를 생성하고, 이 분할표를 이용하여 신호선 할당구문을 분할한다. 프로세스 내에 있는 신호선 할당 구문의 왼쪽 신호선의 인덱스를 참조하여 신호선과 같은 크기의 1차원 배열의 분할표를 생성한다. 분할표의 생성방법은 다음과 같다.
첫째, 내림차순의 신호선일 때, 임의의 A(K downto L)의 신호선 할당구문을 만나면, 분할표 Pa[K+1]과 Pa[L]에 분할되어질 정보 1을 설정한다. 이때, K+1이 신호선 A의 범위를 벗어나면 Pa[K+1]의 분할표에는 값을 설정하지 않는다. 도 4의 예시의 경우, 신호선 C의 크기는 (3 downto 0)이므로, 분할표는 4개의 논리비트로 구성된다. C(3 downto 2)는 Pa[4], Pa[2]에 분할되어질 정보 1을 설정하고, C(1 downto0)은 Pa[2], Pa[0]에 분할되어질 정보 1을 설정하나, Pa[4]는 신호선 C의 범위를 벗어나므로 표시하지 않는다. 그 결과가 도 5에 도시되어 있다.
둘째, 한편 올림차순의 신호선일 때, 임의의 A(L to K)의 신호선 할당구문을 만나면, 분할표 Pa[L-1]과 Pa[K]에 분할되어질 정보 1을 설정한다. 이때, L-1이 신호선 A의 범위를 벗어나면 Pa[L-1]의 분할표에는 값을 설정하지 않는다.
셋째, 상기의 두 과정을 프로세스 내의 모든 신호선 할당 구문에 순서적으로탐색하며 수행한다.
넷째, 탐색이 끝나면 분할표를 참조하여 분할되어질 신호선의 정보를 얻는다. 신호선이 내림차순일 때는 분할표 인덱스를 큰 값부터 탐색하여 처음으로 1이 나오는 인덱스까지 추출하고, 이후에는 추출된 인덱스 다음부터 시작하여 새로이 1이 나오는 부분까지를 추출한다. 신호선이 오름차순일 때는 분할표 인덱스를 작은 값부터 탐색하여 처음으로 1이 나오는 인덱스까지 추출하고, 이후에는 추출된 인덱스 다음부터 시작하여 새로이 1이 나오는 부분까지를 추출한다. 이때, 범위를 벗어나면 범위의 제일 끝 값으로 정한다. 도 5의 경우, 신호선은 (3 downto 2), (1 downto 0)으로 분할된다.
도 2는 본 발명에서 사용하는 분할표의 일 예가 도시되어 있다. 즉, 내림차순의 신호선일 때 임의의 A(M downto 0)라고 표현된 M+1 비트의 신호선 A가 선언되고, 프로세스 내에서 이 신호선 A(M downto 0)과 신호선 A(K downto L)에 값을 할당하는 구문이 있을 때의 분할표가 도 2에 도시되어 있다. 도 2에 도시된 분할표의 경우, 신호선 A가 내림차순의 경우에는 (M downto K+1), (K downto L), (L-1 downto 0) 으로 분할되며, 신호선 A가 오름차순이며 신호선 A(0 to M)과 신호선 (L to K)에 값을 할당하는 구문이 있을 경우에는 (0 to L-1), (L to K), (K+1 to M) 으로 분할된다.
이와 같이 분할표가 생성되면, 이를 이용하여 해당 신호선 할당 구문을 분할하는데 이때 분할이 요구되는 구문은 분할되어질 신호선보다 큰 신호선에 할당하는 구문들이다. 이의 처리는 신호선 할당 구문의 오른쪽에 존재하는 할당 표현식을 임시 변수를 사용하여 변수 할당 구문을 만들고, 다시 임시변수를 분할되어질 신호선에 할당하는 것으로 가정한다. 이 가정된 신호선 할당구문을 분할될 신호선의 정보를 이용하여 분할한다.
도 4의 프로세스 구문에 대해 신호선할당구문을 분할한 후의 프로세스 구문이 도 6에 개시된다. 도 4의 신호선할당구문 중 분할이 요구되는 구문은 분할되어질 신호선보다 큰 신호선에 할당하는 구문으로서, 'C <= B&A'가 해당된다. 이 신호선에 대해 임시변수(V1)을 사용하여 변수할당구문(V1 := B&A)으로 만들고, 이 임시변수를 분할되어질 신호선에 할당('C(3 downto 2) <= V1(3 downto 2)', 'C(1 downto 0) <= V1(1 downto 0)')한다.
트리구조 표현과정(S14)
다음, 중복된 신호선 할당 구문을 조사하기 위하여 단계 S14와 같이 VHDL 구문들을 트리 형태의 내부 표현으로 변환한다. VHDL 구문은 신호선 할당, 변수 할당과 같은 할당문과, IF, CASE 와 같은 조건문과, FOR Loop, WHILE Loop와 같은 반복문 등이 있다. 여기서, 반복문은 풀어서 IF, CASE와 같은 조건문과 할당문의 형태로 변환한다. 따라서 중복된 신호선 할당 구문의 조사의 대상은 할당문과 조건문이다. 이들 구문들을 트리 형태로 변환할 때, 프로세스가 최상위 노드가 되고 각 구문들이 자식 노드가 된다. 이때, 할당문은 잎 노드가 되며, 조건문은 하위에 다른 구문을 갖을 수 있으므로 중간 노드가 된다. 조건문인 중간 노드에서 IF 나 CASE가 하나의 노드가 되면, 각 조건이 IF 나 CASE의 자식 노드가 된다. 또한, 이 노드들은 조건이 만족할 때 실행되는 구문들을 자식으로 갖는다. 따라서, 도 3에 표현한 바와 같이 트리 형태의 내부 표현에서 각 노드들은 프로세스 노드, IF/CASE 노드, 조건 노드, 잎 노드로 나누어진다. 이를 자세하게 설명하면 다음과 같다.
프로세스 노드는 최상위 노드로서 프로세스 당 하나의 노드만 생긴다. 프로세스 노드의 자식 노드로는 조건문(IF/CASE) 노드와 잎 노드만이 올 수 있다. 조건문(IF/CASE) 노드는 중간 노드의 형태로 프로세스 노드와 조건 노드의 자식 노드로 표현될 수 있다. 조건문(IF/CASE) 노드의 자식 노드로는 항상 조건 노드만이 온다. 조건 노드는 항상 조건문(IF/CASE) 노드의 자식이며, 조건문(IF/CASE) 노드나 잎 노드가 자식 노드로 온다. 잎 노드는 프로세스 노드나 조건 노드의 자식으로 오며, 아무 것도 자식노드로 취할 수 없는 종말 노드로 신호선 할당문과 변수 할당문이 여기에 해당한다.
도 6에 개시된 프로세스 구문을 트리구조로 표현한 결과가 도 7에 개시된다. 도 7에서, 1번 노드는 프로세스 PA 노드이고, 2번 노드는 조건문(IF) 노드이고, 3번 노드는 조건노드(A="00")이고, 4번 노드는 신호선할당노드(C(3 downto(:) 2) <= A)이고, 5번 노드는 조건노드(else)이고, 6번 노드는 신호선할당노드(C(1 downto(:) 0) <= B)이고, 7번 노드는 변수할당노드(V1 := B&A)이고, 8번 노드는 신호선할당노드(C(3:2)<=V1(3:2))이고, 9번 노드는 신호선할당노드(C(1:0)<=V1(1:0))이다.
상술하였던 프로세스 노드와, 조건문(IF/CASE) 노드, 및 조건 노드는 임의의 신호선이 부분적으로 기술되었는가 아니면, 전체적으로 기술되었는가를 저장할 수 있는 부분이다.
트리 형태의 내부표현이 생성되면 중복 구문을 찾아내기 위하여 프로세스 내의 구문들을 순차적으로 탐색한다. 각 노드들은 깊이 우선 탐색을 통하여 중간 노드 상태에서의 해당 신호선이 부분 기술되었거나, 아니면 전체 기술되었는가에 대한 정보를 보관한다. 각 중간 노드(i)에서 전체 기술집합을 Ti 라 하고, 부분 기술집합을 Pi라 정의한다. 이 집합들의 원소는 (sig, ST)로서, sig 는 신호선이고, ST는 해당하는 구문이다.
임의의 중간 노드에서 해당 신호선 s에 대하여 부분 기술인가 전체 기술인가의 판단은 그 노드의 자식 노드들을 탐색함으로써 얻어진다.
중복된 신호선할당구문 제거과정(S15)
신호선에 대한 부분/전체 기술의 판단과 이를 이용하여 중복 기술된 신호선 할당 구문을 제거하는 과정을 보다 상세하게 설명하면 다음과 같다.
첫째, 임의의 노드가 잎 노드이며 전체 기술인 경우는 부모 노드(프로세스 노드 또는 조건 노드)에서 전체 기술이다. 원소 (sig, ST)를 생성하고, 이미 Ti 나 Pi 내에 신호선 sig에 대한 정보가 있는가 검색한다. 이때, 검색되는 정보의 구문들은 중복된 것이므로 모두 제거하고 새로 생성된 원소를 Ti에 추가한다.
둘째, 임의의 노드가 조건 노드인 경우는 해당 신호선이 모든 형제 노드에서 전체 기술일 때 부모 노드인 조건문(IF/CASE) 노드에서 전체 기술이다. 원소 (sig, ST)를 생성하고, 이미 Ti 나 Pi 내에 신호선 sig에 대한 정보가 있는가를 검색한다. 이때, 검색되는 정보의 구문들은 중복된 것이므로 모두 제거하고 새로 생성된 원소를 Ti에 추가한다.
셋째, 임의의 노드가 조건 노드인 경우는 해당 신호선이 모든 형제 노드에서 전체 기술이 아닐 때 부모 노드인 조건문(IF/CASE) 노드에서 부분 기술이다. 원소 (sig, ST)를 생성하고, 이를 Pi에 추가한다.
넷째, 임의의 노드가 조건문(IF/CASE) 노드인 경우는 해당 신호선이 전체 기술일 때 부모 노드(프로세스 노드 또는 조건 노드)에서 전체 기술이다. 원소 (sig, ST)를 생성하고, 이미 Ti 나 Pi 내에 신호선 sig에 대한 정보가 있는가 검색한다. 이때, 검색되는 정보의 구문들은 중복된 것이므로 모두 제거하고 새로 생성된 원소를 Ti에 추가한다.
다섯째, 임의의 노드가 조건문(IF/CASE) 노드인 경우는 해당 신호선이 부분 기술일 경우, 부모 노드(프로세스 노드 또는 조건 노드)에서 부분 기술이다. 원소 (sig, ST)를 생성하고, 이를 Pi에 추가한다.
여섯째, 상기의 방법을 수행하여 중복된 구문을 제거 후, IF 나 CASE 구문 내에 아무런 구문도 존재하지 않으면 이는 무의미한 구문이 되므로 이를 탐색하여 추가로 제거한다.
도 7의 트리 구조에서 전체기술과 부분기술을 판별하며 중복된 신호선 할당 구문을 제거하는 과정은 후술하기로 한다.
도 4는 내림차순의 신호선의 분할표를 만드는 과정에 해당하는 프로그램 리스트이다. 이때, VHDL 프로그램을 이용한다.
도 4에서 할당되는 신호선은 C(3 downto 0) 이며, 먼저 프로세스 내의 신호선 할당 구문을 탐색하여 신호선 분할을 수행한다. 탐색된 신호선 할당 구문은 S41, S42, S43이다. 구문 S41에 해당하는 신호선은 신호선 C(3 downto 2) 이고, 구문 S42에 해당하는 신호선은 신호선 C(1 downto 0) 이고, 구문 S43에 해당하는 신호선은 신호선 C(3 downto 0) 이다. 이를 이용한 분할표는 도 5와 같다. 신호선 C(3 downto 2)에 의한 분할표 설정은 '3+1=4'와 '2'의 인덱스에 1의 값을 설정한다. 이때, 인덱스 4는 신호선 C의 범위를 벗어나므로, 인덱스 2의 부분에만 값을 설정한다. 이러한 방법으로 C(1 downto 0)는 인덱스 2와 0에, 그리고 C(3 downto 0)는 인덱스 0에 각각 1의 값을 설정하여 도 5와 같은 결과를 얻게 된다.
이 분할표를 이용하여 얻어진 분할될 신호선은 C(3 downto 2) 와 C(1 downto 0)이다. 따라서, 이를 이용하여 도 5의 VHDL 구문의 신호선 할당 구문을 분할하면 도 6과 같다. 도 4에서 S41 과 S42는 더 이상 분할표에 의하여 분할될 수 없으며, 단지 S43 만 분할된다. 이때, 분할방법은 임시 변수 V1을 사용하여 신호선 할당 구문의 오른쪽 값을 임시 변수에 할당하고, 임시변수 V1을 다시 신호선에 할당하는 것으로 가정하여, 후자의 임시변수 V1이 신호선에 할당되는 부분만 분할한다. 따 라서 도 6의 S61 과 같이 변화시킨다.
이를 이용하여 트리 형태의 내부 표현으로 구성한 도면이 도 7에 나타나 있다. 최상위의 노드는 프로세스 노드이다. 구문을 탐색하며, IF 구문을 두 개의 연속인 중간 노드로 변환하고, 내부의 신호선 할당 구문은 종말 노드로 생성한다. 그리고, 일련의 변수 할당 구문과 신호선 할당 구문은 프로세스 아래의 종말노드로 변환시킨다. 도 7에서, 원형의 노드는 다른 노드를 자식으로 가질 수 있는 비종말노드를 나타내며, 사각형의 노드는 종말노드를 나타낸다.
트리 형태의 내부 표현이 이루어지면 분할된 신호선을 가지고 트리 구조를 탐색하며 부분 기술과 전체기술 정보를 기입하게 된다.
도 8에는 분할된 신호선 C(3 downto 2)에 해당하는 처리를 나타낸다. 신호선의 중복기술을 탐색하는 방법은, 도 7과 같이 구성된 트리를 깊이우선탐색방법을 이용하여 탐색하며, 각 종말노드인 신호선할당구문에서 해당 신호선이 전체기술인지 아니면 부분기술인지를 판별한다(S82). 깊이우선탐색방법에 의해 처음에 찾아진 종말노드인 4번 노드에 처리하고자 하는 신호선 C(3 downto(:) 2)이 기술되어 있는지를 판별한다. 4번 노드에 신호선 C(3:2)가 기술되어 있으므로 해당 신호선은 전체 기술이며, 이를 집합 T에 기입한다. 4번 노드의 부모노드인 3번 노드의 경우 자식노드에서 해당 신호선이 전체기술이므로, 3번 노드에서도 전체기술이며, 이를 집합 T에 기입한다.
다음 종말노드인 6번 노드에는 해당 신호선 C(3:2)가 기술되어 있는 지를 판별하는데, 해당 신호선에 대한 기술이 없으므로 전체기술집합이나 부분기술집합은 모두 공집합이 된다. 또한, 6번 노드의 부모 노드인 5번 노드도 공집합이 된다.
한편, 3번 노드와 5번 노드의 부모 노드인 2번 노드의 IF 구문에서는 한 부분의 조건에만 정보가 있으므로 부분 기술이 되어 부분기술 집합 P에 해당 신호선 정보를 기술한다. 한 단계 위인 프로세스 노드에서는 IF 구문에서 해당 신호선이 부분 기술이므로 부분기술 집합 P에 해당 신호선 정보를 저장한다.
같은 방법으로, 7번 노드와 9번 노드에서 해당 신호선 C(3:2)는 전체기술 집합과 부분기술 집합에 모두 포함되지 않는다. 그러나, 8번 노드는 C(3:2)의 신호선할당노드이므로, S81의 처리에서 해당 신호선 C(3:2)을 전체기술 집합에 포함시킨다.
이렇게 트리를 탐색하는 과정에서 중복여부 및 중복된 신호선할당구문에 대한 삭제가 이루어진다. 즉, 해당 신호선이 전체기술 집합에 포함되고, 해당 노드 이전에 기술된 노드의 부분기술 또는 전체기술 집합에 포함된 적이 있는 경우, 서로 중복된 신호선할당구문으로 판단한다. 이 경우 이전에 기술된 노드가 효력이 상실되므로 이전에 기술된 노드(4번 노드)를 제거한다. 제거과정을 살펴보면, 해당 신호선이 전체기술집합에 포함되거나 부분기술 집합에 포함되는 노드들의 자식노드들을 탐색하여 신호선할당노드를 찾아 제거한다. 도 8에서, 8번 노드에서 신호선 C(3:2)이 전체기술이므로 이전 노드 가운에 해당 신호선 C(3:2)이 포함된 2번노드와 3번 노드를 경유하여 4번 노드를 찾아 제거한다.
도 9는 신호선 C(1 downto(:) 0)에 대한 처리과정이다. 앞서 신호선 C(3:2)에 대한 처리과정과 마찬가지로 트리 탐색과정을 통해 신호선 C(1:0)가 중복됨을 인지하고, 6번노드를 제거한다.
모든 신호선에 대하여 중복된 신호선할당구문을 제거한 후, 조건문(IF 또는 CASE) 노드를 탐색한다. 조건문 노드(2번 노드)의 자식노드인 조건노드(3번 노드, 5번 노드)의 자식노드(4번 노드, 6번 노드)이 없으면 해당 조건 노드(3번 노드, 5번 노드)는 제거된다. 또한, 조건문 노드의 모든 조건 노드가 제거되면 그 부모노드인 조건문 노드(2번 노드)도 제거된다. 따라서, 최종적으로는 2번 노드 내지 6번 노드가 모두 제거되며 1번 노드와 7번 노드 내지 9번 노드만 남게 된다.
이와 같이 불필요한 모든 노드를 제거한 VHDL 구문은 도 10의 프로그램 리스트에 나타난 바와 같이 중복된 신호선할당구문이 제거된다.
위에서 양호한 실시예에 근거하여 이 발명을 설명하였지만, 이러한 실시예는 이 발명을 제한하려는 것이 아니라 예시하려는 것이다. 이 발명이 속하는 분야의 숙련자에게는 이 발명의 기술사상을 벗어남이 없이 위 실시예에 대한 다양한 변화나 변경 또는 조절이 가능함이 자명할 것이다. 그러므로, 이 발명의 보호범위는 첨부된 청구범위에 의해서만 한정될 것이며, 위와 같은 변화예나 변경예 또는 조절예를 모두 포함하는 것으로 해석되어야 할 것이다.
이상과 같이 본 발명에 의하면, 하드웨어 기술언어를 이용하여 레지스터 전송 수준으로 표현한 설계 사양상의 중복 기술된 신호선 할당 구문을 제거함으로써, 실제적으로 구현되는 불필요한 하드웨어를 미리 제거할 수 있기 때문에 보다 최적의 설계를 산출할 수 있는 효과가 있다.

Claims (5)

  1. 처리하지 않은 VHDL 구문의 프로세스 중 하나를 선택하는 제 1 단계;
    상기 프로세스 내의 신호선할당구문들을 탐색하여 전체 신호선을 다수의 부분 신호선으로 분할하는 제 2 단계;
    상기 VHDL 구문을 구성하는 신호선할당구문을 상기 다수의 부분 신호선으로 이루어지도록 분할하는 제 3 단계;
    상기 제 3 단계에서 신호선할당구문이 분할된 VHDL 구문을 이루는 각 구문들에 대응하는 노드들로 구성된 트리 구조를 생성하는 제 4 단계;
    상기 각각의 부분 신호선에 대해 상기 트리 구조의 각 노드를 탐색하여, 상기 노드에서 상기 부분 신호선이 전체기술되는지, 부분기술되는지 혹은 기술되지 않은지를 탐색하는 제 5 단계; 및
    상기 제 5 단계의 탐색 결과 상기 부분 신호선이 2개 이상의 노드에 중복 기술되어 있으면 중복 기술된 노드 중 부분기술된 노드 또는 깊이가 깊은 노드를 제거하여 중복된 신호선할당구문을 제거하는 제 6 단계를 포함하는 것을 특징으로 하는 VHDL에서 중복 기술된 신호선 할당 구문 제거 방법.
  2. 제 1 항에 있어서,
    상기 제 2 단계는,
    상기 프로세스 내의 신호선할당구문들을 이용하여, 인덱스와 분할되어질 정보를 포함한 1차원 배열의 분할표를 생성하는 분할표 생성 단계와;
    상기 분할표를 이용하여 전체 신호선을 다수의 부분 신호선으로 분할하는 신호선분할단계를 포함하는 것을 특징으로 하는 VHDL에서 중복 기술된 신호선 할당 구문 제거 방법.
  3. 제 2 항에 있어서,
    상기 분할표 생성 단계는,
    내림차순의 신호선 A(K downto L)의 신호선할당구문에 대해, 분할표의 Pa[K+1]과 Pa[L]에 분할되어질 정보 1을 설정하되, K+1이 신호선 A의 범위를 벗어나면 상기 Pa[K+1]에는 분할되어질 정보 1을 설정하지 않고,
    오름차순의 신호선 A(L to K)의 신호선할당구문에 대해, 분할표의 Pa[L-1]과 Pa[K]에 분할되어질 정보 1을 설정하되, L-1이 신호선 A의 범위를 벗어나면 상기 Pa[L-1]에는 분할되어질 정보 1을 설정하지 않는 것을 특징으로 하는 VHDL에서 중복 기술된 신호선 할당 구문 제거 방법.
  4. 제 1 항에 있어서,
    상기 제 4 단계는,
    프로세스 노드를 최상위 노드로 설정하는 단계;
    프로세스 구문을 분석하여 상기 프로세스 노드의 하위에 조건 구문을 중간 노드로 표현하는 단계;
    상기 프로세스 노드 및 중간 노드의 하위에 신호선 할당 구문과 변수 할당 구문을 종말 노드로 표현하는 단계를 포함하는 것을 특징으로 하는 VHDL에서 중복 기술된 신호선 할당 구문 제거 방법.
  5. 삭제
KR1019990062458A 1999-12-27 1999-12-27 브이에이치디엘에서 중복 기술된 신호선 할당 구문 제거 방법 KR100627712B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019990062458A KR100627712B1 (ko) 1999-12-27 1999-12-27 브이에이치디엘에서 중복 기술된 신호선 할당 구문 제거 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990062458A KR100627712B1 (ko) 1999-12-27 1999-12-27 브이에이치디엘에서 중복 기술된 신호선 할당 구문 제거 방법

Publications (2)

Publication Number Publication Date
KR20010058242A KR20010058242A (ko) 2001-07-05
KR100627712B1 true KR100627712B1 (ko) 2006-09-27

Family

ID=19630003

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990062458A KR100627712B1 (ko) 1999-12-27 1999-12-27 브이에이치디엘에서 중복 기술된 신호선 할당 구문 제거 방법

Country Status (1)

Country Link
KR (1) KR100627712B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09311882A (ja) * 1996-05-23 1997-12-02 Mitsubishi Electric Corp 論理回路検証支援装置
JPH117455A (ja) * 1997-06-18 1999-01-12 Nec Corp ハードウェア記述言語編集装置及びハードウェア記述言語編集方法並びにハードウェア記述言語編集プログラムを記憶した記憶媒体
KR20000017147A (ko) * 1998-08-18 2000-03-25 포만 제프리 엘 응용 주문형 집적 회로 설계 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09311882A (ja) * 1996-05-23 1997-12-02 Mitsubishi Electric Corp 論理回路検証支援装置
JPH117455A (ja) * 1997-06-18 1999-01-12 Nec Corp ハードウェア記述言語編集装置及びハードウェア記述言語編集方法並びにハードウェア記述言語編集プログラムを記憶した記憶媒体
KR20000017147A (ko) * 1998-08-18 2000-03-25 포만 제프리 엘 응용 주문형 집적 회로 설계 방법

Also Published As

Publication number Publication date
KR20010058242A (ko) 2001-07-05

Similar Documents

Publication Publication Date Title
JP5376163B2 (ja) 文書管理・検索システムおよび文書の管理・検索方法
Muscholl et al. Deciding properties for message sequence charts
DeRemer Practical translators for LR (k) languages.
Di Battista et al. Hierarchies and planarity theory
JPH1063707A (ja) 論理回路検証装置および論理回路検証方法
JPWO2005119516A1 (ja) 配列の生成方法、情報処理装置、及び、プログラム
WO2008107259A1 (en) Method and system for indexing and serializing tree structured data
Zwicky et al. The MITRE syntactic analysis procedure for transformational grammars
Chazelle A faster deterministic algorithm for minimum spanning trees
KR100627712B1 (ko) 브이에이치디엘에서 중복 기술된 신호선 할당 구문 제거 방법
JP3612914B2 (ja) 構造化文書検索装置及び構造化文書検索方法
Morihata et al. A practical tree contraction algorithm for parallel skeletons on trees of unbounded degree
Lin et al. The reliability analysis of distributed computing systems with imperfect nodes
JP2004534981A (ja) データベース・システムでデータを編成し、問合せを処理する方法、およびそのような方法を実施するためのデータベース・システムおよびソフトウェア製品
KR102146625B1 (ko) 오토마타 기반 증분적 중위 확률 계산 장치 및 방법
CN113590650A (zh) 基于特征表达式的结构化查询语句甄别方法及装置
JP2020135530A (ja) データ管理装置、データ検索方法及びプログラム
Liang et al. Fully dynamic maintenance of k-connectivity in parallel
Clarke et al. Escher-a geometrical layout system for recursively defined circuits
KR20050065015A (ko) 프로그램의 복제 여부를 검사하는 방법 및 시스템
Cyre et al. Generating validation feedback for automatic interpretation of informal requirements
JP2007004503A (ja) プログラム変換方式およびプログラム変換方法およびコード変換プログラム
JP2727026B2 (ja) プログラム構造自動設計装置
Johnson et al. Optimal Algorithms for the Vertex Updating Problem of a Minimum Spanning Tree.
Waterman Pas-ii reference manual

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
FPAY Annual fee payment

Payment date: 20100901

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee