0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣編寫自己的PCB設(shè)計(jì)檢查器

PCB線路板打樣 ? 來源:ct ? 2019-08-14 18:01 ? 次閱讀

編寫自己的PCB設(shè)計(jì)規(guī)則檢查器
1.0簡(jiǎn)介

本文介紹了編寫設(shè)計(jì)規(guī)則檢查器(DRC)的系統(tǒng)方法用于PCB設(shè)計(jì)。在原理圖工具中捕獲PCB設(shè)計(jì)后,必須運(yùn)行DRC以查找違反設(shè)計(jì)規(guī)則的行為。這必須在后端處理開始之前完成。通常,原理圖工具的供應(yīng)商提供DRC,大多數(shù)設(shè)計(jì)人員只是使用它。

但是,供應(yīng)商工具是通用的,可能并不總是足夠靈活,可以處理某些獨(dú)特的要求。可以將要添加到DRC的新功能的請(qǐng)求發(fā)送給供應(yīng)商,但這將花費(fèi)金錢和時(shí)間,特別是如果必須多次執(zhí)行此操作。幸運(yùn)的是,大多數(shù)工具供應(yīng)商都提供易于使用的機(jī)制,您可以編寫自己的DRC以更好地滿足您的獨(dú)特需求。不幸的是,這個(gè)強(qiáng)大的工具還沒有被廣泛認(rèn)可或利用。在本文中,我們提供了一些有關(guān)如何充分利用它的實(shí)用指南。

因?yàn)镈RC必須遍歷PCB設(shè)計(jì)的整個(gè)原理圖,包括每個(gè)符號(hào),每個(gè)引腳,每個(gè)網(wǎng)絡(luò),如有必要,可以生成每個(gè)屬性,無限數(shù)量的有用“副產(chǎn)品”。正如第4.0節(jié)所解釋的那樣,它們可以很好地標(biāo)記出微妙的設(shè)計(jì)規(guī)則違規(guī)。例如,一個(gè)副產(chǎn)品文件可能包含設(shè)計(jì)中的所有去耦電容。如果數(shù)字遠(yuǎn)小于或大于預(yù)期,這可能會(huì)引發(fā)可能的電源線dv/dt問題的紅旗[1]。這些副產(chǎn)品文件可能非常需要,但它們是絕對(duì)不是由任何商用DRC生成的。

此DRC的另一個(gè)好處是可以輕松快速地更新它以適應(yīng)新的設(shè)計(jì)功能,例如影響設(shè)計(jì)規(guī)則的新屬性。此外,一旦在這個(gè)領(lǐng)域獲得了足夠的經(jīng)驗(yàn),那么許多其他可能性將出現(xiàn)。

例如,如果您可以編寫自己的DRC,您當(dāng)然可以編寫自己的物料清單(BOM)生成工具,這又可以更好地處理某些獨(dú)特的要求,例如在哪里獲取組件不屬于原理圖數(shù)據(jù)庫(kù)的“額外硬件”(插座,散熱片或螺釘)?;蛘吣梢跃帉懽约旱?a target="_blank">Verilog netlister,它足夠靈活,適合您的設(shè)計(jì)環(huán)境,例如在哪里可以獲取Verilog模型或某些獨(dú)特組件的計(jì)時(shí)文件。事實(shí)上,當(dāng)DRC遍歷設(shè)計(jì)原理圖時(shí),它可以收集所有必要的信息,以輸出用于模擬的Verilog網(wǎng)表和/或用于PCB制造的BOM。

這將很難討論這些主題沒有提供一些編程代碼。為此,我們需要使用原理圖捕獲工具作為示例。在本文中,我們使用來自Mentor Graphics的ViewDraw,它是PADS-Designer產(chǎn)品系列的一部分。此外,我們使用ViewBase,它只是一個(gè)C例程庫(kù),可以調(diào)用它來訪問ViewDraw數(shù)據(jù)庫(kù)。使用ViewBase,您可以輕松地在C/C ++[2] [3]中為ViewDraw編寫完整且有用的DRC。請(qǐng)注意,我們?cè)诖擞懻摰脑瓌t適用于任何其他PCB原理圖工具。

2.0開始

2.0.1輸入文件
除了原理圖數(shù)據(jù)庫(kù)之外,DRC還需要一些輸入文件來告訴它如何處理某些情況,例如自動(dòng)連接到電源平面的合法電源網(wǎng)名。例如,如果電源網(wǎng)稱為POWER,則它會(huì)通過后端打包實(shí)用程序自動(dòng)連接到電源平面,例如ViewDraw的 pcbfwd 。以下是這些輸入文件的列表,這些文件應(yīng)放在固定的全局位置,以便DRC可以在運(yùn)行時(shí)自動(dòng)查找/讀取它們并在內(nèi)部存儲(chǔ)信息。

可選擇創(chuàng)建名為legal_pwr_net_name的文件包含POWER信號(hào)的所有合法網(wǎng)絡(luò)名稱,例如VCC,V3_3P,VDD。請(qǐng)注意,字母大小寫可能對(duì)某些PCB布局/布線工具很重要,并且通常VCC與Vcc或vcc不同。 VCC可以是5.0V電源,V3_3P可以是3.3V電源。

legal_pwr_net_name是可選的,因?yàn)楹蠖舜虬鼘?shí)用程序的配置文件通常必須包含合法電源/地網(wǎng)名稱列表。如果來自Cadence Design Systems的Allegro是放置/布局工具,則該文件名為allegro.cfg,用于 pcbfwd ,它必須具有以下條目:

接地VSS CGND GND GROUND
電源VCC VDD VEE V3_3P V2_5P + 5V + 12V

如果DRC可以直接讀取allegro.cfg而不是legal_pwr_net_name,那將會(huì)更好(引入錯(cuò)誤的可能性更?。?/p>

通常,電源/接地引腳不會(huì)出現(xiàn)在元件符號(hào)上。相反,該符號(hào)具有一個(gè)屬性(可以稱為SIGNAL),該屬性指定哪個(gè)引腳是電源還是接地,并指定該引腳應(yīng)連接到的網(wǎng)絡(luò)的名稱:

SIGNAL = VCC:10
SIGNAL = GROUND:20

DRC可以讀取此屬性并確保網(wǎng)絡(luò)名稱是legal_pwr_net_name文件中的名稱。如果沒有,該電源引腳將不會(huì)連接到電源層,這是一個(gè)非常嚴(yán)重的錯(cuò)誤。

某些符號(hào)必須帶有電源/接地引腳,因?yàn)樗鼈兾催B接到正常電源/接地層。例如,ECL器件的VCC引腳可以連接到VCC或GROUND;其VEE引腳可以連接到GROUND或-5.0V平面。此外,電源/接地引腳可以在進(jìn)入電源/接地平面之前首先連接到濾波器。

此引腳和過濾器之間的網(wǎng)絡(luò)可以有任何名稱,DRC將無法檢查此信息。 DRC可以將此報(bào)告為錯(cuò)誤,用戶必須將其篩選出來,或者僅為此設(shè)計(jì)將網(wǎng)名添加到legal_pwr_net_name文件中。這是可能需要legal_pwr_net_name等文件的一個(gè)原因。最后,legal_pwr_net_name將被DRC讀入1)找到上拉電阻,2)檢查設(shè)計(jì)中POWER網(wǎng)名的字母大小寫,以及3)檢測(cè)任何未使用的引腳直接連接到POWER。

可選擇創(chuàng)建一個(gè)名為legal_gnd_net_name的文件,其中包含GROUND信號(hào)的所有合法網(wǎng)絡(luò)名稱,例如GROUND,VSS和F_GND。再次注意,字母大小寫可能對(duì)某些PCB布局/路由工具很重要。此外,如果DRC可以直接讀取上面提到的allegro.cfg文件而不是legal_gnd_net_name,那將更好。

legal_gnd_net_name與上面討論的legal_pwr_net_name具有相同的目的。此外,它將被DRC讀入1)找到下拉電阻,2)檢查GROUND網(wǎng)絡(luò)名稱的字母大小寫,以及3)檢測(cè)直接連接到GROUND的任何未使用的引腳。

(可選)創(chuàng)建legal_lib_path_name文件,其中包含所有合法符號(hào)庫(kù)路徑和名稱。這非常重要,因?yàn)槌R姾蛧?yán)重的錯(cuò)誤是使用未經(jīng)授權(quán)的庫(kù)中的符號(hào)。在PCB設(shè)計(jì)階段,通常會(huì)創(chuàng)建臨時(shí)組件符號(hào)并將其放在本地符號(hào)庫(kù)目錄中以進(jìn)行測(cè)試。最終版本將從此出來并放在公司或全局庫(kù)目錄中,它們可能與本地版本的重要方式不同。設(shè)計(jì)人員通常忘記用公司符號(hào)替換本地符號(hào)并引入設(shè)計(jì)錯(cuò)誤。

legal_lib_path_name是可選的,因?yàn)閷?duì)于大多數(shù)原理圖工具,庫(kù)信息包含在啟動(dòng)該工具所需的初始化文件中。對(duì)于ViewDraw,該文件名為viewdraw.ini,并在工具啟動(dòng)時(shí)自動(dòng)創(chuàng)建(通過腳本)。庫(kù)規(guī)范條目如下所示:

DIR [r]/corp_lib/pcb/symbol_libraries/viewdraw/fct(fct)

fct是眾多ViewDraw中的一個(gè)子可以來自fct(快速CMOS技術(shù))部件符號(hào)的庫(kù)。 DRC可以而且應(yīng)該直接讀取此初始化文件(如果存在),因?yàn)樵O(shè)計(jì)人員可以動(dòng)態(tài)添加新庫(kù)。

創(chuàng)建一個(gè)名為legal_pullup_res的文件,其中包含合法的上拉電阻用于端接和未使用的輸入引腳。通常,公司有資格并允許其設(shè)計(jì)人員使用的電阻列表。此外,電阻值也很重要。如果未使用的輸入引腳被上拉,則該值應(yīng)為5K或更高。

創(chuàng)建一個(gè)名為legal_pulldown_res的文件,其中包含用于端接和未使用輸入引腳的合法下拉電阻。如果使用一個(gè)電阻來拉低未使用的輸入引腳,則其值應(yīng)該很小,以防止任何漏電流將引腳電壓增加到觸發(fā)閾值以上。

創(chuàng)建一個(gè)名為legal_decoup_cap的文件,其中包含合法的去耦電容。同樣,公司可能要求其設(shè)計(jì)人員僅使用符合電源線dv/dt要求的某些合格零件。

