ICLAB — 交大修課心得

單純記錄一下自己的肝都用在哪裡

Mirkat
MIRKAT X BLOG
8 min readSep 21, 2021

--

I don’t own the rights of this picture, see link.

課程資料

積體電路設計實驗 Integrated Circuit Design Laboratory
教授:李鎮宜
修課年度:109下 電子碩(大四下)
GitHub: 2021_Spring_NCTU_ICLAB

需要的基礎

邏輯設計、數位電路與系統、電子學(一)超大型積體電路設計導論VLSI

課程大綱

詳細上課內容可以參考連結。
另有 HackMD易讀版

Lec00: Develop Environment
Lec01: Introduction to IC Design & Combinational Circuit
Lec02: Sequential Circuit
Lec03: Testbench and Pattern
Lec04: Advanced Sequential Circuit Design
Lec05: Introduction to Macro and SRAM
Lec06: Introduction to Synthesis Flow with Synopsys Design Compiler
Lec07: Static Timing Analysis
Lec08: Low Power Design
Lec09: Introduction to SystemVerilog & Advanced Testbench
Lec10: Coverage and Assertion
Bonus Lec: Functional Formal Verification with Cadence JasperGold
Lec11: Cell Based APR Design Flow
Lec12: APR II, things to do after layout

上課方式

由助教上課,李鎮宜老師只有少數時候會來講一些課程引言。助教團隊由李鎮宜老師與張錫嘉老師的實驗室學生所組成。

上課時助教會先帶過講義,接著講解當周的 Lab 內容。講義內容為一些 IC 設計的觀念及知識,Lab 大多為實踐當周講義內容的練習。助教也會在 FB 上創建社團供大家問問題。

這學期以英語授課,畢竟英語並非助教的母語,上課都是照稿念為主。我覺得英語授課很難跟著助教的速度理解課程內容,大多還是下課後自己啃講義、和同學討論為學習主要方式。

比較有趣的是,曾經在提到超大型積體電路設計導論VLSI李鎮宜老師上課時因冗言贅字稍多、上課不易專心。但或許是英語的特性,老師講英文的時候完全沒有贅字,超容易專心。

評分方式

期末會調分。

Weekly Exercises:60%(12 Exercises)
Midterm Project:10%
Midterm Exam:6%
Midterm Online Test:8%
Final Project:10%
Final Exam:6%
Bonus:3%

作業

一個學期16周,包含了12 Labs + 1 Bonus Lab + 2 Projects。可以參考我的 GitHub: 2021_Spring_NCTU_ICLAB

每個作業皆有兩次 demo 機會,2 de 分數打七折。

LABS

Labs 的部分,我認為可以切成 Lab01~Lab06 以及 Lab07~Lab12。

上半學期的 Labs 重點在於「設計」:有什麼好的想法或演算法可以改善 performance?要如何設計才能減少面積?FSM 要怎麼做?如此之類的問題。會花費大量時間去思考你的設計,且剛開始大家對於 Verilog 還沒那麼熟悉,因此也會花很多時間在 debug 上。

下半學期的 Labs 主要在於實現一些「概念」,如 Lab07 的 Multiple Clocks System、Lab10/Lab11 實現 APR。這些 Labs 所花費的時間以及力氣相比於前半學期少很多,且到了這個時間大家對於 HDL 也十分熟悉,因此下半學期的 Loading 較輕鬆。

Lab01: Supper MOSFET Calculator (SMC)
Lab02: String Match Engine (SME)
Lab03: Sudoku (SD)
Lab04: Artificial Neural Network (NN)
Lab05: Matrix Computation (MC)
Lab06: CheckSum (CS)
Lab07: Polish Notation (PN)
Lab08: Series Processiong (SP)
Lab09: Happy Farm (HF)
Lab10: Coverage of Lab09 Happy Farm (HF)
Lab Bonus: Formal Verification
Lab11: Matrix Computation (MC)
Lab12: Artificial Neural Network APRII

Projects

