国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

把Gerber變成電磁波:推薦一款基于Gerber的openEMS仿真工具 - gerber2ems

KiCad ? 來源:KiCad ? 作者:KiCad ? 2025-08-03 11:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

畫完PCB,打板之前,你是不是也心里打鼓:
“這根差分線到底90 Ω還是88 Ω?Stub 會不會把 5 GHz 信號打回原形?”
跑去借 50 GHz 網絡分析儀?貴到哭。
用商業 SI 軟件?授權費能再買一輛車。
別急,今天給你安利一個寶藏項目:gerber2ems,結合開源的 openEMS solver, 讓你用家里電腦能跑 3D 全波 FDTD,直接看 S 參數、阻抗曲線,還帶動畫的那種!

wKgZPGiK4g6Ad0VUAAb28sld47w973.png

項目背景Antmicro 這幫老哥日常給 FPGARISC-V 板子做高速接口,信號完整性必須過關。可他們偏偏鐘愛開源:KiCad 畫板、openEMS solver。于是干脆寫了 gerber2ems:把“Gerber + 鉆孔+ 疊層”一鍵翻譯成 openEMS 能吃的 3D 模型,跑完還能跟 VNA 實測對波。項目指路
GitHub地址:https://github.com/antmicro/gerber2emsLicense:Apache 2.0

關于 openEMS 的使用,可以參考:

OpenEMS:免費開源的電磁場求解器

gerber2ems 是一個 Python 腳本,旨在使用開源工具簡化信號完整性(SI) 仿真流程。它接收 PCB 生產文件(Gerber鉆孔文件疊層信息)作為輸入,并使用openEMS來仿真走線的信號完整性性能。openEMS 是一款免費開源的電磁場求解器,采用FDTD(時域有限差分) 方法:

https://github.com/thliebig/openEMS-Project/

安裝

安裝 OpenEMS

安裝以下軟件包 (在 Debian/Ubuntu 上):

sudo aptupdatesudo apt install build-essential cmake git libhdf5-dev libvtk9-dev libboost-all-dev libcgal-dev libtinyxml-dev qtbase5-dev libvtk9-qt-dev cython3 pippip install--break-system-packages numpy scipy matplotlib h5py setuptools# 推薦使用此命令,因為 Debian 安裝的 numpy 版本較舊,常導致版本沖突

克隆倉庫、編譯并安裝openEMS。

建議使用bb991bb3這次提交 (commit),這是與 gerber2ems 一同測試過的最新版本。

gitclonehttps://github.com/thliebig/openEMS-Project.gitpushd./openEMS-Projectgit checkout bb991bb3git submodule update --init --recursive./update_openEMS.sh ~/opt/openEMS --pythonpopd

安裝 gerber2ems 腳本

1. 安裝依賴:

sudoapt install gerbv python3.11pipxpipxensurepath

2. 克隆并安裝gerber2ems:

gitclonehttps://github.com/antmicro/gerber2ems.gitpushd./gerber2emspipx install --system-site-packages .popd

注意:如果你想使用ems2paraview命令,還需運行sudo apt install paraview python3-paraview

