The guided projects
Five projects of rising difficulty, from running a finished design to writing a UART transmitter.
On this page
See the listThe fiveHow to work through oneWhat each one teachesWhen you are stuckAfter the fiveThe lab has five guided projects. Each is a small design with a goal, and a file named START_HERE.md that tells you what to do. They are meant to be done in order.
See the list#
nelix learnIt prints the five projects and the command that creates each.
The five#
| Project | Command | You will | |
|---|---|---|---|
| 1 | Your first chip | nelix new g1-counter --template g1-counter | Take a working 8-bit counter through the whole flow |
| 2 | Find the bug | nelix new g2-debug --template g2-debug | Make a failing test pass by fixing one line of RTL |
| 3 | Finish the design | nelix new g3-pwm --template g3-pwm | Write the missing logic of a PWM output |
| 4 | State machine | nelix new g4-fsm --template g4-fsm | Complete a state machine that detects the pattern 1011 |
| 5 | UART transmitter | nelix new g5-uart --template g5-uart | Finish a serial transmitter |
How to work through one#
- Create it, and move into its folder.
- Read
START_HERE.md. - Follow its steps. Each project says what a correct result looks like.
nelix new g1-counter --template g1-counter
cd ~/project/g1-counter
cat START_HERE.mdWhat each one teaches#
| Project | The idea |
|---|---|
| 1 | The flow itself: simulate, synthesize, build, look |
| 2 | Reading a failure message and a waveform to find a bug. The rule: fix the RTL, do not change the test |
| 3 | Reading a specification in a comment, and turning one sentence into one line of logic |
| 4 | Drawing states on paper before writing code, and handling overlap |
| 5 | A real protocol: a start bit, eight data bits, a stop bit |
When you are stuck#
- The failure message of each project's test is written to help: it says what was expected and what was seen.
nelix waveformshows the moment things went wrong.- In Design Chat, ask Nelix Agent to explain the specification or the failure. Try to write the fix yourself first; that is where the learning is.
After the five#
Start from --template blank and build something of your own. Build an ALU is a worked example.
Something unclear or missing? Send feedbackSign in and use Feedback to tell us.