示例#1
0
文件: TwoTrans.py 项目: tmaiwald/OSIM
from OSIM.Modeling.CircuitSystemEquations import CircuitSystemEquations
from OSIM.Simulation.CircuitAnalysis.CircuitAnalyser import CircuitAnalyser
from OSIM.Simulation.NetToComp import NetToComp

seq = CircuitSystemEquations(NetToComp('twoTrans.net').getComponents())
ca = CircuitAnalyser(seq)
ca.printDCOp(["R1"])
#ca.plot_lin(ca.getDCParamSweep('V1',0.7,1.3,0.005,["VoutMinus","VoutPlus"],'VCC',[2.3]))
示例#2
0
from OSIM.Modeling.CircuitSystemEquations import CircuitSystemEquations
from OSIM.Simulation.CircuitAnalysis.CircuitAnalyser import CircuitAnalyser
import numpy as np
from OSIM.Simulation.NetToComp import NetToComp

seq = CircuitSystemEquations(NetToComp('GilbertMixer/GilberMixerEasy.net').getComponents())
ca = CircuitAnalyser(seq)
ca.printDCOp(["vCurMirror","Q7IT","Q6C","LOPlus","RFPlus","Q1C"])
imp1_180 = ca.getImpedanceAt("V1",180e9)
imp4_18 = ca.getImpedanceAt("V4",18e9)
imp5_18 = ca.getImpedanceAt("V5",18e9)

print("IMP1_180 @180G: %s"%str(imp1_180))
print("IMP4_18 @18G: %s"%str((imp4_18)))
print("IMP5_18 @18G: %s"%str(imp5_18))

#print(imp6)
#v1 = seq.getCompByName("V1").setInnerImpedance(imp[0])
#seq.getCompByName("V3").setInnerImpedance(imp[0])
#print(v1.getInnerImpedance())
#ca.plot_smith(ca.getSPAnalysis_semilogx(8,12,10,["V1","V3"]))
#ca.plot_semilogx(ca.getACAnalysis_semilogx("V1",["Q1C"],9,11,10)[0])

res = ca.getTrans(0,2e-10,1e-13,["Q3C","Q1C","LOPlus","RFPlus"])

# how to get a diff-Signal
out = np.zeros((2,res[0].shape[1]),dtype = np.float64)
for i in range(res[0].shape[1]):
    out[0][i] = (res[0])[0][i]
    out[1][i] = (res[0])[1][i] - (res[0])[2][i]
示例#3
0
文件: LoBuffer.py 项目: tmaiwald/OSIM
from OSIM.Modeling.CircuitSystemEquations import CircuitSystemEquations
from OSIM.Simulation.CircuitAnalysis.CircuitAnalyser import CircuitAnalyser
from OSIM.Simulation.NetToComp import NetToComp
import numpy as np

seq = CircuitSystemEquations(
    NetToComp('LoBuffer/LoBuffer.net').getComponents())
ca = CircuitAnalyser(seq)
#ca.printDCOp(["R11","Cur2Out","IN1","Q7IT","Q4IT","Q3IT"])
#ca.plot_semilogx(ca.getACAnalysis_semilogx("V2",["OUT1"],1,12,10)[0])
#ca.plot_smith(ca.getSPAnalysis_semilogx(2,12,10,["V2"]))

res = ca.getTrans(0, 3e-6, 1e-9, ["OUT2", "OUT1", "Cur2Out"])

# how to get a diff-Signal
out = np.zeros((2, res[0].shape[1]), dtype=np.float64)
for i in range(res[0].shape[1]):
    out[0][i] = (res[0])[0][i]
    out[1][i] = (res[0])[1][i] - (res[0])[2][i]

ca.plot_lin([out, ["diffout"], "transient"])

print("Max %G " % np.amax(np.absolute(out[1][:])))

ca.plot_lin(res)
示例#4
0
from OSIM.Modeling.CircuitSystemEquations import CircuitSystemEquations
from OSIM.Simulation.CircuitAnalysis.CircuitAnalyser import CircuitAnalyser
from OSIM.Simulation.NetToComp import NetToComp

seq = CircuitSystemEquations(
    NetToComp('CurrentMirror/CurrentMirror.net').getComponents())
ca = CircuitAnalyser(seq)

ca.printDCOp(["R1", "RL"])
dcs = ca.getDCOpAt(["VIN", "N004"])
print(dcs)
print(dcs[1] - dcs[0])

ca.plot_lin(ca.getDCParamSweep('V2', 0, 3.3, 0.05, ["R2", "R1"], 'V1', [3.3]))
示例#5
0
dummyIT = dummyMainTransportCurrent()
Q_DBE = QDBE([bi, ei], "QDBE", 0, dummyIT, dict=params)
vsource = VoltageSource(["0", bi],
                        "V1",
                        0,
                        None,
                        dict={
                            'FUNC': 'SIN',
                            'F': '1e11',
                            'DC': '0',
                            'AC': '1',
                            'P': '180'
                        })
r1 = Resistor([ei, "0"], "R1", 0.00001, None)
TBSys = CircuitSystemEquations([Q_DBE, vsource, r1])
ca = CircuitAnalyser(TBSys)

x = np.arange(-1, 2, 0.1)
charge = np.zeros((len(x), 1), dtype=np.complex128)
capacity = np.zeros((len(x), 1), dtype=np.complex128)

for idx, v in enumerate(x):
    #vsource.changeMyVoltageInSys(v)
    dummyIT.IT.itf += 0.2e-3
    ca.calcDCOperatingPoint()
    charge[idx] = Q_DBE.getCharge()
    #capacity[idx] = Q_DBE.dQdU_A()

plt.plot(x, charge, label="charge")
#plt.plot(x, capacity, label="capacity")
plt.show()
示例#6
0
from OSIM.Modeling.CircuitSystemEquations import CircuitSystemEquations
from OSIM.Simulation.CircuitAnalysis.CircuitAnalyser import CircuitAnalyser
from OSIM.Simulation.NetToComp import NetToComp

seq = CircuitSystemEquations(NetToComp('Transistor/TransDiode.net').getComponents())
ca = CircuitAnalyser(seq)

#ca.printDCOp(["R1","R2","Q1IT"])
#dcs = ca.getDCOpAt(["Q_BC","Q_E"])
#print(dcs)
#print(dcs[1]-dcs[0])
#print (seq.compDict)
#np.set_printoptions(precision=1)
#print(seq.A.real)
#print("#############")
#print(seq.b.real)
#print("#############")
#print(seq.g.real)

ca.plot_lin(ca.getDCParamSweep('V1',0.0,3.3,0.01,["Q1IT"],'bla',[3.3]))
#ca.plot_lin(ca.getDCParamSweep('V1',0.6,1,0.001,["Q1IT"],'bla',[3.3]))

示例#7
0
#!/usr/bin/python
from OSIM.Modeling.CircuitSystemEquations import CircuitSystemEquations
from OSIM.Simulation.CircuitAnalysis.CircuitAnalyser import CircuitAnalyser
from OSIM.Simulation.NetToComp import NetToComp

circuit = 'TransistorTB.net'
#circuit = '__Circuits/TransistorInversTB.net'
#circuit = '__Circuits/twoTrans.net'
#circuit = '__Circuits/DiodeTB.net'
#circuit = '__Circuits/AmplifierTB2.net'
#circuit = '__Circuits/AmplifierTB.net'
#circuit = '__Circuits/lowpassTB.net'
#circuit = '__Circuits/CapacityTB.net'
#circuit = '__Circuits/SParameterTB.net'
#circuit = '__Circuits/TransAnalysisTB.net'
#circuit = '__Circuits/TransTransistorAnalysisTB.net'
#circuit = '__Circuits/LoBuffer.net'
#circuit = '__Circuits/Diffamp.net'

seq = CircuitSystemEquations(NetToComp(circuit).getComponents())
ca = CircuitAnalyser(seq)
#CharactersiticCurves(seq).createCharacteristicCurves('V2',-0.7, 1.3, 0.005,'P1V',1, 1.2 , 0.1, ["Q1IT"])
ca.plot_lin(ca.getDCParamSweep('V2', 0, 1.3, 0.005, ["Q1IT"], 'P1V', [0.9]))

#CircuitAnalysis(seq).calcDCOperatingPoint()
#ACAnalysis(seq).show(3, 11, 10, "OUT", 'P1V')
#SParameterAnalysis(seq).show(8, 12, 10)
#DCAnalysis(seq).show('V1', -1, 2, 0.01, ["D1", "1"])
#TransAnalysis(seq).show(0, 1e-10, 1e-13, ["OUT", "Q1IT"], "Q1IT")
示例#8
0
from OSIM.Modeling.CircuitSystemEquations import CircuitSystemEquations
from OSIM.Simulation.CircuitAnalysis.CircuitAnalyser import CircuitAnalyser
import numpy as np
from OSIM.Simulation.NetToComp import NetToComp

