OBSERVAÇÃO:
A documentação deste projeto está sendo atualizada para refletir as mudanças na nova versão redesenhada do Caravel.
Caravel é um modelo de SoC para ônibus Efabless Open MPW e chipIgnite baseado no nó Sky130 da SkyWater Technologies. A arquitetura SoC atual é fornecida abaixo.
Folha de dados e documentação detalhada existem aqui
Caravel é composto pela estrutura do arnês mais dois wrappers para módulos drop-in para área de gerenciamento e área de projeto do usuário .
O próprio chicote contém o módulo de clock, DLL, ID do usuário, SPI de limpeza, POR e controle GPIO.
O manuseio do GPIO saiu do SoC de gerenciamento e foi para o SPI. SPI obtém uma interface triangular; o SoC de gerenciamento se comunica com o SPI por meio do braço da sorte, e não assumindo o controle da interface SPI de 4 pinos.
Um novo bloco como o ID possui o modo de inicialização para cada GPIO. Pode ser configurado com um arquivo de texto. Os pinos SPI são fixos para operação na inicialização.
Ao ligar, o SPI configura automaticamente o GPIO. O carregamento manual é possível tanto do SPI quanto do barramento wishbone.
Todas as funções dentro do chicote, mas fora do SoC de gerenciamento, são incorporadas em um grande módulo chamado “housekeeping”. Isso inclui uma série de registros para todas as funções incluídas, com uma interface SPI de “porta frontal” conectada ao padframe por meio dos pinos 1 a 4 do GPIO e uma interface triangular de “porta traseira” conectada ao SoC de gerenciamento. O Soc de gerenciamento reserva o bloco de memória 0x26000000 para o módulo de limpeza. O módulo de limpeza troca dados com o SoC de gerenciamento por meio de uma interface que usa dados de registro SPI de largura de byte. Uma pequena máquina de estado lê quatro endereços de triângulo contíguos e um decodificador de endereço determina o registro SPI correspondente. A máquina de estado paralisa o SoC até que todos os quatro bytes tenham sido manipulados antes de retornar o sinal de reconhecimento.
A área de gerenciamento é um módulo drop-in implementado como um repositório separado. Normalmente inclui um SoC baseado em RISC-V que inclui vários periféricos como temporizadores, uart e gpio. A área de gerenciamento executa firmware que pode ser usado para:
A área de gerenciamento implementa SRAM para o SoC de gerenciamento.
A instanciação padrão para o núcleo de gerenciamento pode ser encontrada aqui. Consulte a documentação do núcleo de gerenciamento para obter mais detalhes.
Este é o espaço do usuário. Ele tem uma área de silício limitada 2.92mm x 3.52mm
bem como um número fixo de blocos de E/S 38
e blocos de alimentação 4
.
O espaço do usuário tem acesso aos seguintes utilitários fornecidos pelo SoC de gerenciamento:
38
portas IO128
sondas do analisador lógico Sua área é o espaço completo do usuário, então sinta-se à vontade para adicionar seu projeto lá ou criar uma macro diferente e protegê-la separadamente e depois inseri-la em user_project_wrapper
para projetos digitais ou inseri-la em user_project_analog_wrapper
para projetos analógicos.
Se você está construindo um projeto digital para o espaço do usuário, verifique um exemplo de projeto em caravel_user_project.
Se você usar o OpenLANE para fortalecer seu design, siga as instruções neste README.
Os projetos de usuários digitais devem atender aos seguintes requisitos:
user_project_wrapper
user_project_wrapper
segue a ordem dos pinos definida em Digital Wrapper Pin Order.user_project_wrapper
segue as configurações de design fixas em Configuração fixa do Digital Wrapper.Se você estiver construindo um projeto analógico para o espaço do usuário, verifique um exemplo de projeto em caravel_user_project_analog.
Os projetos de usuários analógicos devem atender aos seguintes requisitos:
user_analog_project_wrapper
user_analog_project_wrapper
usa o wrapper analógico vazio.user_analog_project_wrapper
segue a mesma ordem de pinos e posicionamento do wrapper analógico vazio. Certifique-se de executar make compress
antes de enviar qualquer coisa para seu repositório. Evite ter 2 versões do gds/user_project_wrapper.gds
uma compactada e a outra não compactada.
Para obter informações sobre ferramentas e controle de versão, consulte tool-versioning.rst.
gds/
: inclui todos os arquivos gds usados ou produzidos no projeto.def
: inclui todos os arquivos def usados ou produzidos no projeto.lef/
: inclui todos os arquivos esquerdos usados ou produzidos no projeto.mag/
: inclui todos os arquivos mag usados ou produzidos no projeto.maglef
: inclui todos os arquivos maglef usados ou produzidos no projeto.spi/lvs/
: inclui todos os arquivos Spice usados ou produzidos no projeto.verilog/dv
: inclui todos os bancos de testes de simulação e como executá-los.verilog/gl/
: inclui todas as netlists sintetizadas/elaboradas.verilog/rtl
: inclui todos os RTLs e arquivos de origem do Verilog.openlane/<macro>/
: inclui todos os arquivos de configuração usados para executar o openlane em seu projeto.info.yaml
: inclui todas as informações necessárias neste exemplo. Por favor, certifique-se de apontar para uma netlist caravela elaborada, bem como uma netlist sintetizada em nível de portão para o user_project_wrapperOBSERVAÇÃO:
Se você estiver usando o openlane para fortalecer seu design, os diretóriosverilog/gl
def/
lef/
gds/
mag
maglef
devem ser preenchidos automaticamente pelo openlane.
Verifique mpw-one-final para a caravela usada para a fita mpw-one.
>make ship
não é mais necessário.