如何用FPGA实现原型板原理图的验证

来源:电子工程世界 作者:—— 时间:2010-06-09 13:40

生成Verilog网表

  可以用好几种原理图输入工具生成Verilog网表。基于以下几种限制原因,这种网表实际上是不能使用的:

  1.它将板上的每个元件都看作是一个模块,因此生成的Verilog文件中包含所有元件的实例,如FPGA、电容、上拉电阻或晶振,而不管这些元件能否在Verilog中建模。其中有些元件(如串接电阻、去耦电容)可以简单地从网表中删除。

  2.原理图中的总线通常被连接到符号上的一个个引脚,而在Verilog模块中总线可能只有一个端口。因此可能没有一对一的对应关系。例如在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具有某种形式的读/写命令,能产生总线周期,因此设计可以运行起来。

Verilog模块创建wrapper以匹配元件的引脚

  图3:Verilog模块创建wrapper以匹配元件的引脚

  如图2所示,主桥和SDRAM控制器被映射进FPGA1,PCI桥被映射时FPGA2。由脚本产生的顶层Verilog文件包含如图2所示的所有元件。至此就可以在验证环境中方便地使用这个顶层Verilog文件,并附于相同的验证测试向量。要注意的是还需要为各个Verilog模块创建wrapper以匹配元件的引脚。对于SDRAM和PCI槽道来说,可以使用与RTL验证环境中使用的相同模型(即SDRAM模型和PCI主/从模型)。参考图3,将FPGA1作为案例进行说明。

  由于只对环境作了少量修改,如在编译列表中增加很少的Verilog文件(wrapper模型),用新创建的文件替换顶层文件,因此可以对原理图列表实施验证。这些事情可以通过简单的perl或shell脚本实现自动处理,整个任务将减少到仅指定一些特殊选项,同时从命令行运行仿真。

  如果有任何错误的连接,或某些连接被遗忘,那么仿真结果就会有相应的提示。这种方法可以实现对与模拟元件的连接的部分测试,因为这部分元件有的从网表中删除了,有的被等效行为模型所代替。然而,有些错误还是可以被检出的。

相关文章

资讯排行榜

  • 每日排行
  • 每周排行
  • 每月排行

华强资讯微信号

关注方法:
· 使用微信扫一扫二维码
· 搜索微信号:华强微电子