Re: [問題] quartus II 的問題
※ 引述《acelp (未來,一直來一直來)》之銘言:
: 注意coding style 一般除非寫code的觀念有錯
: 不然不會有合成成latch的機會
: 我自己是用Xilinx 自己把log file看一下應該不太困難
: 我記得就算是combination block sensitivity list沒列全tool應該會報出來
: 至於coding style可以看VCS的user guide之類的
: 我記得有一個chapter都在講電路合成的概念
: 間接會講到不同的rtl會有racing或是latch等不預期的結果
: ※ 引述《invalid (everlasting)》之銘言:
: : 順便建議一下你的code,latch應該是可以避免的
: : 簡單來說要避免latch,只要把所有可能發生的情況都列出來就好了
: : (沒有變化的話寫A<=A也好,就是不要不要寫)
: : 還有combination block的話sensitivity list要寫完全
: : (所以我比較喜歡用assign)
感謝各位的回答
我還是持續在試驗不同的方法
不過目前有幾個試驗的結果
1. buffer部分,把array展開為16個獨立的register,並用一個MUX來選擇它們
作為OP。實驗後的結果錯誤率與使用array一樣。我猜應該說明了兩者合成
的結果是相同的,也就是register前後合成了很大的MUX。
2. 原本做為array index 的counter,後來發現quartusII 自動把它map到自己的IP
還是library "lpm_counter",為了避免使用它的counter我用gate自己組counter
的加法器,成功避免他map到lpm_counter。換掉counter之後錯誤率明顯下降。
1200次運算約錯0~20次,所以我覺得問題可能出在餵OP這邊。
目前還在將程式移到modelsim,與撰寫testbench,RTL sim完成後會繼續做synthesis
後的simulation,但不知道這樣做意義大不大,很擔心做白工,問題最後還是沒解決。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.89.1
推
02/14 01:32, , 1F
02/14 01:32, 1F
討論串 (同標題文章)