我们在做FPGA/CPLD选型的时候一般主要是看逻辑资源,嵌入式的memory,锁相环,DSP,SERDES,IO特性等等。但是在做FPGA设计的时候,还要关心选中的FPGA/CPLD都提供了哪些布线资源。布线资源可以简单的分为逻辑布线资源和时钟布线资源。如果大家打开芯片的物理版图,可以看到,其实占芯片面积最大的不是逻辑资源,而是布线:
逻辑布线资源我们后面有机会再讲。今天我们只是来谈谈时钟布线资源。时钟资源里最基本的是主时钟,在不同的厂家里,对主时钟的叫法各不相同,有的叫Primary Clock Net,有的叫Global Clock Net,有的叫Long Wire,其实指的是同一个东西。Primary clock的特点是驱动的扇出系数很大,可以覆盖所有的逻辑单元(包括EBR,DSP),同时Primaryclock的拓扑结构可以保证它到达所有的逻辑单元的delay都是一样的,也就是primary clock的skew为0.如果FPGA/CPLD里所有的布线资源都具备primary clock的这些特性,我们也就不存在什么时序的问题了。不过primary clock的这些特性的代价是它要占用更大的芯片面积,从性价比的角度来讲,不可能把所有的的布线资源都按照primary clock来处理。如果你的设计里,用到了普通的布线资源走时钟信号,就要考虑时钟的skew对时序的影响了。
Primaryclock时钟如此宝贵,一般一个芯片里面只有8个或16个primary clock。为了最大化primary clock的利用率,有些厂商会把primary clock分成4个象限来使用。这样16个primary clock分成4个象限,对用户来说,就有了64个primary clock。这个做法虽然增加了可用的primary clock的数量,但对逻辑设计和布局布线也提了更高的要求:对同一时钟驱动的逻辑单元的数量不能超过芯片资源的1/4,相应的逻辑布局的时候必须放在同一个象限里。具体该怎么用,要根据具体的设计需求来分析。
除了primaryclock,一些芯片还提供另外一种时钟布线资源,称为secondary clock net。Secondary clock相比Primary clock扇出能力是一样的,区别是secondary clock net信号的翻转率没有primary clock快,信号频率没有primary clock快。它可以用作频率不是很高的时钟信号,或者用来做一些复位/置位信号。这类信号的特点是对频率要求不高,但对信号的扇出能力要求比较高。
一般而言,EDA的工具会自动根据你的频率约束和信号的驱动能力自动分配时钟资源。当你的设计中,时钟信号的数量超过芯片所能提供的时钟资源的时候,多出的时钟会被分配到一般的布线资源上。这种情况下,如果Timing有问题,我们可以尝试指定哪些时钟信号要使用时钟布线资源,哪些时钟信号使用一般的布线资源。
硬禾小帮手 -硬件工程师的设计助手
硬禾学堂 -精英工程师的在线学习平台