Code Monkey home page Code Monkey logo

circuitsim's Introduction

CircuitSim v1.9.2b

NOTE: The CS 2110 fork of CircuitSim is not compatible with upstream CircuitSim jars, nor the version used in CS 2200. If you're a CS 2110 student looking to download CircuitSim, use the jar provided on Canvas.

Basic circuit simulator with many built-in components. Check out src/com/ra4king/circuitsim/simulator/components for examples of how Components are written. Their GUI counterparts are in src/com/ra4king/circuitsim/gui/peers.

Screenshot Screenshot

Building

The provided gradle scripts can be used to easily build a JAR file. Just run ./gradlew jar on Linux or .\gradlew.bat jar on Windows!

The release directory contains a build.sh script that automatically builds the JAR, and generates an executable image for Windows, Mac, and Linux.

Changelog

1.9.2b

CS 2110–specific release

  • Support both aarch64 and x86_64 on both Linux and macOS
  • Display high-impedance/floating state as "z", not "x"
  • Hide SR/D Flip-Flops because they will confuse students
  • Removed Herobrine

1.9.1

  • Hotfix for ROM component not saving its contents to disk.

1.9.0

  • The grid background can now be hidden: View -> uncheck Show grid
  • Circuits can be exported as image files: File -> Export as images
  • New component: 7-segment display
  • Updated components: probes and constants can now display in multiple formats.
  • Integer inputs now accept multiple formats: decimal, binary, and hex
  • RAM and ROM editors have been improveds, and ROM edits now support undo and redo.
  • Remove the ability to negate the NOT gate's input, this looks to have been an oversight.
  • Improve placement and display of gates with negated inputs and more than 5 inputs: no more "floating" inputs. Inputs are now either directly attached to the gate's body or have a line linking them to the gate. This is backwards compatible by maintaining the old behavior for older save files.

1.8.5

  • New component: Breakpoint component that automatically stops the clock at a particular input value
  • New component: Power and Ground components that are pretty much just the 1-bit constants 1 and 0 respectively
  • Fixed a deadlock issue in Clock
  • Fixed possible race conditions where the circuit was modified while it's being accessed outside the simulator lock

1.8.4

  • Hotfix for an issue that leads to erroneous Short Circuit messages when there are none

1.8.3

  • RAM now has the option to have separate load/store ports
  • The transistor has been updated with a more accurate version. This is backwards compatible by deprecating the old transistor and replacing it with a new component.
  • (CS 2110 fork only) rename SR Flip-Flop to SR Latch, rename D Flip-Flop to D Latch

1.8.2

  • Hotfix for issue with buffer component where setting a label causes a NullPointerException
  • Hotfix for issue with memory editor for both RAM and ROM components where pasting 16 or more values causes it to skip a column every 16th value
  • Improve error message window to include "Save and Exit"

1.8.1

  • Significant performance and memory usage improvements
  • Holding CTRL will keep a component selected after placing it
  • Circuit file generation is now deterministic
  • Fix subcircuit pin count mismatch errors
  • Fix display of Output pin, where it used to be printed as Input pin
  • Fix saving ROM contents after being broken in 1.8.0
  • (Breaking change) Fix subcircuit pin ordering on the east and west side by sorting by Y instead of X

1.8.0

  • Revamp ROM/RAM component look: now showing the current address and value
  • Revamp ROM/RAM memory editor: no need to double click to start typing, no need to hit enter to commit, full multi-cell copy/paste support
  • Huge improvement and bug-fixes to wire behavior when moving components and with undo/redo
  • Add RandomGenerator component
  • Add copy/cut/paste to context menu in circuit editor
  • Display missing label names in certain components
  • Add All Files option in Load File dialog
  • Fixed bug with gates where downsizing the number of inputs kept the extra Negate options

1.7.4

  • Fix several bugs with wire creation when dragging components
  • Give an option to send an error report upon unexpected errors
  • Minor bug fixes

1.7.3

  • Fix blue wire issues with Tunnels and subcircuits
  • Highlight wires when clicking on them
  • Ctrl+scroll now zooms in/out
  • Right clicking when placing components or dragging wires cancels the action
  • Fix bug with intersecting wires being auto-joined on drag
  • Improved error handling

1.7.2

  • Add Probe component, which lets you observe values on wires without resorting to output pins
  • Improve behavior multi-component selection when holding down control by disabling drag-less wire creation when control is held down
  • Copy doesn't do anything when nothing is selected instead of emptying the clipboard
  • Other minor bugs fixed

1.7.1

  • Squashed tunnel bugs: now short-circuits should propagate properly across them and tunnels should work properly
  • Added comparison type to Comparator: now you can do both 2's complement and unsigned comparison
  • Draw magnifying glass to subcircuit components when hovering over them to indicate ability to view internal state
  • Officially making a file format change supporting library paths
  • Other minor bugs fixed

1.7.0

  • Big thanks to Cem Gokmen for helping with the Mac issues and Austin Adams for gradle-ifying the repo!
  • Now supporting both Java 8 and 9 - thanks to Austin Adams for figuring out how to create a multi-release Jar
  • Huge rendering performance improvements, especially for Mac
  • Fixed keyboard shortcut issue on Mac
  • Use system menu bar on Mac instead of the in-app bar
  • Added an update checker that notifies you when there is a new version
  • Fixed a bug with subcircuits where it pushed values through output pins, causing seemingly un-explainable short circuits
  • Improved behavior of tab selection when moving them or deleting them, especially with undo/redo
  • Many minor bug fixes and improvements

1.6.2

  • Fixed exceptions being thrown when using Tunnels
  • Now you don't have hit enter to update a text or value property, someone complained that it was annoying. The component is automatically updated when you unfocus from the text input
  • Multi-bit wires with a floating bit (X) now show up as dark blue instead of black
  • Button now has directions

1.6.1

  • Improved behavior when dragging components to also delete wires whenever they overlap existing ones
  • Huge performance increases with subcircuits and tunnels. Bad designs will still be very slow to run the autograder in
  • Now showing Help dialog on first run

1.6.0

  • Added creation of new wires when dragging components. This allows maintaining existing connections when dragging components to new locations
  • Hold CTRL before beginning the drag to disable this
  • Fixed file load issue where an error was thrown if the folder doesn't exist anymore
  • Fixed issues with dragging + keyboard shortcuts
  • Fixed an undo bug when updating components

circuitsim's People

Contributors

ra4king avatar ausbin avatar dallas-d avatar jh456 avatar mbrickell3 avatar anott3 avatar kanwren avatar sameer-s avatar pjztam avatar thecharlesjenkins avatar cgokmen avatar tricksterguy avatar hvpeteet avatar jviszlai avatar sbhat98 avatar dependabot[bot] avatar

Watchers

 avatar James Cloos avatar  avatar Daniel Becker avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.