vacask-bin 0.3.4.dev4__py3-none-macosx_15_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. vacask_bin/__init__.py +19 -0
  2. vacask_bin/_version.py +1 -0
  3. vacask_bin/data/bin/lib/libLLVM.dylib +4 -0
  4. vacask_bin/data/bin/lib/libamd.3.3.4.dylib +0 -0
  5. vacask_bin/data/bin/lib/libbtf.2.3.3.dylib +0 -0
  6. vacask_bin/data/bin/lib/libcamd.3.3.5.dylib +0 -0
  7. vacask_bin/data/bin/lib/libccolamd.3.3.5.dylib +0 -0
  8. vacask_bin/data/bin/lib/libcholmod.5.3.5.dylib +0 -0
  9. vacask_bin/data/bin/lib/libcolamd.3.3.5.dylib +0 -0
  10. vacask_bin/data/bin/lib/libfftw3.3.dylib +0 -0
  11. vacask_bin/data/bin/lib/libgcc_s.1.1.dylib +0 -0
  12. vacask_bin/data/bin/lib/libgfortran.5.dylib +0 -0
  13. vacask_bin/data/bin/lib/libklu.2.3.6.dylib +0 -0
  14. vacask_bin/data/bin/lib/libomp.dylib +0 -0
  15. vacask_bin/data/bin/lib/libopenblasp-r0.3.34.dylib +0 -0
  16. vacask_bin/data/bin/lib/libquadmath.0.dylib +0 -0
  17. vacask_bin/data/bin/lib/libsuitesparseconfig.7.14.1.dylib +0 -0
  18. vacask_bin/data/bin/lib/libunwind.1.0.dylib +0 -0
  19. vacask_bin/data/bin/lib/libzstd.1.5.7.dylib +0 -0
  20. vacask_bin/data/bin/openvaf-r +0 -0
  21. vacask_bin/data/bin/vacask +0 -0
  22. vacask_bin/data/lib/vacask/inc/builtins.inc +9 -0
  23. vacask_bin/data/lib/vacask/mod/bsim3v3.osdi +0 -0
  24. vacask_bin/data/lib/vacask/mod/bsim4v8.osdi +0 -0
  25. vacask_bin/data/lib/vacask/mod/bsimbulk106.osdi +0 -0
  26. vacask_bin/data/lib/vacask/mod/capacitor.osdi +0 -0
  27. vacask_bin/data/lib/vacask/mod/diode.osdi +0 -0
  28. vacask_bin/data/lib/vacask/mod/inductor.osdi +0 -0
  29. vacask_bin/data/lib/vacask/mod/opamp.osdi +0 -0
  30. vacask_bin/data/lib/vacask/mod/psp103v4.osdi +0 -0
  31. vacask_bin/data/lib/vacask/mod/resistor.osdi +0 -0
  32. vacask_bin/data/lib/vacask/mod/spice/bjt.osdi +0 -0
  33. vacask_bin/data/lib/vacask/mod/spice/bsim3v3.osdi +0 -0
  34. vacask_bin/data/lib/vacask/mod/spice/bsim4v8.osdi +0 -0
  35. vacask_bin/data/lib/vacask/mod/spice/capacitor.osdi +0 -0
  36. vacask_bin/data/lib/vacask/mod/spice/diode.osdi +0 -0
  37. vacask_bin/data/lib/vacask/mod/spice/full/bjt.osdi +0 -0
  38. vacask_bin/data/lib/vacask/mod/spice/full/bsim3v3.osdi +0 -0
  39. vacask_bin/data/lib/vacask/mod/spice/full/capacitor.osdi +0 -0
  40. vacask_bin/data/lib/vacask/mod/spice/full/diode.osdi +0 -0
  41. vacask_bin/data/lib/vacask/mod/spice/full/inductor.osdi +0 -0
  42. vacask_bin/data/lib/vacask/mod/spice/full/jfet1.osdi +0 -0
  43. vacask_bin/data/lib/vacask/mod/spice/full/jfet2.osdi +0 -0
  44. vacask_bin/data/lib/vacask/mod/spice/full/mes1.osdi +0 -0
  45. vacask_bin/data/lib/vacask/mod/spice/full/mos1.osdi +0 -0
  46. vacask_bin/data/lib/vacask/mod/spice/full/mos2.osdi +0 -0
  47. vacask_bin/data/lib/vacask/mod/spice/full/mos3.osdi +0 -0
  48. vacask_bin/data/lib/vacask/mod/spice/full/mos6.osdi +0 -0
  49. vacask_bin/data/lib/vacask/mod/spice/full/mos9.osdi +0 -0
  50. vacask_bin/data/lib/vacask/mod/spice/full/vdmos.osdi +0 -0
  51. vacask_bin/data/lib/vacask/mod/spice/inductor.osdi +0 -0
  52. vacask_bin/data/lib/vacask/mod/spice/jfet1.osdi +0 -0
  53. vacask_bin/data/lib/vacask/mod/spice/jfet2.osdi +0 -0
  54. vacask_bin/data/lib/vacask/mod/spice/mes1.osdi +0 -0
  55. vacask_bin/data/lib/vacask/mod/spice/mos1.osdi +0 -0
  56. vacask_bin/data/lib/vacask/mod/spice/mos2.osdi +0 -0
  57. vacask_bin/data/lib/vacask/mod/spice/mos3.osdi +0 -0
  58. vacask_bin/data/lib/vacask/mod/spice/mos6.osdi +0 -0
  59. vacask_bin/data/lib/vacask/mod/spice/mos9.osdi +0 -0
  60. vacask_bin/data/lib/vacask/mod/spice/resistor.osdi +0 -0
  61. vacask_bin/data/lib/vacask/mod/spice/sn/bjt.osdi +0 -0
  62. vacask_bin/data/lib/vacask/mod/spice/sn/diode.osdi +0 -0
  63. vacask_bin/data/lib/vacask/mod/spice/sn/jfet1.osdi +0 -0
  64. vacask_bin/data/lib/vacask/mod/spice/sn/jfet2.osdi +0 -0
  65. vacask_bin/data/lib/vacask/mod/spice/sn/mes1.osdi +0 -0
  66. vacask_bin/data/lib/vacask/mod/spice/sn/mos1.osdi +0 -0
  67. vacask_bin/data/lib/vacask/mod/spice/sn/mos2.osdi +0 -0
  68. vacask_bin/data/lib/vacask/mod/spice/sn/mos3.osdi +0 -0
  69. vacask_bin/data/lib/vacask/mod/spice/sn/mos6.osdi +0 -0
  70. vacask_bin/data/lib/vacask/mod/spice/sn/mos9.osdi +0 -0
  71. vacask_bin/data/lib/vacask/mod/spice/vdmos.osdi +0 -0
  72. vacask_bin/data/lib/vacask/mod/tline_ideal.osdi +0 -0
  73. vacask_bin/data/lib/vacask/mod/vbic_1p3.osdi +0 -0
  74. vacask_bin/data/lib/vacask/mod/vbic_1p3_4t.osdi +0 -0
  75. vacask_bin/data/lib/vacask/mod/vbic_1p3_5t.osdi +0 -0
  76. vacask_bin/data/lib/vacask/python/vacask/__init__.py +56 -0
  77. vacask_bin/data/lib/vacask/python/vacask/__pycache__/__init__.cpython-315.pyc +0 -0
  78. vacask_bin/data/lib/vacask/python/vacask/__pycache__/rawfile.cpython-315.pyc +0 -0
  79. vacask_bin/data/lib/vacask/python/vacask/__pycache__/runtest.cpython-315.pyc +0 -0
  80. vacask_bin/data/lib/vacask/python/vacask/__pycache__/vacaskpp.cpython-315.pyc +0 -0
  81. vacask_bin/data/lib/vacask/python/vacask/gf180tovc.py +215 -0
  82. vacask_bin/data/lib/vacask/python/vacask/helpers.py +60 -0
  83. vacask_bin/data/lib/vacask/python/vacask/ng2vc.py +113 -0
  84. vacask_bin/data/lib/vacask/python/vacask/ng2vclib/__init__.py +0 -0
  85. vacask_bin/data/lib/vacask/python/vacask/ng2vclib/converter.py +148 -0
  86. vacask_bin/data/lib/vacask/python/vacask/ng2vclib/dfl.py +118 -0
  87. vacask_bin/data/lib/vacask/python/vacask/ng2vclib/exc.py +10 -0
  88. vacask_bin/data/lib/vacask/python/vacask/ng2vclib/generators.py +83 -0
  89. vacask_bin/data/lib/vacask/python/vacask/ng2vclib/m_devices.py +51 -0
  90. vacask_bin/data/lib/vacask/python/vacask/ng2vclib/m_file.py +380 -0
  91. vacask_bin/data/lib/vacask/python/vacask/ng2vclib/m_inst_d.py +44 -0
  92. vacask_bin/data/lib/vacask/python/vacask/ng2vclib/m_inst_m.py +75 -0
  93. vacask_bin/data/lib/vacask/python/vacask/ng2vclib/m_inst_n.py +33 -0
  94. vacask_bin/data/lib/vacask/python/vacask/ng2vclib/m_inst_passive.py +255 -0
  95. vacask_bin/data/lib/vacask/python/vacask/ng2vclib/m_inst_q.py +43 -0
  96. vacask_bin/data/lib/vacask/python/vacask/ng2vclib/m_inst_x.py +40 -0
  97. vacask_bin/data/lib/vacask/python/vacask/ng2vclib/m_masters.py +289 -0
  98. vacask_bin/data/lib/vacask/python/vacask/ng2vclib/m_model.py +79 -0
  99. vacask_bin/data/lib/vacask/python/vacask/ng2vclib/m_output.py +185 -0
  100. vacask_bin/data/lib/vacask/python/vacask/ng2vclib/m_params.py +332 -0
  101. vacask_bin/data/lib/vacask/python/vacask/ng2vclib/patterns.py +42 -0
  102. vacask_bin/data/lib/vacask/python/vacask/rawfile.py +185 -0
  103. vacask_bin/data/lib/vacask/python/vacask/runtest.py +47 -0
  104. vacask_bin/data/lib/vacask/python/vacask/sg13cmos5ltovc.py +584 -0
  105. vacask_bin/data/lib/vacask/python/vacask/sg13cmos5lxschem.tcl +148 -0
  106. vacask_bin/data/lib/vacask/python/vacask/sg13g2tovc.py +553 -0
  107. vacask_bin/data/lib/vacask/python/vacask/sg13g2xschem.tcl +149 -0
  108. vacask_bin/data/lib/vacask/python/vacask/ts2vc.py +502 -0
  109. vacask_bin/data/lib/vacask/python/vacask/vacaskpp.py +58 -0
  110. vacask_bin/data/lib/vacask/python/vacask/xschem2vc.py +94 -0
  111. vacask_bin-0.3.4.dev4.dist-info/METADATA +6 -0
  112. vacask_bin-0.3.4.dev4.dist-info/RECORD +115 -0
  113. vacask_bin-0.3.4.dev4.dist-info/WHEEL +4 -0
  114. vacask_bin-0.3.4.dev4.dist-info/entry_points.txt +2 -0
  115. vacask_bin-0.3.4.dev4.dist-info/top_level.txt +1 -0
