利用Synplicity’s Certify软体进行原型验证(Prototyping)
在前文已经讨论过部份原型验证前的议题,此时或许你已经准备好将暂存器转换阶层(RTL)设计,烧录到自行设计或是向供应商採买的的原型验证系统(Prototyping system),对于一个多FPGA的开发板来说,第一个问题是如何将系统分割(Partitioning)并映射到(map)到不同的FPGA上!
基于以下几个理由,手动分割一个系统将是令人气馁的工作。即便只是要分割到两块FPGA上,当第一次开始烧录设计时,就必须估计与猜测哪些设计区块适合放到其中一个FPGA,而哪一些区块则适合放到另一个。这些估计无法被证明是合理的。在多数的案例中,更大的问题是,这些逻辑的输入输出信号所需要的脚位,可能需要比这个FPGA可用的脚位更多(被Rent’s rule限制住)。这样的局面暗示着必须牺牲效能,以手动的方式将信号利用多路传输(multiplex)的方法将信号整合。
对应装置的输入输出,是为了维持需求的效能水准,因此必须重复地复制某些逻辑闸。如果有数个区块,而且必须分割到三个或以上的FPGA上头,那么排列的方法之多,将无法管理。试着想像手动所产生多个FPGA间的连结工作(举例来说,一个Xilinx Virtex-4 有960个使用者输入输出脚位)吧!因此对设计者来说,真正需要的是自动化这个程序并移除猜测性的工作。此外,也必须有能力对于一个被指定的暂存器转换阶层(RTL),快速估计出逻辑闸使用和输入输出资源分配,自动多路传输是必要的。Synplicity的Certify将可以处理这些手动且错误倾向的方法,并自动且可靠的完成这些步骤。
■自动分割与合成多颗FPGA设计
Synplicity的Certify暂存器转换阶层(RTL)工具,是一个以多颗FPGA为基础的原型验证系统的分割与合成工具。大多数现成的多FPGA原型验证系统开发板供应商,都将相对应的开发板描述档案和开发板一起出货,这个档案定义了开发板架构并且用作Certify软体的输入。Certify支援Verilog、VHDL和混合语言设计。Certify流程的第一步是转换以特殊应用积体电路(ASIC)导向设计的程式码成为适合FPGA的程式码。
举例来说,gated clocks将会被转换成gate-enabled flops,且Synopsys的DesignWare单元会被转换成同样功能的FPGA架构。在本例中,现成的多颗FPGA原型验证开发板被使用,只要点选一个下拉式选单,列出由其他供应商所提供的开发板,以确定使用正确的开发板定义档。对于客制化的开发板来说,Certify工具有能力创造出一个虚拟的多颗FPGA开发板定义,并在其后的使用中逐渐建立真实的环境。此外,Certify软体亦可用于自动分割设计到多个FPGA(图二)。
Synplicity的硬体描述语言分析工具(HDL Analyst utility)紧密的和Certify软体整合,这套工具可以自动产生与IC制程无关的图形化概观,与高阶的阶层化区块图,以及对应的合成后抽象化电路图(schematics)。
图二 使用Certify与三个FPGA的多FPGA原型验证流程
除了多样化的设计概观之外,Certify软体也提供原型验证版的FPGA图形化的表示法。每一个虚拟的元件都有两个相关的量测数值,一个反映了这个装置的输入输出的使用率(Utilization),而另外一个则反映了面积与资源的使用率。基于软体有FPGA输入输出脚位使用率与资源使用率的资讯,以及FPGA间的绕线(routing)资源资讯,Certify软体可以自动的执行脚位指定(pin assignments),还可以利用QPT快速分割技术(Quick Partitioning Technology)分割设计。简单利用拖曳区块来完成初始的关键区块手动置放之后,QPT就可以说是自动完成了分割所剩区块的冗长琐事。
Certify工具的另外一个效用则是分析分割结果,并提供使用者一个使用CPM(Certify Pin Multiplexing,针脚多路传输)的机会。这可以整合多个信号以减轻装置的输入输出负荷,至于另一个效用,则是当一个分割的可能选项被实现的时,这个实现过程可以被命名且储存,在当成一个之后分割最佳化的起始点,以提供使用者维护与操作多个分割的方案。
一旦分割被执行,这套Certify软体将会合成对应到各个FPGA上头的暂存器转换阶层(RTL)程式码,Certify软体使用一套和Synplicity’s Synplify Pro FPGA合成引擎相同的合成技术。Certify软体包含了资源共享、暂存器平衡(register balancing)、复制(replication)与重新合成(re-synthesis)等先进合成能力。
Certify将不同的FPGA视为设计阶层中额外的一层,这样的方法表示这套工具提供了独特的能力去将时序路径(timing paths)最佳化以提升效能,即使这些路径跨越多个FPGA也一样,。Certify软体也提供时序报告让设计者可以在硬体被程式化之前,即可预知该原型模拟所达到的效能。
■利用Identify Debugger设计除错
当一个FPGA系统在即时介面与时脉速度运作时,去了解在FPGA里头发生什么状况是相当重要的。逻辑分析仪提供精密的触发(triggering)选项,但是触发并不是设计用于捕捉FPGA内部的事件,只能操作在与外部针脚相连的节点(node)上。至于探测能力则是被装置的可用针脚数以及开发板的针脚数所限制住,因此利用逻辑分析仪进行FPGA设计的除错,是相当耗时、受限又不完整,在嵌入式逻辑分析仪中,工程师也同样面临了最所熟悉的问题:「必须理解FPGA内部之中的错误与暂存器转换阶层(RTL)程式的相关性」。
Identify除错软体允许直接在RTL程式对设计量测并除错,这项能力在除错中非常关键,因为设计者多半是对暂存器转换阶层(RTL)程式熟悉,而非逻辑闸阶层电路(gate-level net list)。
■Identifier暂存器转换阶层(RTL)除错流程
Identify包含两个工具: Identify Instrumentor还有Identify Debugger。Identify Instrumentor 用于设定查看点(watch point_与中断点(break point)与控制何时资料该被收集与储存。当一个设计被量测时,侦错点和控制逻辑会被合成以及佈局与绕线到FPGA装置中,步骤完成后Debugger将会被用来直接检查FPGA的结果。
■自动探测(Automated Probing)
Identify软体使用图形化介面,导览所有设计阶层并直接把探针(Probe point)加入到硬体描述语言的原始码(图三)。
直接量测让设计中的信号名称改变可被忽略,因为探针的连结依旧存在,即使名称在实现过程中改变,连结依旧存在而且是以原来的名称显示。利用RTL原始码控制除错流程是Identify工具一个关键优势。Identify Debugger让你可以在设计阶层(RTL)控制并显示除错的结果,亦可以直接显示在暂存器转换阶层(RTL)上,或选择以波形观看器(waveform viewer)显示。
Identify支援multiple IICE(Intelligent In-Circuit Emulator)instances利用以多个非同步时脉触发的逻辑,并观看多个不同的clock domains中的节点,讯号以图形化的方式被标记为探测点。旁边的文字视窗则显示了设计层级,作为组成部分、模组、程序,以及假如(IF)宣告在原始码中被标示行号,以让设计者更容易找到设计的某个部分。在设计阶层中选择一个点将会在隔壁的视窗中显示文字。
图三 Synplicity’s Identify Instrumentor
从硬体描述语言观点来观察设计,监看点和中断点被加入到量测中。设计的探针以各自的色彩标记显示。除了探针外,Identify Instrumentor通讯模组到设计中来传输样本资料,经由JTAG埠,输出到个人电脑上头的波形观看器。探测点可以提供资料来显示或样本触发(sample triggering)。一个设计在被量测之后,将会被合成与编译来提供FPGA工具佈局与绕线。设计的量测绝对无法影响一个设计的功能上的行为,并且通常只佔用大约百分之一到五(有些案例中会更多)的逻辑资源。
■ |