-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.py
More file actions
100 lines (81 loc) · 2.69 KB
/
Copy pathconfig.py
File metadata and controls
100 lines (81 loc) · 2.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import os
os.environ.setdefault("KMP_DUPLICATE_LIB_OK", "TRUE")
os.environ.setdefault("PMIX_MCA_gds", "hash")
from qiskit_metal import Dict
PALACE_DIR = "/home/kit/LakeResearch/Palace/build/bin/palace"
SIM_PAR_DIR = "/home/kit/LakeResearch/Palace/HighCapLowGeoInductDesigns/AgenticOptimization"
RESULTS_CSV = os.path.join(SIM_PAR_DIR, "results.csv")
CALIBRATION_CSV = os.path.join(SIM_PAR_DIR, "calibration.csv")
CHIP_SIZE_X = "600um"
CHIP_SIZE_Y = "750um"
CHIP_SIZE_Z = "-200um"
CHIP_CENTER_X = "0um"
CHIP_SIZE_X_M = 600e-6
CHIP_SIZE_Y_M = 750e-6
LAYER = 1
KINETIC_INDUCTANCE = 190e-12
I_CRIT = 65e-6
B_FIELD = 10e-3
G_FACTOR = 16.6
MU_B = 9.274e-24
def palace_options(num_cpus: int):
return {
"mesh_refinement": 0,
"dielectric_material": "silicon",
"starting_freq": 8e9,
"number_of_freqs": 1,
"solns_to_save": 1,
"solver_order": 1,
"solver_tol": 1.0e-6,
"solver_maxits": 200,
"fillet_resolution": 4,
"palace_dir": PALACE_DIR,
"num_cpus": num_cpus,
}
MESH_KWARGS = dict(min_size = 10e-7, max_size = 200e-6, taper_dist_min = 2e-7, metals_only = False)
PARAM_BOUNDS = {
"res_width": (100e-6, 310e-6),
"finger_length": (100e-6, 300e-6),
"fingers_n": (20, 150),
"finger_width": (2e-6, 4e-6),
"finger_gap": (2e-6, 3e-6),
"geo_ind_length": (1e-6, 10e-6),
"geo_ind_thick": (1e-6, 10e-6),
"metal_width": (20e-6, 80e-6),
"res_height": (400e-6, 700e-6),
"cap_section_height": (300e-6, 650e-6),
"gap": (20e-6, 25e-6),
}
DEMO_PARAMS = {
"res_width": 300e-6,
"finger_length": 290e-6,
"fingers_n": 100,
"finger_width": 4e-6,
"finger_gap": 2e-6,
"geo_ind_length": 3e-6,
"geo_ind_thick": 3e-6,
"metal_width": 80e-6,
"res_height": 680e-6,
"cap_section_height": 600e-6,
"gap": 25e-6,
}
def _um(val_m: float) -> str:
return f"{val_m *1e6:g}um"
def chip_center_y(params: dict) -> str:
center_y = - params['res_height']/2
return _um(center_y)
def params_to_hres(params: dict) -> Dict:
return Dict(
res_width=_um(params["res_width"]),
finger_length=_um(params["finger_length"]),
fingers_n=str(int(round(params["fingers_n"]))),
finger_width=_um(params["finger_width"]),
finger_gap=_um(params["finger_gap"]),
geo_ind_length=_um(params["geo_ind_length"]),
geo_ind_thick=_um(params["geo_ind_thick"]),
metal_width=_um(params["metal_width"]),
res_height=_um(params["res_height"]),
cap_section_height=_um(params["cap_section_height"]),
layer=str(LAYER),
gap=_um(params["gap"]),
)