[IC design] 2020 Qualcomm interview-design verification engineer

本文移植於tutortecho 2020年9月19日 撰寫

收到面試邀請後我就來到新竹公道路上的 Qualcomm 大樓面談

一開始兩位面試官先問了我以前做過的 Systemverilog 驗證環境使用了甚麼技巧

那是我工作第一年做的驗證環境

是一個專門驗證 DSP 的環境

其中整合了 LDPC encoder,decoder

以及實現各種 noise model

幾乎是自己手刻出 UVM 的各種 component

所以有許多方式面試官覺得不以為然

我自己也覺得不以為然

覺得那時候真的可以做得更好啊

不過基於公司機密我也沒有透漏太多細節

之後其中一位面試官請我實作一個 memory response 的 passive agent 的 driver

其中並沒有任何的 handshaking

就是 driver 收到 read request 之後

delay 5 個 cycles 之後發 response 以及 data 回去

driver 的 command 可能是 burst (連續)

而每個 command 都要各自延後5個 cycles 才能發 response

弄清楚題意之後

大致上就是將 command_phase 和 data_phase 拆來實作

使用一個 queue 在 command 從 command_phase 傳遞到 data_phase

並且在 run_phase 中 fork join 這兩個 function

因為我沒有真的設計過這個題目

所以我現場想的方法被嫌corner case太多

所以這裡就紀錄面試官教的方法就好

command_phase 拿到第一筆 req 之後開始不斷地 enqueue 進去

儘管沒有 req 就放空的 command 進去

data_phase 則是拿出第一筆並且 delay 5 cycles 之後不斷地 dequeue 出來

如果之後拿的是 command 就直接回(空的就不回)

這樣整體 data_phase 的時間就晚了 5 cycle

除此之外 還被考了一些 UVM 基本的概念

比如說正常一個 agent 有甚麼 component

virtual sequence 是什麼

p_sequencer, s_sequencer 是什麼

如何執行 sequence

另外還有 constraint 的設定方式

要如何將一個 100 bit 的訊號使用constraint

去隨機產生出 50 bit 的1 還有 50 bit 0

進階一點就是如何產生 25 個 2’10 其他則為0

還有考 a++, ++a, a = a +1在 hardware(flip flow) 上的行為模式

沒有修過 compiler 的我回答不太出來

另外還有一些 CPU 的觀念

例如 pipeline 切的級數對應到的優缺點

還有使用C語言 function pointer 來實現多形的方式

還有一個問題我其實會但是因為語法問題沒有讓面試官了解我是會的

回家看 code 之後才發現是我沒有講清楚

就是 monitor 和 scoreboard 使用 TLM 之間的通訊方式以及連接方式 (在env)

之前在實作的時候有嘗試使用 uvm_analysis_imp 的macro 才能在 scoreboard 實做 write function

後來覺得還要在 write 裡自己加 fifo 太麻煩

所以直接使用 uvm_tlm_analysis_fifo 然後就省去那個 macro

難怪面試官問我是怎麼指定這個 port 是哪個 port 的時候我一直想不出來

因為我根本就沒有用 write function

我直接把 tlm_analysis_fifo 在 env 接上

然後在 scoreboard 直接使用 fifo.get(trans)

有點可惜沒有講清楚阿

這也證明我對於 UVM 還太欠學

後來問我了一些我寫在履歷上的事蹟

好像也沒問很多工作內容的細節

可能 Qualcomm 本身玩專利的也對這些機密特別敏感而不提及

老實說 UVM 的東西我還期待可以考更多

不過他們看我語法不是很熟好像就點到為止

但是我比較想要跟面試官討論驗證的觀念啊!

喔對了

我有提到我去繼承 uvm_sequence_item

他們對於這個行為非常好奇所以一直叫我舉實際的例子

但是我除了工作上的例子之外沒有遇過其他種情境

工作又不想透漏

最後我還是講了一點無傷大雅的工作內容

就是公司官網都查得到的內容

成功說服他們為何要繼承了…

整體而言我算是被電得相當慘

雖然面試官說今天考得很硬

但其實就是我太嫩了阿

不過未來我一定要當一位比較厲害的驗證工程師

話說晚上就收到了下一次的面試邀請


發表留言