SpiceX, graphical simulation of electronic circuits on Linux


The development processes are thought to manage the complexity of the system being programmed. In the rational unified process, the development is divided in four main phases:

- Inception:where the business risks of the system are analyzed. The main result of this phase is the decision of whether to continue or to stop the development of the system.
- Elaboration:where the technical risks of the system are focused. The aim of this phase is to build the system's main architecture.
- Construction:where the less important technical risks of the system are focused. The aim of this phase is to improve the implementation, and to prepare the release.
- Transition:where some iterations are dedicated to test the application, and to prepare the final release.

First Use Case: Create Circuit

Primary actor: User

Postconditions: The model of circuit is saved in a descriptive file.

Main Scenario:

  1. The User runs the System.
  2. The User initializes a project.
  3. The System creates a project.
  4. The System creates a connection surface.
  5. The System creates a connection grid.
  6. The User selects an electronic component from a graphical library.
  7. The User implements the connection surface, with the previously selected component.
  8. The System locates the electronic component at discrete locations, regarding the connection grid.
    User and System repeats the steps 6,7, and 8, until the circuit dispose of all the electronic components.
  9. The User selects the wire tool.
  10. The User connects pairs of electronic components, previously located in the surface.
  11. The System locates the wire at discrete locations, regarding the connection grid.
    User and System repeats the steps 10 and 11, until the User finishes.
  12. The User indicates the System to store the project.
  13. The System identifies and records the position of the components and wires at the connection surface.
  14. The System saves the project in a descriptive file.

Second Use Case: Simulate Circuit

Primary Actor: User

Preconditions: The User stores the project in a descriptive file, including the simulation parameters, and then he press the button to simulate the circuit.

Postconditions: The System creates a file to describe the electronic topology of the circuit: netlist; and the simulation is preformed by the Simulation Core: Spice.

Main Scenario:

  1. The System reads the descriptive file that stores the project's description.
  2. The System reads the simulation parameters previously selected by the User.
  3. The System generates the circuit's topological descriptive file: netlist; based on the specific rules of Spice.
  4. The System executes the Simulation Core, delivering the netlist file as parameter.
  5. The System tests the integrity of the circuit's electrical connections, by using the Simulation Core and its mechanism of errors detection.
  6. The Simulation Core performs the simulation of the model of circuit.

Third Use Case: Add Components

Primary Actor: User

Preconditions: The User has a library of components file for the Simulation Core: Spice. The User press a button to add new libraries.

Postconditions: The System generates a library file in SpiceX format, and it adds the library to the group of available graphical libraries.

Main Scenario:

  1. The User selects the Spice library file, by using a graphical interface.
  2. The System executes the Reader of Libraries.
  3. The Reader of Libraries analizes the component's library for Spice, and extracts the supported components.
  4. The Reader of Libraries gives the information of the extracted components to the Library of Components of SpiceX.
  5. The Library of Components of SpiceX generates a library file of components for SpiceX.
  6. The Library of Components adds the library file previously created to the configuration file of the SpiceX's graphical libraries (libconf.xml).

The fourth of the elaboration phase will be used to complete the previous use cases implemented in the program. Within the steps to perform are included:

  • Translation of the graphical classes' views to the goocanvas library (wrapped).
  • Improvement of the opening mechanism.
  • Inclusion of the rest of the analysis availables in the simulation cores.
  • Creation of a simple tutorial about building a circuit, to make easier the feedback from the users.

The documentation generated directly from the code by Doxygen, can be downloaded from the project's server: