- Fix seven seg display - done
- Implement a component class - done
- Component {state:Numeric, inputs:[], update(), setValue(), getValue()}
- Gate extends Component {logicFn: and, or etc, function in update}
- SevenSeg
- Number
- MaskableComponent { inputMasks: [] = which bits the input contributes to, setValue(x, mask), update calls setValue for each input }
- Register
- Wire
- Component {state:Numeric, inputs:[], update(), setValue(), getValue()}
- Replace Buefy with Tailwind - maybe stick with buefy
- Custom instance breadcrumb component - done
- Implement continuous assignment operator precedence - see Table 4.1 of Digital Design and Computer Architecture:
, */, +-, <<>>, &&, ^^, ||, ?: Use Full adder to test - If/else eg register with enable and reset lines - Example 4.20 - done
- Case statement - example 4.25 7-seg decoder - done
- Concatenation and parameter - example 5.1 full addder - done
- Comparator - example 5.3
- Tests! - some
- Unfortunately should switch from Listener to Visitor so don't need to pass values by stacks - argh, too late
- Monaco language definition - WIP
- Register file
- Arrays of numeric - done
- ternary operator - done
- MIPS single cycle processor - WIP
- MIPS single cycle processor
- MIPS multi cycle processor
- allow behavioural assign ie assign y = a + b instead of using always block
- Wires and Outputs not declared as gates should be silently declared as a WireGate with same id - done
- Error markers in miniview - done
- Separate MemoryGate into RegGate and ArrayGate
- Renderers for concatenation (a WireGate with multiple inputs) and slice (a WireGate that is connected to multiple gates with different offsets)
- ANTLR based formatter - use listener to repopulate text - will only work if valid input
- Tooltip for nodes - show type, input values, output vale and glow the connections