在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

怎樣撰寫自己的PCB數據庫轉換器

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

編寫自己的PCB數據庫翻譯器
1.0簡介

眾所周知,高科技公司的設計環境可能會不時“不穩定”。設計環境甚至設計師經常做出改變。這些變化源于采用更好的技術或公司收購/兼并。如果發生這種情況,可能必須將正在進行的設計從一組工具轉移到另一組工具。

假設一家公司已將多個印刷電路板(PCB)設計放置在一個計算機輔助設計(CAD)工具中何時必須更改該工具。有兩種選擇。首先,更換新CAD工具中的所有PCB設計,但每個設計至少需要3周時間。其次,編寫一個翻譯器將現有的展示位置文件轉換為新工具的文件。最多需要幾天的時間才能使這個翻譯器正確運行,每個設計只運行幾秒鐘。

如果有5個PCB,第一個選項至少需要15周。有了翻譯,那個時間減少到1周或更短。第二種選擇的優勢和需求是顯而易見的。不幸的是,這個翻譯器可能不適用于您的特定CAD工具。

在本文中,我們提出了一種使用編程語言Perl [1]編寫PCB布局數據庫轉換器的系統方法。另外,我們提供一些代碼來說明細節。如果不使用特定的CAD工具作為示例,這些主題將難以討論。因此,選擇Mentor Graphics Corp.的BoardStation和Cadence Design Systems的Allegro。這兩種工具都可以放置和布線PCB設計。我們的翻譯器將BoardStation的放置數據庫轉換為Allegro的放置數據庫,但本文中介紹的原理和技術適用于任何其他兩個CAD工具。

我們的翻譯人員必須執行以下三個主要任務:

對于我們的討論,BoardStation表面貼裝幾何使用引腳1作為原點(不是行業標準,但有些公司會這樣做)。 Allegro使用幾何中心代替。使用此信息,翻譯人員必須正確翻譯幾何體的放置位置。

如果BoardStation幾何體的方向與其Allegro對應物的方向不同,則翻譯者必須正確翻譯方向。

翻譯人員必須正確地將BoardStation展示位置文件的格式轉換為Allegro展示位置文件的格式。 BoardStation的放置文件稱為comps.comps _ ##和job_parts,其中_ ##是版本號,例如_01。 Allegro的放置文件名為place_txt.txt。

最后,有關為什么選擇Perl來編寫我們的翻譯器的說法,盡管任何其他完整的計算機語言也可以完成這項工作。 Perl最初設計用于文本解析和處理。這正是我們工作的主要部分,后面會很明顯。

2.0開始翻譯

首先,我們的翻譯需要3個輸入文件(除了BoardStation和Allegro放置文件)。它們可能已存在于公司PCB設計數據庫中,或者可能必須手工創建。以下是作者選擇文件名的列表。請注意,bs_指的是BoardStation,al_指的是Allegro,bs_al_指的是這兩個工具。

bs_insertion.file:它必須包含每個BoardStation幾何名稱以及它是否是表面貼裝。對于表面貼裝,它必須指定從原點(引腳1)到中心的以mils為單位的X偏移和Y偏移。這些信息非常重要,因為正如上面第1.0節所述,我們已選擇幾何中心作為Allegro的原點。 bs_insertion.file可以簡單如下(#表示注釋):類型1表示表面安裝,類型2表示非表面安裝。

非表面貼裝幾何體可以是通孔或分立或連接器組件。通常,幾何體不能同時是表面貼裝和非表面貼裝。但是,如果組件具有兩個版本并且它們在同一設計中使用,則必須使用兩個不同的幾何名稱。請注意,幾何名稱中的大寫或小寫對某些CAD工具很重要。

通常,與bs_insertion.file類似或相同的數據庫應該已由公司維護,并且不需要創建此文件用手。但它可能包含的信息多于我們的翻譯器所需的信息,例如軸向組件的旋轉,寬度和高度信息。在這種情況下,翻譯器應該不解析這種數據。

bs_insertion.file由翻譯器解析并存儲到兩個內部關聯數組中,可以調用$ bs_insertion_type和$ matrix。 $ bs_insertion_type中每個條目的鍵是BoardStation幾何名稱,值是組件類型,它是1或2. $ matrix的鍵可以是字符串geometry_name = xoffset或geometry_name = yoffset,值是偏移值。

例如,對于上面給出的幾何名稱100AMPTCH,條目$ matrix {100AMPTCH = xoffset}存儲371.2,條目$ matrix {100AMPTCH = yoffset}存儲350.0。稍后將擴展$ matrix數組以存儲更多信息。

bs_al_list.file:它包含所有BoardStation幾何及其Allegro對應項。它可能如下所示(#表示注釋):

兩個BoardStation幾何圖形可能與相同的Allegro幾何圖形匹配。同樣,幾何名稱中的大寫或小寫也適用于某些CAD工具。

bs_al_list.file通常是手工創建的。它由轉換器解析并存儲到內部關聯數組中,可以稱為$ bs_al_list。其關鍵是BoardStation幾何名稱,其值為Allegro幾何名稱。對于上面給出的示例,bs_al_list {7827-150HT}存儲CONN-SMD_2X25。

al_orientation.file:它包含所有Allegro幾何及其默認方向。為了簡化操作,請為每個方向分配一個代碼,如表1所示,對于特定應用程序可能完成也可能不完整。

al_orientation.file通常是手工創建的,它可能如下所示(#表示評論):

該文件由翻譯器解析并存儲到內部關聯數組中,可以稱為$ al_orientation。它的關鍵是Allegro幾何名稱,它的值是一個方向代碼。對于上面給出的示例,al_orientation {FIDUCIAL40}存儲0.同樣,幾何名稱中的大寫或小寫對某些CAD工具很重要。

表格1 ?? Allegro幾何的方向代碼

現在我們可以開始系統地開發翻譯器了。正如上面第1.0節中簡要提到的,有兩個步驟可以完成。首先,我們將解析BoardStation的展示位置文件。其次,我們將使用該信息生成Allegro的放置文件。

3.0處理BoardStation的job_parts文件

如前所述,BoardStation有兩個放置位置文件,即job_parts和comps.comps _ ##。本節討論我們的翻譯器如何使用job_parts來查找和計算每個BoardStation幾何體的方向。結果存儲在名為$ bs_orientation的內部關聯數組中。此外,可以選擇將此結果寫入文件,以便我們可以手動檢查翻譯器是否正確計算了這些方向。

job_parts唯一列出PCB設計中的每個BoardStation幾何體及其物理信息,例如它的名稱和引腳(包括引腳號和位置)。每個幾何條目如下所示:

$$ create_component(“BoardStation_Geometry_Name”);

與$$ create_component()條目關聯的每個pin條目如下所示:

$$屬性( “COMPONENT_PIN_DEFINITION”,“25”,, @ scale ,, [6.175,-8.89]);

其中“25”是引腳編號,[6.175,-8.89]是引腳位置,單位為英寸。 2引腳幾何結構(如電容)具有以下3個條目:

$$ create_component(“CC1206”);

$$屬性(“COMPONENT_PIN_DEFINITION” ,“1”,, @ scale ,, [-0.067,0.0]);

$$屬性(“COMPONENT_PIN_DEFINITION”,“2”,@ scale ,, [0.067,0.0] );

1針幾何圖形,例如基準點,有以下兩個條目:

$$ create_component(“FIDUCIAL1”);

$$屬性(“COMPONENT_PIN_DEFINITION”,“1”,@ scale,[0.0,0.0]);

請注意,$$ create_component()條目始終位于其關聯的$$屬性()條目之前。

我們的轉換程序在每個BoardStation幾何名稱中進行分析。接下來,它通過在$ bs_insertion_type內部關聯數組中查找來確定此幾何是否是表面貼裝(參見上面的第2.0節)。如果是,請將其存儲在名為$ sm_array的新內部關聯數組中。如果沒有,請將其存儲在另一個名為$ nsm_array的新內部關聯數組中。

還會解析BoardStation幾何體的每個引腳以確定以下內容:

如果引腳number是純數字且為1或2或3,將其X和Y坐標存儲在新的$ pin_1_2_3內部關聯數組中。保存3個引腳,以便轉換器稍后可以確定哪個幾何結構為2引腳。

對于每個數字純數字的引腳,確定最小X,最大X,最小Y和最大Y坐標到目前為止,將此信息存儲到$ matrix內部關聯數組中(參見上面的第2.0節)。

如果引腳號不是純數字,例如A1或B1,則不要執行上面的兩個子彈。相反,將此BoardStation幾何圖形放入新的$ odd_pin關聯數組中,并停止查找其引腳。這是因為傳統意義上無法確定哪個引腳是引腳1,因為我們可以在同一幾何結構上具有A1,B1和C1引腳。下面將進一步討論這種特殊情況。

執行上述操作的Perl代碼概述如下:

單擊此處查看代碼示例

總而言之,對于每個BoardStation幾何體,$ matrix內部關聯數組具有鍵(字符串)和下面表2中給出的值。在此表中,鍵的geometry_name部分是BoardStation中使用的實際幾何名稱,對于每個唯一組件它是唯一的。

表2 ??每個唯一BoardStation幾何體的$矩陣條目

接下來,我們使用存儲在這些內部關聯數組中的信息來確定pin1的位置,假設每個BoardStation幾何體上的針都是逆時針計數的。它可以是表3中列出的四個中的一個。然后,此信息用于確定幾何體的方向,其代碼在表1中給出。每個BoardStation幾何體及其計算的方向隨后存儲在新的內部關聯數組中$ bs_orientation。

表3 ?? BoardStation幾何體上pin1的位置

目前,有必要討論一些無法輕松處理的特殊BoardStation幾何圖形。它們的方向代碼(表1中給出)必須在翻譯器中進行硬編碼。下面將討論3種情況。

如前所述,如果幾何體不具有純數字引腳數(例如A1或B1或C1而不僅僅是1),那么就不可能找到哪個引腳是引腳1,并且轉換器無法計算幾何方向。假設取向代碼為10(硬編碼)。我們還可以查看此幾何圖形并找到其確切方向。如果看到這些幾何,則由翻譯器內部存儲在內部關聯數組$ odd_pin中。

對于某些幾何,引腳1和2的X坐標不相等,它們的Y坐標也不相等,例如如圖1所示的連接器。在這種情況下,翻譯器不能輕易地計算幾何方向,并且假定方向代碼為10。我們還可以查看這個幾何體并找到它的確切方向。


圖1 - Pin坐標不相等

如果是過時的幾何體錯誤地使用(可能發生),不存儲在任何公司數據庫中,首先查看它,然后在翻譯器中硬編碼其方向代碼。

在上面的前兩種情況中,方向代碼假定為10因為大多數幾何都是這樣放置的。所以這是最安全的賭注,但仍然是賭注。由于這個原因和其他原因,翻譯可能并不完全適用于少數組件。但正如5.0節將討論的那樣,很容易糾正這些微小的不匹配。有些無關緊要,甚至可以單獨留下。

此時,我們的翻譯器將簡單地處理$ sm_array,$ nsm_array和$ odd_pin內部關聯數組,以創建$ bs_orientation內部關聯數組。我們還(可選)將此結果寫入bs_orientation.file文件。首先,打開此文件進行如下編寫:

處理$ odd_pin內部關聯數組的Perl代碼概述很簡單:

處理$ sm_array內部關聯數組的Perl代碼概述如下:

進一步處理$ sm_array中的每個“普通”BoardStation幾何體。首先,找到引腳1,2和3的幾何中心和位置(2引腳幾何結構沒有引腳3)。 Perl代碼的概述是:

接下來,檢查引腳1和2的X坐標在這個幾何上是否相等(情況2)上面討論過)。同時檢查這兩個引腳的Y坐標。

現在檢查引腳1和2是否具有相同的X坐標。如果是,請執行以下操作。首先,確定引腳1是否位于幾何結構的底部,引腳1和引腳2是否彼此相對,包括2引腳幾何結構(例如垂直放置的電容器電阻器):

其次,確定引腳1是否位于幾何結構的頂部,引腳1和2是否彼此相對,包括2引腳幾何形狀:

最后,確定引腳1是否位于幾何體的左側或右側(請記住引腳是逆時針計數的):

單擊此處查看代碼示例

現在檢查引腳1和2是否具有相同的Y坐標。如果是,請采取適當的措施。到目前為止已經提供了大量的Perl代碼示例,因此我們在此不再重復。相反,我們將簡要討論這個過程。首先,確定引腳1是否位于幾何結構的左側,引腳1和2是否彼此面對。如果是,則方向代碼可以是1或2或3.

其次,確定引腳1是否位于幾何體的右側,引腳1和2是否彼此面對。如果是,則方向代碼可以是4或5或6.第三,確定引腳1的X坐標是否位于幾何體的頂部。如果是,則方向代碼可以是7或8或9.第四,確定引腳1是否在底部。如果是,則方向代碼可以是10或11或12.

$ nsm_array內部關聯數組的處理方式應與$ sm_array相同。

此時,可以讀取bs_orientation.file文件(如果已創建)以確保計算的BoardStation幾何方向正確。如果沒有,翻譯人員需要進行微調。

4.0生成Allegro的place_txt.txt展示位置文件

BoardStation的展示位置文件(也是稱為組件文件)稱為comps.comps _ ##,每個條目的格式都非常簡單:

Ref_des是參考標號用于PCB原理圖。 Symbol_name是原理圖符號的名稱。 Board_location是引腳1在10納米中的位置,它必須轉換為Allegro放置文件中表面貼裝元件的幾何中心,如前所述。此外,10納米單位必須轉換成Allegro的密耳。

Board_side表示該組件放置在電路板的哪一側(1:頂部,2:底部)。旋轉指示在放置期間該組件是否已旋轉(90度或180度或270度)。對于BoardStation和Allegro,旋轉必須始終為逆時針。

Allegro的place_txt.txt放置文件具有以下格式:

每列的含義,從U115的第2行開始,在下面的表4中說明。


表4 ?? Allegro的展示位置文件的含義

現在,我們的翻譯人員可以將comps.comps _ ##轉換為place_txt.txt。執行此操作的Perl代碼的一部分在下面給出并且不言自明:

單擊此處查看代碼示例

如果轉換程序運行時沒有任何錯誤,則Allegro放置文件place_txt .txt已創建。現在您可以嘗試將此文件讀入Allegro以檢查其格式。如果Allegro標記任何格式錯誤,則需要修改我們的翻譯器。

5.0最終評論

BoardStation和Allegro是兩個非常不同的工具,對于某些特殊情況,他們的展示位置文件之間沒有直接的翻譯。上面的3.0節列出了其中一些。因此,對于少數組件,轉換可能不準確。

例如,如果組件的旋轉不是100%正確,那么它可以在Allegro中手動旋轉(例如微處理器)或單獨使用(如電容器)。一些組件也可能與其鄰居部分重疊。同樣,這可以在Allegro中手動糾正。平均而言,需要一個小時或更短的時間來手動檢查Allegro放置文件是否存在這些問題。

6.0參考文獻

1。 Larry Wall,Tom Christiansen,Jon Orwant,“Programming Perl”,第3版,O'Reilly& Associates,Inc.,2000
2。 Luke L. Chang,“編寫自己的PCB設計規則檢查器”,EEdesign,2003年9月

Luke L. Chang是英特爾存儲元件部門的高級驗證負責人(Hudson) , 嘛)。在此之前,他曾在多家高科技公司擔任過工程和管理職位,涉及硬件設計/驗證和電子設計自動化領域。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • pcb
    pcb
    +關注

    關注

    4324

    文章

    23135

    瀏覽量

    398876
  • 數據庫
    +關注

    關注

    7

    文章

    3839

    瀏覽量

    64543
  • 華強pcb線路板打樣

    關注

    5

    文章

    14629

    瀏覽量

    43108
收藏 人收藏

    評論

    相關推薦

    怎樣把信號采集的數據添加到數據庫中,數據庫的表該怎么設計?

    我把數據采集的數據暫時存放到了txt文件中,但是要求存放到數據庫中,應該怎樣存放這些數據呢?我每秒采集1M個信號,存放到了1000個文件中,
    發表于 08-17 10:51

    labview和access數據庫數據類型轉換問題

    各位大神,小弟遇到一難題求解答我用labview往access數據庫中寫入簇或者數組數據,access數據庫中存儲的數據類型是OLE長二進制,當從
    發表于 07-23 09:35

    labview怎樣實現數據庫遠程控制

    使用LABVIEW編寫的登陸界面使用LabSQL生成數據庫,將程序生成EXE后不能打開數據庫,LabSQL生成的數據庫只在本機有效。請問怎樣才能在客戶端也能調用
    發表于 08-06 11:08

    如何創建自己數據庫

    創建自己數據庫
    發表于 02-03 07:02

    拔掉數據庫的電源會怎樣

    拔掉數據庫的電源會怎樣?假設我們拔掉數據庫的電源會怎樣?在日前舉行的阿里云“企業級”云災備解決方案發布會上,阿里云智能技術戰略總監陳緒就來了一場現場“斷電”演示,拔掉了
    發表于 12-29 07:09

    大型數據庫實驗指導

    大型數據庫實驗指導  一、實驗目的??1、培養學生動手編程解決實際問題的能力。??2、深入理解關系數據庫實現的基本原理。??3、鍛煉學生撰寫科技
    發表于 09-03 22:51 ?1567次閱讀

    關系數據庫是什么?

    關系數據庫是什么? 數字時代伊始,數據庫就一直是商業計算的核心組成部分。事實上,關系數據庫誕生于1970年。那一年,IBM的研究員E.F. Codd撰寫了一篇論文,概述了主
    發表于 07-31 12:26 ?2225次閱讀

    數據庫教程之如何進行數據庫設計

    本文檔的主要內容詳細介紹的是數據庫教程之如何進行數據庫設計內容包括了:1 數據庫設計概述 ,2 數據庫需求分析 ,3 數據庫結構設計 ,4
    發表于 10-19 10:41 ?21次下載
    <b class='flag-5'>數據庫</b>教程之如何進行<b class='flag-5'>數據庫</b>設計

    數據庫課件教程之數據庫的啟動與關閉講解資料說明

    本文檔的詳細介紹的是數據庫課件教程之數據庫的啟動與關閉講解資料說明主要內容包括了:1.數據庫的啟動,2.數據庫的關閉,3.數據庫的狀態
    發表于 01-24 11:34 ?7次下載
    <b class='flag-5'>數據庫</b>課件教程之<b class='flag-5'>數據庫</b>的啟動與關閉講解資料說明

    PCB工具之間怎樣更好的數據交換

    作為將工具集成到PCB設計陣容中的一部分,Cadence Design Systems正在開發一種能夠實現數據庫轉換器數據庫轉換器
    的頭像 發表于 08-14 23:30 ?1182次閱讀

    數據庫和自建數據庫的區別及應用

    數據庫是指優化和部署在云端的數據庫,阿里云和騰訊云都提供云數據庫,云數據庫自己搭建的數據庫
    的頭像 發表于 11-20 16:26 ?4667次閱讀
    云<b class='flag-5'>數據庫</b>和自建<b class='flag-5'>數據庫</b>的區別及應用

    基于VB的轉換Access數據庫為Excel文件實驗

    基于VB的轉換Access數據庫為Excel文件實驗(電源技術及應用各章總結)-基于VB的轉換Access數據庫為Excel文件實驗,適合感興趣的學習者學習,可以提高
    發表于 09-16 14:28 ?20次下載
    基于VB的<b class='flag-5'>轉換</b>Access<b class='flag-5'>數據庫</b>為Excel文件實驗

    python讀取數據庫數據 python查詢數據庫 python數據庫連接

    python讀取數據庫數據 python查詢數據庫 python數據庫連接 Python是一門高級編程語言,廣泛應用于各種領域。其中,Python在
    的頭像 發表于 08-28 17:09 ?1861次閱讀

    ODX診斷數據庫轉換工具 - DDC

    問卷直接轉換為標準的ODX(2.2.0)數據庫,顯著提高工作效率。還可將多個不同控制的ODX文件打包成整車級別的PDX文件,用于管控車型診斷數據庫的應用。
    的頭像 發表于 12-31 11:22 ?113次閱讀
    ODX診斷<b class='flag-5'>數據庫</b><b class='flag-5'>轉換</b>工具 - DDC

    數據庫是哪種數據庫類型?

    數據庫是一種部署在虛擬計算環境中的數據庫,它融合了云計算的彈性和可擴展性,為用戶提供高效、靈活的數據庫服務。云數據庫主要分為兩大類:關系型數據庫
    的頭像 發表于 01-07 10:22 ?102次閱讀
    主站蜘蛛池模板: 亚洲大尺度视频| 天天摸天天做| 黄色污网站在线观看| 色偷偷综合网| 全国最大色成免费网站| 欧美视频色| 久久精品高清| 岛国三级在线看| 久久综合九色婷婷97| 四虎免费永久观看| 一级三级黄色片| 亚洲29p| 四虎永久免费网站免费观看 | 狠狠丁香激情久久综合| 日本黄色站| 你懂的国产| 国产精品三级| 天天成人综合网| 边摸边吃奶边做视频叫床韩剧| ggg成人| 欧美性猛交xxxx乱大交| 91综合在线视频| 丰满年轻岳欲乱中文字幕| 香蕉婷婷| 久久久免费网站| 91精品久久国产青草| 国产jzjzjz免费大全视频| 1000部啪啪未满十八勿入| 天天做天天操| 2021国产精品成人免费视频| 日本免费在线一区| 性欧美护士18xxxxhd| 免费爱爱视频网站| 嫩草影院在线入口| 国产成年网站v片在线观看| 天天摸天天碰成人免费视频| 国产福利免费观看| 蝌蚪自拍网二区| 日本成人免费| www在线视频在线播放| 又粗又硬又大久久久 |