Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create circuit schematics #4458

Merged
merged 48 commits into from
Apr 5, 2024
Merged
Show file tree
Hide file tree
Changes from 42 commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
96bb217
create tdr
Mar 7, 2024
cbf170b
refactor example and added methods to generate automatically schematics
Mar 12, 2024
17f434a
Merge branch 'main' into create_circuit_schematics
Mar 26, 2024
dab4ccf
improved schematic generation
Mar 26, 2024
a5e77d9
right now Insertion loss is computed on first frequency point. Someti…
Mar 28, 2024
eb3eff6
Merge branch 'main' into create_circuit_schematics
Apr 3, 2024
046917c
Merge branch 'main' into create_circuit_schematics
Apr 3, 2024
0b6d561
fixed UT
Apr 3, 2024
17db182
fixed example
Apr 3, 2024
87180e2
fixed example
Apr 4, 2024
d9ed959
Update pyaedt/modeler/circuits/object3dcircuit.py
maxcapodi78 Apr 4, 2024
4e639b5
Update pyaedt/modeler/circuits/object3dcircuit.py
maxcapodi78 Apr 4, 2024
7d8e634
Update pyaedt/circuit.py
maxcapodi78 Apr 4, 2024
a3f4f2f
Update pyaedt/circuit.py
maxcapodi78 Apr 4, 2024
69582ab
Update pyaedt/circuit.py
maxcapodi78 Apr 4, 2024
495c048
Update pyaedt/circuit.py
maxcapodi78 Apr 4, 2024
fade639
Update pyaedt/circuit.py
maxcapodi78 Apr 4, 2024
a62366b
Update pyaedt/circuit.py
maxcapodi78 Apr 4, 2024
e2c11fc
Update pyaedt/circuit.py
maxcapodi78 Apr 4, 2024
02e2a40
Update pyaedt/circuit.py
maxcapodi78 Apr 4, 2024
1b0015d
Update pyaedt/circuit.py
maxcapodi78 Apr 4, 2024
981dd98
fixed example
Apr 4, 2024
25f1ffd
Update pyaedt/circuit.py
maxcapodi78 Apr 4, 2024
e0677ac
Update pyaedt/application/AnalysisNexxim.py
maxcapodi78 Apr 4, 2024
94c1cd3
Update pyaedt/application/AnalysisNexxim.py
maxcapodi78 Apr 4, 2024
6e612e9
Update pyaedt/application/AnalysisNexxim.py
maxcapodi78 Apr 4, 2024
0366a27
Update pyaedt/application/AnalysisNexxim.py
maxcapodi78 Apr 4, 2024
03c949b
Update pyaedt/application/AnalysisNexxim.py
maxcapodi78 Apr 4, 2024
10ee9f6
Update pyaedt/application/AnalysisNexxim.py
maxcapodi78 Apr 4, 2024
814f6d6
Update pyaedt/application/AnalysisNexxim.py
maxcapodi78 Apr 4, 2024
a2a4d94
Update pyaedt/application/AnalysisNexxim.py
maxcapodi78 Apr 4, 2024
3e20162
Update pyaedt/application/Analysis3DLayout.py
maxcapodi78 Apr 4, 2024
7ba6c2d
Update pyaedt/application/Analysis3DLayout.py
maxcapodi78 Apr 4, 2024
7f39d74
Update pyaedt/application/Analysis3DLayout.py
maxcapodi78 Apr 4, 2024
1a28678
Update pyaedt/application/Analysis3DLayout.py
maxcapodi78 Apr 4, 2024
1e32ec5
Update pyaedt/application/Analysis3DLayout.py
maxcapodi78 Apr 4, 2024
fbf60fa
Apply suggestions from code review
maxcapodi78 Apr 4, 2024
13599a3
fixed codacy
Apr 4, 2024
e099f67
fixed codacy
Apr 4, 2024
2e7595f
fixed codacy
Apr 4, 2024
c5ae4bd
fixed methods
Apr 4, 2024
ef8fc53
fix codacy
Apr 4, 2024
2b74119
fixed expressions arguments
Apr 4, 2024
07e6cba
fixed unit test
Apr 4, 2024
808db3f
fixed unit test
Apr 4, 2024
adae66d
Merge branch 'main' into create_circuit_schematics
maxcapodi78 Apr 4, 2024
75b7e52
Update pyaedt/application/Analysis3DLayout.py
Samuelopez-ansys Apr 5, 2024
e5f229e
Merge branch 'main' into create_circuit_schematics
Samuelopez-ansys Apr 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5,084 changes: 5,084 additions & 0 deletions _unittest/example_models/T21/SSN_custom.s6p

