KR19990079355A - 테스트벤치 발생기 및 이를 이용한 시뮬레이션방법 - Google Patents

테스트벤치 발생기 및 이를 이용한 시뮬레이션방법 Download PDF

Info

Publication number
KR19990079355A
KR19990079355A KR1019980011900A KR19980011900A KR19990079355A KR 19990079355 A KR19990079355 A KR 19990079355A KR 1019980011900 A KR1019980011900 A KR 1019980011900A KR 19980011900 A KR19980011900 A KR 19980011900A KR 19990079355 A KR19990079355 A KR 19990079355A
Authority
KR
South Korea
Prior art keywords
submodule
files
simulation
test bench
file
Prior art date
Application number
KR1019980011900A
Other languages
English (en)
Inventor
한성철
Original Assignee
윤종용
삼성전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 윤종용, 삼성전자 주식회사 filed Critical 윤종용
Priority to KR1019980011900A priority Critical patent/KR19990079355A/ko
Publication of KR19990079355A publication Critical patent/KR19990079355A/ko

Links

Landscapes

  • Tests Of Electronic Circuits (AREA)

Abstract

본 발명은 전자회로 설계를 위한 HDL(Hardware Description Language)에 관한 것으로서, 구체적으로는 HDL을 이용한 전자 회로 설계시 서브모듈(submodule)의 시뮬레이션(simulation)을 위한 테스트벤치(testbench)를 자동으로 생성할 수 있는 테스트벤치 발생기(testbench generator)와 이를 이용하여 서브모듈을 시뮬레이션하는 방법에 관한 것으로, 테스트벤치 발생기(10)는 해당되는 서브모듈의 베릴로그 파일(100)을 취하여 네 개의 테스트벤치 파일들을 자동으로 생성한다. 이들 파일들 중 소정의 두 개의 파일들은 탑모듈 시뮬레이션(20)에서 사용되어져 서브모듈 시뮬레이션(30)에서 사용될 두 개의 파일들을 생성하고, 이들과 상기 테스트벤치 파일들중 나머지 두 개의 파일들은 서브모듈 시뮬레이션(30)에 사용되어져 최종적인 결과 파일이 생성된다.

Description

테스트벤치 발생기 및 이를 이용한 시뮬레이션 방법(TESTBENCH GENERATOR AND SIMULATION METHOD)
본 발명은 전자회로 설계를 위한 HDL(Hardware Description Language)에 관한 것으로서, 구체적으로는 HDL을 이용한 전자 회로 설계시 서브모듈(submodule)의 시뮬레이션(simulation)을 위한 테스트벤치(testbench)를 자동으로 생성할 수 있는 테스트벤치 발생기(testbench generator)와 이를 이용하여 서브모듈을 시뮬레이션하는 방법에 관한 것이다.
HDL(Hardware Description Language)은 ASIC(application specific integrated circuit), VLSI(very large scale integration) 회로 등의 전자 회로 설계시에 사용되는 언어이다. HDL을 이용한 회로의 설계는 사용되는 각 부품들의 상호 연결 관계를 일정한 문법에 의하여 기술하고, 기술된 결과는 해당 시뮬레이터를 통하여 시뮬레이션이 가능하다. 이를 통해, 설계된 회로의 특성을 검증하고, 최종적으로는 해당되는 회로의 패턴까지 완성할 수 있게 된다. 이러한 HDL 중 한 예로서, 베릴로그 HDL(Verilog HDL)이 있다. 베릴로그 HDL을 이용하여 설계된 로직(logic)은 베릴로그 시뮬레이터(simulator)로 시뮬레이션(simulation)을 하게 된다.
일반적으로, 하드웨어의 개발시에 회로 설계자는 여러 가지로 하드웨어의 사양을 변경시키면서 회로를 설계하게 된다. 베릴로그 HDL을 사용하여 하드웨어를 설계할 때에 그 구조는 다단계의 계층적인 구조를 갖는 여러 가지 모듈로 구성된다. 그런데 소규모의 회로 수정 이후에도 전체 회로를 대상으로하여 다시 시뮬레이션을 하게 되면, 시뮬레이션에 따른 TAT(Turn-Around Time)가 너무 길어 시뮬레이션의 효율을 크게 저하시키게 된다.
그러므로 시뮬레이션의 대상이 되는 하드웨어가 여러 개의 서브모듈로 구성될 때 정상 동작하는 서브모듈은 시뮬레이션의 대상에서 제외시키고 현재 수정을 가하고자 하는 서브모듈만을 대상으로 시물레이션을 수행할 필요가 있다. 이를 위해서 종래에는 수작업으로 서브 모듈을 위한 테스트벤치(testbench)를 별도로 작성해야 했다. 이 방식의 문제점은 별도로 작성되는 테스트벤치에서 가해지는 입력(stimulus)은 다른 모듈과의 상호 관계에서 만들어지는 것이므로 정확하게 묘사하기에 어려운 문제점이 있다.
따라서, 본 발명의 목적은 상술한 제반 문제점을 해결하기 위해 제안된 것으로서, HDL을 이용한 전자 회로 설계시 서브모듈의 시뮬레이션을 위한 테스트벤치를 자동으로 생성할 수 있는 테스트벤치 발생기를 제공하는데 있다.
본 발명의 다른 목적에 의하면 HDL을 이용한 전자 회로 설계시 서브모듈의 시뮬레이션을 위한 테스트벤치를 자동으로 생성할 수 있는 테스트벤치 발생기를 이용하여 서브모듈을 시뮬레이션하는 방법을 제공하는데 있다.
도 1은 본 발명의 실시예에 따른 테스트벤치 발생기를 이용한 시뮬레이션 방법을 보여주는 도면; 그리고
도 2는 본 발명의 실시예에 따른 테스트벤치 발생기의 동작의 흐름을 나타내는 플로우챠트이다.
상술한 바와 같은 본 발명의 목적을 달성하기 위한 본 발명의 특징에 의하면, HDL로 설계되며, 다단계의 모듈로 구성된 전자 회로의 시뮬레이션 방법은: 특정 서브모듈의 시뮬레이션을 위한 삽입 파일 및 테스트벤치 파일들을 생성하는 테스트벤치 발생기를 이용하여 해당되는 복수개의 파일들을 생성하는 단계와; 생성된 복수개의 삽입 파일들 중에서 상기 서브모듈의 입력과 출력에 대한 각각의 파일들을 이용하여 탑모듈 시뮬레이션을 수행하는 단계와; 상기 탑모듈 시뮬레이션 후에 생성된 서브모듈 시뮬레이션을 위한 파일들과, 상기 테스트벤치 파일중 특정 테스트벤치 파일을 이용하여 해당되는 서브모듈 시뮬레이션을 수행하는 단계를 포함한다.
이 실시예에 있어서, 상기 테스트벤치 발생기는: 상기 서브모듈의 HDL파일로부터 해당되는 서브모듈의 이름과, 부가적인 정보들을 포함하는 상기 서브모듈의 정보를 분석하고; 복수개의 상기 테스트벤치 파일들의 저장을 위해 각각의 파일들을 오픈하고 해당되는 헤더 정보를 기록하며; 구비된 복수개의 노드를 순차적으로 분석하여 입력, 출력, 입출력 노드 중 어느 하나인가를 판단하고, 이에 따라 상기 테스트벤치 파일들 중에 대응된 파일에 해당되는 정보를 입력한다.
이상과 같은 본 발명에 의하면, 테스트벤치 발생기는 해당되는 서브모듈의 베릴로그 파일을 취하여 상기 서브모듈의 시뮬레이션을 위한 네 개의 파일들을 생성하고, 이들 파일들 중 해당되는 파일들은 각각 탑모듈 시뮬레이션과, 서브모듈 시뮬레이션에 사용되어 진다. 그러므로 특정 서브모듈의 시뮬레이션을 자동적으로 실행할 수 있다.
(실시예)
이하 본 발명에 따른 실시예를 첨부된 도면을 참조하여 상세히 설명한다.
도 1은 본 발명의 실시예에 따른 테스트벤치 발생기를 이용한 시뮬레이션 방법을 보여주는 도면이고, 그리고 도 2는 본 발명의 실시예에 따른 테스트벤치 발생기의 동작의 흐름을 나타내는 플로우챠트이다. 도 1에서 '*'로 표시된 블록은 자동 생성 파일들을 표시하고, 점선으로 표시되는 라인들은 자동으로 생성되는 과정과 자동으로 삽입(include)되는 것을 보여주고 있다.
도 1을 참조하여, 본 발명의 실시예에 따른 테스트벤치 발생기(10)는 C언어(C language)로 작성 가능한 프로그램이다. 상기 테스트벤치 발생기(10)는 실행시에 1개의 인수(argument)를 취하게 되는데, 이는 시뮬레이션 대상이 되는 특정 서브모듈의 베릴로그 파일(100)이다. 상기 베릴로그 파일(100)에는 단 1개의 서브모듈(submodule)만을 포함하고 있다. 이 서브모듈의 베릴로그 파일(100)에는 입력, 출력 및 입출력 포트에 대한 정보를 포함하고 있으며, 상기 테스트벤치 발생기(10)에서는 상기 베릴로그 파일(100)로부터 입력, 출력 및 입출력 포트에 대한 정보를 취하여 3개의 삽입 파일(include file)들과, 1개의 테스트 벤치 파일(testbench file)을 생성한다. 이 4개의 파일들은 [module_name].in.inc(210), [module_name].out.inc(220), [module_name]_sub.out.inc(230) 삽입 파일들과 그리고 [module_name]_sub_tb.v(240) 테스트 벤치 파일이다. 단, 여기서 [module_name]은 인수로 주어지는 상기 베릴로그 파일(100)의 서브모듈의 이름이다(이하, [module_name]은 '∼'로 표시한다).
상기 ∼.in.inc(210)은 상기 서브모듈의 입력 포트에 생기는 변화를 감지하기 위한 코드를 포함하고 있는 파일이고, 상기 ∼.out.inc(220)은 상기 서브모듈의 출력포트에 생기는 변화를 기록하기 위한 코드를 포함하는 파일이다. 상기 ∼_sub.out.inc(230)은 후에 서브모듈 시뮬레이션(30)시 사용되는 파일이고, 상기 ∼_sub_tb.v(240)은 서브모듈만을 위한 테스트벤치이다.
상기와 같은 4개의 파일들 중에서 상기 ∼.in.inc(210)과, ∼.out.inc(220) 두 개의 파일들은 탑-모듈 시물레이션(Top-module Simulation)(20)시에 사용된다. 즉, 베릴로그 HDL로 설계된 하드웨어 전체를 시뮬레이션하기 위한 테스트벤치의 마지막 부분에 삽입 명령을 이용하여 상기 ∼.in.inc(210)과, ∼.out.inc(220) 두 개의 파일들과, 별도의 탑-모듈용 테스트벤치인 ∼_sub_tb.v(300) 파일을 삽입하여 탑-모듈 시뮬레이션(20)을 수행하게 된다. 이 결과 다음과 같은 세 개의 파일들: [module_name].sti(410), [module_name].clk(420) 그리고 [module_name].prb(510)이 생성된다.
상기 ∼.sti(410) 파일에는 서브모듈의 입력 및 입출력 포트에 가해지는 입력이 저장된다. 상기 ∼.clk(420)에는 클럭(clock)에 대한 정의가 포함되어 있다. 클럭과 같은 규칙성을 갖는 신호를 일반 입력과 구분하여 처리함으로써 상기 ∼.sti(410) 파일의 크기를 크게 줄일 수 있게 된다. 상기 ∼.prb(510) 파일은 서브모듈의 출력포트를 일정한 간격으로 샘플링(sampling)한 것으로, 후에 서브모듈 시뮬레이션 후 생성되는 ∼_sub.prb(520)과 비교할 수 있는 형식이다.
상기 테스트벤치 발생기(10)로부터 생성된 삽입 파일들 ∼_sub.out.inc(230)과, ∼_sub.tb.v(240) 그리고 상기 탑모듈 시뮬레이션(20)에서 생성된 두 개의 파일들 ∼.sti(410)와, ∼.clk(420)은 서브모듈 시뮬레이션(30)에서 사용되어진다. 상기와 같은 파일들을 이용하여 서브모듈 시뮬레이션(30)이 완료되면 최종적으로 ∼_sub.prb(520)는 파일이 생성된다. 이는 해당되는 서브모듈의 시물레이션 결과이다.
한편, 서브모듈을 위한 테스트벤치의 작성을 완전히 자동화하기 위해서는 상기 서브모듈의 베릴로그 파일(100)에 포함되는 기본적인 정보 외에 여러 가지 부가정보가 전달되어야 한다. 이를 위해 매번 테스트벤치 생성기(10) 수행시에 사용자로부터 부가적인 정보의 입력을 요구한다면 매우 불편하게 된다. 그러므로 컴파일러 다이렉티브(Compiler Directive)를 사용하여 부가정보를 상기 서브모듈의 베릴로그 파일(100)에 삽입시킨다. 삽입되는 부가정보의 일 예는 다음과 같다.
//$OBSERVE sigA
//$CLOCK sigB
//$HIERARCHY U1.U2.U4
//$PERIOD 1000
//$STROBE 880
//$SIMULATION_TIME 324000
//$BIDIR_CONTROL_OE sigA oeA
//$BIDIR_CONTROL_OEB sigB oebB
이상과 같은 컴파일러 다이렉티브는 베릴로그 HDL에서는 주석(comment)을 의미하는 '//'으로 시작하므로 시뮬레이션 수행에는 아무런 영향을 끼치지 않고, 상기 테스트벤치 발생기(10)에만 해당 정보를 전달할 수 있다.
상기 $OBSERVE는 기본적인 출력 신호외에 내부 노드(NODE)를 관찰하여 출력 파일에 저장하기 위한 것이다. 상기 $CLOCK은 sigA가 일반적인 신호가 아닌 주기성을 갖는 클럭 신호임을 의미한다. 상기 $HIERARCHY는 현재의 서브모듈이 최상위 수준의 테스트 벤치에서 차지하는 계층적 위치를 의미한다. 상기 $PERIOD는 출력 파일 생성시 출력 신호를 관찰하는 주기를 나타낸다. 상기 $STROBE는 한 주기 내에서 관찰하는 시점을 의미한다. 상기 $SIMULATION_TIME은 전체 시뮬레이션 시간을 의미한다. 양방향 신호일 경우 방향 제어 신호를 이용하여 입력인지 출력인지를 결정하게 되는데, 출력 인에이블(Out Enable) 신호가 엑티브-하이(active-high)이면 상기 $BIDIR_CONTROL_OE를 사용하게 되고, 엑티브-로우(active-low)이면 상기 $BIDIR_CONTROL_OEB를 사용한다.
한편, 상기 테스트벤치 발생기(10)는 도 2에 도시된바와 같은 동작에 의해 상기 4개의 삽입 파일들(210, 220, 230, 240)을 생성한다.
도 2를 참조하여, 상기 테스트벤치 발생기(10)는 단계 S110에서 상기 서브 모듈의 베릴로그 파일(100)로부터 해당되는 서브모듈의 이름과, 이에 포함되어 있는 부가적인 정보 등을 포함하는 상기 서브모듈의 정보들을 분석(parsing)한다. 이 단계에서 필요한 경우 수동 입력(manual input)을 통해 필요한 데이터들을 입력받을 수도 있다. 단계 S120에서는 복수개의 테스트벤치 파일들의 저장을 위해 각각의 파일들을 오픈하고 해당되는 헤더 정보를 기록한다. 그리고 단계 S130에서는 구비된 복수개의 노드를 순차적으로 분석하여 입력, 출력, 입출력 노드 중 어느 하나인 것을 판단하고, 그에 따라 오픈된 상기 테스트벤치 파일들 중에 대응된 파일에 해당되는 정보를 입력한다.
구체적으로 단계 S131에서는 각 노드의 특성을 입력하고, 단계 S132에서는 입력노드(input node)인가를 판단하고, 입력노드인 경우는 해당 입력노드의 Observing Code를 발생하고, 단계 S134에서는 출력노드(output node)인가를 판단하고, 출력노드인 경우는 해당 출력노드의 Strobing Code를 발생한다. 그리고 단계 S136에서는 입출력노드(bidirectional node)인가를 판단하고, 입출력노드인 경우는 해당되는 입출력노드의 Observing Code와 Stroving Code를 발생한다. 단계 S138에서는 모든 노드가 처리 됐는가를 판단하여 아직 미처리된 노드가 있는 경우는 상기 단계 S131로 진행하여 반복하여 처리하고, 모두 처리된 경우는 종료한다.
이상과 같은 본 발명에 의하면, 하드웨어 전체의 시뮬레이션 환경을 구축해놓은 상태에서 특정 서브모듈만을 위한 테스트벤치를 작성할 필요성이 있는 경우 그 과정을 자동화하여 시뮬레이션 TAT를 최소화하여 로직 설계 시의 효율을 높일 수 있다. 자동화된 방식으로 테스트벤치를 작성할 경우 수작업이 거의 불필요하다. 또한 서브모듈용 테스트벤치에서 공급되는 입력(stimulus)은 시뮬레이션 대상이 되는 서브모듈이 하드웨어의 다른 부분과 함께 동작할 때와 완전히 동일하므로 마치 하드웨어 전체를 대상으로 시뮬레이션하는 것과 같은 동일한 효과를 얻을 수 있다. 그리고 서브모듈의 출력에 대한 결과 파일도 자동 생성하여 회로 수정후에 그 이전의 결과와 직접 비교가 가능하다.

