What is Amroba?

Amroba is a browser-based digital design and simulation platform for designing and simulating digital circuits. It enables complex circuits to be decomposed into smaller, reusable building blocks. Using Amroba, systems can be designed from simple logic up to full computer architectures.

Amroba in a glance

The Amroba interface is structured into four primary sections:

The Menu Bar includes the following functional groups:

Toolbox in a glance

The Toolbox provides components and tools used to construct circuits within the Workspace.

Depending on the direction of information in each segment of the circuit, the orientation of components can be configured as follows:

Tools are categorized into various groups:

Chip equivalence table

Table below lists components available in the toolbox with their commercially available 74HC series equivalent.

Group Component Equivalent chip Quantity per chip Sample Datasheet
Wiring Bus Driver 74HC126 4 Link ↗
74HC541 8 Link ↗
74HC365 6 Link ↗
74HC244 8 Link ↗
Gates AND gate 74HC08 4 Link ↗
OR gate 74HC32 4 Link ↗
XOR gate 74HC86 4 Link ↗
INVERTER gate 74HC04 6 Link ↗
NAND gate 74HC00 4 Link ↗
NOR gate 74HC02  4 Link ↗
XNOR gate 74HC266  4 Link ↗
Multiplexers Quad 2:1 Multiplexer 74HC157 1 Link ↗
4:1 Multiplexer 74HC153 2 Link ↗
8:1 Multiplexer 74HC151 1 Link ↗
8:3 Priority encoder 74HC148 1 Link ↗
Demultiplexers 2:4 Demultiplexer 74HC139 2 Link ↗
3:8 Demultiplexer 74HC138 1 Link ↗
74HC137 1 Link ↗
Flip-Flops D flip-flop 74HC175 4 Link ↗
74HC74 2 Link ↗
74HC174 6 Link ↗
74HC273 8 Link ↗
J-K flip-flop 74HC109 2 Link ↗
Counters 4-bit counter 74HC161 1 Link ↗
Memories 8kB ROM AT28C256 - Link ↗
8kB RAM CY7C185 - Link ↗
32kB RAM CXK58257 - Link ↗
4kB Dual port RAM IDT7134 - Link ↗
Arithmetic 4-bit full adder 74HC283 1 Link ↗
4-bit comparator 74HC85 1 Link ↗

Workspace in a glance

You can create and modify circuits in the Workspace by:

  1. Select a component from group the toolbox by left click on mouse.

  2. Move mouse to the Workspace to the desired location. A copy of the selected component will move along the mouse pointer.

  3. Add the selected component to the Workspace by left click on mouse.

Notes:

  1. Select wire from group the toolbox by left click on mouse.

  2. Start the wire by moving mouse to the Workspace to the desired location. It could be:

    1. Somewhere empty to start a new wire

    2. On an existing wire to start an extension to that wire

    3. To a pin on an existing component – either an input pin or an output pin

  3. Continue the wire by left click in the Workspace in vertical or horizontal direction in any number of times

  4. Finish the wire by:

    1. Either right click in the Workspace or pressing the ESC key, or

    2. Connecting to an existing component.

Notes:

  1. Select bus from group the toolbox by left click on mouse.

  2. Start the bus by moving mouse to the Workspace to the desired location. It could be:

    1. Somewhere empty to start a new bus

    2. On an existing bus to start an extension to that bus

  3. Continue the wire by left click in the Workspace in vertical or horizontal direction in any number of times

  4. Finish the bus by right click in the Workspace or pressing the ESC key

Notes:

  1. Press and hold the left button of mouse at one of the corners of the imaginary rectangle covering the intended selection

  2. Move your mouse the opposite corner of selection and release the left button. The colour of selected components will become red.

  1. Select part of a circuit

  2. Press Ctrl+C or click on to copy the selection to the application clipboard
  3. Press Ctrl+V or click on to display the application clipboard. Click on an admissible place in the Workspace to insert the pasted circuit.

Notes:

  1. Select a wire. The entire wire will be highlighted in red

  2. Click on an extension on the wire (which has no extension on it). Only the clicked extension will be selected, and the rest of wire will be unselected.

Note:

  1. Press Ctrl+Z or click on to undo the last action.
  2. Repeat as many times as needed

Note:

  1. Press Ctrl+Y or click on to undo the last action.
  2. Repeat as many times as needed

Note:

  1. Select part of a circuit

  2. Press Delete or click on to delete the selection

Bill of Material in a glance

To get a list of components used in the current circuit in the Workspace (including all sub-circuits), click on . A new window will open which displays each component type, equivalent ICs (along with number of pins for each IC), and quantity of the components in the current design.

Simulation in a glance

You can enter simulation mode by clicking on during which input components will become active and provide inputs to the circuit in the Workspace. In this case:

Note: when simulation is running, you cannot edit the circuit.

Logic Levels in a glance

In the simulation mode, each wire and bus will be coloured to represent their logical value listed in the table below.

Color Logic Value Applicable to Meaning
Red Hard Zero Wire and Bus There is only one input to the wire or bus and its value is Zero
Green Hard One Wire and Bus There is only one input to the wire or bus and its value is One
Light Red Weak Zero Bus There is no input to the bus, however bus is connected to a source with value of Zero through a resistor.
Light Green Weak One Bus There is no input to the bus, however bus is connected to a source with value of One through a resistor.
Grey Unknown Wire and Bus No input available to the wire or bus
Blue High-Z Bus All inputs to the bus are in High-Z state
Amber Invalid Wire and Bus

