Skip to content

Complete merge of agentic work - #49

Closed
Peng1104 wants to merge 30 commits into
mainfrom
final
Closed

Peng1104 wants to merge 30 commits into
mainfrom
final

Conversation

@Peng1104

Copy link
Copy Markdown
Contributor

O que este PR faz

Reúne em um só ponto o trabalho dos PRs abertos de todos os repositórios e o trabalho de integração feito por cima deles. Cada submódulo aponta para a sua branch final, que está publicada no repositório correspondente.

Conteúdo

Submódulo Branch O que entrou
Common-Components (novo) main blocos genéricos de VHDL que Core, Memory e Peripherals importam como irmão
Core final feat/act4-integration (ACT4, divisor, Zicsr, traps, busca com SDRAM, parada do M, provas formais), correção do WB sob stall, trap de instrução ilegal, regras do FENCE.I, perfil rv32i_zmmul, pacote csr_addr_consts, primeiro passo do Zicclsm (LH, LHU, SH no offset 1)
Memory final pilha do ACT4 (cache de instruções, registrador do display), pilha da SDRAM (controlador, árbitro, cache de dados AXI4), documentação
Peripherals final UART e documentação; GPIO e TIMER sobre os blocos do Common-Components
TopLevel final pilha do ACT4, UART, plataformas sdram, sdram-axi e sdram-bringup, documentação; entidade core, generics HAS_M e HAS_ZMMUL
Tests final pilha do ACT4, programas da SDRAM, CI, UART, documentação
Infra final main (sem PRs abertos)
Certification final as duas cadeias do ACT4, ACT4 fixado em bfe6155, os 12 perfis do núcleo (gen_profiles.py)
Tools final pilha do ACT4, backend de depuração da SDRAM, filtros de teste (--exclude), documentação

Também entram os PRs #45 (make board-build), #46 e #47 (benchmark da SDRAM e documentação) e #48 (UART) deste repositório.

Alinhamentos feitos ao juntar

  • Os módulos usam a entidade core e o pacote csr_addr_consts.
  • Peripherals adaptado aos blocos do Core (flip_flop, multiplexadores, somador, registrador com clear síncrono).
  • Todos os workflows usam as imagens ci-vhdl, ci-asm e ci-elf; o da Certification perdeu os passos de mise, Ruby e wrapper do Spike.
  • O teste trap-misaligned-ldst passou a usar acessos que ainda geram trap.

Verificação

  • Core: paths, check, profiles, test e provas formais passam.
  • Memory, Peripherals e TopLevel: paths, check e testes passam.
  • Tests: 98 de 98 programas da simulação passam (os 3 de UART rodam nos fluxos de hardware).
  • ACT4: rv32i 39 de 39 e rv32im_zicsr_zifencei 54 de 54 nesta árvore.

Os 12 perfis do núcleo no ACT4 serão validados nesta árvore e o resultado vai em comentário neste PR.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Yb7Y6Pa4P79YEybMvTwrXe

Peng1104 and others added 27 commits October 5, 2026 09:48
scripts/toolchain.sh runs a command in the infra-toolchain image as the calling
user. board-build generates the headers, the MIFs and the goldens in it, so no
local GCC is needed; board runs riscv-tools on the host, where Quartus and the
JTAG cable are.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Adds docs/BENCHMARK_SDRAM.md: the 89 existing programs on the sdram platform
against internal-mem, in simulation inside the Infra toolchain image (median
ratio 2.27, range 1.33 to 2.75), plus the six SDRAM-only programs.

