用于验证数模转换器设计的方法

申请号 CN201210404564.2 申请日 2012-10-23 公开(公告)号 CN103780259A 公开(公告)日 2014-05-07
申请人 飞思卡尔半导体公司; 发明人 王成; 梁超; 钟耿;
摘要 本 发明 涉及用于验证 数模转换 器设计的方法。公开了一种产生 数模转换器 (DAC)的验证设计的方法,该方法从提供DAC的HDL表示开始。对于数字输入 信号 的一定范围的数值的根据DAC的表示的模拟 输出信号 的数值以 模拟器 来模拟。模型被用来将模拟输出信号的模拟数值转换成数字格式与 输入信号 相同的等效模型信号的数值。比较器将输入信号的数值与模型信号进行比较,并且确定比所规定的容差大的差。
权利要求

1.一种产生数模转换器(DAC)的验证设计的方法,其中所述DAC将数字输入信号转换成模拟输出信号,所述方法包括:
提供所述DAC的硬件描述语言(HDL)表示;
使用模拟器,以用于对于所述数字输入信号的数值范围根据所述DAC的所述表示来模拟所述模拟输出信号的数值;
使用模型,以用于将所述模拟输出信号的所模拟的数值转换成数字格式与所述数字输入信号相同的等效模型输出信号的数值;以及
将所述数字输入信号的数值与所述模型输出信号进行比较,并且检测比所规定的容差大的数值差。
2.根据权利要求1所述的方法,其中所述HDL表示是Verilog-AMS语言的。
3.根据权利要求2所述的方法,其中所述模拟、所述模型和所述比较是系统Verilog检验器的非合成部分。
4.根据权利要求1所述的方法,其中所述模型是模数转换器(ADC)。
5.根据权利要求4所述的方法,其中所述比较将在规定时间所述模型输出信号的数值和所述数字输入信号的数值之间的差与所述规定的容差进行比较。
6.根据权利要求5所述的方法,其中所述规定时间是相对于所述数字输入信号的数值的变化的时间。
7.一种非临时性机器可读介质,包含可由计算机系统执行的指令,其中所述指令在用于将数字输入信号转换成模拟输出信号的数模转换器(DAC)的硬件描述语言(HDL)表示上操作,其中所述指令执行以下步骤:
对于所述数字输入信号的数值范围根据所述DAC的所述HDL表示来模拟所述模拟输出信号的数值;
将所模拟的数值转换成数字格式与所述数字输入信号相同的等效模型输出信号的数值;以及
将所述输入信号的数值与所述模型输出信号进行比较,并且确定比所规定的容差大的差。
8.根据权利要求7所述的非临时性机器可读介质,其中所述HDL表示是Verilog-AMS语言的。
9.根据权利要求7所述的非临时性机器可读介质,其中模数转换器(ADC)被用来将所模拟的数值转换成所述等效模型输出信号的数值。
10.根据权利要求9所述的非临时性机器可读介质,其中比较器将在规定时间数字格式的所述模型信号的数值和所述输入信号的数值之间的差与所述规定的容差进行比较。

说明书全文

用于验证数模转换器设计的方法

技术领域

[0001] 本发明涉及电子电路的设计和验证,并且更特别地,涉及用于验证数模转换器的设计的方法。

背景技术

[0002] 电子设计自动化(EDA)工具通常被用来设计和验证可以包括许多不同类型的模的集成电路(IC)。硬件描述语言(HDL)是用来描述IC设计、它们的操作和它们在IC内的关系的语言。用于数字电路的常见的HDL是被标准化为IEEE 1364的Verilog,而用于模拟和混合信号(AMS)电路的常见的HDL是Verilog-AMS,其具有选项数字中心混合信号验证,被称为DMS选项,以及被标准化为IEEE标准1076.1-1999的VHDL。验证包括验证将由IC结构及其模块和元件产生的性能以及为模块和元件及它们的相互关系所选的电特性。
[0003] 数模转换器(DAC)接收数字输入信号并且产生等效值的模拟输出信号。在设计阶段对DAC性能的验证避免了合成真实的硬件模块和元件,以及避免制造和测试物理原型,所述合成及制造和测试是费的、昂贵的及耗时的任务,并且另外还在设计缺陷和制造缺陷之间留下了不确定性。使用DAC的HDL表示,期望从其设计中获得的性能能够使用模拟器或检验器来验证,该模拟器或检验器会在数学上计算出期望从详细的设计中获得的性能特性。然后,针对设计的变化能够重做模拟和验证。但是,如果模拟必须被配置用于运行不同输入信号范围的情形,并且根据规格相应的所期望的输出信号必须在模拟之前计算,验证过程是不便且缓慢的。附图说明
[0004] 本发明通过举例的方式来说明,并且不由其在附图中示出的实施例所限制,在附图中,相同的标记指示相似的元件。附图中的元件出于简单和清晰起见而示出,而不一定按比例绘制。
[0005] 图1是以举例方式给出的根据本发明的一种实施例的用于模拟和验证DAC的设计的操作的计算机系统的示意性框图
[0006] 图2是示出以举例方式给出的根据本发明的一种实施例的在模拟和验证DAC的设计的操作的方法中由图1的计算机系统执行的操作的示意性框图;
[0007] 图3是用于将DAC输出信号的模拟数值转换成与DAC的输入信号相同数字格式的等效模型信号的数值的程序模型的指令列表的一个实例;以及
[0008] 图4是在用于将输入信号的数值与图3的模型所产生的模型信号进行比较的程序中的指令列表的一个实例;以及
[0009] 图5是示出与DAC的输入和输出信号对应的波形以及根据本发明的一种实施例的模型的图表。