Claims (2)

  1. HDL로 설계되며, 다단계의 모듈로 구성된 전자 회로의 시뮬레이션 방법에 있어서:
    특정 서브모듈의 시뮬레이션을 위한 삽입 파일 및 테스트벤치 파일들을 생성하는 테스트벤치 발생기를 이용하여 해당되는 복수개의 파일들을 생성하는 단계와;
    생성된 복수개의 삽입 파일들 중에서 상기 서브모듈의 입력과 출력에 대한 각각의 파일들을 이용하여 탑모듈 시뮬레이션을 수행하는 단계와;
    상기 탑모듈 시뮬레이션 후에 생성된 서브모듈 시뮬레이션을 위한 파일들과, 상기 테스트벤치 파일중 특정 테스트벤치 파일을 이용하여 해당되는 서브모듈 시뮬레이션을 수행하는 단계를 포함하는 것을 특징으로 하는 HDL로 설계된 전자 회로의 시뮬레이션 방법.
  2. 제 1 항에 있어서,
    상기 테스트벤치 발생기는:
    상기 서브모듈의 HDL파일로부터 해당되는 서브모듈의 이름과, 부가적인 정보들을 포함하는 상기 서브모듈의 정보를 분석하고;
    복수개의 상기 테스트벤치 파일들의 저장을 위해 각각의 파일들을 오픈하고 해당되는 헤더 정보를 기록하며;
    구비된 복수개의 노드를 순차적으로 분석하여 입력, 출력, 입출력 노드 중 어느 하나인가를 판단하고, 이에 따라 상기 테스트벤치 파일들 중에 대응된 파일에 해당되는 정보를 입력하는 것을 특징으로 하는 HDL로 설계된 전자 회로의 시뮬레이션 방법.
