硬體面試會遇到的 4 大主題 — RTL、Cache、CPU、Transistors
前言
在美國的留學生,頂著唸書的壓力又要找工作,讓人身心俱疲。被美國研究所的龐大的作業、實驗積滿了時間; 對於找工作的變數感到恐慌; 巨大的金錢壓力讓你喘不過氣。身為過來人,我了解到硬體相關資源的稀少,因此我想分享當時準備硬體工程師的面試題目,藉由本文讓疲於準備課業的硬體學生們,快速熟悉面試題目。
除此之外,對於本人找工作的經驗,可以參考下篇文章:
一、硬體程式問題
*程式碼的參考解答都可以在這邊找到:EDA Playground
# 基礎 RTL 語法問題如下:
- wire 類別跟 reg 類別的不同 ➡ wire 不能存資料,就像一線,reg 則可以存資料
- if else/case 語法在合成過程中會變成什麼 ➡ Multiplexer
- 如何避免 Inferred Latches — 確保所有條件分支的所有條件都有提供結果,或者有提供 Default Condition
- a = #5 b 跟 #5 a = b 的差別
前者:先判斷 b 的值,並存到暫存器中,過了 5 單位時間在賦值給 a
後者:有點像是 Gate Delay,過 5 單位時間在將 b 賦值給 a
# RTL 程式問題
- Design FIFO Buffer ➡ 參考連結內 fifo.sv
幾乎算是必考題,我遇過兩次不同公司的面試都有遇到。因此可以試著自己寫一個 FIFO,並嘗試解釋自己的程式碼。 - Design a generator that given 8 bits vector if the LSB bit is one, then the output should be 1 at that bit and the rest is 0 ➡ 參考連結內 generator.sv
這是一個 Priority bit vector 的題目,譬如說 input 是 b’00011010 那 output 就是…