feat(gui1d, physics): implement interactive 1D simulator GUI & fix avalanche generation sign bug
- gui1d: - Created interactive 1D Diode simulator dashboard (gui1d/app.py, solve_1d.py). - Redesigned doping process step editor, layout, and centered legend plots. - Implemented state caching for I-V sweeps and grid spacing optimization. - Doubled voltage step resolution: 0.05V step for V < 1V, and V/20 step for V >= 1V. - physics (avalanche bug fix): - Fixed charge sign in Hole Continuity Equation for avalanche generation. - Created AvalancheGeneration_p in physics/new_physics.py to correctly act as a hole source. - Resolved physical breakdown current polarity and negative current leakage at high reverse bias.
This commit is contained in:
+9
-2
@@ -39,7 +39,7 @@ recon_logic = """
|
||||
time_node_model="NCharge", edge_model=opts['Jn'], edge_volume_model="AvalancheGeneration",
|
||||
variable_update="positive", node_model="ElectronGeneration", min_error=1e5)
|
||||
devsim.equation(device=device, region="Silicon", name="HoleContinuityEquation", variable_name="Holes",
|
||||
time_node_model="PCharge", edge_model=opts['Jp'], edge_volume_model="AvalancheGeneration",
|
||||
time_node_model="PCharge", edge_model=opts['Jp'], edge_volume_model="AvalancheGeneration_p",
|
||||
variable_update="positive", node_model="HoleGeneration", min_error=1e5)
|
||||
|
||||
try:
|
||||
@@ -106,7 +106,14 @@ bv_code = code
|
||||
bv_code = "import pickle\nimport argparse\n" + bv_code
|
||||
|
||||
# Turn ON Avalanche by default in solve_sweep_bv.py
|
||||
bv_code = bv_code.replace('edge_volume_model=""', 'edge_volume_model="AvalancheGeneration"')
|
||||
bv_code = bv_code.replace(
|
||||
'name="ElectronContinuityEquation", variable_name="Electrons",\n time_node_model="NCharge", edge_model=opts[\'Jn\'], edge_volume_model=""',
|
||||
'name="ElectronContinuityEquation", variable_name="Electrons",\n time_node_model="NCharge", edge_model=opts[\'Jn\'], edge_volume_model="AvalancheGeneration"'
|
||||
)
|
||||
bv_code = bv_code.replace(
|
||||
'name="HoleContinuityEquation", variable_name="Holes",\n time_node_model="PCharge", edge_model=opts[\'Jp\'], edge_volume_model=""',
|
||||
'name="HoleContinuityEquation", variable_name="Holes",\n time_node_model="PCharge", edge_model=opts[\'Jp\'], edge_volume_model="AvalancheGeneration_p"'
|
||||
)
|
||||
|
||||
# Keep Avalanche ON by default
|
||||
arg_parse = """
|
||||
|
||||
Reference in New Issue
Block a user