You will be guided step-by-step through a the process of schematic
capture using Design Architect. The design that you will enter
is the following simple 2-1 multiplexor circuit:
.
Before you begin, make sure that you have created a directory called
mgc in your private directory. Enter this circuit as follows:
- Start Design Architect by typing da at a command
prompt.
- Whenever you first begin a Design Architect session,
make sure you are working in the directory you intend to use as the
root directory for your design. Select MGC -> Location Map -> Set
Working Directory: from the top menu bar and either verify or
change the entry in the dialog box which appears.
- Click on the OPEN SHEET icon or select
File -> Open -> Sheet from the menu bar.
- A dialog box will appear. You should click in the
Component Name box. Now, append /mux21 to
the path in the Component Name box to create a component
called ``mux21.'' When you're done, click on OK. Actually,
you can just type ``mux21'' and don't need the path that's displayed
unless you want to put your design in a different directory.
- You will see an empty sheet in the Design Architect
window into which you can now place components. Click on the maximize
button of the sheet window to give yourself the largest working area
possible. To begin, you need to select a library of
components to use. Do this by selecting CHOOSE
SYMBOL from the schematic add/route palette or, by holding
down the right mouse button to obtain the add menu and selecting
Instance -> Choose Synbol. There is typically more than one
way to accomplish something in Design Architect. This example
illustrates two of them: clicking on a palette icon or holding down
the right mouse button to get a context-sensitive menu. There is also
a way to do this via the top menu bar, but it is more difficult to
find. See if you can find it. This will activate a dialog box which
contains a button having four arrows on it, among others. Click on
this button, enter $SCN08HP_LIB into the form, then click on
OK. Your screen should now look something like
this.
- Note how the dialog box shows several directories, including
one called ``parts''. When you double click on that directory, you
will descend into it and find a list of all parts which are available
in this library. Highlight the and02 part by clicking on it
once then click on the ok button. This will make the
and02 our current active part.
- Now, move the pointer into the schematic sheet. The gate will
appear, and you can drag it to the position where you want to place
it. To place the gate symbol, click on the point where you want it to
be.
- Next, place the other and02: click on the gate's icon
in the active symbol window at the upper right corner. Drag
and place it on the schematic. Be sure to leave space between the
components. Do not overlap the components or you will not be able to
simulate the schematic later.
- If you need more drawing space for your schematic, first be
sure the drawing window is maximized. You can get everything centered
by selecting View -> View All from the menu bar. Or you can
zoom out 2X by selecting View -> Zoom Out -> 2.0. Zooming out
displays more area, and zooming in displays less.
- Get the OR and INVERTER gates the same way you initially got the
AND gate. Use or02 and inv02 from the palette.
- Now place the port connections (A, B, SEL, OUT) by referring
to the symbol history in the active symbol window menu. Move
the mouse pointer to the active symbol window, and hold down the right
mouse button. At this point, your screen should look something like this. Select symbol history to
obtain the portin and portout symbols. The ``portin''
symbol is used for inputs and the ``portout'' is used for outputs.
Place the appropriate symbols on the schematic sheet as shown in
the mux figure at the top of the page.
- Next, you need to wire up the components. Note how the bottom
of your screen has function key labels on it, and that
F3 is labeled as Add Wire. One way to start
wiring is by hitting the F3 key. Another is by
clicking on the ADD WIRE icon in the schematic_add_route
palette. To make it easier to access this icon, you may have to
resize that palette and add scroll bars. You may use the palette menu
accessed by holding down the right mouse button over the palette to do
this if you wish.
- You wire between two points by clicking on the starting point
and double clicking on the ending point. If you want to put a
bend in the wire, just click once at the point where you
want to bend the wire. Place the wires as shown in the mux figure at
the top of the page.
- When you're done wiring, click on the Cancel
button on the dialog box at the bottom of the screen. Your screen
should now look something like this.
- Note how the schematic now has different values displayed in
various places. Each logic gate has pin properties attached to all of
its inputs and outputs. Pin properties are strings given the values
"I0" and "I1" for inputs and "O" for the outputs with the gates you
have used. Every wire you have drawn also has a string property
called "NET" which is assigned the default initial value "NET". We
will change this value where we need to explicitly label wires.
Finally, you'll see how there is associated with every logic gate an
expression property called "MODEL" which has the value "(technology)".
- We will now modify those property values which we expect to
never change throughout the design process (such as "NET" property
names). They will become a permanent part of the schematic.
Properties which we expect to change at times throughout the design
process (such as the "MODEL" property) will be changed using schematic
viewpoints instead of maintaining different versions of the schematic.
But first, before continuing, unselect everything by using function
key F2.
- There are many ways of selecting objects in a schematic. For
simpler tasks, perhaps the easiest way to do so is simply by moving
the cursor over the item you wish to select and hitting the F1
key. Another way is to drag the left mouse button over an area of the
schematic which will select all objects inside the box and which cross
its boundaries. An elaborate selection filter exists for specifying
the selection of just specific things inside the selection area (see
the SET SELECT FILTER in the schematic_text palette). For now,
our task is simple, so we will use the first method.
- Select all of the NET property values using the
F1 key. Make sure that these are the only things you select.
You can keep track in two ways. First, selected items turn white.
Second, you can watch the selection counter in the top status bar of
the screen. After completing your selection process here, this should
read Sel: 4+ because you have selected exactly four things. If
you accidently select wrong things, use UNSELECT ALL in the
palette or the F2 key.
- Next, choose the TEXT icon in the schematic palette.
This will cause the palette to change to the schematic text palette.
From this new palette, select CHANGE VALUE.
- A dialog box will appear at the bottom of the screen. Notice
how the value you are currently changing remains highlighted in the
schematic so you know which one you are changing. Simply type the
correct new value over the old and hit the return key. In the case of
NET, you should change its value to the desired wire label as
shown in the mux figure at the top of the page. When the last name is
changed, the prompt bar disappears. It is very important that you
change property value only. Do not change anything else in the
dialog boxes which appear.
- You must now check the drawing before you can save it and take
a break. If your sheet does not pass this check, you cannot simulate
it (of course, you are not allowed to take the break until it
passes!). To check your sheet, select Check -> Sheet -> With
Defaults from the menu bar. There should be no errors.
Sheet errors are often caused by drawing errors (such as having two
outputs connected together) and many are quite self-explanatory. When
errors and warnings are present, just click on the text in the report
form, and the offending portion of the schematic will become
highlighted (if it's visible). A simple example of an inconsequential
warning is shown here. This one is
fixed by eliminating the overlap between the property text and the
port B symbol. Even though warnings may not keep your simulation from
running, you should still try to eliminate them. Once that warning is
eliminated, the sheet check results should look something like this.
Even with a perfectly drawn schematic, you should still notice instance
warnings at this stage of the design when using the scn08hp library.
These warnings
arise from the variable properties we have chosen to establish in a
separate schematic viewpoint. Since we know that we plan to establish
these values later, we can ignore the warnings for now.
- Close the report window by double clicking the upper left
window control.
- Your schematic sheet should now look something like this. Save it by selecting
File->Save Sheet from the menu bar.
- Any significant digital design requires that some hierarchical
organization be established. To be able to use the 2:1 mux as part of
some larger circuit, it is necessary to have a symbol for it which can
be used in higher level schematics the same way it's schematic
references the and02 and or02 for example. The final
step of designing your 2:1 mux will involve the specification of a
symbol which describes how it will interface into larger systems.
- From the top menu bar, select Miscellaneous -> Generate
Symbol. A dialog box will appear that gives a variety of options
for the automatic creation of a symbol which encapsulates your logic
diagram. The only option you should need to change is the "Once
generated..." column where you should click on "Save then Edit". If
you wish to replace an existing symbol for this component, then you
will also want to say "Yes" to "Replace existing?".
- Once symbol generation is complete, a symbol editor window is
opened which displays the symbol that was generated. You may now edit
the symbol as you see fit using symbol editor commands. One useful
and simple thing to do is to give the part a name. Do this by
selecting the body of the symbol (the box in this case) and clicking
on the add text icon in the symbol_text palette. A small dialog box
will appear where you can enter a name to be attached like "mux21".
When you hit OK, the new text will appear wherever you wish to place
it near or on the symbol. Once this change is made, check it using
Check -> With Defaults from the top menu bar. Then save and
register the symbol with the part database entry by selecting File
-> Save Symbol -> Default Registration. You are done and may
close the symbol editor window when there are no errors. The mux part
can now be incorporated into other schematics the same way you have
just used the scn08hp library parts.
- Now use that symbol to build an 8-bit 2-1 mux. That is, OPEN
another sheet, add 8 of your muxes and wire them up. Pretty
straight-forward but here's a trick:
Instead of using 8 ports for each input and output, use buses
and rip off wires as you need them. The easiest way to do
this is:
- Click on the ADD BUS/BUNDLE button.
- Place the bus roughly where you think you'll need it, ie. if
it's an input bus, somewhere to the left of your 8 muxes.
- Give the bus an input port.
- Name the port, indicating that it is a bus by enumerating the
wires in parenthesis. For example, if this is port A and there are 8
wires, call it A(7:0).
- Now you can rip off a wire by choosing ADD WIRE,
click somewhere on the bus and attach the other end to the desired
port, ie. one of the mux inputs, by double clicking as usual.
- The auto-ripper will bring up a dialog box asking you which
bit you just ripped. If it corresponds to the 7th bit, you would type
7 and hit return. Here is an example.
- When you're done w/ everything (make sure you've saved it
all!) exit Design Architect by closing the window and
responding to the dialog boxes that appear. You must use the close
command from your windows manager since there is no "quit" function in
the menu bar.
You have now completed the schematic capture of the MUX circuit.
Now you are ready to simulate the circuit to see if it is
functionally correct and if it meets some timing constraints using
QuickSim II, the logic level simulator.