具体实施方式

[0010] 图1和2示出了用于执行程序100的计算机系统以及用于产生将数字输入信号DAC_IN转换成模拟输出信号DAC_OUT的数模转换器(DAC)的验证设计的方法200。程序100包括包含于非临时性的机器可读的存储器内的并且可由计算机系统102执行的指令。程序100和方法200包括提供DAC的硬件描述语言(HDL)表示104。对于输入信号DAC_IN的一定范围的数值,模拟器106根据DAC的HDL表示104来模拟输出信号DAC_OUT的数值。模型108被用来将输出信号DAC_OUT的模拟数值转换成数字格式与输入信号DAC_IN相同的等效模型信号ADC_OUT的数值。比较器110将输入信号DAC_IN的数值与模型信号ADC_OUT进行比较并生成大于规定容差的差。注意,在本说明书和附图中,也可以输入信号用I/P来表示,而输出信号用O/P来表示。
[0011] 在本例中,HDL表示104是用Verilog AMS语言表示的,该Verilog AMS语言可以使用DMS选项。模拟器106、模型108和比较器110是系统Verilog检验器的非合成部分。与DAC的数字信号宽度、参考电压精度相关的模拟器106的参数由用户来配置。在本例中,模型108是ADC,并且比较器110将在规定时间处于数字格式的模型信号的数值和输入信号的数值之间的差与规定的容差进行比较。规定时间是相对于输入信号的数值的变化的时间。
[0012] 更详细地,如图1所示,程序100包括可由计算机系统102执行的且包含于计算机系统102中的非临时性的机器可读的介质内的指令。被设计并被验证的DAC的HDL表示104与诸如DAC和ADC的预定电源电压VSUPPLY和最高有效位(‘MSB’)、用于ADC模型108的操作的数据宽度和延迟以及在模型信号ADC_OUT和输入信号DAC_IN之间所容许的最大偏移之类的设计参数一起被输入系统102(例如,由用户手动输入)。验证被嵌Verilog检验器内,并且在由用户选择时自动执行。然后,用户能够进行设计改变并验证该改变的性能。
[0013] 应当意识到,各种方法都可用于HDL表示104的准备,并且任何适用的方法都可以用来提供HDL表示104。
[0014] 现在参照图2,方法200还包括以下步骤:在模拟器106中模拟输出信号DAC_OUT的数值,在ADC模型108中将输出信号DAC_OUT的模拟数值转换成等效模型信号ADC_OUT的数值,以及在比较器110中将输入信号DAC_IN的数值与模型信号ADC_OUT进行比较。用于表示输入信号DAC_IN的从其最大的MSB-1到0的范围的数值在202被连续施加于模拟器108。模拟器106在204根据由用户输入的参数来计算对应的输出电压DAC_OUT的数值,并且在206将数值提供给ADC模型108。
[0015] ADC模型108在208接收对应的输出电压DAC_OUT的数值,并且还接收电源电压VSUPPLY的数值。在210,ADC模型108根据由用户输入的诸如用于ADC模型108的运行的数据宽度和延迟之类的参数来计算数字格式与输入信号DAC_IN相同的等效理想模型信号ADC_OUT的数值。ADC模型108在212提供模型信号ADC_OUT。
[0016] 比较器110在214于参数DELAY所确定的时间确定在来自步骤202的数字输入信号DAC_IN的数值与来自步骤212的数字模型信号ADC_OUT的数值之间的差。比较器110在进行比较和确定差时具有容差值OFFSET,该容差OFFSET在一种实施例中由用户设定。在216,显示器通过显示通过或失败来指出数值的偏移是否大于所规定的容差。
[0017] 图3示出了语言为Verilog-AMS的能够用来实现电压监控ADC模型108的程序模块的实例。在300,常量及规则(discipline)的现有数据库指定。在302,除了输出变量data_out以外,还有在模型ADC的计算中使用的输入变量adc_trigger、voltage_input和vsupply被规定。在304,在计算中使用的参数daco_ADC_DATA_WIDTH、daco_MSB和daco_LSB的值被规定。在306,在计算中使用的输入变量voltage_input_real和vsupply_real及中间变量value_pre的值被指定为从由HDL描述104所描述的真实DAC中得出的那些值,为整数值。在308,用于计算的输入及中间变量的初始值被设定。在310,计算被指定为于输adc_trigger的正沿处重复。中间变量value_pre根据作为voltage_input_real输入ADC的DAC的电压输出以及作为vsupply_real的参考电压输入来入计算。变量value_pre的值在它变为大于daco_MSB时被用来代替daco_MSB的电流值,并且然后在312被指派作为ADC的输出。模型在314被指定在计算中连续地使用等于电源电压V(vsupply)的电源电压vsupply_real。模块结束于316。
[0018] 图4示出了语言为Verilog-AMS的能够被用来实现自我测量(自动比较器)110的程序模块的实例。在400,在计算中使用的参数ADC_DATA_WIDTH、OFFSET和CHECK_DELAY的值被指定,并且它们的值被规定。在402,在比较器中使用的输入变量dac_data_in、adc_data_out的值被规定为在真实DAC的模拟106中使用的数字输入、以及ADC 108的计算的相应输出(数值的)。自动比较器110的输出被指定为触发器adc_trigger。在404,触发器adc_trigger被定义为初始为0的单数位二进制数,该触发器adc_trigger的正沿在自输入dac_data_in的改变起的时间延迟DELAY之后出现,而其负沿在一个时间要素之后出现。在406,例程指定:如果输入值dac_data_in和adc_data_out之间的差在触发器adc_trigger的负沿时刻大于参数OFFSET,则“fail”被显示,而如果差小于参数OFFSET,则“success”被显示。模块结束于408。
[0019] 自我测量(ADC模型)108和自动比较器110模块通过例如下面的程序单元而嵌入Verilog AMS DAC设计和模拟工具中,例如:
[0020]
[0021] 图5以图表示出了使用本发明的程序和方法模拟和验证的随时间变化的值。波形DAC_DAT_In和Testbench_ADC_output(分别对应于图3和4中的data_out和adc_data_out)示出了值的最低有效位(LSB),并且因此指示对应值的变化的时序。值被指定为以十六进制表示的从11至0的范围,并且波形的数目表示十六进制表示的乘以10的值。波形DAC_OUTPUT示出了DAC电压输出的模拟值。能够看出,由于HDL描述104所描述的模拟的DAC204的缺陷,波形DAC_OUTPUT的台阶和ADC 108的Testbench_ADC_output的数字输出的相应变化偏离了到DAC 204的数字输入DAC_DAT_In的变化。比较器110在自输入dac_data_in的变化起的时间延迟DELAY之后确定这些时间上的偏移在由触发器adc_trigger所定义的时刻是否在由用户定义的容差OFFSET内。
[0022] 验证在不需要事先针对不同的输入值计算理想的DAC的预期输出电压的情况下以及在没有为设计工具所必需的任意其它改变的情况下自动以EDA工具来执行。方法和程序能够用于不同的验证环境中,例如,具有或没有DMS选项的基于AMS的SOC验证、模块级验证和晶体管级模拟。
[0023] 本发明的方法可以至少部分地在含有用于在计算机系统上运行的计算机程序的非临时性的机器可读的介质中实现,该程序至少包括用于执行根据本发明的方法在可编程的装置(例如,计算机系统)上运行时的步骤或者使可编程的装置能够执行根据本发明的设备或系统的功能的代码部分。
[0024] 计算机程序是一系列指令,例如,特定的应用程序和/或操作系统。计算机程序可以包括例如下列项中的一个或多个:子例程、函数、过程、对象方法、对象实现、可执行的应用、小应用程序、小服务程序、源代码、目标代码、共享库/动态装载库和/或被设计用于在计算机系统上执行的其它指令序列。
[0025] 计算机程序可以在内部存储于计算机可读的存储介质上或者经由计算机可读的传输介质传输到计算机系统。所有或某些计算机程序可以被永久地、可移除地提供于非临时性的计算机可读介质上,或者被远程提供于与信息处理系统耦接的非临时性的计算机可读介质上。计算机可读的介质可以包括例如但不限于下列项中的任意数目的项:磁存储介质,包括磁盘和磁带存储介质;光存储介质,例如,光盘介质(例如,CD-ROM、CD-R等)和数字化视频光盘存储介质;非易失性存储器的存储介质,包括基于半导体的存储单元,例如,闪存、EEPROM、EPROM、ROM;磁数字存储器;MRAM;易失性存储介质,包括寄存器、缓冲器或缓存、主存储器、RAM等;以及数据传输介质,包括计算机网络、点对点通信设备和载波传输介质,仅举几例。
[0026] 计算机过程典型地包括执行(运行)程序或者程序、当前程序值和状态信息的一部分,以及由操作系统用来管理过程的执行的资源。操作系统(OS)是管理计算机资源的共享并且给程序员提供用来访问这些资源的接口软件。操作系统处理系统数据和用户输入,并且通过将任务和内部系统资源作为服务分配给系统的用户和程序并管理它们来作出响应。
[0027] 计算机系统可以例如包括至少一个处理单元、关联的存储器和一定数目的输入/输出(I/O)设备。当执行计算机程序时,计算机系统根据计算机程序来处理信息并且经由I/O设备来产生合成输出信息。
[0028] 在前面的说明书中,本发明已经参照本发明的实施例的具体实例进行了描述。但是,很明显,在不脱离所附的权利要求书所阐明的本发明的较宽的精神和范围的情况下可以对本发明的实施例进行各种修改和改变。
[0029] 术语“断言”或“设定”和“否定”(或“取消断言”或“清除”)在涉及将信号、状态位或类似的装置进入其逻辑真或逻辑假的状态时被分别使用于此。如果逻辑真的状态是逻辑电平1,则逻辑假的状态是逻辑电平0。而如果逻辑真的状态是逻辑电平0,则逻辑假的状态是逻辑电平1。
[0030] 本领域技术人员应当意识到,在逻辑块之间的界限只是说明性的,并且可替换的实施例可以合并逻辑块或电路元件或者将可替换的分解功能强加于各种逻辑块或电路元件上。因而,应当理解,本文所描绘的体系结构只是示例性的,并且实际上能够实现可实现相同功能的许多其它体系结构。类似地,用于实现相同功能的任意构件布局都是有效“关联的”,使得所期望的功能得以实现。因此,为实现特定功能而结合的任意两个构件能够被看作是彼此“关联的”,使得所期望的功能得以实现,不考虑体系结构或中间构件。同样地,这样关联的任意两个构件同样能够被看作是彼此“在操作上连接的”或者“在操作上耦接的”,以实现所期望的功能。
[0031] 而且,本领域技术人员应当意识到,在上述操作之间的界限仅仅是说明性的。多个操作被结合成单个操作,单个操作被分配于另加的操作中,并且操作可以在时间上至少部分重叠地执行。而且,可替换的实施例可以包括特定操作的多个实例,并且在各种其它实施例中可以改变操作的顺序。
[0032] 此外,本发明并不限制于在不可编程的硬件中实现的物理设备或单元,但是也能够应用于能够通过根据适用的程序代码来操作而执行所期望的设备功能的可编程的设备或单元中,例如,大型机(mainframe)、小型机、服务器、工作站、个人计算机、笔记本电脑个人数字助理、电子游戏机汽车及其它嵌入式系统、手机和其它各种无线设备,在本申请中被共同表示为“计算机系统”。
[0033] 在权利要求书中,词“包括”或“具有”除了权利要求书中所列出的那些元件或步骤外并不排除其它元件或步骤的存在。而且,在此所使用的术语“一(a)”或“一个(an)”被定义为一个或多个。此外,即使在相同的权利要求包括引入性短语“一个或多个”或“至少一个”和不定冠词(例如,“一(a)”或“一个(an)”)时,引入性短语(例如,“至少一个”和“一个或多个”)的使用也不应被理解为暗示着通过不定冠词“一(a)”或“一个(an)”所实现的另一个权利要求元件的引入将含有该引入的权利要求元件的任意特定的权利要求限制于仅含有一个该元件的发明。对于定冠词的使用同样如此。除非另有说明,诸如“第一”和“第二”之类的术语被用来任意地区分此类术语所描述的元素。因而,这些术语并不一定是要指示此类元素的时间先后或其它次序。某些措施在不同的权利要求中互相引用的事实并不表示这些措施的组合无法有利地使用。
QQ群二维码
意见反馈