尽管对于工程师而言目标始终是以原始形式对SoC源RTL进行原型化,但在原型化工作的早期,SoC设计必须进行必要的修改,以适应FPGA原型系统。设计变化通常是由于在SoC技术中发现的设计元素,这些设计元素在FPGA技术中不可用或不适合FPGA技术。原型平台的局限性也导致了设计的变化,对更高性能和调试工具进行了调整。
Top层的IO PAD(Top_level pads)
FPGA工具流程无法解析SoC中IO PAD的例化,因为IO PAD的例化代码一般来源于Fab代工厂提供的库,每家Fab的库的写法各不相同,只对应其相应的工艺。
门级网表(Gate_level netlists)
门级网表形式的设计没有FPGA工具认识的RTL方式,因为门级网表也是SoC工艺库逻辑单元的映射,FPGA工具无法解析。
SoC单元例化(SoC cell instantiations)
FPGA的工具不能解析工艺库提供的SoC cell的例化。
SoC存储单元(SoC memory)
SoC的存储单元也是工艺库特定的,与FPGA上特定的存储单元有本质区别,FPGA工作无法解析相应的存储单元RTL的例化。
SoC特定IP(SoC Sepecific IP)
从简单的DesignWare宏到完整的CPU的IP,如果IP的源RTL不可用或者是黑盒看不见可综合代码的,那么我们需要在FPGA这一端替换一个等效功能的RTL模块或FPGA的软硬核IP。
内建自测试(BIST built-in self test)
内置自测试(BIST)和其他测试相关电路主要在SoC整个流程中起测试作用,并不是SoC主要的功能描述,BIST的存在是为了快速debug已有的SoC功能,但有些BIST是直接实例化设计到RTL中。但FPGA原型不需要这样做,因为这只是为了SoC的测试功能,而不是SoC的功能,在FPGA端不用做出原型。
门控时钟(Gated clocks)
与BIST一样,时钟门控是SoC为了降低功耗特别使用的一种手段,但通常直接写入RTL的,FPGA原型只是为了做出功能原型机,而无法模拟功耗原型,所以这通常会用FPGA中可用的时钟资源,能够提供正常功能的所需时钟。
其他复杂生成的时钟模块
通常在SoC设计中,都会有一个CRG模块,与门控时钟一样,生成的时钟可能需要简化或以其他方式处理(会用FPGA中可用的时钟资源或者例化FPGA中的分频器和倍频器IP模块),以适应FPGA的设计。
作者:Jacky Yu
文章来源:芯播客
推荐阅读
更多IC设计技术干货请关注IC设计技术专栏。
迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。