CN100452062C - 测试硬件描述语言所撰写的硬件电路方块的方法 - Google Patents

测试硬件描述语言所撰写的硬件电路方块的方法 Download PDF

Info

Publication number
CN100452062C
CN100452062C CNB2006100016062A CN200610001606A CN100452062C CN 100452062 C CN100452062 C CN 100452062C CN B2006100016062 A CNB2006100016062 A CN B2006100016062A CN 200610001606 A CN200610001606 A CN 200610001606A CN 100452062 C CN100452062 C CN 100452062C
Authority
CN
China
Prior art keywords
hardware
hardware circuit
testing
write
circuit square
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
CNB2006100016062A
Other languages
English (en)
Other versions
CN101000639A (zh
Inventor
郑福炯
黄年畤
陈建一
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Datong University
Tatung Co Ltd
Original Assignee
Tatung Co Ltd
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 Tatung Co Ltd filed Critical Tatung Co Ltd
Priority to CNB2006100016062A priority Critical patent/CN100452062C/zh
Publication of CN101000639A publication Critical patent/CN101000639A/zh
Application granted granted Critical
Publication of CN100452062C publication Critical patent/CN100452062C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本发明是有关于一种测试硬件描述语言所撰写的硬件电路方块的方法,能自动产生测试图样及错误讯息。本发明包含将原始类别转换成包装类别的步骤,其中,包装类别较原始类别还记录硬件电路方块的输入数据以及输出数据;产生硬件逻辑仿真所需的顶端模块的步骤;将原始单元测试转换为扩充单元测试的步骤;以扩充单元测试对包装类别执行单元测试以产生输入图样档案的步骤;依据顶端模块及输入图样档案而对硬件电路方块进行硬件逻辑仿真。

Description

测试硬件描述语言所撰写的硬件电路方块的方法
技术领域
本发明是关于一种测试硬件电路方块的方法,尤指一种测试硬件描述语言所撰写的硬件电路方块的方法。
背景技术
为了使大型电路设计更具有效率性及可利用性,目前采用VHDL或Verilog等硬件描述语言以进行大型电路的设计。因此,依硬件描述语言所撰写的程序代码经由合成(synthesis)、放置与绕线(place and route)后,可对应至一个硬件电路方块,例如:随机数产生器、计数器、加法器、或乘法器等等,而硬件电路方块又称为硬件IP(智能财产,Intelligent Property)。因此,硬件描述语言程序代码的执行结果等于硬件电路方块的执行结果,再由重复呼叫硬件描述语言程序代码则可轻易复制硬件电路方块,达到硬件IP的重复利用性。
然而,当使用者完成硬件描述语言程序代码的撰写后,为了确保硬件描述语言程序代码是否正确无误,使用者需将此硬件描述语言程序代码视为一个待测单元(unit),并针对此待测单元撰写一笔测试图样(testpattern),此测试图样还包括预期结果,最后,由仿真系统依测试图样而对待测单元进行测试,并比对测试结果与预期结果是否相同,上述系列步骤又称为单元测试(unit test)。以人工撰写测试图样将造成人力与时间的浪费,且待测单元的运行有错误时,目前并无有效的错误讯息回传机制以告知使用者适当的文字除错讯息,并标示出错误可能发生之处,这将造成使用者进行单元测试上的困扰。
因此,在硬件描述语言的领域中,使用者对于自动产生测试图样存在着强烈的需求,并对错误讯息回传机制亦存在着强烈的需求。
发明内容
本发明的目的在于提供一种测试硬件描述语言所撰写的硬件电路方块的方法,能自动产生测试图样及错误讯息。
为实现上述目的,本发明提供的测试硬件描述语言所撰写的硬件电路方块的方法,包括:
步骤(A):将一原始类别转换成一包装类别,其中,与原始类别比较,该包装类别能额外记录该硬件电路方块的输入数据以及输出数据;
步骤(B):产生一硬件逻辑仿真所需的一顶端模块;
步骤(C):将一原始单元测试转换为一扩充单元测试;
步骤(D):以该扩充单元测试而对该包装类别执行单元测试以产生一输入图样档案;以及
步骤(E):依据该顶端模块及该输入图样档案而对该硬件电路方块进行该硬件逻辑仿真。
所述的测试硬件描述语言所撰写的硬件电路方块的方法,其中步骤(A)包括下列步骤:
步骤(A1):依据一特定讯号通信协议而设定一非公开数据成员;
步骤(A2):将该输入参数记录至该非公开数据成员;
步骤(A3):将该回传值记录至该非公开数据成员;
步骤(A4):依该特定讯号通信协议而重置该非公开数据成员;
步骤(A5):将步骤(A1)、步骤(A3)、及步骤(A4)依序纪录至该包装类别的队列中;以及
步骤(A6):定义该原始类别所未定义的公用方法。
本发明提供的测试硬件描述语言所撰写的硬件电路方块的方法,其中硬件描述语言为VHDL或Verilog。
本发明提供的测试硬件描述语言所撰写的硬件电路方块的方法,其中硬件描述语言是以java语言以进行撰写。
本发明提供的测试硬件描述语言所撰写的硬件电路方块的方法,其中硬件电路方块采用一异步四相讯号通信协议。
附图说明
图1为本发明的测试硬件描述语言所撰写的硬件电路方块的方法的流程图。
图2是将original class转换成wrapper class的步骤的细部流程图。
图3为本发明的测试硬件描述语言所撰写的硬件电路方块的方法的示意图。
具体实施方式
在本发明中,将以Java语言作为HDL所需的软件语言,以Java语言来撰写对应至随机数产生器的软件函式,以Junit来撰写测试码以产生测试图样(test patent),并以Mentor Graphic公司的ModelSim作为硬件描述语言的仿真器(simulator),又为了配合SOCAD系统所使用的异步四相讯号通信协议(4-phased signal protocol),故异步四相讯号通信协议作为通信界面。上述设定仅方便进行本发明的说明,并不以此为限。其中,软件函式的示范性内容如下所示:
public class Random{
  static int va=3;
  static int vb=8;
  static int vcarry=0;
  static int random=0;
  public static void setA(int a){
     va=a;}
  public static void setB(int b){
    vb=b;}
  public static void setCarry(int carry){
     vcarry=carry;}
  public static int simpleRandom(){
     random=va+vb;
       if(vcarry==1){random=random+1;}
         va=vb;
       if(random>=10){vcarry=1;random=random-10;}else{vcarry
=0;}
         vb=random;
         return random;
       }
     public static void main(String[]args){
       for(int i=0;i<100000;i++){
          Random.setA(i);
          Random.setB(i);
          Random.setCarry(i);
          }
          Random.setA(3);
          Random.setB(8);
          Random.setCarry(0);
       for(int i=0;i<100;i++){
          System.out.println(″i=″+i+″RND=″+Random.simpleRandom());
          }
          System.out.println(″End random″);
          }
     }
如图1所示,本发明测试硬件描述语言所撰写的硬件电路方块的方法包括下列步骤:
步骤S10:将original class(原始类别)转换成wrapper class(包装类别),如图2所示,在本发明中,original class为java class,因此,wrapper class系为java wrapper class。wrapper class与original class相似,两者的输入接口及输出接口皆相同,但wrapper class较original class还记录此软件函式的输入数据以及输出数据。为了将软件函式的执行动作顺利地转换为硬件电路所相对应的动作,因此需对original class进行扩充以达到记录软件函式执行时的特征,并以软件方式记录的。可想而知地,使用者亦于硬件电路的执行过程中记录硬件执行结果,而软件函式的执行结果可作为预期的硬件逻辑仿真的执行结果,通过比较两者之间是否有差异可以确保硬件电路的正确性。其中,original class与软件函式的种类有关,例如:软件函式用以描述随机数产生器,则original class则为描述随机数产生器所需引用的类别。
由于original class中包含公用方法(public method)、参数(parameter)及回传值(return value),因此,步骤S10额外将public method、参数、及回传值定义成wrapper class的非公开数据成员(private data member),如图2所示,其包括下列步骤:
步骤S100:依SOCAD系统所使用的四相讯号通信协议而设定每个参数及回传值所对应的非公开资料成员。
步骤S 102:使用输入的参数呼叫original class中相对应的publicmethod。。
步骤S104:将回传值记录至非公开数据成员。
步骤S106:依四相讯号通信协议而重置非公开数据成员。
步骤S108:将步骤S100、步骤S104、及步骤S106分两次依序纪录到wrapper class的队列(queue)。
步骤S110:依SOCAD系统的需求在original class中额外增加publicmethos的定义,例如:重置、清除、初始化等等方法。
步骤S12:产生硬件逻辑仿真所需的顶端模块(top module),在本发明中,top module为VHDL top module。每一original class的public method与其参数不同,因此,根据步骤S10的结果而为original class提供硬件逻辑仿真所需的top module。由于可以得知original class拥有哪些public method,这些public method将是外界对于original class的操作接口,相当于硬件电路的输出入端口(port)。因此,依据每个public method所产生相对应的埠,top module可对所有的输入埠产生输入图样(input pattern),并通过输出端口纪录执行结果。此外,top module亦可读取测试图样文件的文字除错信息,当错误发生时可提供适当的信息让使用者来除错。其中,top module的示范性内容如下所示:
while(input pattern file!=EOF)
{
for every public method{
  for every input interface{
    read set-data from input pattern file;
    send the set-data to the hardware input-interface;
  }
}
wait for the maximum delay;
read data from hardware output interfaces;
read the set-records from input pattern file;
if(read-data!=set-records)
   {
   pass the assert message from input pattern file to stand output;
   exit;
   }
for every public method{
   for every input interface{
     read reset-data from input pattern file;
     send the read-data to hardware input interface;
   }
}
wait for the maximum delay;
read data from hardware output interface;
read the reset-records form the input pattern file;
if(read-data!=reset-records)
   {
   pass the assert message from input pattern file to stand output;
   exit;
   }
}
步骤S14:将原始单元测试(unit testing)转换为扩充单元测试。为了达到让硬件行为在仿真时发生错误的位置与可以与软件描述产生对应,因而将硬件行为切割为数个区块,每一区块可对应至一段文字除错讯息。为了达到此目的,因此必须纪录在assert function(说明函数)与最近一个assertfunction被呼叫间有哪些相对应的硬件动作被执行,方能达到以文字除错讯息切割硬件行为的目的。其中,SOCAD_ASSERT function的两个主要的功能为:将步骤S108的纪录转换为文字的输入图样,并储存至输入图样档案;以及将收集到的文字除错讯息做适当地修改而与输入图样档案结合。因此,SOCAD_ASSERT function可将从wrapper class收集的硬件执行行为与文字除错讯息加以整合并输出至测试图样档(test pattern file)。依据步骤S108的队列以及SOCAD系统的中所是用的四相讯号通信协议即可得知队列的倒数第二个动作乃伴随SOCAD_ASSERT呼叫的运算阶段(computation phase),倒数第一个动作为此运算阶段的重置阶段(resetphase),因此,使用者可经由以下伪码(Pseudo Code)扩充原始的assert_function来实行unit testing。
SOCAD_ASSERT_EQUAL(Message,Condition){
  original_assert_equal(Message,Condition);
  MSG=“BEFORE”+Message;
  for(i=0;i<wrapper_class.queue.length-2;i++)
  {
    write_data_to_file(wrapper_class.queue.get(i),MSG);
  }
  MSG=“Computation“+Messgae;
  write_data_to_file(wrapper_class.queue.get(i,MSG));
  i=i+1;
  MSG=“Reset“+Message;
  write_data_to_file(wrapper_class.queue.get(i,MSG));
  wrapper_class.queue.flush();
}
没有assert message(说明讯息)的动作将被标上由下一个最接近的assert message加上”Before”字符串以组成另一assert message,如此一来,可以以文字除错讯息为界线而将所有在硬件逻辑仿真上的行为区分成数个区块。
步骤S16:以扩充unit testing而对wrapper class执行单元测试以产生输入图样档案(input pattern file)。原始unit testing的行为是这个过程中所有行为的子集合,因为wrapper class除了包含original class的描述外,还增加硬件电路方块的相对应动作,且原始unit testing也变更成扩充unit testing,因此,以扩充unit testing对wrapper class执行单元测试则可产生输入图样档案,而输入图样档案包括对应于原始unit testing的硬件动作、原始unittesting所使用的文字除错讯息、以及切割后的硬件逻辑仿真动作区块。
步骤S18:依据top module及输入图样档案而对硬件电路方块进行硬件逻辑仿真。SOCAD可将软件函式转成硬件电路方块,通过Modelsim依照topmodule及输入图样档案而进行硬件逻辑仿真。如果比对结果显示正常则继续执行后续的处置,如果比对结果显示不正常则top module可依据输入图样档案而显示适当的assert message。例如:于进行硬件逻辑仿真的过程中,assert message内容如下:
     Error
     In Function testRandom:In 8th interation Computing
     Interface:retsimpleRandom1,expected=0000000010,but
actual=0000000001
     Time 68us Iteration:0Instance:/random_test_top
因此,使用者可以参考原始单元测试的示范性内容的”simplerandom(ture)”的呼叫,其预期结果为2但是硬件逻辑仿真的传回值为1;另外,还可由assert message中得知错误是发生在执行第9次(0到8)循环时。假设assert message内容如下:
Error
In Function testRandom:BEFORE In 0th interation Computing
Interface:bAck4P,expected=1,but actual=0
Time:34us Iteration:0Instance:/random_test_top
因此,使用者可得知错误乃发生在循环执行的前,且错误发生在接口”bAck4P”时,故可判断出错误乃发生在”ThisRandom.setB(8,false)”这段程序上。由上述二例中可知,使用者即可依assert message的内容而判断错误的所在并进行错误的修正。
上述实施例仅是为了方便说明而举例而已,本发明所主张的权利范围自应以申请专利范围所述为准,而非仅限于上述实施例。

Claims (4)

1.一种测试硬件描述语言所撰写的硬件电路方块的方法,包括:
步骤(A):将一原始类别转换成一包装类别,其中,与原始类别比较,该包装类别能额外记录该硬件电路方块的输入数据以及输出数据;
步骤(B):产生一硬件逻辑仿真所需的一顶端模块;
步骤(C):将一原始单元测试转换为一扩充单元测试;
步骤(D):以该扩充单元测试而对该包装类别执行单元测试以产生一输入图样档案;以及
步骤(E):依据该顶端模块及该输入图样档案而对该硬件电路方块进行该硬件逻辑仿真;
其中,步骤(A)包括下列步骤:
步骤(A1):依据一特定讯号通信协议而设定一非公开数据成员;
步骤(A2):将该输入参数记录至该非公开数据成员;
步骤(A3):将该回传值记录至该非公开数据成员;
步骤(A4):依该特定讯号通信协议而重置该非公开数据成员;
步骤(A5):将步骤(A1)、步骤(A3)、及步骤(A4)依序纪录至该包装类别的队列中;以及
步骤(A6):定义该原始类别所未定义的公用方法。
2.如权利要求1所述测试硬件描述语言所撰写的硬件电路方块的方法,其中,硬件描述语言为VHDL或Verilog。
3.如权利要求1所述测试硬件描述语言所撰写的硬件电路方块的方法,其中,硬件描述语言是以java语言以进行撰写。
4.如权利要求1所述测试硬件描述语言所撰写的硬件电路方块的方法,其中,硬件电路方块采用一异步四相讯号通信协议。
CNB2006100016062A 2006-01-13 2006-01-13 测试硬件描述语言所撰写的硬件电路方块的方法 Expired - Fee Related CN100452062C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006100016062A CN100452062C (zh) 2006-01-13 2006-01-13 测试硬件描述语言所撰写的硬件电路方块的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006100016062A CN100452062C (zh) 2006-01-13 2006-01-13 测试硬件描述语言所撰写的硬件电路方块的方法

Publications (2)

Publication Number Publication Date
CN101000639A CN101000639A (zh) 2007-07-18
CN100452062C true CN100452062C (zh) 2009-01-14

Family

ID=38692607

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100016062A Expired - Fee Related CN100452062C (zh) 2006-01-13 2006-01-13 测试硬件描述语言所撰写的硬件电路方块的方法

Country Status (1)

Country Link
CN (1) CN100452062C (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103455362A (zh) * 2013-09-27 2013-12-18 西安电子科技大学 一种硬件语言自动转换系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1499374A (zh) * 2002-11-04 2004-05-26 华为技术有限公司 一种单元测试自动化方法
CN1549119A (zh) * 2003-05-07 2004-11-24 华为技术有限公司 逻辑仿真测试系统和方法
WO2005026995A2 (de) * 2003-09-12 2005-03-24 Infineon Technologies Ag Verfahren zum prüfen einer elektrischen schaltung

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1499374A (zh) * 2002-11-04 2004-05-26 华为技术有限公司 一种单元测试自动化方法
CN1549119A (zh) * 2003-05-07 2004-11-24 华为技术有限公司 逻辑仿真测试系统和方法
WO2005026995A2 (de) * 2003-09-12 2005-03-24 Infineon Technologies Ag Verfahren zum prüfen einer elektrischen schaltung

Also Published As

Publication number Publication date
CN101000639A (zh) 2007-07-18

Similar Documents

Publication Publication Date Title
EP2165280B1 (en) Recording of emulation states using replicated memory elements
CN100573537C (zh) 一种soc芯片系统级验证系统及方法
US7770066B2 (en) Method and system for converting USB
US20070276644A1 (en) Conversion of circuit description to a transaction model
CN100442293C (zh) 合并硬件设计语言的原始档案与查验资料档案的方法
JP4806529B2 (ja) 複製されたロジックを使用するデバッグの方法とシステム
US7561999B2 (en) Verification apparatus, verification method, and program
TWI309384B (zh)
EP1812878A1 (en) Assertion generating system, program thereof, circuit verifying system, and assertion generating method
US8122428B2 (en) Methods and apparatus for automation and facilitating design of register maps
US7424416B1 (en) Interfacing hardware emulation to distributed simulation environments
CN102480467B (zh) 一种基于网络通讯协议的soc软硬件协同仿真验证方法
CN112949233B (zh) Fpga芯片的自动化开发方法及装置、电子设备
US7437701B1 (en) Simulation of a programming language specification of a circuit design
CN113835945A (zh) 芯片的测试方法、装置、设备及系统
US6339837B1 (en) Hybrid method for design verification
CN115952758A (zh) 芯片验证方法、装置、电子设备及存储介质
CN114707445A (zh) 集成电路的综合方法、装置、计算机设备及存储介质
CN114510432A (zh) 一种寄存器调试平台和调试方法
US20090222778A1 (en) Property generating apparatus, property generating method and program
CN110442929A (zh) 一种基于perl实现芯片系统顶层自动例化的方法
CN109726063A (zh) 一种基于指令行为对Verilog实现的MIPS处理器的自动化评判方法
JP5056511B2 (ja) 検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法
CN100452062C (zh) 测试硬件描述语言所撰写的硬件电路方块的方法
US7284218B1 (en) Method and system for inplace symbolic simulation over multiple cycles of a multi-clock domain design

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20090424

Address after: Taiwan, Taipei, China

Co-patentee after: Datong University

Patentee after: Tatung Company

Address before: Taipei City, Taiwan, China

Patentee before: Datong Co., Ltd.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090114

Termination date: 20130113

CF01 Termination of patent right due to non-payment of annual fee