KR1019980011900A 1998-04-03 1998-04-03 테스트벤치 발생기 및 이를 이용한 시뮬레이션방법 KR19990079355A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019980011900A KR19990079355A (ko) 1998-04-03 1998-04-03 테스트벤치 발생기 및 이를 이용한 시뮬레이션방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980011900A KR19990079355A (ko) 1998-04-03 1998-04-03 테스트벤치 발생기 및 이를 이용한 시뮬레이션방법

Publications (1)

Publication Number Publication Date
KR19990079355A true KR19990079355A (ko) 1999-11-05

Family

ID=65860726

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980011900A KR19990079355A (ko) 1998-04-03 1998-04-03 테스트벤치 발생기 및 이를 이용한 시뮬레이션방법

Country Status (1)

Country Link
KR (1) KR19990079355A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100491461B1 (ko) * 1999-10-28 2005-05-25 가부시키가이샤 어드밴티스트 SoC 설계 검증을 위한 방법 및 장치
US7213222B2 (en) 2003-07-31 2007-05-01 Samsung Electronics Co., Ltd. Method of HDL simulation considering hard macro core with negative setup/hold time
US9933486B2 (en) 2015-06-02 2018-04-03 SK Hynix Inc. Apparatus and method of generating test pattern, test system using the same, and computer program therefor

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100491461B1 (ko) * 1999-10-28 2005-05-25 가부시키가이샤 어드밴티스트 SoC 설계 검증을 위한 방법 및 장치
US7213222B2 (en) 2003-07-31 2007-05-01 Samsung Electronics Co., Ltd. Method of HDL simulation considering hard macro core with negative setup/hold time
US9933486B2 (en) 2015-06-02 2018-04-03 SK Hynix Inc. Apparatus and method of generating test pattern, test system using the same, and computer program therefor

