Object Oriented Systems 600.421
Analysis Document
for
DIGCAD
A Digital Circuit Analysis and Design Application in VisualWorks
Table of Contents
Team Overview GUI Description CRC Analysis Usecase Analysis System Requirements Group DynamicsGROUP 12 TEAM
Circuits for Dummies - that is right, this is an application visualized primarily as an educational aid to students learning digital electronics. However, this application will be useful for those who would like (voluntarily or involuntarily) to spend time on designing and analyzing digital circuits. This application will act as a GUI tool for the logic design phase and, it will help the user to expand his knowledge by developing circuit libraries of his own.
The application opens a window which consists of a workspace and a menu. The description of menu is given in the section on GUI Description. A rudimentary diagram of the application window, as given below, will suffice for our discussion. When a user starts the application, he will have two options. He can either build a new circuit on the workspace or load an existing circuit from a file. We will provide functionality to save a circuit in a file and read it back.
Our application will run in two modes. The first will be the edit mode, in which user can make changes to the circuit like adding gates to the circuit, making connections and performing other actions to form a desired circuit. The other mode will be the simulation mode. The user will be able to switch from edit mode to simulation mode. In the simulation mode, the user will not be able to change the circuit. He will be able to change only the values of input components. These will be reflected instantaneously at the output.
To give a concrete example – In the edit mode, a user may choose a component called AND GATE by clicking on the AND GATE icon in the component submenu. A click anywhere in the workspace will reproduce the AND GATE there. Choosing connect from the operations submenu, a user can connect any two terminals through a wire. In this way, a user will be able to design a circuit. User can also connect an input device or output device to any terminal. More detailed use cases and a listing of all possible user actions are given in the Use-case Analysis. Similarly, to test an existing circuit in the simulation mode, the user will click on the input components in the circuit and choose the desired input. The output(s) shall be shown at the output component automatically.

The components available to the user will be the usual AND GATE, OR GATE, NOT GATE and other such memoryless components. Output of a memoryless component does not depend on its previous values. The input-output characteristics of such components can be described by a truth-table consisting of 0's and 1's. We also plan to introduce some components with memory e.g. FLIP-FLOPS. We have decided to provide flexibility to the user for his design and hence, we plan to give him the capability to make his own components (as an extension).These may be formed either by combining pre-existing components or by specifying the truth-table of the component. This extension is highest on our priority list.
Extensions
The following extensions are being proposed. They will be implemented, within the time constraints, in increasing order of difficulty as following
Here is a snapshot of the prototype of our GUI:
The GUI is composed of four field.
1.The menu bar. [ top, horizontal]
The menu bar on top gives user different choice of operation.
File menu enables user to create, save, or load a file, which
will be translated from/into a workspace similar
to the one shown below. It also provides exit from the application.
Mode menu allows the user to toggle between edit mode and simulate mode. Toggling to either mode will enable the relevant operation while disabling irrelevant ones. (Please refer to our use case analysis for more detail.)
Action menu enables user to
(1) Under edit mode: define the circuit in the current workspace as his
own component. The component will be saved to a file. Later user
can load the component from the component toolbox at left and use it in
his other design.
(2) Under simulate mode: Set input sequence. User can define input sequence(s)
to one or mutiple inputs.
Help button: Clicking on the help button will open a small browser window containing useful infomation.
2. The component toolbox: [ left, vertical]
The component toolbox works similarly to smalltalk's
palette in the UIpainter. User clicks on a button to drop a
component onto the workspace.
Besides gates which constitude the circuits, where are
also wires that connects the gates, nodes that help in complex connections,
switches that defines the input, and LED to show the output.
The User_defined component is a special unit. Clicking
on it will open a file manager to allow the user to choose the component
that he/she has created and saved previously.
The is a small field at the bottom of the component
box to help user identify each component. The name of any of the component
that is been clicked will be instantly displayed in this field.
3. The workspace.
The workspace displaces the circuit that the user
is designing. Under different mode, user can in this workspace
either:
(1)[ edit mode]
move, disconnect, or delete a gate;
disconnect or delete a wire;
(2) [simulate mode]
check to see the value of each component. The value and the component type
will be shown in the
console field at the bottom of the window.
The workspace is contained inside the GUI window.
Each time there can be only one workspace.
4. The console. [below, horizontal]
The console is the communicator between the application
and the user. Beside signalling operation status, under edit mode there
can be messages signify potential errors; while under simulate mode user
can find the value of any
component there each time he/she examines a certain component in the
workspace.
Two UML class diagrams given below represent the class organization of our project. The division of classes into two separate groups comes very naturally in our design and hence, the class diagrams were developed by two independent teams.
GUI class diagram
and Component class diagram .
A description of the classes of the project, their responsibilities and collaborators is given in the GUI class description and Component class description .
In the beginning of the circuit design, the user is requested to create a new workspace for his design. After that he can do the following things in two modes viz. the edit mode or simulate mode.
Edit Mode Actions
Simulation Mode Actions
Use Cases
Edit Mode Use-Cases
Use case overview: a use case diagram
We provide 4 use case analysis:
Initialize the application window.
Creating a component onto the WorkspaceView.
Creating a connection between two components.
Deleting a component.
Loading a Circuit.
Saving a Circuit.
Simulation Mode Use-Cases
Simulating an invalid circuit with a loop.
Simulating a valid circuit without a loop.
Simulating a circuit containing SR Flip-Flop.
We have decided to remain as a loose group of independent people without any particular group structure. To coordinate our meetings and maintain records of the proceedings and documents related to the project we have chosen Paritosh Tyagi as the Coordinator. Paritosh Tyagi shall be the coordinator of the group, and he will try to organize the meetings.
Each week, we have a meeting in which the responsibilities are identified and distributed to the members of the group. As the implementation of project starts there will be a more specific division of labor. For the Analysis document preparation we had divided the task into five subtasks. This division shall carry out for the Design Document too. As the details of the project become more clear, we plan to increase our interaction using email.
RoadMapAs mentioned earlier, our project consists of two main components. The logic implementation and the GUI implementation. We have planned to assign Yun Yiang Liu, Yan Gu and Paritosh Tyagi for the GUI implementation and Ankur Bhargava, Guiwen Liang for the Logic implementation.This is based on our view that the GUI part of the project will require more effort. However, no specific divion of labour has taken place as yet. We plan to divide the work among us in our weekly meetings. Moreever, this division allows for, one person to switch to logic from GUI, if the situation demands it