Multiple inputs to the bus are not in High-Z state, or

Output of a component connected to a wire or bus is not well-defined for its inputs`

For quick reference, the legend below has been added to the Status Bar

By clicking on , the simulation will be paused, and the following message will appear in the Status Bar:

In this case the inputs will be kept unchanged until the is clicked again. This is useful when you are using clocks and you need time to analyse the states of the circuit before the clock values toggles.

By clicking on , the simulation will be ended, and circuit can be edited again.

By clicking on , a scope will appear and shows values of all wires and buses which have probes associated to. See also Probes and Recorder in a glance.

Notes:

  • Amroba evaluates the entire circuit simultaneously (i.e. no sequential execution order is imposed on components). If the circuit fails to reach a stable state, simulation will be paused and the following message will appear in the Status Bar:

  • Timing section in the Status Bar – as shown below – allows you to select how fast or slow the simulation should run.

Clock Speed dropdown will provide you these options (in order of speed):

  • Quiet - 10 times faster than Normal. Logic value colours will not be applied to wires and buses.

  • Fast – 10 times faster than Normal. Logic value colours will be applied to wires and buses.

  • Normal – Nominally 1 pulse per second

  • Slow – 10 times slower than Normal

  • Stopped – Clocks will not generate any pulse

Elapsed Time box will show you how much time has passed since start of the simulation.

Probes and Recorder in a glance

To have the trend of values of different parts of a circuit in one place, using add probes to desired wires and buses. By opening the Scope by clicking on during the simulation, values corresponding to each probe are shown synchronously. Changes to state of any part of the circuit will trigger Scope to show values.

In the example below, the input switch has manually changed by the user from value 1 to value 0 at 7600 msec.

Wires in a glance

Wires are used to propagate signals from the output of a component to input pins of one or more components.

Wires can be started from either input pin of a component, output pin of a component, any points inside an existing wire or even not connected to any component. When drawing a wire is started, you can continue vertically or horizontally in the Workspace by clicking left click. Wires will be finished if either you connected it to a valid pin on a component, right click in the Workspace, or press ESC key.

In the example below, a wire (with one branch) is shown which has one input and outputs to two components.

Buses in a glance

Buses are used to distribute signals from multiple components to input pins of one or more components. Since only one active driving signal is permitted on a bus at any given time, only components supporting a high-Z output can be connected to the bus.

To draw a bus in the Workspace, be mindful that both sides of a bus shall be left unconnected to anything. When drawing a bus is started, you can continue vertically or horizontally in the Workspace by clicking left click. buses will be finished if either you right click in the Workspace or press ESC key.

To connect a bus to any component, start drawing a branch from a point on an existing bus and finish it to input or output pin of a component.

In the example below, a wire (with one branch) is shown which has one input and outputs to two components.

In both the examples below, the bus buffer output is not enabled. Regardless of the value of the buffer input, the bus will remain in high-Z state.

In both the examples below, the bus buffer output is enabled. The bus will follow the value of the buffer input.

In the example below, the bus buffer outputs of both buffers are enabled. Regardless of the value of the buffers input, the bus will remain in Invalid state.

Constant inputs with pull-down/pull-up resistors can be used to set value of a bus to a default value in case no input is active to avoid having a high-Z state on the bus.

In the example below, the bus buffer output is not enabled and the value the bus will be the value of the constant input 1.

Note that the default values of the bus have a higher colour: light red for a soft zero and light green for a soft one.

Sub-circuits in a glance

A circuit with defined inputs and outputs can be saved on local computer to be re-used inside another circuit as a sub-circuit to promote reusability, modularity and cleaner design.

To create a subcircuit, add inputs and outputs to intended place into your designed circuit. Click on any input pin or output pin to pin name, order and location of the pin using the Component Properties tab in the Menu Bar:

Place a title in the Workspace to assign a descriptive name to the subcircuit. Click on the title to update the description using the Component Properties tab in the Menu Bar. Save your circuit on the local computer for future use.

Example below shows a circuit with 3 inputs and 2 outputs named “Subcircuit 1”.

A subcircuit should be added to the Toolbox before it can be inserted in another circuit. To use a subcircuit in a circuit. Find any unused slot in the “sub-circuit section”:

An existing subcircuit can be assigned to that by clicking on its open icon and adding the file path:

An added subcircuit can be selected from the toolbox by clicking on its icon and inserted by clicking at valid point in the Workspace.

An added subcircuit can be removed from the toolbox by clicking on its deletion icon and subsequently, its slot becomes available.

Shanzir Project and Shanzir Mode

Shanzir Project is an attempt to develop and test a working computer using Amroba and eventually built it using commonly available components. For more information, click on the link shown below in the Status Bar.

When the About Shanzir is open, you can enable or disable Shanzir mode.

In Shanzir mode, two extra tools in Toolbox and one extra function in the Menu Bar are available to work specifically with the circuit developed for Shanzir Project.

For full technical details, schematics, and development notes, visit www.shanzir.com.