Similar Documents

Publication Publication Date Title
US6026226A (en) Local compilation in context within a design hierarchy
US6871331B1 (en) Combined waveform and data entry apparatus and method for facilitating fast behavioral verification of digital hardware designs
US9064068B1 (en) Debuggable opaque IP
Bhatnagar Advanced ASIC chip synthesis
US5831869A (en) Method of compacting data representations of hierarchical logic designs used for static timing analysis
US8468475B2 (en) Conversion of circuit description to an abstract model of the circuit
US7665046B2 (en) Method and system for debugging using replicated logic and trigger logic
US5384720A (en) Logic circuit simulator and logic simulation method having reduced number of simulation events
US7962869B2 (en) Method and system for debug and test using replicated logic
US7769569B2 (en) Method and system for designing a structural level description of an electronic circuit
US6782520B1 (en) IC layout system having separate trial and detailed routing phases
US5251159A (en) Circuit simulation interface methods
US7827517B1 (en) Automated register definition, builder and integration framework
US8782581B2 (en) Test bench hierarchy and connectivity in a debugging environment
US8010918B2 (en) Method for creating HDL description files of digital systems, and systems obtained
US20140331195A1 (en) Test bench hierarchy and connectivity in a debugging environment
TW201001280A (en) Method and apparatus for simulating behavioral constructs using indeterminate values
US6725187B1 (en) Latch inference using dataflow analysis
US5774380A (en) State capture/reuse for verilog simulation of high gate count ASIC
US6810508B1 (en) Method for automatically-remapping an HDL netlist to provide compatibility with pre-synthesis behavioral test benches
KR19990079355A (ko) 테스트벤치 발생기 및 이를 이용한 시뮬레이션방법
US7086017B1 (en) Method of post-implementation simulation of a HDL design
Yang et al. HDLs modeling technique for burst-mode and extended burst-mode asynchronous circuits
US20030188302A1 (en) Method and apparatus for detecting and decomposing component loops in a logic design
Reese et al. Synchronous Sequential Circuit Design

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination