Chip123 科技應用創新平台

標題: FPGA程式不穩定問題 [打印本頁]

作者: walltsou    時間: 2009-1-16 11:41 AM
標題: FPGA程式不穩定問題
公司使用FPGA的寫法皆來自電子部門主管,使用Verilog。但我在使用上發現使用該主管的程式架構寫法上有問題。會有部分模組不是很正常。3 O1 o8 ^9 a1 ?, @9 T
尤其是Bus讀寫的管理界面,它會有讀入,寫出及三態三種模式,整個為純組合邏輯。
" D  ~# G( I7 b( y! H% Y2 f  k6 c我主張在FPGA中不要使用整個大模組為純組合邏輯,因為每次都有點問題。  i$ o. T9 ?3 A6 g
後來轉任軟體,最近一次除錯又發現寫入FPGA值有問題。
* y3 ^) T! }( H  J但我無法明確告知是那個純組合邏輯模組產生出來的問題,而且已有幾個產品都有點類似的問題。
" R8 |, |) J& Q在FPGA中寫一個大模組為純組合邏輯為何會有不穩定現象?
作者: bing    時間: 2009-1-16 02:51 PM
不知道您們是否有設定timing constrain,不只有設定clock 的頻率,還要有input/output delay,
# a: O9 Q! z  q6 d因為FPGA的net/cell delay都遠比ASIC大,所以如果沒有設定好constrain,有可能每次的結果都不是您預期的。
作者: ICKELL    時間: 2009-1-16 05:11 PM
Bus 讀取先要確認是FPGA 本身造成,或是PCB layout 造成的, 先用FPGA 廠商所提供的Tools 測量內部信號,是否為正常?如為正常可能要往FPGA 內部之delay 或是PCB layout 去找問題!
6 k) Y* A3 H2 v: S
" l' F  b* U. i3 s$ t( [2 g7 @0 v3 R4 l' d2 |
eASIC : FPGA and ASIC cost down solution 部落格 http://tw.myblog.yahoo.com/easic007/
作者: walltsou    時間: 2009-1-19 06:43 PM
timing constrain有設,但因最佳化是另一套軟體做的。所以我認為問題出在這�。
/ b" H3 U3 c6 H7 G不過確實每次都有點不一樣的結果。但相同的輸入條件,會有一樣的錯誤輸出,但大部分狀況都是正常。
! W7 n6 a8 C7 J8 H. D+ c$ u4 c% k3 j2 }$ m: c- J9 u$ [# v& a
至於layout上的問題,我想是沒有,因為速度還沒到100MHz。而且是板子固定,改FPGA程式的狀況。外部CPU送的指令相同。
$ k: T8 B- c# s6 `2 o7 u1 F
8 p/ u1 L# L# C0 a) s/ `問題目前比較大的是跨部門溝通,我目前在軟體部,問題FPGA程式在電子部。有時很想自己拿來改。
作者: bing    時間: 2009-1-22 01:17 PM
最佳化是另一個軟體做的??
0 ?) I! j7 K3 ?# V$ }% T您是指synthesis 和 P&R是不一樣的軟體嗎?
' I+ a' H/ n0 w還有您說,相同的輸入條件,會有一樣的錯誤輸出,這是指您要的功能不正常嗎?
作者: walltsou    時間: 2009-1-23 09:40 AM
P&R是同一套。synthesis是另一家的軟體。( C' ~/ U8 p! R! Q& p
但以邏輯推出來的結果,其輸出大部分正常。因為除錯,所以會複製出錯狀況,很固定,一樣的條件,一樣的錯誤輸出。動程式碼後,有可能變成另一個模組出問題。
* {# ^+ ?5 g& J/ ]2 \5 I' x! X2 I本以為是我寫過大的程式,所以我使用路徑中加暫存器來穩定,這招有用,但電子部的人不認同。7 c( ~3 W% ^- g( ]
後來在學校另外遇到一位研究生,也有類似的問題,使用我的方法也是有效。  R$ u: t; N" C' P, o3 |7 D5 q
有時主管級的面子比事實重要,證明了他的錯,還是不理你,看一眼就不理了,仍是堅持他做了一個月以上的模擬是不會出錯的。要我把開機所有時間的信號記錄他才能模擬。我可以重覆產生錯誤狀況,這點就是不能用,奇怪。
作者: tommywgt    時間: 2009-3-5 11:17 AM
標題: 建議修改設計
combinational logic難免會出現glitch雜訊" f$ Z: y8 j. }) B  z0 N
愈複雜的電路當然可能產生的glitch機會愈大, 在debug時常常並不容易找出來
  _& M& E% U3 J. P6 T( A$ m8 Y" {: Q9 i0 \6 e* D
你的建議也是個解決方法之一, 這類的問題不建議求助tool解決, 因為很容造成不穩定或留下隱藏的bug, 可以的話還是從設計下手吧
作者: walltsou    時間: 2009-6-3 09:42 AM
經過這次的經驗,我覺得在設計時要加入測試方法。就是在實際上產生數據丟入。用類似亂數的資料送入。這樣一秒就可以測上萬個樣本。用模擬一個月能模擬數百的樣本就不錯了。
作者: tommywgt    時間: 2009-6-4 01:19 PM
另外考慮過coding style了嗎?" [2 y0 c9 B2 {. B* V+ @
原始設計者跑的模擬是post layout simulation嗎?
. M5 ^$ w( j7 R/ @- s6 g(至少要有gate level simulation)
. |' j( B5 J5 I" d否則不同的tool的模擬結果也只能參考用
作者: jafeng    時間: 2009-7-20 04:02 PM
這個問題我也常發生,可能我對這個還不熟,每次遇到都難以解決,都是調整一點東西再試試看...
作者: r89921162    時間: 2009-8-14 09:27 AM
不知道你的純組合邏輯的最長path 是有多長呢, 如果妳的FPGA runtime的時脈在30MHz以下甚至到20MHz, 其實timing constrain 應該都可以達到要求, 如果有要出chip的話, 要chip 的verilog版本和fpga的verilog版本不一樣是不可行的, fpga 是用來驗證chip的, 這兩個的verilog版本不一樣的話, 那在fpga 驗證對的東西, 如何保證在chip是對的呢! 我覺得有時候值會有錯應該和前面有人提到第一個是的 timing 的問題, 這個問題只要看看fpag tool的timing report就可以, 第二個我有碰過fpga memory 以及register在開機後並沒有初始化, 所以會是一些奇怪的值, 奇怪的讓邏輯一開始或是bus的內部就隱藏了問題, 只是如果沒有碰到適當的pattern, 也許問題不會發生, 這個問題就不好找了
作者: walltsou    時間: 2009-9-2 02:55 PM
System Clock為54Mhz,60Mhz,66Mhz。' |# q4 s: v% ~+ }3 a, y
另外我引入data flow寫法,和一般的if描述不同。& v, n/ b9 K6 x- n, h) W7 Z4 e
我個人習慣使用?:方式來寫。對於輸出,只有一組,這樣我可以知道可能的路徑有那些。: C9 w# e  M3 u6 v
例如:' C0 c; ^. k% }" U
a=>(x)?b:c;
! h; f3 B% K6 J/ F; r  s0 q電子部之前規定寫為if...else。5 ~, s+ q+ k5 u5 R
寫成if...else遇到路徑太長,就不好改。因為到底套了幾層if反而不好找。而合成器對於我認為不必要防護的輸入信號做了互斥,增加路徑長度。
- F. _) k7 O( ~9 w! @data flow的寫法就好加。當然我這樣寫結果就是被趕出電子部,原因是"沒人看得懂"。
作者: martinddd    時間: 2012-5-6 11:52 PM
如果都采用同步电路设计的话 一般这种问题会少一点 另外有片外存储器读写的话 时序约束需要注意下
作者: 王迎草凡@FB    時間: 2015-9-23 09:41 PM
那個我目前遇到一個有點類似的問題,就是常常FPGA不會照著我寫的VHDL下去跑,像是訊號設定為X"66",結果變成其他的
- ?, y- J/ @9 I8 \$ n0 B7 \這是我哪方面的設計出問題?




歡迎光臨 Chip123 科技應用創新平台 (http://www.chip123.com/) Powered by Discuz! X3.2