A new project starts from a template rather than from an empty project.yml. The template carries the top module, a test, and a configuration that already names the part and the simulator.

Create it

mkdir first_project && cd first_project
rr init --template first_success --name first_project -y

first_success targets an iCE40 UP5K with the open toolchain: Yosys for synthesis and Icarus Verilog for simulation. No vendor licence is needed. To see the other templates:

rr init --list-templates

By default rr init also creates a .venv with RouteRTL installed in it. Pass --no-venv when rr is already installed in the shell you are using, as in the recording above.

What it writes

The project gets project.yml, the RTL under src/, a cocotb test under sim/, and the generated build_env.mk and build_env.tcl. Before it finishes, rr init prints an environment check of the tools it found. A missing tool there is reported, not fatal: rr doctor lists the fix for each one.

Check it

rr linting

Result

The scaffold is a project that lints clean before you change anything. A later lint or simulation failure then points at your change, not at the setup.