林俊旭
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    2
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # - 數位面試可能會被問的問題 - 數位IC設計則為簡單Combinational Circuit、Sequential Circuit的設計與流程,以及Setup Time、Hold Time概念。 計算機結構、DSP、計算機網路概論,有概念的話會更好 - AXI 4 LITE / AXI4 - CDC FIFO 的東西 去年我朋友在聯詠 IHOME有被問 ,直接被問倒 (哭哭) - 2 STAGE MULT FOR FINAL PROJECT - As Appendix - blocking/non blocking - blocking 是依照順序下去執行,non -blocking是多行同時一起執行 - setup time/hold time - 𝑇𝑠𝑒𝑡𝑢𝑝 - (𝑇𝑐𝑦𝑐𝑙𝑒 + 𝑡𝑠𝑘𝑒𝑤) > (𝑡𝑝𝑐𝑞 + 𝑡𝑝𝑑 + 𝑡𝑠𝑒𝑡𝑢𝑝) - data required time = 𝑇𝑐𝑦𝑐𝑙𝑒 + 𝑡𝑠𝑘𝑒𝑤 − 𝑡𝑠𝑒𝑡𝑢p - data arrival time = 𝑡𝑝𝑐𝑞 + 𝑡𝑝*d* - Slack = data required time - data arrival time - 𝑡𝑠𝑘𝑒𝑤 = (𝑻𝐜𝐚𝐩𝐭𝐮𝐫𝐞 − 𝑻𝒍𝒂𝒖𝒏𝒄𝒉) - ![](https://i.imgur.com/hWiorvW.png) - 𝑇ℎ𝑜𝑙*d* - (𝑡𝑐𝑐𝑞 + 𝑡𝑐𝑑) > (𝑡ℎ𝑜𝑙𝑑 + 𝑡𝑠𝑘𝑒𝑤) - data required time = 𝑡𝑠𝑘𝑒𝑤 + 𝑡ℎ𝑜𝑙*d* - data arrival time = 𝑡𝑐𝑐𝑞 + 𝑡𝑐*d* - ![](https://i.imgur.com/ch5TaRU.png) - setup time/hold time 解法 - setup : pipeline, larger cycle time, 使用驅動能力較強的cell, 增加clock skew, 在APR時修改Clock Tree - hold : Add buffer, 使用驅動能力較小的cell, 減少clock skew, 降低capture register hold time, 增加lauch register clk2q delay, 增加繞線 - clock gating - 會使用專門的block 在Netlist/GATED_OR_SYN.v" - or gating會比 and gating更好 主要是and gating 是tie low 會打開 下一級ff 的第一個latch導致功耗 / or gating 是tie high 會讓接在CLOCK GATING 後的FF 完全沒作用 - 下圖為D LATCH - ![](https://i.imgur.com/u8jgIYq.png) - 下圖為 D FF ![](https://i.imgur.com/SiFYwdn.png) - 下圖為我們使用的latch gating (OR Gating: clk=0時不讓sleep影響DFF) ![](https://i.imgur.com/yyC5T9u.png) - 哲綸學長之前聯詠被問過CLA adder,堯軒被問過APR flow - 最基本的加法器 - ![](https://i.imgur.com/4BPRLnI.png) - 一般的漫漫串接的加法器為RLA - ![](https://i.imgur.com/KMQzknW.png) - CLA 為提前導出結果不用等待前一級 的CARRY 而是從數學推導出 - ![](https://i.imgur.com/hSbeiDm.png) - ![](https://i.imgur.com/gqqspf3.png) - ![](https://i.imgur.com/qWQ1jFT.png) - ![](https://i.imgur.com/zVwNLVD.png) - 另外以 32bits 的加法器來說,原先需要 65T 的時間 如果採用完全的超前進位加法器只需要 4T,這樣一來效能的提升就變得十分可觀 - https://ithelp.ithome.com.tw/articles/10160513?sc=rss.iron - 合成的時候通常都會設 input delay & output delay,被問到這個的用途是為了什麼 - 秦:不會QQ - 林: module之間的溝通,留Input delay、output delay確保不會違反hold time 代表壓縮自己的cycle time,如果violation input進來需要接一個reg、output亦然。 - 旭: 留一半的cycle time給前一級的module與後一級的module。 # - 你的PROJECT 為什麼要這樣做 有沒有可以進一步改善的地方 ,有沒有事前分析過實際效能 - 醜 # - CDC篇 - 針對 CDC 其實我都會先打預防針說明在課程中我只有用過 2FF 的方法來解決FIFO 只有課程中提過, 並沒有實做過 - metastability 是什麼 - 亞穩態 - 如何透過 2FF 解決 metastability - ![](https://i.imgur.com/SiyJnwN.jpg) ![](https://i.imgur.com/IkKkWKa.jpg) - 3FF 相比 2FF 差別在哪 - ![](https://i.imgur.com/qLB6gxU.png) - ![](https://i.imgur.com/YMbWdHD.png) - 是否可以用 2FF 傳多個 bit 的 data, 會產生哪些問題 - 不可以 如果我昨天解釋2FF 可能會出現沒有預期的值 - 如果不使用 FIFO, 要如何應用 2FF 傳多個 bit 的 data - 有人會把幾個單bit的控制信號group成一個多bit的信號,但實際上各自bit是各自獨立的,在同步到bclk時鐘域之後也是各自起作用,這種情況其實是“偽”多bit信號,是可以對每個信號用2flop synchronizer同步的,多說一句,這個在CDC檢查工具裡面大家可以加unrelated attribute來告訴工具這些bit雖然看起來是屬於一個多bit信號,但其實是不相關的。 - 也可以用一個有FEEDBACK的LOAD TYPE 2FF 如下面三圖 - ![](https://i.imgur.com/tuXA3wf.png) - ![](https://i.imgur.com/5y14J5P.png) - ![](https://i.imgur.com/baxNzi0.png) - CDC會考為什麼2FF 不能同步多BIT /如果要可以的話要做甚麼處理 - CDC 會考XOR 2 FF 波型 - ![](https://i.imgur.com/rwDEgpr.png) - 如果你傳輸過來的資料是 101010.... 接續這樣過來, 你要怎麼知道這些資料哪些 - 秦:看不懂 - STA 篇 - setup time & hold time 我會準備一張圖上面有 兩個 flip flop 以及有 clock skew 的兩個 clk 波形圖然後用小畫家在上面直接畫出算 setup time & hold time 的方法 - ![](https://i.imgur.com/cDRPFla.jpg) - 除此之外還有被問過 STA 跟 DTA 的差別 - ![](https://i.imgur.com/Fbiob7z.jpg) # - LOW POWER 篇 - CLOCK GATING - CLOCK GATING 以外省電方法 - high Vt cells (lower leakage power) - POWER GATING - DVFS - PIPELINE達到相同THROUGH PUT但可以降低頻率 VDD - Parrel computing 達到相同THROUGH PUT但可以降低頻率 VDD 1、靜態低功耗技術 - 多閾值工藝(Multi-Vt Design)方法。 低閾值的標準邏輯單元:速度快、漏電流大; 高閾值的標準邏輯單元:速度慢、漏電流小。 總結:在設計中可以在關鍵路徑上使用低閾值的標準邏輯單元來優化時序,在非關鍵路徑上使用高閾值的標準邏輯單元來優化漏電流。 優點:A可以大大減少系統的靜態功耗; B沒有任何面積開銷,工藝庫設計是將兩種閾值庫中的相應單元的面積設計成一樣,這樣可以方便替換。 - 電源門控(Power Gating)方法。 如上圖所示,電源開關單元(Power Switch Cell)中的高閾值MOS管作為電源閘門,用來將低閾值電源和地隔離開。 在正常工作狀態,Sleep信號為低電平,高閾值MOS管處於導通狀態; 當處於睡眠狀態時,Sleep信號為高電平,切斷電源,並且由於採用了高閾值MOS管作為開關,可以有效地減少漏電流。 - 體偏置(Body Bias) 晶體管閾值電壓隨體偏置而變化。 在工作模式下,MOS管的體偏置為0,MOS管處於低閾值狀態,翻轉速度快。 在等待模式下,MOS管的體偏置為反向偏置,處於高閾值狀態,漏電小。 2、動態低功耗設計 - 多電壓域(Multi-Voltage Domain) 對於多電壓域設計,要在不同的電壓域之間使用一些電平轉換單元(Level Shifter),將輸入電壓範圍轉換成輸出需要的不同電壓範圍。 如果不同電壓與之間的驅動信號與接受信號之間的距離很長,需要插入特殊的驅動單元(Repenter)來增強信號的驅動能力; 如果不同的電壓域可以單獨斷電(MV with Power Gating),還要考慮添加保持寄存器(Retention Register)和電壓隔離單元(Isolation Cell)。 - 預計算 預計算是指通過判斷輸入向量在滿足一些特定條件時將輸入釋放或遮罩。 在遇到不需要計算的指令的時候,譯碼邏輯單元就會使輸出EN_B信號為0,時鐘將會被關閉,寄存器的值保持不變,ALU不需要進行無用的計算,因而減少了系統的功耗。 - 門控時鐘(Clock Gating) 3、RTL級的一些低功耗設計方法 - 並行結構:一定程度可以減低某一區域的頻率,從而可能降低功耗。 - 流水結構:路徑長度縮短為原始路徑長度的1/M。 這樣,一個時鐘周期內充電/放電電容變為C/M。 如果在加入流水線之後,時鐘速度不變,則在一個時鐘周期之內,只需要對C/M進行充放電,而不是原來對C進行充/放電。 因此,在相同的速度要求下,可以採用較低的電源電壓來驅動系統。 - 優化編碼:通過優化編碼來降低開關活動,如對於一些狀態轉移固定的狀態機,比如序列生成之類的,可以採用格雷碼代替二進位編碼。 - 操作數隔離:原來:在某一段時間內,數據通路的時鐘是無用的,則將它的輸入置成某個固定值,這樣數據通路部分沒有翻轉,功耗會降低。 例如APB總線在下一次傳輸來臨之前,位址/控制信號可以不變,以此來降低功耗。 --- - Difference between task and function Function: A function is unable to enable a task however functions can enable other functions. A function will carry out its required duty in zero simulation time. ( The program time will not be incremented during the function routine) Within a function, no event, delay or timing control statements are permitted In the invocation of a function their must be at least one argument to be passed. Functions will only return a single value and can not use either output or inout statements. FUNCTION會立刻執行完成 不能DELAY多久再判斷比較值是多少,可以合成,不能有TASK在裡面 至少要傳遞一個參數RETURN回去,不能使用INOUT PORT Tasks: Tasks are capable of enabling a function as well as enabling other versions of a Task Tasks also run with a zero simulation however they can if required be executed in a non zero simulation time. Tasks are allowed to contain any of these statements. A task is allowed to use zero or more arguments which are of type output, input or inout. A Task is unable to return a value but has the facility to pass multiple values via the output and inout statements . 考古題 (1) 除頻器, 看心得文通常都會考頻率變成 1/3 的電路如何實作 ``` 1 /* 2 (C) OOMusou 2008 http://oomusou.cnblogs.com 3 4 Filename : div3.v 5 Compiler : Quartus II 7.2 SP3 + ModelSim-Altera 6.1g 6 Description : Demo how to write frequency divider by 3 7 Release : 07/12/2008 1.0 8 */ 9 10 module div3 ( 11 input clk, 12 input rst_n, 13 output o_clk 14 ); 15 16 reg [1:0] cnt_p; 17 reg [1:0] cnt_n; 18 reg clk_p; 19 reg clk_n; 20 21 assign o_clk = clk_p | clk_n; 22 23 always@(posedge clk or negedge rst_n) begin 24 if (!rst_n) 25 cnt_p <= 0; 26 else if (cnt_p == 2) // 0 ~ 2 27 cnt_p <= 0; 28 else 29 cnt_p <= cnt_p + 1; 30 end 31 32 always@(posedge clk or negedge rst_n) begin 33 if (!rst_n) 34 clk_p <= 1; 35 else if (cnt_p < 1) // 0 36 clk_p = 1; 37 else // 1 2 38 clk_p = 0; 39 end 40 41 always@(negedge clk or negedge rst_n) begin 42 if (!rst_n) 43 cnt_n <= 0; 44 else if (cnt_n == 2) // 0 ~ 2 45 cnt_n <= 0; 46 else 47 cnt_n <= cnt_n + 1; 48 end 49 50 always@(negedge clk or negedge rst_n) begin 51 if (!rst_n) 52 clk_n <= 1; 53 else if (cnt_n < 1) // 0 54 clk_n = 1; 55 else // 1 2 56 clk_n = 0; 57 end 58 59 endmodule ``` ![](https://i.imgur.com/sQUDRGS.jpg) https://www.cnblogs.com/oomusou/archive/2008/07/31/verilog_clock_divider.html (2) 同步非同步電路 同步電路在clk來時才會更新值 ![](https://i.imgur.com/9Hg3t9q.jpg) (3) 同步非同步 reset 同步RESET可以防止GLITCH 但是增加CRITICAL PATH & AREA 非同步RESET 面積較小 CRITIACL PATH較短 但NOISY RESET會導致問題 還有METASTABILITY (4) design flow Spec -> algorithm -> RTL(Register transfer level) -> Gate level netlist ->APR generate layout -> tsmc APR Flow IO,P/G Placement -> Specify Floorplan -> Power Planning -> Standard Cell Placement ->Timing Analysis & Optimization (pre CTS) (Setup) -> Clock Tree Synthesis (add clock buffer) -> Timing Analysis & Optimization (post CTS) (Setup+Hold) ->SI Driven Route -> Timing Analysis & Optimization (post Route) (Setup+Hold) - (5) blocking & non-blocking Blocking 是 順序執行下去 non blocking是多行同時執行沒有順序問題 (6) cmos 畫簡單的 gate ??? (7) FSM 用 one-hot 以及 counter 的差別 - one case裡面one-hot可以讓控制訊號只需要吃1bit counter要吃很多bits (8) 瑞昱白板題:設計一個電路,當input偵測到一個rising edge時,output固定輸出二個clock cycle長的pulse,以FSM來完成 ``` always@(posedge clk or negedge rst_n) begin if(!rst_n) state <= IDLE; else begin state <= n_state; end end always@(*) begin case (state) IDLE: if(in_valid) n_state = CYCLE_1; CYCLE_1 : n_state = CYCLE_2; CYCLE_2 : n_state = IDLE; endcase end always@(posedge clk or negedge rst_n) begin if(!rst_n) output <= 0; else if(n_state==CYCLE_1) output <= 1; else if(n_state==CYCLE_2) output <= 1; else output <= 0; end ``` 對了他還有下一題 如果不用FSM 要怎麼寫 ``` always@(posedge clk or negedge rst_n) begin if(!rst_n) counter <= 0; else if(in_valid && conuter!=1 ) //to avoid input more than 1 cycle counter <=1; else if(counter==1) counter <=2; else counter<=0; end always@(posedge clk or negedge rst_n) begin if(!rst_n) output <= 0; else if(counter==1 || counter==2) output <= 1; else output <= 0; end ``` (9) 發哥白板題,包含:以Verilog寫出一個簡單的電路、 如何確認APR各階段netlist是與原先RTL的function相同,以及計算機結構的問題。 (10)發哥白板:除頻器的不同作法、Asynchronous訊號可能發生的問題 2. 某相關專業科目只有X等第 成績似乎不太好? - 那時候外務比較多XD 3. PT與DC在timing分析上的差別? - pt 更準更快,aim at sign-off - https://www.edaboard.com/threads/why-use-primetime-when-dc-can-do-timing-analysis.30445/ 4. Setup time & hold time, 誰受clock frequency影響較深? - 應該是setup time 吧 為何如此? - tpd會受限clock freq 不能太長 4. Write-back & Write-through cache, 各舉一個優點 -write through:CPU向cache寫入數據時,同時向memory(後端存儲)也寫一份,使cache和memory的數據保持一致。優點是簡單,缺點是每次都要訪問memory,速度比較慢 -write back:cpu更新cache時,只是把更新的cache區標記一下,並不同步更新memory(後端存儲)。只是在cache區要被新進入的數據取代時,才更新memory(後端存儲)。這樣做的原因是考慮到很多時候cache存入的是中間結果,沒有必要同步更新memory(後端存儲)。優點是CPU執行的效率提高,缺點是實現起來技術比較復雜。 write-back 會比 write-through 來得有效率,但write-back需要承擔斷電時cache裡的資料遺失的風險 5. Branch predictor的實做方式 分支預測緩衝區(Branch Prediction Buff) BHT——Branch History Table https://www.itread01.com/content/1541744602.html 6. 增加clock frequency的電路設計方式 ??? 這三小 7. 如何降低數位電路的功耗? 8. 合成時 cross boundary optimization的優點與缺點 boundary optimization时能够更好地优化面积,将在模块hierarchy之间的电路做一点优化,这是使用boundary optimization的好处,但是没有说明不使用boundary optimization的好处,我想既然compile_ultra之后有一个-no_boundary_optimization这个选项, timing messed up??? 9. 合成後的power estimation 和實際做出來的chip有何差異? 合成的POWER ESTIMATION 是假設固定比例去 10. 如何從合成後的電路數據來評估你的電路設計? 看AREA SLACK TIME POWER等等資訊 11. DFT對於flip-flop的clock以及reset有何限制? 所謂DFT,是在IC設計中預先將一些與測試設備相對應的參數或是電路植入晶片佈局中,藉此提高IC的測試覆蓋率,如此一來不但能將複雜IC的測試難度與成本大幅降低,也能提高測試的品質、確保IC的“健康” Racing https://ramihaha.tw/%E7%A2%A9%E5%A3%AB-ic%E8%A8%AD%E8%A8%88%E6%AD%A5%E9%A9%9F%E4%B9%8B%E4%BA%8C-%E6%B8%AC%E8%A9%A6/ 12. 簡述SoC的design flow ![](https://i.imgur.com/SQ3EC0I.png) ![](https://i.imgur.com/uxCD3SR.png) 13. 如何處理asynchronous clock domains之間的訊號傳輸? 使用 synchronizer 2ff or FIFO之類的 14. 如何驗證你自己實做的電路是正確的? 使用SEC TOOL 去驗證,打INPUT PATTERN 去看OUPUT 15. 是否有解過DRC & LVS? 16. 各種team內部可能會出現的狀況的應對方式 ![](https://i.imgur.com/GsJkw5j.png) 問題1. Full custom design methodology https://www.ptt.cc/bbs/Electronics/M.1165069232.A.0C8.html 問題2. Cell based design methodology https://www.ptt.cc/bbs/Electronics/M.1165069232.A.0C8.html 問題3. Static timing analysis https://www.twblogs.net/a/5f028b5299927402d4fd00ac 問題4. On chip variation 問題5. Formal verification 問題6. Bit-true verification 問題7. Design compiler constraints 問題8. Static timing analysis, dynamic timing analysis, formal的比較 問題9. Clock gating 問題10. Testbench code coverage 問題11. 曾經遇過的DRC, LVS error 問題12. IC比賽題目 問題13. Design compiler的constraint 問題14. 碩士論文、履歷內容 問題15:Moore/Mealy machine ![](https://i.imgur.com/lNGJdqY.jpg) 問題16:Register/Latch ![](https://i.imgur.com/FWhTcXo.jpg) https://mp.weixin.qq.com/s?__biz=MzUyNTc4NTk0OA==&mid=2247485888&idx=1&sn=545fa492beb5557e842624df94cc3609&chksm=fa1987f3cd6e0ee56d6c007a10c24a6193483876edd061065748a75831975bddc35d5d5d5d0b&scene=21#wechat_redirect ![](https://i.imgur.com/dir11Bg.jpg) https://zhuanlan.zhihu.com/p/363079134 ## Midterm 可能被問的問題 - 為何要設計128word* 128bit - 因為題目規定 AxSize 是 3'b100(2^4)=16 byte(128 bits) 64* 64 * 4/128 = 128 words ,所以AxLEN也只能是128 - 為甚麼採用Lee's algorithm,沒採用更快的方式 - 根據題目的spec,Area以及latency是主要優化的方向,主要是要如何降低area,還有減少合成時間(限制兩小時)以符合題目的spec - 找最短路徑以減少path cost - 為甚麼要用SRAM而不用register - 面積 - 合成時間限制2Hr:更多的register需要進行STA分析 - sram 差別 - two port :一組I/O 兩個Address input port, 可以在一個cycle內1讀0寫、0讀1寫、1讀1寫 共1個data input 1個data output 2組addr input - - dual port:兩組I/O 兩個Address, 可以在一個cycle內2讀0寫、0讀2寫、1讀1寫 共2個data input 2個data output 2組addr input - 讀和寫都只能在一個cycle內的"正緣"或者是"負緣"完成,不能在一個CYCLE內又要讀又要寫 - 改location &讀weight 是同一cycle - 下一cycle 把weight 累加 - 一般的multicycle cpu 是relative jump 要用現在的pc[31:28] 去加上instruction除了op code部分的值 所以要經過IF ID EXE - 我們的是 irrevelant 所以可以IF ID 出來 - multi cycle兩大優點 硬體可以分享 cycle time較短 - pipeline :需要額外pipeline register /hazard detection /use forwarding 解決 data hazard clock uncertainty = clock jitter + clock skew. jitter 是 由时钟源产生的抖动。skew是时钟树不平衡引起的到达两个寄存器的延迟差 在cts之后,skew由工具算出,因此sta的时候clock uncertainty 可以设一个比较小的值。另外做hold check的时候因为检查的是同一个时钟沿,因此没有jitter只有skew. 电路有更大的倾向发生hold time violation - AXI 4 - 5 channel - Read: Address, Data - Write: Address, Data,Response AHB:多MASTER 多SLAVE 用於高效能模組(如CPU、DMA和DSP等)之間的連線 APB介紹 APB主要用於低頻寬的周邊外設之間的連線,例如UART,它的匯流排架構不像AHB支援多個主模組,在APB裡面唯一的主模組就是APB 橋。 axi response 從上面的decode結果來看,response的操作並不復雜,但是,為什麼寫操作會有一個專門的response通道,而read操作沒有,並且read操作是第次transfer會有一個response,而write操作的每次burst才有一次response。這雖然是AXI spec規定的,但是Spec為什麼這樣規定,還是值得思考的。 1. 對於read操作,Spec明確規定必須先寫addr,再讀read data,那麼slave回read data時,已經能確定該transfer是否成功,因此這時的response是已知的,response就可以和read data​一塊回給master。 2. 對於write操作,addr和data均是從master到slave,而response是從slave到master,因此需要增加一個response通道​。再看為什麼不是每次transfer都有response,由於addr和data沒有先後依賴關係,因此,第n次transfer時,slave有可能只收到data,而沒收到addr,此時還無法判斷response結果,所以write操作做不到每次transfer都給出response,而是每次burst有一次response。 https://www.twblogs.net/a/5b8c40632b71771883319ed5 ![](https://i.imgur.com/8MDIrQR.jpg) ## Final 可能被問的問題 - -https://www.itread01.com/content/1550291434.html gray code and binary code change - 軟軔面試題目 - https://hackmd.io/@Rance/SkSJL_5gX?type=view - 跟人相關的問題 ![](https://i.imgur.com/FzlPZuF.png) Pipeline 實作方法 : 1.首先要加上pipeline 的register 2.再來要有 data hazard(read after write) 的處理 ,一般的add/sub/mul r type類型 要做forwarding ,如果是load指令 ,要在id state 做額外處理,讓他一定從stall 3 cycle變成stall 1個cycle ,或者在前面compiler 就要先做Schedueling ,去減少發生機會 3.control hazard 如果在id stage補上branch comaparator 就可以減少stall cycle 變成1 可能要補branch prediction 去減少預測錯誤的可能 或是補branch slot 存入跟branch無關的指令 讓他被執行也不會白費 4.要增加控制線信號RegDst ALUSrc MemtoReg RegWrite MemRead MemWrite Branch Jump ALUOp ![](https://i.imgur.com/7nLNNs8.png) # 問題 - 被問的問題: - 對於這次實習有什麼期看法或期待 - 除了學習到業界相關知識之外,我也希望在實習過程中去熟悉業界產品開發上的schedule跟開發流程,相比起實驗室在業界的開發流程相對上更為緊湊,並且負責的東西也會各有不同,所以我認為在這次實習中想要先讓自己去接觸如何安排這些schedule、製作甘特圖、並且按步就辦的開發,這是除了工程知識之外在實習時我想先熟悉並掌握的工作能力(by化仁) - 學長自己的工作內容,部門同事工作內容 - 不同缺有不同東西 - 8 部門 CAI2的CPT1? - DM: C Model : 系統層級,知識面較廣 - DM1: 把model變成code - DM2: 蠻有挑戰性,想model - DE: Design Engineer : 一直寫RTL - DE1: RTL, bus related, data exchange, NOC - DE3: 各種周邊設備, Power, task 分配, memory controller - RTL - 架構分析(Python, Perl) - DE5: DLA架構 RTL - DE6: 矩陣運算 CV算法硬體 - DE7: Corner Coverage Pattern 看波型 - DE8: Integrator: 模組間接線 修Timing - 最久 - SPT: - MM : VIDEO CODEC RTL (ENCODER /DECODER) - 關於教育訓練,公司提供什麼樣的教學或資源 - 有教材可以看,有人帶,前期閱讀材料,之後做相關事情 - 有時間可以學,不會的可以問同事 - 工作是偏有挑戰性需要突破還是偏routine的工作 - DM2 是有挑戰性的會一直做不同的事 - 實際加班時數 - DE8最久整合 RTL部門產品壓力,不一定有固定加班,週期制度 半年到一年會有一個月很努力加班 - 相較於產品線比較少加班 - 部門分紅 - 林子靖問 !!!!!!!!!!!!!!!!!!!!!!!! - 實習競爭對象,有什麼人報名了嗎? - 不知道,吳安宇(台大特聘教授)一家親,人沒了==,那邊的人只有宏哲可以打吧QQ - 要沒工作了完了呀 - 聯詠 - 有其他推薦的部門 / 其他公司的部門 可以推薦嗎 - 問這個問這個 - 面試可能要比較注重的點,要強調自己履歷的什麼地方 - - 面試可能要準備的內容 - 面試投影片要得內容有啥建議放上去 - 修課相關 ICLAB 李老師最近還好嗎? 實驗室相關計畫/做計劃的想法/ / 算是硬體以外不同的方向可以放 - 實習如果有上在實習的時候,有什麼建議? - 高爾夫球車 /輪椅 SLAM 沒關係一樣可以進去 - 面試 - 成績、修課、ICLab、計畫經驗 - 主管說的面試簡報建議: - 在準備面試簡報的時候常常會講的很detail,想要顯得自己懂很多很厲害,但大部分面試官其時都不一定聽的懂,重點是講的過程中的口條,是否流暢,對自己做的東西有沒有了解,以及很重要的是自己在這些東西中做出什麼改進,要明確的講出自己與別人不同的地方與進步幅度。

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully