IC前端設計bug小結。
bug review會
近幾天公司內部開了個IC設計前端的bug review會議,總結了經常出現的問題,很有意思,特記錄一下。
1. 在驗證的時候,不僅僅只從RTL角度考慮test case,也應該結合應用場景考慮test case。
一方面,應用場景提出的要求可以幫助設計者檢查自己的設計是否符合能夠滿足實際需求;
另一方面,也有助於功能驗證的完備性。
2. 同步設計中不允許在sdc約束中加入multicycle或者false path,如果綜合出現timing violation則
可以通過修改設計插入register解決。設定了multicycle或者false path之後,STA工具就不會檢查
這部分同步設計了。如果需要在前仿中加入對multicycle的模擬,可以通過加delay的方式模擬後仿。
3. 在涉及到RAM的設計中,一定要注意在某個時鐘週期內部,是否可能會存在同時讀/寫RAM而造成
衝突的問題。
4. 在有明顯的週期性的處理過程(如多媒體中以幀為單位的處理),在當前週期處理完成或者下個週期開始處理
之前要有自己回覆成原始狀態的功能。不能依賴於reset訊號回覆原始狀態。即系統 soft reset是當系統出現問題
時恢復用的,在正常功能中不應該存在復位行為。
5. 在多媒體的驗證中,不能僅僅為了方便驗證單幀case。多幀的case也要佔到一定的比例。
6. 中斷報告的時機。考慮以下場景,假設A要通過fifo向C發資料,只有A真正的將資料全部寫入FIFO之後,才能報
中斷給C。這是中斷報告的基本原則。以AXI匯流排寫為例,不能僅僅發出最後一筆AXI_WR的command就報中斷,準確來說應該等到
全部BRESP回來再報中斷。
7. 設計AXI_master寫時,要等到一個burst全部資料都準備好(快取在一個FIFO中)之後才能發出burst write command,這樣子資料
在下一個週期開始傳送。這種設計不會由於自身的設計問題拖累AXI BUS的效能。
8. 設計AXI_master讀時,要等到有足夠的空間能接受全部讀的資料(或者隨著時間推移,總是保證有足夠空間儲存資料,而不至於RREADY
拉低)時,才能發出AXI read burst command。這種設計不會由於自身的設計問題而拖累AXI BUS的效能。
9. 當做UVM驗證時,最好不要單純做黑盒測試。為了測試的完備性,應考慮至少做到灰盒測試。
10. 寫sdc檔案時,一定要保證每一條約束都是有明確目的的,一定要在完全清楚該約束的含義及可能導致的後果的前提下,才能寫該約束。因為
sdc設定問題而導致的晶片bug會很嚴重,且難於驗證出來。
11. 一般來說,軟體給硬體分配的空間是地址對齊的。但是由於硬體多以32bit為基準操作,所以硬體多是以word對齊的。這樣在驅動端就會導致軟硬體
對齊方式的不一致。直接後果是:驅動為了匹配二者,從而徒勞的做一次資料搬運,而且可能會佔用一個靜態陣列,導致該空間被永久佔用。
that is all。
相關推薦
IC前端設計bug小結。
bug review會 近幾天公司內部開了個IC設計前端的bug review會議,總結了經常出現的問題,很有意思,特記錄一下。 1. 在驗證的時候,不僅僅只從RTL角度考慮test case,也應該結合應用場景考慮test case。 一方面,應用場景提出
IC數字前端設計開發9(vim——開啟多個檔案、同時顯示多個檔案、在檔案之間切換)
開啟多個檔案: 1.vim還沒有啟動的時候: 在終端裡輸入 vim file1 file2 ... filen便可以開啟所有想要開啟的檔案 2.vim已經啟動 輸入 :open file
IC數字前端設計開發13 (Linux的mktemp命令)
mktemp 命令:用於建立暫存檔案,提供給shell指令碼安全的使用臨時檔案 引數 -d 建立一個替代目錄檔案 -p<目錄> 指定使用目錄作為生成臨時檔名時的字首 -q 不顯示錯誤資訊 -u 結束時刪除暫存檔案 Linux系統有特殊的
IC數字前端設計開發19 (Linux cat命令)
Linux cat命令 命令:cat cat 命令用於連線檔案並列印到標準輸出裝置上。 使用許可權 所有使用者 語法格式 cat [-AbeEnstTuv] [--help] [--version] fileName 引數說明: -n 或 --numb
IC數字前端設計開發23 (linux命令詳解:md5sum命令)
前言 在網路傳輸、裝置之間轉存、複製大檔案等時,可能會出現傳輸前後資料不一致的情況。這種情況在網路這種相對更不穩定的環境中,容易出現。那麼校驗檔案的完整性,也是勢在必行的。 使用說明 md5sum命令用於生成和校驗檔案的md5值。它會逐位對檔案的內容進行校
IC數字前端設計開發30 ( beyond compare 4 破解)
來自:https://blog.csdn.net/abifajhoifnof/article/details/79997565 其實 beyond compare 4這個軟體安裝完成後在 C:\Users\[計算機名]\AppData\Roaming\BCompar
IC數字前端設計開發29 (vim verilog自動化工具)
來自:http://bbs.eetop.cn/thread-335755-3-1.html Python中,怎麼在字串裡嵌入雙引號或者單引號 兩種方法: 1、在雙引號前面加個轉義符 \ ,即反斜槓。如"Hello \"W \"orld",會輸出&n
IC數字前端設計開發28 (vcs常用模擬選項)
來自:https://blog.csdn.net/bcs_01/article/details/79803304?utm_source=blogxgwz6 VCS的模擬選項分編譯(compile-time)選項和執行(run-time)選項。 1.1 VCS常用的編譯選項 表&
IC數字前端設計開發27 (VCS中使用coverage metrics進行程式碼覆蓋分析)
來自:https://blog.csdn.net/fredfei2002/article/details/5539060 VCS覆蓋率概念 vcs指令碼命令中包含六種覆蓋率分析選項:-cm line|cond|fsm|tgl|path|branch|assert,分別
IC數字前端設計開發26 (使用VCS生成覆蓋率報告)
來自:https://blog.csdn.net/limanjihe/article/details/52430286 第一部分: html檔案,想快速用瀏覽器開啟,而不是通過滑鼠點選的老套方式, 有著簡單且看上去高大上的方法: firefox瀏覽器 firef
IC數字前端設計開發25 (rtl時序圖製作工具)
timing editor http://timingeditor.sourceforge.net/ timingdesigner9.2 http://bbs.eetop.cn/thread-611436-1-1.html &
IC數字前端設計開發24 (Linux md5sum比較兩個資料夾下面檔案是否相同)
來自:https://blog.csdn.net/wengyupeng/article/details/69791404 Copy資料夾之後,檢測兩個資料夾(dir1,dir2)下檔案是否相同。logdir 是任何一個存放生成檔案的目錄 . cd dir1
IC數字前端設計開發22 (shell迴圈:for、while、until——詳解)
來自:http://blog.51cto.com/12105235/2090749 迴圈執行 :將某程式碼段重複執行多次; 重複執行多少次: 迴圈次數事先已知 ;迴圈次數事先未知 ;有進入條件和退出條件。 三種迴圈體:for、while、until。
IC數字前端設計開發21 (shell指令碼示例:批量比較多個檔案的內容是否相同)
來自:https://www.linuxidc.com/Linux/2017-08/146536.htm 要比較兩個檔案的內容是否完全一致,可以簡單地使用diff命令。例如: diff file1 file2 &>./tmp/null.txt 但是dif
IC數字前端設計開發20 (Linux命令 --- 檔案比較diff/cmp)
來自:https://blog.csdn.net/wuchunlai_2012/article/details/52402239 diff [options] 原始檔 目標檔案 按行比較兩個檔案,並顯示兩者的區別。 -i 忽略大小寫 -b 不檢查空格字
IC數字前端設計開發16 ([linux命令] find)
Linux find命令是所有Linux命令中最有用的一個,它允許按名稱、型別、使用者、許可權、時間等實時查詢檔案,還能對查詢到的檔案執行檢視、刪除、移動等操作。 一、find官方手冊 使用man find檢視linux find命令的使用方法如下: NAME find -- walk a fi
IC數字前端設計開發17 (Shell中判斷語句if中-z至-d的意思)
[ -a FILE ] 如果 FILE 存在則為真。 [ -b FILE ] 如果 FILE 存在且是一個塊特殊檔案則為真。 [ -c FILE ] 如果 FILE 存在且是一個字特殊檔案則為真。 [ -d FILE ] 如果 FILE 存在且是一個目錄則為真。
IC數字前端設計開發18 (用shell指令碼編寫區別兩個資料夾內檔案的不同)
#!/bin/bash mkdir tmp basedir="./tmp" workdir="./" #這是定義兩個目錄,按照你的說法,這兩個目錄下檔名應該都是相同的 dir1="txt_test0" dir2="txt_test1" #這是用來儲存查詢di
前端踩坑小結:多個非同步請求在同一個函式裡面執行時的同步問題之promise的用法。
今天用VUE編寫專案時,涉及到兩個非同步請求在一個方法裡面對同一個變數進行操作,之前自己都沒意識到多個非同步請求對同一變數進行操作的時候會導致資料錯誤,結果今天除錯了半天,才想到了這個問題。也是怪自己還是一個新手,對於這種常識性的錯誤都不敏感。 於是自己查了一下相關資料,發
C#使用HttpWebRequest進行HTTP請求傳送和接收的一些小結。(新增修復.NET4.0以下關於cookie的bug)
2014.11.29 新增HTTPS處理和常用的getMid函式 直接貼程式碼: #region httpUtils private const string DefaultUserAgent = "Mozilla/5.0 (Windows NT 5.1