首页> 中国专利> 合并硬件设计语言的原始档案与查验资料档案的方法

合并硬件设计语言的原始档案与查验资料档案的方法

摘要

一种将第一输入档案的硬件描述语言(HDL)程序码与第二输入档案的查验资料(assertions)加以结合以产生HDL输出档案的方法。在本发明实施例中,首先从第一输入档案中复制具有某一查验资料标识的查验资料;接着,于第二输入档案中找出相符合的查验资料标识;最后合并查验资料至第二输入档案中,以产生HDL输出档案的一部分。

著录项

  • 公开/公告号CN1801155A

    专利类型发明专利

  • 公开/公告日2006-07-12

    原文格式PDF

  • 申请/专利权人 威盛电子股份有限公司;

    申请/专利号CN200510003361.2

  • 发明设计人 余大伟;张征;陈琦;

    申请日2005-12-30

  • 分类号G06F17/50(20060101);G06F17/30(20060101);

  • 代理机构31100 上海专利商标事务所有限公司;

  • 代理人陈亮

  • 地址 台湾省台北县新店市中正路535号8楼

  • 入库时间 2023-12-17 17:25:12

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2008-12-10

    授权

    授权

  • 2006-09-06

    实质审查的生效

    实质审查的生效

  • 2006-07-12

    公开

    公开

说明书

技术领域

本发明有关一种设计集成电路的软件工具,特别有关于一种硬件设计语言的查验资料(assertions)的工具。

背景技术

集成电路设计者使用许多种软件工具来设计集成电路。设计工程师通常以硬件设计语言(Hardware Design Language,HDL)(又称为暂存器转换语言(RegisterTransfer Language,RTL))来撰写程序码。接着,集成电路设计者将HDL程序码输入至模拟器来测试其设计。经由模拟过程来更正一些错误之后,将此HDL程序码输入至合成器(synthesizer),用以将HDL程序码转换成集成电路的实体表示,并可进一步藉由现场可编程门阵列(FPGA)、特殊用途集成电路(ASIC)或自订硅集成电路来制作出实体集成电路。

在模拟阶段,验证工程师使用查验资料(assertions)于HDL程序码中来验证及保证该HDL程序码可以确实依照所设计的要求来执行。所谓查验资料(assertions)乃是一种叙述,用来规范某一特殊设计特征究竟要如何来进行。例如,某一逻辑区段(logic block)的程序码可以假设规范于某一个时间点两个输入信号中仅有一个会起作用,此即为查验资料(assertions)。又例如,某一逻辑区段的程序码可以规范输入信号永远不会大于某一最大值。又例如,某一逻辑区段的程序码可以规范某信号会一直保持于主动,直到收到回应信号为止。这些设计者所作的假设规范都可以使用查验资料(assertions)来描述。

在创造出这些查验资料(assertions)之后,验证工程师通常是将这些查验资料(assertions)插入HDL原始档案中的适当位置。然而,由于设计工程师及验证工程师都有可能会随时更新相同的一个档案,因而此种以手动方式插入的作法会产生一些问题。为了解决此问题,传统使用原始程序码控制工具(source-code controltools)来避免两者于同一时间同时进行档案的更新动作。使用此种工具时,某一工程师将档案置于不能登陆的状态,做其要做的修改,再将档案置于可以登陆的状态。

另外,在合并时,工程师必须要选择究竟要使用哪一种查验资料(assertions)格式:PSL(Property Specification Language,特色规格语言)或者SVA(SystemVerilog Assertion,系统断言查验);使得集成电路设计者可以根据目的来选择使用较佳的查验资料(assertions)格式。目前的设计者可能会使用OVL(OpenVerificatin Library,公开查证程序库),然而过了两年后,也许会改使用具有较强功能的SVA。不管在哪种情况下都使得RTL程序码中的文件记录(documentation)变得繁琐。

但是,此种以手动方式插入查验资料的作法还是有问题的,因为验证工程师正加入查验资料(assertions)于HDL程序码时,则设计工程师即无法取得该档案。如果能不加入冗长的查验资料资讯,RTL程序码将保持简洁并且不与其它类型的程序码混淆。因此亟需提出一种更好的将查验资料码与HDL源程序码相结合的处理程序。

发明内容

一种将位于一个输入档案的查验资料(assertions)与位于另一个输入档案的硬件描述语言(HDL)程序码查验资料加以结合以产生HDL输出档案的方法。在本发明实施例中,包含如下步骤:从第一输入档案中复制具有某一查验资料标识的查验资料;于第二输入档案的一部分中定位出相匹配的查验资料标识;合并查验资料至第二输入档案的一部分中,以产生HDL输出档案的一部分。

附图说明

