初次流片成功取决于整个体系硬件和相关软件的验证,有些公司供给的快速原型生成渠道具有许多调试功用,但这些渠道的价格十分高,因而最盛行的做法是依据DUT和详细运用规划复合FPGA板,验证这些板的原理图一般是很费事的,本文提出一种运用FPGA完结原型板原理图验证的新办法。
图1:DUT由x86处理器、主桥(Host Bridge)、 |
由 于价格竞争越来越剧烈,初次流片成功或只需少数的修正变得越来越重要。为了到达这一方针,对整个体系(即硬件和相关软件)的验证成为重中之重。业界也出现 了许多战略来协助规划师完结RTL上的软件运转。这些战略供给了在终究硬件还在酝酿之时就开发软件的一种途径。这种办法或许还不行,原因还有两个:一是仿真系 统或许与实践体系有较大的差异,二是体系运转速度十分慢。因而能够考虑先将完好的规划映射到FPGA中,再运转方针运用程序。这样做或许达不到终究硅片的 常规方针,但能够测验整个硬件的功用,体系能够得到全面的验证,其间一些测验事例或许是在仿真中底子无法完结的。别的,可用于演示的完好体系原型在硅片成 功之前就能够很好地引起客户的爱好。
有些公司供给的快速原型生成渠道具有许多调试功用。这些电路板渠道具有可编程的互连,能够将FPGA插接在上面,并将DUT(被测规划)映射进这些FPGA中。但这些渠道的价格十分高。因而最盛行的做法仍是依据DUT和详细运用规划复合FPGA板。当然,这些板相同也能用于测验方针运用中的终究硅片。
验 证这些板的原理图一般是很费事的,由于原理图中一些小过错解严峻影响到规划进展。原理图验证作业是人工完结的,因而过错也就在所难免。假如能够复用DUT 验证环境验证电路板原理图,那么原理图验证就能够派上用场了。本文将评论怎么通过编写少数脚本和修正DUT验证环境到达这一意图。
办法简介
基 本主意是设法对原理图进行仿真。这了做到这一点,先将原理图网表转换成Verilog网表。电路板上装置的不同元件(如FPGA、处理器、PCI卡、 SDRAM等)要么用RTL替代,要么用RTL验证过程中运用的行为模型替代。值得注意的是,咱们已假定整个规划的Verilog/VHDL代码是现成 的。至于电路板上需求用于测验DUT的处理器、SDRAM、PCI器材等其它元件,也假定现已存在相应的BFM(总线功用模型)/模型。由于这一阶段是在 功用验证之后,而这些元件需求用来测验DUT,并模仿整个体系,因而它们的等效行为模型应该在功用验证中现已得到运用,现在仅仅重复运用算了,即通过少数 的尽力就能运用相同的环境和测验事例。
上述概念通过拓宽就能够验证硅片生成板的原理图,根本的假定是规划团队具有硅片的 HDL描绘。这才是关键地点。关于FPGA板,能够通过某种变通的办法装备FPGA引脚来战胜由于原理图中的过错衔接导致的问题,即规划师能够办理并处理 这些过错。但关于预备用来测验终究硅片的板子来说几乎是不或许的。
生成Verilog网表
图2:包括x86处理器芯片、2个FPGA、 |
能够用好几种原理图输入东西生成Verilog网表。依据以下几种束缚原因,这种网表实践上是不能运用的:
1.它将板上的每个元件都看作是一个模块,因而生成的Verilog文件中包括一切元件的实例,如FPGA、电容、上拉电阻或晶振,而不论这些元件能否在Verilog中建模。其间有些元件(如串接电阻、去耦电容)能够简略地从网表中删去。
2. 原理图中的总线一般被衔接到符号上的一个个引脚,而在Verilog模块中总线或许只要一个端口。因而或许没有1对1的对应联系。例如在Verilog模 块中一个四位输出地址总线将被声明为:output [3:0] Address;但原理图中一切这四个引脚是被独立声明的。这样会导致原理图中运用的符号的引脚输出与Verilog模块中相应符号的可用功用不兼容。
因而,规划师需求编写一个简略的脚本,要么修正这个Verilog网表,要么依据原理图输入东西支撑的其它格局创立一个新的网表。意图是删去电阻、电容、电感等模仿元件,或用等效的Verilog代码替换它们。
为了更好地完结这一意图,能够运用对模仿元件的命名常规,或将它们界说在一个文件中作为脚本的输入。例如,电阻能够被命名为R1、R23等,不遵从这个命名常规的元件能够被界说在束缚文件中,这样脚本就能够将它们相关到等效模型,或假定短路将它们从网表中去除。
一般来说,针对电路板上的不同元件能够选用以下一些常规:
1. 元件的大多数电源引脚能够被疏忽。
2. 一般%&&&&&%都是用作去耦的,能够被简略的疏忽掉,由于这样做并不会影响即将被仿真的其它数字元件之间的互连联系。
3. 电感也能够疏忽,在仿真时用短路替代。
4. 电阻能够用Verilog的上拉/下拉或简略的线按需求替换。
5. 晶振能够用Verilog库中供给的时钟模块替换。
能够在束缚文件中界说某些特别情况,并作为脚本的输入。能够为Verilog模块编写Wrappers以战胜总线声明问题。这种顶层Verilog网表能够替代DUT功用验证中早已运用的顶层Verilog文件,并用于验证环境中。
FPGA原型板网表的仿真
至此顶层Verilog文件中包括了原型板上除东西删去的元件外的一切元件。规划师能够复用DUT功用验证运用的已有仿真环境。这种办法的长处在于,能够复用相同的测验向量和验证环境验证原理图。
任 何验证环境的根本原理都是相同的,即为DUT供给某种办法的测验向量,然后对测验成果与期望值进行比较。依据规划的复杂性有多种达到的办法。通过下面这个 十分简略的比如就很好理解了。比如是一个依据x86处理器的SOC。为了简略起见,咱们只考虑图1所示SOC中的少数重要元件。DUT由x86处理器、主 桥(Host Bridge)、SDRAM控制器和PCI桥组成。在验证环境中,为了进步仿真速度,能够把x86处理器看作是一个BFM,一起供给某种PCI从模型。简 单地说,x86 BFM具有某种办法的读/写指令,能发生总线周期,因而规划能够运转起来。
图3:Verilog模块创立wrapper |
如 图2所示,主桥和SDRAM控制器被映射进FPGA1,PCI桥被映射时FPGA2。由脚本发生的顶层Verilog文件包括如图2所示的一切元件。至此 就能够在验证环境中方便地运用这个顶层Verilog文件,并附于相同的验证测验向量。要注意的是还需求为各个Verilog模块创立wrapper以匹 配元件的引脚。关于SDRAM和PCI槽道来说,能够运用与RTL验证环境中运用的相同模型(即SDRAM模型和PCI主/从模型)。参阅图3,将 FPGA1作为事例进行阐明。
由于只对环境作了少数修正,如在编译列表中添加很少的Verilog文件(wrapper模 型),用新创立的文件替换顶层文件,因而能够对原理图列表施行验证。这些工作能够通过简略的perl或shell脚本完结主动处理,整个使命将削减到仅指 定一些特别选项,一起从指令行运转仿真。
假如有任何过错的衔接,或某些衔接被忘记,那么仿真成果就会有相应的提示。这种办法能够完结对与模仿元件的衔接的部分测验,由于这部分元件有的从网表中删去了,有的被等效行为模型所替代。但是,有些过错仍是能够被检出的。
硅片生成板网表的仿真
上 述办法相同能够用来仿真规划用于测验终究硅片的电路板的网表。这种办法更适用于对这些板的验证,由于正常情况下制造出来的许多板其芯片的并行测验都是能够 完结的。此外,通过某种途径装备FPGA引脚能够消除依据FPGA的板上的过错。下面持续以上文的比如阐明怎么将同一概念运用到硅片生成板上。
如 图1所示,硅片等效于DUT。依据相同的流程创立一个Verilog网表,这个网表将DUT看作是板上的一个芯片和其它外围设备。这是在验证环境中有必要使 用的顶层文件。现在咱们现已有了DUT的完好Verilog描绘,因而只需求创立图4所示的Verilog wrapper,让引脚输出与电路板上的芯片相匹配。
综上所述,这个网表是能够运用曾经运用的同一测验向量进行操作的。
本文小结
这 种办法现已过测验,现在正用于原理图的验证。该办法为原理图验证添加了新的计划。原型/生成板的原理图的验证和过错检测能够在极易发生严峻问题并影响规划 周期的前期阶段进行。别的,验证无需额定的开支,由于这种办法依据的是业界常说的‘复用’原理,在本事例中复用的是测验向量和验证环境。
图4:Verilog wrapper让引脚输出 |
参阅文献:
* Protel98 – Designers Handbook, Protel.
* Thomas Moorby’s, The Verilog Hardware Description Language, Third Edition, Kluwer Academic Publishers.
* Ellie Quigley, PERL by Example, Pentice Hall PTR.
* John R. Levine et al, Lex Yacc: O’Reilly Associates, 2nd edition October 1992.
* Brian W. Kernighan, Dennis M. Ritchie, The C Programming Language, Second Edition, Prentice Hall Of India Pvt Ltd.
* OrCAD Capture 7.20 Design Tutorial, OrCAD.
术语
DUT-被测规划
BFM-总线功用模型
RTL-寄存器搬运级
SOC-体系级芯片
HDL-硬件描绘言语
FPGA-现场可编程门阵列
PCI-外围设备互连
作者:Kapil Batra
高级工程师
STMicroelectronics Pvt. Ltd.
Mahesh Chandra
项目经理
STMicroelectronics Pvt. Ltd.