# ASOC期中題庫
## FSIC
### FSIC Block Diagram and module function

- PS 為 FPGA的CPU ,處理Testbench(.c的模擬、寫參數進PL)
- PL 為 FPGA的IP,也就是你寫的Verilog主要的邏輯功能,FSIC的需要的資料寫在DRAM由PS編譯執行
- FPGA 與 SOC 分別都有一個FSIC,大部分設計相同,但少許部分不同,所以要區分是(FPGA Side or SOC Side)
:::info
- 下面標註藍色區塊為問題答案
:::
## FSIC Module:
:::info

:::
### 訊息傳遞方式(下面為Module Function) :
* **mprj(Axis interface)** : 接出往FPGA
* **WSB(Wishbone interface)** : 接出往Caravel SOC,進來後會轉成AXILite
* **mail box** : FPGA PS 與 Caravel/SOC 之間的交互方式,比使用mprj有效率
### IO_SERDES Module (IS)
:::info
* 由於AXIS線的輸入為32*4,但FPGA為30Pin,所以需要Parallel 轉 serial
:::
* 你可以想像成把4條Register,變成一長條Register傳輸資料
* 如果你的Parallel資料更多,需要把8條變成一長條,則可以去調整IO_SERDES裡頭的變數(下面的m跟n)
* 
* 他的公式為 m * core_clk = n * io_clk
* 4 * core_clk : 1 * io_clk = 4:1 所以就是4條變成一條
### CFG_CTRL Module (CC)
* 
#### Function
:::info
1. Wishbond 與 Axilite 訊息傳遞
2. Arbitrate configuration(訊號的指定控制與先後順序) from SOC and FPGA side
3. Target Address decoding : 所有的Module都要Address decoder太浪費資源,將Addr訊號統一由CC處理之後發送Enable給各個modul
:::

#### Describe
* 所有Module的訊號都由他來控制
* 你可以從FPGA又或SOC通過他寫資料進各種Module
1. 可以從SOC RISCV讀寫此Module把Wishbone訊號轉成(AXILite)並決定要寫進哪個Module
2. 也可以從FPGA Side(AXIS)走AXIS/AXIL轉換來讀寫他
### AXIS/AXIL Module (AA)
::: info
* AXIS/AXIL Transaction互相轉換
* 同步mailbox,如果mailbox傳送訊息可以產生中斷訊號
* 維持fpga/ps存取 SOC user_wrapper
* remap control register / remap addr register(Register remap)
* SOC Side跟FPGA Side的Address位址不一樣,要傳送訊息的話就要Remap才能正確寫入
:::
### MailBox (MB)
::: info
* MailBox可以讓SOC Side與FPGA Side直接傳遞訊息(效率高)
* 兩端(SOC RISCV、FPGA PS)都有一個Mail box來互相傳遞訊息
* 他會產生一個中斷訊息來讓接收的CPU讀傳送的訊息
* user address in 0x3300_0000 - 0x33ff_ffff (function有特別寫他的使用位置我就特別寫出來,指的是要傳送mail的Data所可以放置的位置)
:::
### LogicAnalyzer (LA)
::: info
* 黃色線是IP傳送的要顯示的訊號
* 把USERPRJ_SUBSYS要看波型的訊號傳進來(1T只能看24個),把訊號傳進FPGA side(只能傳到FPGA Side)
* 使用RLE(Run-length-encoding)做waveform compression : 就是波型的訊號比較
:::
* 他會不斷地傳訊息給PS,你可以在PS那寫一個條件,符合條件才把訊息存下來,然後產生.vcd (波形圖)
### USERPRJ_SUBSYS
* 你的IP放置位置
### AXIS-SW (AS)

::: info
* 打包Data根據Round-Robin Arbitration優先機制(照順序傳送增加複雜規則,他沒講規則,總之不能延遲Cycle的Data要先送)送進FIFO之後分送Data出去
:::
* Round-Robin Arbitration - MUX