Large diffs are not rendered by default.

30 changes: 30 additions & 0 deletions _unittest/example_models/T21/pcieg5_32gt.ami
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
|******************************************************************************
| Spec. AMI model generated by SPISim's BPro, Generated on 20170831143940
|
| IP of this model belongs to SPISim or its licensed BPro user.
|*****************************************************************************
(ANSYS_PCIeG5_32GT_RX
(Description "Example PCIeG5 Rx 32GT model")
(Reserved_Parameters
(AMI_Version (Usage Info) (Type String) (Value "6.1") (Description "Supported AMI version"))
(Ignore_Bits (Usage Info) (Type Integer) (Default 500) (Description "Ignore four bits to fill up tapped delay line."))
(Max_Init_Aggressors (Usage Info) (Type Integer) (Default 25) (Description "Number of aggressors is actually unlimited."))
(Init_Returns_Impulse (Usage Info) (Type Boolean) (Default True) (Description "Both impulse and parameters_out returned."))
(Supporting_Files (Usage Info) (Type String) (Table ("PCIeG5_32GT.ens")) (Description "CTLE Performance table"))
(GetWave_Exists (Usage Info) (Type Boolean) (Default True) (Description "GetWave is well and truly provided in the module."))
) | End Reserved_Parameters

|****************************************************************************
| Remove or tamper LICENSE_INFO values will cause simulation being aborted!
|****************************************************************************
(Model_Specific
(LICENSE_INFO (Usage In) (Type String) (Default "LICENSED_ANSYS_AEDT_E168EFCC0268A84087F7B23B510CB41F") (Description "Licensing info."))
| ------------------ MAIN Settings ------------------
(MDL_SUB_MODS (Usage In) (Type String) (Default "CTLE,DFE") (Description "Cascaded stages"))
| ------------------ CTLE Settings ------------------
(MDL_IDX_FILE (Usage In) (Type String) (Default "PCIeG5_32GT.ens") (Description "Params index table"))
(MDL_IDX_VALU (Usage In) (Type String) (Default "-1") (Description "Params table rowID"))
(ADC (Usage In) (Type Integer) (Range -5 -15 -5) (Default -5) (Description "DC Gain in dB"))
|(CTLE_OUPT_FILE (Usage In) (Type String) (Default "C:/Temp/WorkSpace/SPISim/CST/PCIe/32GT/PCIeG5_32GT.csv") (Description "Output generated FD array for checking purpose"))
) | End Model_Specific
) | End SPISim_SPEC_AMI
100 changes: 100 additions & 0 deletions _unittest/example_models/T21/pcieg5_32gt.ibs
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
|***************************************************************************
|
[IBIS Ver] 5.1
[File name] pcieg5_32gt.ibs
[File rev] 1.00
[Date] Jan 1, 2017
[Source] BPro (http://www.spisim.com)
[Copyright] Copyright 2017 ~, SPISim LLC. All right reserved.
|
|***************************************************************************
|
[Component] Spec_Model
[Manufacturer] SPISim LLC
[Package]
| typ min max
R_pkg 0.0 0.0 0.0
L_pkg 0.0 0.0 0.0
C_pkg 0.0 0.0 0.0
|
|***************************************************************************
|
[PIN] signal_name model_name R_pin L_pin C_pin
1p TxP Tx NA NA NA
1n TxN Tx NA NA NA
2p RxP Rx NA NA NA
2n RxN Rx NA NA NA
|
|***************************************************************************
|
[Diff Pin] inv_pin vdiff tdelay_typ tdelay_min tdelay_max
1p 1n 0.1V NA NA NA
2p 2n 0.1V NA NA NA
|
|****************************************************************
|
[Model] Rx
Model_type Input
|
C_comp 0.00p 0.00p 0.00p
Vinh = 0.55
Vinl = 0.45
|
[Temperature_Range] 25 100 0
[Voltage Range] 1.2 1.14 1.26
|
| The IV table below is equivalent to 50 ohms single-ended load
[GND Clamp]
-6.6 -0.132 -0.132 -0.132
0.0 0.0 0.0 0.0
6.6 0.132 0.132 0.132

[Power Clamp]
-6.6 0.132e-9 0.132e-9 0.132e-9
0.0 0.0 0.0 0.0
6.6 -0.132e-9 -0.132e-9 -0.132e-9

[Algorithmic Model]
Executable Windows_VisualStudio_32 pcieg5_32gt_WIN32.dll pcieg5_32gt.ami
Executable Windows_VisualStudio_64 pcieg5_32gt_WIN64.dll pcieg5_32gt.ami
Executable Linux_gcc_64 pcieg5_32gt_LX64.so pcieg5_32gt.ami
[End Algorithmic Model]

|
|***************************************************************************
|
[Model] Tx
Model_type Output
Polarity Non-Inverting
Enable Active-High
|
Vmeas = 0.55
| typ min max
C_comp 0 0 0
[Voltage Range] 1.1 1.0 1.2
[Temperature Range] 60 100 0
|
|***************************************************************************
|
[Pulldown]
-2.500 -5.00000E-02 -5.00000E-02 -5.00000E-02
0.000 +0.00000E+00 +0.00000E+00 +0.00000E+00
2.500 +5.00000E-02 +5.00000E-02 +5.00000E-02
[Pullup]
-2.500 +5.00000E-02 +5.00000E-02 +5.00000E-02
0.000 +0.00000E+00 +0.00000E+00 +0.00000E+00
2.500 -5.00000E-02 -5.00000E-02 -5.00000E-02
|
[Ramp]
dV/dt_r 0.2796/15p 0.2610/23.5p 0.2976/13p
dV/dt_f 0.2796/15p 0.2610/23.5p 0.2976/13p
|
|
[Algorithmic Model]
Executable Windows_VisualStudio_32 pcieg5_32gt_WIN32.dll pcieg5_32gt.ami
Executable Windows_VisualStudio_64 pcieg5_32gt_WIN64.dll pcieg5_32gt.ami
Executable Linux_gcc_64 pcieg5_32gt_LX64.so pcieg5_32gt.ami
[End Algorithmic Model]

|***************************************************************************
[End]
54 changes: 54 additions & 0 deletions _unittest/test_21_Circuit.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
netlist1 = "netlist_small.cir"
netlist2 = "Schematic1.qcv"
touchstone = "SSN_ssn.s6p"
touchstone_custom = "SSN_custom.s6p"
touchstone2 = "Galileo_V3P3S0.ts"
ami_project = "AMI_Example"

Expand Down Expand Up @@ -834,3 +835,56 @@ def test_46_create_vpwl(self):
# time and voltage different length
myres = self.aedtapp.modeler.schematic.create_voltage_pwl(compname="V3", time_list=[0], voltage_list=[0, 1])
assert myres is False

def test_47_automatic_lna(self):
touchstone_file = os.path.join(local_path, "example_models", test_subfolder, touchstone_custom)

status, diff_pairs, comm_pairs = self.aedtapp.create_lna_schematic_from_snp(
touchstone=touchstone_file,
start_frequency=0,
stop_frequency=70,
auto_assign_diff_pairs=True,
separation=".",
pattern=["component", "pin", "net"],
analyze=False,
)
assert status

def test_48_automatic_tdr(self):
touchstone_file = os.path.join(local_path, "example_models", test_subfolder, touchstone_custom)

result, tdr_probe_name = self.aedtapp.create_tdr_schematic_from_snp(
touchstone=touchstone_file,
probe_pins=["A-MII-RXD1_30.SQFP28X28_208.P"],
probe_ref_pins=["A-MII-RXD1_65.SQFP20X20_144.N"],
termination_pins=["A-MII-RXD2_32.SQFP28X28_208.P", "A-MII-RXD2_66.SQFP20X20_144.N"],
differential=True,
design_name="TDR",
rise_time=35,
use_convolution=True,
analyze=False,
)
assert result

def test_49_automatic_ami(self):
touchstone_file = os.path.join(local_path, "example_models", test_subfolder, touchstone_custom)
ami_file = os.path.join(local_path, "example_models", test_subfolder, "pcieg5_32gt.ibs")
result, eye_curve_tx, eye_curve_rx = self.aedtapp.create_ami_schematic_from_snp(
touchstone=touchstone_file,
ibis_ami=ami_file,
component_name="Spec_Model",
tx_buffer_name="1p",
rx_buffer_name="2p",
use_ibis_buffer=False,
differential=True,
tx_pins=["A-MII-RXD1_30.SQFP28X28_208.P"],
tx_refs=["A-MII-RXD1_65.SQFP20X20_144.N"],
rx_pins=["A-MII-RXD2_32.SQFP28X28_208.P"],
rx_refs=["A-MII-RXD2_66.SQFP20X20_144.N"],
bit_pattern="random_bit_count=2.5e3 random_seed=1",
unit_interval="31.25ps",
use_convolution=True,
analyze=False,
design_name="AMI",
)
assert result
Loading
Loading