2021年12月11日 星期六

PCB傳輸線S參數萃取並繪圖

 匯入brd檔,切割,設ports,模擬並繪圖。

import matplotlib.pyplot as plt
from pyaedt import Desktop, Hfss3dLayout, examples, Edb

with Desktop("2021.2", non_graphical=True):
edb = Edb()
edb.import_cadence_file("d:/demo/Galileo_G87173_204.brd")
edb.core_hfss.create_coax_port_on_component(['U1B5', 'U2A5'], ['M_DQ<0>', 'M_DQ<1>'])

edb.core_components.set_solder_ball('U1B5')
edb.core_components.set_solder_ball('U2A5')

edb.create_cutout(['M_DQ<0>', 'M_DQ<1>'],
['GND'],
output_aedb_path='d:/demo/ddr.aedb',
open_cutout_at_end=False)
edb.close_edb()

h3d = Hfss3dLayout('d:/demo/ddr.aedb/edb.def')
setup1 = h3d.create_setup('setup1')
setup1.props['Frequency'] = '1GHz'
h3d.create_frequency_sweep('setup1', 'GHz', 0, 1, 11)
setup1.update()

h3d.analyze_all()
h3d.save_project()

for i in ["dB(S(4,1))", "dB(S(3,2))"]:
f, m = [], []
x = h3d.post.get_report_data(i)

for freq in x.solutions_data_mag[i]:
mag = x.solutions_data_mag[i][freq]
f.append(freq[0])
m.append(-mag)

plt.plot(f, m)

plt.grid()
plt.xlabel('Freq')
plt.ylabel('mag(dB)')
plt.show()


沒有留言:

張貼留言

EDB建立PinGroup

為U2A5建立GND PinGroup,儲存之後匯入EDB from pyaedt import Edb edb = Edb(edbpath= r"D:\demo\Galileo_G87173_20454.aedb" , edbversion= '20...