{"configuration":{},"description":"YAML-driven orchestration of DC and CV measurements for NFET devices using GPIB/VISA instruments.","documentation":{},"id":2,"lastModifiedAgent":"structurizr-onpremises/dsl-editor/b1bf6043-c5d2-4852-8cd8-54d8b00d62fe","lastModifiedDate":"2026-01-13T09:34:10Z","lastModifiedUser":"dolejska","model":{"people":[{"description":"Configures devices and measurement recipes, runs characterization, inspects exported data and plots.","id":"1","location":"Unspecified","name":"Lab Operator","properties":{"structurizr.dsl.identifier":"laboperator"},"relationships":[{"description":"Runs experiments via","destinationId":"9","id":"33","properties":{"structurizr.dsl.identifier":"f3b17350-3ad3-44ec-b43c-8c5debe1fba2"},"sourceId":"1","tags":"Relationship"},{"description":"Runs experiments via","destinationId":"8","id":"34","linkedRelationshipId":"33","sourceId":"1"}],"tags":"Element,Person"},{"description":"Consumes exported datasets and plots for further analysis and reporting.","id":"2","location":"Unspecified","name":"Data Analyst","properties":{"structurizr.dsl.identifier":"dataconsumer"},"relationships":[{"description":"Reads exported datasets and plots from","destinationId":"7","id":"35","properties":{"structurizr.dsl.identifier":"2fa71912-c931-4c8d-a761-5026eb38d314"},"sourceId":"2","tags":"Relationship"}],"tags":"Element,Person"}],"properties":{"structurizr.groupSeparator":"/"},"softwareSystems":[{"description":"GPIB/VISA stack used to communicate with laboratory instruments (e.g., NI-VISA).","documentation":{},"id":"3","location":"Unspecified","name":"VISA Runtime","properties":{"structurizr.dsl.identifier":"visaruntime"},"relationships":[{"description":"GPIB/VISA session","destinationId":"4","id":"43","properties":{"structurizr.dsl.identifier":"3859011d-70e5-4d00-adfa-b579472ff0b7"},"sourceId":"3","tags":"Relationship"},{"description":"GPIB/VISA session","destinationId":"5","id":"44","properties":{"structurizr.dsl.identifier":"773df15c-00b6-4d14-95ae-2ca4199cf2b0"},"sourceId":"3","tags":"Relationship"},{"description":"GPIB/VISA session","destinationId":"6","id":"45","properties":{"structurizr.dsl.identifier":"8bb80988-de5f-4921-a0ec-17a6cf09879a"},"sourceId":"3","tags":"Relationship"}],"tags":"Element,Software System,External,Infra"},{"description":"SMU instrument controlled via GPIB/VISA. Config: k4200a.yaml.","documentation":{},"id":"4","location":"Unspecified","name":"Keithley 4200A-SCS","properties":{"structurizr.dsl.identifier":"keithley4200a"},"tags":"Element,Software System,External,Hardware"},{"description":"SMU/CV instrument controlled via GPIB/VISA. Config: b1500a.yaml.","documentation":{},"id":"5","location":"Unspecified","name":"Keysight B1500A","properties":{"structurizr.dsl.identifier":"keysightb1500a"},"tags":"Element,Software System,External,Hardware"},{"description":"Temperature controller controlled via GPIB/VISA. Config: lakeshore_1.yaml.","documentation":{},"id":"6","location":"Unspecified","name":"LakeShore 335","properties":{"structurizr.dsl.identifier":"lakeshore335"},"tags":"Element,Software System,External,Hardware"},{"description":"Filesystem or network storage holding exported datasets and plots.","documentation":{},"id":"7","location":"Unspecified","name":"Results Storage","properties":{"structurizr.dsl.identifier":"filestorage"},"tags":"Element,Software System,External,DataStore"},{"containers":[{"description":"Entry point for selecting device/module/structure and measurement recipe, and triggering runs.","documentation":{},"id":"9","name":"Experiment Runner UI","properties":{"structurizr.dsl.identifier":"operatorui"},"relationships":[{"description":"Start run / select device and recipe","destinationId":"11","id":"36","properties":{"structurizr.dsl.identifier":"2f05e2cd-a841-4cb9-bd03-8f51e15a5b9d"},"sourceId":"9","tags":"Relationship"}],"tags":"Element,Container","technology":"CLI / GUI / Notebook"},{"description":"YAML configuration set: device definitions (nfet.yaml), measurement recipes (DC_idvg.yaml, CV_idvg_leak.yaml), instrument configs (k4200a.yaml, b1500a.yaml, lakeshore_1.yaml), project metadata (project_2025_A1.yaml).","documentation":{},"id":"10","name":"Configuration Repository","properties":{"structurizr.dsl.identifier":"configrepo"},"tags":"Element,Container,DataStore","technology":"YAML files (versioned)"},{"components":[{"description":"Parses and validates YAML configs; resolves cross-references (e.g., default temperature controller).","documentation":{},"id":"12","name":"Config Loader","properties":{"structurizr.dsl.identifier":"configloader"},"tags":"Element,Component","technology":"YAML parser"},{"description":"Resolves device/module/structure selection and pad mapping using role-to-pad mapping (G/D/S/B) and structure-specific overrides.","documentation":{},"id":"13","name":"Device Registry","properties":{"structurizr.dsl.identifier":"deviceregistry"},"tags":"Element,Component","technology":"Domain component"},{"description":"Expands measurement recipes into execution plans: selects backend (k4200a/b1500a), maps SMU channels, expands frequency lists, and sweep ranges.","documentation":{},"id":"14","name":"Recipe Planner","properties":{"structurizr.dsl.identifier":"recipeplanner"},"tags":"Element,Component","technology":"Domain component"},{"description":"Runs init sequences, fixed-bias steps, sweeps, and per-frequency loops; enforces compliance limits; collects raw readings.","documentation":{},"id":"15","name":"Execution Engine","properties":{"structurizr.dsl.identifier":"executionengine"},"tags":"Element,Component","technology":"Control loop"},{"description":"Maps raw readings into the output schema (columns, units, sources) defined in recipe outputs.","documentation":{},"id":"16","name":"Result Normalizer","properties":{"structurizr.dsl.identifier":"resultnormalizer"},"tags":"Element,Component","technology":"ETL"},{"description":"Captures run metadata (wafer/module/device/measurement, setup id, temperature, instrument ids) and diagnostic logs.","documentation":{},"id":"17","name":"Run Logger","properties":{"structurizr.dsl.identifier":"runlogger"},"tags":"Element,Component","technology":"Logging"}],"description":"Loads YAML configs, plans executions, applies pad-role mappings, executes sweeps, collects outputs, and triggers export/plotting.","documentation":{},"id":"11","name":"Experiment Orchestrator","properties":{"structurizr.dsl.identifier":"orchestrator"},"relationships":[{"description":"Loads device, recipe, and instrument configs from","destinationId":"10","id":"37","properties":{"structurizr.dsl.identifier":"54f6099e-5a13-4f03-aacf-e6826228405c"},"sourceId":"11","tags":"Relationship"},{"description":"Executes planned measurement steps via","destinationId":"18","id":"38","properties":{"structurizr.dsl.identifier":"1bfd18e1-590c-4bd2-a4db-2e144d734350"},"sourceId":"11","tags":"Relationship"},{"description":"Sends normalized results to","destinationId":"26","id":"39","properties":{"structurizr.dsl.identifier":"747597aa-f450-49da-a2ff-7356e4417ab6"},"sourceId":"11","tags":"Relationship"}],"tags":"Element,Container","technology":"Application Service"},{"components":[{"description":"Creates and manages GPIB/VISA sessions; sends commands; receives responses; retries and timeouts.","documentation":{},"id":"19","name":"VISA Transport","properties":{"structurizr.dsl.identifier":"visatransport"},"tags":"Element,Component","technology":"VISA API"},{"description":"Implements SMU mapping (SMU1..SMU4) and init sequence defined in k4200a.yaml; performs DC Id-Vg execution.","documentation":{},"id":"20","name":"Keithley 4200A Adapter","properties":{"structurizr.dsl.identifier":"k4200aadapter"},"relationships":[{"description":"Uses","destinationId":"19","id":"23","properties":{"structurizr.dsl.identifier":"83837af4-4fde-4b03-98eb-922f7c91ecc7"},"sourceId":"20","tags":"Relationship"}],"tags":"Element,Component","technology":"Instrument adapter"},{"description":"Implements SMU biasing plus CVU/MFCMU control; supports open/short corrections per recipe.","documentation":{},"id":"21","name":"Keysight B1500A Adapter","properties":{"structurizr.dsl.identifier":"b1500aadapter"},"relationships":[{"description":"Uses","destinationId":"19","id":"24","properties":{"structurizr.dsl.identifier":"7f39877c-a09e-435d-a605-fb2b33d43da5"},"sourceId":"21","tags":"Relationship"}],"tags":"Element,Component","technology":"Instrument adapter"},{"description":"Implements remote mode setup and temperature readings.","documentation":{},"id":"22","name":"LakeShore 335 Adapter","properties":{"structurizr.dsl.identifier":"lakeshoreadapter"},"relationships":[{"description":"Uses","destinationId":"19","id":"25","properties":{"structurizr.dsl.identifier":"7c637c68-73cf-4bfa-b3d6-4a6355b01c26"},"sourceId":"22","tags":"Relationship"}],"tags":"Element,Component","technology":"Instrument adapter"}],"description":"Backend adapters and command emitters for each instrument family; normalizes readings and errors.","documentation":{},"id":"18","name":"Instrument Abstraction Layer","properties":{"structurizr.dsl.identifier":"instrumentlayer"},"relationships":[{"description":"Communicates via","destinationId":"3","id":"41","properties":{"structurizr.dsl.identifier":"77063d73-8bcb-4174-b34a-d65b117d8bb7"},"sourceId":"18","tags":"Relationship"}],"tags":"Element,Container","technology":"Driver layer over VISA/GPIB"},{"components":[{"description":"Writes tabular data using recipe output schema (e.g., Vg, Vd, Id, Ig, C, G, f, T, setup).","documentation":{},"id":"27","name":"Dataset Writer","properties":{"structurizr.dsl.identifier":"datasetwriter"},"relationships":[{"description":"Writes datasets to","destinationId":"7","id":"29","properties":{"structurizr.dsl.identifier":"64712ae5-575b-495b-ae86-c33a8e94ab73"},"sourceId":"27","tags":"Relationship"}],"tags":"Element,Component","technology":"Writer"},{"description":"Renders plots defined in recipes (defaults plus plot definitions, split/group rules) and exports images using filename templates.","documentation":{},"id":"28","name":"Plot Renderer","properties":{"structurizr.dsl.identifier":"plotrenderer"},"relationships":[{"description":"Writes plot images to","destinationId":"7","id":"32","properties":{"structurizr.dsl.identifier":"f46f88b0-72c5-4cae-8228-51236f21b787"},"sourceId":"28","tags":"Relationship"}],"tags":"Element,Component","technology":"Plotting"}],"description":"Writes tabular outputs per recipe (columns, units, sources) and renders plots per plotting definitions to PNG.","documentation":{},"id":"26","name":"Export and Plotting Pipeline","properties":{"structurizr.dsl.identifier":"exportpipeline"},"relationships":[{"description":"Writes datasets to","destinationId":"7","id":"30","linkedRelationshipId":"29","sourceId":"26"},{"description":"Exports datasets and plots to","destinationId":"7","id":"40","properties":{"structurizr.dsl.identifier":"12a28760-eda9-404e-ad9c-b8710f21fb45"},"sourceId":"26","tags":"Relationship"}],"tags":"Element,Container","technology":"Batch export + plotting"}],"description":"Runs DC Id-Vg and CV recipes defined in YAML against devices defined in YAML, controls instruments, exports results and plots.","documentation":{},"id":"8","location":"Unspecified","name":"Device Characterization Platform","properties":{"structurizr.dsl.identifier":"characterizationplatform"},"relationships":[{"description":"Writes datasets to","destinationId":"7","id":"31","linkedRelationshipId":"29","sourceId":"8"},{"description":"Communicates via","destinationId":"3","id":"42","linkedRelationshipId":"41","sourceId":"8"}],"tags":"Element,Software System,Internal,SoftwareSystem"}]},"name":"VUT Device Characterization Platform","properties":{"structurizr.dsl":"d29ya3NwYWNlICJWVVQgRGV2aWNlIENoYXJhY3Rlcml6YXRpb24gUGxhdGZvcm0iICJZQU1MLWRyaXZlbiBvcmNoZXN0cmF0aW9uIG9mIERDIGFuZCBDViBtZWFzdXJlbWVudHMgZm9yIE5GRVQgZGV2aWNlcyB1c2luZyBHUElCL1ZJU0EgaW5zdHJ1bWVudHMuIiB7CgogIG1vZGVsIHsKICAgIHByb3BlcnRpZXMgewogICAgICAic3RydWN0dXJpenIuZ3JvdXBTZXBhcmF0b3IiICIvIgogICAgfQoKICAgIGxhYk9wZXJhdG9yID0gcGVyc29uICJMYWIgT3BlcmF0b3IiICJDb25maWd1cmVzIGRldmljZXMgYW5kIG1lYXN1cmVtZW50IHJlY2lwZXMsIHJ1bnMgY2hhcmFjdGVyaXphdGlvbiwgaW5zcGVjdHMgZXhwb3J0ZWQgZGF0YSBhbmQgcGxvdHMuIiB7CiAgICAgIHRhZ3MgIlBlcnNvbiIKICAgIH0KCiAgICBkYXRhQ29uc3VtZXIgPSBwZXJzb24gIkRhdGEgQW5hbHlzdCIgIkNvbnN1bWVzIGV4cG9ydGVkIGRhdGFzZXRzIGFuZCBwbG90cyBmb3IgZnVydGhlciBhbmFseXNpcyBhbmQgcmVwb3J0aW5nLiIgewogICAgICB0YWdzICJQZXJzb24iCiAgICB9CgogICAgdmlzYVJ1bnRpbWUgPSBzb2Z0d2FyZVN5c3RlbSAiVklTQSBSdW50aW1lIiAiR1BJQi9WSVNBIHN0YWNrIHVzZWQgdG8gY29tbXVuaWNhdGUgd2l0aCBsYWJvcmF0b3J5IGluc3RydW1lbnRzIChlLmcuLCBOSS1WSVNBKS4iIHsKICAgICAgdGFncyAiRXh0ZXJuYWwsSW5mcmEiCiAgICB9CgogICAga2VpdGhsZXk0MjAwYSA9IHNvZnR3YXJlU3lzdGVtICJLZWl0aGxleSA0MjAwQS1TQ1MiICJTTVUgaW5zdHJ1bWVudCBjb250cm9sbGVkIHZpYSBHUElCL1ZJU0EuIENvbmZpZzogazQyMDBhLnlhbWwuIiB7CiAgICAgIHRhZ3MgIkV4dGVybmFsLEhhcmR3YXJlIgogICAgfQoKICAgIGtleXNpZ2h0QjE1MDBBID0gc29mdHdhcmVTeXN0ZW0gIktleXNpZ2h0IEIxNTAwQSIgIlNNVS9DViBpbnN0cnVtZW50IGNvbnRyb2xsZWQgdmlhIEdQSUIvVklTQS4gQ29uZmlnOiBiMTUwMGEueWFtbC4iIHsKICAgICAgdGFncyAiRXh0ZXJuYWwsSGFyZHdhcmUiCiAgICB9CgogICAgbGFrZXNob3JlMzM1ID0gc29mdHdhcmVTeXN0ZW0gIkxha2VTaG9yZSAzMzUiICJUZW1wZXJhdHVyZSBjb250cm9sbGVyIGNvbnRyb2xsZWQgdmlhIEdQSUIvVklTQS4gQ29uZmlnOiBsYWtlc2hvcmVfMS55YW1sLiIgewogICAgICB0YWdzICJFeHRlcm5hbCxIYXJkd2FyZSIKICAgIH0KCiAgICBmaWxlU3RvcmFnZSA9IHNvZnR3YXJlU3lzdGVtICJSZXN1bHRzIFN0b3JhZ2UiICJGaWxlc3lzdGVtIG9yIG5ldHdvcmsgc3RvcmFnZSBob2xkaW5nIGV4cG9ydGVkIGRhdGFzZXRzIGFuZCBwbG90cy4iIHsKICAgICAgdGFncyAiRXh0ZXJuYWwsRGF0YVN0b3JlIgogICAgfQoKICAgIGNoYXJhY3Rlcml6YXRpb25QbGF0Zm9ybSA9IHNvZnR3YXJlU3lzdGVtICJEZXZpY2UgQ2hhcmFjdGVyaXphdGlvbiBQbGF0Zm9ybSIgIlJ1bnMgREMgSWQtVmcgYW5kIENWIHJlY2lwZXMgZGVmaW5lZCBpbiBZQU1MIGFnYWluc3QgZGV2aWNlcyBkZWZpbmVkIGluIFlBTUwsIGNvbnRyb2xzIGluc3RydW1lbnRzLCBleHBvcnRzIHJlc3VsdHMgYW5kIHBsb3RzLiIgewogICAgICB0YWdzICJJbnRlcm5hbCxTb2Z0d2FyZVN5c3RlbSIKCiAgICAgIG9wZXJhdG9yVUkgPSBjb250YWluZXIgIkV4cGVyaW1lbnQgUnVubmVyIFVJIiAiRW50cnkgcG9pbnQgZm9yIHNlbGVjdGluZyBkZXZpY2UvbW9kdWxlL3N0cnVjdHVyZSBhbmQgbWVhc3VyZW1lbnQgcmVjaXBlLCBhbmQgdHJpZ2dlcmluZyBydW5zLiIgIkNMSSAvIEdVSSAvIE5vdGVib29rIiB7CiAgICAgICAgdGFncyAiQ29udGFpbmVyIgogICAgICB9CgogICAgICBjb25maWdSZXBvID0gY29udGFpbmVyICJDb25maWd1cmF0aW9uIFJlcG9zaXRvcnkiICJZQU1MIGNvbmZpZ3VyYXRpb24gc2V0OiBkZXZpY2UgZGVmaW5pdGlvbnMgKG5mZXQueWFtbCksIG1lYXN1cmVtZW50IHJlY2lwZXMgKERDX2lkdmcueWFtbCwgQ1ZfaWR2Z19sZWFrLnlhbWwpLCBpbnN0cnVtZW50IGNvbmZpZ3MgKGs0MjAwYS55YW1sLCBiMTUwMGEueWFtbCwgbGFrZXNob3JlXzEueWFtbCksIHByb2plY3QgbWV0YWRhdGEgKHByb2plY3RfMjAyNV9BMS55YW1sKS4iICJZQU1MIGZpbGVzICh2ZXJzaW9uZWQpIiB7CiAgICAgICAgdGFncyAiQ29udGFpbmVyLERhdGFTdG9yZSIKICAgICAgfQoKICAgICAgb3JjaGVzdHJhdG9yID0gY29udGFpbmVyICJFeHBlcmltZW50IE9yY2hlc3RyYXRvciIgIkxvYWRzIFlBTUwgY29uZmlncywgcGxhbnMgZXhlY3V0aW9ucywgYXBwbGllcyBwYWQtcm9sZSBtYXBwaW5ncywgZXhlY3V0ZXMgc3dlZXBzLCBjb2xsZWN0cyBvdXRwdXRzLCBhbmQgdHJpZ2dlcnMgZXhwb3J0L3Bsb3R0aW5nLiIgIkFwcGxpY2F0aW9uIFNlcnZpY2UiIHsKICAgICAgICB0YWdzICJDb250YWluZXIiCgogICAgICAgIGNvbmZpZ0xvYWRlciA9IGNvbXBvbmVudCAiQ29uZmlnIExvYWRlciIgIlBhcnNlcyBhbmQgdmFsaWRhdGVzIFlBTUwgY29uZmlnczsgcmVzb2x2ZXMgY3Jvc3MtcmVmZXJlbmNlcyAoZS5nLiwgZGVmYXVsdCB0ZW1wZXJhdHVyZSBjb250cm9sbGVyKS4iICJZQU1MIHBhcnNlciIgewogICAgICAgICAgdGFncyAiQ29tcG9uZW50IgogICAgICAgIH0KCiAgICAgICAgZGV2aWNlUmVnaXN0cnkgPSBjb21wb25lbnQgIkRldmljZSBSZWdpc3RyeSIgIlJlc29sdmVzIGRldmljZS9tb2R1bGUvc3RydWN0dXJlIHNlbGVjdGlvbiBhbmQgcGFkIG1hcHBpbmcgdXNpbmcgcm9sZS10by1wYWQgbWFwcGluZyAoRy9EL1MvQikgYW5kIHN0cnVjdHVyZS1zcGVjaWZpYyBvdmVycmlkZXMuIiAiRG9tYWluIGNvbXBvbmVudCIgewogICAgICAgICAgdGFncyAiQ29tcG9uZW50IgogICAgICAgIH0KCiAgICAgICAgcmVjaXBlUGxhbm5lciA9IGNvbXBvbmVudCAiUmVjaXBlIFBsYW5uZXIiICJFeHBhbmRzIG1lYXN1cmVtZW50IHJlY2lwZXMgaW50byBleGVjdXRpb24gcGxhbnM6IHNlbGVjdHMgYmFja2VuZCAoazQyMDBhL2IxNTAwYSksIG1hcHMgU01VIGNoYW5uZWxzLCBleHBhbmRzIGZyZXF1ZW5jeSBsaXN0cywgYW5kIHN3ZWVwIHJhbmdlcy4iICJEb21haW4gY29tcG9uZW50IiB7CiAgICAgICAgICB0YWdzICJDb21wb25lbnQiCiAgICAgICAgfQoKICAgICAgICBleGVjdXRpb25FbmdpbmUgPSBjb21wb25lbnQgIkV4ZWN1dGlvbiBFbmdpbmUiICJSdW5zIGluaXQgc2VxdWVuY2VzLCBmaXhlZC1iaWFzIHN0ZXBzLCBzd2VlcHMsIGFuZCBwZXItZnJlcXVlbmN5IGxvb3BzOyBlbmZvcmNlcyBjb21wbGlhbmNlIGxpbWl0czsgY29sbGVjdHMgcmF3IHJlYWRpbmdzLiIgIkNvbnRyb2wgbG9vcCIgewogICAgICAgICAgdGFncyAiQ29tcG9uZW50IgogICAgICAgIH0KCiAgICAgICAgcmVzdWx0Tm9ybWFsaXplciA9IGNvbXBvbmVudCAiUmVzdWx0IE5vcm1hbGl6ZXIiICJNYXBzIHJhdyByZWFkaW5ncyBpbnRvIHRoZSBvdXRwdXQgc2NoZW1hIChjb2x1bW5zLCB1bml0cywgc291cmNlcykgZGVmaW5lZCBpbiByZWNpcGUgb3V0cHV0cy4iICJFVEwiIHsKICAgICAgICAgIHRhZ3MgIkNvbXBvbmVudCIKICAgICAgICB9CgogICAgICAgIHJ1bkxvZ2dlciA9IGNvbXBvbmVudCAiUnVuIExvZ2dlciIgIkNhcHR1cmVzIHJ1biBtZXRhZGF0YSAod2FmZXIvbW9kdWxlL2RldmljZS9tZWFzdXJlbWVudCwgc2V0dXAgaWQsIHRlbXBlcmF0dXJlLCBpbnN0cnVtZW50IGlkcykgYW5kIGRpYWdub3N0aWMgbG9ncy4iICJMb2dnaW5nIiB7CiAgICAgICAgICB0YWdzICJDb21wb25lbnQiCiAgICAgICAgfQogICAgICB9CgogICAgICBpbnN0cnVtZW50TGF5ZXIgPSBjb250YWluZXIgIkluc3RydW1lbnQgQWJzdHJhY3Rpb24gTGF5ZXIiICJCYWNrZW5kIGFkYXB0ZXJzIGFuZCBjb21tYW5kIGVtaXR0ZXJzIGZvciBlYWNoIGluc3RydW1lbnQgZmFtaWx5OyBub3JtYWxpemVzIHJlYWRpbmdzIGFuZCBlcnJvcnMuIiAiRHJpdmVyIGxheWVyIG92ZXIgVklTQS9HUElCIiB7CiAgICAgICAgdGFncyAiQ29udGFpbmVyIgoKICAgICAgICB2aXNhVHJhbnNwb3J0ID0gY29tcG9uZW50ICJWSVNBIFRyYW5zcG9ydCIgIkNyZWF0ZXMgYW5kIG1hbmFnZXMgR1BJQi9WSVNBIHNlc3Npb25zOyBzZW5kcyBjb21tYW5kczsgcmVjZWl2ZXMgcmVzcG9uc2VzOyByZXRyaWVzIGFuZCB0aW1lb3V0cy4iICJWSVNBIEFQSSIgewogICAgICAgICAgdGFncyAiQ29tcG9uZW50IgogICAgICAgIH0KCiAgICAgICAgazQyMDBhQWRhcHRlciA9IGNvbXBvbmVudCAiS2VpdGhsZXkgNDIwMEEgQWRhcHRlciIgIkltcGxlbWVudHMgU01VIG1hcHBpbmcgKFNNVTEuLlNNVTQpIGFuZCBpbml0IHNlcXVlbmNlIGRlZmluZWQgaW4gazQyMDBhLnlhbWw7IHBlcmZvcm1zIERDIElkLVZnIGV4ZWN1dGlvbi4iICJJbnN0cnVtZW50IGFkYXB0ZXIiIHsKICAgICAgICAgIHRhZ3MgIkNvbXBvbmVudCIKICAgICAgICB9CgogICAgICAgIGIxNTAwYUFkYXB0ZXIgPSBjb21wb25lbnQgIktleXNpZ2h0IEIxNTAwQSBBZGFwdGVyIiAiSW1wbGVtZW50cyBTTVUgYmlhc2luZyBwbHVzIENWVS9NRkNNVSBjb250cm9sOyBzdXBwb3J0cyBvcGVuL3Nob3J0IGNvcnJlY3Rpb25zIHBlciByZWNpcGUuIiAiSW5zdHJ1bWVudCBhZGFwdGVyIiB7CiAgICAgICAgICB0YWdzICJDb21wb25lbnQiCiAgICAgICAgfQoKICAgICAgICBsYWtlc2hvcmVBZGFwdGVyID0gY29tcG9uZW50ICJMYWtlU2hvcmUgMzM1IEFkYXB0ZXIiICJJbXBsZW1lbnRzIHJlbW90ZSBtb2RlIHNldHVwIGFuZCB0ZW1wZXJhdHVyZSByZWFkaW5ncy4iICJJbnN0cnVtZW50IGFkYXB0ZXIiIHsKICAgICAgICAgIHRhZ3MgIkNvbXBvbmVudCIKICAgICAgICB9CgogICAgICAgIGs0MjAwYUFkYXB0ZXIgLT4gdmlzYVRyYW5zcG9ydCAiVXNlcyIKICAgICAgICBiMTUwMGFBZGFwdGVyIC0+IHZpc2FUcmFuc3BvcnQgIlVzZXMiCiAgICAgICAgbGFrZXNob3JlQWRhcHRlciAtPiB2aXNhVHJhbnNwb3J0ICJVc2VzIgogICAgICB9CgogICAgICBleHBvcnRQaXBlbGluZSA9IGNvbnRhaW5lciAiRXhwb3J0IGFuZCBQbG90dGluZyBQaXBlbGluZSIgIldyaXRlcyB0YWJ1bGFyIG91dHB1dHMgcGVyIHJlY2lwZSAoY29sdW1ucywgdW5pdHMsIHNvdXJjZXMpIGFuZCByZW5kZXJzIHBsb3RzIHBlciBwbG90dGluZyBkZWZpbml0aW9ucyB0byBQTkcuIiAiQmF0Y2ggZXhwb3J0ICsgcGxvdHRpbmciIHsKICAgICAgICB0YWdzICJDb250YWluZXIiCgogICAgICAgIGRhdGFzZXRXcml0ZXIgPSBjb21wb25lbnQgIkRhdGFzZXQgV3JpdGVyIiAiV3JpdGVzIHRhYnVsYXIgZGF0YSB1c2luZyByZWNpcGUgb3V0cHV0IHNjaGVtYSAoZS5nLiwgVmcsIFZkLCBJZCwgSWcsIEMsIEcsIGYsIFQsIHNldHVwKS4iICJXcml0ZXIiIHsKICAgICAgICAgIHRhZ3MgIkNvbXBvbmVudCIKICAgICAgICB9CgogICAgICAgIHBsb3RSZW5kZXJlciA9IGNvbXBvbmVudCAiUGxvdCBSZW5kZXJlciIgIlJlbmRlcnMgcGxvdHMgZGVmaW5lZCBpbiByZWNpcGVzIChkZWZhdWx0cyBwbHVzIHBsb3QgZGVmaW5pdGlvbnMsIHNwbGl0L2dyb3VwIHJ1bGVzKSBhbmQgZXhwb3J0cyBpbWFnZXMgdXNpbmcgZmlsZW5hbWUgdGVtcGxhdGVzLiIgIlBsb3R0aW5nIiB7CiAgICAgICAgICB0YWdzICJDb21wb25lbnQiCiAgICAgICAgfQoKICAgICAgICBkYXRhc2V0V3JpdGVyIC0+IGZpbGVTdG9yYWdlICJXcml0ZXMgZGF0YXNldHMgdG8iCiAgICAgICAgcGxvdFJlbmRlcmVyIC0+IGZpbGVTdG9yYWdlICJXcml0ZXMgcGxvdCBpbWFnZXMgdG8iCiAgICAgIH0KICAgIH0KCiAgICBsYWJPcGVyYXRvciAtPiBvcGVyYXRvclVJICJSdW5zIGV4cGVyaW1lbnRzIHZpYSIKICAgIGRhdGFDb25zdW1lciAtPiBmaWxlU3RvcmFnZSAiUmVhZHMgZXhwb3J0ZWQgZGF0YXNldHMgYW5kIHBsb3RzIGZyb20iCgogICAgb3BlcmF0b3JVSSAtPiBvcmNoZXN0cmF0b3IgIlN0YXJ0IHJ1biAvIHNlbGVjdCBkZXZpY2UgYW5kIHJlY2lwZSIKICAgIG9yY2hlc3RyYXRvciAtPiBjb25maWdSZXBvICJMb2FkcyBkZXZpY2UsIHJlY2lwZSwgYW5kIGluc3RydW1lbnQgY29uZmlncyBmcm9tIgogICAgb3JjaGVzdHJhdG9yIC0+IGluc3RydW1lbnRMYXllciAiRXhlY3V0ZXMgcGxhbm5lZCBtZWFzdXJlbWVudCBzdGVwcyB2aWEiCiAgICBvcmNoZXN0cmF0b3IgLT4gZXhwb3J0UGlwZWxpbmUgIlNlbmRzIG5vcm1hbGl6ZWQgcmVzdWx0cyB0byIKICAgIGV4cG9ydFBpcGVsaW5lIC0+IGZpbGVTdG9yYWdlICJFeHBvcnRzIGRhdGFzZXRzIGFuZCBwbG90cyB0byIKCiAgICBpbnN0cnVtZW50TGF5ZXIgLT4gdmlzYVJ1bnRpbWUgIkNvbW11bmljYXRlcyB2aWEiCiAgICB2aXNhUnVudGltZSAtPiBrZWl0aGxleTQyMDBhICJHUElCL1ZJU0Egc2Vzc2lvbiIKICAgIHZpc2FSdW50aW1lIC0+IGtleXNpZ2h0QjE1MDBBICJHUElCL1ZJU0Egc2Vzc2lvbiIKICAgIHZpc2FSdW50aW1lIC0+IGxha2VzaG9yZTMzNSAiR1BJQi9WSVNBIHNlc3Npb24iCiAgfQoKICB2aWV3cyB7CiAgICBzeXN0ZW1Db250ZXh0IGNoYXJhY3Rlcml6YXRpb25QbGF0Zm9ybSAiU3lzdGVtQ29udGV4dCIgewogICAgICBkZXNjcmlwdGlvbiAiU3lzdGVtIGNvbnRleHQgZm9yIFlBTUwtZHJpdmVuIGRldmljZSBjaGFyYWN0ZXJpemF0aW9uIHVzaW5nIEdQSUIvVklTQSBsYWIgaW5zdHJ1bWVudHMuIgogICAgICBpbmNsdWRlIGxhYk9wZXJhdG9yCiAgICAgIGluY2x1ZGUgZGF0YUNvbnN1bWVyCiAgICAgIGluY2x1ZGUgY2hhcmFjdGVyaXphdGlvblBsYXRmb3JtCiAgICAgIGluY2x1ZGUgdmlzYVJ1bnRpbWUKICAgICAgaW5jbHVkZSBrZWl0aGxleTQyMDBhCiAgICAgIGluY2x1ZGUga2V5c2lnaHRCMTUwMEEKICAgICAgaW5jbHVkZSBsYWtlc2hvcmUzMzUKICAgICAgaW5jbHVkZSBmaWxlU3RvcmFnZQogICAgICBhdXRvbGF5b3V0IGxyCiAgICB9CgogICAgY29udGFpbmVyIGNoYXJhY3Rlcml6YXRpb25QbGF0Zm9ybSAiQ29udGFpbmVycyIgewogICAgICBkZXNjcmlwdGlvbiAiQ29udGFpbmVycyBmb3Igb3JjaGVzdHJhdGlvbiwgY29uZmlndXJhdGlvbiwgaW5zdHJ1bWVudCBhYnN0cmFjdGlvbiwgYW5kIGV4cG9ydC9wbG90dGluZy4iCiAgICAgIGluY2x1ZGUgKgogICAgICBhdXRvbGF5b3V0IGxyCiAgICB9CgogICAgY29tcG9uZW50IG9yY2hlc3RyYXRvciAiT3JjaGVzdHJhdG9yQ29tcG9uZW50cyIgewogICAgICBkZXNjcmlwdGlvbiAiQ29yZSBvcmNoZXN0cmF0aW9uIGNvbXBvbmVudHM6IGNvbmZpZyBsb2FkaW5nLCBkZXZpY2UgcmVzb2x1dGlvbiwgcGxhbm5pbmcsIGV4ZWN1dGlvbiwgbm9ybWFsaXphdGlvbiwgYW5kIGxvZ2dpbmcuIgogICAgICBpbmNsdWRlICoKICAgICAgYXV0b2xheW91dCBscgogICAgfQoKICAgIGNvbXBvbmVudCBpbnN0cnVtZW50TGF5ZXIgIkluc3RydW1lbnRMYXllckNvbXBvbmVudHMiIHsKICAgICAgZGVzY3JpcHRpb24gIkluc3RydW1lbnQgYWJzdHJhY3Rpb24gbGF5ZXIgY29tcG9uZW50czogVklTQSB0cmFuc3BvcnQgYW5kIGluc3RydW1lbnQtc3BlY2lmaWMgYWRhcHRlcnMuIgogICAgICBpbmNsdWRlICoKICAgICAgYXV0b2xheW91dCBscgogICAgfQoKICAgIGNvbXBvbmVudCBleHBvcnRQaXBlbGluZSAiRXhwb3J0QW5kUGxvdHRpbmdDb21wb25lbnRzIiB7CiAgICAgIGRlc2NyaXB0aW9uICJFeHBvcnQgYW5kIHBsb3R0aW5nIGNvbXBvbmVudHMgcHJvZHVjaW5nIGRhdGFzZXRzIGFuZCBQTkcgcGxvdHMgZnJvbSByZWNpcGUgZGVmaW5pdGlvbnMuIgogICAgICBpbmNsdWRlICoKICAgICAgYXV0b2xheW91dCBscgogICAgfQoKICAgIGR5bmFtaWMgY2hhcmFjdGVyaXphdGlvblBsYXRmb3JtICJEQ19JZFZnX1J1biIgewogICAgICBkZXNjcmlwdGlvbiAiVHlwaWNhbCBEQyBJZC1WZyBydW4gdXNpbmcgU01VIGluc3RydW1lbnQgYW5kIHRlbXBlcmF0dXJlIGNvbnRyb2xsZXIuIgogICAgICBsYWJPcGVyYXRvciAtPiBvcGVyYXRvclVJICJTZWxlY3RzIG1vZHVsZS9zdHJ1Y3R1cmUgYW5kIHN0YXJ0cyBEQyBJZC1WZyIKICAgICAgb3BlcmF0b3JVSSAtPiBvcmNoZXN0cmF0b3IgIlN0YXJ0UnVuKGRldmljZSwgcmVjaXBlKSIKICAgICAgb3JjaGVzdHJhdG9yIC0+IGNvbmZpZ1JlcG8gIkxvYWQgREMgcmVjaXBlICsgaW5zdHJ1bWVudCBjb25maWdzICsgZGV2aWNlIG1hcHBpbmciCiAgICAgIG9yY2hlc3RyYXRvciAtPiBpbnN0cnVtZW50TGF5ZXIgIkluaXRpYWxpemUgaW5zdHJ1bWVudHMgKGluaXQgc2VxdWVuY2UpIgogICAgICBpbnN0cnVtZW50TGF5ZXIgLT4gdmlzYVJ1bnRpbWUgIk9wZW4gVklTQSBzZXNzaW9uKHMpIgogICAgICB2aXNhUnVudGltZSAtPiBrZWl0aGxleTQyMDBhICJBcHBseSBpbml0IHNlcXVlbmNlIGFuZCBTTVUgbW9kZXMiCiAgICAgIHZpc2FSdW50aW1lIC0+IGxha2VzaG9yZTMzNSAiUmVhZCB0ZW1wZXJhdHVyZSIKICAgICAgb3JjaGVzdHJhdG9yIC0+IGluc3RydW1lbnRMYXllciAiRXhlY3V0ZSBWZyBzd2VlcCBhdCBmaXhlZCBWZCIKICAgICAgdmlzYVJ1bnRpbWUgLT4ga2VpdGhsZXk0MjAwYSAiU2V0IGJpYXMgYW5kIG1lYXN1cmUgSWQvSWcgcGVyIHN0ZXAiCiAgICAgIG9yY2hlc3RyYXRvciAtPiBleHBvcnRQaXBlbGluZSAiTm9ybWFsaXplIGFuZCBleHBvcnQiCiAgICAgIGV4cG9ydFBpcGVsaW5lIC0+IGZpbGVTdG9yYWdlICJXcml0ZSBkYXRhc2V0IGFuZCBwbG90cyIKICAgICAgYXV0b2xheW91dCBscgogICAgfQoKICAgIGR5bmFtaWMgY2hhcmFjdGVyaXphdGlvblBsYXRmb3JtICJDVl9SdW4iIHsKICAgICAgZGVzY3JpcHRpb24gIlR5cGljYWwgQ1YgcnVuIHVzaW5nIEIxNTAwQSBDVlUgd2l0aCBtdWx0aS1mcmVxdWVuY3kgc3dlZXAgYW5kIG9wdGlvbmFsIG9wZW4vc2hvcnQgY29ycmVjdGlvbnMuIgogICAgICBsYWJPcGVyYXRvciAtPiBvcGVyYXRvclVJICJTZWxlY3RzIHNldHVwIChDZ2cvQ2dzL0NnZC9DZ2IpIGFuZCBzdGFydHMgQ1YiCiAgICAgIG9wZXJhdG9yVUkgLT4gb3JjaGVzdHJhdG9yICJTdGFydFJ1bihkZXZpY2UsIHJlY2lwZSkiCiAgICAgIG9yY2hlc3RyYXRvciAtPiBjb25maWdSZXBvICJMb2FkIENWIHJlY2lwZSArIGIxNTAwYSBjb25maWcgKyBkZXZpY2UgbWFwcGluZyIKICAgICAgb3JjaGVzdHJhdG9yIC0+IGluc3RydW1lbnRMYXllciAiSW5pdGlhbGl6ZSBCMTUwMEEiCiAgICAgIHZpc2FSdW50aW1lIC0+IGtleXNpZ2h0QjE1MDBBICJDb25maWd1cmUgQ1ZVIChhbXAsIHJhbmdlLCBpbnRlZ3JhdGlvbiwgY29ycmVjdGlvbnMpIgogICAgICBvcmNoZXN0cmF0b3IgLT4gaW5zdHJ1bWVudExheWVyICJTZXQgZml4ZWQgREMgYmlhc2VzIgogICAgICBvcmNoZXN0cmF0b3IgLT4gaW5zdHJ1bWVudExheWVyICJGb3IgZWFjaCBmcmVxdWVuY3k6IGV4ZWN1dGUgVmcgc3dlZXAgYW5kIGFjcXVpcmUgQyxHIgogICAgICBvcmNoZXN0cmF0b3IgLT4gZXhwb3J0UGlwZWxpbmUgIk5vcm1hbGl6ZSBhbmQgZXhwb3J0IgogICAgICBleHBvcnRQaXBlbGluZSAtPiBmaWxlU3RvcmFnZSAiV3JpdGUgZGF0YXNldCBhbmQgcGxvdHMiCiAgICAgIGF1dG9sYXlvdXQgbHIKICAgIH0KCiAgICBzdHlsZXMgewogICAgICBlbGVtZW50ICJQZXJzb24iIHsKICAgICAgICBzaGFwZSBQZXJzb24KICAgICAgfQogICAgICBlbGVtZW50ICJTb2Z0d2FyZVN5c3RlbSIgewogICAgICAgIHNoYXBlIFJvdW5kZWRCb3gKICAgICAgfQogICAgICBlbGVtZW50ICJDb250YWluZXIiIHsKICAgICAgICBzaGFwZSBSb3VuZGVkQm94CiAgICAgIH0KICAgICAgZWxlbWVudCAiQ29tcG9uZW50IiB7CiAgICAgICAgc2hhcGUgQm94CiAgICAgIH0KCiAgICAgIGVsZW1lbnQgIkV4dGVybmFsIiB7CiAgICAgICAgb3BhY2l0eSA3MAogICAgICB9CiAgICAgIGVsZW1lbnQgIkhhcmR3YXJlIiB7CiAgICAgICAgc2hhcGUgSGV4YWdvbgogICAgICB9CiAgICAgIGVsZW1lbnQgIkRhdGFTdG9yZSIgewogICAgICAgIHNoYXBlIEN5bGluZGVyCiAgICAgIH0KICAgIH0KICB9Cn0K"},"revision":2,"views":{"componentViews":[{"automaticLayout":{"applied":true,"edgeSeparation":0,"implementation":"Graphviz","nodeSeparation":300,"rankDirection":"LeftRight","rankSeparation":300,"vertices":false},"containerId":"11","description":"Core orchestration components: config loading, device resolution, planning, execution, normalization, and logging.","dimensions":{"height":3811,"width":1512},"elements":[{"id":"12","x":531,"y":219},{"id":"13","x":531,"y":819},{"id":"14","x":531,"y":1419},{"id":"15","x":531,"y":2019},{"id":"16","x":531,"y":2619},{"id":"17","x":531,"y":3219}],"externalContainerBoundariesVisible":false,"key":"OrchestratorComponents","order":3},{"automaticLayout":{"applied":true,"edgeSeparation":0,"implementation":"Graphviz","nodeSeparation":300,"rankDirection":"LeftRight","rankSeparation":300,"vertices":false},"containerId":"18","description":"Instrument abstraction layer components: VISA transport and instrument-specific adapters.","dimensions":{"height":2011,"width":1640},"elements":[{"id":"19","x":970,"y":820},{"id":"20","x":220,"y":220},{"id":"21","x":220,"y":820},{"id":"22","x":220,"y":1420}],"externalContainerBoundariesVisible":false,"key":"InstrumentLayerComponents","order":4,"relationships":[{"id":"23"},{"id":"24"},{"id":"25"}]},{"automaticLayout":{"applied":true,"edgeSeparation":0,"implementation":"Graphviz","nodeSeparation":300,"rankDirection":"LeftRight","rankSeparation":300,"vertices":false},"containerId":"26","description":"Export and plotting components producing datasets and PNG plots from recipe definitions.","dimensions":{"height":1411,"width":1620},"elements":[{"id":"7","x":970,"y":520},{"id":"27","x":220,"y":220},{"id":"28","x":220,"y":820}],"externalContainerBoundariesVisible":false,"key":"ExportAndPlottingComponents","order":5,"relationships":[{"id":"29"},{"id":"32"}]}],"configuration":{"branding":{},"lastSavedView":"Containers","metadataSymbols":"SquareBrackets","styles":{"elements":[{"shape":"Person","tag":"Person"},{"shape":"RoundedBox","tag":"SoftwareSystem"},{"shape":"RoundedBox","tag":"Container"},{"shape":"Box","tag":"Component"},{"opacity":70,"tag":"External"},{"shape":"Hexagon","tag":"Hardware"},{"shape":"Cylinder","tag":"DataStore"}]},"terminology":{}},"containerViews":[{"automaticLayout":{"applied":true,"edgeSeparation":0,"implementation":"Graphviz","nodeSeparation":300,"rankDirection":"LeftRight","rankSeparation":300,"vertices":false},"description":"Containers for orchestration, configuration, instrument abstraction, and export/plotting.","dimensions":{"height":2011,"width":3800},"elements":[{"id":"1","x":200,"y":770},{"id":"3","x":3150,"y":220},{"id":"7","x":3150,"y":820},{"id":"9","x":900,"y":820},{"id":"10","x":2400,"y":1420},{"id":"11","x":1650,"y":820},{"id":"18","x":2400,"y":220},{"id":"26","x":2400,"y":820}],"externalSoftwareSystemBoundariesVisible":false,"key":"Containers","order":2,"relationships":[{"id":"30","vertices":[{"x":3000,"y":1120}]},{"id":"33"},{"id":"36"},{"id":"37"},{"id":"38"},{"id":"39"},{"id":"40","vertices":[{"x":3000,"y":820}]},{"id":"41"}],"softwareSystemId":"8"}],"dynamicViews":[{"automaticLayout":{"applied":true,"edgeSeparation":0,"implementation":"Graphviz","nodeSeparation":300,"rankDirection":"LeftRight","rankSeparation":300,"vertices":false},"description":"Typical DC Id-Vg run using SMU instrument and temperature controller.","dimensions":{"height":2012,"width":4550},"elementId":"8","elements":[{"id":"1","x":200,"y":471},{"id":"3","x":3150,"y":221},{"id":"4","x":3900,"y":221},{"id":"6","x":3900,"y":821},{"id":"7","x":3150,"y":821},{"id":"9","x":900,"y":521},{"id":"10","x":2400,"y":1421},{"id":"11","x":1650,"y":521},{"id":"18","x":2400,"y":221},{"id":"26","x":2400,"y":821}],"externalBoundariesVisible":false,"key":"DC_IdVg_Run","order":6,"relationships":[{"description":"Selects module/structure and starts DC Id-Vg","id":"33","order":"1","response":false},{"description":"StartRun(device, recipe)","id":"36","order":"2","response":false},{"description":"Load DC recipe + instrument configs + device mapping","id":"37","order":"3","response":false},{"description":"Initialize instruments (init sequence)","id":"38","order":"4","response":false,"vertices":[{"x":2305,"y":660}]},{"description":"Open VISA session(s)","id":"41","order":"5","response":false},{"description":"Apply init sequence and SMU modes","id":"43","order":"6","response":false,"vertices":[{"x":3741,"y":542}]},{"description":"Read temperature","id":"45","order":"7","response":false},{"description":"Execute Vg sweep at fixed Vd","id":"38","order":"8","response":false,"vertices":[{"x":2194,"y":381}]},{"description":"Set bias and measure Id/Ig per step","id":"43","order":"9","response":false,"vertices":[{"x":3758,"y":243}]},{"description":"Normalize and export","id":"39","order":"10","response":false},{"description":"Write dataset and plots","id":"30","order":"11","response":false}]},{"automaticLayout":{"applied":true,"edgeSeparation":0,"implementation":"Graphviz","nodeSeparation":300,"rankDirection":"LeftRight","rankSeparation":300,"vertices":false},"description":"Typical CV run using B1500A CVU with multi-frequency sweep and optional open/short corrections.","dimensions":{"height":2500,"width":3850},"elementId":"8","elements":[{"id":"1","x":225,"y":1258},{"id":"3","x":200,"y":199},{"id":"5","x":950,"y":199},{"id":"7","x":3200,"y":708},{"id":"9","x":950,"y":1308},{"id":"10","x":2450,"y":1908},{"id":"11","x":1700,"y":1308},{"id":"18","x":2450,"y":1308},{"id":"26","x":2450,"y":708}],"externalBoundariesVisible":false,"key":"CV_Run","order":7,"relationships":[{"description":"Selects setup (Cgg/Cgs/Cgd/Cgb) and starts CV","id":"33","order":"1","response":false},{"description":"StartRun(device, recipe)","id":"36","order":"2","response":false},{"description":"Load CV recipe + b1500a config + device mapping","id":"37","order":"3","response":false},{"description":"Initialize B1500A","id":"38","order":"4","response":false,"vertices":[{"x":2300,"y":1458}]},{"description":"Configure CVU (amp, range, integration, corrections)","id":"44","order":"5","response":false},{"description":"Set fixed DC biases","id":"38","order":"6","response":false,"vertices":[{"x":2300,"y":1308}]},{"description":"For each frequency: execute Vg sweep and acquire C,G","id":"38","order":"7","response":false,"vertices":[{"x":2300,"y":1608}]},{"description":"Normalize and export","id":"39","order":"8","response":false},{"description":"Write dataset and plots","id":"30","order":"9","response":false}]}],"systemContextViews":[{"automaticLayout":{"applied":false,"edgeSeparation":0,"implementation":"Graphviz","nodeSeparation":300,"rankDirection":"LeftRight","rankSeparation":300,"vertices":false},"description":"System context for YAML-driven device characterization using GPIB/VISA lab instruments.","elements":[{"id":"1","x":0,"y":0},{"id":"2","x":0,"y":0},{"id":"3","x":0,"y":0},{"id":"4","x":0,"y":0},{"id":"5","x":0,"y":0},{"id":"6","x":0,"y":0},{"id":"7","x":0,"y":0},{"id":"8","x":0,"y":0}],"enterpriseBoundaryVisible":true,"key":"SystemContext","order":1,"relationships":[{"id":"31"},{"id":"34"},{"id":"35"},{"id":"42"},{"id":"43"},{"id":"44"},{"id":"45"}],"softwareSystemId":"8"}]}}