USC EE 577A Digital VLSI Design 評價|課程內容、難度、Project 與心得


TL;DR(快速心得)

如果你想走 IC / Digital / ASIC / Timing / PD,
EE577A 算是 USC 必修的 VLSI 基礎課。

作業不算輕鬆,內容偏後端、偏電路實作,
但 timing、logical effort、SRAM、datapath 都是真的很實用。

教授聽誰的影響很大,我那年上課體驗有好有壞。
整體來說:痛苦指數高、收穫指數中上。

如果你的目標是 EE577B 或想往晶片領域走,這堂課基本上還是得上。

想看我修完 577B 後的完全心得,可以看下一篇:
USC EE577B VLSI System Design 評價(577A 的後續實作課)

(想看我更完整的心得、教授差異、踩雷故事 → 往下拉)


前言:為什麼 EE577A 這麼重要?

在 USC EE 的 VLSI/ASIC 系列課裡,EE577A Digital VLSI Design 算是偏後端、偏實作的那種。
主要用 Cadence Virtuoso、畫 layout、跑 timing、做 SRAM、小型 datapath 等等。

老實講,我原本是想逃這堂課的(怕跟 477 一樣又是 layout 地獄)。
但因為是 577B 的 prerequisite,只能乖乖上 XD。


577A 主要涵蓋什麼?

這堂課的主題非常廣,從最底層的電晶體一路到 IC flow:

  • MOS theory
  • CMOS inverter / NAND / NOR
  • logical effort
  • sequential circuits
  • timing analysis
  • power analysis
  • SRAM 設計
  • datapath(adder/multiplier)
  • IC design methodology(口頭講講)

換句話說:

電晶體 → gate-level → timing → datapath → SRAM → IC flow
全部會走過一遍。


課程每週大綱

Week主題簡介
1Overview發 syllabus & 助教教你開 Cadence
2–3MOS Theory477 的延伸版
3–5Logical Effort這堂課的精華
5–7Sequentialflop / latch / FSM
6–7Timingsetup/hold、slack、skew
8–9SRAM6T cell、sense amp、array
10–11Powerdynamic / leakage / sizing
11–13Datapathadder / multiplier / pipeline
14IC FlowRTL → synthesis → STA(講概念)
15Wrap-upFinal 前總複習

Prelab 心得

其實一開始助教說 Prelab 不算分,我懶得做。
結果一堆老印狂問「真的不算嗎?真的嗎??」
教授後來又突然改口:要算 XD
只好期中一次補完全部。

Prelab 1:MOS 基礎暖身
熟悉 Cadence,順便把 MOSFET 的 I–V 行為找回來。很簡單。

Prelab 2:Gate Delay 直覺
開始有 timing 味道了:slew、load、pattern 對 delay 的影響。

Prelab 3:AND16 Tree
做一個 AND16、多層 NAND/NOR Tree,順便感受 sizing。

Prelab 4:SRAM 6T
第一次看 6T cell 寫入/讀取的波形。蠻酷的。


作業心得(HW1–HW6)

HW1(MOS + basic VLSI)

前面有點幹話題,後面開始做 VGS–ID、energy、LVT/HVT,那些後面都會用到。算暖身。

HW2(delay + logical effort + architecture)

比 HW1 重很多。
logical effort、unified transistor model、AND16、priority encoder 都在這裡。

HW3(像工程師的作業)

MUX、complex gate、tree/linear、priority encoder、XOR tree。
第一次感覺到「電路不是只有 NAND/NOR」。

HW4(Timing Closure Mini Pack)

setup/hold、critical/min path、Vt swapping、useful skew。
完全就是 timing engineer 在做的事情。

HW5(SRAM + Cache 組織)

前半是 6T/8T、read/write stability,後半變 cache、banking、array partition。
超級 circuit → architecture 練習。

HW6(不計分但超硬)

像公司 take-home assignment。
priority encoder、counter、3X circuit、leakage reduction,全包。


Lab 心得(Lab1–3)

Lab 1:字串處理 + variation

Python/Perl 字串 parsing + VT variation 1000 次 sample。
第一部分 WTF,但後面超實用。

Lab 2:NAND + Latch timing

真正的 timing lab:pattern、skew、load、rise/fall delay、setup/hold。
超貼近 cell characterization。

Lab 3:Priority Encoder + Auto-Layout

先做 PE4→PE16,再用博士生做的 SKILL script 自動產生 layout。
會用的好爽,不會用的直接被 DRC/LVS 電爆。
助教也沒人會用,全靠你自己摸 XD。


考試心得

Midterm / Final 都是 closed-book,但可以用計算機。
全是手寫題,所以不會寫也能亂寫幾句,通常不會直接零分。

主要考:

  • delay
  • logical effort
  • timing
  • CMOS 行為
  • SRAM/power
  • datapath

基本上考 HW+Lab+講義的組合拳。


這堂課對找工作有什麼用?

非常有用,尤其:

  • setup/hold、skew
  • adder/multiplier
  • SRAM 基本概念
  • pipeline
  • power
  • timing 報告怎麼看

你現在在美國找 IC/ASIC/Verification/Timing,
面試非常容易碰到這些。

我自己後來工作也是有用到不少 577A 學的東西。


適合誰?不適合誰?

適合:

  • 想做 Digital IC / ASIC / VLSI
  • Timing / PD / Verification
  • 之後要修 577B 的人
  • 想補 VLSI 基礎
  • 想面試比較有底氣的人

不適合:

  • 想找水課
  • 完全不想碰 layout
  • 對 MOS、timing 無興趣
  • 完全不考慮走硬體的人

我的完整修課心得與爆料

我那時上 EE577A 是 Sandeep Gupta 跟沙老師 (Shahin Nazarian) 合開的。
Gupta 不知道是從哪邊找來一個業界的叫做 Sridhar Narayanan(可以叫他沙老師 2 號?)一起教課。

其實第一個學期上完經典開局的 EE477 跟 457 後,經歷過 477 的 Layout 地獄,想說能不能不要上偏後端的 577A。但 577A 又偏偏是 577B 的 prerequisite,很靠北。我又對 577B 的 Verilog 與前端內容比較有興趣,所以其實在想能不能找堂別的課,例如 EE533。

結果 EE533 上了兩週我直接傻眼。教授幹話連篇,自吹幫公司抓專利、叫工程師多生小孩傳基因(七八個是不是真的我不知道 XD),投影片講一下、project 爆難、助教找不到、第一周作業還放錯放成 C++。我當下直接覺得:幹,這課真的不行。強迫 attendance教授又這個鳥樣,我直接退掉回來 577A。

因為是 Gupta 跟沙老師合開,所以有兩個時段。
我原本想選沙老師,至少講話清楚、給分好,不像 457 的普神不知道在供三小。
但因為退掉 533,要換課時沙老師的已經被選完,所以我只好選到 Gupta。

前幾週還好,內容基本上是 477 的複習再深入一下。
前半大多是沙老師 2 號講,他講得也還行,只是很愛突然問問題,我還沒醒來旁邊老印就已經唸出答案,真的蠻捲 XD。

577A 整體就是偏後端的課。HW/Lab 跟 477 有點像,算 voltage、current、CMOS、timing,加上 power、logical effort。
Lab 初期沒有太多 layout,但最後還是要畫 128-bit SRAM,只是這次有個自動 layout script某個USC博士生開發的。助教不會用,只能靠自己的悟性跟問那位博士生(大概全 USC 只有他會用 XD)。

後半段換 Gupta 上課後,我覺得他是全 USC Digital IC 最難懂的教授。
一張投影片講 30 分鐘,一直笑不知道笑啥意思的。
SRAM 那段完全聽不懂再講什麼鬼,好在沙老師有錄影補救,外加自己在Youtube找點相關影片,不然真的會爆炸。

考試都是手寫,題目有些看過、有些完全沒看過。建議不要留白,能寫什麼就寫什麼,多多少少會有分。

整體來說,課程結構是有東西的,比 EE533 那種亂七八糟好多了。
而且說不定你最後工作也不是做前端設計,可能去做 timing、PD、verification、memory,這些都多少會碰到 577A 教的內容。


總結:值得修,但要心理準備

EE577A 是 USC VLSI/ASIC 的基礎課,
內容完整、能學到的東西很多、也跟 577B 完美銜接。

只是:

  • 作業不輕鬆
  • Lab 會爆肝
  • 教授看運氣
  • Project 最後幾週會很硬

但如果你未來想走 IC / ASIC / Digital Design,
577A 是該修的。

而且最好找個能一起爆肝的隊友,
最後幾週真的會很需要 XD。


想看我同系列的課程心得:

USC EE577B Digital VLSI Design 評價(577A 的延伸與實作課)

如果你對 USC EE 課程或美國工程師生活有任何疑問,歡迎在下方留言,我會盡量回答。
想看更多留學、工程師、VLSI/SoC 相關內容,也歡迎追蹤本站其他文章。

如需引用或轉載本文,請附上原文連結:
https://rudderstyles.com/usc-ee577a-review/


發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *