小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

說說芯片設計那點事

 6027燕郊 2016-04-29

訂閱中國電子電路教學請點擊上方藍色小字

微信公眾平臺:wangzhenyu_1000


芯片設計這個行當 ,從大的方面講,主要分模擬和數(shù)字兩大塊, 而每大塊又分前端和后端, 我想大部分同學對這個肯定是非常清楚的, 下面就數(shù)字電路聊聊芯片設計的一些事情,就是芯片設計有哪些活做, 這并不是全面完整的系統(tǒng)介紹,只是個人的了解和總結, 希望拋磚引玉,也許不全面, 不正確, 歡迎同學們指正和補充。
說到數(shù)字芯片,不能不說FPGA, 這種是可編程的數(shù)字電路, 用法原理也不說了, 數(shù)字電路設計的目標,就是把這些功能,做成我們自己專用的ASIC/SOC, 這樣無論面積, 成本或者安全性等等都能有保證。
從流程上講, 數(shù)字芯片設計的大致步驟就是系統(tǒng)與功能定義,RTL實現(xiàn) 驗證, 綜合及可測試性設計(synthesize , DFT ), ATPG仿真, 時序分析, 到自動布局布線(APR). 直至交付fab的GDS網表。
這個流程是可以反復迭代的, 當對于不同類型芯片, 如純數(shù)ASIC或混合電路(mix-signal及系統(tǒng)級芯片(SOC), 每一步的方法和具體實施流程上可能又有所差異.下面就這些基本流程分步談一些主要問題。

系統(tǒng)設計主要設計到功能定義及架構設計, 總線架構的配置,模塊設計,數(shù)據(jù)流的分配, 時鐘的設計等問題??偩€包括模塊之間,模塊與MCU核之間,或者外部主機和芯片之間通信,或者測試需要等等一系列因素。 時鐘涉及到數(shù)據(jù)流的規(guī)劃, 通信接口或內部MCU的時鐘約定,工藝條件,功耗等因素。模塊需要明確接口和定義。

在系統(tǒng)級設計上, 特別是很多數(shù)模混合電路中或對功耗有特別要求的電路中,還要有電壓域的設計,不同模塊之間,功能模塊和接口之間可能都需要根據(jù)工藝條件,功耗要求設置不同的電壓。

無論是時鐘,還是電壓,都可以通過控制開關來實現(xiàn)功耗的要求,時鐘實現(xiàn)比較簡單,在大部分電路中都可以實現(xiàn)這種時鐘控制,電壓控制一般是實現(xiàn)在集成有電源管理芯片的較大規(guī)模芯片上。但未來趨勢是即使沒有電源管理芯片,電壓的gating也需要納入考慮范圍。

在 SOC系統(tǒng)設計上,一個重要的環(huán)節(jié)是MCU 內核的選型,現(xiàn)在常用的內核一般是ARM, 較老的ARM7, Arm9等系列,較新的是三大系列cortex A , R, M, 具體的用途不做詳細訴述,選定好后核需要根據(jù)需要進行設置,一般做硬件的人不需要對它的指令集了解太多,但是需要了解它的總線接口,數(shù)據(jù)總線,指令總線, 以及存儲系統(tǒng)的設計,一般需要安排ROM, RAM分別作為指令和數(shù)據(jù)存儲器,由于ROM是不可更改的,一般也需要加入flash作為補丁程序寫入地。也可能需要外部存儲器或者DMA控制器來增加外 部存儲空間。地址的分配是按照功能需要來進行的,現(xiàn)在有很多工具如synopsys的DesignKits可以產生外部總線代碼及進行地址分配。

第一步完成系統(tǒng)和功能定義后, 就要實施的就是RTL實現(xiàn), RTL是專門描述硬件電路的工具語言, 有verilog和VHDL, RTL的特點就是硬件上的同時觸發(fā)性,不同于軟件的按順序執(zhí)行, 電路有時序邏輯和組合邏輯組成, 時序邏輯在物理構成上就是一些寄存器,這些寄存器受時鐘控制, 寄存器代表了電路中數(shù)據(jù)或控制信號, 這些信號受時鐘的驅動流動. 組合邏輯是不受時鐘控制的電路塊, 組合邏輯顧名思義,通過一些信號的組合直接生成一些邏輯結果。

RTL設計中,一大問題是異步設計問題,異步數(shù)據(jù)的處理根據(jù)不同情況有很多方式, 最簡單的,如果對異步的電平信號, 可以直接在新的時鐘域中加2級寄存器來隔離,避免不定態(tài)的發(fā)生. 當如果對于總線的處理, 或者脈沖的處理, 則需要同步模塊, 同步??煲话闶侵感枰帐中盘?就是前一級時鐘告訴采樣的時鐘,信號ok了, 采樣的第二個時鐘再去采,采好后再告訴前一級時鐘,我搞定了,那樣前一級時鐘就可以換數(shù)據(jù)或其他處理。
有一種情況就是前一級時鐘太快, 造成第二級來不及,則需要加入FIFO作為隔離, 就是讓那些數(shù)據(jù)先放好, 我在慢慢來取. 這個FIFO的設計涉及到讀寫地址的判斷,寫滿或讀空都需要做相應處理, 讀寫地址之間的判斷只能在其中一個時鐘域中進行, 這本身又涉及異步信號的處理問題,這一般用格雷瑪解決, 或者有些地方直接可以判斷地址高位, 這些方法的目的就是不能讓地址在比較的時候不穩(wěn)定。

RTL設計中時鐘本身的設計問題也要注意, 我們在一個芯片中, 盡量把時鐘產生電路放在一塊,主要是從綜合, DFT的角度去考慮的, 讓這些時鐘統(tǒng)一管理和約束。 時鐘的分頻,切換也要專門處理,否則容易產生毛刺等事情。

RTL設計中還有很多需要注意的問題,比如可綜合性, 還有要考慮到電路的面積, 以及響應速度等等, 這些問題是RTL coding的基礎問題。

代碼寫完后,需要進行的是驗證工作, 下面談談這方面的事情:

上次寫完后,有人支持,也有個朋友說寫這些東西意義不大吧,如果就某些細節(jié)方面感興趣的朋友可以探討和切磋,互相學習,也可以私下交流。

這只是我的角度去寫這些東西,希望大家指正和補充。下面接前天的,繼續(xù)驗證部分。

芯片驗證一般有這幾個層面, 一個是RTL級或者Netlist( pre or post PR with SDF ), 這個也是一般意義上的芯片驗證工作, 一個是FPGA級的,也是RTL, 只不過download到FPGA中, 借助硬件環(huán)境,也可以直接做應用實驗。

芯片驗證的工作量在芯片設計中占據(jù)了大部分的時間和精力,無論是那種驗證,都需要搭建測試平臺(testbench),驗證平臺從軟件結構上模擬芯片的工作 環(huán)境。即有清晰的連線結構,也有完成這些測試所需要的非結構性的函數(shù)或任務包。測試平臺中的被測試芯片是RTL級的,測試向量或者說施加的激勵可以是 verilog/VHDL,HDL語言本身就具有比較完善的行為級描述功能,也可以滿足絕大部分測試平臺的搭建和測試激勵的產生,當然我們面對更復雜設 計,或追求更高效率 也可以使用其它被編譯器兼容的語言, 如C/C++, SC, SV,E等等。

很顯然,測試激勵是有時間概念的,是按順序進入和流出芯片的,使用的這些非電路描述語言和功能和軟件幾乎是沒有區(qū)別的,所以驗證中也越來越多地使用軟件的一 些技術, 如面向對象的編程技術,SystemVerilog, Specman E等,SV也支持斷言語句(assertion),不同廠家提供的OVM, VMM,UVM等也包括了很多類庫可供使用。 關于這些技術其實可以有更深入的探討,也期待感興趣的能深入展開。
無論傳統(tǒng)的驗證還是最新的驗證方法學,都需要追求驗證的收斂性,即驗證完全是自動化的檢測,除非debug, 我們無需通過波形判斷測試通過與否。
對于很多驗證,我們幾乎不需要上到FPGA上驗證,比如數(shù)據(jù)通信類,完全可以軟件實現(xiàn)數(shù)據(jù)的產生和比對。而有些應用,如影視頻,圖形抓取等等,如果進入 FPGA就可以實現(xiàn)效果功能的檢驗,F(xiàn)PGA的流程這里不做表述,不過要注意的是,我們用作流片的RTL代碼可能和待燒入FPGA的代碼有不同之處,比如 有些使用的IP在FPGA中可能和流片廠家提供的不一樣,還有些端口等等需要特別注意。

還有post layout的后仿,這個后仿是指DFT和APR之后的網表,加入帶有時序信息的SDF文件進行仿真。有些人說,我做過驗證,代碼和網表之間,PR前后網 表之間的一致性驗證也做了,還需要后仿嗎? 答案當然還是需要的,因為一致性也無法檢測到很多時序的問題,比如毛刺,甚至DFT的錯誤, 功能性的問題等等。

現(xiàn)在比較常見數(shù)?;旌闲酒尿炞C,模擬的部分主要是采用了 verilogams建模,當然也有VHDLRN建模等等,這些東西就是引入了可控制和可檢測的模擬量,進入數(shù)字仿真系統(tǒng),也是數(shù)字驗證流程的一環(huán)。 更專業(yè)的數(shù)?;旌向炞C系統(tǒng)ADMS, 里面引入了數(shù)字和模擬多個引擎,如數(shù)字的nvverilog 模擬的Eldo等等,數(shù)字部分導入RTL代碼,模擬部分直接導入GDS電路, 當然為了加快速度,模擬部分在使用中一般仍然導入數(shù)字模型。

SOC驗證中, 植入了燒入ROM的軟件, 在仿真驗證系統(tǒng)中,使用的一般是存儲器的模型加上文本格式的代碼文件, 一般實現(xiàn)是直接通過系統(tǒng)讀入指令把文件讀入到存儲器模型中。(有些仿真工具可以直接通過選項導入,類似SDF文件,如工具nscim),仿真器可以直接寫 出指令執(zhí)行的log以用于debug,不過現(xiàn)在有更先進的方式用于復雜SOC驗證, 如Codelink工具,能夠在原仿真器的基礎上,建立起MCU和HDL電路已經軟件的關系,通過展示波形和固件(firmware)源碼的鏈接進行更方 便的debug。
下面需要說的實現(xiàn)部分,就是綜合,DFT, STA ,ATPG等,準備合在一起寫,感興趣的朋友也可以接著我的寫,我暫時不做這方面的更新,希望朋友們玩?zhèn)€接力。

(此處略去若干回帖。。。。。)

帖子的話題受到了大家關注, 也被加精 , 受到鼓舞, 一直想繼續(xù)寫完,但時間有限,更主要惰性使然, 一直沒有接著寫完, 今日得寬裕,繼續(xù)談談數(shù)字 IC設計接下來的一些工作 。
不過在繼續(xù)之前, 我要說的是, 其實我之前寫的也不夠完善, 只是想到了就隨之敲下來了, 不夠完整 ,特別是現(xiàn)在的芯片設計, 不同的產品,要求不同, 所設計的步驟也不完全一致 。比如, 對于很多設計數(shù)字電路可能實現(xiàn)建立軟件模型, 來評估我們的頻率,資源,或者數(shù)字信號處理中的信噪比等一些指標, 這些都是在規(guī)格定義之后, 電路設計之前需要做的一些工作。
在芯片完成了設計與驗證之后, 我們要做的工作 就是把它裝化成GDS網表,就是所謂的implementation(電路實現(xiàn)),這其中的流程包括綜合,DFT, formality, STA, ATPG pattern generation 和仿真(和功能驗證一樣也包括前后仿), 再進入后端的PR/LVS/DRC 的流程 ,這個屬于物理設計, 當然這個流程 是籠統(tǒng)的 ,這里主要講幾個后端物理設計之前的前端實現(xiàn)的幾個步驟 。
綜合的原理比較直觀,從RTL到GTECH庫到廠家工藝庫的編譯翻譯映射與替代, 綜合需要輸入的就是時鐘約束即sdc文件,sdc是設計與產品的使用要求決定的。
DFT包括好幾種類型, Scan chain是最常見的一種,這個可以在綜合步驟中一起做,也可以在綜合之后進行,掃描鏈的多少和芯片本身的規(guī)模和芯片可提供的可測試芯片管腳有關, 盡量掃描鏈的長度越短越好,以縮短測試時間;由于有些片子的管腳有限,需要壓縮掃描鏈;甚至有些芯片由于可復用的管腳太少,進入測試模式都需要在功能模式下由主機的設定, 設定后再退出功能模式。
掃描鏈的插入后可以由工具產生ATPG的 pattern, DFT成功與否要看測試覆蓋率,一般在95%以上說明就差不多ok了, 如果覆蓋率偏低 ,需要追究原因,一般看有沒有漏掉的DFF,以及為什么會溜掉,一般主要原因不是這個, 是一些不可控的節(jié)點造成了覆蓋率低,需要在電路中做一些處理來使之能 有相關 ATPG產生,如加入測試模式生效的可選的DFF或者電平/地 。
有些電路包括了ROM/RAM,需要給ROM/RAM本身加入內建自測電路(BIST), 一般如果帶有MCU的SOC,其實也可以通過軟件來完成RAM測試,不一定加入BIST, 但是植入CPU軟件的ROM肯定必須有BIST電路來完成自測,自測電路的原理很簡單, 就是判斷寫入和讀出的數(shù)據(jù)是否吻合, 否則會 BIST電路會給出錯誤的標識。
Boundary scan chain是另一種DFT, 很容易理解的是,我們可以控制芯片各個pad的輸入輸出值, 這樣它的作用可以應用于板級調試。
formaliry或者說equence check, 主要檢查綜合,DFT以及后端PR之后和各自步驟之前的RTL/網表的等效性。
STA是靜態(tài)時序分析, 主要用在芯片完成后端流程后,也檢查是否滿足時序要求, 特別是插入了時鐘樹之后,這是需要后端工具(ICC/Encounter等)反標出的sdf文件來進行分析 。細節(jié)不表。STA完成后才可以進行功能后仿和ATPG pattern的后仿 。



    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多