Manual de Instalação do Software

Escola de Síntese de Circuitos Digitais · basics-graphics-music · edição de 5 de outubro de 2026

Outros idiomas: Русский · English · Português (BR) · Lista de correções do manual antigo

topo ↑1. Introdução

Este manual descreve a instalação do software necessário para os laboratórios da Escola de Síntese de Circuitos Digitais e, de modo mais geral, para trabalhar com o repositório de exemplos basics-graphics-music (BGM, daqui para frente).

Ele substitui a edição anterior, Инструкция_по_установке_ПО.pdf, de 3 de outubro de 2025. As fotos e capturas de tela daquela edição foram mantidas. Onde uma informação ficou desatualizada, uma observação Era verdade antes ao lado explica o que mudou. A lista completa das divergências está em um arquivo separado.

1.1. A Escola de Síntese de Circuitos Digitais

A Escola de Síntese de Circuitos Digitais (Школа синтеза цифровых схем) é um programa educacional gratuito mantido pela empresa YADRO. Ele trata de projeto digital: desenvolvimento em nível RTL, verificação funcional e os fundamentos do projeto de circuitos integrados.

Segundo o site da própria Escola, o programa reúne mais de 2000 participantes e 24 universidades da Rússia e de Belarus. As aulas da temporada 2026/2027 acontecem nos sábados, das 12h às 15h no horário de Moscou, presencialmente nos polos universitários e online com gravação. A participação é gratuita; a YADRO oferece trabalho em projetos com seus próprios engenheiros, estágios e um banco de talentos.

Informações atualizadas e inscrição: edu.yadro.com/chip-design-school.

Nota

Se você está lendo a edição em português, provavelmente seu interesse é o BGM em si, e não a Escola. Tudo da seção 3 em diante se aplica da mesma forma; apenas as referências à Escola e ao seu grupo de conversa são específicas dela. Os mesmos exemplos são usados nos seminários internacionais (veja a seção 1.2).

1.2. O repositório basics-graphics-music

O BGM é um conjunto de exemplos portáveis em SystemVerilog para placas de FPGA e para circuitos integrados dedicados. Mais de 60 pessoas já contribuíram com ele (69 autores segundo o git log no momento em que esta edição foi preparada); o desenvolvedor principal é Yuri Panchul.

O repositório é usado pela Escola de Síntese de Circuitos Digitais e em seminários em vários países: Bishkek (2022), Tbilisi (2023), Baku e o Hacker Dojo no Vale do Silício (2024), Tijuana e Erevan (2025).

Existem três cópias do repositório, e a escolha entre elas importa:

FinalidadeEndereço
Cópia de desenvolvimento, experimental github.com/yuri-panchul/basics-graphics-music
Cópia estável usada pela Escola de Síntese de Circuitos Digitais github.com/chipdesignschool/basics-graphics-music
Cópia estável usada nos seminários internacionais github.com/verilog-meetup/basics-graphics-music

Para as aulas da Escola, use a cópia chipdesignschool: ela permanece estável ao longo do semestre. A cópia yuri-panchul é a de trabalho — o desenvolvimento acontece nela e o comportamento pode mudar de um dia para o outro.

O que distingue o BGM de outras coleções de exemplos

Mais sobre a estrutura do curso na seção 8 e neste artigo (em russo): habr.com/ru/articles/1071736.

1.3. O repositório systemverilog-homework

O systemverilog-homework (SVH) é um conjunto de pequenos exercícios de SystemVerilog com verificação automática. Ele complementa o BGM: no BGM os exemplos rodam em uma placa, enquanto no SVH você pratica as construções da linguagem e as técnicas de microarquitetura em um simulador.

FinalidadeEndereço
Cópia usada pela Escola github.com/chipdesignschool/systemverilog-homework
Cópia de desenvolvimento github.com/yuri-panchul/systemverilog-homework
Cópia dos seminários internacionais github.com/verilog-meetup/systemverilog-homework

O SVH precisa apenas de Icarus Verilog e Git — não exige placa nem ferramenta de fabricante. Veja a seção 9.

1.4. Transformar os exemplos em um circuito integrado

Os exemplos do BGM não se limitam a placas de FPGA; eles podem se tornar um chip de verdade.

Era verdade antes

A edição anterior descrevia a instalação do OpenLane por meio do Docker. O repositório agora usa o LibreLane — a continuação do mesmo projeto, instalada pelo Nix. O antigo 00_setup_open_lane.source_bash continua no repositório, mas o script que importa é o 00_setup_libre_lane.source_bash.

topo ↑2. O que mudou em relação à edição anterior

Um panorama rápido; os detalhes técnicos estão nas seções correspondentes, e a análise item por item da edição anterior está no arquivo de correções.

AssuntoO que há de novo
Altera em vez de Intel A Intel voltou a ser Altera. O Quartus Lite 25.1 se instala em altera_lite e o Quartus Pro em altera_pro. Os scripts conhecem todas as oito grafias do diretório do fabricante.
Versões antigas do Quartus Placas com Cyclone II (DE1, DE2) exigem o Quartus II 13.0sp1; placas com Cyclone III (DE0, Marsohod MCY316) exigem 13.1 ou 13.0sp1. As versões mais novas simplesmente não suportam mais essas famílias.
Quartus Pro e uma placa nova A Terasic DE23-Lite (Agilex 3) exige a edição Pro junto com uma licença gratuita. Nenhuma edição Lite consegue compilar para esse chip.
Localização das ferramentas Configurar o PATH deixou de ser necessário — os scripts localizam Quartus, Vivado, Gowin EDA, Icarus e o restante por conta própria.
USB Blaster III Foi acrescentada a regra udev para o USB Blaster III (idProduct 6022), necessária para a DE23-Lite.
Icarus Verilog A versão 13 é o mínimo, e a 14 é melhor. A edição anterior descrevia a versão 12.
OSS CAD Suite O fluxo aberto para placas Gowin e Lattice; traz também o seu próprio Icarus Verilog, que os scripts sabem usar.
Surfer Um visualizador de formas de onda, alternativa ao GTKWave, disponível como programa e como extensão do VS Code. Se o surfer é encontrado, os scripts o utilizam.
LibreLane em vez de OpenLane Toda a parte sobre o OpenLane foi reescrita.
XPACK RISC-V GCC O compilador de C e assembly para programas que rodam nos núcleos aps (MIET), yrv e picorv32 dentro do FPGA.
Programas de terminal O 14_run_terminal_program.bash funciona com minicom, picocom e putty.
Mais placas 54 placas, em vez das 39 da lista anterior. Os scripts também passaram a suportar a ferramenta Efinity, para FPGAs Efinix, mas ainda não há placa Efinix ativa — veja a seção 11.
Um script renomeado O 00_setup_intel_fpga.source_bash agora se chama 00_setup_altera.source_bash.
Endereços obsoletos Os repositórios em gitflic.ru não são mais usados, e o valid-ready-etc está obsoleto. Tudo está no GitHub.

topo ↑3. Placas suportadas e as versões de ferramenta que exigem

O repositório suporta 54 placas construídas com FPGAs de quatro fabricantes. A tabela abaixo é uma cópia do arquivo boards/README.md do repositório, onde os mesmos dados também existem em russo e nos formatos .html e .csv. Os dados daqui são lidos do arquivo boards/README.csv desse repositório, de modo que esta tabela não pode divergir dele.

Fabricante do FPGAFabricante da placaPlacaFamília de FPGAFerramenta e versões aceitáveisTM1638Vídeo ligado
AlteraALINXalinx_ax301Cyclone IV EQuartus de 13.0sp1 a 25.1stdnãoVGA
AlteraALINXalinx_ax4010Cyclone IV EQuartus de 13.0sp1 a 25.1stdnãoVGA
AlteraAlteradk_dev_3c120nCyclone IIIQuartus 13.1 ou anteriornãonão
AlteraMarsohodmarsohod_mcy112CycloneQuartus 9.1 SP2; de 13.0sp1 em diante exige licença †nãonão
AlteraMarsohodmarsohod_mcy316Cyclone IIIQuartus 13.1 ou anteriornãonão
AlteraOMDAZZomdazzCyclone IV EQuartus de 13.0sp1 a 25.1stdnãoVGA + LCD
AlteraOMDAZZomdazz_epm570MAX IIQuartus de 13.0sp1 a 25.1stdnãoVGA + LCD
AlteraPiswordspiswords6Cyclone IV EQuartus de 13.0sp1 a 25.1stdnãoVGA
AlteraTerasicc5gxCyclone VQuartus de 13.0sp1 a 25.1stdnãoHDMI/DVI
AlteraTerasicde0Cyclone IIIQuartus 13.1 ou anteriornãoVGA
AlteraTerasicde0_cvCyclone VQuartus de 13.0sp1 a 25.1stdnãoVGA
AlteraTerasicde0_nanoCyclone IV EQuartus de 13.0sp1 a 25.1stdsempreVGA
AlteraTerasicde0_nano_socCyclone VQuartus de 13.0sp1 a 25.1stdsempreVGA
AlteraTerasicde1Cyclone IIQuartus 13.0sp1 ou anteriornãoVGA
AlteraTerasicde10_liteMAX 10Quartus 14.0.2 ou posterior †opcionalVGA
AlteraTerasicde10_nanoCyclone VQuartus de 13.0sp1 a 25.1stdsempreHDMI/DVI
AlteraTerasicde1_socCyclone VQuartus de 13.0sp1 a 25.1stdnãoVGA
AlteraTerasicde2Cyclone IIQuartus 13.0sp1 ou anteriornãoVGA
AlteraTerasicde23_liteAgilex 3Quartus Pro 26.1.1nãoHDMI/DVI
AlteraTerasicde2_115Cyclone IV EQuartus de 13.0sp1 a 25.1stdnãoVGA
AlteraTerasicterasic_sockitCyclone VQuartus de 13.0sp1 a 25.1stdnãoVGA
AlteraZEOWAAzeowaaCyclone IV EQuartus de 13.0sp1 a 25.1stdnãoVGA
Alteraunknownemooc_ccCyclone IV EQuartus de 13.0sp1 a 25.1stdnãonão
AlteraunknownrzrdCyclone IV EQuartus de 13.0sp1 a 25.1stdnãoVGA + LCD
AlteraunknownsaylinxCyclone IV EQuartus de 13.0sp1 a 25.1stdnãoVGA
GowinMarsohodmarsohod3gw2GW1NR-9Gowin EDA, qualquer versão †nãoHDMI/DVI
GowinSipeedtang_mega_138kGW5ASTGowin EDA, 1.9.9 ou posterior †sempreHDMI/DVI + LCD
GowinSipeedtang_mega_138k_proGW5AST-138Gowin EDA, qualquer versão †sempreHDMI/DVI + LCD
GowinSipeedtang_nano_20kGW2AR-18Gowin EDA, qualquer versão †sempreHDMI/DVI + LCD
GowinSipeedtang_nano_4kGW1NSR-4Gowin EDA, qualquer versão †sempreHDMI/DVI
GowinSipeedtang_nano_9kGW1NR-9Gowin EDA, qualquer versão; Yosys/OSS †sempreHDMI/DVI + LCD
GowinSipeedtang_primer_20k_dockGW2A-18CGowin EDA, qualquer versão; Yosys/OSS †sempreHDMI/DVI + LCD
GowinSipeedtang_primer_20k_liteGW2A-18Gowin EDA, qualquer versão †semprenão
GowinSipeedtang_primer_25kGW5AGowin EDA, 1.9.9 ou posterior †sempreHDMI/DVI + VGA
GowinXunlongorangepi_msocGW5AT-138BGowin EDA, qualquer versão †semprenão
Lattice1BitSquaredicebreakeriCE40sem ferramenta atribuída; Yosys/OSS †opcionalHDMI/DVI
LatticeColorlightcolorlight75bECP5Yosys/OSS †semprenão
LatticeColorlightcolorlightI5ECP5Yosys/OSS †semprenão
LatticeFabmicrokarnixECP5Yosys/OSS †semprenão
LatticeGreg DavillorangecrabECP5Yosys/OSS †semprenão
LatticeOlimexice40hx8k_evbiCE40Yosys/OSS †sempreVGA
XilinxALINXalinx_ax7035bArtix-7Vivado, qualquer versão †nãonão
XilinxDigilentarty_a7_100Artix-7Vivado, qualquer versão †nãonão
XilinxDigilentarty_a7_35Artix-7Vivado, qualquer versão †nãonão
XilinxDigilentbasys3Artix-7Vivado, qualquer versão †nãoVGA
XilinxDigilentcmod_s7Spartan-7Vivado, qualquer versão †nãonão
XilinxDigilenteclypse_z7Zynq-7000Vivado, qualquer versão †semprenão
XilinxDigilentnexys4Artix-7Vivado, qualquer versão †nãoVGA
XilinxDigilentnexys4_ddrArtix-7Vivado, qualquer versão †nãonão
XilinxDigilentnexys_a7_100Artix-7Vivado, qualquer versão †nãonão
XilinxDigilentnexys_a7_50Artix-7Vivado, qualquer versão †nãonão
XilinxDigilentzybo_z7Zynq-7000Vivado, qualquer versão †nãonão
XilinxQMTechqmtech_kintex_7Kintex-7Vivado, qualquer versão †nãonão
Xilinxunknowna7_lite_35tArtix-7Vivado, qualquer versão †sempreHDMI/DVI

Sobre as colunas:

A mesma placa aparece no repositório em várias configurações — com e sem o módulo TM1638, com HDMI ou com uma das telas de LCD, com a ferramenta do fabricante ou com o fluxo aberto. No total são 112 diretórios em boards/ para essas 54 placas.

3.1. Três casos em que a versão do Quartus é crítica

Para a maioria das placas, qualquer Quartus Lite recente serve. Mas há três exceções que tornam errado o conselho de "simplesmente instalar a versão mais nova":

PlacasChipO que instalarPor quê
Terasic DE1, DE2Cyclone II Quartus II 13.0sp1 A versão 13.1 já abandonou o Cyclone II
Terasic DE0, Marsohod MCY316, DK-DEV-3C120NCyclone III Quartus II 13.1 (ou 13.0sp1) A versão 21.1 e as mais novas não suportam mais o Cyclone III
Terasic DE23-LiteAgilex 3 Quartus Prime Pro + licença gratuita Nenhuma edição Lite compila para esse chip
Nota

Várias versões do Quartus podem conviver na mesma máquina sem interferir uma na outra. Os scripts escolhem a que serve à placa selecionada — veja a seção 4.1.1.4. É justamente por isso que, para uma placa antiga, convém instalar a 13.0sp1 ou a 13.1 ao lado de um Quartus Lite recente, e não em vez dele.

Atenção

A placa Marsohod MCY112 é construída com um Cyclone de primeira geração (EP1C12). Nenhuma das versões testadas — de 13.0sp1 até 25.1std e Pro 26.1.1 — consegue compilar para ela: todas relatam Error (20005), dizendo que é necessária uma licença. O arquivo de projeto da própria placa no repositório foi criado pelo Quartus II 9.1 SP2 Web, isto é, por uma edição gratuita. Esta placa precisa de um Quartus daquela geração, ou de uma licença.

topo ↑4. Instalação das ferramentas e do software de apoio

A ordem das seções é Windows (4.1), Linux (4.2), macOS (4.3). Dentro de cada uma, as mesmas ferramentas aparecem na mesma ordem.

O que é obrigatório e o que não é. Git, Icarus Verilog com um visualizador de formas de onda, VS Code e RARS são obrigatórios — sem eles nenhum laboratório pode ser feito. Das ferramentas de FPGA, você só precisa da que corresponde à sua placa: Quartus para uma placa Altera, Vivado para Xilinx, Gowin EDA ou OSS CAD Suite para Gowin, OSS CAD Suite para Lattice. Se você não tem placa alguma, não precisa de nenhuma delas: os exemplos podem ser simulados no Icarus Verilog, e os exercícios do SVH são feitos inteiramente sem placa.

Nota

Em todos os casos, o caminho de instalação não deve conter espaços nem caracteres fora do alfabeto latino. Isso vale para todos os programas listados aqui e é a causa mais comum de falhas inexplicáveis.

4.1. Windows 10 e 11

4.1.1. Instalação do Quartus (para placas com FPGA Altera)

O Quartus só é necessário para placas com FPGA Altera (antes com a marca Intel). Se a sua placa usa Xilinx, Gowin ou Lattice, pule as seções 4.1.1 a 4.1.3.

Novo nesta edição

A Intel voltou a ser Altera. As versões novas se instalam em altera_lite (edição Lite) e altera_pro (edição Pro), enquanto as versões da época da Intel se instalavam em intelFPGA_lite e intelFPGA. Os scripts do repositório conhecem todos esses nomes, então a escolha não importa — instale no diretório que o instalador propuser.

Qual versão escolher

4.1.1.1. Instalação do Quartus Prime Lite 21.1 passo a passo

1. Verifique se você baixou os dois arquivos: o instalador (QuartusLiteSetup-21.1.exe) e o pacote de suporte ao seu chip, com a extensão .qdz. Os dois arquivos devem estar na mesma pasta.

Qual .qdz você precisa é determinado pelo chip da placa:

PlacaChipArquivo de suporte
DE10-LiteMAX 10max10-21.1.1.850.qdz
DE10-Nano, DE1-SoC, DE0-CVCyclone Vcyclonev-21.1.1.850.qdz
OMDAZZ, RzRd, ZEOWAA, DE2-115, DE0-NanoCyclone IVcyclone-21.1.1.850.qdz

O código do chip está impresso no próprio encapsulamento, na placa; ele também está na coluna "Família de FPGA" da tabela da seção 3.

O instalador do Quartus e o arquivo .qdz na mesma pasta
Fig. 1. O instalador do Quartus e o arquivo .qdz na mesma pasta

2. Execute o instalador e aceite o contrato de licença.

quartus_windows_installation
Fig. 2

3. Deixe o caminho de instalação no padrão.

quartus_windows_installation
Fig. 3

4. Se o arquivo .qdz estava ao lado do instalador, o seu chip aparece agora na lista Devices. Se houver vários arquivos, marque apenas a família de que você precisa — as outras ocupam espaço sem utilidade.

quartus_windows_installation
Fig. 4

5. Pressione Next e aguarde o fim da instalação.

quartus_windows_installation
Fig. 5

6. Na última tela, não deixe de marcar Launch USB Blaster II driver installation e então pressione Finish.

quartus_windows_installation
Fig. 6
quartus_windows_installation
Fig. 7
quartus_windows_installation
Fig. 8
Nota

Não é preciso definir variáveis de ambiente nem o PATH depois. Como os scripts encontram o Quartus está explicado na seção 4.1.1.4.

4.1.1.2. Instalação do driver do USB Blaster

Gravar uma placa exige o driver do gravador. O exemplo a seguir usa uma placa OMDAZZ/RzRd com um gravador DDS2022-24.

1. Conecte o gravador. Ligue uma ponta do cabo plano JTAG ao conector JTAG da placa (não ao AS!) e a outra ponta ao gravador. Observe a reentrância do conector: o cabo entra de um único jeito.

board_omdazz_connection
Fig. 9
board_omdazz_connection
Fig. 10

2. Alimente a placa pelo cabo USB tipo B e ligue-a no botão ao lado do conector. Uma placa pronta para funcionar se parece com isto:

board_omdazz_connection
Fig. 11
board_omdazz_connection
Fig. 12

3. Abra o Gerenciador de Dispositivos (o caminho mais rápido é a caixa de busca ao lado do botão Iniciar). Um novo dispositivo aparece na lista depois que o gravador é conectado.

4. Clique nele com o botão direito → Atualizar driver → Procurar drivers no meu computador.

5. Aponte a busca para o diretório de instalação do Quartus. O driver está dentro dele, em quartus/drivers/usb-blaster.

usb_blaster_driver_windows
Fig. 13
usb_blaster_driver_windows
Fig. 14
Nota

Se nenhum dispositivo aparecer no Gerenciador: tente outra porta USB (inclusive uma USB 2.0 em lugar de 3.0 — nem todas funcionam), confira a ligação do JTAG e verifique se o LED do gravador está aceso. Se todos os segmentos do display de sete segmentos da OMDAZZ acenderem ao mesmo tempo, a placa está com defeito. Se nada resolver, escreva aos moderadores da Escola.

Novo nesta edição

USB Blaster III. Cada geração de gravador tem identificadores USB próprios e precisa do seu próprio driver. As placas com USB Blaster III — entre elas a DE23-Lite — usam o identificador de produto 6022. No Windows o driver se instala da mesma forma, a partir do diretório do Quartus; no Linux é preciso uma regra udev, veja a seção 4.2.1.2.

4.1.1.3. Verificação da instalação do Quartus

1. Inicie o Quartus. Aparece uma janela de escolha; pressione Run the Quartus Prime Software.

quartus_windows_check
Fig. 15

2. Se você tem uma placa, abra a janela Programmer.

quartus_windows_check
Fig. 16

3. Pressione Hardware Setup.

quartus_windows_check
Fig. 17

4. Se a lista suspensa contiver USB-Blaster, o driver está instalado corretamente.

quartus_windows_check
Fig. 18
quartus_windows_check
Fig. 19

5. Use Add File para adicionar um bitstream .sof pronto e pressione Start. A palavra Successful significa que tanto o Quartus quanto o gravador funcionam.

quartus_programmer_success
Fig. 21
quartus_programmer_success
Fig. 22
quartus_programmer_success
Fig. 23
Nota

Não é obrigatório baixar um bitstream separado para essa verificação: compilar qualquer exemplo do repositório com o 03_synthesize_for_fpga.bash já compila e grava a placa. A edição anterior sugeria baixar um top.sof de um serviço de nuvem; isso continua funcionando, mas é dispensável.

quartus_windows_check
Fig. 20
quartus_windows_check
Fig. 24

A janela Programmer depois de uma gravação bem-sucedida

4.1.1.4. Como os scripts do BGM encontram o Quartus

No BGM, a síntese, a gravação da placa e a abertura da interface gráfica do fabricante são feitas pelos mesmos scripts, qualquer que seja a ferramenta:

./03_synthesize_for_fpga.bash          # sintetizar e gravar a placa
./04_configure_fpga.bash               # apenas gravar
./05_run_gui_for_fpga_synthesis.bash   # abrir a interface gráfica

Localizar o Quartus é tarefa do scripts/steps/00_setup_altera.source_bash. A ordem da busca é a seguinte, e o primeiro passo bem-sucedido encerra a procura:

  1. QUARTUS_ROOTDIR — se a variável estiver definida e apontar para o diretório quartus dentro de uma instalação, essa instalação é usada e nenhuma busca acontece.
  2. quartus no PATH — se já estiver disponível e for adequado à sua placa, o script não altera nada.
  3. INTEL_FPGA_HOME, depois ALTERA_HOME, depois QUARTUS_HOME — um diretório que contém diretórios de instalação.
  4. Locais padrão: o diretório pessoal, /opt e /tools (no Windows, as raízes de disco /c, /d e /e).

Em cada um desses locais são verificados todos os nomes de diretório que os instaladores da Altera e da Intel usaram ao longo dos anos:

altera  altera_lite  altera_std  altera_pro
intelFPGA  intelFPGA_lite  intelFPGA_std  intelFPGA_pro
Nota

Configurar o PATH não é necessário. A edição anterior do manual mandava acrescentar QUARTUS_ROOTDIR, QSYS_ROOTDIR e PATH ao ~/.bashrc. Isso deixou de ser preciso: para uma instalação em local padrão, os scripts encontram o Quartus sozinhos. As variáveis continuam úteis em dois casos — quando a instalação está em um diretório incomum e quando você tem várias versões e quer forçar uma delas.

O nome do diretório não diz nada nem sobre a versão nem sobre a edição. Na máquina do desenvolvedor, altera_lite/25.1std contém uma edição Lite, enquanto altera/13.1 contém uma edição Web (o nome antigo da Lite). Por isso o script não confia em nomes: ele executa quartus_sh e pergunta à própria ferramenta a sua versão, a sua edição e a lista de dispositivos para os quais consegue compilar.

Em seguida o script lê o número exato do chip no arquivo de projeto da sua placa (boards/<placa>/board_specific.qsf) e mantém apenas as instalações que o suportam. Entre as que sobram, a escolha segue esta ordem:

  1. uma edição gratuita (Lite ou Web) vence uma paga, mesmo sendo mais antiga;
  2. depois vence a versão mais nova;
  3. a Standard vence a Pro — mas somente em versões iguais.
Novo nesta edição

Consultar uma instalação leva de um a cinco segundos, portanto a resposta é guardada em cache em ~/.cache/basics-graphics-music, vinculada à data do arquivo quartus_sh. Uma execução normal de laboratório não gasta esse tempo.

Se nenhuma instalação for capaz de compilar para o chip da sua placa, o script avisa imediatamente, nomeando o chip e listando as versões encontradas — em vez de escolher uma inadequada e falhar mais tarde, no meio da síntese. Se você mesmo apontou uma instalação, por QUARTUS_ROOTDIR ou por INTEL_FPGA_HOME / ALTERA_HOME / QUARTUS_HOME, o script confia em você: emite um aviso e continua.

4.1.2. Instalação do AMD Vivado (para placas com FPGA Xilinx)

O Vivado só é necessário para placas com FPGA AMD Xilinx. Placas com chips Altera, Gowin ou Lattice não precisam dele.

Atenção

A imagem do instalador do Vivado passa de 80 GB e o programa instalado ocupa mais de 50 GB. Confira o espaço livre com antecedência.

Os laboratórios foram escritos para a versão 2022.2. A comunidade da Escola verificou que eles também funcionam nas versões 2018, 2021 e 2023, mas a recomendada é a 2022.2.

1. Pressione Next na tela de boas-vindas do instalador.

vivado_windows_installation
Fig. 25

2. Marque Vivado.

3. Na página Product Devices, marque as famílias de chips que o repositório suporta: Zynq-7000, Artix-7, Kintex-7 e Spartan-7. As outras famílias ocupam dezenas de gigabytes sem proveito.

vivado_windows_installation
Fig. 26
vivado_windows_installation
Fig. 27

4. Aceite o contrato de licença, deixe o caminho de instalação no padrão e pressione Install.

Era verdade antes

A edição anterior citava apenas Zynq-7000, Artix-7 e Kintex-7. O repositório hoje tem também placas com Spartan-7 (a Digilent Cmod S7, por exemplo), de modo que essa família também vale a pena marcar.

Como os scripts do BGM encontram o Vivado

A busca é feita pelo scripts/steps/00_setup_xilinx.source_bash. Em essência, a ordem é a mesma do Quartus:

  1. XILINX_VIVADO — um ponteiro direto para o diretório de uma versão;
  2. vivado no PATH;
  3. XILINX_HOME — um diretório que contém instalações;
  4. locais padrão: o diretório pessoal, /opt, /tools; no Windows, /c, /d, /e.

Dentro de cada local são verificados os diretórios Xilinx, AMD e AMDDesignTools, em duas disposições diferentes:

<local>/<fabricante>/Vivado/<versão>   — Vivado 2024.1 e anteriores
<local>/<fabricante>/<versão>/Vivado   — Vivado 2024.2 e posteriores
Novo nesta edição

A partir da versão 2024.2 a AMD mudou a disposição dos diretórios: o número da versão passou a ficar acima do nome do produto, e o diretório do fabricante já não se chama necessariamente Xilinx. Versões anteriores dos scripts não encontravam o Vivado por causa disso; agora as duas disposições são aceitas.

Se várias instalações forem encontradas, a versão mais nova é usada. Não é preciso configurar o PATH.

O repositório traz o seu próprio guia ilustrado de instalação do Vivado: docs/vivado_installation_guide.

4.1.3. Instalação do Gowin EDA (para placas com FPGA Gowin)

Por que as placas Gowin são convenientes para o ensino

Uma comparação detalhada: verilog-meetup.com — Can Gowin beat Xilinx and Altera in the educational market?

Instalação

O download exige cadastro no site do fabricante. A Escola pressupõe a versão V1.9.9 Education.

Nota

Para as placas Tang Primer 25K e Tang Mega 138K (famílias GW5A e GW5AST) a versão 1.9.9 não basta — esses chips vieram depois. Use um Gowin EDA mais novo.

1–2. Pressione Next na tela de boas-vindas e aceite o contrato de licença.

gowin_windows_installation
Fig. 28
gowin_windows_installation
Fig. 29

3–4. Marque todas as caixas, para instalar todos os componentes. Deixe o caminho no padrão e pressione Install.

gowin_windows_installation
Fig. 30
gowin_windows_installation
Fig. 31

5–6. Ao terminar, marque as caixas de instalação dos drivers do gravador e pressione Finish. Na janela FTDI CDM Drivers pressione Extract.

gowin_windows_installation
Fig. 32
gowin_windows_installation
Fig. 33

7–9. Avançar → aceitar o contrato → aguardar → Concluir.

gowin_windows_installation
Fig. 34
gowin_windows_installation
Fig. 35
gowin_windows_installation
Fig. 36

10–12. Um ícone de escudo começa a piscar na área de notificação — clique nele, deixe o caminho no padrão, Install e então Close.

gowin_windows_installation
Fig. 37
gowin_windows_installation
Fig. 38
gowin_windows_installation
Fig. 39

Como os scripts do BGM encontram o Gowin EDA

O scripts/steps/00_setup_gowin.source_bash verifica:

  1. GOWIN_VERSION_DIR — o diretório de uma versão (ele precisa conter os subdiretórios IDE e Programmer);
  2. GOWIN_HOME — um diretório que contém versões;
  3. o diretório pessoal, /opt, /tools e, dentro deles, os subdiretórios Gowin ou gowin.

Se várias versões forem encontradas, a mais nova é usada (nomes como Gowin_V1.9.9 são ordenados e o último vence), e um aviso lista o que foi encontrado.

4.1.4. OSS CAD Suite — o fluxo aberto para Gowin e Lattice

O OSS CAD Suite é um único pacote que reúne todo o fluxo aberto: Yosys (síntese), nextpnr (posicionamento e roteamento), openFPGALoader (gravação), além de compilações próprias de Icarus Verilog, GTKWave e Verilator. É a única forma de trabalhar com placas Lattice (ECP5, iCE40) e uma forma alternativa de trabalhar com placas Gowin.

Instalação

  1. Baixe o pacote do seu sistema na página de lançamentos: github.com/YosysHQ/oss-cad-suite-build/releases.
  2. Descompacte-o de modo a obter o diretório ~/oss-cad-suite — isto é, diretamente no seu diretório pessoal. Os scripts do BGM procuram exatamente esse caminho, e também ~/Downloads/oss-cad-suite.

Nada mais é necessário: o script scripts/steps/00_setup_yosys.source_bash encontra o diretório e o ativa com source ~/oss-cad-suite/environment. Não é preciso editar o PATH à mão.

Se o diretório não existir, o script procura o yosys no sistema e, não o encontrando, exibe uma mensagem com o endereço da página de lançamentos.

Nota

O fluxo aberto avança rápido, e alguns exemplos do repositório ainda não funcionam completamente nele — especialmente para placas Lattice. Se você encontrar um exemplo assim, esse é um bom tema de trabalho independente: a Escola conta com os alunos para depurar esses casos. Relate o que encontrar pelas issues do repositório.

4.1.5. Instalação do Icarus Verilog e de um visualizador de formas de onda (obrigatório)

O Icarus Verilog é um simulador aberto, suficiente para simular todos os exemplos do repositório. O GTKWave e o Surfer são os programas que exibem as formas de onda no formato VCD.

Novo nesta edição

A versão 13 é o mínimo; a 14 é melhor. A edição anterior descrevia a versão 12. Os scripts do repositório verificam a versão na inicialização: abaixo de 12 emitem erro e, na 12, um aviso recomendando a 13 ou a 14. Alguns exemplos usam construções de SystemVerilog que só a versão 13 e as posteriores entendem.

Onde baixar: bleyer.org/icarus — compilações para Windows. Pegue a versão 14.

1–2. Execute o instalador e aceite o contrato de licença.

icarus_windows_installation
Fig. 40
icarus_windows_installation
Fig. 41

3–4. O instalador avisa que o caminho de instalação não pode conter espaços. Deixe-o no padrão (C:\iverilog).

icarus_windows_installation
Fig. 42
icarus_windows_installation
Fig. 43

5–6. Marque as duas caixas, para uma instalação completa — ela inclui o GTKWave. Deixe o nome da pasta no menu Iniciar como está.

icarus_windows_installation
Fig. 44
icarus_windows_installation
Fig. 45

7–8. Marque Add executable folder(s) to the user PATH e pressione Install.

icarus_windows_installation
Fig. 46
icarus_windows_installation
Fig. 47

Como os scripts do BGM encontram o Icarus

O scripts/steps/00_setup_icarus.source_bash:

  1. se o iverilog estiver disponível no PATH, usa esse;
  2. caso contrário, no Windows verifica /c/iverilog (isto é, C:\iverilog) e, no Linux e no macOS, ~/install/iverilog;
  3. em seguida executa iverilog -V, interpreta o número da versão e avisa se ela for antiga demais;
  4. verifica ainda o suporte a -g2023, de que alguns exemplos precisam.
Novo nesta edição

O Icarus que vem no OSS CAD Suite também serve. Se você instalou o OSS CAD Suite (seção 4.1.4), uma instalação separada do Icarus é opcional: o pacote traz o simulador e o GTKWave, e os scripts os utilizam.

Se, em lugar do GTKWave, o programa surfer for encontrado no sistema, os scripts o usam e leem o arquivo de configuração surfer.scr em vez do gtkwave.tcl. Veja a seção 4.1.7.

4.1.6. Instalação do Visual Studio Code (obrigatório)

1–3. Baixe o instalador em code.visualstudio.com, execute-o e aceite o contrato de licença.

vscode_windows_installation
Fig. 48
vscode_windows_installation
Fig. 49
vscode_windows_installation
Fig. 50

4–5. Deixe o caminho de instalação no padrão. O caminho não deve conter caracteres fora do alfabeto latino. Deixe o nome da pasta no menu Iniciar como está.

vscode_windows_installation
Fig. 51
vscode_windows_installation
Fig. 52

6–7. Vale marcar "Criar um ícone na área de trabalho" e as duas entradas "Abrir com o Code" — elas acrescentam o comando ao menu de contexto do Explorador.

vscode_windows_installation
Fig. 53
vscode_windows_installation
Fig. 54

8. Instale a extensão de realce de sintaxe: aba de extensões → procure SystemVerilog → SystemVerilog - Language Support → Install.

vscode_windows_installation
Fig. 55

4.1.7. Instalação do Surfer, um visualizador de formas de onda

Novo nesta edição

Esta seção não existia na edição anterior. O Surfer é uma alternativa moderna ao GTKWave para ver formas de onda. Existe em duas formas, e as duas são úteis.

A extensão do VS Code

Abra a aba de extensões, procure Surfer e instale. A partir daí os arquivos .vcd abrem dentro do próprio editor, ao lado do código — não é preciso alternar para outra janela.

O programa autônomo

Baixe uma compilação na página de lançamentos, gitlab.com/surfer-project/surfer/-/releases, e coloque o executável em um diretório que esteja no PATH.

Os scripts do repositório verificam a existência do comando surfer e, se ele existir, usam o Surfer em lugar do GTKWave automaticamente. Para cada exemplo o repositório mantém um arquivo surfer.scr ao lado do gtkwave.tcl, com o mesmo conjunto de sinais exibidos.

4.1.8. Instalação do Git (obrigatório)

O Git é necessário para baixar o repositório de exemplos e receber atualizações. Além disso, no Windows ele traz o Git Bash — o shell em que todos os scripts do repositório são executados.

Atenção

No Windows, os scripts do BGM são executados pelo Git Bash, e não pelo cmd.exe nem pelo PowerShell. Isso não é opcional.

1–3. Baixe o instalador em git-scm.com/downloads/win, aceite o contrato e deixe as três telas seguintes no padrão.

git_windows_installation
Fig. 56
git_windows_installation
Fig. 57
git_windows_installation
Fig. 58

4. Como editor padrão, convém escolher na lista o Visual Studio Code.

git_windows_installation
Fig. 59
git_windows_installation
Fig. 60
git_windows_installation
Fig. 61

5. Marque Override the default branch name for new repositories e deixe o nome como main.

git_windows_installation
Fig. 62
git_windows_installation
Fig. 63
git_windows_installation
Fig. 64

6. Deixe as demais páginas no padrão e conclua a instalação.

git_windows_installation
Fig. 65
git_windows_installation
Fig. 66
git_windows_installation
Fig. 67

7. Depois disso o sistema passa a ter Git Bash e Git CMD, e o menu de contexto do Explorador ganha Open Git GUI here e Open Git Bash here.

git_windows_installation
Fig. 68
git_windows_installation
Fig. 69

Obtenção dos repositórios

mkdir -p ~/projects
cd ~/projects
git clone https://github.com/chipdesignschool/basics-graphics-music.git
git clone https://github.com/chipdesignschool/systemverilog-homework.git
Era verdade antes

A edição anterior mandava clonar os repositórios de gitflic.ru, incluindo o valid-ready-etc. Esses endereços não são mais usados: o valid-ready-etc está obsoleto e os repositórios atuais ficam no GitHub (veja as seções 1.2 e 1.3). É justamente por isso que a opção main em vez de master importa agora — no GitHub o ramo principal se chama main.

4.1.9. Instalação do RARS (obrigatório)

O RARS é um simulador do conjunto de instruções RISC-V. É nele que se fazem os exercícios de assembly da parte do curso sobre arquitetura de processadores, e é ele que o 10_run_instruction_set_simulator.bash executa.

O RARS é distribuído como um único arquivo jar executável, portanto é preciso Java 8 ou mais novo.

1. Baixe uma compilação do OpenJDK em jdk.java.net e descompacte-a, por exemplo em C:\Program Files\OpenJDK.

2. Crie a variável de sistema JAVA_HOME com o caminho do diretório descompactado e acrescente %JAVA_HOME%\bin ao PATH.

Era verdade antes

A edição anterior escrevia esse valor como %JAVA_HOME\bin — sem o sinal de porcentagem de fechamento, o que torna a entrada inútil. A grafia correta é %JAVA_HOME%\bin.

3. Verifique a instalação no cmd:

java --version
rars_installation
Fig. 70
rars_installation
Fig. 71
rars_installation
Fig. 72

4. Baixe o rars1_6.jar da página de lançamentos: github.com/TheThirdOne/rars/releases.

rars_installation
Fig. 73
rars_installation
Fig. 74

O 00_setup_rars.source_bash procura o arquivo jar no diretório pessoal e no diretório de downloads; se encontrar várias versões, usa a mais nova.

4.1.10. Instalação do XPACK RISC-V GCC (para software que roda em um núcleo dentro do FPGA)

Novo nesta edição

Esta seção não existia na edição anterior. Ela é necessária para a parte do curso em que um núcleo de processador é sintetizado no FPGA e programas em C e assembly rodam sobre ele.

O repositório contém três núcleos RISC-V que podem ser sintetizados em um FPGA:

O núcleo é selecionado com o 13_choose_another_riscv_core_for_software.bash.

Compilar software para um núcleo desses exige um compilador cruzado. O repositório usa a distribuição XPACK RISC-V GCC (riscv-none-elf-gcc).

Instalação

  1. Baixe o pacote na página de lançamentos: github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases.
  2. Descompacte-o no seu diretório pessoal. Você deve obter um diretório como ~/xpack-riscv-none-elf-gcc-14.2.0-3/, contendo um subdiretório bin.

O 00_setup_riscv.source_bash procura diretórios chamados xpack-riscv-none-elf-gcc-* até dois níveis abaixo do diretório pessoal, e também um diretório xpack/bin. Se encontrar várias versões, emite um aviso e usa uma delas.

Compilação e envio de um programa:

./11_build_software_to_run_on_cpu.bash
./12_upload_software_to_the_board_using_uart.bash
./14_run_terminal_program.bash

O programa de terminal

Novo nesta edição

O 14_run_terminal_program.bash funciona com três terminais: minicom, picocom e putty. O script descobre quais estão instalados, oferece a escolha entre as portas UART disponíveis e inicia o terminal na velocidade correta. No Windows, o PuTTY é o mais fácil de instalar; no Linux, minicom ou picocom.

4.1.11. Instalação do LibreLane (síntese para circuito integrado)

Era verdade antes

A edição anterior descrevia o OpenLane instalado por Docker, e aquela seção deve ser considerada inteiramente obsoleta. O repositório agora usa o LibreLane — a continuação do mesmo projeto, instalada pelo Nix.

O LibreLane é um fluxo aberto que transforma código SystemVerilog em layout de circuito integrado (RTL a GDSII). Ele roda apenas no Linux e no macOS; no Windows é preciso o WSL ou uma máquina virtual com Linux (veja a seção 4.2.11 e o arquivo docs/wsl.md do repositório).

Instalação pelo Nix

# instalar o gerenciador de pacotes Nix
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install

# no diretório do LibreLane
nix develop

Dentro do shell do nix develop o comando librelane está disponível e os scripts do repositório o encontram.

Se o LibreLane estiver em outro lugar

Aponte a variável LIBRELANE_PATH para o diretório que contém o executável:

export LIBRELANE_PATH=/caminho/para/librelane/bin

O 00_setup_libre_lane.source_bash acrescenta esse caminho ao PATH. Se o comando librelane ainda assim não for encontrado, o script exibe uma mensagem descrevendo as duas formas de instalação.

Execução

./07_synthesize_for_asic.bash                  # sintetizar para um ASIC
./08_visualize_asic_synthesis_results_1.bash   # inspecionar o layout
./09_visualize_asic_synthesis_results_2.bash

O visualizador é escolhido pela variável LAYOUT_VIEWER e pode ser openroad (o padrão) ou klayout.

openlane_legacy
Fig. 96
openlane_legacy
Fig. 97
openlane_legacy
Fig. 98

Capturas de tela da edição anterior, mostrando o OpenLane. Foram mantidas para comparação: o fluxo em si foi substituído pelo LibreLane.

4.2. Linux (com o Ubuntu 22.04 como exemplo)

A ordem é a mesma do Windows, e a numeração das subseções coincide. Onde um passo não difere, ele não é repetido — indica-se a subseção correspondente de 4.1.

Nota

No Linux os scripts rodam em um terminal comum; não é preciso um shell separado como o Git Bash do Windows.

4.2.1. Instalação do Quartus (para placas com FPGA Altera)

O Quartus só é necessário para placas com FPGA Altera. Se a sua placa usa Xilinx, Gowin ou Lattice, vá para as subseções 4.2.2 a 4.2.4.

4.2.1.1. Instalação do Quartus Prime Lite 21.1 passo a passo

1. Baixe o instalador QuartusLiteSetup-21.1.0.842-linux.run e o pacote .qdz do seu chip (veja a tabela da subseção 4.1.1.1), colocando os dois na mesma pasta.

2. No terminal:

chmod +x QuartusLiteSetup-21.1.0.842-linux.run
./QuartusLiteSetup-21.1.0.842-linux.run
quartus_linux_installation
Fig. 75
quartus_linux_installation
Fig. 76
quartus_linux_installation
Fig. 77
Atenção

O diretório de instalação não deve conter espaços nem caracteres fora do alfabeto latino — isso quebra o Quartus.

Daí em diante o instalador se comporta como no Windows: apresenta o contrato, o diretório e uma lista Devices montada a partir dos arquivos .qdz que encontrou. Uma lista vazia significa que o .qdz não estava ao lado do instalador; ele pode ser acrescentado depois pelo menu Tools → Install Devices.

Era verdade antes

Nenhuma variável de ambiente é necessária. A edição anterior exigia estas linhas no ~/.bashrc:
export QSYS_ROOTDIR=…
export QUARTUS_ROOTDIR=…
PATH=$PATH:/home/user/intelFPGA_lite/20.1/quartus/bin:…
Isso deixou de ser necessário — os scripts encontram o Quartus sozinhos (subseção 4.2.1.4). Note também que, naquele exemplo, os números de versão não concordavam entre as linhas (21.1 em duas variáveis e 20.1 no PATH) — um erro de digitação que colocava no PATH um diretório inexistente.

4.2.1.2. A regra udev para o USB Blaster

Sem uma regra udev, o gravador fica acessível apenas ao root, e o Quartus "não o vê".

1. Conecte a placa e o gravador e confirme que o sistema os enxerga:

lsusb

Deve aparecer uma linha com o identificador de fabricante 09fb — que é a Altera.

2. Crie o arquivo de regras:

sudo nano /etc/udev/rules.d/51-usbblaster.rules

e escreva nele:

# USB Blaster
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6001", MODE:="0666", SYMLINK+="usbblaster/%k"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6002", MODE:="0666", SYMLINK+="usbblaster/%k"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6003", MODE:="0666", SYMLINK+="usbblaster/%k"

# USB Blaster II
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6010", MODE:="0666", SYMLINK+="usbblaster2/%k"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6810", MODE:="0666", SYMLINK+="usbblaster2/%k"

# USB Blaster III (necessário para a Terasic DE23-Lite)
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6022", MODE:="0666", SYMLINK+="usbblaster3/%k"
Novo nesta edição

O terceiro grupo de linhas é novo. O USB Blaster III (idProduct 6022) é usado na Terasic DE23-Lite. A edição anterior não tinha regra para ele, e a placa não podia ser gravada.

3. Aplique as regras e reconecte o cabo do gravador:

sudo udevadm control --reload
# depois desconecte e reconecte o cabo do USB Blaster
Nota

Se o diretório /etc/udev/rules.d/ acabar com dois arquivos contendo regras de Blaster — digamos o seu 51-usbblaster.rules e o 90-altera.rules que vem com o Quartus —, nada quebra: o udev lê todos os arquivos e aplica todas as regras que casam. Mas, se eles definirem permissões diferentes, vence o arquivo que vem primeiro na ordem alfabética, porque o operador := proíbe alterações posteriores. Para ver qual regra valeu, use udevadm test.

4.2.1.3. Verificação da instalação do Quartus

Os passos são os da subseção 4.1.1.3: iniciar o Quartus, abrir o Programmer, pressionar Hardware Setup e conferir que USB-Blaster está na lista.

quartus_linux_check
Fig. 78
quartus_linux_check
Fig. 79
quartus_linux_check
Fig. 80
Nota

No Lubuntu, a janela Programmer às vezes se recusa a encaixar. O menu Window → Attach Window resolve.

quartus_linux_check
Fig. 81
quartus_linux_check
Fig. 82
quartus_linux_check
Fig. 83
quartus_programmer_success_linux
Fig. 84
quartus_programmer_success_linux
Fig. 85
quartus_programmer_success_linux
Fig. 86

A palavra Successful significa que o Quartus e o gravador funcionam

4.2.1.4. Como os scripts do BGM encontram o Quartus

Exatamente como no Windows — veja a subseção 4.1.1.4. Só muda a lista de locais padrão: no Linux são o diretório pessoal, /opt e /tools (no Windows, as raízes de disco /c, /d e /e ocupam esse lugar).

4.2.2. Instalação do AMD Vivado (para placas com FPGA Xilinx)

Baixe o instalador no site da AMD, torne-o executável e execute-o:

chmod +x FPGAs_AdaptiveSoCs_Unified_*_Lin64.bin
./FPGAs_AdaptiveSoCs_Unified_*_Lin64.bin

Daí em diante as caixas de diálogo são as do Windows (subseção 4.1.2): escolher o Vivado, marcar as famílias Zynq-7000, Artix-7, Kintex-7 e Spartan-7, aceitar o contrato.

Depois da instalação, execute o script dos drivers do cabo — sem ele o gravador não fica acessível a um usuário comum:

cd $XILINX_VIVADO/data/xicom/cable_drivers/lnx64/install_script/install_drivers
sudo ./install_drivers
Nota

Em distribuições fora da lista oficialmente suportada, o Vivado pode não iniciar por falta da biblioteca libtinfo.so.6 — a mensagem é couldn't load file "libxv_tcltasks.so", seguida de Failed to load feature 'core'. A causa é que o próprio ldlibpath.sh do Vivado não conhece a sua distribuição e por isso não acrescenta o caminho correto para ela. A solução é colocar uma biblioteca compatível em $XILINX_VIVADO/lib/lnx64.o/Default/.

Como os scripts encontram o Vivado está na subseção 4.1.2; a ordem é a mesma em todos os sistemas.

4.2.3. Instalação do Gowin EDA (para placas com FPGA Gowin)

Baixe o pacote para Linux (é preciso cadastro no site da Gowin) e descompacte-o no diretório pessoal ou em /opt, de modo a obter um caminho como ~/Gowin/Gowin_V1.9.9/IDE.

O acesso ao gravador exige uma regra udev — o gravador das placas Tang é feito com um chip FTDI:

sudo nano /etc/udev/rules.d/91-sipeed.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", MODE:="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6014", MODE:="0666"
sudo udevadm control --reload

Como os scripts encontram o Gowin EDA está na subseção 4.1.3.

4.2.4. OSS CAD Suite — o fluxo aberto para Gowin e Lattice

Exatamente como no Windows (subseção 4.1.4): descompacte o pacote em ~/oss-cad-suite e não faça mais nada — os scripts o ativam.

cd ~
tar xzf oss-cad-suite-linux-x64-*.tgz

4.2.5. Instalação do Icarus Verilog e de um visualizador de formas de onda (obrigatório)

Para o Ubuntu 22.04 e mais novos:

sudo add-apt-repository ppa:team-electronics/ppa
sudo apt-get update
sudo apt install iverilog gtkwave

Confira a versão:

iverilog -V
icarus_linux_installation
Fig. 87
Novo nesta edição

A versão 13 é o mínimo; a 14 é melhor. Se a sua distribuição traz apenas a versão 11 ou 12, há três saídas: usar o Icarus do OSS CAD Suite (subseção 4.2.4), compilá-lo a partir do código-fonte, ou instalar uma compilação de bleyer.org/icarus (o código-fonte também está lá). Os scripts verificam a versão e avisam se ela for antiga demais.

Compilação a partir do código-fonte em ~/install/iverilog — um caminho que os scripts conhecem:

git clone https://github.com/steveicarus/iverilog.git
cd iverilog && sh autoconf.sh
./configure --prefix=$HOME/install/iverilog
make -j$(nproc) && make install

4.2.6. Instalação do Visual Studio Code (obrigatório)

Baixe o pacote .deb em code.visualstudio.com e instale-o:

sudo dpkg -i code_*.deb
vscode_linux_installation
Fig. 88
vscode_linux_installation
Fig. 89
vscode_linux_installation
Fig. 90
vscode_linux_installation
Fig. 91
vscode_linux_installation
Fig. 92
vscode_linux_installation
Fig. 93
vscode_linux_installation
Fig. 94
vscode_linux_installation
Fig. 95

Em seguida instale as extensões SystemVerilog - Language Support e Surfer, exatamente como no Windows (subseções 4.1.6 e 4.1.7)

4.2.7. Instalação do Surfer, um visualizador de formas de onda

Baixe a compilação para Linux na página de lançamentos, gitlab.com/surfer-project/surfer, descompacte-a e coloque o executável em um diretório que esteja no PATH — por exemplo ~/.local/bin:

mkdir -p ~/.local/bin
tar xzf surfer-*-linux.tar.gz -C ~/.local/bin --strip-components=1 surfer/surfer
surfer --version

Para que os scripts abram as formas de onda no Surfer, e não no GTKWave:

export WAVE_VIEWER=surfer

Mais sobre a escolha do visualizador na subseção 4.1.7.

4.2.8. Instalação do Git (obrigatório)

sudo apt install git

Defina o seu nome e endereço — sem isso o Git se recusa a registrar commits:

git config --global user.name "Seu Nome"
git config --global user.email "voce@example.com"
git config --global init.defaultBranch main

Nenhum shell separado é necessário: no Linux os scripts rodam em um terminal comum.

4.2.9. Instalação do RARS (obrigatório)

É preciso Java. No Linux ele se instala com um comando, e nem JAVA_HOME nem PATH precisam ser mexidos:

sudo apt install default-jre
java --version

Em seguida baixe o rars1_6.jar da página de lançamentos (github.com/TheThirdOne/rars) no seu diretório pessoal e execute-o:

java -jar rars1_6.jar

O 10_run_instruction_set_simulator.bash encontra o .jar por conta própria — veja a subseção 4.1.9.

4.2.10. Instalação do XPACK RISC-V GCC e de um programa de terminal

O compilador. Descompacte o pacote XPACK no seu diretório pessoal — os scripts o encontram (subseção 4.1.10):

cd ~
tar xzf xpack-riscv-none-elf-gcc-*-linux-x64.tar.gz

O programa de terminal. Ele é necessário para enviar um programa para a placa pela UART e conversar com o processador dentro do FPGA:

sudo apt install minicom picocom

O 14_run_terminal_program.bash escolhe o programa pela variável TERMINAL_PROGRAM (minicom, picocom ou putty).

Para acessar a porta serial sem sudo, acrescente-se ao grupo dialout:

sudo usermod -aG dialout $USER
# depois saia da sessão e entre de novo
Nota

Esse grupo é a causa mais comum de um Permission denied em /dev/ttyUSB0. A mudança só vale depois de um novo login; reiniciar o terminal não basta.

4.2.11. Instalação do LibreLane (síntese para circuito integrado)

Veja a subseção 4.1.11 — a instalação pelo Nix é a mesma no Linux e no macOS. No Linux esse é o caminho normal e nativo: nem WSL nem máquina virtual entram na história.

curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
nix develop
./07_synthesize_for_asic.bash

4.3. macOS

Atenção

Não existe Quartus nem Vivado para o macOS. Nem a Altera nem a AMD lançam esses programas para macOS, de forma alguma. Isso significa que placas com FPGA Altera e Xilinx não podem ser usadas diretamente do macOS — é preciso uma máquina virtual com Linux ou Windows (seções 5 e 7), ou um computador separado.

Estes, por outro lado, funcionam plenamente e não exigem truque algum:

Em outras palavras, um Mac é um lugar confortável para aprender com uma Tang Nano 9K — mais uma razão para a Escola recomendá-la como a opção barata.

No restante, o macOS se comporta como o Linux: os mesmos scripts, o mesmo terminal, os mesmos comandos. Mas há quatro particularidades, todas elas embutidas nos próprios scripts.

1. O Gowin EDA só funciona em Apple Silicon

Em Macs com processador Intel o Gowin EDA não inicia, e o script diz isso diretamente:

Gowin IDE is not working on your platform (Mac x64?)

Em Macs com M1 e posteriores ele funciona.

2. Uma disposição de diretórios diferente para o Gowin

No macOS o Gowin EDA é distribuído como um pacote de aplicativo, com os executáveis dentro dele. O script procura os diretórios GowinIDE.app, Gowin e gowin e, dentro deles, verifica também o subcaminho:

Contents/Resources/Gowin_EDA

Assim, o caminho de instalação fica, por exemplo, /Applications/GowinIDE.app/Contents/Resources/Gowin_EDA/IDE/bin. As variáveis DYLD_FRAMEWORK_PATH e DYLD_LIBRARY_PATH, sem as quais o Gowin EDA não encontra as suas próprias bibliotecas no macOS, são definidas pelo script — você não precisa defini-las à mão.

3. Quarentena: "não é possível verificar o desenvolvedor"

O macOS marca tudo o que é baixado da internet com o atributo com.apple.quarantine e se recusa a executar. Essa é a razão mais comum pela qual o Gowin EDA, o OSS CAD Suite e o compilador XPACK "não funcionam" em um Mac.

Os scripts do repositório detectam isso e sugerem o comando, mas remover o atributo é com você. São verificados:

O comando para qualquer um deles:

xattr -rd com.apple.quarantine ~/oss-cad-suite

# se der Permission denied:
sudo xattr -rd com.apple.quarantine ~/oss-cad-suite
Nota

