NyanCAD / Mosaic

A modern schematic entry and simulation program
https://nyancad.github.io/Mosaic/
Mozilla Public License 2.0
68 stars 5 forks source link

Backannotation of simulation results #18

Open pepijndevos opened 3 years ago

pepijndevos commented 3 years ago

The plan is that the simulation backend talks to the CouchDB database to retrieve the schematic, simulate it, and write annotations back into the database. This means the simulation can run in Python, Julia, Rust, whatever. Most likely in Jupyter or Pluto

There needs to be a flexible, extensible, configurable, intuitive way to store and display simulation results inside the schematic. Some basic use cases:

Operating point simulation that annotates the results onto the nets and devices. These are simple numbers per device.

AC simulation that could annotate things like... bandwidth and other derived properties like phase margin. But these don't belong to a specific device.

Transient simulations could annotate the plotting color so that the schematic can use the plot color for a visual connection between wire/port and plotted results. These are per device, but rich data types, not just numbers.

You could even embed entire plots inside the schematic. You could go full https://falstad.com/circuit/ or have like mini icon-size plots, that give you an idea of the shape of the signal at that node, without "details" such as the axis.

So hmmm on the one hand the basic stuff is mostly per-device, which is neat. But maybe there needs to be a standalone "annotation" component? It would not be much different from any other custom component, and no reason the backend can't add components.

Maybe these should just be added in the same framework as device properties. In that they are visible in the device panel, and can be selected as visible, and have some metadata associated about how to parse and display them and such.

Would it be a flat list, or scoped per simulation? I think a flat list would mooostly work out fine, and make things easy for displaying and such. But maybe there are situations where you want to annotate, say the gm of different speed corners, in that case you'd want like ff/gm tt/gm and so forth. I guess you could leave it up to the backend to generate unique names.

But I think... it's important to not turn the schematic into a full fledged result viewer. Annotations are to provide context and aid design. Not an entire datasheet or full-sized interactive plot.