seq = CircuitSystemEquations(
    NetToComp('GilbertMixer/GilberMixerAdvanced.net').getComponents())
ca = CircuitAnalyser(seq)
ca.printDCOp(["vCurMirror", "Q7IT", "Q6C", "LOPlus"])
imp1_180 = ca.getImpedanceAt("V1", 180e9)
imp4_18 = ca.getImpedanceAt("V4", 18e9)
imp5_18 = ca.getImpedanceAt("V5", 18e9)

print("IMP1_180 @180G: %s" % str(imp1_180))
print("IMP4_18 @18G: %s" % str((imp4_18)))
print("IMP5_18 @18G: %s" % str(imp5_18))

#print(imp6)
#v1 = seq.getCompByName("V1").setInnerImpedance(imp[0])
#seq.getCompByName("V3").setInnerImpedance(imp[0])
#print(v1.getInnerImpedance())
#ca.plot_smith(ca.getSPAnalysis_semilogx(8,12,10,["V1","V3"]))
ca.plot_semilogx(ca.getACAnalysis_semilogx("V1", ["Q1C"], 9, 11, 10)[0])

res = ca.getTrans(0, 0.1e-9, 1e-13, ["Q4C", "Q1C", "LOPlus"])

# how to get a diff-Signal
out = np.zeros((2, res[0].shape[1]), dtype=np.float64)
for i in range(res[0].shape[1]):
    out[0][i] = (res[0])[0][i]
    out[1][i] = (res[0])[1][i] - (res[0])[2][i]
示例#9
0
WBx = 1 # WBE
F = 0.97 # FC

gnd = '0'
sigin = '1'
sigout = '2'
ik = '3'

vsource = VoltageSource([gnd,sigin],"V1",0,None,paramdict={'FUNC':'SIN','F':'1e11', 'DC':'0', 'AC':'1', 'P':'180'})
r1 = Resistor([sigin,sigout],"R1",0.00001,None)
c = VBIC_DepletionCharge([sigout, ik],"QJ", CJx, None, paramdict= {'P':P,'M':M,'F':F,'AJ':AJ,'FAK':WBx})
cref = Capacity([sigout, ik],"CR",0.35e-14, None)
r2 = Resistor([ik,gnd],"R2",1000,None)

TBSys = CircuitSystemEquations([vsource,r1,c,r2,cref])
ca = CircuitAnalyser(TBSys)

volts = [x/100 for x in range(-200,200)]
res = np.zeros((2,len(volts)),dtype= np.float64)

#for vidx,v in enumerate(volts):
#    vsource.changeMyVoltageInSys(v)
#    ca.calcDCOperatingPoint()
#    res[0][vidx] = v
#    res[1][vidx] = c.getCharge()

#ca.plot_lin([res,["Q"],"Ladung"])
ca.plot_lin(ca.getTrans(0 ,4e-11,1e-14,['CR','QJ']))


示例#10
0
from OSIM.Simulation.NetToComp import NetToComp
from OSIM.Modeling.CircuitSystemEquations import CircuitSystemEquations
from OSIM.Simulation.CircuitAnalysis.CircuitAnalyser import CircuitAnalyser
import numpy as np

seq = CircuitSystemEquations(NetToComp('GilberMixerEasy.net').getComponents())
ca = CircuitAnalyser(seq)

mag = ca.getGain("V1", "Q1C", 180e9)
print("gain")
print(mag)

ca.printDCOp(["vCurMirror", "Q7IT", "Q6C", "RFPlus", "Q1C"])
#imp1_180 = ca.getImpedanceAt("V1",180e9)
#imp3_180 = ca.getImpedanceAt("V3",180e9)
#imp4_18 = ca.getImpedanceAt("V4",18e9)
#imp5_18 = ca.getImpedanceAt("V5",18e9)

#print("IMP1_180 @180G: %s"%str(imp1_180))
#print("IMP3_180 @180G: %s"%str(imp3_180))
#print("IMP4_18 @18G: %s"%str((imp4_18)))
#print("IMP5_18 @18G: %s"%str(imp5_18))

#print(imp6)
#v1 = seq.getCompByName("V1").setInnerImpedance(imp[0])
#seq.getCompByName("V3").setInnerImpedance(imp[0])
#print(v1.getInnerImpedance())
#ca.plot_smith(ca.getSPAnalysis_linx(175e9,185e9,1e9,["V3"]))
#ca.plot_lin(ca.getACAnalysis_linx("V1",["Q1C"],170e9,190e9,1e9)[0])

res = ca.getTrans(0, 1e-10, 1e-13, ["Q3C", "Q1C", "LOPlus", "RFPlus"])
示例#11
0
kemitterdirekt = 'e'
kemitter = '0'

v1 = Port([kbasis, kemitter], 'V1', 0.883, None)
v2 = Port([kv1, kemitter], 'V2', 1.6, None)
r1 = Resistor([kv1, kcollector], 'R1', 500, None)
re = Resistor([kemitterdirekt, kemitter], 'RE', 0.001, None)
npn = NPN_VBIC([kcollector, kbasis, kemitterdirekt, 'SUB'],
               'Q1',
               0,
               None,
               pParams='NPN_VBIC_npn13G2.comp')
rsub = Resistor(['SUB', '0'], "R3", 264, None)
seq = CircuitSystemEquations([v1, v2, npn, r1, rsub, re])
#v1.setInnerImpedance(50)
ca = CircuitAnalyser(seq)

#for Nx in range(1,8):
#seq.setParamterForComp("Q1","Nx",1)
#npn.setParameterOrVariableValue("Nx", Nx)
#ca.plot_lin(ca.getDCParamSweep('V2',-1,1.6,0.1,["Q1IT"],'V1',[0.8]))
res = ca.getACAnalysis_semilogx("V1", [kcollector], 1, 12, 10)
ca.plot_semilogx(res[0])
#res = ca.getDCParamSweep('V2',0.01,1.6,0.01,["Q1IT"],'V1',[0.91])
#ca.plot_lin(res)
#res = ca.getSPAnalysis_semilogx(1,12,10,["V1"])
#ca.plot_smith(res)
res = res[0]

toFile = open("Betragsfrequenzgang_angepasst.csv", 'w')
示例#12
0
文件: SpuleTB.py 项目: tmaiwald/OSIM
from OSIM.Modeling.CircuitSystemEquations import CircuitSystemEquations
from OSIM.Simulation.CircuitAnalysis.CircuitAnalyser import CircuitAnalyser
from OSIM.Simulation.NetToComp import NetToComp

seq = CircuitSystemEquations(NetToComp('Diverses/SpileTB.net').getComponents())

print(seq.A)

ca = CircuitAnalyser(seq)

#ca.calcDCOperatingPoint()

ca.plot_lin(ca.getTrans(0, 3e-6, 1e-9, ["IN", "OUT"]))
示例#13
0
from OSIM.Modeling.CircuitSystemEquations import CircuitSystemEquations
from OSIM.Simulation.CircuitAnalysis.CircuitAnalyser import CircuitAnalyser
from OSIM.Simulation.NetToComp import NetToComp

#seq = CircuitSystemEquations(NetToComp('Transistor_invers.net').getComponents())
#ca = CircuitAnalyser(seq)
#ca.plot_lin(ca.getDCParamSweep('V2',0,0.3,0.001,["Q1bi","Q1ci","Q1ei"],'V1',[0.85]))

seq = CircuitSystemEquations(
    NetToComp('Transistor_invers.net').getComponents())
ca = CircuitAnalyser(seq)
ca.plot_lin(ca.getDCParamSweep('V2', 0, 0.5, 0.01, ["Q1IT"], 'V1', [0.85]))
示例#14
0
from OSIM.Modeling.CircuitSystemEquations import CircuitSystemEquations
from OSIM.Simulation.CircuitAnalysis.CircuitAnalyser import CircuitAnalyser
from OSIM.Simulation.NetToComp import NetToComp

seq = CircuitSystemEquations(
    NetToComp('DiffAmplifier/Diffamp.net').getComponents())
ca = CircuitAnalyser(seq)
ca.printDCOp(["R6", "R3", "VCurSource"])
#print(seq.x)
#max = np.amax(np.absolute(seq.x))
#print(max)
#ca.plot_lin(ca.getDCParamSweep('V1',1,3.3,0.05,["VoutPlus","VoutMinus"],'VCC',[3.3]))
ca.plot_semilogx(ca.getACAnalysis_semilogx("V1", ["VoutPlus"], 2, 10, 11)[0])