• 正文
    • 01選擇題
    • 02簡答題
  • 推薦器件
  • 相關推薦
申請入駐 產業(yè)圖譜

這些數字IC驗證面試題,你都刷過嗎?

2024/04/24
5008
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

芯片驗證為什么那么重要?

IC行業(yè)是智力密集、技術密集型的行業(yè),更是高投入、高風險的行業(yè),做一款芯片僅僅是開模的費用就是百萬起。

為了保證芯片功能的正確性和完整性,就需要驗證工程師給設計或者實現過程提供迭代的關鍵意見。

驗證在芯片設計環(huán)節(jié)乃至全產業(yè)鏈中的位置都是舉足輕重的。

驗證崗位兼?zhèn)?a class="article-link" target="_blank" href="/tag/%E7%A1%AC%E4%BB%B6/">硬件和軟件技能點,對于學歷專業(yè)相對比較友好,入行之后的進步空間和學習上限仍然很充足。

但是最近芯易君卻發(fā)現了一個大問題!

不少同學學了幾個月,知識點掌握了、工具會用了、項目做過了、代碼也能寫,但是卻根本不會面試!

面試官隨機提出的問題,只能含含糊糊答出一部分,根本經不起深問和推敲。

正值“彎道超車”的好時機!大家不妨先刷一波高頻、經典的面試題。

IC修真院為大家送上干貨!特此整理20數字IC驗證常見面試/筆試題目,并附上參考答案。

01選擇題

1. 下列關于代碼覆蓋率描述錯誤的是?

A.代碼覆蓋率包括語句覆蓋率

B.代碼覆蓋率包括條件覆蓋率

C.代碼覆蓋率包括功能覆蓋率

D.代碼覆蓋率到達百分百說明代碼bug已消除

2. 關于亞穩(wěn)態(tài)的描述錯誤的是?

A.多用幾級寄存器打拍可以消除亞穩(wěn)態(tài)。

B.亞穩(wěn)態(tài)是極不穩(wěn)定的,理論上來講處在亞穩(wěn)態(tài)的時間可以無限長。

C.亞穩(wěn)態(tài)穩(wěn)定到0或者1,是隨機的,與輸入沒有必然的關系。

D.如果數據傳輸中不滿足觸發(fā)器的建文時間Tsu和保持時間Th,可能產生亞穩(wěn)態(tài)。

3. Verilog語言中,下面哪些語句不可被綜合?

A.#delay語句

B.initial語句

C.always語句

D.用generate語句

4. 下列關于verilog的描述正確的是?

A.Y=a+b; 屬于阻塞賦值語句,執(zhí)行該語句時,先計算 a+b的值,然后更新 y值,在此過程中,不能運行其他語句

B.Generate, for, function語句可綜合