創(chuàng)建一個(gè)名為legal_comp_attr的文件,其中包含組件符號(hào)應(yīng)具有的所有必需屬性,例如PART_NO,GEOM,REFDES,SIM_CLASS。它們可以由BOM生成工具,Verilog網(wǎng)表和其他工具使用。

創(chuàng)建一個(gè)名為legal_pin_attr的文件,其中包含組件符號(hào)應(yīng)具有的所有必需的引腳屬性,例如PIN_NAME,PINTYPE,PIN_NO 。

2.0.2設(shè)計(jì)目錄結(jié)構(gòu)

DRC運(yùn)行的第二個(gè)條件是固定的單一設(shè)計(jì)目錄結(jié)構(gòu),由所有PCB設(shè)計(jì)共享。沒有它,DRC就不知道在哪里可以找到原理圖數(shù)據(jù)庫(kù)以及存儲(chǔ)輸出文件的位置。這種結(jié)構(gòu)可能非常復(fù)雜,并且具有許多層級(jí),以支持所有PCB設(shè)計(jì)活動(dòng),例如設(shè)計(jì)規(guī)則檢查,BOM生成,Verilog仿真,靜態(tài)時(shí)序分析,信號(hào)完整性分析,布局/布局,PAL/FPGA設(shè)計(jì)(綜合)和模擬)和文件控制。但是對(duì)于DRC而言,如果使用ViewDraw,以下內(nèi)容就足夠了:


圖1 - 目錄結(jié)構(gòu)

pcb_info目錄應(yīng)至少包含兩個(gè)文件。第一個(gè)是design_def,另一個(gè)是design_type。 design_def應(yīng)包含PCB部件(組件)編號(hào)和其他所需信息,不僅適用于DRC,還適用于所有其他工具。 design_type應(yīng)包含設(shè)計(jì)類型信息,即PCB。如果此設(shè)計(jì)目錄結(jié)構(gòu)由其他類型的設(shè)計(jì)(例如ASIC或FPGA)共享,則design_type應(yīng)指定它,以便設(shè)計(jì)自動(dòng)化工具可以針對(duì)不同的設(shè)計(jì)類型采取適當(dāng)?shù)牟僮鳌H绻鹥cb_info目錄丟失或?yàn)榭?,則表示設(shè)計(jì)目錄不是標(biāo)準(zhǔn)目錄。在這種情況下,DRC應(yīng)退出并給出錯(cuò)誤消息。

schem目錄包含原理圖數(shù)據(jù)庫(kù),可由我們的DRC使用的ViewBase直接訪問。 sch子目錄包含描述工作表上的符號(hào)位置和其他信息的原理圖文件。 wir子目錄包含設(shè)計(jì)的網(wǎng)表和所有符號(hào)屬性。 ViewBase例程可以直接訪問它們。

drc目錄應(yīng)該存儲(chǔ)DRC的輸出文件。

3.0 A PCB DRC

3.0.1包裝器程序
我們的DRC是用C語(yǔ)言和C例程的ViewBase庫(kù)編寫的。后者提供了對(duì)ViewDraw原理圖數(shù)據(jù)庫(kù)的輕松直接訪問。它的每個(gè)例程訪問一個(gè)數(shù)據(jù)項(xiàng)或遍歷兩個(gè)數(shù)據(jù)項(xiàng)之間的一個(gè)關(guān)系。但是DRC不應(yīng)該直接運(yùn)行:它應(yīng)該“包裝”在用Perl或UNIX shell語(yǔ)言編寫的包裝程序中。包裝器程序執(zhí)行以下操作:

檢查圖1中描述的PCB設(shè)計(jì)目錄結(jié)構(gòu)是否有效。

可選擇運(yùn)行后端打包程序,例如 pcbfwd 用于ViewDraw。該程序可以檢查在DRC中難以檢查的一些設(shè)計(jì)規(guī)則違規(guī),例如網(wǎng)絡(luò)名稱允許的字符數(shù)和類型。它還可以將值(例如R4)分配給尚未分配值的符號(hào)參考指示符屬性。

檢查第2.0.1節(jié)中討論的所需輸入文件是否存在,并將它們提供給DRC。/li>

查找PCB設(shè)計(jì)名稱并將其提供給DRC。

向DRC輸入其輸出文件的路徑和名稱。

設(shè)置所需的工具環(huán)境變量,例如用于ViewDraw和ViewBase的WDIR。

調(diào)用DRC程序。

根據(jù)請(qǐng)求打印幫助消息。

打印用戶和運(yùn)行時(shí)信息。

執(zhí)行后期處理。這可以像檢查DRC的輸出文件到修訂控制工具一樣簡(jiǎn)單,也可以像主動(dòng)處理DRC的輸出文件一樣復(fù)雜,例如從其他數(shù)據(jù)源添加更多信息或執(zhí)行排序。 C可能不是排序數(shù)據(jù)或解析文件的最佳工具。例如,要使用第二個(gè)字段以數(shù)字方式對(duì)文件進(jìn)行排序,使用UNIX排序命令要容易得多:

sort + 1n source_file> sorted_file

3.0.2 DRC開發(fā):main()函數(shù)
讓我們調(diào)用DRC程序drc.c,它可以有兩個(gè)主要功能:drc_net()和drc_inst()。前者遍歷所有網(wǎng)絡(luò),后者遍歷所有實(shí)例(符號(hào)),尋找設(shè)計(jì)規(guī)則違規(guī)。這兩個(gè)函數(shù)還可以生成副產(chǎn)品輸出文件,這將在第1.0節(jié)和第4.0節(jié)中討論。

drc.c應(yīng)該首先包括所有C,ViewBase和用戶創(chuàng)建的頭文件,例如stdio.h,viewbase.h和hash_table.h?,F(xiàn)在設(shè)置drc.c以接收輸入參數(shù),聲明變量和文件指針指向輸入和輸出文件,使ViewBase指向ViewDraw數(shù)據(jù)庫(kù),并創(chuàng)建鏈接列表和散列表以存儲(chǔ)從輸入文件讀入的信息。 main()函數(shù)的一部分如下所示。

輸入和輸出文件名以及PCB設(shè)計(jì)名稱在調(diào)用DRC時(shí)由DRC的包裝程序(參見第3.0.1節(jié))輸入。數(shù)據(jù)結(jié)構(gòu)Str_list_elem和Hash_table在drc.c包含的頭文件中定義。 GROUPS是一個(gè)ViewBase數(shù)據(jù)類型。

接下來,main()函數(shù)應(yīng)該通過檢查argc是否等于預(yù)期數(shù)量來確保傳入正確的輸入數(shù)。如果是,則為變量分配輸入?yún)?shù):

此時(shí),main()函數(shù)可以初始化ViewBase數(shù)據(jù)結(jié)構(gòu)并使ViewBase指針pcb_ptr指向PCB設(shè)計(jì)。如果設(shè)計(jì)存在且有效,則main()函數(shù)應(yīng)該:

打開所有輸入文件以進(jìn)行讀取,并將其信息存儲(chǔ)到內(nèi)部數(shù)據(jù)結(jié)構(gòu)中,例如Str_list_elem和Hash_table。關(guān)閉輸入文件。

打開所有輸出文件進(jìn)行寫入。它們可以是設(shè)計(jì)規(guī)則錯(cuò)誤/警告文件以及副產(chǎn)品文件。

調(diào)用drc_net()和drc_inst()函數(shù)來完成實(shí)際工作。

關(guān)閉所有輸出文件。

main()中的C和ViewBase代碼的大綱這是:

這里,iwinit()和iw1level()是ViewBase例程。前者初始化所有加載器例程,這是必需的。后者加載一層PCB設(shè)計(jì)(整個(gè)設(shè)計(jì))。要僅加載一個(gè)工作表,請(qǐng)使用iw1sheet()例程(我們的DRC中未使用該例程)。請(qǐng)注意,必須將正確的設(shè)計(jì)指針,文件指針,鏈接列表,變量名等傳遞給drc_net()和drc_inst()函數(shù):

drc_inst(pcb_ptr,pcb_name,drc_error,list_legal_pwr_name,.. 。);

如果您的設(shè)計(jì)是分層的并且使用異構(gòu)組件符號(hào),那么請(qǐng)確保DRC可以正確處理它們。

3.0.3 DRC開發(fā): drc_net()函數(shù)
drc_net()遍歷PCB設(shè)計(jì)中的所有網(wǎng)絡(luò),查找違反設(shè)計(jì)規(guī)則和/或生成副產(chǎn)品輸出文件。代碼大綱如下:

這里,iggrpnet()和ignetnxt()是ViewBase例程,用于抓取PCB設(shè)計(jì)中的每個(gè)網(wǎng)絡(luò)。 ignetnam()也是一個(gè)用于查找網(wǎng)絡(luò)名稱的ViewBase例程。 NETS,PINS,COMPONENTS,SYMBOLS和ATTRIBUTES是ViewBase數(shù)據(jù)類型.drc_net()可以查找以下設(shè)計(jì)規(guī)則違規(guī):

非法網(wǎng)絡(luò)名稱。如果ViewDraw自動(dòng)分配了網(wǎng)絡(luò)名稱,其格式為$#...#N#...#,其中第一個(gè)#...#是工作表編號(hào),第二個(gè)#...#是網(wǎng)絡(luò)編號(hào)。 PCB設(shè)計(jì)人員分配的網(wǎng)絡(luò)名稱必須以字母開頭,后跟30個(gè)或更少字符。

drc_net()應(yīng)調(diào)用函數(shù)legal_net_name()來執(zhí)行此任務(wù)。在UNIX中,regexp.h頭文件大大簡(jiǎn)化了C中的正則表達(dá)式匹配/檢查,該文件必須包含在DRC程序中。 drc_net()應(yīng)該將網(wǎng)名變量和設(shè)計(jì)規(guī)則違規(guī)文件指針傳遞給legal_net_name(),它看起來像:

后端打包工具 pcbfwd 還可以檢查非法網(wǎng)名,但其功能僅限于簡(jiǎn)單的正則表達(dá)式。上面給出的代碼可以處理任何正則表達(dá)式。此外,在運(yùn)行pcbfwd之前或之后是否查找非法網(wǎng)名是一個(gè)權(quán)衡問題。對(duì)于簡(jiǎn)單的網(wǎng)絡(luò)名稱,請(qǐng)使用pcbfwd。

網(wǎng)絡(luò)上的總線爭(zhēng)用,這是一個(gè)嚴(yán)重的錯(cuò)誤。有2種。一個(gè)是圖騰柱輸出之間的爭(zhēng)用,另一個(gè)是圖騰柱和三態(tài)輸出之間的爭(zhēng)論。代碼大綱如下:

這里,ignetpin()和igpinnnx()是ViewBase例程,它們抓取網(wǎng)絡(luò)上的每個(gè)引腳。 igpinown()例程返回指針的實(shí)例(所有者)的指針。函數(shù)get_inst_attr(),get_pin_attr()和get_sheet_num()分別返回所請(qǐng)求的實(shí)例屬性(引用指示符REFDES),引腳屬性(PINTYPE)和引腳實(shí)例所在的工作表編號(hào)。 get_pin_attr()函數(shù)的大綱如下:

get_inst_attr()函數(shù)的大綱如下:

get_sheet_num()函數(shù)的大綱如下所示:

POWER和GROUND網(wǎng)絡(luò)的非法名稱。它們與存儲(chǔ)在內(nèi)部數(shù)據(jù)結(jié)構(gòu)中的信息(如鏈表)進(jìn)行比較。

報(bào)告有負(fù)載但沒有驅(qū)動(dòng)程序的網(wǎng)絡(luò),反之亦然。這是通過跟蹤網(wǎng)絡(luò)上每個(gè)引腳的引腳類型來完成的。應(yīng)該有1個(gè)輸出引腳或多個(gè)三態(tài)輸出引腳和至少1個(gè)輸入引腳。此外,請(qǐng)?zhí)峁┐司W(wǎng)絡(luò)上所有組件的參考標(biāo)志和符號(hào)以及所涉及的引腳。

報(bào)告所有未接通上拉電阻或其上拉電阻未連接的集電極開路輸出POWER。

如果網(wǎng)絡(luò)的負(fù)載超過正常負(fù)載,則應(yīng)打印警告,為了獲得良好的信號(hào)完整性,該負(fù)載應(yīng)小于8.

3.0.4 DRC開發(fā):drc_inst( )函數(shù)
drc_inst()函數(shù)類似于drc_net(),除了前者遍歷每個(gè)原理圖工作表及PCB設(shè)計(jì)中的所有實(shí)例以查找違反設(shè)計(jì)規(guī)則或通過以下方式生成:產(chǎn)品輸出文件。它的代碼大綱是:

我們之前對(duì)drc_net()函數(shù)的討論提供了充足的C和ViewBase代碼示例,這里不再重復(fù)。以下是drc_inst()可以檢查的設(shè)計(jì)規(guī)則違規(guī)的部分列表:

非法或缺少符號(hào)庫(kù)別名。 PCB設(shè)計(jì)中的所有符號(hào)必須來自公司符號(hào)庫(kù)。使用來自錯(cuò)誤庫(kù)的符號(hào)是一種非常常見的錯(cuò)誤來源,尤其是對(duì)于僅依靠符號(hào)來處理設(shè)計(jì)的后端處理工具。

缺少符號(hào)和/或引腳屬性,例如指定組件幾何的屬性和引腳的類型(in,out,bi,tri)。

符號(hào)和/或引腳屬性的非法值。例如,引腳類型的值可以是IN,但不能是INPUT。這會(huì)影響后端打包工具(如 pcbfwd,)如何向放置/布局工具提供信息,例如Allegro。

符號(hào)上參考指示符的值,尤其是對(duì)于系列組件,例如電阻器,電容器電感器。大多數(shù)信號(hào)完整性工具要求這些值以字母R,C和L開頭,以便可以將它們分析為系列元素而不是分立元件。此外,drc_inst()可以根據(jù)description屬性檢查它們的值,以確保兩者匹配。

非法去耦電容。這可能導(dǎo)致POWER線路dv/dt問題。

非法的上拉和下拉電阻。

符號(hào)的POWER或GROUND引腳未連接到POWER或GROUND平面。

未使用的輸入引腳沒有通過電阻上拉或下拉,或者此電阻沒有直接連接到POWER或GROUND網(wǎng)絡(luò)。

如果上拉或下拉超過1個(gè)未使用的輸入引腳,則發(fā)出警告

在直接連接到POWER或GROUND網(wǎng)絡(luò)的非專用POWER和GROUND引腳上發(fā)出警告。

如果使用Tab鍵,請(qǐng)檢查它是否引用了正確的替代方案組件,例如它們的部件號(hào)是否有效以及它們的幾何形狀是否與默認(rèn)組件的幾何形狀匹配。

3.0.5 DRC不應(yīng)該做什么
雖然我們的DRC可以做很多事情,有些東西可以通過其他方式更好更容易地檢查。一個(gè)偉大而必要的幫手是后端封裝實(shí)用程序,它為放置/布局工具打包PCB設(shè)計(jì)。對(duì)于ViewDraw,它是 pcbfwd,,可以設(shè)置它來檢查許多設(shè)計(jì)規(guī)則違規(guī)和設(shè)計(jì)錯(cuò)誤。

DRC和 pcbfwd之間存在重疊 pcbfwd 運(yùn)行之前運(yùn)行。理想情況下, pcbfwd 應(yīng)僅運(yùn)行以打包設(shè)計(jì),因此DRC可以檢查得越多越好。但是你應(yīng)該平衡開發(fā)超級(jí)強(qiáng)大的DRC與免費(fèi)提供的 pcbfwd的現(xiàn)有功能的努力。本節(jié)簡(jiǎn)要討論了這些問題。