Core, Memory, TopLevel and Tests point at the tips of their open SDRAM pull
requests (feat/sdram-ready, feat/sdram-bist, feat/sdram-platform,
feat/sdram-tests), the commits the numbers come from. Peripherals is unchanged.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01288qnYGXPmNxMvNWBhu3QE
Four BIST modes on the DE0-CV with the sdram-bringup project (TopLevel
e37c149, Memory 4e339b5): 0 wrong words in all of them, whole-chip sweep in
about 6 s. Also the Quartus slack of the programmed design.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01288qnYGXPmNxMvNWBhu3QE
The sdram platform (core and SDRAM) on the DE0-CV: the 89 existing programs
and the 6 SDRAM programs pass, 82 goldens match. Run inside the Infra
toolchain image (Ubuntu 26.04) with the host Quartus mounted. Also the
Quartus slack and resources of core_fpga_sdram.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01288qnYGXPmNxMvNWBhu3QE
The full-platform run was repeated on ghcr.io/insper-riscv/infra-toolchain:latest
with no extra layer (libglib2.0-0t64 is now in the image, uv 0.13.0): the
same 89 + 6 programs pass and 82 goldens match.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01288qnYGXPmNxMvNWBhu3QE
# Conflicts:
#	README.md
#	Tests
#	TopLevel
…ubmodule

Core, Memory, Peripherals, TopLevel, Tests, Infra and Certification now
point at their final branches, which carry the open pull requests merged
and the pipeline, Zicsr, Zifencei, Zmmul and Zicclsm work.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Yb7Y6Pa4P79YEybMvTwrXe
…final branch

The generic blocks live in Common-Components and Core, Memory and
Peripherals import them as a sibling.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Yb7Y6Pa4P79YEybMvTwrXe
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Yb7Y6Pa4P79YEybMvTwrXe
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Yb7Y6Pa4P79YEybMvTwrXe
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Yb7Y6Pa4P79YEybMvTwrXe
…RIBUTING updates

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Yb7Y6Pa4P79YEybMvTwrXe
Pull request 1 of Common-Components is merged.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Yb7Y6Pa4P79YEybMvTwrXe
Infra at the branch that renames ci-asm to ci-elf and ci-elf to ci-act4,
and the modules that name those images.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Yb7Y6Pa4P79YEybMvTwrXe
@Peng1104

Copy link
Copy Markdown
Contributor Author

Validação dos 12 perfis do núcleo no ACT4

Executados nesta árvore (final), um perfil por vez, com riscv-tools certify no ACT4 bfe6155, dentro da imagem de CI com o Sail, e a configuração gerada por tools/riscv_build/gen_profiles.py. Os 12 terminaram com exit 0, sem nenhum ELF fora de PASS.

# Perfil Plataforma ELFs PASS Composição
1 rv32i base 39 I
2 rv32im base 47 I + M
3 rv32i_zmmul base 43 I + Zmmul
4 rv32i_zicsr base 45 I + Zicsr
5 rv32i_zifencei sdram 40 I + Zifencei
6 rv32im_zicsr base 53 I + M + Zicsr
7 rv32im_zifencei sdram 48 I + M + Zifencei
8 rv32i_zicsr_zmmul base 49 I + Zmmul + Zicsr
9 rv32i_zifencei_zmmul sdram 44 I + Zmmul + Zifencei
10 rv32i_zicsr_zifencei sdram 46 I + Zicsr + Zifencei
11 rv32im_zicsr_zifencei sdram 54 I + M + Zicsr + Zifencei
12 rv32i_zicsr_zifencei_zmmul sdram 50 I + Zmmul + Zicsr + Zifencei

O número de ELFs de cada perfil é a soma dos testes das extensões declaradas (I = 39, M = 8, Zmmul = 4, Zicsr = 6, Zifencei = 1).

O que a validação não cobre

  • O ACT4 só gera testes das extensões declaradas, então não prova que uma instrução de extensão ausente é ilegal. Isso é coberto pelos testes do Core (CoreIllegalInstruction, CoreFenceILegal, CoreZmmul).
  • Todo alvo declara Zicsr e Sm no UDB, mesmo os perfis sem Zicsr no hardware, porque o esquema do UDB em uso não descreve um núcleo completo sem Sm.
  • Os perfis com M não rodam a pasta Zmmul do ACT4; a multiplicação de M é coberta pelos testes de M.
  • Rodou com a imagem ci-elf anterior à renomeação do Infra (a que tinha o Sail), a que estava no cache local. Os workflows do repositório já usam ci-act4.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Yb7Y6Pa4P79YEybMvTwrXe

@Peng1104 Peng1104 closed this Nov 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants