[![Logisim-evolution](img/logisim-evolution-logo.png)](https://github.com/logisim-evolution/logisim-evolution)

---

# Additional information #

* [« Go back](../README.md)
* **Additional information**
  * [Limitations](#limitations)
  * [History of Logisim](#project-history)
  * [External documentation](#external-reads)
  * [Legacy support](#legacy-support)
  * [Translations](#translations)
  * [Alternative software](#alternatives)

---

## Limitations ##

While `Logisim-evolution` may be perfectly suitable for most of your digital circuit projects, you should
be aware of important limitations that may affect your work:

* Bidirectional pins (input or output depending on the control line state) are not currently supported by the simulation engine.
  Therefore, the built-in libraries do not offer such elements and you cannot create your own.
* By default, memory elements are initially set to 0 when simulation starts. This may not reflect the circuit behaviour in
  reality after switching it on. This can be changed in `Project -> Options...` menu,  with the option
  `Memory elements start in unknown/random state (rather than 0)`.
* Transistors have a simplified digital simulation, mostly designed for the limited use of showing how a logic gate
  is constructed. There are many things one can do with actual transistors that cannot be simulated with our
  simulation engine.

If the above is crucial for your project, you may consider trying [alternative software](#alternatives).

## Project history ##

Logisim is an educational tool for designing and simulating digital logic circuits. It was originally created
by [Dr. Carl Burch](http://www.cburch.com/logisim/) and actively developed until 2011.
After this date, the author focused on other
projects and the development has been [officially stopped](http://www.cburch.com/logisim/retire-note.html).

In the meantime, people from a group of Swiss higher education institutions
([Haute École Spécialisée Bernoise](http://www.bfh.ch),
[Haute École du paysage, d'ingénierie et d'architecture de Genève](http://hepia.hesge.ch),
and [Haute École d'Ingénierie et de Gestion du Canton de Vaud](http://www.heig-vd.ch)) started developing a version of
Logisim that fit their courses by integrating several new tools, e.g., a chronogram, the possibility to test the
schematics directly on an electronic board, TCL/TK consoles, …

We have decided to release this new Logisim version under the name `Logisim-evolution` to highlight the large number of
changes that were made.

**We actively seek the [contributions](developers.md#how-to-contribute) of the community!**

## External reads ##

* Here is a tutorial [Intro to Logisim in English](http://reds-data.heig-vd.ch/logisim-evolution/IntroToLogisimEnglish.pdf) or
  [Intro to Logisim in French](http://reds-data.heig-vd.ch/logisim-evolution/tutoLogisim.pdf)) that explains some basic usage of Logisim.
  The electronic card referenced in the tutorial is a small card we use in our laboratories -- you won't be able to buy it
  in a store -- but the descriptions should be good enough to be used for another generic board.
* Another good reference is [this book](https://github.com/grself/CIS221_Text/raw/master/dl.pdf), the
  accompanying [lab manual](https://github.com/grself/CIS221_Lab_Manual/raw/master/dl_lab.pdf),
  and [YouTube channel](http://bit.ly/2KLMcoc), where basic electronics is explained with the help of Logisim.
* Some circuit examples, ranging from simple combinational and sequential logic to advanced datapaths, that are useful
  for teaching and learning computer organization topics can be found here:
  [Computer Organization in Logisim](https://github.com/mkayaalp/computer-organization-logisim).

## Legacy support ##

We cannot guarantee backward compatibility of `Logisim-evolution` with files created by the legacy Logisim.
We have incorporated a parser that alters the name of the components to satisfy VHDL requirements for variable names,
but components have evolved in shape since the original Logisim.
You might need to rework your circuits a bit when opening them with `Logisim-evolution`, but the changes
will be stored in the new format.

# Translations #

`Logisim-evolution` is built with multi-language support, which means we have done our best to ensure all messages and
texts you see on the screeen can be translated. Many of them were automatically translated using [DeepL](https://www.deepl.com/).
If you should find bizarre translations, please do not hesitate to [correct them](developers.md)
in the corresponding property files and to make a pull request!

---

# Alternatives #

* A complete rewriting of Logisim, called [Digital](https://github.com/hneemann/Digital), has been developed by
  Prof. Helmut Neemann of the Baden-Württemberg Cooperative State University Mosbach.

Other forks of Logisim:

* [Logisim-Evolution (Holy Cross Edition)](https://github.com/kevinawalsh/logisim-evolution) - a fork from
  Logisim-evolution 2.13.14 with several great enhancements made by Kevin Walsh.
  Currently, there is an ongoing effort to merge these features back into Logisim-evolution.
* [Logisim by Joseph Lawrance et al.](https://github.com/lawrancej/logisim) - they have started from Burch's original code and
  integrated it in several open-source development frameworks, cleaning up the code.
  We have taken a few code cleanups and the redo functionality from their code.
* [logisim-iitd](https://code.google.com/p/logisim-iitd) - IIT Delhi version of Logisim, it integrates the
  floating-point components within the arithmetic unit.
* [Logisim for the CS3410 course, Cornell University](http://www.cs.cornell.edu/courses/cs3410/2015sp/) - they have a very
  interesting test vector feature, that was later integrated into Logisim-evolution.
