LogicWork Bugs

Here is a list of some of the more common problems encountered when designing a LogicWorks circuit. This list will be updated periodically, so please check it whenever you're about to start another project. If you'd like to add any to the list, please send an email to sasaki@spectra.eng.hawaii.edu or sasaki@wiliki
Periodically "save" your file even though it may not be completed

When LogicWorks crashes, you lose the circuit you are currently working on. Crashing tends to occur when there is a high load on the server.


What if there is an X at a connection?

In LogicWorks, an "X" means "unknown", i.e., the LogicWorks software doesn't know whether the value should be a 0 or 1.


What if there is a C at a connection?

In LogicWorks, the C stands for "conflict". This means that two outputs (from devices) are connected together. You should never have two or more outputs connected together (unless the outputs are "tri-stated", which will be discussed later in the course). If two or more outputs are connected and they output different voltages (one at GND and the other at +5), this will lead to a "short circuit," which is a bad thing.

Another source of possible conflicts occur when there is more than one line (connection) with the same label. Note that lines labeled with the same names are assumed to be connected by LogicWorks. For example, suppose the input to a voltage inverter is labeled "A", and the output is also labeled "A". Then there is a potential for conflict since the input and output are now assumed to be connected together.


Click a connection to check if it's truly connected

Often times a connection appears connected in the diagram, but it's really not. To check this, single click the connection. The connection will be highlighted by a bright color.


Divide-and-conquer: a technique for debugging

Debugging a circuit is similar to debugging a program. The divide-and-conquer strategy is to break the circuit into smaller parts and to debug each part separately. For example, a sequential circuit can be broken into its state register and its combinational circuit. Both parts can be checked by attaching its inputs to binary switches, and attaching its outputs to logic probes. Arrange the switches and probes so that the bits are easy to read. For example, for the combinational circuit, arrange them so they easily correspond to the columns of the truth table.


Be neat and orderly

Often times its a pain in the you-know-what to neatly document, neatly arrange probes and switches, neatly label pins, and neatly document. It's quicker (and sometimes more fun) to just slap the thing together and let it run. But sloppiness will lead to problems (even insurmountable ones) when dealing with large or even moderate sized projects. For example, if you're truly sloppy, it's possible to forget the function of modules YOU design, built, and tested in the past. So during this course, develop neat working habits (and don't use my office as a counter-example).


To get any circuit to run (combinational or sequential), the "little man" must be off his chair

LogicWorks circuits run with respect to a "hidden" ultra fast clock. (Note that this "hidden" clock is faster than the clock that we've been using in our homeworks and labs.) Even combinational circuits are updated with respect to this "hidden" clock. If the clock signal is turned off (i.e., the "little man" is sitting in his chair) then the "hidden" clock also goes off and combinational circuit outputs will not update with changes at the inputs. So to run any circuit (combinational or sequential), you have to get the "little man" off his chair.


LogicWorks ain't perfect

LogicWorks is a complicated piece of software, and like most software, has bugs. There is one bug in particular that a TA found that you should be aware of. The labels on the 74175 are not always true. The error occurs when you flip the device around (turning it upside down, right to left, left to right, etc). When the CLK (clock) pin is on top of the device and the CLEAR pin is at the bottom, then the circuit is okay. However, if the opposite is true (the clock pin is at the bottom and the clear pin is on the top) then the device doesn't output the correct values. Therefore, for the 74175 device, ALWAYS have the CLOCK ON TOP and CLEAR AT BOTTOM.

Although LogicWorks may be a bit buggy, way more often than not, it works just fine. So before jumping to the conclusion that it's LogicWorks' fault that your circuit doesn't work, please do a thorough check. You will probably find that you made the error.


Check for design flaws

If your circuit doesn't perform the way it's supposed to, it may be due to a fault in your design. Check ASM charts (or state diagrams), state transition tables, any boolean manipulation, mixed logic transformations, etc.


The "wire" device in the EE 260 library has an input and output

According to the TA, the "wire" device (which implements the complementing operation, assuming opposite logic conventions at input and output), has an input and output. So it doesn't work like a real wire, which is just a connection. This can be source of conflicts as well, since you have to make sure the output of the wire device doesn't connect to the output of any other device. The TA is currently working to fix this.