Семь бэкендов и t27b
Вы узнаете
Одна спека, много целевых языков и нативный компилятор без LLVM.
Одна спека t27 может стать Zig, C, Rust, JavaScript, TypeScript или Verilog; Verilog получается двумя путями, прямо из спеки и через HIR, — вот и семь бэкендов. Плеер показывает Rust, который t27c пишет для hello_world. t27b — второй компилятор: нативный машинный код AArch64, без LLVM, JIT для тестов и объектные файлы Mach-O. Он не закончен, и мы говорим, насколько: в запуске 26c447ad8 он прошёл 307 из 449 спек, которые эталонный компилятор проходит с тестами, 68.4%.
Попробуйте
Переключите плеер на JavaScript в «Ещё попробуйте», сгенерируйте модуль и запустите его.

Открыть спеку урока в плеере: specs/tutorial/08_modules_and_arrays.t27
Все уроки
Модуль 1 · Чип
Что такое FPGA, какой чип у нас и как его выводы встречаются с платой.
Модуль 2 · Числа в железе
Биты, триты и форматы чисел, и сколько стоит арифметика в логике.
Модуль 3 · Ваша программа на t27
Напишите спеку, проверьте её и увидьте, почему «компилируется» не значит «верно».
Модуль 4 · Внутри t27c
Как компилятор читает спеку и что он пишет, включая нативный t27b.
Модуль 5 · От спеки к железу
Verilog, который пишет t27c, ячейки, в которые он превращается, и что делает одна LUT.
Модуль 6 · Читаем синтез
Что yosys сообщает о вашем дизайне и какие предупреждения важны.
Модуль 7 · Размещение, трассировка, тайминг
Где ячейки оказываются на кристалле и успевает ли тактовая частота.
Модуль 8 · Битстрим
Как оттрассированный дизайн становится битами, которые загружает чип, без Vivado.
Модуль 9 · На плате
Спросите чип, кто он, загрузите биты и проверьте их.
Модуль 10 · Лаборатория: наши исследования
Свой формат чисел, честная таблица результатов и таблицы модели, перемноженные на плате.