於2019年4月10日晚19:00-20:10參加了華為數字前端實習生在線筆試,我在這裡記錄一下吧,畢竟以後還會經歷筆試,也希望幫助到大家!

呀,看了本文的小夥伴要點贊哦!畢竟是百忙之中整理出來的~~平頭哥實習生的在線筆試,對比華為的題,明顯平頭哥的題難得多得多!!(平頭哥的筆試內容見另一篇文章)華為筆試共60分鐘,40道單選,5道多選。嗯,全部題目我記不得了,只記錄我當時有些疑問的知識點吧!

1)考察verilog操作符

問的是以下哪個操作符的操作數一定要是多bit的

2)對乒乓buffer的定性瞭解

ping-pong buffer 也叫雙緩存 double buffer, (必須是兩個)就是一個緩存在寫入的時候, 另一個緩存同時在處理的結構. 用來提高計算機運行速度, 在顯示數據處理中常常用到。

最常見的例子是顯示緩存可以用 ping-pong buffer 結構, 用兩個相同的幀存儲器 frame buffers, 當一個在掃描輸出的時候, 另一個在改寫數據. 到下一個週期改寫好數據的一幀作掃描輸出, 而另一個幀緩存改寫數據. 總之是一個在接收數據一個在處理,處理完後兩個再交換。從最後的輸出來看, 好象每一幀都刷新了數據, 但實際上是分兩步作的. 這是用加倍的資源換取速度的方法.兩個存儲器之間是並行處理的,所以速度才會提升一倍。使用pingpang的主要作用就是使用多個低速的數據預處理模塊處理高速的輸入數據流。這樣做可以提高系統的數據吞吐量(如果不使用乒乓的話數據預處理模塊會成為設計中限制系統數據吞吐量的瓶頸),同時增加了數據緩衝延遲

3)DC 基本概念(我做錯了,o(╥﹏╥)o):

set_output_delay 設置的是從哪裡到哪裡的延遲?(寄存器到輸出引腳)

false path:

1.為什麼我們要設置虛假路徑?

我們想告訴工具不關心這些特殊路徑,工具不需要檢查這些路徑的時序

2.我們應該將哪條路徑設為虛假路徑?

穿越非同步邊界的任何路徑 或者 邏輯上不存在的路徑

multicycle:多時鐘週期的時序約束

library:

目標庫(targe_library):一般就是std cell db;放的是標準單元工藝庫; 是你的綜合目的庫,存放的是你索要映射的邏輯單元。一般為standard cell library & io cell library 的type;是DC在mapping時將設計映射到特定工藝所使用的庫,就是使用目標庫中的元件綜合成設計的門級網表。

連接庫(link_library):指定壓焊塊工藝庫名稱和所有其他的宏單元(RAM、ROM等);除了std cell,還有IO ,MACRO ,MEMORY db;一般為宏單元等其他庫;一般可以放演算法庫和設計庫等,比如DW;是提供門級網表實例化的基本單元,也就是門級網表實例化的元件或單元都來自該庫。連接庫定義為標準單元的db格式的庫文件加上pad db格式的庫文件,加上ROM,RAM等宏單元庫文件。

符號庫(symblo_library):包含工藝庫中的單元圖形表示的庫名稱。使用DV時,用於表示門電路原理圖。如果忽略這一設置,DV會使用一個名為「generic.sdb」的通用符號庫來生成原理圖。如果你設置了symbol_library,但是假如你的單元的工藝庫和符號庫不匹配,DV會拒絕你的符號庫,而調用通用庫中的單元符號。

簡單地講,所有用到的庫都要放到link_library,因為DC自動到那裡去找。只有作綜合用的庫放在target_library,象ROM,PAD等不用synthesis的就不要放進去了。

link_library列表中應包含目標庫名,這在DC中讀取門級網表是很重要的。如果連接庫列表中不包含目標庫名,DC就不能連接網表中已經映射的單元,在這種情況下,DC會生成表示其不能解析網表中單元的警告。