* **DMA** : 直接記憶體存取,直接讀寫系統記憶體,不須經過CPU
* TID : 傳送資料的位置(除了AA以外都會使用DMA傳送)
* 00 (Down/Up): usr_project
* 01 (Down/Up): AA
* 10 (Up) : LA
### Function of FSIC-AXIS Interface
#### 延伸Axis規格
:::info
- Downstream FPGA side -> SOC side(背)
- Upstream FPGA side <- SOC side(背)
- Axilite transaction(Axilite Overload)
- Downstream/Upstream Axilite transaction
- Data payload for Axis transaction(Data paload > 接口僅含Data)
- Downstream/Upstream data
:::
#### Transaction Table

- 00 : Data,Axis (傳送Axis Data)
- 01 : Data + Address,Axilite write (2cycle)
- 第一個cycle傳Address+enable
- 第二個cycle傳data
- 10 : 送 Address 過去 , Axilite read Command (1cycle)
- 發送Read Request
- 11 : 讀 Data 回來, Axilite read Completion
## Low Power
### Concept about the threshold voltage
臨界電壓(英語:Threshold voltage ; 標示為: Vth)[1],又稱閾電壓[2]或臨界電壓,通常指的是在TTL或MOSFET的傳輸特性曲線(輸出電壓與輸入電壓關係圖線)中,在轉折區中點所對應的輸入電壓的值。
### Advantages of CMOS logic
理想上,PMOS與NMOS不會同時導通而產生VDD到VSS的直流電流,因此功耗較低。
### Techniques to reduce switching power 

就是充放電的功耗。
1.降低切換頻率,沒運作的電路可以進入Sleep mode或做clock gating。
2.降低附載電容C(讓邏輯值從0->1所需要的電壓減少)。
3.降低VDD。
4.降低時脈週期。
### Concept about short circuit power/energy

### Static power, sequence of significance as process shrinks

![Uploading file..._vfz3pyk3v]()
### process factors affect leakage

- VG
- VS
- VT
- VDS
### Techniques to reduce leakage current
- Decrease VG
- Super cut-off CMOS
- Increase VS
- source biasing,
- self reverse biasing,
- stack effect

- Increase Vt
- VGS與VT的差值越大,速度越快,但漏電流越多

- 多個VT的CMOS(MTCMOS)

- 變VT的CMOS(VTCMOS)

- Decrease VDS
- not practical (CMOS output full rail)
### Power down sequence with retention

### Use of Isolation cells

### Input vector - input pin selection to reduce leakage!

### Level shifter placement



## Test
### The order of testing methods (scan, bist, boundary scan, atpg) in the top-down test design flow
1. BIST
2. Boundary Scan
3. Scan chain
4. ATPG

(補充)

### Basic concept about fault and defect level
+ Yield良率:
+ 從生產過程中得到的無缺陷部件
+ $good\_die/total\_die$
+ 
+ Fault coverge測試覆蓋率:
+ 用來測試模式集在檢測故障方面的品質,會插sa0/sa1看你的pattern有沒有檢測到
+ $檢測到的fault/全部的fault$
+ 
+ Defect Level
+ 意思就是都pass測試了但是還是有問題的機率,以ppm(百萬分之一)表示
+ 
+ example
+ 90% yield and 97% fault coverage
+ defect level or reject rate is estimated to be around 3% or 3000 parts per million
### Ad hoc testing, increase controllability and observation in internal module testing
簡而言之就是把內部結構拉出來方便測試,老師拿了加法器來舉例,如果要測8bit的溢出需要256cycle

#### controllability
+ 目的:增加可控性(讓他不用等256)
+ 作法:添加mux,如果是test mode就把8-bit reg全部設為1

#### observation
+ 目的:增加可觀測性(observation),如果是兩個4bit加法器,可以提前(16clk)知道有問題
+ 作法:把4C拉出來
+ 
### Draw a circuit after scan insertion
+ Circuit before Scan-Circuit Insertion
+ 
+ Circuit after Scan-Circuit Insertion
+ 
### DFT: fix internal reset violation
#### 問題
如果沒有加MUX shift reg可能在test mode會reset F2 F3 F4

#### 解法
加一個MUX在test mode去擋信號

### Operation of BILBO
+ BILBO介紹
全名Build-in Logic Block Observer
是很standard的測試架構如下圖

+ 結合了幾個mode
1. Scan mode
3. LFSR pattern generation mode
4. Normal mode(DFF)
5. MISR mode

+ 怎麼操作
有兩個control pin
- Scan mode (B1,B2) = 00
會讓SI的路打通,當作scan來用

- LFSR Pattern Generator mode (B1,B2) = 01
SI還是原來scan的路,但下方的選擇器要打通

- Normal mode (B1,B2) = 10
Data(D1、D2,...Dn)直接進來到DFF

- MISR mode (B1, B2) = 11
Data->DFF的路要通,MUX的路也要通

### Concept about Iddq testing
+ IDDQ測試是什麼
主要是測靜態電流(vdd到vss),測試時一定要確定chip沒有任何switching,所有input必需在static
+ 注意事項
CMOS的靜態電流很小,幾mv都可以表示chip有問題
產生test很快,但整個test時間很長,量電流也很花時間
測試不需要high-end test(不需要高頻)
可以測很多的Bridge faults(像是gate到drain、gate到source、interconnect中間的 short、gate oxide的short)

+ IDDQ測試程序:
1. apply一個test pattern(會toggle裡面的每一個node)
2. 等時間settled(很花時間)
3. 量電流並找出threshold value區分好或壞

+ IDDQ 測試模式指南(實際上有很多factor要控制)
+ 假設chip有io buffer,必須把pull-up電路設1,pull-down電路設0
要量測時要確定裡面狀態還在change,例如internal bus不能在tri-state
+ current drawing circuit確定在low power mode,例如sram是dynamic circuit會一直吃dc curent,要確定power要gate掉否則不能測
+ 測defects時要考慮layout location:
+ short一定是發生local的地方,針對此處產生適當pattern

+ IDDQ怎麼做測試
1. 首先需要一個Digital Test System(Tester),灌test pattern進去把chip的狀態設定好
2. 會有Device Power Supply(supply你的Idd current到chip裡面)會串聯一個很小的電阻,做current measurement

## Clock and RST
### Asynchronous interface
#### 問題
一個怪怪的(非同步)信號要進入另一個正在運行的模塊

#### 結果
+ 會有Metastability,就是說他信號會起起伏伏不穩定,阿如果有fanout可能會有fanout1收到1,fanout2收到0的情況。公式如下(應該不會考)
+ 
### Safe asynchronous interface circuit
#### 問題
+ 為了解決會有Metastability
#### 方式
+ 用2 FIFO 去同步(之間不能有logic gate)
+ minimum $t_{clk-to-Q}$ delay
+ APR這兩個咚咚要擺一起
+ input不能每個cycle都在toggle,因為它會delay 2 cyc,所以每個cycle都動會看不到
#### 結論
+ Metastability因為她不穩定,可能會造成2 FIFO的輸出會有時序問題
#### 補充

一班來說只能接一個ouput不然會導致狀態機進入不合法的state
### Asynchronous reset synchronizer circuit
Chip裡面有非常多,不同的asynchronous reset domain,因為現在chip大多都是走非同步reset,每個module都可能有不同的reset domain
+ 會需要reset的場景(asynchronous event)
- module做power gating(on/off)之後,需要reset
- Fatal error condition
- Deadlock、watchdog-timer
- Transient fault(ECC error)
- test、debug
+ verilog code

+ Asynchronous reset注意事項
1. 假設reset是active high的訊號(assert上升、deassert下降),assert可以非同步,但deassert必須為同步,否則會出問題

2. Asynchronous Reset De-assertion Removal/Recovert Time
- reset上升時必需滿足Hold time
- reset下降時必須滿足Setup time
+ Asynchrounous reset為何常用在industry
1. 省面積(save area)
2. datapath timing比較快
3. 不需要clock

+ Asynchrounous reset優缺點
- 優點:
Datapath is clean
Power-on-reset必須是Asynchrounous
- 缺點:
DFT會有問題
STA 的timing check會有問提

+ Synchronize(同步asynchronous reset訊號)circuit

- 典型的Reset synchronizer
經過兩極的back-to-back DFF,然後產生master reset,再做distribution變成一大堆的 rest訊號到各個DFF

- master reset訊號出來 -> 每一個DFF的時間,中間經過的buffer delay滿足
Tck-q + Tpd(buffer tree delay) + Trev(Tsetup) < Tperiod

- Reset會有Glitch,所以在同步之前要做一個Deglitch,也叫reset filter: 做法加一個 dely和or-gate