图1的资料流程图显示本发明将查验资料(assertions)与硬件描述语言(HDL)原始档案(source file)予以合并的方法。

图2显示本发明将查验资料(assertions)与HDL原始档案(source file)予以合并的一个实施例。

图3显示本发明将查验资料(assertions)与HDL原始档案(source file)予以合并的另一个实施例。

图4显示本发明将查验资料(assertions)与HDL原始档案(source file)予以合并的又一个实施例。

图5显示一般电脑架构,其可以用来合并查验资料与HDL原始档案。

图6显示本发明实施例将查验资料与HDL原始档案予以合并的方法流程图。

图7的流程图显示本发明将查验资料与HDL原始档案予以合并的另一实施例。

具体实施方式

图1的资料流程图显示本发明将查验资料(assertions)与硬件描述语言(HDL)原始档案(source file)予以合并的方法。在本发明方法中使用了两个输入档案:一为硬件描述语言(HDL)原始档案101,另一为查验资料档案102。其中,HDL原始档案101包含以硬件描述语言(例如VHDL、Verilog、SystemC等)所写成的HDL原始程序码(source code);而查验资料档案102则包含以查验资料语言所写成的查验资料(assertions),该查验资料语言可以使用和HDL原始档案101相同的语言(例如VHDL、Verilog、SystemC等),或者是不同的语言(例如PropertySpecification Language、OpenVera等)。

上述的两个档案接着经由合并公用程序(merge utility)103来进行处理,因而产生HDL输出档案104,其包含有HDL原始程序码(source code)以及查验资料(assertions);两者系根据HDL原始档案101内的指示元(directive)来进行合并的。合并之后的输出档案104则输入至HDL模拟器105内。

已知技术者普遍了解,上述的合并公用程序(merge utility)103可以使用很多种语言来撰写,最主要者包含描述(scripted)语言及编译(compiled)语言。描述(scripted)语言可以是perl、awk、shell script、VBScript等;编译(compiled)语言则可以是C、C++、C#、Java、Visual Basic等。

图2显示本发明将查验资料(assertions)与HDL原始档案(source fi1e)予以合并的一个实施例。HDL原始档案101包含有数行201的HDL原始程序码;在本实施例中,是使用Verilog语言撰写,然而也可以使用VHDL、SystemC、SystemVerilog等其它语言。在本发明合并过程中,逐次来处理HDL原始档案101中的每一行201,并将每一行复制到HDL输出档案104。针对HDL原始档案101中的每一行,检视其是否含有合并指示元(merge directive)202;假如包含有合并指示元202,则作进一步处理。

一个合并指示元(merge directive)202由下列各部分所组成:起始注释记号(start comment token)203、查验资料标识(assertion identifier)204、结束注释记号(end comment token)205。(HDL注释仅专门用在合并指示元202当中,至于合成器(synthesizer)及模拟器(simulator)则会忽略这些指示元。)合并指示元(merge directive)202经由解析后得到查验资料标识(assertionidentifier)204;此查验资料标识204再经进一步的解析后,可得到即将进行合并的查验资料档案102的档案名称206。

底下说明如何将含有合并指示元(merge directive)202的程序行201与相对应查验资料档案102中的查验资料予以合并。于查验资料档案102中寻找与HDL原始档案101相同的标识(identifier)204;如果找不到该标识204的查验资料区段,则显示错误讯息;否则,即将相对应的查验资料区段复制到输出档案104。

在图2所示的例子中,其具有两个查验资料区段207a、207b:查验资料区段207a共有三行,其位在查验资料标识204a的后面;另一查验资料区段207b也有三行,其位在查验资料标识204b的后面。

在上述的例子中,查验资料区段并不包括查验资料标识204该行;然而,本发明也可以使用其它的方式来实施。例如,查验资料区段的开始位置可以同时包括查验资料标识204该行;甚至,查验资料区段的结束位置还可以包括一个结束查验资料标识。

前述合并指示元(merge directive)202当中的起始注释记号(start commenttoken)203和结束注释记号(end comment token)205的格式是和HDL原始档案101所使用的程序语言有关联的;然本发明并不限定于某种语言的特定格式。在例示中是使用Verilog语言,其支持两种格式:第一种格式是以”//”作为起始注释记号(start comment token),而以一般的分行记号(end-of-line marker)作为结束注释记号(end comment token);另一种格式是以”/*”作为起始注释记号(start comment token),而以”*/”作为结束注释记号(end comment token)。如果是使用VHDL语言,则以”--”作为起始注释记号(start comment token),而以一般的分行记号(end-of-line marker)作为结束注释记号(end commenttoken)。

在图2的例子中,是将查验资料区段直接置于含有合并指示元(mergedirective)该行的下一行;此种写法见于Verilog、VHDL、System Verilog等程序语言,其将查验资料区段部分视为内定(native)语言的一部份。通常程序语言的语法不允许于同一行中包含有多个叙述(statement),因此将查验资料区段从下一行开始置入。

