Example #1
0
    physical.PhysicalInductor("0807SQ-17NGL", circuit.Value(17.0e-09, tolerance=2), R_S=0.009, Q=100, SRF=4.0e9),
    physical.PhysicalInductor("0807SQ-22NGL", circuit.Value(22.0e-09, tolerance=2), R_S=0.010, Q=100, SRF=3.5e9),

    physical.PhysicalInductor("0908SQ-17NGL", circuit.Value(16.6e-09, tolerance=2), R_S=0.008, Q=130, SRF=3.4e9),
    physical.PhysicalInductor("0908SQ-25NGL", circuit.Value(25.0e-09, tolerance=2), R_S=0.010, Q=130, SRF=2.5e9),
    physical.PhysicalInductor("0908SQ-28NGL", circuit.Value(27.3e-09, tolerance=2), R_S=0.010, Q=130, SRF=3.2e9),
]

coilcraft = coilcraft_0603hp + coilcraft_sq

murata = [
    physical.CapacitorModel(circuit.Value(18e-12, tolerance="1"), name="GRM1885C1H180FA01D"),
    physical.CapacitorModel(circuit.Value(20e-12, tolerance="1"), name="GRM1885C1H200FA01D")
]

library_components = physical.map_library_components(netlist_realisation, inductor_library=coilcraft, capacitor_library=murata)
physical.print_library_map(netlist_realisation, library_components)

physical.substitute_library_components(netlist_realisation, library_components)

capacitors = [ ("C%i" % i) for i in range(1, 7) ]
inductors = [ ("L%i" % i) for i in range(1, 8) ]

for c in capacitors:
    # Use on purpose a more leaky capacitor, so the difference shows up in the graphs :)
    physical.model_capacitor(netlist_realisation, c, R_L = "10 k", R_ESR = "0.1", L_ESL = "1 nH")

# TODO: look at the trick from the qucs test cases to wrap the simulation data into multi-dimensional arrays?

def acceptable_circuit(sim):
    for (idx, freq) in enumerate(sim.data["frequency"]):
Example #2
0
config = ConfigParser.SafeConfigParser()
config.read('pyqucs.cfg')

# TODO: automatically generate the LowPassFilter from LowPassFilterOriginal :)
base_file_original = "LowPassFilterOriginal"

schematic_original = qucsator.Schematic(config, base_file_original + ".sch")
schematic_original.to_netlist(base_file_original+ ".net")

netlist_original = qucsator.Netlist(base_file_original + ".net")

# Now make this physical
netlist_realisation = copy.deepcopy(netlist_original)

# Use component values from a standard set of components
library_components = physical.map_library_components(netlist_realisation)
physical.print_library_map(netlist_realisation, library_components)

physical.substitute_library_components(netlist_realisation, library_components)


# If they would have been decently labeled, this was easier:
#capacitors = [ ("C%i" % i) for i in range(1, 5) ]
#inductors = [ ("L%i" % i) for i in range(1, 6) ]
capacitors = [ "C1", "C3", "C5" ]
inductors = [ "L2", "L4" ]

for c in capacitors:
    # Use on purpose a more leaky capacitor, so the difference shows up in the graphs :)
    physical.model_capacitor(netlist_realisation, c, R_L = "10 k", R_ESR = "0.1", L_ESL = "0")