C.如果A=1‘b1,B=1`b0,F=A&~B|B&~A||B,則F=1’b1

D.如果A=4‘hb,則^A=1’b1

5. 判斷電路是否存在競爭冒險的方法有哪些呢?

A.代數法

B.卡諾圖

C.實驗法

D.觀察法

答案與解析:

1.?CD。解析:代碼覆蓋率和功能覆蓋率是獨立的兩種覆蓋率,代碼覆蓋率100%只能表明代碼經過了充分的執(zhí)行,但是代碼中是否有bug以及bug是否會被發(fā)現,取決于驗證環(huán)境中的監(jiān)測點是否監(jiān)測了關鍵信號以及對這些信號的判斷是否正確。

2.?A。解析:亞穩(wěn)態(tài)不能被消除,只能降低其對后級電路的影響。

3. A。解析:產生的代碼所有綜合工具都不支持的結構 time,defparam,$finish,fork,join,initial,delays,UDP,wait。4.?ABCD。

5. A。

02簡答題

6.?簡述UVM的工廠機制

Factory機制也叫工廠機制,其存在的意義就是為了能夠方便的替換TB中的實例或者已注冊的類型。一般而言,在搭建完TB后,我們如果需要對TB進行更改配置或者相關的類信息,我們可以通過使用factory機制進行覆蓋,達到替換的效果,從而大大提高TB的可重用性和靈活性。

要使用factory機制先要進行:

將類注冊到factory表中;

創(chuàng)建對象,使用對應的語句 (type_id::create);

編寫相應的類對基類進行覆蓋。

7. OPP(面向對象)的特性?

封裝通過將一些數據和使用這些數據的方法封裝在一個集合里,成為一個類。

繼承:允許通過現有類去得到一個新的類,且其可以共享現有類的屬性和方法?,F有類叫做基類,新類叫做派生類或擴展類。

多態(tài):得到擴展類后,有時我們會使用基類句柄去調用擴展類對象,這時候調用的方法如何準確去判斷是想要調用的方法呢?通過對類中方法進行virtual聲明,這樣當調用基類句柄指向擴展類時,方法會根據對象去識別,調用擴展類的方法,而不是基類中的。而基類和擴展類中方法有著同樣的名字,但能夠準確調用,叫做多態(tài)。

8. 阻塞賦值與非阻塞賦值的區(qū)別?

阻塞賦值的操作符號用等號(=)表示,當前語句的賦值阻塞其他語句的賦值;

非阻塞賦值的操作符號用小于等于號(<=)表示,當前語句賦值不阻塞其他語句的賦值。

9. 動態(tài)數組和聯合數組的區(qū)別?

動態(tài)數組:其內存空間在運行時才能夠確定,使用前需要用new[]進行空間分配。

關聯數組:其主要針對需要超大空間但又不是全部需要所有數據的時候使用,類似于hash,通過一個索引值和一個數據組成: bit [63:0] name[bit[63:0]];索引值必須是唯一的。

關聯數組可以用來保存稀疏矩陣的元素。當你對一個非常大的地址空間尋址時,該數組只為實際寫入的元素分配空間,這種實現方法所需要的空間要小得多。

此外,關聯數組有其它靈活的應用,在其它軟件語言也有類似的數據存儲結構,被稱為哈希(Hash)或者詞典(Dictionary),可以靈活賦予鍵值(key)和數值(value)

10. SV中的interface的clock blocking的功能?

Interface是一組接口,用于對信號進行一個封裝,捆扎起來。如果像 verilog中對各個信號進行連接,每一層我們都需要對接口信號進行定義,若信號過多,很容易出現人為錯誤,而且后期的可重用性不高。因此使用interface接口進行連接,不僅可以簡化代碼,而且提高可重用性,除此之外,interface內部提供了其他一些功能,用于測試平臺與DUT之間的同步和避免競爭。

Clocking block:在interface內部我們可以定義clocking塊,可以使得信號保持同步,對于接口的采樣和驅動有詳細的設置操作,從而避免TB與 DUT的接口競爭,減少我們由于信號競爭導致的錯誤。采樣提前,驅動落后,保證信號不會出現競爭。

11. 建立時間和保持時間違例的解決方法?

建立時間違例

時鐘路徑插入緩沖器;

更換延遲小的觸發(fā)器;

增加時鐘周期。

保持時間違例

優(yōu)化時鐘,讓時鐘更早到來;

觸發(fā)器插入緩沖器;

更換延遲大的觸發(fā)器。

12.?亞穩(wěn)態(tài)是什么,怎么消除?

產生原因:數據傳輸不滿足觸發(fā)器的建立時間和保持時間

發(fā)生場合:主要發(fā)生在異步信號檢測,跨時鐘域信號傳輸以及復位電路中;

消除辦法:

對異步信號進行同步處理;

采用fifo對跨時鐘域通信進行數據緩沖設計;

對復位電路采用異步復位,同步釋放。

13. 怎么編寫測試用例?

主要是編寫sequence,然后在body里面根據測試功能要求寫相應的激勵,然后再通過ref_model和checker判斷功能是否實現?

14. 如果有很多測試用例,如何讓它們自動執(zhí)行?

可以寫腳本讓它們自動執(zhí)行,例如makefile...

15.?fifo的異步與同步

異步fifo:讀寫時鐘不同;

同步fifo:讀寫時鐘相同。

16.?驗證的思想

驗證就是在設計規(guī)范的要求下,對已知功能目標下的DUT進行檢查,然而實際的使用場景是設計規(guī)范無法全面覆蓋的,驗證工程師只能在有限的資源與時間下對設計代碼進行最大限度的檢查以盡可能多地消除流片之后的bug。

17.?代碼覆蓋率、功能覆蓋率和斷言覆蓋率的區(qū)別

代碼覆蓋率——是針對RTL設計代碼的運行完備度的體現,包括行覆蓋率、條件覆蓋率、FSM覆蓋率、跳轉覆蓋率、分支覆蓋率,只要仿真就可以收集,可以看DUT的哪部分代碼沒有動,如果有一部分代碼一直沒動看一下是不是case沒有寫到。

功能覆蓋率---與spec比較來發(fā)現,design是否行為正確,需要按verification plan來比較進度。用來衡量哪些設計特征已經被測試程序測試過的一個指標

首要的選擇是使用更多的種子來運行現有的測試程序;

其次是建立新的約束,只有在確實需要的時候才會求助于定向測試,改進功能覆蓋率最簡單的方法是僅僅增加仿真時間或者嘗試新的隨機種子。

驗證的目的就是確保設計在實際環(huán)境中的行為正確。設計規(guī)范里詳細說明了設備應該如何運行,而驗證計劃里則列出了相應的功能應該如何激勵、驗證和測量

斷言覆蓋率:用于檢查幾個信號之間的關系,常用在查找錯誤,主要是檢查時序上的錯誤,測量斷言被觸發(fā)的頻繁程度。

18. sv里面動態(tài)數組、關聯數組、隊列各自的優(yōu)缺點,應用場景。

【特點】

動態(tài)數組:可以在仿真時分配空間或者調整寬度,這樣仿真中就可以使用最小的存儲空間。

關聯數組:用來保存稀疏矩陣的元素,當一個非常大的地址空間進行尋址時,sv只對實際寫入的元素分配空間,比定寬數組和動態(tài)數組所占用的空間要小得對。

隊列:結合了鏈表和數組的優(yōu)點,可以在隊列的任意位置增加或者刪除元素,這類操作在性能上比動態(tài)數組小得多,可以通過索引對任意元素進行訪問。

【應用場景】

動態(tài)數組:隨機事務不確定位寬大小;

關聯數組:需要建立一個超大容量數組,用關聯數組來存放稀疏矩陣的元素;

隊列:增加元素或者刪除元素方便。

19. 數據類型怎么轉換,靜態(tài)強制類型轉換和動態(tài)強制轉換有什么區(qū)別?

靜態(tài)轉換:轉換時指定目標類型,并在需要轉換的表達式前加上單引號即可;

動態(tài)轉換:使用函數 $cast

區(qū)別:靜態(tài)類型轉換操作不對轉換值進行檢查,具有一定的危險性;而動態(tài)類型轉換在運行時將進行檢查,如果轉換失敗會產生運行時錯誤。

推薦器件

更多器件
器件型號 數量 器件廠商 器件描述 數據手冊 ECAD模型 風險等級 參考價格 更多信息
4606H-701-101/101L 1 Bourns Inc RC Network, Terminator, 100ohm, 50V, 0.0001uF, Through Hole Mount, 6 Pins, SIP, ROHS COMPLIANT
暫無數據 查看
0191930202 1 Molex Ring Terminal, 10.5mm2, HALOGEN FREE AND ROHS COMPLIANT
$0.46 查看
C1210C226K3RAC7800 1 KEMET Corporation Capacitor, Ceramic, Chip, General Purpose, 22uF, 25V, ±10%, X7R, 1210 (3225 mm), Sn/NiBar, -55o ~ +125oC, 7" Reel/Unmarked

ECAD模型

下載ECAD模型
$2.66 查看

相關推薦

登錄即可解鎖
  • 海量技術文章
  • 設計資源下載
  • 產業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