【精品博文】加班猫告诉你什么叫FPGA时序约束
关于FPGA时序文章很多。
这个世界总有有些人天天跟你背书背的知识,如果你问他深层次的问题,他根本不知道为什么。
但中国这个技术环境,貌似赚钱跟技术深入没啥多大的关系。随便学习下安卓开发,就能拿个二三万的工资,花风投的钱。
但人能真正沉淀是需要时间去证明的。做技术如果需要赚钱,千万要记得一句话,要学会解决问题和分析问题,学会把知识转化为人民币。如果你一辈子只是喜欢死记硬背,用来新的概念来装逼,你这辈子也是穷吊丝一个。天天看马云的演讲也解决不了你买不起的房子问题,天天看各种心灵鸡汤也改不了你做技术的苦逼。
所以我认为,不管你做任何工种,一个要学会分析和解决问题。二个要训练自己好的心态。不要急着去盼望别人能挽救你。记住你生病了,能救你的人是你自己,不要一问问题就慌神了。自己定位问题点。
以上都是废话。说了这些废话也改不了你FPGA的工资低于平均水平。
下面说下,FPGA时序约束。
为什么做时序约束。这个要从FPGA内部单元说起,FPGA本来是各种逻辑单元阵列组成。中间有不同的时钟网络,各类嵌入式乘法,收发器单元。不同的FPGA还有更多高级功能,比如双边沿输出,DPA动态对齐。所以你做时序约束的时候,麻烦你看看芯片手册的逻辑单元。每个芯片手册都会前面说逻辑单元和内核单元。
还有各类资源使用的说明。说明指导文件。
有人说,他们买的每一本书都是芯片讲解,不知道有啥意义。其实市面上卖的书基本凑字数,根本不会告诉你为什么要告诉芯片内部结构。就像很多人做技术,自己写代码不知道用在产品哪里。
时序约束本质就是告诉编译器在放置这些时钟,引脚,逻辑单元排列,各种PLL单元。有些人问,为什么要去约束不同的时钟伪路径。告诉系统不相关的时钟路径,是想办法让编译器把部分单元放置在区域时钟,不是全局时钟,部分逻辑集中在一个区域。
特别是很多一个module包含各种时钟网络,编译器不知道你是不是有时钟关联下。如果他们在放在逻辑的时候,必须告诉他这是没有关联的逻辑,所以单独一个区域。
这也可以解释,为什么资源使用越多,导致时序红色太多了。
大多人,知道fpga约束包括,IO引脚位置约束,电平约束。还有知道主时钟频率 约束。另外还有部分人知道IO上下拉约束,因为这个上下拉约束被CPU交互式总线害死了才知道了。
还有部分知道多时钟伪路径,因为多次编译不同给害死了,所以知道了。
还有知道输入路径约束,这个是玩多路并行数据,采集边沿老是采集不对,知道约束了。
还有知道输出约束,因为玩DDR双边沿搞的蛋疼,学明白了。还有多路lvds也学明白了。
还有知道PLL区域位置约束,也是玩DDR3玩的蛋疼,知道了。
上述说的时序约束能满足90%的设计。因为吊丝用的器件还没到分组设计能力。有人说这世界能让人赚钱的人不是富人,而是穷人。
还有高级是固定区域约束,这是多人分组设计的,要求逻辑放置固定的区域。而且还是属于布线层次的约束,要先导出网标,再设定区域。所以这个约束很奇葩的名字要放入特定区域。