Introduction & Development Pipeline¶
Homework :¶
- Install the course toolchain (Docker container)
- Run a “hello world” synthesis
- Verify your tools work before Thursday!
The cloud container is nice, but a bit slow. Since I already have docker installed on my computer(s) it was really easy to deploy the EDA toolchain container. And on GNU/Linux, the ‘start_x.sh’ gives a nice shell in a fast X11 environment.
Building all the examples worked fine with the help of the Makefile. However, it was asked to “lint” the VERILOG files which produced some warnings :
verilator --lint-only -Wall -Ilib fortune_teller/fortune_teller.v lib/debounce.v lib/uart_tx.v
%Warning-WIDTHEXPAND: lib/uart_tx.v:87:26: Operator EQ expects 32 or 26 bits on the LHS, but LHS's VARREF 'clk_ctr' generates 9 bits.
: ... note: In instance 'fortune_teller.uart_inst'
87 | wire tick = (clk_ctr == CLKS_PER_BIT - 1);
| ^~
... For warning description see https://verilator.org/warn/WIDTHEXPAND?v=5.042
... Use "/* verilator lint_off WIDTHEXPAND */" and lint_on around source to disable this message.
%Warning-WIDTHEXPAND: lib/debounce.v:107:29: Operator GTE expects 32 or 26 bits on the LHS, but LHS's VARREF 'counter' generates 19 bits.
: ... note: In instance 'fortune_teller.debounce_inst'
107 | if (counter >= COUNT_MAX) begin
| ^~
%Warning-WIDTHEXPAND: fortune_teller/fortune_teller.v:306:44: Operator ADD expects 32 or 8 bits on the RHS, but RHS's VARREF 'char_idx' generates 5 bits.
: ... note: In instance 'fortune_teller'
306 | wire [7:0] rom_addr = fortune_sel * 20 + char_idx;
| ^
%Error: Exiting due to 3 warning(s)
make: *** [Makefile:76: lint-fortune] Error 1
And that seems not important.
The output is some huge .vcd files we can view with gtkwave.
I found that the morse beacon example is outputing only zeros :

But at least all the tools were functionning correcly.