sweep_wafermap
- circuit_analyzer.all.sweep_wafermap(circuit_model, wavelengths, deviation_maps=None, positions=None, parallel=False, parallel_option='number', save_path=None)
Run a sweep of simulations for the same circuit, but on different positions on the chip causing variations. Use the wafer map information + locations of each building block for an accurate simulation.
The variability configuration is used to define which variations can happen, and how to translate the parameter values of the deviation map onto model parameters.
- Parameters:
- circuit_model: CircuitModel
IPKISS CircuitModel used in the simulation.
- wavelengths: array-like
An array of wavelengths, for instance: np.linspace(1.54, 1.56, 1001).
- deviation_maps: dict
A mapping of deviation maps per fab parameter.
- positions: list
A list of positions on the wafer. For each position, deviations from the maps will be extracted and applied to the circuit model.
- parallel: bool, optional
Parallelize the calculations to potentially reduce the simulation time.
- parallel_option: str
String of what to parallelize, either over ‘wavelengths’ or over the ‘number’ of simulations. Options are ‘wavelengths’ or ‘number’.
- save_path: str/path, optional
Path where the save file will be stored, for instance: save_path = “simulation_results.data”.
- Returns:
- an array of S matrices, one S matrix per sampling.
Examples
>>> import circuit_analyzer.all as ca >>> from circuit_analyzer.capheve.variability_map import CoherentNoiseMap >>> with ca.setup('/path/to/configuration'): >>> ca.sweep_wafermap( >>> circuit_model=circuit.get_default_view(i3.CircuitModelView), >>> wavelengths=np.linspace(1.5, 1.6, 1), >>> deviation_maps={ >>> "n_eff": CoherentNoiseMap(amplitude=0.1, radius=50.0, seed=0), >>> }, >>> positions=[(0, 0), (500, 500), (1000, 0)], >>> )