link_library可以包含舊的工藝庫名稱,而target_library可以包含新的工藝庫名稱。

簡單來說link library就是解決實例化引用的,如果實例化的就是一個與非門,DC就從target library中找到,如果例化的是一個fifo,DC就從fifo的庫中找到,如果例化的是一個模塊,DC就從內存中找到,因為這個模塊的代碼在編譯過程中已經讀進內存中去了。

pt和fm工具只有link_library,DC使用變數link_library,而PT使用link_path,除了名稱和格式不一樣之外,這兩個變數的應用時相同的。PT是一個門級靜態時序分析器,它只是用於結構化門級網表,因而,PT不使用變數target_library。

4)考察wire 和reg 賦值

wire 連續賦值,用assign

reg 過程賦值,用always、initial、begin……end

input、output、inout 預設是wire,如需是reg,要另加說明

5)降低峯值功耗,用以下哪個方法,考察低功耗手段(這是個很大的知識點,有興趣的可以自行百度)

推薦一個寫的比較清楚的低功耗系列筆記:cnblogs.com/IClearner/p

a)多電壓設計技術::各電壓區域有固定的電壓 ;各電壓區域具有固定的多個電壓,由軟體決定選擇哪一個電;自適應的方式,各電壓域具有可變的,由軟體決定選擇哪一個電壓

b)多電壓綜合庫及電壓模式控制單元 lvt hvt

c)DVFS技術:dynamic voltage dynamic frequency scaling,動態電壓頻率技術,是一種通過將不同電路模塊的工作電壓及工作頻率降低到恰好滿足系統最低要求,來實時降低系統中不同電路模塊功耗的方法。

門控時鐘:「一個時鐘信號與另外一個非時鐘信號作邏輯輸出的時鐘。例如,用一個控制信號「與」一個clk,可以控制clk的起作用時間。可以通過關閉晶元上暫時用不到的功能和它的時鐘,從而實現節省電流消耗的目的。門控時鐘是低功耗設計中的一種最有效的方法。

6)考察位寬匹配:少bit賦值給多bit,高位補0;多bit賦值給少bit,取低位(vivado、vcs模擬結果都這樣)

7)形式驗證定性瞭解,唉,題目不記得了

8)非同步時鐘,也不記得了……

9)sta缺點:

動態時序分析就是通常我們所說的模擬,該模擬可以驗證功能,也可以驗證時序,首先確定測試向量,輸入硬體模型,進行模擬。由於為了完整地測試每條路徑的功能或者時序是否都滿足,測試向量需要很大,也不能保證100%的覆蓋率。如果到了門級的模擬將非常消耗時間。

靜態時序分析的優缺點:靜態時序分析可以大大提高模擬時間,並能100%覆蓋所有的路徑。它通過預先計算所有的延時來提高速度。包括內部門延時以及外部的線延時。靜態時序分析並不是簡單的把各個延時相加,而是引入真值表,分析各種輸入情況下所有可能經過的路徑,而且能識別flase path。但是由於在深亞微米的工藝條件下,靜態時序分析不能完整的把所有影響延時的因素給包含進去,因此在關鍵路徑方面,便可以用STA工具導出關鍵路徑的spice網表,用門級或者管級模擬工具進行電路模擬,以確定時序的正確性。靜態時序分析只能對同步電路進行分析,而不能對非同步電路進行時序分析

10)parameter 與define 推薦博客:blog.csdn.net/pine222/a,寫的比我表述清楚多了

11)signed運算:強制轉換符 signed,只有兩個操作數都是有符號數,結果纔是有符號數

12)function 與task:

13)大規模數字邏輯電路設計原則(我不懂,網上也沒怎麼找到相關介紹):

面向rtl?先電路再代碼?這裡如果大家有補充,歡迎交流啊!

其他的,做的還算順手,就沒記下來了,希望自己找個好工作,(^o^)/


推薦閱讀:
相關文章