然而,对于其它种类的程序语言(例如PSL、Sugar等),则是采用内插(in-line)方式,将查验资料(assertions)视为注释(comments)而与所要检视的程序码列于同一行;此时,需要前置处理器(pre-processor)来进行处理。例如,使用PSL语言的内插式(in-line)查验资料写法为:

cnt=cnt-1;//PSL assert_underflow(cnt<0);

本发明的查验资料(assertions)适用于内插式(inline)与非内插式(non-inline)两种形式。假如程序语言允许将查验资料(assertions)作为注释(comments),且查验资料仅有一行,则采用内插式(inline)将查验资料与所要检视的程序码置于同一行。假如查验资料不只一行,则将查验资料置于注释(comments)之间。

假如查验资料(assertions)可视为内定(native)语言的一部份,则直接置于程序码当中;通常,是从所要检视程序码的下一行开始置入。假如查验资料(assertions)的内容属于多行的控制叙述,例如”case”、”if else”,则将这些控制叙述置于程序码当中。

由于2图所示程序码内容与本发明的实施无直接关联,因此将不再作进一步说明。合并指示元(merge directive)202当中的档案名称206格式与操作系统有关联;假如操作系统为Unix,则档案名称206的格式必须与Unix的档案格式兼容才行。在本例子中,使用”#”作为分界符号;而在其它操作系统底下则可以使用其它的分界符号。

在图2中,合并指示元(merge directive)202a、202b将查验资料区段207a、207b置入程序区段(procedural block)208当中。在这个例子里,此程序区段208属于IF-ELSE架构;当然,其它的架构(例如FOR、CASE等)也一样适用。这一类的查验资料区段通常称为立即查验资料(immediate assertion)。

本发明也可以用来将查验资料区段(assertion block)置于程序区段(procedural block)之外,如图3所示。HDL原始档案101包含由System Verilog所写的模组A,其包含模组定义部分301以及模组实现部分302。其中,模组定义部分301界定模组A与其它模组之间的接口;而模组实现部分302则以程序区段303来实现模组A的动作。查验资料档案102包含查验资料区段(assertion block)304,其包含属性(property)定义305及查验资料叙述(assertion statement)306。此查验资料区段(assertion block)304使得信号a变为主动之后,信号b于下一个时脉周期也变为主动,而信号c则于接下来的时脉周期也变为主动。

在这个例子中,合并指示元(merge directive)307用来将查验资料区段(assertion block)304插入模组A的模组定义部分301里面。由于此查验资料区段位于程序区段之外,因此这些属性于整个模拟过程当中都会加以检视,而非如前一例子中仅在程序区段中加以检视。此类型的查验资料区段非常适于检视各逻辑区段之间界面的动作,而图2所示的查验资料区段则是用于检视一逻辑区段内的动作。(前者称为黑箱测试(black-box testing),而后者则称为白箱测试(white-boxtesting)。)

图4显示本发明将查验资料(assertions)与HDL原始档案(source file)予以合并的又一个实施例。在这个例子中,属性(property)是在程序区段之外定义的,而在程序区段内加以检视的。为了处理这一类的查验资料,必须使用两个合并指示元(merge directive):合并指示元(merge directive)401用以将含有属性定义的查验资料区段402插入模组定义部分403中;另一合并指示元(mergedirective)404则用以将查验资料区段405插入always程序区段406中。

图5显示一般电脑501架构,其可以用来合并查验资料与HDL原始档案。本发明方法可以于集成电路(IC)设计工具(例如编辑器、合成器、编译器、模拟器、除错器等)的同一台电脑中实施,也可以于远端的伺服系统中实施(例如于X-Windows环境下)。图示的硬件架构包含有处理器502、存储器503、输出入装置(或周边)504、及其所赖以通信的区域总线505。此区域总线505可以包含一或多个有线/无线总线;其还可以包含其它组件(未图式),例如控制器、缓冲器、驱动器、增强器(repeater)、接收器,用于通信之用。再者,区域总线505还可以包含地址、控制、资料的连接。

处理器502为硬件装置,用以执行软件,特别是储存于存储器503中的软件。处理器502可以是自订或市面上贩售的处理器、中央处理单元(CPU)、与电脑501相关的辅助处理器、单晶或芯片组形式的微处理器,或者更广泛来讲,其为一种可用以执行软件程序的装置。

存储器503可以是挥发性存储器(例如随机处理存储器(DRAM、SRAM、SDRAM等))、非挥发性存储器(例如只读存储器(ROM)、硬盘、磁带、CDROM等)或其组合。再者,存储器503还可以包含电子、电磁、光学或其它型态的储存媒体。存储器503可以采分布式的架构,各部分位于不同地方,但可以接受处理器502的存取。