你可以使用內置的示例來測試gerber2ems。這些示例是我們的開源硬件信號完整性測試板(https://openhardware.antmicro.com/boards/si-simulation-test-board/)的切片,使用KiCad SI wrapper生成。部分選定的示例在專用的vna.csv文件中包含了VNA(矢量網絡分析儀) 的測量數據,這使我們能夠將 openEMS 的仿真結果與真實世界的測量數據進行比較。

cd./gerber2ems/examples/stub_shortgerber2ems -a

使用方法

如需快速查閱,請使用gerber2ems --help

要仿真一條走線,請遵循以下步驟:

  1. 準備輸入文件并將它們放入fab/文件夾 (詳見PCB 輸入文件準備部分)。

  2. 準備配置文件simulation.json(詳見配置準備部分)。

  3. 運行gerber2ems -a(過程詳見幾何結構創建部分)。

  4. ems/results目錄中查看結果 (詳見結果部分)。

  5. 運行gerber2ems -a --export-field并使用Paraview查看電場動畫 (詳見Paraview部分)。

結果

下面展示了stub_short示例的仿真輸出。該軟件返回以下幾類輸出:

S 參數和阻抗數據

仿真過程中收集的阻抗和 S 參數數據,以帶表頭的 CSV 格式存儲。

S 參數圖表

每次激勵期間測量的各 S 參數的圖表。

wKgZPGiK4g-AOl1WAADJYYx_lig675.png

史密斯圓圖

每次激勵的 S-11 參數圖。

wKgZPGiK4g-ASvM9AAHfOtg6Y1o024.png

阻抗圖表

每個激勵端口的阻抗隨頻率變化的圖表。

wKgZPGiK4g-ATg-WAADVw7KEQ6E214.png

stub_short示例包含一個vna.csv文件,可用于驗證仿真結果。

wKgZPGiK4g-Abql7AADVPcWCKpU716.png

工作原理

項目準備

仿真整個 PCB 對資源消耗極大,因此,盡可能分離出一個小尺寸的感興趣區域:不需要的走線、鋪銅等都應移除。如果整個層都是多余的,你可以在后續步驟中移除它們。

應在坐標文件中使用虛擬元器件標記感興趣的端口。其標號應以 "SP" 開頭,后跟端口號。

鉆孔文件的原點應置于左下角。

在現實中被端接且會存在于仿真中的每條走線或鋪銅,都應使用仿真端口進行端接或連接到地。

目前,電容不參與仿真。對于高頻仿真,可以用一條走線將其短路來近似處理。

PCB 輸入文件準備

腳本需要多個輸入文件來創建幾何結構。這些文件都應位于 "fab" 文件夾中,具體如下:

  • Gerber 文件- 每個需要仿真的銅層都應有一個對應的 Gerber 文件,命名格式如下:"<可選文本>-<來自疊層文件的名稱>.gbr"

  • 疊層文件- 一個描述 PCB 疊層的文件,名為stackup.json。格式示例:

{ "layers":[   {     "name":"F.Cu",     "type":"copper",     "color":null,     "thickness":0.035,     "material":null,     "epsilon":null,     "lossTangent":null   },   {     "name":"dielectric 1",     "type":"core",     "color":null,     "thickness":0.2,     "material":"FR4",     "epsilon":4.5,     "lossTangent":0.02   } ], "format_version":"1.0"}
  • 鉆孔文件- Excellon 格式的帶電鍍通孔的鉆孔文件。文件名應以"-PTH.drl"結尾。

  • 坐標文件- 描述端口位置的文件。文件名應以"-pos.csv"結尾。

    • 坐標應相對于左下角給出。

    • 端口的區域根據simulation.json文件中的Width(寬度) 和Length(長度) 值,使用下表中的公式計算:

旋轉 [°] X 范圍 Y 范圍 波傳播方向
0 (PosX?Width/2,PosX+Width/2) (PosY,PosY+Length) 沿 Y 軸
90 (PosX?Length,PosX) (PosY?Width/2,PosY+Width/2) 與 X 軸相反
180 (PosX?Width/2,PosX+Width/2) (PosY?Length,PosY) 與 Y 軸相反
270 (PosX,PosX+Length) (PosY?Width/2,PosY+Width/2) 沿 X 軸
  • 文件示例:

# Ref   Val       Package        PosX    PosY    Rot SideSP1   Simulation_Port Simulation_Port   3.0000 11.7500180.0000 top

配置準備

simulation.json文件用于配置整個仿真過程。你可以在example_gerbers文件夾中找到示例文件。此文件中的所有尺寸單位均為微米 (micrometers)。該配置文件包含三個部分:

雜項

  • format_version- 指定配置文件的格式。編寫新配置時,應使用最新的支持版本 (可在constants.py文件中查看)。

  • frequency-start指定了感興趣的最低頻率,stop指定了最高頻率 (單位:Hz)。

  • max_steps- 仿真的最大步數,達到此步數后仿真將無條件停止。

  • pixel_size- 像素大小,單位為微米。用于 Gerber 轉換 (默認值:5) (由于 libcairo 的限制,對于較大的板子需要增加此值,但應盡量保持其盡可能小)。

  • via/plating_thickness- 過孔電鍍層厚度 (單位:微米)。

  • via/filling_epsilon- 過孔填充材料的介電常數。如果未填充,則應為 1。

網格

  • inter_layers- 相鄰 PCB 層之間 Z 軸上的網格線數量 (默認值:4)。

  • optimal- 基本網格間距 (單位:微米) (用于金屬邊緣的單元) (默認值:50)。

  • diagonal- 網格間距 (單位:微米) (用于有對角線路徑的區域) (默認值:50)。

  • perpendicular- 網格間距 (單位:微米) (用于路徑與網格垂直的區域) (默認值:200)。

  • max- 最大網格間距 (單位:微米) (用于板區之外) (默認值:500)。

  • cell_ratio/xy- 最佳相鄰單元尺寸比 (X/Y 軸) (默認值:1.2)。

  • cell_ratio/z- 最佳相鄰單元尺寸比 (Z 軸) (默認值:1.5)。

  • margin/xy- X/Y 軸的邊距大小 (單位:微米) (網格超出 PCB 的距離) (默認值:1000)。

  • margin/z- Z 軸的邊距大小 (單位:微米) (默認值:1000)。

  • margin/from_trace- 根據感興趣網絡的邊界框限制仿真空間 (默認值:True) (如果為 False,則使用板的邊界框)。

網格間距選項應遵循:

optimal<=diagonal<=perpendicular<=max<=λmin/10

端口

ports是一個端口列表。每個端口都有以下參數:

  • width- 端口寬度 (單位:微米)。

  • length- 端口長度 (端口目前由微帶線片段組成,其長度應至少為網格單元尺寸的 8 倍) (單位:微米)。

  • impedance- 端口的端接阻抗 (驅動器接收器的阻抗) (單位:歐姆)。

  • layer- 端口所在的銅層編號 (從頂部開始計數)。

  • plane- 微帶線參考平面所在的銅層編號 (從頂部開始計數)。

  • excite- 仿真器是否應將此端口用作輸入端口 (對于多個激勵端口,它們將在單獨的仿真中被激勵)。

差分對/走線

differential_pairs/traces是被仿真信號的列表。每個信號可以有以下字段:

  • start_p,stop_p,start_n,stop_n- 用于信號的端口號 (差分對)。

  • start,stop- 用于信號的端口號 (單端走線)。

  • name- 可選名稱,用于識別信號。

  • nets- 在生成網格時要包含的網絡列表 (例如["/CSI_A_CLK_N","/CSI_A_CLK_P"])。如果未指定,將使用netinfo.json文件中的數據。如果該文件也不存在,則在生成網格時會考慮所有網絡 (GND除外)。

幾何結構創建

這是一個通過-g標志啟動的自動步驟。該腳本會定位創建幾何結構所需的所有文件 (Gerber、鉆孔文件、pnp 文件、疊層文件、仿真配置文件)。然后,它使用gerbv將 Gerber 文件轉換為 PNG。接著,這些 PNG 被處理成三角形并輸入到幾何結構中。此過程還會添加過孔和端口的幾何形狀。所有物體都根據疊層文件放置在正確的 Z 軸高度上。

你可以使用AppCSXCAD(在安裝 openEMS 時已安裝) 查看生成的幾何結構,它被保存在ems/geometry/geometry.xml文件中。

仿真

這是一個通過-s標志啟動的自動步驟。該腳本會加載幾何結構和配置文件。它將所有信息輸入引擎并開始仿真,對每個激勵端口進行迭代。

在這一步,用戶應驗證指定的時間步數是否足夠。引擎建議它至少是脈沖長度的 3 倍:

```激勵信號長度為: 3211 時間步 (3.18343e-10s)最大時間步數: 10000 ( --> 3.11429 * 激勵信號長度)```

仿真器將幾何結構轉換為 voxels,并開始為網格中的每個邊求解麥克斯韋方程組。它會執行一定數量的時間步 (在配置中指定的最大數量),然后退出。對于每個時間步,來自銅層之間平面的電場數據被保存到ems/simulation文件夾的文件中。端口電壓和電流數據也會被保存。

在仿真過程中,其中一個端口使用高斯脈沖(具有寬帶頻率內容) 進行激勵。這個脈沖穿過網絡并從其他端口輸出 (也可能輻射到板外)。

你可以通過查看引擎輸出來監控仿真過程:

[@ 20s] 時間步: 4620 || 速度: 294.4 MC/s (3.372e-03 s/TS) || 能量: ~4.16e-16 (- 7.15dB)

通過這種方式,你可以看到:

  • 當前處于哪個時間步

  • 仿真器每秒處理多少網格體素

  • 系統中剩余多少能量

在仿真過程中,能量應隨著其通過端口離開而下降 (激勵脈沖結束后),但由于不精確性和輻射能量,它不會降到 0。

仿真結束后,用戶可以使用Paraview驗證數據 (在下文的一個章節中描述)。

后處理

這是一個通過-p標志啟動的自動步驟。該腳本會加載每個激勵端口的仿真數據。然后,它進行FFT(快速傅里葉變換) 以獲取頻域數據。接著,它將入射波和反射波數據轉換為阻抗和 S 參數。這些數據以 CSV 格式保存在ems/results/S-parameters文件夾中。這些數據也會被自動繪制成圖表,圖表保存在ems/results中。

Paraview

要在 Paraview 中查看仿真數據,請遵循以下步驟:

  1. 運行gerber2ems -a --export-field

  2. 運行ems2paraview

是一個仿真的端口號,在simulation.json中定義,要列出所有可用端口,請使用:ems2paraview -l

dump locations可以省略 ,或者你可以從以下列表中選擇一個或多個關鍵字:

  • outer- 在板表面上方 100 微米處轉儲場

  • cu-outer- 在外部銅層的 Z 坐標位置轉儲場

  • cu-inner- 在內部銅層的 Z 坐標位置轉儲場

  • substrate- 在每個介電層的中間轉儲場

--oversampling - 可以添加此項以增加導出場的頻率 (通常 OpenEMS 每幾百個時間步轉儲一次 Field) (默認值為 4)。

警告

Field 導出文件可能輕易占用數百 GB 的存儲空間。

動畫

要生成動畫,按以下步驟操作:

  1. 生成一個 PCB 的 blend 模型 (參見picknblend:https://antmicro.github.io/picknblend/quickstart.html)

  2. 使用--export-field標志并增加過采樣率 (--oversampling 16) 運行gerber2ems

  3. 將生成的*.vtr文件轉換為灰度 png 圖片 (運行ems2png)

  4. blender中打開 PCB 的 blend 文件,并附加EMS_Plane(File>>Append..>>EMS_Plane.blend/Object/EMS_Plane)

  5. 設置平面尺寸 (它應與切片大小大致相同)

  6. 進入Shading(著色) 工作區

  7. 在左側的每個紋理節點中,點擊文件夾圖標并選擇第三步生成的編號最小的 png (例如,第一條走線使用simulation_images/e_field_0_0000,第二條使用simulation_images/e_field_1_0000)。

  8. 如果動畫只需要顯示一條走線,用一個設置為黑色的 RGB 節點替換掉另一個紋理節點。

  9. 在紋理節點上,將源類型從Single Image(單個圖像) 更改為Image Sequence(圖像序列),并用相應走線生成的圖像數量更新Frames(幀數) 字段。

  10. 將視圖模式設置為rendered(渲染),并將EMS_Plane定位在 PCB 紋理上相應走線的正上方 (你可能需要切換到一個場較強且覆蓋大部分走線的幀)。

  11. 選擇EMS_Plane并在圖像序列的第一幀和最后一幀應用任意類型的關鍵幀。

  12. blendcfg.yaml中添加一個新的預設:

ems_animation:CAMERAS:  PHOTO1: truePOSITIONS:  TOP: trueRENDERER:  FPS: 25SCENE:  RENDERED_OBJECT: Object/EMS_PlaneOUTPUTS:  - ANIMATION:
13. 運行pcbooth -b .blend -c ems_animation

提示

可以考慮創建一個新的 blend 文件,而不是直接使用picknblend的輸出。在這個新文件中,將picknblend的輸出作為鏈接的 blender 模型添加進來。這將允許你重復使用基礎的 blender 模型來展示不同的走線仿真,并能防止gerber2blend/picknblend意外刷新模型。

結束語

雖然gerber2ems目前對復雜電源網絡仿真支持有限,且大板子仍需高性能硬件支持,但它無疑為硬件開發者打開了信號仿真民主化的大門。下次做SI驗證時,不妨讓它幫你省下幾千刀軟件費!
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Gerber
    +關注

    關注

    3

    文章

    151

    瀏覽量

    34671
  • 電磁波
    +關注

    關注

    21

    文章

    1503

    瀏覽量

    55705
  • 仿真工具
    +關注

    關注

    0

    文章

    38

    瀏覽量

    11328
  • KiCAD
    +關注

    關注

    5

    文章

    321

    瀏覽量

    10394
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    #硬聲創作季 Gerber文件的輸出

    altiumEDA工具Gerber
    Mr_haohao
    發布于 :2022年09月07日 21:04:43

    Allegro 轉Gerber 注意事項Gerber RS274D( 以Gerber6x00 為主)

    Gerber6x00為主)Gerber6x00資料輸出時需多附加個鏡頭敘述檔art_aper.txt?? Gerber6x00產生底片檔1. 執行Manufacture>Art
    發表于 06-14 16:06

    怎么做GERBER文件?GERBER文件包含哪些內容?

    `以前我都是直接PCB文件發給大家,現在想請教各位大:怎么做GERBER文件?GERBER文件包含哪些內容?望回答,不勝感謝!`
    發表于 06-28 23:11

    怎么做GERBER文件?GERBER文件包含哪些內容?

    以前我都是直接PCB文件發給廠家,現在想請教各位大大:怎么做GERBER文件?GERBER文件包含哪些內容?望回答,不勝感謝!
    發表于 06-28 23:21

    gerber

    請求幫助:我手里上只有PCB gerber文件,但我在制作程序時須要在PCB板上找相對應的零件位置,如果PCB很大且零件非常多,那我用眼睛目視去找的話要花很長的時間去找,有沒有什么辦法或軟件
    發表于 06-11 19:41

    Protel 99 SE轉gerber文件步驟

    `、 轉Gerber Files:1、 先打開PCB圖檔,最好先檢查遍PCB圖檔是否有問題,確認沒問題后放孔徑標記列表;工具欄 :Place→String(快捷方式:P+S)(圖1
    發表于 08-05 19:12

    ad09, gerber這個如何使用?

    AD09版本的,gerber導入到軟件,當生成PCB的時候,卻變成了這樣,如圖1,怎么都弄不出全圖,懷疑是在gerber模式下,原點設置的問題,請問,怎么修改
    發表于 01-03 16:13

    請問有gerber文件轉pcb工具嗎?

    gerber文件轉pcb工具
    發表于 03-21 06:34

    AD輸出Gerber提示Gerber failed to match all shapes的解決

    今天有網友問我 AD輸出Gerber提示Gerber failed to match all shapes怎么解決這里給大家解決的辦法,主要是D碼格式的問題1、在輸出Gerber的界面找到D碼格式
    發表于 03-26 07:35

    詳解Altium Designer生成Gerber文件

    Gerber格式 是PCB行業圖像轉換的標準格式。Gerber是可以用于驅動光繪機的文件文件,可以PCB的布線數據轉化為光繪機生產。Gerbe
    發表于 07-22 08:15

    Allegro轉Gerber注意事項

    Allegro轉Gerber注意事項Allegro 目前轉Gerber格式有Gerber RS274D(包含Gerber4x00,Gerber
    發表于 06-14 16:03 ?0次下載

    gerber文件是什么?gerber文件有哪些?

    Gerber格式最初是由Gerber系統公司開發的,現由Ucamco公司所有,其前身Barco公司收購了Gerber系統公司。Ucamco不斷的更新gerber規格說明書的版本。當下的
    發表于 11-13 08:53 ?8.9w次閱讀
    <b class='flag-5'>gerber</b>文件是什么?<b class='flag-5'>gerber</b>文件有哪些?

    pcb如何生成gerber文件

    Gerber文件是一款計算機軟件,是線路板行業軟件描述線路板(線路層、阻焊層、字符層等)圖像及鉆、銑數據的文檔格式集合,是線路板行業圖像轉換的標準格式。本文主要詳細介紹pcb如何生成gerber文件,以下是具體的步驟教程。
    發表于 05-30 09:48 ?2.4w次閱讀
    pcb如何生成<b class='flag-5'>gerber</b>文件

    HMC754 Gerber Files - Option 2

    HMC754 Gerber Files - Option 2
    發表于 02-19 10:20 ?0次下載
    HMC754 <b class='flag-5'>Gerber</b> Files - Option <b class='flag-5'>2</b>

    Gerber X2 是什么?

    “ ?Gerber X2 已經發布了 10 余年了,但仍有板廠不支持 X2。今天就來講Gerber X
    的頭像 發表于 12-24 11:15 ?2671次閱讀
    <b class='flag-5'>Gerber</b> X<b class='flag-5'>2</b> 是什么?