關(guān)于IC驗證方面的雜談,涉及驗證步驟、主要驗證崗位和部分企業(yè)驗證面試問題(有點真東西)。
IC驗證流程主要包括以下幾個關(guān)鍵步驟
理解DUT
驗證工程師需要深入理解芯片規(guī)格,包括架構(gòu)、數(shù)據(jù)流向、基本功能、接口、IP、協(xié)議和寄存器定義等。這一步是驗證工作的基礎(chǔ),只有充分理解規(guī)格,后續(xù)的驗證工作才能充分進行。
制定驗證計劃
驗證計劃需要包括驗證策略方法、人力資源調(diào)配、項目進度評估和風險評估等內(nèi)容。對于驗證工程師來說,主要考慮功能測試點、驗證層次、驗證方法和驗證覆蓋率等技術(shù)層面的內(nèi)容。
搭建驗證平臺
根據(jù)驗證方案,驗證工程師需要編寫驗證環(huán)境,通常會使用UVM平臺和Python腳本輔助搭建,并通過冒煙測試確認驗證平臺的完整性。
提取測試點
驗證工程師需要詳細分析和提取測試點,這些測試點是驗證工作開展的核心依據(jù)。測試點的提取需要確保完備性、低耦合性和無歧義。
執(zhí)行驗證
根據(jù)提取的測試點,驗證工程師需要編寫測試用例并在驗證平臺上執(zhí)行。這是一個反復迭代的過程,需要不斷優(yōu)化和改進。
完備性分析
在驗證過程中和驗證結(jié)束后,驗證工程師需要對功能覆蓋率、代碼覆蓋率和接口完備性進行確認,確保所有需求和接口都已覆蓋并且滿足要求。
這些步驟構(gòu)成了一個標準的IC驗證流程,每一步都需要仔細規(guī)劃和執(zhí)行,以確保驗證的質(zhì)量和完整性。
下面看看市場上招聘IC驗證比較多的方向
SOC驗證
負責整個芯片系統(tǒng)級的功能驗證,包括軟硬件協(xié)同驗證、性能驗證和系統(tǒng)集成測試。主要要求:
-
- 完整的SoC架構(gòu)理解能力軟硬件接口協(xié)議知識系統(tǒng)性能分析能力FPGA原型驗證經(jīng)驗
高速接口驗證
專注于各類高速接口IP的功能驗證,如PCIe、USB、HDMI等。主要要求:
-
- 深入理解高速接口協(xié)議規(guī)范信號完整性基礎(chǔ)知識協(xié)議一致性驗證經(jīng)驗高速接口調(diào)試能力
處理器驗證
負責CPU/GPU/NPU等處理器核心的功能驗證。主要要求:
-
- 處理器架構(gòu)原理深入理解指令集架構(gòu)知識微架構(gòu)驗證經(jīng)驗性能驗證能力
總線協(xié)議驗證
專注于片上總線和互聯(lián)網(wǎng)絡(luò)的驗證,如AXI、APB、NoC等。主要要求:
-
- 總線協(xié)議規(guī)范深入理解帶寬和延遲分析能力互聯(lián)拓撲驗證經(jīng)驗死鎖檢測能力
存儲系統(tǒng)驗證
負責各類存儲控制器和存儲系統(tǒng)的驗證。主要要求:
-
- 存儲器架構(gòu)和接口知識存儲一致性驗證經(jīng)驗內(nèi)存控制器驗證能力Cache系統(tǒng)驗證經(jīng)驗
多媒體驗證
負責視頻/音頻編解碼、圖像處理等多媒體IP的驗證。主要要求:
-
- 多媒體編解碼標準知識圖像處理算法理解視頻接口協(xié)議經(jīng)驗性能和帶寬分析能力
下面具體看看各家企業(yè)驗證崗位面試問題
平頭哥(數(shù)字IC驗證工程師,一面)
-
- 自我介紹驗證環(huán)境結(jié)構(gòu)完整的驗證流程AMBA總線細節(jié):AXI有哪些信號,AHB有哪些信號,resp為error時ready保持幾拍Reference model怎么寫功能覆蓋率怎么定義(手撕代碼),采樣的信號從哪里來Interface怎么寫Sequence怎么掛載到sequencer上,激勵怎么發(fā)出來(簡歷)DMA的驗證里,功能點有哪些
平頭哥(數(shù)字IC驗證工程師,二面)
-
- 大學學過哪些課程,有什么樣的經(jīng)歷。使用PMOS和NMOS實現(xiàn)一個NAND,寫出真值表,再用NAND實現(xiàn)一個XOR,只能用NAND。Verilog阻塞和非阻塞賦值。以下兩段代碼綜合出來的電路有什么不同。用verilog實現(xiàn):一個1bit輸入a,一個1bit輸出b,當a為x態(tài)時,b為1,否則為0。如果a為2bit,a[0]和a[1]只要有一位是x態(tài),b為1,再寫一遍verilog。給一個DUT,怎么搭環(huán)境,環(huán)境里有哪些元素。覆蓋率模型里面應該包括哪些?Scoreboard怎么比較數(shù)據(jù)?如果數(shù)據(jù)亂序應該怎么比較?黑盒驗證有什么缺點?如果采用黑盒驗證,測試全部通過,但是設(shè)計里的狀態(tài)機出錯(卡在某一狀態(tài)、沒有正確退回初始態(tài)等),應該怎么解決。給一個實際案例,有一個DUT按一種編碼規(guī)則輸入32bit數(shù)據(jù),輸出1bit判斷輸入是否符合編碼規(guī)則,符合輸出1,不符合輸出0。請搭建一個驗證環(huán)境,詳細描述環(huán)境的構(gòu)成、邏輯、激勵、覆蓋率等。在回歸測試階段,如何保證該設(shè)計100%正確?
芯動科技(IC驗證,一面)
-
- 項目介紹,驗證環(huán)境,頂層包含哪些內(nèi)容?
-
- 分析項目中代碼覆蓋率,功能覆蓋率,斷言覆蓋率,低或高的原因?
-
- driver sequencer sequence通信機制,代碼描述?
-
- 用到了哪些tlm端口,為什么用這個端口,與其他端口區(qū)別?怎樣配置,使用?如果scoreboard接收數(shù)據(jù)出錯,你怎樣處理?怎樣理解factory機制?
芯動科技(IC驗證,二面)
-
- 在transaction或sequence中定義不是隨機類型的變量,在驅(qū)動到dut的時候,去指定它的值或者讓它隨機,應該怎么做?
-
- typedef使用過嗎,它的特點,用法?
-
- 覆蓋組是怎樣寫的?覆蓋點的約束與事務之間有什么關(guān)系?cross ?base ?sequence的理解(詢問了下面試官說這是覆蓋率相關(guān)的說法,根據(jù)他的提示,理解后勉強回答了幾句)?在對寄存器模型檢查中,怎樣檢查兩個寄存器地址是否是真正的對應?
-
- 有哪些變量約束方法?你使用過哪些,在哪些地方使用過?(可添加約束的地方要列舉出來)
-
- 知道fifo嗎?在驗證過程中接觸到的fifo有哪些?(我回答隊列、信箱、uvm_tlm_anylsis_fifo)
-
- 關(guān)聯(lián)數(shù)組,動態(tài)數(shù)組,隊列的區(qū)別,關(guān)聯(lián)數(shù)組的運行速度怎么樣?
- 驗證項目中,從自己現(xiàn)在的思維出發(fā)提取驗證點,你會考慮到哪些,怎樣考慮?
進迭時空(IC驗證,一面)
-
- 自我介紹
-
- 怎么看待設(shè)計和驗證
-
- 介紹ip設(shè)計
-
- debounce怎么做的?
-
- cdc模塊怎么做的?扣cdc細節(jié)?為什么打2-4拍不止2拍?
-
- 介紹BT驗證項目
-
- 寄存器模型predictor相關(guān)功能覆蓋率先關(guān)。怎么sample的,怎么去掉不需要的采樣。
-
- 代碼覆蓋率相關(guān),分支覆蓋率和條件覆蓋率的區(qū)別。
-
- test plan怎么寫的
-
- 印象深刻的bugpython相關(guān),元組與列表,正則匹配,oop反問
字節(jié)跳動(IC驗證,一面)
一面
自我介紹;
介紹一下mcdf的驗證環(huán)境
功能覆蓋組的定義;具體收集了哪些測試點?千萬不要說FIFO掉進坑里面了;
UVM相對于SV的優(yōu)勢?
sequence機制的優(yōu)點?
virt_seq和virt_sqr的意義;
virt_seq的底層seq如何掛載對應的底層sqr上面;
模塊級和系統(tǒng)級驗證的區(qū)別?
ARM(IC驗證)
一面
自我介紹
IIC項目介紹,apb_agt和IIC_agt;
IIC中斷功能的驗證,舉個例子
UVM的factory機制?
UVM的phase機制?
用過哪些仿真工具?
python和shell學過沒有?
ASIC設(shè)計的流程?
二面
講講DUT的功能,驗證環(huán)境;
cgm的收集了哪些信息?有做cross嗎?
sbd如何比較數(shù)據(jù)?
phase機制的幾個核心的phase;
uvm_do的大概執(zhí)行過程;
fork join三兄弟的區(qū)別?
#0的作用
SV除了那三個同步的方法以外還有其他的嗎?
進程和線程的區(qū)別?
linux下將相應的日志信息輸出到某些文件;
#include和#< >的區(qū)別?
vlitate關(guān)鍵詞開辟空間在哪個階段?
地平線(IC驗證)
自我介紹?
對地平線的了解?
為什么選擇IC驗證?
實驗室項目介紹?
數(shù)字IC流程介紹?
中斷的概念?中斷的應用場景?中斷的向量地址?
異步FIFO和同步器的使用場合?
脈沖同步器的介紹,展寬電路的時鐘是哪個?
多bit信號為什么不能使用多級DFF?
前仿真和后仿真的概念?
前仿真可以檢查亞穩(wěn)態(tài)的問題嗎?
綜合的輸出有SDF文件?
時序約束的概念?
驗證無法檢查DUT的哪些方面?
$display和$monitor的區(qū)別?
知道timeslot嗎?
MTK
一面
自我介紹;
寫過一些verilog小項目嗎;
跨時鐘域處理辦法;
介紹項目(驗證環(huán)境、測試點、覆蓋率、遇到的問題、接口協(xié)議);
斷言(a升高,則b連續(xù)五個周期保持為高);
一面
介紹IIC項目的驗證環(huán)境,驗證了哪些功能;收集了哪些特性的覆蓋率信息。predictor的作用;APB和IIC agent中driver和monitor的作用;scoreboard如何進行數(shù)據(jù)比對(期望值和實際值),在仿真完成后是否有做檢測(面試官說是否測試數(shù)據(jù)隊列里面是否還有數(shù)據(jù),如果有錯誤的數(shù)據(jù)該如何處理);covergroup和coverpoint和bins的區(qū)別;sample是以covergroup還是coverpoint為對象;覆蓋組的coverpoint如何定義;
mcdf驗證了哪些功能;仲裁器如何驗證;將dut內(nèi)部信號拉出來做驗證的時候,需要考慮什么(仲裁器驗證為例);
測試點的理解;測試點和測試用例的區(qū)別和聯(lián)系;
手撕代碼,枕頭檢測;當幀頭frame_head出現(xiàn)時,檢測din是否等于8’h23,如果連續(xù)三次出現(xiàn),則輸出一個脈沖信號;
建立時間和保持時間的定義以及違法時解決辦法;
阻塞賦值和非阻塞賦值;
跨時鐘域同步方法;
IC功耗和哪些參數(shù)相關(guān);