編寫PCB設(shè)計(jì)規(guī)則檢查器(DRC)的系統(tǒng)方法
編寫屬于自己的PCB設(shè)計(jì)規(guī)則檢查器具有很多優(yōu)點(diǎn),盡管設(shè)計(jì)檢查器并不那么簡(jiǎn)單,但也并非高不可攀,因?yàn)槿魏问煜がF(xiàn)有編程或腳本語言的設(shè)計(jì)人員完全能夠設(shè)計(jì)檢查器,這項(xiàng)工作的好處是不可估量的,本文介紹編寫PCB設(shè)計(jì)規(guī)則檢查器的技巧。
本文引用地址:http://m.butianyuan.cn/article/190670.htm本文闡述了一種編寫PCB設(shè)計(jì)規(guī)則檢查器(DRC)的系統(tǒng)方法。利用電路圖生成工具得到PCB設(shè)計(jì)后,即可運(yùn)行DRC以找到任何違反設(shè)計(jì)規(guī)則的故障。這些操作必須在后續(xù)處理開始之前完成,而且開發(fā)電路圖生成工具的開發(fā)商必須提供大多數(shù)設(shè)計(jì)人員都能輕松掌握的DRC工具。
然而,市場(chǎng)銷售的通用工具通常不具備足夠的靈活性以滿足特定的設(shè)計(jì)需要。因此,客戶必須將新特性需求反映給DRC工具開發(fā)商,而這通常需要耗費(fèi)一定的資金和時(shí)間,尤其當(dāng)需求不斷更新時(shí)。幸運(yùn)的是,大多數(shù)工具開發(fā)商均可為客戶提供編寫屬于自己的DRC以滿足特定需求的便捷方法。但是,這種具有強(qiáng)大功能的工具尚未得到廣泛認(rèn)同或使用。本文提供了利用DRC工具獲取最大收益的實(shí)用指南。
由于DRC必須遍歷 PCB設(shè)計(jì)的整個(gè)電路圖,包括每個(gè)符號(hào)、每個(gè)引腳、每個(gè)網(wǎng)路、每種屬性,如有必要還能創(chuàng)建數(shù)目不限的“附屬”文件。如4.0節(jié)所述,DRC可以標(biāo)示出任何違反設(shè)計(jì)規(guī)則的細(xì)微偏差。例如其中一個(gè)附屬文件就可能包含設(shè)計(jì)用到的全部去耦電容。如果電容數(shù)低于或高于期望值,就將在可能出現(xiàn)電源線dv/dt問題的地方標(biāo)注紅色記號(hào)[1]。這些附屬文件或許必不可少,但并非任何商用DRC工具都一定能創(chuàng)建這些文件。
DRC的另一優(yōu)勢(shì)是便于更新,以適應(yīng)新設(shè)計(jì)特性(如那些可能影響設(shè)計(jì)規(guī)則的新特性)的需要。而且,一旦在該領(lǐng)域獲得充分經(jīng)驗(yàn),那么還能實(shí)現(xiàn)許多其它功能。
例如,如果能編寫屬于自己的DRC,那么就能編寫屬于自己的物料清單(BOM)創(chuàng)建工具,這樣就能更好地處理特定用戶需求,如如何獲取本身不屬于電路圖數(shù)據(jù)庫一部分的器件“額外硬件”(如插座、散熱裝置或螺絲刀)?;蛘咴O(shè)計(jì)人員可以編寫屬于自己的Verilog網(wǎng)表分析器,該分析器在設(shè)計(jì)環(huán)境下具有充分的靈活度,如怎樣獲取適用于特定器件的Verilog模型或時(shí)間文件。實(shí)際上,由于DRC遍歷了整個(gè)設(shè)計(jì)電路圖,因此可以收集全部有效信息以輸出PCB設(shè)計(jì)Verilog網(wǎng)表分析所需的仿真和/或BOM。
在不提供任何程序代碼的前提下討論這些話題實(shí)在有些牽強(qiáng),為此,我們將以一種電路圖獲取工具為例進(jìn)行說明。本文采用了Mentor Graphics公司開發(fā)的附屬于PADS-Designer產(chǎn)品線的ViewDraw工具。此外,我們還采用了ViewBase工具,這是一個(gè)可被調(diào)用并對(duì)ViewDraw數(shù)據(jù)庫進(jìn)行存取操作的簡(jiǎn)化C例行程序庫。利用ViewBase工具,設(shè)計(jì)人員可以輕松地采用C/C++語言為ViewDraw編寫完整且高效的DRC工具[2] [3]。需要注意的是,這里討論的基本原則同樣適用于任何其它的PCB電路圖工具。
輸入文件
除了電路圖數(shù)據(jù)庫,DRC還需要一些可以描述特定情況處理的輸入文件,如自動(dòng)連接到電源平面的合法電源網(wǎng)路名稱。例如,如果電源網(wǎng)路名為POWER,那么電源平面將采用后端封裝設(shè)備(如適用于ViewDraw的pcbfwd)自動(dòng)連接到電源平面。下面給出了輸入文件列表,這些文件必須放在固定的全局位置,這樣DRC就能自動(dòng)找到并讀取,然后在運(yùn)行時(shí)將這些信息保存在DRC內(nèi)部。
* 文件legal_pwr_net_name可選,該文件包含POWER信號(hào)全部合法網(wǎng)路名稱,如VCC、V3_3P和VDD。在PCB布局/路由工具中,需要對(duì)名稱的大小寫進(jìn)行區(qū)分,一般VCC并不等同于Vcc或vcc。VCC可以是5.0V的電源,而V3_3P則可以是3.3V的電源。
* 文件legal_pwr_net_name可選,因?yàn)楹蠖朔庋b設(shè)備的配置文件通常必須包含一組合法電源線網(wǎng)路名稱。如果采用Cadence設(shè)計(jì)系統(tǒng)公司的Allegro布線工具,那么pcbfwd的文件名則為allegro.cfg并且具有如下入口參數(shù):
接地:VSS CGND GND GROUND
電源:VCC VDD VEE V3_3P V2_5P +5V +12V
如果DRC可以直接讀取allegro.cfg文件,而非legal_pwr_net_name,那么將能得到更好的結(jié)果(即引入誤差的幾率較小)。
電源線引腳通常并不外接到器件符號(hào)上,相反,該符號(hào)的一個(gè)屬性(這里稱為SIGNAL)描述了哪個(gè)引腳是電源引腳或接地引腳并描述引腳應(yīng)當(dāng)連接的網(wǎng)絡(luò)名稱。
SIGNAL = VCC:10
SIGNAL = GROUND:20
DRC可讀取該屬性并確保網(wǎng)路名稱保存在legal_pwr_net_name文件中,如果legal_pwr_net_name中不包含網(wǎng)路名稱,那么電源引腳將不會(huì)連接到電源平面,而這個(gè)問題確實(shí)非常嚴(yán)重。
一些符號(hào)必須具有外接電源線引腳,因?yàn)檫@些符號(hào)并不連接到常規(guī)電源線層。例如,ECL器件的VCC引腳要么連接到VCC,要么連接到GROUND;其VEE引腳則可連接到GROUND或-5.0V平面。此外,電源線引腳在到達(dá)電源線層之前也可連接到濾波器。
引腳與濾波器之間的網(wǎng)路可具有任意名稱,而DRC很難檢測(cè)到這一點(diǎn)。DRC可以錯(cuò)誤形式匯報(bào)這一點(diǎn),而用戶則必須將其標(biāo)示出或在legal_pwr_net_name文件中添加該網(wǎng)路名稱。這就是我們需要類似legal_pwr_net_name文件的一個(gè)原因。最后,DRC將讀取legal_pwr_net_name,以1)找到上拉電阻,2)在設(shè)計(jì)中檢查POWER網(wǎng)路名稱的大小寫,3)檢測(cè)任何與POWER直接相連但尚未使用的引腳。
* 包含GROUND信號(hào)(如GROUND、VSS和F_GND)中所有合法網(wǎng)路名的legal_gnd_net_name文件可以隨意創(chuàng)建。而需要再次注意的是,符號(hào)的大小寫可能會(huì)對(duì)一些PCB布線工具產(chǎn)生影響。而且,如果DRC可以直接讀取上述allegro.cfg文件,而非legal_gnd_net_name文件的話,無疑可以得到更好的設(shè)計(jì)結(jié)果。
legal_gnd_net_name不僅具有與legal_pwr_net_name相同的功能,而且DRC還可讀取該文件,以1)找到下拉電阻,2)檢查POWER網(wǎng)路名稱的大小寫,3)檢測(cè)任何與POWER直接相連但尚未使用的引腳。
* 包含全部合法符號(hào)庫路徑和名稱的legal_lib_path_name文件可以隨意創(chuàng)建,這一點(diǎn)非常重要。例如,一個(gè)常見的嚴(yán)重錯(cuò)誤是使用未授權(quán)程序庫中的符號(hào)。在PCB設(shè)計(jì)階段,根據(jù)測(cè)試需要,通常要求創(chuàng)建臨時(shí)器件符號(hào)并保存在本地符號(hào)庫目錄中。最終用到的器件符號(hào)來源于此并將保存在聯(lián)合或全局的程序庫目錄中,這些符號(hào)具有一些不同于本地器件符號(hào)的重要特征。設(shè)計(jì)人員通常會(huì)因?yàn)闆]有采用共同符號(hào)取代本地符號(hào)而引入設(shè)計(jì)錯(cuò)誤。
legal_lib_path_name可選,因?yàn)閷?duì)于大多數(shù)電路圖工具,程序庫信息包含在啟動(dòng)工具所需的初始化文件中。對(duì)于ViewDraw工具,該文件稱為viewdraw.ini,當(dāng)工具啟動(dòng)時(shí),該文件就自動(dòng)創(chuàng)建(利用腳本程序):目錄 [r] /corp_lib/pcb/symbol_libraries/viewdraw/fct (fct)。
Fct(快速CMOS技術(shù))是ViewDraw眾多子庫中的一個(gè),也是fct器件各符號(hào)的來源。如果初始化文件存在,那么DRC不僅可以而且也應(yīng)當(dāng)直接讀取該文件,因?yàn)樵O(shè)計(jì)人員可以及時(shí)地添加新程序庫。
* 可以創(chuàng)建包含合法上拉電阻的legal_pullup_res文件以檢測(cè)那些被終止以及未被使用的輸入引腳。通常,可以限定一組設(shè)計(jì)人員能使用的電阻,當(dāng)然電阻值本身也是一個(gè)重要因素。如果上拉了未使用的輸入引腳,那么該電阻的阻值將為5K或更高。
* 可以創(chuàng)建包含合法下拉電阻的legal_pulldown_res文件以檢測(cè)那些被終止以及未被使用的輸入引腳。如果下拉了未使用的輸入引腳,那么阻值將會(huì)很小以阻止任何電流泄漏,從而使引腳電壓高于觸發(fā)閥值。
* 可以創(chuàng)建包含合法去耦電容的legal_decoup_cap文件,而且公司還可要求設(shè)計(jì)人員只使用特定的合格器件以滿足電源線dv/dt要求。
* 可以創(chuàng)建一個(gè)包含器件符號(hào)全部屬性的legal_comp_attr文件,如PART_NO、GEOM、REFDES和SIM_CLASS。BOAM創(chuàng)建工具、Verilog網(wǎng)表分析器及其它工具都能使用這些屬性。
* 可以創(chuàng)建一個(gè)包含器件符號(hào)全部引腳屬性的legal_pin_attr文件,如PIN_NAME、PINTYPE和PIN_NO。
設(shè)計(jì)目錄結(jié)構(gòu)
運(yùn)行DRC必須滿足的第二個(gè)條件就是需要可被所有PCB設(shè)計(jì)共享的單獨(dú)設(shè)計(jì)目錄結(jié)構(gòu)。沒有該目錄結(jié)構(gòu),DRC將難以確定如何找到電路圖數(shù)據(jù)庫并存儲(chǔ)輸出文件。該架構(gòu)可以極復(fù)雜的分層架構(gòu)支持全部PCB設(shè)計(jì)業(yè)務(wù),如設(shè)計(jì)規(guī)則檢查、BOM創(chuàng)建、Verilog仿真、靜態(tài)時(shí)序分析、信號(hào)完整性分析、布線、PAL/FPGA設(shè)計(jì)(綜合與仿真)及文檔控制。但對(duì)于DRC本身,如果采用了ViewDraw,那么下述條件就完全充分:
pcb_info應(yīng)最少包含兩個(gè)文件:design_def和design_type。design_def應(yīng)包含PCB器件(組合)數(shù)目及其它所需信息,這不僅僅對(duì)于DRC,對(duì)于其它所有工具也同樣如此。design_type應(yīng)當(dāng)包含設(shè)計(jì)類型信息,即PCB信息。如果其它類型的設(shè)計(jì)(如ASIC或FPGA)可以共享該設(shè)計(jì)目錄結(jié)構(gòu),那么design_type將指定該目錄,這樣設(shè)計(jì)自動(dòng)化工具將能根據(jù)不同的設(shè)計(jì)類型進(jìn)行適當(dāng)?shù)牟僮鳌H绻麤]有pcb_info目錄或該目錄內(nèi)容為空,這就意味著設(shè)計(jì)目錄并非標(biāo)準(zhǔn)設(shè)計(jì)目錄。在這種情況下,DRC應(yīng)當(dāng)退出并發(fā)送出錯(cuò)信息。
Schem目錄包含電路圖數(shù)據(jù)庫并可由DRC使用的ViewBase直接存取。sch子目錄包含了在圖表上描述符號(hào)位置的電路圖文件及其它信息,wir子目錄則包含設(shè)計(jì)網(wǎng)表分析及全部符號(hào)屬性。ViewBase例程可直接存取這些內(nèi)容。drc目錄應(yīng)存儲(chǔ)DRC輸出文件。
電路圖符號(hào)相關(guān)文章:電路圖符號(hào)大全
c++相關(guān)文章:c++教程
評(píng)論