6系列FPGA中使用塊RAM的心得(4)
調(diào)試過程中的一點小問題
生成IP核的調(diào)用之后,然后對其進行例化,格式是
rrra YourInstanceName (
.clka(clka),
.addra(addra), // Bus [9 : 0]
.douta(douta)); // Bus [43 : 0]
然后調(diào)用sinplify,對其進行綜合,結(jié)果很不順利。首先是synplify報不支持器件,才發(fā)現(xiàn)synplify 9.6.2是2008年的產(chǎn)品,比Spartan6器件還要老。更新到Synplify Pro D-2010.03之后,器件是支持了,但是一綜合就報錯停止了,卻不提示有什么錯誤。查看工程文件夾下面的.log和.srr文件,里面也是啥信息都沒給。沒辦法,只好切換會使用XST進行綜合。這回能給出信息了:因為例化了28次,所以有28個錯誤,全部提示ERROR:HDLCompilers:26 - f7.v line 49 unexpected token: rrra。
HDLCompilers:26這個錯誤,一般情況下是把wire類型的值賦給了reg型的變量才提示的,但是仔細檢查了程序沒有發(fā)現(xiàn)有不對的類型聲明,非常納悶。思考了好久才發(fā)現(xiàn),問題竟然就出在IP調(diào)用的身上。原來,我在使用rrra ROM0(start,addr0,temp0);調(diào)用之后,對應的douta它是一個端口,自然是wire類型的,而程序聲明中temp0是一個reg型的,用來傳遞參數(shù)時因為類型不匹配自然提示錯誤了。
這里也發(fā)現(xiàn)了在ISE中調(diào)用synplify進行綜合的一個不足之處,就是如果源程序中如果有錯誤的話,在直接調(diào)用synplify時,并不給出錯誤的具體信息,而是直接終止綜合;沒辦法還得使用XST點擊“check syntax”進行程序的語法檢查,而在synplify環(huán)境下點擊“syntax check”一樣也能給出錯誤信息??磥矶叩慕涌谶€不是非常完善吧。
評論