訂閱中國電子電路教學 ↑ 請點擊上方藍色小字 微信公眾平臺:wangzhenyu_1000 芯片設計這個行當 ,從大的方面講,主要分模擬和數(shù)字兩大塊, 而每大塊又分前端和后端, 我想大部分同學對這個肯定是非常清楚的, 下面就數(shù)字電路聊聊芯片設計的一些事情,就是芯片設計有哪些活做, 這并不是全面完整的系統(tǒng)介紹,只是個人的了解和總結, 希望拋磚引玉,也許不全面, 不正確, 歡迎同學們指正和補充。 系統(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ù)或其他處理。 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等也包括了很多類庫可供使用。 關于這些技術其實可以有更深入的探討,也期待感興趣的能深入展開。 還有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。 (此處略去若干回帖。。。。。) 帖子的話題受到了大家關注, 也被加精 , 受到鼓舞, 一直想繼續(xù)寫完,但時間有限,更主要惰性使然, 一直沒有接著寫完, 今日得寬裕,繼續(xù)談談數(shù)字 IC設計接下來的一些工作 。 |
|