平时在FPGA群聊等积累的FPGA知识点,第六期:
1 万兆网接口,发三十万包,会出现掉几包的情况,为什么?
原因:没做时钟约束,万兆网接口的实现,本质上都是高速serdes,用IP的话,IP会自带约束。
2 GT ip会输出一个rx clk 和tx clk,这俩都是恢复出来的主时钟,需要手动加create_clock吗?
解释:如果是7系列FPGA就要约束,之后的就不用。
3 vivado闪退后就打不开工程了,如何处理?
解释:上次闪退的时候破坏了run文件夹里的内容,把这个文件夹删除了之后就可以正常打开了,这个run文件夹指的是项目目录的一级子目录,名字是"项目名.runs"
4 ROM/RAM IP核生成例化后,如果只把硬盘中coe文件替换掉,没有重新生成IP核,新的coe文件会生效吗?
解释:不会。coe, mif,ver这类文件都像中间产物,仅替换的话在仿真层面是可以的,但生成的bit文件是没有更新的。免重新编译不能用仅替换coe文件的方式,可以用的方式是:完成初始设计、综合和实现,但不生成bit,打开布线后的dcp文件,找到想修改的ROM/RAM IP核,在properties界面直接修改初始化文件(原语),保存后就可以了。之后在生成bit文件就是更新后的coe内容了。
5 vivado 2018.2支持ML(Vivado ML Edition)吗?
解释:不支持。应该是2021年之后的版本开始支持的,看到有2022.2版。
6 set_property BLOCK_SYNTH.STRATEGY {ALTERNATE_ROUTABILITY} {get_cells usbEngine} 用了这个设置后,这个子模块需要进行单独综合吗?还是在整个工程一起综合的时候,有了这个属性设置,这个子模块单独使用这个策略综合,其他模块是全局默认策略?
解释:ug901文档中讲:The Block-Level Synthesis flow (BLOCK_SYNTH) uses a property that lets you use certain global settings and strategies on specific levels of hierarchy in a top-down flow that is differs from the top level of the full design.
块级别的综合过程(Block_SYNTH)使用一个特性,该特性允许您在自上而下的综合过程中的特定层次级别上使用某些全局设置和策略,该综合过程不同于完整设计的顶层。
7 设置的set_clock_groups命令也用的get_clocks,为什么综合后报告No valid objects found --group?
解释:检查一下get_clocks有没有返回对象。
8 设计用到8个pll,时序分析的时候,7个pll在slr1上,timing都收敛,另外一个pll跑到slr2上,结果不收敛。解决的方法?
解释:第一,pll的位置跟它的输入时钟位置相关,如果它的输入时钟就在slr2,那就没有办法把它放到slr1,即使用loc约束也无效
第二,确认可以改,可以用set_property loc这种可以指定位置的方法
第三,确认可以改,可以画pblock,在slr1上画一个pblock,把8个pll都assign到里面去。
9 较早知道时序违例情况的方法有吗?
解释:综合后就分析,如果建立时间违约且比较大(WNS<0.3ns),后面就先别跑了,先解决时序问题。
10 vivado中qor_assessment的分数怎么用?
解释:在综合后,看qor_assessment报告,给出的分数,3是及格分,5是最高分,如果分数是3,不建议往下走,有概率不收敛了,最好是得分到4或5。