Bugs, Restrictions and Missing Features
Although relatively complete from an academic perspective, the layout
editor and simulator are missing some features which would significantly
enhance its functionality and practicality. These features are outlined
July 12, 1995
- Ideally, wires should not be permitted to overlap with components.
When you create or move a component the application will not let place
it on top of a wire or another component. However, wires themselves
may be moved on top of components.
- The user interface and simulator engine are (so far) restricted
to two-input AND, NAND, OR, NOR, XOR, XNOR gates and a signal input
buffer and NOT gate. While the simulator engine can be extended
relatively easily to handle other types of components, interfacing
these new components with the GUI is somewhat tedious (but not difficult).
- Using the Glue feature of the Edit section
of the toolbar creates sticky boxes. Therefore, if you create a glue
box, and then place a component inside of it, the component will stick
to the glue box. When you subsequently move the glue box, the component
will move with it. The same idea applies when you move a glue box on
top of a circuit element.
- There is no undo feature. The implementation of such a feature
should not be taken lightly. When and if such a feature is added, it
will probably be a single level undo.
- The simulator interface and engine are still in beta; therefore,
I cannot guarantee that the file format used to save the circuits
to a file will remain the same. Subsequent incompatible changes may be
introduced which may prevent a user from loading a circuit previously
created using an earlier version of this application.
- The signal editor can be clumsy to use at times. For example, it
is not easy to insert a signal at a given time unit -- all the subsequent
signals have to be advanced forward in time manually. The same idea applies
to deleting a signal or a group of signal values.
- Currently errors and exceptional circumstances are displayed on
standard output. Ideally, the should be displayed in a text widget that's
part of the layout editor or maybe even in a separate window.
- There is no online, context sensitive, hypertext help available.
- A ``mouse window'' should be developed that tells the user the
operation that will be performed when each of the three mouse buttons
are pressed during the current context.
- A solder point cannot be unsoldered. However, by introducing
a wire point next to the soldering point and then deleting the short
wire between the soldering connector and the wire point, a wire may
be broken off from the soldered point. The same idea can be used to
unsolder a port connection as well.
- The file loading mechanism is very sensitive to errors and does not
recover well. User modifications made to the circuit description files
may break the circuit description, thereby making the circuit file
unloadable. Of course, the application itself should never produce a bad
- The file selector box (used for opening and saving) is still flaky
- If a wire is attached to a port, the wire may not be moved. The
component and the wire's points themselves however may be moved.
- The GUI does not permit hierarchical composition of circuits even
though the simulator engine itself does support such composition.
- The delay of a component cannot yet be changed via the user interface.
July 13, 1995
- If you attempt to move/resize another window during the creation of
a toplevel window (e.g. the File Selector), Tk will produce a "grab failed"
error message. I'm not sure if there is a workaround for this.
July 14, 1995
Beta 0.0.0 - made available to a limited distribution.
- The mouse cursors defined for the application are not being displayed
correctly on by some X servers. This problem is under investigation.
- After the glue box has been drawn, all components inside the the
glue box should be highlight to indicated that they have been selected,
thereby providing immediate feedback to the user what items have been
- When a newly created component is dragged onto the canvas, highlight
it. Dehighlight it after the user has placed it on the canvas.
- Better consistency for all dialog boxes should be maintained.
For example, hitting <Return> should submit the dialog box, as if
the user had pressed the OK button.
- The simulator engine should support different delay models, such
as zero-delay and inertial delay models. Right now the simulator engine
only implements the transport delay model.
- Saving and loading of circuit files is too slow. However, given
the constraints of the interpreted nature of Tcl/Tk, increasing the speed
of these operations may be a problem.
- The user should be able to rotate a glue box of circuit items.
- If the wire spool hot spot is on top of a component's port and auto
soldering is on, then highlight the port.
- Glue boxes should be saved when the rest of the circuit is saved.
- There should be multilingual support built in. This should be
relatively easy to implement using associative arrays, but will be
- Maybe provide support for analog simulation?
July 17, 1995
- The layout editor caused a system lockup during editing.
(Unable to reproduce problem.)
- Transmitting the entire circuit description to the simulator engine
is potentially wasteful. Ideally, the circuit should only be transmitted
to the simulator when it has changed in some way.
July 22, 1995
- The user should have the ability to decrease the duration displayed
in the Signal Display window.
- The GUI should not let the user move items off the canvas so that
they cannot be retrieved. The biggest culprit for this is the glue
box. One possible workaround is to prohibit the user from ungluing
a glue box if it does not lie completely within the confines of the
- A user should be able to save different sets of inputs/output signals
for the same circuit description.
- If the user aborts the creation of a netlist after creating new
wire points on pre-existing wires, the wire points are not deleted.
The same thing happens when <BackSpace> is used to delete wires
during netlist creation.
- When moving a lot of items using a glue box, it may be faster to
just move the outline of the glue box rather than moving the glue box
and all the items inside of it.
- Different canvas mouse cursors should be used for the various editting
operations (e.g. Move, Delete, Modify etc.).
- The user should be able to print the circuit as well as the waveforms
using the PostScript capabilities of the canvas.
- The user should have the option of removing a signal from the
signal display without deleting the netlist label.
August 01, 1995
- The user interface should provide animation capabilties --- it
should show the actual signals travelling through their respective
netlists to and from components. This feature would require more active
communication between the GUI and the simulator engine and may even
entail an alternative approach to the simulator engine itself (i.e. a
breadth-first vs. a depth-first traversal mechanism).
- The GUI and simulator interaction should provide support for more
user intervention. The user should be able to pause/resume and stop a
simulation already in progress. Right now, the simulation is more batch
- The primitive circuit description language which the GUI uses to
save circuits' structural information should probably also be used when
the GUI transmits its circuit description to the simulator engine.
This will mean more information is transmitted over the pipe and that
the simulator engine will be required to do more work; however, this will
result in a consistent (single) protocol specification and will make
animation support easier to implement.
August 03, 1995
- There should be support for a Clock class in the simulation
hierarchy and in the GUI.
- The GUI should permit users to add NOT circles to the inputs
and outputs of gates. This would make the GUI more orthogonal since there
would be no need to for the GUI to explicitly support both AND
and NAND gates, for example.
Fri Apr 18 18:42:10 NDT 1997