pcbfwd 由其配置文件控制,如果Allegro是放置/布局工具,則稱為allegro.cfg。其BeginChkRules - EndChkRules部分可用于檢查許多錯(cuò)誤,例如同一符號(hào)上的重復(fù)屬性,非法網(wǎng)絡(luò)和網(wǎng)絡(luò)屬性名稱,錯(cuò)誤的異構(gòu)包,異構(gòu)符號(hào)上的沖突屬性以及缺少的屬性。例如,要捕獲異構(gòu)符號(hào)上的沖突屬性,請(qǐng)將以下行放入allegro.cfg:

CHKBRD _HETERO_ATT ERR 0

有些事情既不是DRC也不是 pcbfwd 可以檢查,例如PCB設(shè)計(jì)中的預(yù)期冗余。假設(shè)一個(gè)組件包含4個(gè)相同的部件,2個(gè)用于設(shè)計(jì),那么它們可以打包到同一個(gè)組件或2個(gè)組件中以實(shí)現(xiàn)冗余。如果需要一個(gè)組件,則兩個(gè)組件的符號(hào)必須具有相同的參考標(biāo)號(hào),例如U4。如果需要2個(gè)組件,則符號(hào)必須具有不同的參考標(biāo)志,例如U4和U5,必須由設(shè)計(jì)人員認(rèn)真添加。沒有已知的簡(jiǎn)單方法來捕捉此類錯(cuò)誤,而精心設(shè)計(jì)師可能是唯一的保證。

另一個(gè)例子是雖然DRC和/或 pcbfwd 可以檢查是否symbol具有所需的幾何屬性GEOM,它們無法檢查其值是否與原理圖符號(hào)匹配。一個(gè)不匹配可能在ViewDraw符號(hào)上指定的引腳數(shù)與Allegro占用空間上的引腳數(shù)之間。

Allegro的 dev_check 實(shí)用程序可以捕獲此特定錯(cuò)誤。首先,在ViewDraw原理圖上運(yùn)行pcbfwd以創(chuàng)建Allegro設(shè)備文件,這些文件與Allegro腳印文件一起輸入 dev_check 。假設(shè)引腳68,69和70位于Allegro占位面積上但不在ViewDraw符號(hào)上,則 dev_check 可以捕獲此信息。這些引腳可能是無連接或安裝孔,甚至是錯(cuò)誤地遺漏在ViewDraw符號(hào)之外的POWER/GROUND引腳。必須為NC屬性分配無連接和/或安裝孔引腳,并將POWER/GROUND引腳分配給SIGNAL屬性。以這種方式修改符號(hào)并重新運(yùn)行 pcbfwd 和 dev_check 。

最后,DRC輸出的質(zhì)量取決于原理圖的質(zhì)量。例如,如果錯(cuò)誤地將引腳類型指定為輸入引腳的OUT,則DRC將生成錯(cuò)誤的錯(cuò)誤消息。組件符號(hào)質(zhì)量應(yīng)該仔細(xì)和系統(tǒng)地控制,因?yàn)樗鼤?huì)影響所有其他工具。

4.0超越DRC

除了檢查設(shè)計(jì)規(guī)則違規(guī),DRC還可以生成有用的副產(chǎn)品輸出文件,如前所述。輸入開關(guān)可以告訴DRC是否為每次運(yùn)行生成它們。雖然這些文件不包含DRC錯(cuò)誤或警告消息,但它們可以標(biāo)記潛在的設(shè)計(jì)問題。例如,一個(gè)文件可以包含所有網(wǎng)絡(luò)的列表以及每個(gè)網(wǎng)絡(luò)上的負(fù)載數(shù)量。如果該數(shù)量超過合理值,則可能導(dǎo)致信號(hào)完整性問題。 PCB設(shè)計(jì)人員可以快速瀏覽此文件并查找此類問題。這些副產(chǎn)品文件的數(shù)量可以是所需數(shù)量。部分列表如下。

按網(wǎng)名排序的所有網(wǎng)絡(luò)列表以及每個(gè)網(wǎng)絡(luò)所在的工作表。附加信息可能包括該網(wǎng)絡(luò)連接的符號(hào)的引腳號(hào)和類型(及其參考標(biāo)號(hào))。該文件由drc_net()函數(shù)創(chuàng)建。它可用于查找網(wǎng)絡(luò)所在的工作表。

所有網(wǎng)絡(luò)的列表以及每個(gè)網(wǎng)絡(luò)的負(fù)載數(shù)量。這是由drc_net()函數(shù)生成的。為了獲得良好的信號(hào)完整性,網(wǎng)絡(luò)應(yīng)該不超過8個(gè)負(fù)載。

跨越工作表邊界的網(wǎng)絡(luò)列表。這有助于設(shè)計(jì)人員在實(shí)驗(yàn)室中調(diào)試設(shè)計(jì)。

具有網(wǎng)絡(luò)屬性及其屬性的網(wǎng)絡(luò)列表。 Designer可以檢查這些網(wǎng)絡(luò)是否具有正確的屬性。此文件由drc_net()函數(shù)生成,代碼大綱為:

此處,ignetatt()和igattnxt()是ViewBase例程以獲取網(wǎng)絡(luò)上的每個(gè)屬性。 igattnam()獲取屬性名稱。 net_att是指向輸出文件的文件指針。

所有未使用的引腳的列表,應(yīng)該上拉或下拉。報(bào)告上拉和下拉電阻。該文件由drc_inst()函數(shù)生成。

所有去耦電容及其值的列表。附加信息可能包括它們所在的原理圖表。設(shè)計(jì)人員應(yīng)快速檢查此文件,以確保PCB上有足夠的去耦電容。該文件由drc_inst()函數(shù)生成。

所有分立元件及其值的列表,例如上拉/下拉電阻,傳輸線終端電阻/電容。附加信息可能包含它們所在的原理圖表。設(shè)計(jì)師可以快速檢查數(shù)字是否合理。該文件由drc_inst()函數(shù)生成。

此列表的另一個(gè)重要用途是PCB設(shè)計(jì)的信號(hào)完整性和時(shí)序分析[4]。該領(lǐng)域的大多數(shù)工具都可以自動(dòng)處理所謂的系列元素,通過將它們的效果組合到傳輸線分析結(jié)果中,但將它們從輸出文件中取出。一個(gè)這樣的元件是圖2中的R1,它是串聯(lián)終端電阻器。當(dāng)信號(hào)完整性工具報(bào)告凈延遲時(shí),它將從u1.z到u2.i,包含R1的效果,而不是從u1.z到R1.1,并從R1.2繼續(xù)到u2.i.這是正確的時(shí)序分析。


圖2 - 串聯(lián)終端電阻

但是,為了一個(gè)信號(hào)完整性工具自動(dòng)識(shí)別一系列元素,必須滿足一些條件。例如,電阻的參考標(biāo)志必須以字母R后跟數(shù)字和字母C的電容開始。另一個(gè)條件是每個(gè)系列元素符號(hào)必須具有值為DISCRETE的TYPE屬性。沒有這些條件,這些元素就無法正確處理。

一個(gè)常見問題是模板設(shè)計(jì)被許多其他PCB復(fù)制。為了避免可能的參考標(biāo)志沖突,模板設(shè)計(jì)中的電阻和電容通常稱為XR1和XC1。必須在信號(hào)完整性工具的數(shù)據(jù)庫(kù)中將它們更改為R10001和C10001(數(shù)字應(yīng)大于原始PCB設(shè)計(jì)中使用的任何可能的參考標(biāo)志符號(hào))。通過使用我們的DRC生成的離散組件列表,可以找到XR和XC參考標(biāo)志。

5.0結(jié)論

顯然,有編寫自己的PCB設(shè)計(jì)規(guī)則檢查器的許多優(yōu)點(diǎn)和必要條件。盡管這項(xiàng)工作并非微不足道,但它也不是火箭科學(xué),也可以由對(duì)現(xiàn)有編程或腳本語(yǔ)言有深入了解的任何人完成。好處是無限的,可以大大超過努力。

6.0參考文獻(xiàn)

1。 Luke L. Chang,“VAX 9000存儲(chǔ)器配電系統(tǒng)的瞬態(tài)分析”,數(shù)字電源系統(tǒng),1990年秋/冬

2。 Brian W. Kernighan& Dennis M. Ritchie,“C編程語(yǔ)言”,第2版,Prentice Hall,1988年

3。 Bjarne Stroustrup,“The C ++ Programming Language”,3rd Edition,Addison-Wesley,1997

4。 Luke L. Chang,“高速電路板的靜態(tài)時(shí)序分析”,IEEE Spectrum,1997年3月

Luke L. Chang是英特爾存儲(chǔ)元件部門的高級(jí)驗(yàn)證負(fù)責(zé)人(哈德遜,馬薩諸塞州)。在此之前,他曾在多家高科技公司擔(dān)任過工程和管理職位,涉及硬件設(shè)計(jì)/驗(yàn)證和電子設(shè)計(jì)自動(dòng)化(EDA)領(lǐng)域。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    PCB設(shè)計(jì)PCB制板的緊密關(guān)系

    一站式PCBA智造廠家今天為大家講講PCB設(shè)計(jì)PCB制板有什么關(guān)系?PCB設(shè)計(jì)PCB制板的關(guān)系。PCB設(shè)計(jì)和制板是
    的頭像 發(fā)表于 08-12 10:04 ?290次閱讀

    PCB設(shè)計(jì)的EMC有哪些注意事項(xiàng)

    是否滿足ESD或者EMI防護(hù)設(shè)計(jì)要求,撇開原理圖設(shè)計(jì),PCB設(shè)計(jì)一般需要我們從PCB布局和PCB布線兩個(gè)方面進(jìn)行審查,接下來為大家介紹關(guān)于PCB layout的EMC設(shè)計(jì)
    的頭像 發(fā)表于 06-12 09:49 ?385次閱讀

    PCB設(shè)計(jì)中的常見問題有哪些?

    一站式PCBA智造廠家今天為大家講講PCB設(shè)計(jì)中的常見問題有哪些?PCB設(shè)計(jì)布局時(shí)容易出現(xiàn)的五大常見問題。在電子產(chǎn)品的開發(fā)過程中,PCB(Printed Circuit Board,印刷電路
    的頭像 發(fā)表于 05-23 09:13 ?585次閱讀
    <b class='flag-5'>PCB設(shè)計(jì)</b>中的常見問題有哪些?

    多層pcb設(shè)計(jì)如何過孔的原理

    一站式PCBA智造廠家今天為大家講講如何實(shí)現(xiàn)多層PCB的過孔?多層pcb設(shè)計(jì)過孔的方法。在現(xiàn)代電子行業(yè)中,多層PCB設(shè)計(jì)已經(jīng)成為常見且重要的技術(shù)。多層PCB不僅可以提供更高的電路密度,
    的頭像 發(fā)表于 04-15 11:14 ?692次閱讀

    PCB設(shè)計(jì)優(yōu)化丨布線布局必須掌握的檢查項(xiàng)

    制造缺陷,提高產(chǎn)品的穩(wěn)定性和可靠性。 而在PCB設(shè)計(jì)中,布局與布線是決定整個(gè)電路板性能、可靠性及制造成本的關(guān)鍵環(huán)節(jié)之一,所以本文將重點(diǎn)介紹其相關(guān)檢查項(xiàng)概述。 ? 一、布局檢查 ?1、導(dǎo)入網(wǎng)表 最新的原理圖生成的網(wǎng)表導(dǎo)入
    的頭像 發(fā)表于 02-27 18:22 ?1501次閱讀
    <b class='flag-5'>PCB設(shè)計(jì)</b>優(yōu)化丨布線布局必須掌握的<b class='flag-5'>檢查</b>項(xiàng)

    PCB設(shè)計(jì)軟件有哪些 pcb設(shè)計(jì)軟件哪個(gè)好用

    PCB是電子產(chǎn)品最重要的組成之一,PCB設(shè)計(jì)軟件在電子工程領(lǐng)域具有重要的作用。目前市面上有許多PCB設(shè)計(jì)軟件,下面將詳細(xì)介紹幾款常用的軟件并分析它們的特點(diǎn)和優(yōu)缺點(diǎn)。 Altium Designer
    的頭像 發(fā)表于 02-02 14:05 ?3879次閱讀

    PCB設(shè)計(jì)檢查規(guī)范指南

    PCB設(shè)計(jì)說明以及PCB設(shè)計(jì)或更改要求、標(biāo)準(zhǔn)化要求說明是否明確5.確認(rèn)外形圖上的禁止布放器件和布線區(qū)已在PCB模板上體現(xiàn)6.比較外形圖,確認(rèn)PCB所標(biāo)注尺寸及公差無誤, 金屬化孔和非金
    發(fā)表于 12-21 16:07 ?495次閱讀

    PCB設(shè)計(jì)之高速電路

    PCB設(shè)計(jì)之高速電路
    的頭像 發(fā)表于 12-05 14:26 ?663次閱讀
    <b class='flag-5'>PCB設(shè)計(jì)</b>之高速電路

    FSPI的PCB設(shè)計(jì)

    FSPI的PCB設(shè)計(jì)
    的頭像 發(fā)表于 11-23 09:04 ?503次閱讀
    FSPI的<b class='flag-5'>PCB設(shè)計(jì)</b>

    PCB設(shè)計(jì)規(guī)則檢查編寫技巧

    由于DRC必須遍歷 PCB設(shè)計(jì)整個(gè)電路圖,包括每個(gè)符號(hào)、每個(gè)引腳、每個(gè)網(wǎng)路、每種屬性,如有必要還能創(chuàng)建數(shù)目不限“附屬”文件。如4.0節(jié)所述,DRC可以標(biāo)示出任何違反PCB設(shè)計(jì)規(guī)則細(xì)微偏差。例如
    發(fā)表于 10-31 15:06 ?283次閱讀

    8個(gè)PCB設(shè)計(jì)和布局技巧

    PCB周圍無處不在,我們可能一直都離PCB不超過一米。您的smartwatch /健身追蹤,筆記本電腦或手機(jī)。我們不能一天不依靠某處的PCB!結(jié)果,
    的頭像 發(fā)表于 10-15 16:08 ?926次閱讀

    編寫PCB設(shè)計(jì)規(guī)則檢查技巧

    由于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ì)微偏差。
    發(fā)表于 10-13 14:58 ?320次閱讀

    如何編寫一個(gè)自己的 starter

    前面給大家介紹了 SpringBoot 的自動(dòng)裝配功能,相信大家對(duì)自動(dòng)裝配都有了很好的理解,那么今天阿粉通過一個(gè)示例來給大家演示一下如何編寫一個(gè)自己的 starter 。 再編寫 starter
    的頭像 發(fā)表于 10-08 14:42 ?753次閱讀
    如何<b class='flag-5'>編寫</b>一個(gè)<b class='flag-5'>自己</b>的 starter

    PCB設(shè)計(jì)步驟和規(guī)范 PCB常見類型電路設(shè)計(jì)

    目前三大主流PCB設(shè)計(jì)軟件 Altiun-Designer: 輕量化的PCB設(shè)計(jì)軟件,價(jià)格便宜,適合小企業(yè)、新手學(xué)習(xí)入門 Mentor-PADS:中高端軟件,功能強(qiáng)大,價(jià)格適中,用戶群廣 Aller go-Candence:專業(yè)級(jí)的
    發(fā)表于 09-26 12:32 ?550次閱讀
    <b class='flag-5'>PCB設(shè)計(jì)</b>步驟和規(guī)范 <b class='flag-5'>PCB</b>常見類型電路設(shè)計(jì)

    PCB設(shè)計(jì)ESD抑制準(zhǔn)則?

    PCB布線是ESD防護(hù)的一個(gè)關(guān)鍵要素,合理的PCB設(shè)計(jì)可以減少故障檢查和返工所帶來不必要的成本。在PCB設(shè)計(jì)中,不但需要在靜電薄弱電路增加靜電抑制器件,還要克服放電電流產(chǎn)生的電磁干擾(
    的頭像 發(fā)表于 09-26 10:57 ?890次閱讀
    <b class='flag-5'>PCB設(shè)計(jì)</b>ESD抑制準(zhǔn)則?