新聞中心

EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 編寫PCB設(shè)計規(guī)則檢查器(DRC)的系統(tǒng)方法

編寫PCB設(shè)計規(guī)則檢查器(DRC)的系統(tǒng)方法

作者: 時間:2012-03-09 來源:網(wǎng)絡(luò) 收藏

本文引用地址:http://m.butianyuan.cn/article/190670.htm

開發(fā):drc_net()函數(shù)

drc_net()在設(shè)計中遍歷所有網(wǎng)路并檢測任何違反設(shè)計規(guī)則的故障,然后創(chuàng)建附屬的輸出文件。實現(xiàn)上述功能的基本代碼如下:

[列表4]

這里,iggrpnet()和ignetnxt()函數(shù)是在設(shè)計中檢查每個網(wǎng)路的ViewBase 例程。ignetnam()函數(shù)也是檢查網(wǎng)路名稱的ViewBase例程。ViewBase中的數(shù)據(jù)類型包括NETS、PINS、COMPONENTS、SYMBOLS和ATTRIBUTES。drc_net()函數(shù)可檢測下述違反設(shè)計規(guī)則的錯誤:

* 非法網(wǎng)路名。如果網(wǎng)路名由ViewDraw自動分配,那么將具有如下格式:$#...#N#...#,第一個#...#表示圖表編號,第二個#...#則表示網(wǎng)路號。設(shè)計人員指定的網(wǎng)路名必須以字母開頭,其后的字符數(shù)不多于30。

drc_net()函數(shù)應(yīng)調(diào)用legal_net_name()函數(shù)執(zhí)行該任務(wù)。在UNIX系統(tǒng)中,利用包含在程序中的regexp.h頭文件可以極大地簡化采用C語言的常規(guī)表達(dá)式匹配/校驗程序。drc_net()應(yīng)將網(wǎng)路名稱變量和違反設(shè)計規(guī)則的文件指針存儲在legal_net_name()函數(shù)中,該函數(shù)具有如下形式:

[列表5]

后端封裝工具pcbfwd也可檢測非法網(wǎng)路名,但其功能受限于簡單的常規(guī)表達(dá)式。上述代碼可處理任何常規(guī)表達(dá)式,同樣地,如何在運行pcbfwd工具之前或之后找到非法網(wǎng)路名稱也需要權(quán)衡。對于簡單的網(wǎng)路名稱,可以使用pcbfwd。

* 網(wǎng)路上的總線競爭也是嚴(yán)重問題??偩€競爭有兩類:一類是圖騰柱輸出間的總線競爭,而另一類則是圖騰柱與三態(tài)輸出間的總線競爭?;敬a實現(xiàn)如下所示:

[列表6]

這里,ignetpin()和igpinnnx()函數(shù)是在網(wǎng)路上檢查每個引腳的ViewBase例程。igpinown()例程返回引腳實例(系主)指針。函數(shù)get_inst_attr()、get_pin_attr() 和get_sheet_num()則返回請求實例屬性(參考標(biāo)志符REFDES)、引腳屬性(PINTYPE)及引腳實例所在的圖表編號。get_pin_attr()函數(shù)的基本代碼如下:

[列表7]

get_inst_attr()函數(shù)的基本代碼如下:

[列表8]

get_sheet_num()函數(shù)的基本代碼如下:

[列表9]

* POWER和GROUND網(wǎng)路中的非法名稱。這些名稱將與存儲在內(nèi)部數(shù)據(jù)結(jié)構(gòu)中的信息(如鏈接列表)進(jìn)行比較。


* 報告那些具有負(fù)載但不具有驅(qū)動程序或者具有驅(qū)動程序但不具有負(fù)載的網(wǎng)路。這可以通過標(biāo)注網(wǎng)路上每個引腳的類型加以實現(xiàn)。網(wǎng)路應(yīng)當(dāng)帶有1個輸出引腳或多個三態(tài)輸出引腳及最少一個輸入引腳,此外還可提供與網(wǎng)路全部器件和引腳相關(guān)的參考標(biāo)志符和符號。


* 報告那些不帶上拉電阻或所帶上拉電阻未連接到POWER的所有集電極開路輸出。


* 一旦網(wǎng)路的負(fù)載超過常規(guī)數(shù)目(良好的信號完整性條件下限額為8),那么將打印警告信息。

開發(fā):drc_inst()函數(shù)

drc_inst()函數(shù)與drc_net()函數(shù)類似,不同的是,前者遍歷了全部電路圖表及PCB設(shè)計中電路圖表上的所有實例,從而檢測違反規(guī)則的設(shè)計缺陷或創(chuàng)建附屬的輸出文件。其代碼實現(xiàn)如下:

[列表10]

上面關(guān)于drc_net()函數(shù)的討論提供了充分的C和ViewBase代碼示例,這里就不在贅述。下面給出了drc_inst()函數(shù)可檢測的部分違反規(guī)則的設(shè)計缺陷:

* 非法或遺漏的符號庫混淆。PCB設(shè)計中的所有符號必須來自共同符號庫,使用來自錯誤符號庫的符號是一個極為常見的錯誤,尤其是對于那些只依賴于符號進(jìn)行設(shè)計的后端處理工具。


* 遺失符號和/或引腳屬性,例如那些描述器件幾何結(jié)構(gòu)和引腳類型(in、out、bi和tri)的特性。


* 非法的符號和/或引腳屬性。例如,引腳類型可具有IN值,但不包括INPUT值。這將對后端封裝工具(如pcbfwd)如何為布線工具(如Allegro)提供信息產(chǎn)生影響。


* 符號上的參考標(biāo)志符值,尤其是對于串行器件(如電阻、電容和電感)。大多數(shù)信號完整性工具需要這些器件以字母R、C和L開頭,因此可將這些器件作為串聯(lián)元件而非離散器件進(jìn)行分析。類似地,drc_inst()函數(shù)可將其值同描述的屬性進(jìn)行對比以保證兩者完全匹配。

電路圖符號相關(guān)文章:電路圖符號大全


c++相關(guān)文章:c++教程




關(guān)鍵詞: PCB DRC 編寫 系統(tǒng)方法

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