Ao encontrar o atributo, o script pergunta Abort, Retry, Ignore? [a/R/i]. Isso quer dizer: abra uma segunda janela de terminal, execute o comando xattr sugerido, volte e pressione Enter — Retry é o padrão, e o script verifica o atributo de novo. Responder i continua sem remover o atributo (muito provavelmente para um erro); a aborta.

4. O visualizador de formas de onda: Surfer no Apple Silicon

Em Macs com M1 ou posterior os scripts abrem as formas de onda no Surfer, e não no GTKWave, e exigem que ele esteja instalado:

brew install surfer   # ou baixe uma compilação na página de lançamentos

Em Macs com Intel usa-se o GTKWave, e o executável de dentro do pacote do aplicativo é chamado diretamente:

/Applications/gtkwave.app/Contents/MacOS/gtkwave-bin

Ali, portanto, basta arrastar o gtkwave.app para /Applications. Iniciá-lo com open -a gtkwave não serve: desse jeito o GTKWave não lê o script gtkwave.tcl que organiza previamente os sinais na forma de onda — o próprio comentário no script registra isso.

Nota

Mais um detalhe embutido nos scripts: ao procurar o compilador XPACK no macOS, o diretório Desktop é excluído da busca. Isso evita que o macOS peça permissão para ler os arquivos da sua área de trabalho a cada execução.

Instalação do restante pelo Homebrew:

brew install git icarus-verilog
brew install surfer                      # em Apple Silicon
brew install gtkwave                     # em um Mac com Intel
brew install --cask visual-studio-code
Não verificado

Esta seção sobre o macOS foi escrita a partir do código dos scripts do repositório (os ramos darwin em 00_setup_gowin, 00_setup_yosys, 00_setup_icarus, 00_setup_riscv e 00_setup.source_bash), e não verificada em uma máquina macOS real. Se você encontrar uma divergência, relate-a: a seção será corrigida.

topo ↑5. Máquina virtual para as aulas de verificação funcional

A parte do curso dedicada à verificação funcional precisa do simulador Questa. Ele é distribuído separadamente e pode exigir licença, por isso a Escola distribui uma máquina virtual pronta com o simulador instalado.

  1. Instale o VirtualBox.
  2. Baixe e descompacte o arquivo da máquina virtual (o link é fornecido pela Escola).
  3. Abra o VirtualBox e acrescente a máquina com Adicionar, apontando para o arquivo .vbox do diretório descompactado.
  4. Inicie a máquina. A senha do usuário é 1234.
  5. Abra um terminal (Applications → System Tools → Terminal) e digite vsim. A janela de boas-vindas do simulador deve aparecer.
virtualbox_verification_vm
Fig. 99
virtualbox_verification_vm
Fig. 100
virtualbox_verification_vm
Fig. 101
virtualbox_verification_vm
Fig. 102

Em caso de dificuldade, escreva no grupo de conversa da Escola.

topo ↑6. SSD inicializável com o software pré-instalado

Em vez de instalar tudo à mão, é possível obter uma imagem de SSD com o software pré-instalado e inicializar o computador a partir dela. Isso é prático em laboratórios de ensino.

A seção se baseia no artigo de Yuri Panchul: habr.com/ru/articles/754262.

Nota

A imagem contém o software para placas Altera (Quartus). O Vivado e o Gowin EDA são instalados separadamente, se necessário. O Questa da imagem pode exigir licença.

6.1. Gravação da imagem no SSD

Baixe o arquivo .img (o link é fornecido pela Escola).

Atenção

Sobre o GPT. Um disco carrega duas tabelas de partição GPT — a principal e uma de reserva. A imagem (cerca de 50 GB descompactada) é menor do que qualquer SSD atual, de modo que, depois da gravação, a tabela de reserva sobrevive intacta e atrapalha a primeira inicialização. Por isso a segunda tabela precisa ser apagada.

Um script do próprio repositório faz isso:

scripts/admin/erase_ssd_gpt_and_write_bootable_image.bash

Coloque o script no diretório da imagem (ou a imagem no diretório do script) e execute-o com sudo. O script confere que há exatamente uma imagem, pergunta qual disco sobrescrever, garante que esse disco não está montado e grava a imagem. A operação leva dezenas de minutos.

6.2. Inicialização a partir do SSD

Conecte o SSD ao computador desligado, ligue-o e comece a pressionar a tecla que abre o menu de inicialização:

FabricanteTecla
ASUS, AcerDel ou F2
DellF12 ou F2
HPF10
LenovoF2 ou Fn+F2 (notebooks), F1 (desktops), Enter e depois F1 (ThinkPad)
MSIDel
SamsungF2

A imagem funciona tanto por UEFI quanto por inicialização legada.

bootable_ssd
Fig. 103
bootable_ssd
Fig. 104
bootable_ssd
Fig. 105
bootable_ssd
Fig. 106

Se as teclas não responderem na hora de ligar (a inicialização rápida do Windows causa isso), use o próprio Windows: Configurações → Recuperação → Inicialização avançada → Reiniciar agora, depois Usar um dispositivo, e escolha a entrada Linpus lite (a entrada EFI USB Device não funciona sempre).

bootable_ssd
Fig. 107
bootable_ssd
Fig. 108
bootable_ssd
Fig. 109
bootable_ssd
Fig. 110

O Simply Linux então inicia. Login verilog, senha verilog.

bootable_ssd
Fig. 111
bootable_ssd
Fig. 112
bootable_ssd
Fig. 113

6.3. Atualização dos repositórios

Conecte-se à internet e atualize os exemplos. Se o diretório já existir:

cd ~/projects/basics-graphics-music
git pull

Se não existir:

cd ~/projects
git clone https://github.com/chipdesignschool/basics-graphics-music.git
git clone https://github.com/chipdesignschool/systemverilog-homework.git
Era verdade antes

A edição anterior sugeria clonar de gitflic.ru e mencionava o repositório valid-ready-etc. Esse está obsoleto; o seu material foi incorporado ao BGM. Os endereços atuais estão nas seções 1.2 e 1.3.

6.4. Verificação do funcionamento com a placa

Primeiro selecione a placa:

cd ~/projects/basics-graphics-music
./check_setup_and_choose_fpga_board.bash

O script mostra a lista de placas suportadas, guarda a sua escolha no arquivo fpga_board_selection na raiz do repositório e oferece criar os diretórios de trabalho de todos os exemplos.

Depois compile um exemplo e grave a placa:

cd labs/1_basics/1_01_and_or_not_xor_de_morgan
./03_synthesize_for_fpga.bash
Nota

Os nomes dos diretórios de exemplo mudaram: agora eles estão agrupados por parte do curso — labs/1_basics/1_01_and_or_not_xor_de_morgan em vez do antigo labs/01_and_or_not_xor_de_morgan.

Se a gravação falhar na primeira tentativa, reconecte o cabo do USB Blaster e execute apenas a etapa de gravação:

./04_configure_fpga.bash

Depois disso você pode apertar os botões da placa e observar os LEDs se comportarem conforme o código do exemplo manda.

topo ↑7. Máquina virtual com o software pré-instalado

Se inicializar por um SSD separado for inconveniente, a mesma imagem pode rodar em uma máquina virtual.

  1. Baixe o arquivo .img.
  2. Converta-o para o formato do VirtualBox com o qemu-img:
    qemu-img convert -f raw -O vdi imagem.img imagem.vdi
  3. Crie uma máquina nova no VirtualBox e conecte o .vdi resultante como um disco rígido existente.
  4. Login verilog, senha verilog.
preinstalled_vm
Fig. 114
preinstalled_vm
Fig. 115
preinstalled_vm
Fig. 116
preinstalled_vm
Fig. 117
preinstalled_vm
Fig. 118
preinstalled_vm
Fig. 119
preinstalled_vm
Fig. 120
preinstalled_vm
Fig. 121
preinstalled_vm
Fig. 122
preinstalled_vm
Fig. 123
preinstalled_vm
Fig. 124
Atenção

Gravar uma placa de dentro da máquina virtual exige repassar o dispositivo USB para ela (Dispositivos → USB), e para isso o VirtualBox precisa do seu Extension Pack. Se o gravador insistir em não aparecer, é mais fácil trabalhar com a placa no sistema anfitrião e usar a máquina virtual apenas para simulação e verificação.

topo ↑8. Mais sobre o repositório BGM

8.1. Do que o curso é feito

Os exemplos do repositório estão agrupados por parte do curso. Eis um mapa resumido, conforme habr.com/ru/articles/1071736.

ParteSobre o quêO que aparece na placa
1_basics Portas lógicas, multiplexadores, flip-flops D, contadores, registradores de deslocamento, máquinas de estados LEDs, o display de sete segmentos, botões
2_graphics Geração de imagem com lógica combinacional e, depois, com memória Uma imagem em VGA, HDMI ou tela de LCD; jogos
3_music Reconhecimento de notas por microfone, síntese de som por um DAC Som em um alto-falante, detecção da nota tocada
4_microarchitecture Pipelines, filas FIFO, controle de fluxo por créditos Aquilo que as entrevistas de emprego perguntam
5_cpu O processador schoolRISCV (cerca de 300 linhas de Verilog e uma dúzia de instruções RISC-V), além dos núcleos picorv32, yrv e aps O seu próprio processador no FPGA, rodando os seus programas

As partes 3 a 5 do curso da Escola seguem essa estrutura: assembly RISC-V no simulador RARS, depois a microarquitetura de um núcleo de processador, depois a integração do núcleo em um sistema — entrada e saída de sensores e concorrência por interrupções. O exemplo Femto Threads implementa troca de contexto de tarefas em cerca de 400 linhas de assembly, isto é, multitarefa em um processador que você mesmo sintetizou.

8.2. Como fazer os exercícios

Cada exemplo é um diretório com o mesmo conjunto de scripts. A ordem usual de trabalho é:

  1. Selecionar a placa uma vez para todo o repositório:
    ./check_setup_and_choose_fpga_board.bash
  2. Entrar no diretório do exemplo e olhar o lab_top.sv — é esse o arquivo que se espera que você altere.
  3. Simular e olhar as formas de onda:
    ./02_simulate_rtl.bash
  4. Compilar e gravar a placa:
    ./03_synthesize_for_fpga.bash

A lista completa dos scripts:

ScriptO que faz
01_cleanapagar os resultados das execuções anteriores
02_simulate_rtlsimular no Icarus Verilog e mostrar as formas de onda no GTKWave ou no Surfer
03_synthesize_for_fpgasíntese, posicionamento, roteamento e gravação — em um comando
04_configure_fpgaapenas gravar um bitstream já compilado
05_run_gui_for_fpga_synthesisabrir o projeto na interface gráfica do fabricante
06_choose_another_fpga_boardselecionar outra placa
07_synthesize_for_asicsintetizar para um circuito integrado pelo LibreLane
08_, 09_visualize_asic_…inspecionar o layout (OpenROAD, KLayout)
10_run_instruction_set_simulatorexecutar o RARS
11_build_software_to_run_on_cpucompilar C e assembly com o compilador XPACK
12_upload_software_to_the_board_using_uartenviar o programa para a placa pela UART
13_choose_another_riscv_core_for_softwareselecionar um núcleo: aps, yrv, picorv32
14_run_terminal_programum terminal: minicom, picocom ou putty

Um passo a passo do primeiro exemplo para iniciantes: verilog-meetup.com — Beginner's guide, e o arquivo docs/beginner-s-guide-to-basics-graphics-music.md do repositório.

topo ↑9. Mais sobre o repositório systemverilog-homework

O SVH é um conjunto de pequenos exercícios com verificação automática. A estrutura é simples: o arquivo do exercício contém um módulo incompleto e, ao lado dele, um testbench que informa se a sua solução passa.

O que é preciso: apenas Icarus Verilog e Git. Nenhuma placa e nenhuma ferramenta de fabricante, o que torna o SVH um bom ponto de partida antes de a placa chegar.

git clone https://github.com/chipdesignschool/systemverilog-homework.git
cd systemverilog-homework
# dentro do diretório de um exercício:
./run.bash

Os exercícios vão de circuitos combinacionais simples a aritmética, máquinas de estados, pipelines e interfaces com handshake — isto é, às mesmas técnicas de microarquitetura da parte 4_microarchitecture do BGM, mas sem placa.

Há três cópias do repositório, como no caso do BGM; para as aulas da Escola, use a chipdesignschool:

Escola de Síntese de Circuitos Digitaisgithub.com/chipdesignschool/systemverilog-homework
Desenvolvimentogithub.com/yuri-panchul/systemverilog-homework
Seminários internacionaisgithub.com/verilog-meetup/systemverilog-homework

topo ↑10. Transformar os exemplos em um circuito integrado pelo Tiny Tapeout

O Tiny Tapeout é um serviço que reúne projetos de muitos participantes em uma única pastilha e a envia para uma fábrica. Essa forma de fabricação se chama MPW (multi-project wafer), ou shuttle: o custo da máscara é dividido entre todos os participantes, o que torna a fabricação de um circuito pequeno acessível para uma universidade e, às vezes, para uma pessoa física.

Existe um modelo pronto para o BGM que aproveita o módulo lab_top do exemplo — exatamente o arquivo que o aluno editava enquanto depurava aquele exemplo na placa. A fabricação é feita na fábrica do instituto IHP (Leibniz-Institut für innovative Mikroelektronik), na Alemanha.

O que fazer

  1. Depurar o exemplo em um FPGA pelo caminho normal (seções 8.2 e 4).
  2. Verificar localmente que o exemplo passa pela síntese para circuito integrado:
    ./07_synthesize_for_asic.bash
    ./08_visualize_asic_synthesis_results_1.bash
    É o mesmo fluxo de RTL a GDSII usado na fabricação real, de modo que os problemas aparecem antes.
  3. Criar um repositório a partir do modelo do Tiny Tapeout e mover o lab_top para ele.
  4. Submeter o projeto ao próximo shuttle pelo site do Tiny Tapeout.

Mais informações:

Não verificado

O custo de participação e as datas dos shuttles mudam, e as fontes disponíveis durante a preparação desta edição não traziam números concretos. Consulte o site do Tiny Tapeout.

topo ↑11. Informações adicionais

Documentação dentro do repositório

O diretório docs/ guarda arquivos que vale a pena ler junto com este manual:

ArquivoSobre o quê
IntelQuartus.mdobservações sobre o Quartus
GowinEDA.mdobservações sobre o Gowin EDA
Yosys.mdo fluxo aberto
vivado_installation_guide/instalação do Vivado, com ilustrações
wsl.mduso no Windows Subsystem for Linux
qemu.mdexecução no QEMU
beginner-s-guide-to-basics-graphics-music.mdguia para iniciantes
boards/README.mda tabela de placas (veja a seção 3)

Artigos e outros materiais

O que este manual deixa de fora

Os scripts do repositório também suportam uma ferramenta a mais — o Efinity, para FPGAs Efinix (scripts/steps/00_setup_efinity.source_bash, apenas Linux). A sua instalação não é descrita aqui, de propósito: a única placa Efinix (Trion T20) está em boards/zzz_postponed_and_retired/, isto é, não está entre as placas ativas e não aparece na tabela da seção 3. Se você vier a ter uma placa dessas, leia o script: ele procura o Efinity pela variável EFINITY_HOME e por um comando efinity_sh.sh no PATH.

Onde perguntar

O grupo de conversa da Escola de Síntese de Circuitos Digitais é o lugar para dúvidas sobre as aulas e sobre a instalação. Erros e inconsistências nos próprios exemplos é melhor registrar como issues no repositório: é a forma mais confiável de os desenvolvedores tomarem conhecimento.

topo ↑12. Perguntas frequentes

Preciso instalar todas as ferramentas?

Não. Apenas a que corresponde à sua placa: Quartus para Altera, Vivado para Xilinx, Gowin EDA ou OSS CAD Suite para Gowin, OSS CAD Suite para Lattice. Se você não tem placa, não precisa de nenhuma delas: os exemplos simulam no Icarus Verilog e os exercícios do SVH são feitos inteiramente sem placa.

Não tenho placa. Ainda assim posso estudar?

Sim. A simulação no Icarus Verilog com visualização de formas de onda cobre boa parte do curso, e o repositório SVH inteiro não precisa de placa alguma. Para os exemplos gráficos há como olhar o resultado como imagem, sem ter um monitor ligado a uma placa.

Preciso configurar o PATH e variáveis de ambiente?

Não, desde que as ferramentas estejam instaladas em locais padrão; os scripts as encontram. As variáveis (QUARTUS_ROOTDIR, XILINX_VIVADO, GOWIN_VERSION_DIR e as demais) servem para dois casos: instalação em um diretório incomum, e várias versões em que você quer forçar uma delas.

Posso manter várias versões do Quartus ao mesmo tempo?

Sim, e para placas antigas você precisa: o Cyclone II exige o Quartus II 13.0sp1, o Cyclone III exige o 13.1, e as placas atuais querem o Quartus Lite 21.1 ou mais novo. Elas convivem sem problema, e os scripts escolhem a que serve ao chip da sua placa.

Por que o script diz que nenhuma versão do Quartus serve?

Porque nenhuma das versões instaladas consegue compilar para o chip da placa selecionada. A mensagem lista o que foi encontrado. As causas usuais são uma placa antiga (que precisa do Quartus 13.x) ou a DE23-Lite (que precisa do Quartus Pro). Veja a seção 3.1.

Os scripts não rodam no Windows

Execute-os pelo Git Bash, e não pelo cmd.exe nem pelo PowerShell. O Git Bash vem com o Git (seção 4.1.8).

O Icarus aponta erros de sintaxe nos exemplos

O mais provável é que você tenha a versão 11 ou 12. É preciso a 13, de preferência a 14 — alguns exemplos usam construções que as versões mais antigas não entendem. Veja a seção 4.1.5.

A placa não grava na primeira tentativa

Reconecte o cabo do gravador e execute ./04_configure_fpga.bash — não é preciso compilar de novo. No Linux, confira a regra udev (subseção 4.2.1.2), inclusive a linha do USB Blaster III, se você tem uma DE23-Lite.

No Mac o programa não abre: "não é possível verificar o desenvolvedor"

Remova o atributo de quarentena: xattr -rd com.apple.quarantine ~/oss-cad-suite. Veja a seção 4.3.

Que placa comprar, se eu ainda não tenho uma?

Uma Tang Nano 9K com o módulo de tela de LCD e os módulos de som: cerca de 60 dólares o conjunto, síntese rápida, e funciona nos três sistemas operacionais, inclusive macOS. Placas Altera e Xilinx exigem uma máquina virtual no macOS.

Onde está a lista completa de placas?

Na seção 3 deste manual e no arquivo boards/README.md do repositório, que é atualizado junto com o código.