Copyright (c) 2018-2020, Wuklab, UCSD.
Este é um sistema operacional (SO) em execução dentro do FPGA, fornecendo abstrações familiares (por exemplo, mm, agendamento, rede) para aplicativos FPGA. Este é um protótipo de pesquisa em estágio inicial. A maior parte do código é escrita em Xilinx HLS. Foi testado no VCU118 e VCU108.
É tornado público para fins educacionais. Espero que você ache isso útil.
host/ : pilha de rede lateral do host e drivers DMAalloc/ : memóriamm/ : Gerenciamento de memórianet/ : subsistema de redekernel/ : algum código relacionado ao PRsystem/ : grandes sistemas integrados finaisapp/ : Aplicativo pode ter o código FPGA e o host.include/ : Arquivos de cabeçalho usados pelo código FPGA e do host. Por exemplo, cabeçalhos de rede.include/fpga : Cabeçalhos usados apenas pelo HLSinclude/uapi : cabeçalhos usados por HLS e código de hosttools/ : vários ajudantesscripts/ : arquivos de script de modelogenerated_ip/ : todos os IPs gerados dormem aquigenerated_hls_project/ : Vivado HLS Projectgenerated_vivado_project/ : Projeto VivadoFormatar:
run_hls.tcl Nome.mm_axi_wrapper é o IP do Wrapper Axi no subsistema MM.make help para ver explicações detalhadas.make no nível superior compilará todo o projeto usando a placa padrão.system/ pastamake em cada subpasta compilará apenas essa pasta.Fluxo de trabalho: você deve compilar o projeto quando baixar o código -fonte pela primeira vez. Todos os IPs pequenos e médios e grandes projetos estarão prontos para uso. Depois disso, você pode se concentrar no IPS que está construindo. As alterações serão refletidas automaticamente no Vivado.
Além disso, preste atenção a qual quadro você está segmentando.
O objetivo de usar scripts é duplo
generated_vivado_project/ Pasta, na mesma pasta em que estão o script correspondente e o código-fonte.Esses scripts de modo de projeto Vivado são gerados pelo próprio Vivado. E esses scripts podem ser usados para reconstruir todo o projeto como está.
Essas são minhas etapas não formais para criar e hackear esses scripts:
Correr:
vivado -mode tcl -source run_vivado.tclgenerated_vivado_project/ será criado na pasta atualgenerated_ip/ Pasta.Criação:
write_project_tcl para gerar o script. Você deve informar o novo script que o projeto que será enviado para ser computado deve ser colocado sob a pasta generated_vivado_project . E você deve nomear o script para run_vivado.tcl .write_project_tcl -force -no_copy_sources -target_proj_dir ./generated_vivado_project ./run_vivado.tclwrite_project_tcl -force -target_proj_dir ./generated_vivado_project ./run_vivado.tclHacker:
Adicione os caminhos IP ao script de nível superior:
generated_ip/ Pasta. Isso facilita o rastreamento IP. Você pode adicionar poucas linhas ao script para que o Vivado saiba onde procurar novos IPs. Confira scripts/template_vivado_ip.tcl para essas linhas.IP do pacote automaticamente:
generated_ip/ . Por exemplo, ipx::package_project -root_dir ../../generated_ip/mm_axi_wrapper -vendor wuklab -library user -taxonomy UserIP -import_files -set_current false -forceipx::package_project -root_dir ../../generated_ip/mm_axi_rab_vcu118 -vendor wuklab -library user -taxonomy UserIP -module THE_BD_NAME -import_filesAdicione mais arquivos de origem/xdc/simulação:
top.v , add_files etc.write_project_tcl novamente para gerar outro script. Em seguida, confira as diferenças.Invólucro bd autogererado
Outras configurações:
write_project_tcl para gerar um novo script e salvar as alterações correspondentes. Depois de se familiarizar com os comandos Vivado, você poderá fazer manualmente alterando o script.Advertências:
Por enquanto, você pode encontrar scripts de exemplo no mm/axi_wrapper/run_vivado.tcl e mm/sys/run_vivado.tcl .
Vivado suporta apenas uma versão IP em cada versão. É super anonoso se usarmos o script gerado. Felizmente, há uma maneira de alternar a solução. O código a seguir substitui a sequência IP por uma variável. No entanto, tenha cuidado se o IP atualizado tiver portas diferentes.
set axis_data_fifo [get_ipdefs -filter NAME==axis_data_fifo]
Replace all `xilinx.com:ip:axis_data_fifo:1.1` with `$axis_data_fifo
O script Vivado HLS é relativamente mais fácil do que o Script Vivado. Você pode encontrar o script de modelo em scripts/template_run_hls.tcl . Você deve personalizar as peças, arquivos adicionados, frequência e, portanto. Se você deseja construir automaticamente vários HLs sob a mesma pasta, use os scripts/template_generate_hls.sh