系统与设计
的意见

连接模拟设计真正作为PCIe设备

同时连接一个模拟器与外部环境通常需要一些额外的前期工作,它在长期回报。

受欢迎程度

这些天验证团队不再质疑硬件辅助验证应该在他们的项目中使用。相反,他们会问在哪个阶段应该开始使用它。

现代芯片系统(SoC)设计已经足够复杂,使高密度脂蛋白仿真验证过程中瓶颈,甚至没有提及硬件软件co-verification或固件和软件测试。因此,集成电路设计验证与半实物仿真是一种越来越受欢迎的技术。

最近,硬件辅助验证变得更加负担得起的可用性高容量fpga(如Xilinx Virtex UltraScale US440)及其采用的模拟由EDA供应商。

一个很好的例子是Aldec这样一个仿真平台HES-DVM。它可以容纳3亿多个ASIC设计盖茨multi-FPGA板(他-我们- 1320),能力量表通过连接多个板底板。

设计编译、综合、分区是完全自动的数字式电压表工具HES-DVM平台的一部分。担心跟踪和调试在仿真设计问题?不是一个问题。HES-DVM有HW调试器设计工具,可以捕获信号跨多个fpga和关联与RTL设计层次结构,所以从捕获的波形仿真看起来好像他们被捕获在一个高密度脂蛋白模拟。

使用模拟还有其他优势,其中一个明显区别别人的这种验证方法。仿真允许您连接仿真设计与实际设备称为In-Circuit-Emulation(冰),这是这个话题我想详细说明在这个博客。

连接与外部环境模拟器是一种先进的用例和通常需要一些额外的前期努力,但它长期回报,因为更少的努力是需要创建复杂的测试场景。

现在,实时数据流测试将刺激你的设计。

然而,请注意,所有的功能仿真,如全自动设计设置和复杂的调试功能,以价格低于设计实时时钟。

一个典型的仿真时钟频率将1 - 10 mhz。显而易见,在许多情况下,这些时钟太慢直接与外部沟通的外围设备。因此,上述的额外的前期工作是关于速度的发展适配器,缓冲数据并提供跨域交叉(CDC)之间的慢模拟域和外围设备领域通常更快。速度也很重要,适配器领域保持透明。

幸运的是,这个前期工作不需要很高。

让我们看一个例子的PCI Express(作为PCIe)接口,根据我的经验,通过与Aldec客户,是一种最受欢迎的接口使用冰。

想象你有一个包含一个CPU芯片系统(SoC)设计,片上存储器,中断控制器和一个计时器与AXI总线互连。这是一个典型的子集SoC嵌入式Linux操作系统运行所需的组件。

显然,SoC是建立与外部世界沟通,以及许多外部的外围设备,它提供了一个作为PCIe根控制器允许连接外部作为PCIe设备。这只是硬件,我们都知道,不管我们的硬件团队多大,软件团队负责开发固件,嵌入式Linux应用软件,将会更大。

在某种程度上的软件团队可以使用虚拟化技术和仿真模型开发许多软件组件,但全面的软件测试和调试需要一个快速和准确的目标硬件模型。

与一个仿真平台软件团队收到确切的SoC的硬件模型,更重要的是,接收更早比如果他们不得不等待第一个芯片样本铸造。

假设一个外部设备的网络接口卡(NIC)作为PCIe接口标准。连接这样的板和仿真器提供了机会与真实网络流量测试SoC和TCP / IP协议和所有属性的自然环境。选择是你的DV团队开发一个TCP / IP堆栈和UVM约束随机测试序列,我知道,我喜欢。所以,让我们做到这一点。

作为PCIe适配器从地面加速发展将是一个复杂和耗时的任务,需要一定程度的努力可与开发一个完整的设备控制器。值得庆幸的是,我们已经获得可重用组件和Xilinx,例如,提供了一些现成的ip核心作为PCIe Vivado设计套件。在这些“PCI Express AXI桥”这似乎是适合这个任务。

作为一个概念验证,我创建了一个SoC设计基于Xilinx MicroBlaze软处理器内核的CPU如下框图所示。

的设计包含了一个完整的SoC MicroBlaze CPU、定时器、中断控制器,当地的RAM和DMA控制器。外部设备所需SoC DDR4内存控制器,作为PCIe根复杂,UART和SPI Flash控制器。所有组件的SoC连接使用AXI互连基础设施。

请注意,有四个外部外围控制器和速度都需要实现为适配器。为了简单起见,我将解释作为PCIe速度适配器实现的但是其他三个都在类似的方式实现。

作为PCIe根复杂的控制器提供AXI包装为“阿喜桥PCI Express Gen3子系统的ip核。

方便使用在一个AXI-based SoC因为所有低水平作为PCIe接口已经包裹到更高级别的内存映射AXI设备包装。因此,控制器的ip核包含一个AXI奴隶端口配置S_AXI_CTL和数据传输有两个其他港口;阿喜奴隶(S_AXI)和硕士(M_AXI)。

AXI主端口可以通过DMA通道传输数据,因此我们在SoC设计有DMA控制器(见上面的框图)。除了阿喜桥接口提供了作为PCIe物理接口线(pcie_7x_mgt),需要一个专门的参考时钟(refclk)+一个时钟管理物理线路(sys_clk_gt)。还请注意,ip核提供了一个输出时钟(axi_aclk),应该用于同步AXI港口。

其余港口作为PCIe子系统是用来处理中断。

因为桥IP实现作为PCIe接口的物理层(体育)要求输入时钟实时如此,在我们的设计中,两种refclksys_clk_gt驱动的200 mhz振荡器。因此,axi_aclk(这是来自refclk)也将实时频率,所以不适合模拟方面。

那么,我们如何连接这个IP块与其它设计,仿真,从仿真时钟域?实现速度适配器,我们需要使用时间转换器,容易实现与AXI时钟转换器的IPs在Xilinx Vivado也可用。他们是连接如下图所示。

注意,阿喜时钟转换器的IP提供S_AXI奴隶和M_AXI主端口和两个相应的时钟输入;s_axi_aclk奴隶和m_axi_aclk的主人。

他们有内部时钟域交叉电路保证数据可以安全地在不同时钟域之间传输设备。因此,这两个时钟线可以是异步的。

让我们检查时钟是如何连接的。在上面的图中标记为红色和绿色。红线是驱动的axi_aclk输出端口的桥实例,这是不同步的硬件时钟来自200 mhz参考时钟。

绿线驱动从输入端口,在我们的设计中,将连接到模拟时钟——这是一样的一个用于MicroBlaze SoC子系统。除了AXI港口还有一个AXI桥设计中使用。这是interrupt_out端口,因为它是refclkaxi_aclk输出时钟域(同步),它需要同步仿真领域。

开发一个定制的同步器是RTL Verilog基于比特FIFO,所以输出端口pcie_interrupt是正确同步的仿真时钟域。

实验最终成为一个真正的硬件实现。这是模拟工作台的照片。

最大的板的照片他-我们- 440主要模拟板Xilinx UltraScale XUS440 FPGA。整个SoC设计FPGA和串行总线接口实现I / o锁定网站连接的三个融合连接器。

接下来,有一个女儿卡FMC-PCIE迷上了各自的FMC连接器的顶部。这个委员会提供了标准的PCI Express插槽,其中之一是用于连接网络接口卡与英特尔芯片组。

同样值得一提的是,他——我们——440板配置为模拟模式,因此它提供了一个模拟控制器(较小的芯片与粉丝在上面的照片中,这是Xilinx Zynq 7000)作为PCIe链接,另一个用于连接模拟板与主机工作站。

注意:我也应该提到,我开发了一个简单的GPIO办理人转移一些状态标志(如PCI链接起来,DDR校准等)从硬件主机工作站而不是使用车载led。这当然是一个非常简单的使用SCE-MI通道和在更高级的场景中您可以实现复杂的公交交易人或监视器和集成模拟与复杂的主机上运行testbench工作站而其他接口(如作为PCIe在我们的例子中)与实际设备相连。因为“一幅一千字说,“这是整个系统实现的模拟工作台。

Aldec的HES-DVM用于设置仿真并集成的设计吗SCE-MI基础设施。

我创建了一个简单的c++ testbench SCE-MI API和应用程序链接让我读的办理人解码状态信息。相同的应用程序也最初配置的FPGA比特流文件的设计。好吧,让我们启动工作台,看看结果。

设计看起来完美的状态。立即,我可以看到,复位线在适当的水平,设计了复位,融合子卡是正确和PCI Express链接(及其同步行)。

除了作为PCIe链接我也UART接口的设计将被用作STDIO通道Microblaze CPU。UART-to-USB控制器可以在他——我们——440板,所以我可以连接一个串口终端设备。我使用了小型计算机程序在我的Linux主机工作站。

Microblaze CPU子系统包含JTAG调试接口模块连接端口的FPGA。我可以连接Xilinx软件命令行工具(XSCT)与JTAG端口和控制Microblaze CPU。

嵌入式Linux映像定制我的SoC设计的PetaLinux上传第一次设计DDR 0 x8500000然后启动使用u-boot方法。软件的两个步骤上传过程之后,“欺诈”命令把我带到U-boot提示UART终端和花了2分钟。

然后我用' bootm '命令从内存位置0 x85000000启动。

然后我10分钟等待PicoLinux抚养,但是等待我观察引导日志消息。我高兴地看到,正确检测到网卡,与英特尔驱动程序模块e1000e和配置为eth0

接下来,我收到PetaLinux #根提示和能够与操作系统交互。

首先,我作为PCIe卡的检查如果是启动和运行(lspci),以太网接口配置(ip连接)。然后我检查网络连接工作站()。一切正常。

我离开了系统运行在一个周末,还测试了它从我的工作站传输大文件通过FTP嵌入式SoC在模拟板上;达到大约460 kb /秒传输速率。

一切都很稳定,证明作为PCIe速度适配器的设计是正确的。

速度适配器非常有用而模仿或FPGA原型,因为它们允许的设计与外部设备连接到运行在目标速度慢而设计是由模拟域的时钟。

总结

在这个博客我提出的原则发展中一个可靠的速度适配器和显示一个示例实现的;具体来说,PCI Express根复杂的控制器。

在Aldec,我们已经开发出一种可伸缩的fpga仿真和原型平台,但是我们也与工程师密切合作,帮助他们建立一个高效的验证环境与硬件的循环。



留下一个回复


(注意:这个名字会显示公开)

Baidu