這學期 Midterm/Final Projects 最困難的部分皆為 DRAM/SRAM/REG 之間的設計。不過 Final Project 的架構跟 Midterm Project 一模一樣,我基本上直接把 Midterm Project 直接照搬,運算部分改一下,很快就完成了。

Midterm Project: Advanced Microcontroller Bus Architecture (AMBA)
Final Project: Customized ISA Processor

考試

Midterm Online Test

簡單來說,能在時間內完成設計的,大概都是天才吧😭。

不知道我在這邊寫出題目後,往後的 ICLAB 上機考內容會不會改掉XD。猜測題目應該都是與三角形有關,比方說:給定三邊長,運用海龍公式求取三角形面積。不必擔心數學部分,一定會給公式。

基本上考試內容與下面幾點有關:
1. 基本 Verilog 與 FSM(廢話)
2. 使用 Instantiate IP
3. 開根號準確度(fixed point square root)

Midterm Exam

仔細閱讀講義,應該就沒問題。

Final Exam

因 2021/06 疫情大爆發,改成 take home test,因此題目難度有所提升。不過根據朋友的說法、以及 take home test 題目的難度來看,期末考題目真的考得很細,很難拿高分。

修課攻略

  1. 抱團修課:
    當 Lab03 開始需要自行生 Patterns 時,就會發現有好隊友的重要性。和同學討論 Labs/Projects 的想法也會激發出更好的設計,知道別人的 Performance 也會讓自己產生競爭的心態。
  2. 使用 Python 寫 Patterns:
    其實使用哪種方式產生 Patterns 見仁見智。
    有朋友都使用 Verilog 產生 Random Patterns,但我主要以 Python 產生 txt 檔,再以吃檔案的方式產生 Patterns。Python 是 Script Language,對於資料處理十分簡單。除了方便以外,順便練習 Python 也是當初我使用它的原因之一。
    可以參考我 Github,有些 lab 有 Python 檔案。
  3. 不要害羞,主動密同學問問題:
    不是說當伸手牌,而是當你真的找不出問題時,不要害羞,直接問同學,哪怕你根本不認識對方。
    修課期間,有幾位不認識同學因為遇到問題與我在 FB 社團上的發問相似而來密我;在修其他課時,我也曾直接密了一位不認識的同學問問題。通常只要保持禮貌,多數人都不吝嗇分享解決方法,且因為問題類似,往往可以很快解決,節省許多時間及力氣。
  4. 參考我的 ICLAB NOTE:
    老王賣瓜,自賣自誇😁。我的 ICLAB NOTE 真的是精華中的精華,裡面有許多當初理解課程內容所查的連結,歡迎大家在考前來複習👍。
  5. 相信自己,努力完成每次 Lab:
    直接拿我朋友當例子:外系、沒修過VLSI、缺乏完整的電類背景知識、幾乎沒有跟我拿過 Patterns、單獨一人修課。在以上的情況下,最終她還是修完了 ICLAB。我超級佩服的。
I don’t own the rights of this picture, see link.

心得

ICLAB 真的是在大學四年裡,loading 最重的課,沒有之一。

每周生活大致如下:周三上課、出新作業,周四讀講義、Lab Spec,周五開始寫 Patterns、思考 Design 如何設計,假日狂寫 Verilog 與 Debug,周一 1 demo、周三 2 demo。唯一可以喘息的時間大概只有 1 demo 與 2 demo 中間的星期二,更不用說還有其他課的 loading。

修完之後,除了對 Verilog 十分熟悉外,對於整個 IC Design Flow 也會有更深入的了解。在實作 Labs 時,除了對於硬體設計的概念更加了解,也會接觸到各種 EDA 的工具。雖然 loading 很重,但一個學期下來真的學到很多,完全不愧是交大電子所的招牌課程。

很感謝跟我同時修課的電工同學們。基本上每個星期都有人會自動產生 Patterns 供大家參考使用。Midterm/Final Projects 時大家也會互相討論如何設計比較好,讓這門課的體感難度下降許多。

推薦給所有想走數位設計的同學,以及有朋友可以一起抱團修課的電類學生。

相關課程

邏輯設計、數位電路與系統、電子學(一)超大型積體電路設計導論VLSI

--

--