2、uartus的增量编译时进行逻辑区域划分时设置的!找到错误就好办了,把这部分命令注释掉,再编译就没有问题了。本文暂时先不对Quartus的增量编译介绍了,想先总结总结在这个问题里面,出现错误时应该遵循的某些分析方法和流程。第一、出错后我们的第一反应都会是双击ERROR提示看看会跳到哪里的确,这是最直接的方法,而且一般设计上的大部分问题都可以通过这种方法来解决;第二、当自己对这个错误不熟悉的时候,可以在ERROR提示处右键-help,然后会弹出Altera给出的关于这类错误的解释,不过它能做的只是解释这个错误类型,但肯定不可能针对你的工程给出什么解释;第三、对于错误提示的内容,在不熟悉的时候应该
3、要看出里面的关键词”,进而缩小我们分析的范围;第四、学会查看qsf文件的命令内容,当设计文件没问题的时候,很可能是里面的某个命令导致了你的错误;最后,呵呵,大家都知道,利用网络资源,有海量的大牛们都在网上呢!你解决不了的问题,肯定有人已经遇到过或者解决了QuartusIIQuartusII增量编译的个人学习(二)下面开始来仔细研究研究这个增量编译。首先,得先看看QuartusII的编译过程是个怎么样的,要了解这个过程很简单,看看下面这张图,谁都不陌生:Task由TimeyjCompfleDesign00:01:31“,Analysis&Synthests00:00:06*fitter(
4、Ptace&Route)00:00:51YAssembler(Generateprogrammingfiles)00:00:10LTimeQuestTimingAnalysis00:00:09yEDANetiistWriter00:00:03电ProgramDevice(OpenProgrammer)33电工19Ut19Ut.Mt工tMlt我tftHttttia-t加士MtMttt1M1M-tmt(w-tmt(wttMtttMtMTtMTttt斯七*Htfl*Htfl11RRiH-fliH-fl4e*14e*1++Hs-.1u1Hs-.1u133IIa4IIa4一nJn
5、JJ-1ft3J-1ft3JIXIdIXJIXIdIXJIJIX1.1-iJIJIX1.1-iJJ33iissEE窿窜窜窜雷ss生jsijjrjwiijsijjrjwiirr扃手利打;田HiHi:444/4f4f学J4tighHPnlJ4tighHPnluEqrauEqramitmit“7iQRF*71147iQRF*7114igigeenlnl*,叮44,上噂1191rmJMiffVWlt91rmJMiffVWlt44,3&q3&q力工djivimnlJdjivimnlJ:P*P*JTET1:JTET1:/5-lqqE/5-lqqEi.11-
6、A1iTMti.11-A1iTMt|:工占44之士nrDnnsElBnrDnnsElB口口口的具fHTW,MSTtlSTEG门丁F-&es;M-FJmrrriCfi-CBIC*3H23*KtlD|i_LiPAHTXTtMMrrXXSTTTHEWTFIT-*CtLIdPW7rTICIi-.0aU)l|lJjTT-94CI1014dftLruitl*.aTTtt.aTTttS,77TTFKS,77TTFK方寸FITT*FITT*11kW;LIPTfkW;LIPTf”::鹏门(:,RMTITHMWIlIit(Md-iSctlenMw二fKiiaulPAPA--7TTCKY
7、rr7TTCKYrr;T=T=:TTTTKK苦:FITwrt|rFITwrt|rkk|,-|*tn-aijr;tt.i|,-|*tn-aijr;tt.i:uussLi:rLi:r?TTHH;11一气一fc-fc-,rI7-rrciII7-rrciI--iiRjwrrn口二-ETM51TmlraT_rrr-叮讣yr察好WUUTIM二百曲HlS77t4xctlonblF出,疝*conirlrliiJtPfcFTitlCaST:TTZfl_E5E.PatJCii_r.F-:.rL*T9SLW_*K7:囚口下丁的PJWTITI7Pirl*tSSJi,VA,T工餐匚HVILFlA
8、CEWIfT二JUfi匚N6TI&工:工,二FTmHiAF工R邛彳工有LV13EL*EMWT二啊_ROTT11KR-|AiLP.A7OSTLIVI:.-pCtJTl栉fcFmflll二PT7TO_iI工EF7*:1E:LZ7LFlADEXr:MIi:NCErfKPM*ifI-F:曾升一i打后匕1由一tlAi&CEirr-lwp-noTt”子RJIMITiai二FI1:二fMMR料才工0二LML5之1二0二01:蒋;相71:71,二;71二3写加.才工E二|.五!11r4JhC9rrAhnCfiCT111.J10Wi&ii
9、-SieilCifiwid_*RMLLIJWfiliR_STATSUXnD-MICt工。4nCTli9iid*HTFrrnCTli9iid*HTFrr7亡tiCii13ddEttiCii13ddEt:-Mcticn2iO-Mcticn2iO*不_二-SiietliJild-SiietliJildb-sMMctLonb-sMMctLon_ii3*_ii3*rri-3Brri-3BtliiniaTsjtliiniaTsj;=亡七11110n$WWwiowAft+DProperttK设定好了以后打开DesignPartitionWindow可看到如下图:::UftUftm;;*risd
10、nwnrisdnwn打.rcrTTTrcrTTTjfiwrwajfiwrwann_Dr_Dr门EX是分区A的,哪部分逻辑是分区B的。之后用户就可通过设定A、B分区的属性类型来告诉编译器,哪部分已经不需要重新综合、布局布线了;哪部分已经修改了,需要重新进行综合等等。而我们来看看LogicLock的作用,是对设计进行物理分区”,更准确的说,它是对目标器件进行物理分区”,然后将逻辑上的功能模块分配到一定的分区内。也就是说,我们先对目标器件进行物理区域划分,把它分成几个地盘”,然后选择一个逻辑功能模块分配到某个地盘里,告诉编译器,以后这部分逻辑功能就只能在这个地盘”里面布局布线了。同样的,用户可
12、QHQH里面有两个主要的参数,Size和State:Size有两个选项,Auto、Fixed;而State也有两个选项,Locked、Floating。但是并不是有着四个组合,其实只有着下面三种状态:TypeTypeChipPlannerBehaviorFloatingAutoDottedlineCompilerchoosesappropriatesize&locationFloatingFixedDashedlineCompilerchooseslocation;userchoosessizeLockedFixedSolkilineUderchoosessize&1locat
13、ion第一种,Auto+Floating:由编译器自动选择区域大小和位置;(在ChipPlanner里面由虚线显示)第二种,Fixed+Floating:由编译器选择位置,但由用户设定区域大小;(在ChipPlanner里面由短实线显示)第三种,Fixed+Locked:区域大小和位置都由用户来设定。(在ChipPlanner里面由实线显示)那我们来说说LogicLock在增量编译里面有什么作用呢?还是需要强调一下,增量编译不是一定非要用到LogicLock,但Quartus推荐在增量编译时使用LogicLock!为什么呢?因为它可以让增量编译的思想贯彻得更彻底。我们想想在前面用DesignP
14、artition时出现的一种情况:改动后的模块逻辑功能上变化比较大,影响了其它逻辑分区”的布局布线,这样未改动部分也需要进行重新编译了。但如果这个时候使用的是LogicLock,由于每个逻辑功能模块都分配了一定的物理区域”,改动后的模块再怎么变也是在它自己的地盘”里,不会影响到别的地盘”的布局布线。但LogicLock也会带来一定的负面影响,最直接的,一般情况下,时序分析后的Fmax都要更低一些。这是为什么呢?其实想想也能知道,如果没有使用LogicLock,编译器可以自动从全局出发去做出做大的优化,而我们人为地进行了物理分区限定,那即使可能每个小模块做到了很好的优化,但是由于各个区域之间的布
15、局布线受到了限制,那自然会有所影响。但也不能如此绝对地断定,如果在占用资源很庞大的情况下,使用这种方法还能带来意想不到的效果。Error:PartitionhierarchyPN_gen:inst2doesnotexistinthecurrentdesignorreferstoaninferredhierarchyError:PartitionhierarchyTS_gen:inst5doesnotexistinthecurrentdesignorreferstoaninferredhierarchy几个错误都很相似,大致的意思就是说划分的“*这些模块不存在当前的设计里面。这里就觉得奇怪了,出
16、现错误的这些模块本来就是原来大工程下的其它子模块,当然不包括在现在的设计里面了,怎么还报错呢?双击红色的ERROR提示没有反应,于是又再右键错误-help:VowVowatEKatEK塔II**SWHMWNMtSWHMWNMt==切士!m4rm4r即MMWtlWMWtlWM管ll啊IRwrIRwrEwFBvMVHfREwFBvMVHfRrnrt4prnrt4pCNfl*CNfl*//Fip-WfiFip-WfirutiprutipEriMWguMEriMWguMXKXKIWKhMIWKhM*GT*GTONONftprmftprmrCVfflKtrCVfflKtpVWrpVWr11匕f!西碑卦聘“中岑AAHFNHFN..修11工总AHg.AHg.CCEENNLLMMHHMKCGMKCGWWUU1或VTAMTIVTAMTILL,,n0n0nmnm&&大致意思就是设定的区域划分没有实体建议删除或者重建区域划分。看完之后,还是一头雾水原本该是个很简单的操作,怎么出现这样的错误呢?首先静下来想想,不能慌,总结下这个问题,我个人获得以下这些信息:(1)双击红色ERR