储存于存储器503中的软件可以包含一或多个程序,用以实现逻辑功能的运算。在图2的例子中,储存于存储器503中的软件包含一或多个系统组件用以针对异常医学发现(abnormal medical findings)作通信;存储器503中的软件也可以包含操作系统506。此操作系统506用以控制其它程序的执行,例如本发明用以合并查验资料与HDL原始档案的方法,且操作系统506还可以进行排程(scheduling)、输出入控制、档案/资料管理、存储器管理、通信控制及其它服务。

本发明将查验资料与HDL原始档案予以合并的方法可以为一原始程序(sourceprogram)、可执行程序(目标程序码)、描述程序(script)、或其它含有待执行的指令。如果是原始程序(source program),则需要先经由编译器、组译器(assembler)、直译器(interpreter)、或其它工具的翻译(这些工具不一定要储存于存储器503内),才能在操作系统506下正常的执行。

周边504可以包含输入装置(例如键盘、鼠标、扫描器、麦克风等);周边504也可以包含输出装置(例如列表机、显示器、传真机等)。此外,周边504也可以同时包含输出入的通信,例如数据机用以连接其它装置/系统/网路、射频收发机、电话界面、桥接器、路由器等。

假如电脑501为一台个人电脑、工作站之类的装置,则储存于存储器503中的软件还可以包含基本输出入系统(BIOS),其由一些软件子程序所组成,用于开机时进行硬件的初始化及测试、启动操作系统506、及支援各硬件之间的资料传输。此基本输出入系统(BIOS)储存于唯读存储器(ROM),当电脑501一开机时,即会执行此基本输出入系统(BIOS)。

当电脑501在运作时,处理器502会执行存储器503中的软件,存取存储器503中的资料,并根据软件的内容来控制电脑501的运作。前述异常医学发现与操作系统506之间的通信内容,将由处理器502来读取,缓冲暂存于处理器502内,最终加以执行。

本发明将查验资料与HDL原始档案予以合并的方法可以储存于任何电脑可读取媒体中。在本说明书中,电脑可读取媒体系指任何可以储存、通信、传送这些程序的装置。此电脑可读取媒体可以是电子、磁性、光学、电磁、红外线、半导体系统等等装置或系统。例如,导线、可携式盘片、随机处理存储器(RAM)、只读存储器(ROM)、可擦除式可编程只读存储器(EPROM、EEPROM、Flash)、可携式光盘只读存储器(CDROM)等。电脑可读取媒体也可以包含纸张或其它媒体,于其上印制有程序并可以由电子方式来撷取(例如光学扫瞄)。

在其它实施例中,本发明将查验资料与HDL原始档案予以合并的方法可以使用硬件方式来实施,例如底下的方式之一或其组合:逻辑电路、特殊用途集成电路(ASIC)、可编程门阵列(PGA)、现场可编程门阵列(FPGA)等。

图6显示本发明实施例将查验资料与HDL原始档案予以合并的方法流程图。首先,在步骤601中,于查验资料档案中找出查验资料区段;该区段具有一标识(identifier),且该区段可以包含一或多行。接着,于步骤602,于HDL原始档案中寻找与该标识相对应的程序码,其具有相对应的标识。(假如找不到相对应程序码,则显示错误讯息。由于此错误讯息显示系为传统熟知的作法,因此未显示于图式中。)

在步骤603,将查验资料档案中的查验资料区段与HDL原始档案的程序码合并在一起,以产生输出部分。最后,将输出部分写到输出档案里面(步骤604)。在一些实施例中,是将相关查验资料直接插入程序码底下;然而在其它实施例中,插入于程序码的同一行。此端视所使用的为哪一种硬件描述语言。

图7的流程图显示本发明将查验资料与HDL原始档案予以合并的另一实施例。首先,在步骤701中,从HDL原始档案读取其中一行。接着,判断该行是否含有合并指示元(merge directive)(步骤702)。如果不含有合并指示元(mergedirective),则继续步骤701;如果含有合并指示元(merge directive),则进入步骤703,解析该合并指示元(merge directive)以得到查验资料档案名称及其标识。在步骤704中,根据档案名称来打开查验资料档案,并找出相对应于该合并指示元(merge directive)的查验资料区段(assertion block)。之后,将含有该合并指示元(merge directive)的程序行与查验资料区段予以合并(步骤705),并将合并结果输出至HDL输出档案(步骤706)。

以上所述仅为本发明的较佳实施例而已,并非用以限定本发明的申请专利范围;凡其它未脱离本发明所揭示的精神下所完成的等效改变或修饰,均应包含在下述的申请专利范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号