mirror of
https://github.com/supleed2/ELEC60015-HLP-CW.git
synced 2024-11-14 03:55:49 +00:00
199 lines
11 KiB
HTML
199 lines
11 KiB
HTML
|
<!DOCTYPE html>
|
|||
|
<html lang="en">
|
|||
|
<head>
|
|||
|
<meta charset="utf-8" />
|
|||
|
<title>
|
|||
|
ISSIE
|
|||
|
</title>
|
|||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|||
|
<meta name="description" content="Schematic Editor and Simulator" />
|
|||
|
<meta name="author" content="tomcl" />
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<link rel="icon" type="image/x-icon" href="content/img/icon.ico" />
|
|||
|
<link rel="stylesheet" href="content/style.css" />
|
|||
|
|
|||
|
<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
|
|||
|
<!--[if lt IE 9]>
|
|||
|
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
|||
|
<![endif]-->
|
|||
|
</head>
|
|||
|
<body>
|
|||
|
|
|||
|
<h><a name="Home" href="index.html"></a></h>
|
|||
|
<div class="topnav">
|
|||
|
<a href="index.html" style="font-size: 30px; font-weight:bolder">ISSIE</a>
|
|||
|
<a href="UserGuide.html">User Guide</a>
|
|||
|
<a href="DeveloperInfo.html">Developer Info</a>
|
|||
|
<a href="https://github.com/tomcl/issie/wiki/Issie-Blog"> Issie Blog</a>
|
|||
|
<a href="Contact.html">Contact</a>
|
|||
|
<div class="topnav-right">
|
|||
|
<a href="Download.html">Download</a>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
|
|||
|
<div class="IntroBackground">
|
|||
|
<div class="IntroLayer">
|
|||
|
<p style="font-size: 24px; margin-left: 0.5%; font-weight:bolder; color: #272838; text-align: center">
|
|||
|
<br><br><br> Discover, Learn & Create with the ISSIE circuit schematic editor!
|
|||
|
</p>
|
|||
|
<div class="topnav-right">
|
|||
|
<a href="#Info">About ISSIE</a>
|
|||
|
<a href="#Acknowledgements">Acknowledgements</a>
|
|||
|
</div>
|
|||
|
<br><br><br><br><br>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="GeneralText">
|
|||
|
<br><br><br>
|
|||
|
|
|||
|
<div class="section"><h1><a name="Info" class="anchor" href="#Info">What is Issie?</a></h1></div>
|
|||
|
<p>
|
|||
|
Issie (Interactive Schematic Simulator and Integrated Editor) is a very easy to use and capable hierarchical block schematic based digital logic editor and simulator,
|
|||
|
originally made for the 1st year undergraduate Digital Electronics and Computer Architecture module at the
|
|||
|
Department of Electronic and Electrical Engineering, Imperial College London, by 3rd year students at the same institution.
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
Issie has been well tested on designs with up to 15,000 schematic components. We expect it to be reasonably performant on much larger designs as well.
|
|||
|
The simulation speed is approximately 2000 component-clocks per ms. Thus a circuit with 1000 components would run at 2000 clocks per second. Issie
|
|||
|
creates fully synchronous circuits with a single clock: logic with asynchronous loops is currently not supported.
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
Issie is coded in F# transpiled to Javascript by <a href="http://fable.io">FABLE</a>, and uses a pure F# drawing library.
|
|||
|
</p><br>
|
|||
|
|
|||
|
<div class="section"><h1><a name="Features" class="anchor" href="#Features">Key Features</a></h1></div>
|
|||
|
<br>
|
|||
|
<div id="toc_container">
|
|||
|
<p class="toc_title">Contents</p>
|
|||
|
<ul class="toc_list">
|
|||
|
<li><a href="#ComponentLibrary">1 Component Library</a></li>
|
|||
|
<li><a href="#WireRouting">2 Wire Routing</a></li>
|
|||
|
<li><a href="#WidthInference">3 Width Inference</a></li>
|
|||
|
<li>
|
|||
|
<a href="#Simulation">4 Circuit Simulation</a>
|
|||
|
<ul>
|
|||
|
<li><a href="#StepSimulation">4.1 Step Simulation</a></li>
|
|||
|
<li><a href="#WaveformSimulation">4.2 Waveform Simulation</a></li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li><a href="#Verilog">5 Verilog Output</a></li>
|
|||
|
<li><a href="#Memory">6 Memory Editor</a></li>
|
|||
|
</ul>
|
|||
|
</div>
|
|||
|
|
|||
|
<div class="section" id="halfwidth"><h2><a name="ComponentLibrary" class="anchor" href="#ComponentLibrary">Component Library</a></h2></div>
|
|||
|
<p>
|
|||
|
ISSIE has an extensive and complete library of components available in the 'Catalogue' menu.
|
|||
|
Components include low-level gates and flipflops as
|
|||
|
well as larger blocks: RAMs, ROMs, n-bit registers and adders. The lack of HDL-based combinational logic is partly filled by
|
|||
|
special components: Bus Select (extracts a bit-field), Bus Compare (decodes a min-term of a bus). Components defined as Verilog
|
|||
|
combinational logic are a likely future addition.
|
|||
|
</p><br>
|
|||
|
<p>
|
|||
|
Viewer components are used to (optionally) view simulation waveforms of nodes on subsheets. Wire label components allow any number of
|
|||
|
nodes on one design sheet to be connected without visible wires.
|
|||
|
</p><br>
|
|||
|
<div class="img">
|
|||
|
<img src="content/img/circuit/catalog.png" alt="Initial circuit and Component tab" />
|
|||
|
</div><br>
|
|||
|
|
|||
|
<div class="section" id="halfwidth"><h2><a name="WireRouting" class="anchor" href="#WireRouting">Wire Routing</a></h2></div>
|
|||
|
<p>
|
|||
|
ISSIE schematic component ports are connected using drag-and-drop: each connection represents a wire or bus.
|
|||
|
ISSIE has two methods of routing wires: Auto-routing and Manual-routing. Wires will all start out as Auto-routed,
|
|||
|
which means that the wire's path is created automatically by the program. This path will update when moving any connected components.
|
|||
|
ISSIE also allows for manual routing, where the user may manipulate segments of the wire as desired to make the circuit more readable. Effort has
|
|||
|
been put into making this functionality intuitive, with automatic reversion to auto-routing when wire topology changes, and auto-routing of
|
|||
|
endpoints when parts of a wire are manually routed.
|
|||
|
</p><br>
|
|||
|
|
|||
|
|
|||
|
<div class="section" id="halfwidth"><h2><a name="WidthInference" class="anchor" href="#WidthInference">Width Inference</a></h2></div>
|
|||
|
<p>
|
|||
|
Wires will automatically be created the correct width using a width inference algorithm.
|
|||
|
Wires connecting two ports of incompatible widths will be highlighted red and an error message shown, as will multiply driven wires.
|
|||
|
Additional sanity checks (e.g. for combinational loops, or unconnected ports) are made before simulation with errors highlighted visually.
|
|||
|
</p><br>
|
|||
|
<div class="img">
|
|||
|
<img src="content/img/circuit/wireerror.png" alt="Width Inferer Error Message" />
|
|||
|
</div><br>
|
|||
|
|
|||
|
|
|||
|
<div class="section" id="halfwidth"><h2><a name="CircuitSimulation" class="anchor" href="#CircuitSimulation">Circuit Simulation</a></h2></div>
|
|||
|
<p>
|
|||
|
ISSIE includes two simulations in order to inspect and test circuit schematics: The step simulator, and waveform simulator.
|
|||
|
This allows users to visualise the information in different ways to best suit their needs and understanding.
|
|||
|
</p><br>
|
|||
|
|
|||
|
|
|||
|
<div class="section" id="halfwidth"><h3><a name="StepSimulation" class="anchor" href="#StepSimulation">Step Simulation</a></h3></div>
|
|||
|
<p>
|
|||
|
Step Simulation allows the user to 'step' or cycle through each clock tick, and view the current design sheet's Output and Viewer component information.
|
|||
|
It also allows users to view how the state changes in stateful components such as RAM.
|
|||
|
</p><br>
|
|||
|
<div class="img">
|
|||
|
<img src="content/img/circuit/simulation tab.png" alt="Step simulator example" />
|
|||
|
</div><br>
|
|||
|
|
|||
|
|
|||
|
<div class="section" id="halfwidth"><h3><a name="WaveformSimulation" class="anchor" href="#WaveformSimulation">Waveform Simulation</a></h3></div>
|
|||
|
<p>
|
|||
|
Waveform Simulation allows the user to see the values in each selected connected circuit element (<a href="https://en.wikipedia.org/wiki/Netlist">Netlist</a>) over time as a waveform.
|
|||
|
The waveform simulator allows users to move waveforms up/down in the list to make the simulation more readable.
|
|||
|
Users may cycle through the simulator using the arrows to directly go to a specific clock cycle.
|
|||
|
Alternatively there is a scrollbar for the Waveform simulator that will automatically lengthen the simulation once the end is reached.
|
|||
|
The values in the waveform simulator can be viewed in various formats: binary, hexadecimal, unsigned decimal and signed decimal.
|
|||
|
The Waveform Simulator also features a draggable sidebar to partition screen space dynamically between waveforms and circuit.
|
|||
|
</p><br>
|
|||
|
<div class="img">
|
|||
|
<img src="content/img/circuit/waveformsimulation.png" alt="Waveform simulator example" />
|
|||
|
</div><br>
|
|||
|
|
|||
|
<p>
|
|||
|
Waveform Simulation also allows for the simulation and contents viewing of memory components such as RAM.
|
|||
|
</p><br>
|
|||
|
|
|||
|
<div class="img">
|
|||
|
<img src="content/img/circuit/wavesimramview.png" alt="Waveform simulator with RAM example" />
|
|||
|
</div><br>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<div class="section" id="halfwidth"><h2><a name="Verilog" class="anchor" href="#Verilog">Verilog Output</a></h2></div>
|
|||
|
<p>
|
|||
|
Users may convert their ISSIE schematic design into a Verilog file using the 'Write design as verilog' option found in the header bar of the application.
|
|||
|
This allows great flexibility as ISSIE designs may be used in more complex design tools and other programs that use Verilog;
|
|||
|
allowing ISSIE to be used as a top-level design that can be further developed if needed. Verilog output for simulation or synthesis is documented
|
|||
|
as part of the Verilog write process, this includes links to a [YoSys](http://bygone.clairexen.net/yosys/download.html) workflow for synthesis on FPGAs.
|
|||
|
Imperial College users can download a pre-installed VM for this workflow, the VHDL output is standalone and should work with other synthesis methods.
|
|||
|
</p><br>
|
|||
|
|
|||
|
<div class="section" id="halfwidth"><h2><a name="Memory" class="anchor" href="#Memory">Memory Editor</a></h2></div>
|
|||
|
<p>
|
|||
|
ISSIE allows users to directly edit the contents of Memory components, for more versitility and ease of use. Memory contents can also be exported and imported via .ram files.
|
|||
|
</p><br>
|
|||
|
<div class="img">
|
|||
|
<img src="content/img/circuit/memoryeditor.png" alt="RAM editor example" />
|
|||
|
</div><br>
|
|||
|
|
|||
|
|
|||
|
<br>
|
|||
|
|
|||
|
<div class="section"><h1><a name="Acknowledgements" class="anchor" href="#Acknowledgements">Acknowledgements:</a></h1></div>
|
|||
|
<ul>
|
|||
|
<li>Marco Selvatici for the 8K lines of base code written for his 3rd year BEng <a href="https://github.com/MarcoSelvatici/DEflow">FYP</a></li>
|
|||
|
<li>Edoardo Santi for work improving Issie over Summer 2020.</li>
|
|||
|
<li>High Level Programming 2020 cohort for providing the base code of the draw block</li>
|
|||
|
<li>Jo Merrick for work improving ISSIE for her 3rd year BEng Project</li>
|
|||
|
<li>Dr Tom Clarke for his continued work maintaining and improving ISSIE throughout</li>
|
|||
|
<li>All 2020/2021 1st year undergraduate students of the EEE department, Imperial College London, for acting as unpaid beta-testers!</li>
|
|||
|
</ul>
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|