Si tu diseño requiere memoria, tienes las siguientes opciones:
La forma más sencilla de almacenar datos es usando registros. Es además muy flexible: puedes utilizar tantos como desees y puedes leer/escribir a ellos en cualquier instante. La desventaja es que no son muy eficientes en cuanto a área.
Como regla general, puedes hacer entrar alrededor de 320 DFFs (40 bytes de memoria) en un cuadro. Considerando que tu diseño también requiere lógica para operar, es probable que te quepan menos que eso.
Aquí hay algunos proyectos de ejemplo que utilizan registros como memoria:
El compilador de RAM DFF crea un arreglo denso de DFFs que puede ser usado como memoria. Es más eficiente que el uso de registros, pero también es menos flexible: solo puedes realizar lecturas y escrituras sobre una dirección a la vez, y solo hay una cierta cantidad de tamaños disponible.
Para Tiny Tapeout, puedes usar el macro RAM32, el cual es de 128 bytes dispuesto como 32x32 bits (32 palabras de 32 bits cada una) con un único puerto de lectura/escritura (1RW). Este macro usa un área de 401x136 um, el cual cabe en 3x2 cuadros y utiliza alrededor del 54% del área.
Incluir RAM DFF en tu diseño es un poco más complejo que usar registros, ya que conectar los pines de alimentación y tierra no es trivial. Puedes utilizar como punto de partida el proyecto de ejemplo de RAM DFF.
El RP2040 de la placa demo puede ser configurado para proveer 64 kbytes de RAM al chip a través de canales SPI gracias al proyecto spi-ram-emu de Mike Bell. Éste simula el chip de RAM SPI 23LC512. Es una gran opción si es que llegas a necesitar mucha memoria, pero también es la opción más lenta.