상기한 문제점을 해결하기 위한 본 발명은, 공정조건을 고려하지 않는 일반화된 레지스터 전송레벨 코드를 생성하는 단계; 상기 일반화된 레지스터 전송레벨의 코드를 조합 논리회로와 순차 논리회로의 레지스터 전송레벨 코드로 분리하는 단계; 상기 분리된 조합 논리 회로와 순차 논리 회로의 레지스터 전송레벨 코드를 각각 하나의 등가 레지스터 전송레벨 코드로 변환하는 단계; 및 상기 등가의 레지스터 전송레벨의 코드로 변환된 순차 논리회로와 조합 논리회로의 등가 레지스터 전송레벨 코드를 하나로 단일화 하는 단계를 포함하여 이루어진다.
또한, 본 발명의 다른 레지스터 전송레벨 코드의 생성방법은, 삼상 버퍼를 포함하는 논리회로의 레지스터 전송레벨 코드 생성 방법에 있어서, 상기 논리회로에 대하여 공정조건을 고려하지 않는, 일반화된 레지스터 전송레벨 코드를 생성하는 단계; 상기 일반화된 레지스터 전송레벨 코드를 조합 논리회로와 순차 논리회로로 분리하되, 상기 삼상 버퍼를 순차논리 회로에 포함시키는 단계; 상기 분리된 조합 논리회로와 순차 논리회로의 레지스터 전송레벨 코드를 각각 하나의 등가 레지스터 전송레벨 코드로 변환하는 단계; 및 상기 등가의 레지스터 전송레벨 코드로 변환된 순차 논리회로와 조합 논리회로의 등가 레지스터 전송레벨 코드를 하나로 단일화 하는 단계를 포함하여 이루어진다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부된 도면을 참조하여 설명하기로 한다.
도 2는 본 발명을 설명하기 위한 로직 모델을 도시한 것으로, 도면 부호 C/B는 조합 회로 블럭(Combinatinal circuit block)을 나타내고 도면 부호 S/B는 순차 논리 회로 블럭(Sequential circuit block)을 각각 나타낸다.
도 2에 도시된 로직 모델과 같이, 전체 회로내의 모든 셀들은 조합 회로 블럭과 순차 회로 블럭으로 구분하여 간략화 할 수 있다.
도 2의 로직 모델의 입출력 관계를 살펴보면, 조합 회로 블럭(C/B)의 입력신호가 될 수 있는것은 기준모듈(refrence module, 도면에는 도시되지 않음)의 출력신호(Rin2), 순차 회로 블럭(S/B)의 출력신호가 가능하며, 출력 신호가 될 수 있는것은 순차 회로블럭(S/B)의 입력신호와 기준모듈의 입력신호(Rout2)가 가능하다.
한편, 순차 회로블럭(S/B)의 입력신호가 될 수 있는것은 기준모듈의 출력신호(Rin1)와 조합 회로블럭(C/S)의 출력신호, 그리고 순차 회로블럭(S/B)의 출력신호가 가능하며, 순차 회로블럭(S/B)의 출력신호가 될 수 있는것은 조합 회로블럭(C/S)의 입력신호와 순차회로 블럭(S/B)의 입력신호, 그리고 기준모듈의 입력신호(Rout1)가 가능하다.
상기한 논리 모델에 근거하여 본 발명을 상세히 설명하고자 한다.
도 3은 본 발명에 따른 레지스터 전송 레벨의 코드 생성 방법을 설명하기 위한 흐름도를 도시한 것이다.
도 3을 참조하면, 공정조건을 고려하지 않는 일반화된 레지스터 전송레벨 코드를 생성하는 단계(100)와, 상기 일반화된 레지스터 전송레벨의 코드를 조합 논리회로와 순차 논리회로의 레지스터 전송레벨 코드로 분리하는 단계(200)와, 상기 분리된 조합 논리 회로와 순차 논리 회로의 레지스터 전송레벨 코드를 각각 하나의 등가 레지스터 전송레벨 코드로 변환하는 단계(300) 및 상기 등가의 레지스터 전송레벨의 코드로 변환된 순차 논리회로와 조합 논리회로의 등가 레지스터 전송레벨 코드를 하나로 단일화 하는 단계(400)를 포함하여 이루어진다.
그리고, 상기 분리된 조합 논리 회로와 순차 논리 회로를 각각 하나의 등가 로직으로 변환하는 단계(300)는, 상기 일반화된 조합 논리회로와 순차 논리회로를 출력과 입력과의 관계에 따른 등가의 산술식으로 변환하는 단계(310)와, 상기 변환된 등가의 산술식을 연속 대입하여 각각 하나의 산술식으로 변환하는 단계(320) 및 상기 등가의 산술식으로 변환된 순차 논리회로의 레지스터 전송레벨 코드를 인간의 문장 형태에 가까운 절차 대입문으로 변환하는 단계(330)를 포함하여 이루어진다.
상기 본 발명의 RTL 코드의 생성 방법을 도 4a 및 도 4g를 참조하여 상세히 설명하면 다음과 같다.
도 4a 및 4g는 본 발명에 따른 RTL 코드 생성 방법을 설명하기 위한 일반적인 회로도와 그에 따른 RTL 코드를 도시한 것이며, 상기 도면 중 도 4g는 도 1에 도시된 회로를 통상적인 레지스터 전송 레벨로 표현한 것을 나타낸다.
여기서, 상기 도 4a 및 도 4g에 사용된 도면 부호중 도 1에 도시된 종래기술과 동일한 도면 부호는 그대로 사용하기로 한다.
종래에는, 다음과 같이 조합 논리회로(10, 20, 30)를 RTL로 표현하였다.
논리곱 게이트(10)는 "AND02D1 and2_0(.A1(A), .A2(B), .Z(E));",
논리곱 게이트(20)는 "AND02D2 and2_1(.A1(C), .A2(D), .Z(F));",
논리합 게이트(30)는 "OR02D1 or2_0 (.A1(E), A2(F), ZN(O1_T);",
D-플립플롭(40)은 "DFF dff_0(.clk(CLK1), .D(D), .Q(D_L1));",
삼상 버퍼(50)는 "TRB1 trb1_1(.OE(O1_OE), .I(O1_T), .O(O1));"로 표현된다.
여기서, 상기 논리곱 게이트(10)를 표현한 RTL 코드에서 "AND02D1"을 모듈(module)이라 하고 "and2_0"을 인스턴스(instance)라 하며, 이를 간단히 설명하면 다음과 같다.
상기 모듈은 논리기능과 입력단자의 갯수 및 구동능력을 나타낸다.
예컨데, 상기 논리곱 게이트(10)의 모듈에서 AND는 논리곱을 나타내고, 02는 입력단자가 2개임을 나타내고, D1은 논리곱 게이트의 공정특성(예컨데 구동능력)에 따라 부여된 번호이다.
또한 상기 인스턴스는 동일한 모듈이 다수개가 사용될시, 각각의 모듈을 구분하기 위한 것이다.
상기한 논리회로(10 ∼ 50)는 종래의 VLSI 툴에 의해 기술된 것으로, VLSI 툴과 그 툴의 버전에 따라 조금씩 표현 방법이 다를 수 있다.
상기 도 4a에 도시된 통상적인 RTL 코드와 대비하여 본 발명에 따른 코드 생성방법을 도 4b 내지 도 4g를 참조하여 설명하면 다음과 같다.
먼저, 도 4b에 도시된 바와 같이, 모든 논리회로(10, 20, 30, 40, 50)의 입력 및 출력 신호를 일반화 시킨다.
여기서, D-플립플롭(40)과 삼상버퍼(50)는 종래와 동일하게 기술되어 있되, 논리곱 게이트(10, 20)와 논리합 게이트(30)는 공정조건을 포함하지 않고 일반화 되었음을 주목하여야 한다.
즉, 논리곱 게이트(10)는 "AND02 and2_0(.I1(A), .I2(B), .O1(E));"로 기술하고,
논리곱 게이트(20)는 "AND02 and2_1(.I1(C), .I2(D), .O1(F));"로 기술하며,
논리합 게이트(30)는 "OR02 or2_0(.I1(C), .I2(D), .O1(F));"로 기술한다.
논리곱 게이트(10)가 종래에는 "AND02D1"로 기술되어 두개의 입력단자를 갖는 논리곱 게이트중 구동능력, 전류 용량, 메탈라인의 폭과 같은 특정한 특성에 따라 각기 다른 기호(D1)를 갖는데 반하여 본 발명에서는 상기 특성을 나타내는 기호(D1)를 생략하고 단지 2개의 입력단자를 갖는 논리곱 게이트(AND02)로 표현한다.
또한, 입력단자를 ".I1 및 .I2", 출력단자를 ".O1"와 같이 논리곱 게이트와 논리합 게이트에서 일치시켜 표현하도록 한다.
이어서, 도 4c에 도시된 바와 같이, 조합 논리회로(10, 20, 30)와 순차 논리회로(40, 50)를 각각 구별하여, 순차 논리회로와 조합 논리회로를 각각 구분하여 모은다.
현실적으로, 상당수의 VLSI 소자가 내부에 다수개의 삼상 버퍼를 내장하고 있으며, 지금까지는 순차 논리회로나 조합 논리회로에 포함되어 있지 않았으나, 본 발명에서는 삼상 버퍼를 순차 논리회로에 포함시킴으로서 VLSI를 구성하는 모든 요소에 대하여 순차 논리회로나 조합 논리회로중 하나로 매핑할 수 있도록 한다.
이어서, 도 4d에 도시된 바와 같이, 각각의 조합 논리회로(10, 20, 30)를 출력과 입력과의 관계에 따른 등가의 산술식으로 변환하도록 한다.
상기 일반화된 논리곱 게이트(10)는, "assign E= A & B;"로 기술하고,
상기 일반화된 논리곱 게이트(20)는, "assign F= C & D_L1;"로 기술하고,
상기 일반화된 논리합 게이트(30)는, "assign O1_T= E | F;"로 기술한다.
즉, 상기 일반화된 논리곱 게이트(10)는 A와 B를 입력으로 하여 논리곱된 출력(E)을 생성하고,
상기 일반화된 논리곱 게이트(20)는 C와 D_1을 입력으로 하여 논리곱된 출력(F)을 생성하고,
상기 일반화된 논리합 게이트(30)는 E와 F를 입력으로 하여 논리합된 출력(O1_T)을 생성함을 나타낸다.
즉, 상기한 바와 같이, 각각의 조합 논리회로(10, 20, 30)는 입력과 출력에 따른 산술식으로 표현된다.
이어서 상기 등가의 산술식으로 표현된 상기 논리조합 회로와 순차논리 회로의 RTL 코드를 각각 하나의 산술식으로 표현한다.
도 4e 및 도 4f가 이에 해당하며, 이는 상기 도 3에 도시된 조합 논리회로와 순차 논리회로를 출력과 입력과의 관계에 따른 등가의 산술식으로 변환하는 단계(310) 내지 상기 등가의 산술식으로 변환된 조합 논리회로와 순차 논리회로의 레지스터 전송레벨 코드를 인간의 문장 형태에 가까운 절차 대입문으로 변환하는단계(330)에 해당된다.
도 4e에 도시된 바와 같이, 각각의 출력(E, F, O1_T)을 조합 논리회로의 최종 출력(O1_T)과 입력(A, B, C, D_L1) 과의 관계만으로 될때까지 연속 대입하여 하나의 등가 산술식으로 바꾼다.
즉, 상기 논리곱 게이트(10)의 출력이 "A & B"로 표현되고 상기 논리곱 게이트(20)의 출력이 "C & D_1"로 표현되며, 상기 논리합 게이트(30)는 상기 논리곱 게이트(10)와 논리곱 게이트(20)의 출력을 논리합 하므로, 상기 논리합 게이트(30)의 출력(O1_T)은 "O1_T = (A & B) | (C & D_L1)"과 같이 나타낼 수 있다.
따라서, 상기 도 4a에서와 같이 조합 논리회로(10, 20, 30)를 각각 레지시터 전송 레벨로 표현하던 것을 하나의 문장으로 통합함으로서 레지스터 전송 레벨로 표현된 코드가 파악하기 용이한, 즉 인식성이 용이한 레지스터 전송 레벨의 코드가 된다.
이어서, 도 4f에 도시된 바와 같이, 순차 논리회로(40, 50)도 인식성을 높이기 위하여 절차 대입문(procedural assignment statement)으로 변환한다.
상기 절차 대입문으로 변환하는 것은 인간의 문장 표현에 더 가까운 표현법으로 변환한다는 것을 의미한다.
예컨데, 상기 D-플립플롭(40)은 종래에 "DFF dff_0(.clk(CLK1), .D(D), .Q(D_L1));"으로 표현되었으나, 본 발명에서는 "always(posedge CLK1) if(CLK1)D_L1 <=D;" 와 같이 표현하도록 한다.
상기 문장은, CLK1이 posedge(positive edge)일때만 "D"라 명명된 입력을"D_L1"이라는 이름으로 출력함을 의미한다.
마지막으로, 도 4g에 도시된 바와 같이, 각각 하나의 산술식으로 표현된 상기 조합 논리회로식과 순차 논리회로식을 하나로 통합하여 저장한다.
상술한 바와 같이, 본 발명의 RTL 코드(도 4g)는 어떠한 조건(예컨데 구동능력, 전류용량, 메탈라인의 폭 등등)도 포함하고 있지 않으며, 도 4a에 도시된 종래의 RTL 코드에 비하여 인식성이 향상 되었음을 볼 수 있다.
즉, 본 발명의 RTL 코드는 공정조건에 영향을 거의 받지 않도록 기술되며, 특정한 공정조건이 필요한 경우 상기 하나로 통합된 RTL 코드에 공정 특성을 부여하여 사용하도록 한다.
따라서, 종래에 특정한 공정조건에 최적화된 게이트 레벨 또는 회로 레벨로 기술된 코어 로직이 공정조건 변화시에 많은 시간을 낭비하였으나 본 발명의 RTL 코드 생성법은 이러한 공정변화에 영향을 적게 받는다.
상기한 RTL 코드의 생성방법은 베릴로그의 메뉴얼(Verilog/XL refrence manual, Cadence design system)에 기재된 형식을 따른 것이나, 본 발명을 설명하기 위한 기술 형식에 불과한 것으로 본 발명은 이 형식으로 제한 되지는 않으며, 하드웨어를 RTL 코드의 형식으로 기술하는 다른 VLSI툴에서도 적용 가능하다.
이상에서 설명한 바와 같이 본 발명은 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명이 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능함이 본 발명이 속하는 기술분야에서 통상의 지식을 가진자에게 있어 명백할 것이다.