Logicworks Naming Issues

Computer Engineering Laboratories Site Map This page updated 4 October 2005 Mail comments

Submitted by Jason Thweatt:

Logic Works has something akin to netlist issues.  As far as I can tell, there are instances where naming a wire and then separating the wire into parts (perhaps with the Zap tool) still finds the name of the wire preserved in all of the disjoint parts.  This can cause major problems if you really only mean for one of the wires in question to carry the named signal, since LW will try to treat all wires having the same name as though they carried the same signal.  If this causes conflict between inputs and outputs, then watch out.

One impractical way to solve the problem is to refrain from naming any of the wires until after you've wired the entire circuit.  This isn't good to do however, since it might find you asking yourself halfway through the wiring "Is this wire supposed to be B complement or C complement?" after you've already connected fifty other gates or pins to the wire in question. Usually, the answer to the question ends up being "Sorry, it doesn't matter, because you probably made a mistake somewhere.  Start over with your wiring."

The next best thing to do is to use one set of names when you wire the circuit, and a different set of names when you simulate it.  Here's what you need to do.

1.  Name all of your inputs normally.  Wire the circuit using those names as references.

2.  After you're sure that you've placed all of the wires in the circuit, rename the inputs, and either assign names to the outputs (if you haven't already done so) or rename the outputs (if you gave them names as you went and suspect that something might have gone wrong - it's often better to be safe than sorry).  Make sure you use the new input names in the timing file that you write, and make sure that the correct input and output names appear in the timing window.  To add new signal names to the Timing Window, use the "Add Signals from Design" command (right-click in the section of the timing window reserved for signal names to bring up the menu item).

How can you tell if you're having the sort of problem that this method can solve?  Does your circuit work when you drive it with switches, but not when you drive it with a timing file?  Do you have multiple outputs that are all acting in the exact same strange fashion?  Do you have inputs whose behavior in the timing window obviously doesn't match the behavior that you've set for it in your timing file?  These are all signs that you have "invisible" invalid names for the signals in the timing window somewhere in your circuit other than where you want them.

Hope this helps.