vacask_bin/__init__.py ADDED
@@ -0,0 +1,19 @@
1
+ """Prebuilt VACASK circuit simulator binaries."""
2
+
3
+ import os
4
+ import sys
5
+
6
+ _HERE = os.path.dirname(os.path.abspath(__file__))
7
+ _EXE = '.exe' if sys.platform == 'win32' else ''
8
+
9
+ BIN_DIR = os.path.join(_HERE, 'data', 'bin')
10
+ MOD_DIR = os.path.join(_HERE, 'data', 'lib', 'vacask', 'mod')
11
+ VACASK_CMD = os.path.join(BIN_DIR, 'vacask' + _EXE)
12
+ OPENVAF_CMD = os.path.join(BIN_DIR, 'openvaf-r' + _EXE)
13
+
14
+ from ._version import __version__
15
+
16
+
17
+ def _run_vacask():
18
+ """Entry point for the 'vacask' console script."""
19
+ os.execvp(VACASK_CMD, [VACASK_CMD] + sys.argv[1:])
vacask_bin/_version.py ADDED
@@ -0,0 +1 @@
1
+ __version__ = "0.3.4.dev4"
@@ -0,0 +1,4 @@
1
+ [diffend] Oversized file quarantined before diffing.
2
+ name: vacask_bin/data/bin/lib/libLLVM.dylib
3
+ size: 115184720 bytes
4
+ sha256: cba2002ebf4a50649fef2426386fecfb9d517c080638ab16bac87ce47b588432
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,9 @@
1
+ // Default models of builtin devices
2
+
3
+ model vsource vsource
4
+ model isource isource
5
+ model vcvs vcvs
6
+ model vccs vccs
7
+ model ccvs ccvs
8
+ model cccs cccs
9
+ model mutual mutual
@@ -0,0 +1,56 @@
1
+ # _vacask exists only in the scikit-build package, without it only the helper scripts are available
2
+ import importlib.util
3
+ if importlib.util.find_spec(__name__+"._vacask") is not None:
4
+ from . import _vacask
5
+ else:
6
+ _vacask = None
7
+
8
+ if _vacask is not None:
9
+ def _conf_vacask():
10
+ import os
11
+ this_file = os.path.abspath(__file__)
12
+ this_dir = os.path.dirname(this_file)
13
+ osdi_dir = os.path.normpath(os.path.join(this_dir, "mod"))
14
+ _vacask.simulator.prependModulePath([osdi_dir])
15
+
16
+ _conf_vacask()
17
+
18
+ status = _vacask.status
19
+ from ._vacask.status import *
20
+
21
+ parser = _vacask.parser
22
+ from ._vacask.parser import *
23
+
24
+ parser_output = _vacask.parser_output
25
+ from ._vacask.parser_output import *
26
+
27
+ compiler = _vacask.compiler
28
+ from ._vacask.compiler import *
29
+
30
+ circuit = _vacask.circuit
31
+ from ._vacask.circuit import *
32
+
33
+ analysis = _vacask.analysis
34
+ from ._vacask.analysis import *
35
+
36
+ id = _vacask.id
37
+ from ._vacask.id import *
38
+
39
+ value = _vacask.value
40
+ from ._vacask.value import *
41
+
42
+ simulator = _vacask.simulator
43
+ from ._vacask.simulator import *
44
+
45
+ options = _vacask.options
46
+ from ._vacask.options import *
47
+
48
+ from .helpers import *
49
+
50
+ # Monkeypath the setup function because it always overwrites the "default module path" set above.
51
+ _original_setup = simulator.setup
52
+ def _setup(*args, **kwargs):
53
+ result = _original_setup(*args, **kwargs)
54
+ _conf_vacask()
55
+ return result
56
+ simulator.setup = _setup
@@ -0,0 +1,215 @@
1
+ # gf180tovc.py
2
+ # =============================================================================
3
+ # Convert GlobalFoundries gf180mcuD (ngspice) PDK to VACASK
4
+ # Based on VACASK's sg13g2tovc script
5
+ #
6
+ # =============================================================================
7
+
8
+ import sys, os, shutil, re
9
+ from pathlib import Path
10
+ from .ng2vclib.converter import Converter
11
+ from .ng2vclib.dfl import default_config
12
+
13
+ CONVERT_XSCHEM_SYMBOLS = False
14
+
15
+ tech_file = "sm141064.ngspice"
16
+ tech_file2 = ("design.ngspice", None, None, "design.lib")
17
+ output_path = "../vacask/models/"
18
+ # (section, read_process_depth, output_depth, output_name)
19
+ sections = [
20
+ ("typical", None, None, "mos_tt.lib"),
21
+ ("ff", None, None, "mos_ff.lib"),
22
+ ("ss", None, None, "mos_ss.lib"),
23
+ ("fs", None, None, "mos_fs.lib"),
24
+ ("sf", None, None, "mos_sf.lib"),
25
+ ("bjt_typical", None, None, "bjt_tt.lib"),
26
+ ("bjt_ss", None, None, "bjt_ss.lib"),
27
+ ("bjt_ff", None, None, "bjt_ff.lib"),
28
+ ("diode_typical", None, None, "diode_tt.lib"),
29
+ ("diode_ff", None, None, "diode_ff.lib"),
30
+ ("diode_ss", None, None, "diode_ss.lib"),
31
+ ("res_typical", None, None, "res_tt.lib"),
32
+ ("res_ff", None, None, "res_ff.lib"),
33
+ ("res_ss", None, None, "res_ss.lib"),
34
+ ("mimcap_typical", None, None, "mimcap_tt.lib"),
35
+ ("mimcap_ff", None, None, "mimcap_ff.lib"),
36
+ ("mimcap_ss", None, None, "mimcap_ss.lib"),
37
+ ("moscap_typical", None, None, "moscap_tt.lib"),
38
+ ("moscap_ff", None, None, "moscap_ff.lib"),
39
+ ("moscap_ss", None, None, "moscap_ss.lib"),
40
+ ("statistical", None, None, "statistical.lib"),
41
+ ("noise_corner", None, None, "noise_corner.lib")
42
+ ]
43
+
44
+ ## Known-bug patches template
45
+ patches = {
46
+ "sm141064.ngspice": [
47
+ (
48
+ ".subckt nplus_u_m1 1 2 3 lr=lr wr=wr dtemp=0",
49
+ ".subckt nplus_u_m1 1 2 3 lr=-1 wr=-1 dtemp=0"
50
+ ),
51
+ (
52
+ ".subckt pplus_u_m1 1 2 3 lr=lr wr=wr dtemp=0",
53
+ ".subckt pplus_u_m1 1 2 3 lr=-1 wr=-1 dtemp=0"
54
+ ),
55
+ (
56
+ ".subckt pplus_u_m2 1 2 3 lr=lr wr=wr dtemp=0",
57
+ ".subckt pplus_u_m2 1 2 3 lr=-1 wr=-1 dtemp=0"
58
+ ),
59
+ ],
60
+ }
61
+
62
+
63
+ family_map_update = {
64
+ ("mos", 54, None): ("spice/bsim4v8.osdi", "sp_bsim4v8", {}),
65
+ ("mos", 54, "4.5"): ("spice/bsim4v8.osdi", "sp_bsim4v8", {}),
66
+ ("mos", 54, "4.6"): ("spice/bsim4v8.osdi", "sp_bsim4v8", {}),
67
+ }
68
+
69
+ remove_model_params_update = {
70
+ "sp_bsim4v8": {
71
+ "rgeomod"
72
+ }
73
+ }
74
+
75
+ subckt_multiplier_update = {}
76
+
77
+ if __name__ == "__main__":
78
+ # Environment
79
+ pdkroot = os.getenv("PDK_ROOT")
80
+ if pdkroot is None:
81
+ print("The PDK_ROOT environmental variable must point to the PDK directory.")
82
+ sys.exit(1)
83
+ pdk = os.getenv("PDK")
84
+ if pdk is None:
85
+ pdk = "gf180mcuD"
86
+
87
+ # Source directories
88
+ tech_src = os.path.realpath(os.path.join(pdkroot, pdk, "libs.tech", "ngspice"))
89
+ # Source directory (stdcell)
90
+ stdcell_src = os.path.realpath(os.path.join(pdkroot, pdk, "libs.ref", "gf180mcu_fd_sc_mcu9t5v0", "spice"))
91
+ # Source directory (io)
92
+ io_src = os.path.realpath(os.path.join(pdkroot, pdk, "libs.ref", "gf180mcu_fd_io", "spice"))
93
+
94
+ # Convert tech files
95
+ osdi_files = set()
96
+ dflmods = set()
97
+ print("Converting technology files")
98
+
99
+ # extra file
100
+ file, read_process_depth, output_depth, output_name = tech_file2
101
+ destpath = output_path + output_name
102
+ cfg = default_config()
103
+ cfg.update({
104
+ "default_model_prefix": "gf180_default_mod_",
105
+ "sourcepath": [".", tech_src, stdcell_src, io_src],
106
+ "read_depth": read_process_depth,
107
+ "process_depth": read_process_depth,
108
+ "output_depth": output_depth,
109
+ "patch": patches,
110
+ "original_case_subckt": True,
111
+ "original_case_model": True,
112
+ })
113
+ cfg["family_map"].update(family_map_update)
114
+ cfg["remove_model_params"].update(remove_model_params_update)
115
+ cfg["subckt_multiplier"].update(subckt_multiplier_update)
116
+ cfg["signature"] = "// Converted from GlobalFoundries gf180mcuD PDK for Ngspice\n"
117
+
118
+ cvt = Converter(cfg, indent=4, debug=1)
119
+ cvt.convert(file, destpath)
120
+
121
+ # multiple sections in the same file
122
+ for section, read_process_depth, output_depth, output_name in sections:
123
+ print(" ", tech_file, "section", section)
124
+ destpath = output_path + output_name
125
+
126
+ cfg = default_config()
127
+ cfg.update({
128
+ "default_model_prefix": "gf180_default_mod_",
129
+ "sourcepath": [".", tech_src, stdcell_src, io_src],
130
+ "read_depth": read_process_depth,
131
+ "process_depth": read_process_depth,
132
+ "output_depth": output_depth,
133
+ "patch": patches,
134
+ "original_case_subckt": True,
135
+ "original_case_model": True,
136
+ })
137
+ cfg["family_map"].update(family_map_update)
138
+ cfg["remove_model_params"].update(remove_model_params_update)
139
+ cfg["subckt_multiplier"].update(subckt_multiplier_update)
140
+ cfg["signature"] = "// Converted from GlobalFoundries gf180mcuD PDK for Ngspice\n"
141
+
142
+ cvt = Converter(cfg, indent=4, debug=1)
143
+ cvt.convert(tech_file, destpath, section)
144
+
145
+ # OSDI files based on defined and used models
146
+ for mname, in_sub in cvt.data["model_usage"]:
147
+ if (None, in_sub) in cvt.data["models"]:
148
+ # simple models
149
+ if mname in cvt.data["models"][(None, in_sub)]:
150
+ builtin, mtype, family, level, version, _ = cvt.data["models"][(None, in_sub)][mname]
151
+ k = family, level, version
152
+ if k in cvt.cfg["family_map"]:
153
+ osdi_file, _, _ = cvt.cfg["family_map"][k]
154
+ osdi_files.add(osdi_file)
155
+ else:
156
+ # binned models
157
+ if mname in cvt.data["bins"][(None, in_sub)]:
158
+ builtin, mtype, family, level, version, _ = cvt.data["bins"][(None, in_sub)][mname][0]
159
+ k = family, level, version
160
+ if k in cvt.cfg["family_map"]:
161
+ osdi_file, _, _ = cvt.cfg["family_map"][k]
162
+ osdi_files.add(osdi_file)
163
+
164
+ # OSDI files based on builtin models
165
+ for mt in cvt.data["default_models_needed"]:
166
+ osdi_file, module = cvt.cfg["default_models"][mt]
167
+ osdi_files.add(osdi_file)
168
+ dflmods.add((mt, module))
169
+ print("\n")
170
+
171
+
172
+ # Create .vacaskrc.toml
173
+ # with output path prefixes and path to osdi modules
174
+ print("Creating sample .vacaskrc.toml")
175
+ vacask_cfg = """# VACASK configuration file
176
+ [Paths]
177
+ include_path_prefix = [
178
+ "$(PDK_ROOT)/$(PDK)/libs.tech/vacask/models",
179
+ "$(PDK_ROOT)/$(PDK)/libs.ref/gf180mcu_fd_sc_mcu9t5v0/vacask",
180
+ "$(PDK_ROOT)/$(PDK)/libs.ref/gf180mcu_fd_io/vacask"
181
+ ]
182
+ module_path_prefix = ["/opt/vacask/lib/vacask/mod"]
183
+ """
184
+ with open(os.path.join(pdkroot, pdk, "libs.tech", "vacask", ".vacaskrc.toml"), "w") as f:
185
+ f.write(vacask_cfg)
186
+
187
+
188
+ # Common include file (load statements + default model declarations)
189
+ print("Creating common include file")
190
+ txt = ""
191
+ if len(osdi_files) > 0:
192
+ txt += "// OSDI files\n"
193
+ for f in sorted(list(osdi_files)):
194
+ txt += "load \"" + f + "\"\n"
195
+ if len(dflmods) > 0:
196
+ txt += "\n"
197
+ if len(dflmods) > 0:
198
+ txt += "// Default models\n"
199
+ for mt, module in sorted(dflmods, key=lambda p: p[0]):
200
+ txt += "model " + cfg["default_model_prefix"] + mt + " " + module + "\n"
201
+
202
+ common_include = os.path.realpath(
203
+ os.path.join(tech_src, "..", "vacask", "models", "gf180_vacask_common.lib")
204
+ )
205
+ print(" ", common_include)
206
+ os.makedirs(os.path.dirname(common_include), exist_ok=True)
207
+ with open(common_include, "w") as f:
208
+ f.write(txt)
209
+
210
+ # # Xschem symbol conversion
211
+ # if CONVERT_XSCHEM_SYMBOLS:
212
+
213
+
214
+ print("\nDone")
215
+
@@ -0,0 +1,60 @@
1
+ import os
2
+ from ._vacask.parser_output import PTParameterValue
3
+ from ._vacask.parser_output import PTParameterExpression
4
+ from ._vacask.parser_output import PTParsedIdentifier
5
+ from ._vacask.id import Id
6
+ from ._vacask.value import Value
7
+ from ._vacask.rpnexpr import Rpn
8
+ from ._vacask.compiler import OpenvafCompiler
9
+
10
+ def PV(ident:str, value) -> PTParameterValue:
11
+ """
12
+ Create a parameter value object.
13
+
14
+ Args:
15
+ ident (str): The identifier of the parameter.
16
+ value: The value of the parameter.
17
+
18
+ Returns:
19
+ PTParameterValue: A parameter value object.
20
+ """
21
+ return PTParameterValue(Id(ident), Value(value))
22
+
23
+ def PE(ident:str, expr: Rpn) -> PTParameterExpression:
24
+ """
25
+ Create a parameter expression object.
26
+
27
+ Args:
28
+ ident (str): The identifier of the parameter.
29
+ expr (Rpn): The RPN expression of the parameter.
30
+
31
+ Returns:
32
+ PTParameterExpression: A parameter expression object.
33
+ """
34
+ return PTParameterExpression(Id(ident), expr)
35
+
36
+ def PTIds(ids: list[str]) -> list[PTParsedIdentifier]:
37
+ """
38
+ Convert a list of string identifiers to a list of PTParsedIdentifier objects.
39
+
40
+ Args:
41
+ ids (list[str]): A list of string identifiers.
42
+
43
+ Returns:
44
+ list[PTParsedIdentifier]: A list of PTParsedIdentifier objects.
45
+ """
46
+ return [PTParsedIdentifier(Id(i)) for i in ids]
47
+
48
+ def OpenvafCompilerBuiltin() -> OpenvafCompiler:
49
+ """
50
+ Returns the pre-build in-packagen openvaf compililer object.
51
+
52
+ Args: /
53
+
54
+ Returns:
55
+ OpenvafCompiler: object
56
+ """
57
+ this_file = os.path.abspath(__file__)
58
+ this_dir = os.path.dirname(this_file)
59
+ _def_openvaf_path = os.path.normpath(os.path.join(this_dir, "bin", "openvaf-r"))
60
+ return OpenvafCompiler(_def_openvaf_path)