shiping
면접·시험 도우미, AI가 실시간으로 풀이 아이디어를 제공
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Guía visual 3D para entender un RISC-V RV32I segmentado de 5 etapas con debug unit UART
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Guía visual e interactiva para entender el procesador RISC-V RV32I de 5 etapas (IF, ID, EX, MEM, WB) y su unidad
de debug por UART, escritos en Verilog para una placa Nexys4 DDR (repo
MateoBernardi/arquitectura-de-computadoras, rama tp3-RISCV),
y para luego construir y verificar un RISC-V propio. Todo corre en el navegador: un simulador ciclo a ciclo escrito en
JavaScript reproduce el comportamiento del RTL y la escena (three.js) muestra cómo viajan los datos por cada cable.
src/sim/): stalls load-use (incluido el "stall falso" del RTL), forwarding EX/MEM y MEM/WB,
bypass WB→ID del regfile, flush por salto/jump, halt con ecall/ebreak. Se puede volver atrás ciclo a ciclo.top_riscv y riscv_pipeline.Esc suben un nivel; los submódulos se
atraviesan con clic. Hay FSMs con grafo, y un simulador de bytes para la UART.stall (load-use), A←EX/MEM, lee x5,x6, tomado → 0x2C...), con leyenda.top_riscv.v).L, S, R, P, X, D) a 19200 baudios.| Verificación | Registros |
|---|---|
| Inspector de un módulo (el riel de explicación pasa al lado libre) | Por dentro de la ALU |
|---|---|
| Zoom cercano (títulos decal + valores en vivo) | Alternativas de hardware |
|---|---|
| LEDs | Inicio |
|---|---|
| Lección | Construí tu propio RISC-V |
|---|---|
| Salto tomado, tema oscuro | Móvil (hoja inferior de explicación) |
|---|---|
| Debug: carga por UART (comando L) a mitad de camino | Vista general: "¿Qué es esta vista?" |
|---|---|
| Bloque CLK/RST y migas con la ruta real del RTL | Editor con resaltado de sintaxis |
|---|---|
Esc sube un nivel dentro de un módulo.?perf)Con ?perf en la URL aparece un panel con fps reales (cuadros renderizados), ms de CPU por cuadro, draw calls y triángulos. La escena
renderiza solo cuando algo cambia; las animaciones ambientales (cables activos, polvo, brillo de silicio) van a 30 fps. Las etiquetas
DOM no leen layout en el bucle (tamaños cacheados, nivel de detalle por zoom, solo se escribe lo que cambia). Draw calls / triángulos
antes → después: placa 239 / 37k → 104 / 26k; ALU 67 / 15.7k → 25 / 9.2k.
Requiere Node.js 18 o superior.
npm install
npm run dev # servidor de desarrollo en http://localhost:5173
npm test # tests del simulador (vitest)
npm run build # genera dist/
npm run preview # sirve dist/ para probarlo
npm run rtl-index # regenera src/content/rtl-index.json desde el RTL (RTL_ROOT=<ruta a sources_1/new>)
El build es estático (base: './' en vite.config.js), así que funciona en cualquier hosting y bajo subcarpetas.
npm run build, salida dist). No hace falta vercel.json.npm run build, publish dist) o arrastrar la carpeta dist/ a
app.netlify.com/drop..github/workflows/deploy.yml corre los tests, compila y publica en cada push a main.index.html entrada (parámetros ?debug / ?shot / ?script para depurar)
src/main.js integración: sim + contenido + escena + UI
src/sim/ simulador: pipeline, ensamblador, desensamblador, debug unit, programas
src/content/ texto didáctico: ISA, teoría de eventos, alternativas, bloques, ejemplos, lecciones, vistas internas por módulo
rtl-index.json: índice del RTL (módulos, señales, líneas) generado con `npm run rtl-index`;
los links a GitHub son permalinks al commit indexado (REPO.ref), nunca números de línea escritos a mano
src/scene/ escena three.js: placa, bloques, cables, paquetes, cámara
src/ui/ paneles: editor, controles, timeline, dock de ejecución, inspector, migas, pop-ups, lecciones, inicio, consola de debug
tests/ tests del simulador (vitest)
CONTRACT.md contrato entre módulos (ids de bloques y cables, forma de los snapshots)
docs/screenshots/ capturas
Las rutas son relativas a project_4.srcs/sources_1/new/ del proyecto Vivado.
Simulador (src/sim/) | RTL |
|---|---|
pipeline.js: PC, fetch, stopFetch | pc.v, pipeline/1_fetch/imem.v, pipeline/riscv_pipeline.v |
isa.js: decodeControl, immGen, aluCompute, branchTaken | pipeline/2_decode/control.v, immgen.v, pipeline/3_execute/alu.v, alu_ops.vh, branch_unit.v |
pipeline.js: regfile con bypass WB→ID | pipeline/2_decode/regfile.v |
pipeline.js: hazard / forward / flush | pipeline/flow/hazard_unit.v, forward_unit.v, flush_unit.v |
pipeline.js: dmem con byte lanes | pipeline/4_memory/dmem.v |
pipeline.js: registros de pipeline, dbgRead | pipeline/regs/pipe_reg.v, bus de debug de riscv_pipeline.v |
debugUnit.js: FSM, encodeLoad, decodeDump | debug/debug_unit_fsm.v, debug_unit_comb.v, debug_unit_regs.v y host/debug_protocol.py |
programs/pipeline_test.s | programa de prueba del proyecto (host/tests/pipeline_test.s) |
El modo "sin forwarding" del simulador es una alternativa didáctica, no existe en el RTL. Cuando el RTL y algún README no coinciden, el simulador sigue al RTL.
?view=sim|debug|lessons|examples|home, ?enter=alu_tp1 (entrar a una vista interna), ?focus=part:<id>|net:<id>, ?dock=cycles|regs|mem|verif, ?track=entender|construir, ?nobanner,
?view=sim, ?theme=dark, ?example=load-use, ?steps=4, ?explain, ?alt=hazard,
?blockclick=alu, ?script=step,step,click:alu,dbg:L,dbg:R,delay:2000,dbg:D y ?debug (muestra errores en pantalla).
Con ?shot el canvas WebGL se copia a una imagen para poder sacar capturas con Firefox headless.
Teoría de base: RISC-V from scratch (ecrionix.org).
Fuentes: Barlow, Barlow Semi Condensed y JetBrains Mono (@fontsource). Gráficos 3D: three.js.