热度 15
2012-10-9 13:41
5457 次阅读|
0 个评论
前几天老师需要一个设计数据,是有关一个大的FPGA工程中小模块的编译报告,由于时间有点久远,之前的小模块工程已经不知道在哪里了(自己也觉得这里做的很不好,虽然模块小,但设计之初也都是经过仔细设计仿真验证的,应该做好存档才对)……好吧,虽然没了也没关系,其实也很简单,把大工程copy一下,然后把子模块置顶,重新编译不就好了嘛。 可编译后问题来了,报错了!而且有点莫名其妙,一开始有点懵,不知道出在哪里…… Error: Partition hierarchy "PN_gen:inst2" does not exist in the current design or refers to an inferred hierarchy Error: Partition hierarchy "TS_gen:inst5" does not exist in the current design or refers to an inferred hierarchy 几个错误都很相似,大致的意思就是说划分的“****”这些模块不存在当前的设计里面。这里就觉得奇怪了,出现错误的这些模块本来就是原来大工程下的其它子模块,当然不包括在现在的设计里面了,怎么还报错呢?? 双击红色的ERROR提示没有反应,于是又再右键错误-help: 大致意思就是设定的区域划分没有实体……建议删除或者重建区域划分。 看完之后,还是一头雾水……原本该是个很简单的操作,怎么出现这样的错误呢?首先静下来想想,不能慌,总结下这个问题,我个人获得以下这些信息: (1)双击红色ERROR提示没反应,说明肯定不是设计文件出的错,应该是某个编译设置或者是综合设置不对; (2)help和ERROR提示中有个关键词 ——“Partition”,中文解释也就是区域划分的意思,总觉得在哪里见过,可又想不太起来。 怀疑是编译设置部分出的问题那就先打开qsf文件看看!(qsf属于命令行文件,我们通过Quartus软件上进行的设置操作都会以命令的形式写入到这个文件里)虽然里面大部分内容可能大家不是很熟悉,不过不要紧,通过单词和变量大致猜猜某个命令是和什么有关的还是没问题的。打开后我就看到下面一堆的命令:(图中为之后注释掉的内容) 为什么会注意到这些?很简单,关键字PARTITION,还有出错的各个模块名称。然后分析下这些命令才让我想起来,原来这些是 当时由于工程较大,采用了Quartus的增量编译时进行逻辑区域划分时设置的 ! 找到错误就好办了,把这部分命令注释掉,再编译就没有问题了。 本文暂时先不对Quartus的增量编译介绍了,想先总结总结在这个问题里面,出现错误时应该遵循的某些分析方法和流程。 第一、出错后我们的第一反应都会是双击ERROR提示看看会跳到哪里……的确,这是最直接的方法,而且一般设计上的大部分问题都可以通过这种方法来解决; 第二、当自己对这个错误不熟悉的时候,可以在ERROR提示处右键-help,然后会弹出Altera给出的关于这类错误的解释,不过它能做的只是解释这个错误类型,但肯定不可能针对你的工程给出什么解释; 第三、对于错误提示的内容,在不熟悉的时候应该要看出里面的“关键词”,进而缩小我们分析的范围; 第四、学会查看qsf文件的命令内容,当设计文件没问题的时候,很可能是里面的某个命令导致了你的错误; 最后,呵呵,大家都知道,利用网络资源,有海量的大牛们都在网上呢!!你解决不了的问题,肯定有人已经遇到过或者解决了~~