/logisim-cad

Digital logic designer and simulator

Primary LanguageJavaGNU General Public License v3.0GPL-3.0

Logisim-CAD

This is a fork of logisim-evolution with some features making it easier to use for designing circuits to be built with real parts. amd to help produce nice-looking schematics.

Rendering Improvements

Some refinements have been made to the rendering of schematics to improve their appearance. Port and junction dots are centred on wires properly, and some gate shapes have been adjusted slightly so that their outlines are aligned better with the grid. Port dots on component symbols are only displayed when a port does not have a wire attached to it.

Project Options

These are on a new Schematics tab of the Project Options window.

  • Base Stroke Width

The width of single-bit lines and component outlines. The widths of buses and other features are calculated relative to this.

  • Hide Abutted Ports

Prevents port dots from being displayed where two components connect directly without an intervening wire.

Splitter Attributes

  • Style

Angled for the standard style with perpendicular branches, or Curved to render the branches as curving off from the spine.

Improvements to the Appearance Editor

Improved snapping of text objects

When dragging a text object with snapping, the point on the object that is snapped to the grid depends on the alignment attributes of the text. This makes it easier to position the text nicely in relation to wire attachment points and other features of your circuit symbol.

Text objects also have a Margin attribute that leaves a horizontal offset between the text and the grid point that it snaps to. This allows you to easily position text next to a box with suitable spacing.

These features are backwards-compatible -- if a circuit that uses them is loaded into a standard version of Logisim-evolution, text objects will still appear in the same place.

Finer snapping grid

The snapping grid for all objects except ports and the origin marker is half the size of the wire grid. This makes it easy, for example, to line up an inversion circle with a wire properly.

This feature is backwards-compatible.

Option to snap by default

There is an application preference to reverse the action of the Control key, so that snapping is the default, and holding Control prevents snapping.

This feature is backwards-compatible.

Circular arcs

The Curve object has an option to render it as a circular or elliptical arc instead of a quadratic bezier curve.

This feature is partially backwards-compatible. Standard Logisim-evolution will render the arc as a quadratic bezier having the same control points, which will look approximately right but a bit wonky.

Pin numbers and port labels

A pin number can be assigned to an input or output. Both the pin label and the pin number can be automatically shown next to the port on the circuit symbol, with options for positioning.

Negation symbols

There is a Negation Style port attribute for automatically decorating a port with either a negation circle or a bar over the port label. When one of these is used, and the pin label starts with "n" or "L_", that prefix is omitted from the displayed port label.

Standard Logisim-evolution will show automatic pin labels and negation decorations as separate objects, not linked to the port. Pin numbers will not be shown.

Variants

Often a part contains a number of independent units, such as a quad gate or dual flip-flop. The same circuit symbol can be used for each unit, but the pin numbers are different. To accommodate this, Logisim-CAD has the concept of variants.

Circuits have a Variant List attribute that can contain a list of variant names, and instances have a Variant attribute that selects one of the variants. The Pin Number attribute of a port can consist of a comma-separated list of pin numbers corresponding to each variant. Then the circuit symbol shows the appropriate pin numbers for the selected variant.

Component Designations

Two new circuit attributes help with generating labels for components: Designation Prefix (shared between instances) and Serial Number (per instance). When the Label attribute is empty and a Serial Number is provided, a label is generated by concatenating the Designation Prefix, Serial Number and Variant.

Automatic Numbering

On the Project menu there is a Number Components command that automatically assigns Serial Numbers and Variants to components that do not already have them.

Each distinct Designation Prefix is given its own sequence of numbers, beginning with the circuit's Starting Serial No attribute. Each component is assigned an available combination of Serial No and Variant. If a component already has a designation, it is kept as long as it does not result in a conflict.

This command ignores components without a Designation Prefix, with a non-numeric Serial No. or with an explicit Label.

After numbering, a report of unused variants is shown. On the report window there is an "Add Unused" button that will add components to the circuit corresponding to these unused variants.

Enforce HDL Names option

Syntax checking of circuit names is optional, for those who have no intention of using any HDL features.

Improvements to Components

The RGB Video component may have any width and height, instead of being restricted to powers of two.

File Formats and Extensions

By default, Logisim-CAD saves project files with extension ".ccirc", but you can choose to use ".circ" instead to facilitate sharing your files with users of standard Logisim-evolution. There is currently no difference in the format of the saved file; Logisim-CAD files are designed so that Logisim-evolution can read them and will do something reasobale with them.