自然语言断言处理器的制作方法

文档序号:6592481阅读:248来源:国知局
专利名称:自然语言断言处理器的制作方法
技术领域
本发明涉及自然语言断言(natural language assertions),特别地是,涉及 一种处理程序/处理器,其可以自动分析自然语言断言,并将它们转换为验证语言断言 (verification language assertions),接着再自所述些验证语言断言中产生已解释 (interpreted)自然语言断言,以藉此在验证期间允许有意义的使用者检阅。
背景技术
集成电路(ICs)的设计已经渐渐地变得越来越复杂,因而增加了对于此类设计的 快速验证的需求,但遗憾地是,于设计复杂度上的突破常常快过验证程序的改进,而此不同 调则有部份的原因是由于使用的语言不同,尤其是,用于IC设计的硬件描述语言(HDLs, hardware description languages),例如,硬件描述语言(Verilog)或超高速集成电路硬 件描述语言(VHDL),其用以描述电子系统在空间与时间方面的结构与行为的是标准的、以 文字为主的(text-based)表达式,因此,HDLs已为设计者所熟知且接受,但相对地,验证语 言,例如,System Verilog,VERA,或E !,却具有比HDLs更高阶的形式,因而造成使用者的 接受度相对上低许多。某些用于软件程序设计的表达式,称为断言(assertions),其有助于验证语言的 形式。一个断言即为一个会在不正确若发生时指出错误的表达式,而在一 HDL设计的上下 文中,一断言则是可以检查特殊行为,并且在所述特殊行为发生时显示一讯息。另外,断言 亦可以同时监控“好的”以及“坏的”行为,但不像HDLs中所使用的标准的、以文字为主的 表达式。断言倾向于为设计者特有的形式,也就是,一使用者无法轻易地读取其他人所撰写 的断言,因此,当一使用者不是所述断言的作者时,就很可能在验证时忽略具有一“失败”状 态的断言。断言有助于在验证期间增加一设计的控制力以及观察力,因此,的确有需要一能 够促进更多断言的使用、且同时能增加其可靠度的处理程序。

发明内容
一种处理自然语言断言(NLAs,Natural Language Assertions)的方法可以包括, 识别一 NLA,以及接着利用一自然语言解析器(NLP,Natural Languageparser)以及合成 技术(synthesis techniques)而将所述NLA转译为一验证语言断言(VLA,Verification Language Assertion),之后,此VLA可以利用一 VLA解析器以及样式匹配技术(pattern matching techniques)而被转译为一已解释 NLA (interpreted NLA) (NLA*),在此时,程序 可以允许使用者检阅所述NLA*以及所述NLA,然后,当所述使用者决定所述NLA*与所述NLA 彼此相同、或具有的差异很微小时,就利用所述VLA执行验证,而验证的结果则是接着会回 头被注解于所述NLA之上。在一实施例之中,每一个已识别的NLA都会与存储在一高速缓冲存储器(cache) 中的一组NLAs进行比较,而在所述NLA匹配于所述NLAs中的一个NLA时,则会直接继续执行所述验证,其中,所述验证是利用存储在所述高速缓冲存储器中且关联于所述已匹配的 NLA的一 VLA而加以执行,另外,当所述NLA不匹配于所述个NLA时,则程序会继续进行所述 转译步骤。另一种用以处理自然语言断言(NLAs)的完全自动方法可以包括,识别一 NLA, 以及接着利用一自然语言解析器(NLP)以及合成技术而将所述NLA转译为一验证语言 断言(VLA),之后,此VLA可以利用一 VLA解析器以及样式匹配技术而被转译为一已解释 NLA (NLA*),在此时,所述NLA*可以被转译为一已解释VLA (VLA*),并且,所述VLA会与所述 VLA*进行比较,而当所述VLA以及VLA*不相同时,所述方法会提供一警告,另外,当所述VLA 并非不相同于所述VLA*时,则是可以利用所述VLA而执行验证,因此,在此实施例之中,除 了比较所述NLA以及所述NLA*之外,所述VLA也可以与所述VLA*进行比较,以藉此在验证 期间为使用者提供另一有关准确性的测试。具有优势地是,构成一 NLA处理器的一部份的所述NLA解析器会为每一个句 子产生一自然语言语意树(semantic tree),接着,所述NLA处理器就可以利用此树来 产生所述VLA,其中,所述NLA处理器用以产生所述VLA的示范性技术可以包括,举例而
(text transformation)(text maintenance) >
(expression matching),其中,文字转换可以包括,散文至数字的转换(例如,“zero”->0 以及“one”->l),以及缩写格式(例如,“should not"->shouldn' t);文字维持可以利用 双引号而进行识别,举例而言,在所述NLA中的一个“a+b”表达式可以维持原样地继续存 在于所述VLA之中,类似地,当一变量名为一英文字时,就可藉由将所述变量名放入双引号 之中而达成澄清的效果(例如,所述NLA可以陈述,若“a”发生时,则…);以及表达式匹配 则是会在受到句号(periods)约束时查看多个词汇,举例而言,其中一种形式的断言是一 “并行断言(concurrentassertion),,,其可以是(时间顺序(clocking sequence))(前项 (antecedent))_>(推论(consequence)),而如此的一断言则是可具有一相对应的NLA形 式,例如,"On positive edge of clock elk, if "a,,occurs then "b,,should occurafter n clock cycles. ”,因此,在此状况下,于所述NLA中对并行断言的三个分开部份进行匹配 就会是一样式匹配(pattern matching)的问题,再者,另一种形式的断言则为变量补充 (variable complementing)(例如,“is not high,,->low)。在一实施例之中,有关识别以及转译的每一个步骤(由所述NLA处理器所执行者) 都可以处理多个断言,因此,在此实施例之中,所述NLA处理器可以包括多个处理器,以用 于平行设置所述些断言的处理程序。再者,一种用以处理NLAs的系统系可以包括一 NLA处理器,以及一组模拟器以及 验证工具,其中,所述NLA处理器接收与一集成电路(IC)的一描述产生关联的多个NLAs, 以及将所述多个NLAs转换为多个验证语言断言(VLAs),另外,所述组模拟器以及验证工具 则可接收所述多个VLAs以及所述IC的所述描述,以及产生指示所述等VLAs的失败的一报
告o


图1是举例说明一示范性NLA处理技术;图2是举例说明包括自动验证的另一示范性NLA处理技术;
图3A是举例说明示范性的控制器RTL码,包括一 RTL识别符,RTL输入/输出码, 嵌入NLAs,以及一终端模块指定符;图3B至图3E是举例说明根据本发明,产生自原始NLAs的VLAs以及已解释NLAs 的示范性编码;图3F是显示通过以NLA为基础的NLP的示例语意树;图4是显示一包括所述NLA处理技术的示范性数字ASIC设计流程的一简化代表 图;以及图5A以及图5B是显示可以执行逻辑设计以及功能性验证的简化系统。
具体实施例方式断言有助于在验证期间增加一 IC设计的控制力以及观察力,但遗憾地是,目前, 在验证期间使用断言常会因在解释其他使用者所撰写的断言时所遭遇的困难而受到阻碍。 因此,依据本发明一方面的构想,一处理程序、及/或处理器可以自动地将一设计者行为的 一易懂英文表达式,在此称为一自然语言断言(NLA, natural language assertion),转译为 一验证语言断言(VLA,verification language assertion)。然后,此VLA会再被转译回 一已解释(interpreted)NLA,因而有助于达成原始的与已解释的NLAs之间的一有意义使 用者检视(user review) 0之后,当所述检视指出在原始与已解释NLAs之间实质上没有不 一致时,所述设计的验证就可以利用VLA来执行,接着,此验证的结果可以回头注解于所述 原始NLA之上。一交通控制器的设计将有助于澄清一 NLA以及一 VLA之间的区别。在一示范的交 通控制器之中,至少五个NLAs可被用来表示适当的操作(1)当显示一绿灯、或黄灯时,交 叉路一定为红灯,(2)灯号的变化一定是依照绿灯、黄灯、以及红灯的惯用顺序,(3)当交通 在等一红灯时,若在交叉路上没有交通,则交通一定被给予一绿灯,(4)即使交叉路有交通, 在红灯等待的交通也一定不会超过五个时间刻度(ticks),以及(5)当感测器指出有交通 时,感测器将不进行重设,直到一绿灯出现为止(没有马上红灯(noright-on-red))。用于这五个NLAs的一组相对应VLAs显示如下(为了让参考更容易,NLAs亦同时 包括在内并显示为斜体)。在此,需要注意的是,在VLAs中表示交叉路的是Main Street以 及 First Street。module traffic_checker#(parameter MAX—WAIT = 5)(input wire elk,
inputwirerst,
inputwirewaiting—main,
inputwirewaiting—first,
inputwiregreen—main,
inputwiregreen_first,
inputwireyellow—main,
inputwireyellow—first,
inputwirered—main,
inputwirered—first);
// 1)When a green or yellow light is showing, the cross street // must get a redlight.assert—hazard—in_first:assert property (@ (posedge elk)(green_first || yellow—first) |->red—main);assert_hazard_in_main:assert property(@(posedge elk)(green—main || yellow—main) | ->red_f irst);// 2)Lights must change in the conventional green, yellow,// red sequence.assert_signal_sequencing_on_first: assert property(@(posedge elk)yellow—first| = >red first[水1:$]green_first[*l:$]##l yellow—first);assert_signal_sequencing—on—main:assert property(@(posedge elk)yellow—main| = >red main[水1:$]green—main[水1:$]##1 yellow—main);// 3)When traffic is waiting dt a red light,it must be// given a green light if there is no traffic on the cross street.assert—green—no—waiting—first:assert property(@(posedgeelk) ( ! waiting—main&& red—first && waiting—first) | = >green_first);assert—green—no—waiting—main:assert property(@ (posedgeelk) ( ! waiting—first&&red—main && waiting—main) | = >green—main);// 4)Traffic must not wait more than 5 ticks at a red light, even// if the cross street has traffic.assert honor—waiting—first:assert property (@ (posedge elk)($rose(waiting_first) &&red_first) | = >##
green—first);assert honor—waiting—main:assert property(@(posedge elk)($rose(waiting—main)&&red—main)| = >##
green—main);// 5)When sensors indicate traffic,they do not rest until a green light appears,(noright-on-red)assume_continuous—waiting—first: assume property(@ (posedgeelk)waiting—first&& green_first| = >waiting—first);assume_continuous—waiting—main:assume property (@ (posedgeelk)waiting—main&& green main+ = >waiting_mian);当比较上述一交通控制器的简单设计的NLA以及相对应VLA时,在了解用于越来越复杂的IC设计的VLAs时所会遭遇的困难就变得显而易见。然而,这些IC设计的所述等 VLAs却是必须的,正如在验证期间所使用的组合与时间逻辑方程序的数学代表式一样。因此,极为需要一种可以自动将一 NLA转译为一 VLA的处理程序/处理器,再者, 一种能够将VLA转译回一已解释NLA的处理程序/处理器将有助于让使用者能够提供相关 于所述原始NLA的一有意义检阅。这些转译则是以图1作为参考而叙述如下。图1举例说明一示范的NLA处理技术100。在步骤101之中,一 NLA可以利用已知 的合成技术而加以识别,举例而言,在一实施例之中,此识别步骤可以利用会搜寻任何NLA 的一模块/档案的Unix指令来执行。另外,步骤101亦可以更进一步地包括其他合成技术, 例如,自暂存器转移层次(RTL,Register Transfer Level)中撷取所述NLA,因而让更进一 步的处理程序仅会以自然语言句子来执行。任何已识别以及已撷取的NLA都可以被复制到 一高速缓冲存储器(cache),以用于更进一步的处理程序,并且,相关于所述已识别NLA的 资讯,例如,档案名称,模块名称,以及行数等,都可以在所述高速缓冲存储器中与所述NLA 产生关联,在一实施例之中,每一个NLA都会在句子的终端具有一句号(period),以确保下 游处理程序可以清楚地标示出所述NLA的终端。此时,在步骤102之中,利用一自然语言解析器(NLP,natural languageparser), 所述NLA可被转译为一 VLA,其中,作为举例的NLP有StanfordParser (例如,第1. 4版), 其目前被发展成为新一代的网际网路搜寻引擎。至于有关一 NLP(例如,所述Stanford Parser)如何运作的背景资讯则是叙述于,举例而言,“Fast Exact Interference with a Factored Model for NaturalLanguage Parsing,,,by Dan Klein and Christopher D. Manning, in Advances inNeural Information Processing Systems 15 (NIPS 2002), Cambridge, MA:MITPress, pp. 3-10 (2003), \)JsR "Accurate Unlexicalized parsing", by Dan Klein andChristopher D. Manning,from Proceedings of the 41st Meeting of the Associationfor Computational Linguistics, pp. 423-430 (2003)之中。在步骤102中所使用的所述NLP可以利用任何能够产生语意树(semantictrees) 的智能查询工具(intelligent query tool)而加以执行,并且,一 NLP可以使用会以在所 述等语意树上运作的动态程序化演算式作为基础,而计算一特定句子的最可能解析的可能 性解析(probabilistic parsing) 0当然,无疑地,为了能适当地进行解析,NLPs的模型可 以针对特殊的语言而加以发展,例如,英文、中文、阿拉伯文、以及德文等。所述NLA处理器用以产生所述VLA的示范技术可以包括,举例而言,文字转换 (text transformation)、文字维持(text maintenance)、以及表达式匹配(expression matching)等,其中,文字转换可以包括,散文至数字的转换(例如,zero->0以及one->l), 以及缩短格式(例如,should not->shouldn' t);文字维持可以利用双引号而进行识 别,举例而言,在所述NLA中的一个“a+b”表达式可以维持原样地继续存在于所述VLA 之中,类似地,当一变量名为一英文字时,就可藉由将所述变量名放入双引号之中而达成 澄清的效果(例如,所述NLA可以陈述,若“a”发生时,则…);以及表达式匹配则是会 在受到句号(periods)约束时查看多个词汇,举例而言,其中一种形式的断言是一“并 行断言(concurrent assertion),,,其可以是(时间顺序(clocking sequence))(前项 (antecedent))_>(推论(consequence)),而如此的一断言则是可具有一相对应的NLA形 式,例如,"On positive edge ofclock elk, if "a,,occurs then "b,,should occur after
8n clock cycles. ”,因此,在此状况下,于所述NLA中对并行断言的三个分开部份进行匹配 就会是一样式匹配(pattern matching)的问题,再者,另一种形式的断言则为变量补充 (variablecomplementing)(例如,“ is not high,,->low)。在一实施例之中,所述NLA中任何位于双引号里的词汇都可被一符记(token)所 取代,所述符记是一独特的识别符,像是ALIAS01,ALIAS02,其可以在输入分析期间被所述 NLP处理为一名词、且可以在所述NLP的语意树输出中被找到为附加有名词性质的标签,而 将所述名词变回原有词汇的简单取代则是可以确保所述词汇在所述NLP处理程序中会被 保存下来,举例而言,“A”可以被一符记,例如,第一个信号,所取代,并且,此取代可以是由 所述NLP处理器自动完成、或是可以被补充以由使用者建议的名称,因此,进入到自然语言 解析器的输入可以完全地被了解为特定的自然(例如,英文)语言要件。需要注意的是,由于对CPU使用时间(CPU Time)而言,转译大量的NLAs会让资源 使用变得密集,因此,在一个实施例之中,一 NLP可以包括多个处理器,以让转译平行地进 行,举例而言,若是所述NLP包括5个处理器且具有1000个NLAs,则每一个处理器可以负责 将200个NLAs转译为VLAs。另外,这些转译也能够以非对称的方式发生,藉以最小化处理 时间。而在所有的转译皆已执行完后,所述NLP的一控制器就可以从所述等各个处理器中 呼叫各个结果,以建立所述等语意树。在此,需要注意的是,每一个语意树都可将一自然语言句子分解为多个语言使用 群集(language use groupings),例如,名词、动词、形容词、副词等,其中,在一实施例之 中,一语意树可以是由多个列表的一列表所组成,且内容中的每一个列表皆可为一元组 (tuple) (2部份)(缩写数值),举例而言,(NN rain)表示名词“rain”。一示范性英文文字以及其语意树叙述如下。The strongest rain ever recorded in India shut down the financial hub ofMumbai, snapped communication lines, closed airports and forced thousands ofpeople to sleep in their offices or walk home during the night,officials said today.语意树(Semantic Tree)(ROOT(S(S(NP(NP(DT The)(JJS strongest)(NN rain)(VP(ADVP (RB ever))(VBN recorded)(PP(IN in)(NP(NNP India)))))(VP(VP (VBD shut)(PRT(RP down))0093](NP
0094](NP(DT the)(JJ financial)(NN hub))
0095](PP(IN of)
0096](NP(NNP Mumbai)))))
0097](,,)
0098](VP (VBD snapped)
0099](NP(NN communication)(NNS lines)))
0100](,,)
0101](VP(VBD closed)
0102](NP(NNS airports)))
0103](CC and)
0104](VP(VBD forced)
0105](NP
0106](NP(NNS thousands))
0107](PP(IN of)
0108](NP(NNS people))))
0109](S
0110](VP (TO to)
0111](VP
0112](VP(VB sleep)
0113](PP(IN in)
0114](NP(PRP$their)(NNS offices))))
0115](CC or)
0116](VP (VB walk)
0117](NP (NN home))
0118](PP(IN during)
0119](NP(DT the)(NN night))))))))))
0120](,,)
0121](NP(NNS officials))
0122](VP (VBD said)
0123](NP-TMP(NN today)))
0124]( ))) 在一实施例之中,每一种语言群集都可具有可被一 VLA产生器读取的一特定描述 符(descriptor),并且,此VLA产生器可以利用在所述语意树的上下文中的语言群集而从 所述NLA建构所述VLA。在一实施例之中,所述VLA产生器会横越所述语意树并造访每个节 点(node),而且,所述VLA产生器可以纪录其已经造访的节点,其已经辨识的样式,以及在 所述树中的当前节点与当前路径的当前状态,然后,部份的表达式会进行匹配,最后,当已 识别出类似一 “并行断言”(每一个次要部份(sub part)都找到一个匹配)的一完整断言 结构时,就会执行变为SVA的转译。
在步骤103之中,所述VLA可以利用一 VLA解析器以及样式匹配技术(pattern matching technique)而被转译回一已解释NLA (NLA*);在步骤104之中,一使用者可以检 阅所述NLA以及从所述VLA所重新产生的NLA* ;在步骤105之中,会执行所述VLA的验证, 在一实施例之中,此验证可以包括模拟以及形式检查;在步骤106之中,所述验证的结果可 以识别哪些失败以及哪些通过,在一实施例之中,模拟、及/或形式验证工具可以藉由一包 括详情(例如,所述断言的档案与行数,以及所述失败的模拟时间)的错误讯息而识别一失 败的断言,并且,所述验证的结果可以回头作为所述NLA上的注解。在一实施例之中,每一个步骤都可以处理多个断言,也就是,在步骤101之中,可 以识别一个模块/档案的多个NLAs,然后,在步骤102之中,所述些已识别的NLAs会被转译 为多个VLAs,接着,在步骤103之中,所述多个VLAs则是会再被转译回多个已解释NLAs,在 此,需要注意的是,在此实施例之中,NLAs可以在模块层次、或档案层次上进行处理。在一个实施例之中,为了提供速度强化的能力,任何新识别的NLA都会在步骤110 之中与已经成功转译的一群NLAs进行比较,而此群NLAs则是可以存储在一高速缓冲存储 器,也就是,若是一 NLA已经进行处理,则所述个处理的结果可以重新被使用,而程序则可 以直接跳至步骤105,以藉此最小化整体的处理程序。但若所述NLA并未经过处理,则程序 会回到步骤102,正如先前所述。特别地是,对于所述高速缓冲存储器的建构可以在任何层次进行,例如,经由设 计、经由使用者、或是经由公司,在一实施例之中,所述高速缓冲存储器可以包括所述NLA, 其语意树,以及其VLA。在此,需要注意的是,藉由将所述语意树以及所述VLA和与其相对应 的NLA产生关联,则接下来若所述NLA自设计中被删除时,所述语意树以及所述VLA亦可以 简单地被删除,藉此可最小化存储空间以及模拟器的使用。需要注意的是,在步骤101的一实施例之中,所述NLA可以被包括在所述IC的所 述RTL(暂存器转移层次,Register Transfer Level)描述之中,而正如熟悉IC设计者所 熟知,所述RTL描述是用于一包括暂存器以及组合逻辑(combinational logic)的同步电 路。通常,暂存器转移层次抽象(abstraction)会被用在HDL之中,以产生一 IC的高阶表 述(high-level r印reservations),当被包括在所述RTL之中时,一 NLA可以跟随一 RTL登 录(RTL entry)而作为一注释。举例而言,如此的一注释可以明确地被识别为一 NLA,且可 使用在所述先前RTL描述中产生关联的(多个)讯号名称,藉此即可将所述NLA与所述个 RTL描述绑在一起。在步骤101的一另一实施例之中,所述NLA可以被包括在一标准字处理文件 (standard word processing document)之中。而且,在所述IC的一 RTL描述可以被取得 之前,此实施例就可以被使用。在此实施例之中,当所述RTL可取得之后,再次地利用所述 的RTL叙述中所使用的所述(等)特殊信号,一额外的段落可以被增加至将每一个NLA与 一特殊RTL叙述绑在一起的文件之中,此型态的NLA实行有助于提供一能适应任何测试平 台的一般文件,也就是,若任何讯号名称因使用一不同的测试平台而改变时,将仅有所述绑 住的段落需要被修改。图2为举例说明包括自动验证的另一示范性NLA处理技术程序200。在程序200 的步骤201之中,会进行一 NLA的识别,此时,在步骤202之中,所述NLA可以利用一 NLP以 及合成技术而被转译为一 VLA。然后,在步骤203之中,所述VLA会利用一 VLA解析器以及样式匹配技术而被转译回一 NLA*,在步骤204之中,所述NLA*可以被转译为一 VLA*,在步骤 205之中,所述VLA以及所述VLA*会进行比较。接着,在步骤206中决定两者是否不相同, 并在步骤207提供使用者一警告,换言之,若是所述VLA以及所述VLA*并没有不相同(亦 即,相同),则步骤208可以执行所述VLA的验证。在一实施例之中,此验证可以包括模拟以 及形式检查。再者,于步骤209之中,所述验证的结果(亦即,哪些失败以及哪些通过的识 别结果)会回头被注解在所述NLA之上。在此,需要注意的是,在一个实施例之中,每一个 步骤都可以处理多个断言(请参阅图1的叙述)。在一个实施例之中,为了提供速度强化的能力,任何新识别的NLA都会在步骤210 之中与已经成功转译、且存储于一高速缓冲存储器中的一群NLAs进行比较,也就是,若是 一 NLA已经进行处理,则处理的结果可以重新被使用,并且程序可直接跳至步骤208,以藉 此最小化整体的处理程序,但若所述NLA并未经过处理,则程序会回到步骤202,正如先前 所述。图3A举例说明示范的控制器RTL码300,其包括一 RTL识别符301 (用以为所述 控制器识别所述模块),RTL输入/输出码302,嵌入NLAs 303 (在此例子中,四个NLAs), 以及一终端模块指定符304,而第图3B至图3E的每一个则是在于举例说明依据本发明, VLAs以及产生自原始VLAs的已解释NLAs的示范性编码,其中,每一个示范编码皆包括一 NLA识别符310 (在此例子中,会指示所述模块的行数),所述原始NLA(0RIG)311,所述已解 释NLA(亦即,NLA*) (INTERP)312,产生自所述NLA*的所述VLA 313 (已标记的第一行),以 及一会约束所述NLA、NLA\以及VLA的约束子句(binding clause) 314。需要注意的是,约 束子句314关联于所述模块的一特定行数,例如,在此例子中,行175(需要注意的是,仅所 述NLA模块中的所述第一行可以产生关联,因为在所述模型中的每一个NLA理论上都可以 利用多行进行表示)。需要注意的是,所述已解释NLA(NLA*)可以将用以澄清的说明反映至所述原始 NLA。举例而言,请参阅第图3C,所述原始NLA为陈述“On thepositive edge of clk[a clock], if ceO_N[clock enable zero]or cel_N [clock enableone]or ce2_N[clock enable two]or ce3_N[clock enable three]rises,,,反之,所述已解释 NLA 则是陈述"On the positive edge of elk, if ce0_N rises or cel_Nrises or ce2_N rises or ce3_ N rises”。因此,在此转译之中,所述NLA处理器已经有效地把发生(rise)展开至每一个 信号,以藉此阐明所述等操作状况。在另一个参照第图3E的实例中,所述原始的NLA为陈 述“then b_ce_id1eshou1d stay high for at least one cycle followed by adxStrb high after 1 cycle”,反之,所述已解释 NLA 则陈述“then b—ce—idle should stay high for at least one clkcycle followed by adxStrb should be at high on elk cycle 1”。因此,在此转译之中,所述NLA处理器已经将“clock”转变为“elk[clock] cycle”,以 藉此阐明所述的词汇,以及更进一步地阐明,每一个暂时的断言仅允许一个取样,亦即,所 叙述的“if-then”子句仅可应用于clock cycle 1期间。再者,第图3F为举例说明用于一 IC设计的一部分的示范性语意树输出320,其藉由以一 NLA作为基础的一 NLP。图4为显示一包括所述NLA处理程序的示范性数字ASIC设计流程的一简化代表 图。在高阶层次中,所述程序开始于产品构想(步骤400),并于一 EDA软件设计程序中实 现(步骤410)。接着,当设计完成后,其就可以进行下线(tape out)(事件440)。而在下线完成后,即开始制造程序(步骤450),以及封装与组装程序(步骤460),最终完成晶片成 品(结果470)。所述EDA软件设计程序(步骤410)实际上是由数个步骤412-430所构成。在此, 为了简化,以线性的方式显示。在一实际ASIC设计程序中,特殊的设计可能需要不断地重 复同样的步骤,直到某些测试通过为止,而类似地,在任何实际设计程序中,这些步骤也有 可能为不同的顺序及组合,因此,此叙述是以前后关联且一般的方式进行解释,而非一特殊 ASIC的特殊、或特别提出的设计流程。接下来即为EDA软件设计程序(步骤410)的构成步骤的简短叙述系统设计(步骤412)设计者叙述其所需要执行的功能,并且可以藉由执 行假设规划(what-if planning)而精进功能、检查成本等。在此阶段,硬件软件架 构(hardware-software architecture)可以分开。作为举例,可以用于此步骤的来自 Synopsys, Inc. ^ EDABnlt^ Model Architect, Saber, System Studio, DesignWare 等产品。逻辑设计与功能性验证(步骤414)在此阶段,会撰写系统中模型的VHDL或 Verilog程序码(Verilog code),并且,会检查此设计的功能正确性,更特别地是,所检查 的设计是否确定会产生正确的输出。作为举例,可以用于此步骤的来自Synopsys,Inc.的 EDA 软件产品就包括 VCS,VERA, DesignWare Magellan, Formality, ESP,以及 LEDA 等产 品。在一实施例之中,所述上述的NLA处理技术可以被包括在任何的模拟以及验证工具组 之中,例如,VCS (模拟)以及Magellan (验证)。测试的合成与设计(步骤416)在此,所述VHDL/Verilog会被转译为净列表 (netlist),并且,所述净列表可依目标技术方法而进行最佳化,此外,亦会进行用以检查最 终晶片的测试设计与实行。作为举例,可以用于此步骤的来自Synopsys,Inc.的EDA软件 产品就包括 Design Compile , PowerCompiler, Tetramax,以及 DesignWare 等产品。净列表检验(步骤418)在此步骤,会检查所述净列表的时序限制 (timingconstraint)的符合度,以及与VHDL/Verilog来源码的对应性。作为举例,可以用 于此步骤的来自Synopsys,Inc.的EDA软件产品就包括Formality,PrimeTime,以及VCS
寸j 口口。设计规划(步骤420)在此,会建立晶片的整体平面图,并分析时序与顶层路线 (top-level routing)。作为举例,可以用于此步骤的来自Synopsys,Inc.的EDA软件产品 就包括Astro,以及IC Compiler等产品。实体实行(步骤422)配置(电路元件的定位)以及路线分配(电路元件的连接) 都会在此步骤中执行。作为举例,可以用于此步骤的来自Synopsys,Inc.的EDA软件产品 就包括Astro,以及IC Compiler等产品。分析与撷取(步骤424)在此步骤,电路功能会在电晶体层次进行验证,而此则是 会依序实现假设精进(what-if refinement)。作为举例,可以用于此步骤的来自Synopsys, Inc.的 EDA 软件产品就包括 AstroRail, PrimeRail, PrimeTime,以及 Star RC/XT 等产品。实体验证(步骤426)在此步骤,会执行各种的检查功能,以确保制造、电性任 务、平版印刷任务、以及电路系统的正确性。作为举例,可以用于此步骤的来自Synopsys, Inc.的EDA软件产品包括Hercules这项产品。
解析度强化(步骤428)此步骤牵涉到布局的几何操作,以改进所述设计的可制 造性。作为举例,可以用于此步骤的来自Syn0psys,lnc.的EDA软件产品就包括Proteus, ProteusAF,以及 PSMGen 等产品。遮罩资料准备(步骤430)此步骤提供用于生产最终晶片时,产生平版印刷所使 用的遮罩(mask)的下线(tape-out)资料。作为举例,可以用于此步骤的来自Synopsys, Inc.的EDA软件产品包括CATS (R)家族的产品。图5A举例说明可以执行前述的逻辑设计以及功能性验证(步骤414)的一简化系 统500。在系统500之中,一 NLA处理器502可以接收一 IC的一 RTL描述以及其嵌入在所 述RTL描述中的相对应NLA,正如输入501A,并且,利用输入501的所述NLA部份(以及忽 略所述RTL部份),NLA处理器502可以产生相对应的VLAs 503,然后,模拟器以及验证工 具504可以接收VLAs 503以及输入501 (其中,因为所述等NLAs是注释,所以,实际上仅输 入501的所述RTL部份会被工具504所读取),以产生一或多个报告505,在一实施例之中, 报告505可以用来识别落在所述RTL描述的上下文中的所述等VALs。此时,NLA处理器502有助于将如此的失败的VLAs转译回已解释NLAs,并产生比 对506,以藉此允许一使用者比较所述等原始NLAs以及已解释NLAs,以及检查错误。而在 一另一实施例之中则是,NLA处理器502可以将所有VLAs皆转译回已解释NLAs,以产生比 对506。之后,根据比对506的结果,NLA处理器502可以回头于输入501A的所述NLA部份 上加上注解。在一显示于图5B的另一实施例之中,所述具NLA嵌入的RTL描述501A可以被一 仅RTL的描述501B所取代。在此例子之中,系统510可以将一般的NLAs (gNLAs)与一约束 段落(BP,binding paragraph)(亦即,输入507),以及所述仅RTL描述501B,提供至NLA处 理器502。之后,利用输入507,所述NLA处理器502可以产生相对应的VLAs 503。在此,需 要注意的是,所述NLA处理器502亦可以接收RTL 501B,以识别所述IC设计的埠(ports)/ 变数(variables),并检查所述NLA是否关联至存在于所述设计中的物件(object)。然后, 模拟器以及验证工具504可以接收VLAs 503以及仅RTL描述501B,以产生一或多个报告 505。另外,在一个实施例之中,报告505可以用来识别落在所述RTL描述的上下文中的所 述等VALs。此时,NLA处理器502有助于将如此的VLAs转译回已解释NLAs,并产生比对506, 以藉此允许一使用者比较所述等原始NLAs以及已解释NLAs,以及检查错误。而在一另一 实施例之中则是,NLA处理器502可以将所有VLAs皆转译回已解释NLAs,以产生比对506。 之后,根据比对506的结果,NLA处理器502可以回头于输入507的所述约束段落上加上注解。以上叙述的是用于NLAs的一处理程序以及一处理器,在概念上,所述处理程序/ 处理器的特征可以视为包括二种不同的技术。在第一种技术中,广义地说是,将所述NLA转 换为一 VLA,所使用的是不需要演算的技术,实质上,此技术是一种形式的人工智慧,另外, 在第二种技术中,广义地说是,将所述VLA转换为一已解释NLA,所使用的就是需要演算的 技术,也就是,所述VLA基本上是一数学表达式,而这些特殊的码转换则可以提供验证工具 的使用者相当重要的好处,亦即,让使用者能够通过所述NLA以及所述已解释NLA之间的一 比较而提供有关所述VLA的一有意义检阅,而此检阅则是可以促进所述VLA的错误校正,且大部分、或所有的步骤皆是由所述NLA处理器自动执行。本发明可以在一、或多个电脑程序中实行,而此程序则是在包括至少一可程序化 处理器的一可程序化系统上执行,以将资料以及指示接收自、以及传输至一资料存储系统, 至少一输入装置,以及至少一输出装置,其中,每一个电脑程序都可以实行为高阶程序的 (high-level procedural)、或物件导向的(object-oriented)程序设计语言,或者,有需要 的话,实行为组合(assembly)、或机械(machine)语言。并且,在任何状况下,所述语言都 可以是一编译(compiled)、或解释(interpreted)语言。另外,适合的处理器包括,举例而 言,一般与特殊用途的微处理器,以及其他型态的微控制器,一般而言,一处理器将会接收 来自一只读存储器、及/或一随机存取存储器的指令与资料。并且,通常,一电脑会包括一、 或多个大量存储装置,以存储资料档案,其中,如此的装置包括磁盘,例如,内部硬盘以及卸 除式磁盘,磁光(magneto-optical)磁盘,以及光盘(optical disks)。另外,适合明确进行 电脑程序指令与资料的具体化的存储装置包括,所有形式的非挥发性存储器,包括,举例而 言,半导体存储器装置(例如,EPROM, EEPR0M,以及快闪存储器装置),磁盘(例如,内部硬 盘以及卸除式磁盘),磁光磁盘,以及CDR0M磁盘等。前述任者都可通过集成电路而,或并入 补充集成电路(ASICs)。虽然本发明用以举例说明的实施例已经以所附图式做为参考而进行详细的叙述, 但需要了解的是,本发明并不受限于所述些特定的实施例,并且,这些实施例的目的并不 在于对本发明进行详尽的叙述、或将本发明限制为所揭示的特定形式。因此,就其本身而 言,许多修饰以及变化都将是显而易见。举例而言,在其他的实施例之中,可以使用一不同 的NLP,包括一对手边的任务完全专属的NLP,在此,需要注意的是,一自然语言可被用以 描述不仅是断言,亦可描述同样可于一 HDL、或测试平台语言中被转换的测试计画、涵盖点 (coverage points)、以及限制(constraints),在一又一其他实施例之中,所述终端使用者 可以具体指定在所述NLA以及VLA之间转换的规则。据此,本发明的范围是藉由接下来的 权利要求书以及与其等义的内容而加以定义。
权利要求
一种处理自然语言断言(NLA)的方法,该方法包括识别一NLA;利用一自然语言解析器(NLP)以及合成技术,将该NLA转译为一验证语言断言(VLA);利用一VLA解析器以及样式匹配技术,将该VLA转译为一已解释NLA(NLA*);允许该NLA*以及该NLA的使用者检阅;以及利用以使用者检阅作为基础的该VLA而执行验证。
2.根据权利要求1所述的方法,更包括将该验证的结果回头注解于该NLA上。
3.根据权利要求2所述的方法,其中各识别以及转译步骤处理多个断言。
4.根据权利要求1所述的方法,更包括将该NLA与在一高速缓冲存储器中的一组NLA 进行比较,并在该NLA匹配于该组NLA中的一个NLA时,直接继续执行验证,其中,利用储存 在该高速缓冲存储器中、且与该匹配的NLA关联的一 VLA执行该验证。
5.根据权利要求4所述的方法,更包括,当该NLA不匹配于该个NLA时,继续进行该转译。
6.一种包括自动验证的处理自然语言断言(NLA)的方法,该方法包括 识别一 NLA ;利用一自然语言解析器(NLP)以及合成技术,将该NLA转译为一验证语言断言(VLA);利用一 VLA解析器以及样式匹配技术,将该VLA转译为一已解释NLA(NUO ;将该NLA*转译为一已解释VLA (VLA*);比较该VLA以及该VLA* ;当该VLA与该VLA*不相同时,提供一警告;以及当该VLA与该VLA*不是不相同时,利用该VLA执行验证。
7.根据权利要求6所述的方法,更包括将该验证的结果回头注解于该NLA上。
8.根据权利要求7所述的方法,其中,各识别以及转译步骤处理多个断言。
9.根据权利要求6所述的方法,更包括将该NLA与在一高速缓冲存储器中的一组NLA 进行比较,并在该NLA匹配于该组NLA中的一个NLA时,直接继续执行验证,其中,利用储存 在该高速缓冲存储器中且与该已匹配的NLA关联的一 VLA执行该验证。
10.根据权利要求9所述的方法,更包括,当该NLA不匹配于该个NLA时,继续进行该转译。
11.一种电脑可读媒体,其储存用以处理自然语言断言(NLAs)的电脑可执行指令,且 在由一电脑执行时进行下列步骤识别一 NLA ;利用一自然语言解析器(NLP)以及合成技术,将该NLA转译为一验证语言断言(VLA); 利用一 VLA解析器以及样式匹配技术,将该VLA转译为一已解释NLA(NUO ; 允许该NLA*以及该NLA的使用者检阅;以及 利用以使用者检阅作为基础的该VLA而执行验证。
12.根据权利要求11所述的电脑可读媒体,更包括将该验证的结果回头注解于该NLA 上的步骤。
13.根据权利要求12所述的电脑可读媒体,其中,各识别以及转译步骤处理多个断言。
14.根据权利要求11所述的电脑可读媒体,更包括下列步骤将该NLA与在一高速缓冲存储器中的一组NLA进行比较,并在该NLA匹配于该组NLA 中的一个NLA时,直接继续执行验证,其中,利用储存在该高速缓冲存储器中、且与该已匹 配的NLA关联的一 VLA执行该验证。
15.根据权利要求14所述的电脑可读媒体,更包括下列步骤 当该NLA不匹配于该个NLA时,继续进行该转译。
16.一种电脑可读媒体,其储存用以处理自然语言断言(NLAs)的电脑可执行指令,且 在由一电脑执行时系会进行下列步骤识别一 NLA ;利用一自然语言解析器(NLP)以及合成技术,将该NLA转译为一验证语言断言(VLA);利用一 VLA解析器以及样式匹配技术,将该VLA转译为一已解释NLA(NLf);将该NLA*转译为一已解释VLA (VLA*);比较该VLA以及该VLA* ;当该VLA与该VLA*不相同时,提供一警告;以及当该VLA与该VLA*不是不相同时,利用该VLA执行验证。
17.根据权利要求16所述的电脑可读媒体,更包括将该验证的结果回头注解于该NLA 上的步骤。
18.根据权利要求17所述的电脑可读媒体,其中,各识别以及转译步骤处理多个断言。
19.根据权利要求16所述的电脑可读媒体,更包括下列步骤将该NLA与在一高速缓冲存储器中的一组NLA进行比较,并在该NLA匹配于该组NLA 中的一个NLA时,直接继续执行验证,其中,利用储存在该高速缓冲存储器中且与该已匹配 的NLA关联的一 VLA执行该验证。
20.根据权利要求19所述的电脑可读媒体,更包括下列步骤 当该NLA不匹配于该个NLA时,继续进行该转译。
21.一种用以处理自然语言断言(NLA)的系统,该系统包括一 NLA处理器,用以接收与一集成电路(IC)的一描述关联的多个NLA,以及将该多个 NLA转换为多个验证语言断言(VLA);以及一组模拟器以及验证工具,用以接收该多个VLA以及该IC的该描述并产生指出该VLA 的失败的一报告。
全文摘要
一种处理自然语言断言(NLA)的方法可包括识别NLA以及接着利用自然语言解析器(NLP)以及合成技术而将所述NLA转译为一验证语言断言(VLA),可利用VLA解析器以及样式匹配技术将VLA转译为一已解释的NLA(NLA*),此时,程序可允许使用者检阅所述NLA*以及所述NLA,然后,当所述使用者确定所述NLA*与所述NLA彼此相同、或具有的差异很微小时,就利用所述VLA执行验证,而验证的结果则是接着会回头被注解于所述NLA上。在完全自动的实施例中,除了比较所述NLA以及所述NLA*之外,所述VLA也可以与一VLA*(产生自所述NLA*)进行比较,藉此在验证期间为使用者提供另一准确性的测试。
文档编号G06F17/27GK101884040SQ200980000269
公开日2010年11月10日 申请日期2009年9月1日 优先权日2009年1月12日
发明者亚兰·M·道格拉斯 申请人:新诺普系统公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1