summaryrefslogtreecommitdiff
path: root/doc/pitfalls.txt
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2022-11-12 21:26:54 -0600
committerAlejandro Soto <alejandro@34project.org>2022-11-13 05:54:44 -0600
commit493ab94066c4661fa73162ae5eea7fdfd2951325 (patch)
tree10c12d987c521a01eb4a0452f3f4934863b6f8ce /doc/pitfalls.txt
parent274d27c7a1ee9b62d42d55b5a26a07224ed510ac (diff)
Document reset issues
Diffstat (limited to 'doc/pitfalls.txt')
-rw-r--r--doc/pitfalls.txt36
1 files changed, 35 insertions, 1 deletions
diff --git a/doc/pitfalls.txt b/doc/pitfalls.txt
index 299c8a0..0effbf9 100644
--- a/doc/pitfalls.txt
+++ b/doc/pitfalls.txt
@@ -155,7 +155,7 @@ Voy a seguir con esto después.
===
- [V] Port de U-Boot
+ [V] Port (more like stub inicial) de U-Boot
===
Lo útil empieza en l[ineas 2108 y 3086 del README.
@@ -172,3 +172,37 @@ es por configuración de fonts. Ver este caso:
La soloución es usar home-manager o utilizar:
export LOCALE_ARCHIVE="${pkgs.glibcLocales}/lib/locale/locale-archive"
export FONTCONFIG_FILE="${pkgs.fontconfig.out}/etc/fonts/fonts.conf"
+
+
+ ===
+ [VII] Reset
+ ===
+
+Hasta el momento todo había sido simulado y eso ha evitado mil problemas
+imposibles de depurar que, inevitablemente, ocurrieron cuando traté de ejecutar
+el sistema en la FPGA. Desde U-Boot (HPS) hubo indicios de que algo estaba
+ocurriendo en las direcciones de memoria que sim/sdram presuntamente escribe.
+0x20001000 estaba forzado a cero y cualquier intento de escribir con md.l no
+tenía efecto (probablemente por writes sin fin a esa dirección). Además, a
+veces esto no pasaba al azar, sino que del todo no ocurría nada. Claramente hay
+problemas de reset.
+
+En el primer intento no existían conexiones de reset del todo, y además
+Verilator inicializaba todos los x-values a cero. Introduje aleatorización de
+'x en simulación para arreglar todos los glitches de reset, y además reemplacé
+los bloques initial con resets reales en listas de sensibilidad. En el proceso
+descubrí varios bugs en fetch, decode y control. Agregué un JTAG-to-Avalon
+Bridge para depurar.
+
+Luego de realizar estos arreglos, el sistema no parecía hacer nada del todo, ni
+en 0x20000000 ni tampoco en 0x20001000. Noté que una diferencia importante
+entre lab4 y el proyecto es que en lab4 la PLL tiene un reset (lógica positiva)
+forzado a 0, pero en Platform Designer es obligatorio conectarlo a algo. Como
+conecté reset a un slide switch, probablemente existieron problemas de bouncing
+y cosas analógicas raras, en especial cuando ese reset también le caía a PLL.
+Habilité "debug instrumentation", que presuntamente me permite usar el bus
+analyzer, pero ymmv según esto:
+
+<https://community.intel.com/t5/Intel-Quartus-Prime-Software/No-hardware-detected-in-beta-bus-analyzer/m-p/670701>
+
+También puse el debouncer del lab4 antes del reset que va a platform.