Welcome

This site contains tools that help you learn the fundamentals of the design of computers

HDLBits : A problem set and online judge to practice digital circuit design in Verilog

: A problem set and online judge to practice digital circuit design in Verilog ASMBits : Just like HDLBits, but for practicing Nios II or ARMv7 assembly language

: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language CPUlator: An in-browser full-system MIPS, Nios II, and ARMv7 simulator and debugger

These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses.

Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems.

What's here?

HDLBits HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs.

Verilog Simulator This is a web interface to Icarus Verilog. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging.

ASMBits ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits.

CPUlator Simulator CPUlator is a full-system simulator and debugger for Nios II, ARMv7, and MIPS systems, intended for education use. The simulator also simulates some I/O devices (based on the computer systems used by the Altera University Program for Nios II and ARMv7, based on SPIM for MIPS). It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The simulator includes run-time assertions to catch common errors (which hardware cannot do).





How to use?

For students Practice : The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help.

: The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. Assembly language programming: The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware.