Integration & Project Management¶
Block 6 ties all Studio components together: project save/load for persistent workspaces, and a full pipeline that chains network design through compilation to FPGA synthesis in a single action.
Project Save/Load¶
Save and restore complete Studio state — equations, parameters, network graph, synthesis target, training config — as JSON files on the server.
Save¶
Click Save in the Projects panel (left sidebar), enter a name. The
full state is serialised into the server-side Studio project workspace. The
API response is path-free and returns studio.project-save.v1 metadata with
SHA-256 digests for the project state and full saved project payload.
The Projects panel displays the returned evidence classification, project
name, state digest, project digest, and schema version after a successful save.
Load¶
Click a project name to restore all state: equations, model selection, parameters, network graph populations and projections, synthesis target, and the Training Monitor configuration. Positive timebase settings and finite numeric parameters are restored from saved values, including zero current, while malformed optional fields fall back to Studio defaults before the next simulation refresh.
Storage Format¶
{
"name": "my_network",
"saved_at": 1711504200.0,
"version": "0.3.0",
"state": {
"sourceMode": "model",
"selectedModelName": "LIFNeuron",
"graphPopulations": [...],
"graphProjections": [...],
"synthTarget": "ice40",
"trainingConfig": {...}
}
}
Full Pipeline¶
The pipeline runs from the Network Canvas with a single click:
Network Graph → Validate → Simulate → Compile → Synthesise
Steps¶
- Validate — check graph structure (populations exist, projections point to valid nodes, neuron count within 2000 limit)
- Simulate — run the E-I balanced network simulation
- Compile — generate SystemVerilog from LIF equations via the equation compiler
- Synthesise — run Yosys on the generated Verilog for the selected FPGA target (ice40, ECP5, Gowin, Xilinx)
If any step fails, the pipeline stops and reports which step failed and why.
Using the Pipeline¶
- Design your network on the Canvas tab
- Select FPGA target in the Synthesis Dashboard (or use default ice40)
- Click Pipeline → ICE40 (or whichever target) on the Canvas toolbar
- View results: simulation stats + synthesis resource usage
Hub Federation Manifest¶
The optional Hub-facing federation surface lives under
sc_neurocore.federation and is separate from this local Studio web app. It
declares the schema-A capability manifest, the eight advertised verbs, and the
evidence-bundle contracts consumed by SCPN Studio platform federation.
Install the optional SDK before generating or checking the committed manifest:
pip install "sc-neurocore[federation]"
python tools/emit_studio_manifest.py --check
The generated artifact is docs/_generated/studio_manifest.json; it stamps the
source package version and hashes the declared verbs plus evidence schemas, not
git state. API details and envelope examples are in
Studio Federation API.
API Endpoints¶
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/project/save |
Save project state |
| GET | /api/project/list |
List all saved projects |
| GET | /api/project/load/{name} |
Load a saved project |
| DELETE | /api/project/{name} |
Delete a saved project |
| POST | /api/pipeline/run |
Run full pipeline |
/api/pipeline/run executes through the Studio local worker manager. It keeps
the synchronous pipeline response used by the Network Canvas and also records a
studio-pipeline Admin queue job with the path-free result artifact
pipeline/result.json. The Network Canvas displays the same action-evidence
contract beside the terminal pipeline result, including evidence
classification, action kind, status, target, step, replay route, and the
pipeline/result.json plus pipeline/evidence.json artifact names.
POST /api/project/save¶
{"name": "my_network", "state": {"sourceMode": "model", ...}}
Returns path-free save evidence:
{
"evidence_classification": "project_workspace",
"name": "my_network",
"project_sha256": "<64 lowercase hex characters>",
"saved_at": 1711504200.0,
"schema_version": "studio.project-save.v1",
"state_sha256": "<64 lowercase hex characters>",
"status": "completed",
"version": "0.3.0"
}
The frontend stores this response and renders it as the latest project-save evidence strip in the Projects panel. The strip uses digest labels only; it does not render server filesystem paths.
POST /api/pipeline/run¶
{
"graph": {
"populations": [...],
"projections": [...],
"duration": 200.0
},
"target": "ice40"
}
Returns:
{
"success": true,
"target": "ice40",
"pipeline": "graph → simulate → compile → synthesise",
"steps": {
"validate": {"passed": true},
"simulate": {"n_spikes": 342, "n_total": 100},
"compile": {"chars": 1580, "module": "sc_pipeline_neuron"},
"synthesise": {"success": true, "target": "ice40", "resources": {...}}
}
}