如何选择正确的芯片验证方法
时间:09-18
来源:互联网
点击:
3.6 等效性验证
为了确认门级表示法与HDL实现是相同的,需要实施等效性检验,使用匹配点并比较这些匹配点之间的逻辑。检验中会生成一个数据结构并比较在相同的输入模式下得出的输出数值模式,如果这些输出数值模式不相同,那么表示法(这里指门级和RTL级)就不是等效的。当表示法中的一个经过了某种类型的变换时,等效性检验有时会在两个门级网表或两个RTL级实现之间进行。
造成设计表达式差异的一些实际原因包括:
1) 综合算法/探索式方法:根据对综合工具的约束条件(区域、时间、功率)不同,综合工具会对逻辑运算进行优化,以得到适当的门级表式。为此,综合工具将采用探索式方法和逻辑最小化算法。
2) 抽象级:在采用HDL来实现设计时,由于语言的局限性或是缺乏(不具备)对综合工具如何解释特定语言结构并将其变换为门级表式的预测能力,因此,HDL实现有可能与设计者意图存在一定的差异。
4 影响验证技术的趋势和力量
4.1 技术视角
设计错误可能出现在模块接口处或是在模块内部,它们最终会集成在一起形成芯片。举例而言,那些在模块级没有被发现的缺陷在应用动态仿真时会在子系统或系统级上显露出来。使用静态功能验证,模块开发的每一步都会得到详尽的验证,从而确保子系统/系统质量和可靠性从根本上得到提高。有人认为,使用静态/形式功能验证,能够更快地找到更多的缺陷。
另一方面,使用静态功能验证也存在以下缺陷:
1)现有的工具只能在模块级运行;
2)通常不能处理大型设计(一般只能处理100~150K的门电路);
3)不能处理高度复杂的设计;
4)现有的形式验证工具有时会出现时间无限的问题(这主要是因为它们往往是基于一套探索程序,而不是任一算法)。这意味着形式功能验证在一些情况下可能会比动态仿真花费更长的时间;
5)设计必须被写为可综合的RTL形式。
除了上述技术上的挑战外,基于断言的形式功能验证的两个竞争标准(PSL对SystemVerilog)也带来了额外的问题。目前倾向于将静态功能验证方法用于验证足够成熟以备综合的模块,动态验证(随机和定向)用于严格验证集成前的模块。
目前,动态仿真还将继续主宰功能验证领域,直到形式验证工具提供一种更成熟的方法。
4.2 语言视角
可以观察到这样一个趋势,就是将设计和验证语言结合在一起。这将极大地促进生产率,改进系统可靠性以及提高设计质量,因为使用多种工具和语言引发的不明确和误解问题将得到消除。
在这一结合实现之前,公司要继续依赖现有的高级设计语言(Verilog和VHDL),并选择是使用专有验证语言(Open-VERA、E等),还是过去流行的Verilog和VHDL 。
SystemC与其他高级设计描述语言在设计流程中扮演着重要角色,其中涉及硬/软件折衷以及在硬件上运行软件的设计(如SoC)。另外,它们也可用于架构建模及确认,当可以为应用事务模型的验证使用架构模型组件时,也可以使用 SystemC。
5 选择正确的验证方法的标准
在当前缩短上市时间和迫切要求低成本的环境下,工程师正在设法解决设计复杂性问题。那些在新技术上投入更多研发精力的公司,其研发费用的使用更有效率,产品上市时间更短,公司成长更快,盈利更高。另外,公司必须在其特有需求与核心价值的基础上评估方法和技术。在将新技术引进其工具流程时,它们应当考虑以下问题,并做出适当的权衡。
1)在某个生产线中,公司是市场领先者还是追随者?
2)基础设施、工具和方法是集中式的还是分布式的?
3)新验证技术的评估是针对第一代产品进行的吗?
4)新验证技术对成本和产品上市时间有何直接和间接影响?
5)新的工具能否处理不同的设计能力?
6)工具的易用性如何?
7)可为新的工具提供什么水平的文档和支持?
8)新的工具和方法与公司内部现有的工具和方法之间是否具有互操作性?
9)新工具的投资回报率(ROI)如何?(包括在服务、培训、咨询、计算和人力资源方面的投资)
10)新的工具是否能够支持处于多个不同地理位置的设计?
11)公司需要考虑的问题中,最为重要的问题之一可能是:我们雇用的设计师和验证工程师是否对新的工具抱有成见?(即设计师不愿意学习和接受新的技术)
公司在做出关于工具、语言和方法的决策时可以采用以下介绍的简单权衡方法。
5.1 产品视角
主要从事存储器芯片或存储器密集型(相对于逻辑密集型而言)芯片生产的公司讶SRAM和DRAM公司可能根本不需要进行大量的逻辑验证。这些芯片大多是定制的。虽然这些产品中有些规模会很大,但它们的逻辑复杂性并不高,因而不支持在公司内部配备大量逻辑验证工具的计划。不过,存储器密集型设计在其他方面提出了挑战,例如布线、工艺变化以及功率等。
那些制造纯ASIC芯片,在芯片上不运行任何软件的公司可能无须在硬件或是软件实现上进行权衡或是实施测试以捕获运行于硬件之上的软件。例如,只具有硬件的SERDES芯片所要求的验证和建模方法与同时具有硬件和软件的SoC是不同的。
对于拥有多种产品线的大公司来说,验证方法必须满足各种产品的不同要求。
为了确认门级表示法与HDL实现是相同的,需要实施等效性检验,使用匹配点并比较这些匹配点之间的逻辑。检验中会生成一个数据结构并比较在相同的输入模式下得出的输出数值模式,如果这些输出数值模式不相同,那么表示法(这里指门级和RTL级)就不是等效的。当表示法中的一个经过了某种类型的变换时,等效性检验有时会在两个门级网表或两个RTL级实现之间进行。
造成设计表达式差异的一些实际原因包括:
1) 综合算法/探索式方法:根据对综合工具的约束条件(区域、时间、功率)不同,综合工具会对逻辑运算进行优化,以得到适当的门级表式。为此,综合工具将采用探索式方法和逻辑最小化算法。
2) 抽象级:在采用HDL来实现设计时,由于语言的局限性或是缺乏(不具备)对综合工具如何解释特定语言结构并将其变换为门级表式的预测能力,因此,HDL实现有可能与设计者意图存在一定的差异。
4 影响验证技术的趋势和力量
4.1 技术视角
设计错误可能出现在模块接口处或是在模块内部,它们最终会集成在一起形成芯片。举例而言,那些在模块级没有被发现的缺陷在应用动态仿真时会在子系统或系统级上显露出来。使用静态功能验证,模块开发的每一步都会得到详尽的验证,从而确保子系统/系统质量和可靠性从根本上得到提高。有人认为,使用静态/形式功能验证,能够更快地找到更多的缺陷。
另一方面,使用静态功能验证也存在以下缺陷:
1)现有的工具只能在模块级运行;
2)通常不能处理大型设计(一般只能处理100~150K的门电路);
3)不能处理高度复杂的设计;
4)现有的形式验证工具有时会出现时间无限的问题(这主要是因为它们往往是基于一套探索程序,而不是任一算法)。这意味着形式功能验证在一些情况下可能会比动态仿真花费更长的时间;
5)设计必须被写为可综合的RTL形式。
除了上述技术上的挑战外,基于断言的形式功能验证的两个竞争标准(PSL对SystemVerilog)也带来了额外的问题。目前倾向于将静态功能验证方法用于验证足够成熟以备综合的模块,动态验证(随机和定向)用于严格验证集成前的模块。
目前,动态仿真还将继续主宰功能验证领域,直到形式验证工具提供一种更成熟的方法。
4.2 语言视角
可以观察到这样一个趋势,就是将设计和验证语言结合在一起。这将极大地促进生产率,改进系统可靠性以及提高设计质量,因为使用多种工具和语言引发的不明确和误解问题将得到消除。
在这一结合实现之前,公司要继续依赖现有的高级设计语言(Verilog和VHDL),并选择是使用专有验证语言(Open-VERA、E等),还是过去流行的Verilog和VHDL 。
SystemC与其他高级设计描述语言在设计流程中扮演着重要角色,其中涉及硬/软件折衷以及在硬件上运行软件的设计(如SoC)。另外,它们也可用于架构建模及确认,当可以为应用事务模型的验证使用架构模型组件时,也可以使用 SystemC。
5 选择正确的验证方法的标准
在当前缩短上市时间和迫切要求低成本的环境下,工程师正在设法解决设计复杂性问题。那些在新技术上投入更多研发精力的公司,其研发费用的使用更有效率,产品上市时间更短,公司成长更快,盈利更高。另外,公司必须在其特有需求与核心价值的基础上评估方法和技术。在将新技术引进其工具流程时,它们应当考虑以下问题,并做出适当的权衡。
1)在某个生产线中,公司是市场领先者还是追随者?
2)基础设施、工具和方法是集中式的还是分布式的?
3)新验证技术的评估是针对第一代产品进行的吗?
4)新验证技术对成本和产品上市时间有何直接和间接影响?
5)新的工具能否处理不同的设计能力?
6)工具的易用性如何?
7)可为新的工具提供什么水平的文档和支持?
8)新的工具和方法与公司内部现有的工具和方法之间是否具有互操作性?
9)新工具的投资回报率(ROI)如何?(包括在服务、培训、咨询、计算和人力资源方面的投资)
10)新的工具是否能够支持处于多个不同地理位置的设计?
11)公司需要考虑的问题中,最为重要的问题之一可能是:我们雇用的设计师和验证工程师是否对新的工具抱有成见?(即设计师不愿意学习和接受新的技术)
公司在做出关于工具、语言和方法的决策时可以采用以下介绍的简单权衡方法。
5.1 产品视角
主要从事存储器芯片或存储器密集型(相对于逻辑密集型而言)芯片生产的公司讶SRAM和DRAM公司可能根本不需要进行大量的逻辑验证。这些芯片大多是定制的。虽然这些产品中有些规模会很大,但它们的逻辑复杂性并不高,因而不支持在公司内部配备大量逻辑验证工具的计划。不过,存储器密集型设计在其他方面提出了挑战,例如布线、工艺变化以及功率等。
那些制造纯ASIC芯片,在芯片上不运行任何软件的公司可能无须在硬件或是软件实现上进行权衡或是实施测试以捕获运行于硬件之上的软件。例如,只具有硬件的SERDES芯片所要求的验证和建模方法与同时具有硬件和软件的SoC是不同的。
对于拥有多种产品线的大公司来说,验证方法必须满足各种产品的不同要求。
Verilog 仿真 EDA VHDL 电路 SoC 相关文章:
- 32位单精度浮点乘法器的FPGA实现(11-25)
- 再议嵌入式系统定义、特点及其学习要点(08-06)
- MCU&USB设备控制器IP核的设计(03-31)
- 双层AMBA总线设计及其在SoC芯片设计中的应用(06-07)
- TMS320C3X串口扩展技术(06-27)
- 基于RVM的层次化SoC芯片验证平台设计及应用(07-18)