Skip to content

cisen/riscv-swerv

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 

Repository files navigation

📚 RVfpga SoC THE IMAGINATION UNIVERSITY PROGRAMME 📚

📌 Imagiation technologies es una empresa Britanica dedicada al diseño de software y semiconductores, esta empresa cuenta con un programa universitarios que brinda al estudiante materiales de apoyo, guias de referencia y ejercios de laboratorio, además las herramientas para desarrollo de software son gratuitas y cuentan cn una plataforma de hardware a un precio razonable, todo con el fin de que halla una enseñanza genuina para el estudiante.

Para iniciar el curso de RVfpga SoC se desarrollan un conjuto de laboratorios con el fin de adquirir conocimientos. En este informe se va a realizar el desarrollo del lab1 y lab2 respectivamente.

El primero paso a seguir es registrarse en la pagina web de imagination university program y solicitar el envio del material correspondiente, posteriormente se incio la lectura de la guia para iniciar la instalación y desarrollo de los laboratorios.

El software que se debe instalar para el desarrollo de los laboratorios es el siguiente:

  • ✒️ Vivado
  • ✒️ Cable Drivers
  • ✒️ Digilent Board Files
  • ✒️ VS code
  • ✒️ PlatformIO on top of VSCode
  • ✒️ GTKVWave
  • ✒️ Verilator

🔶 LABORATORIO 1 - INTRODUCCIÓN A RVfpga-Soc

  • Para inciar el desarrollo de este laboratorio primero se hizo la lectura incial en la guia de forma que se fuera entendiendo como funciona RVfpga-SoC, además de ir conociendo sus caracteristicas principales, posteriormente se fueron conociendo los requerimientos necesarios para el correcto desarrollo del laboratorio.

Primero se iniciara con el desarrollo de la guia por lo tanto se creara un proyecto en vivado:

modulo

Ahora se deben incluir los directorios, los archivos y así dejar creado el proyecto.

  • Luego se definen algunos archivos de manera global, como se puede observar en la figura. También se debe asignar el archivo rvfpga.sv como "top".

modulo

modulo

Se deben definir de esta manera, es decir, globales los siguientes archivos:

  • common_defines.vh
  • assign.svh
  • registers.svh
  • typedef.svh

Mediante la herramiento de Diseño de Bloques llamado BD, se crea un espacio de trabajo en blanco donde se pueden agregar bloques como el de la figura:

Esto se debe realizar para los siguientes bloques:

  • swerv_wrapper_verilog
  • intcon_wrapper_bd
  • bootrom_wrapper
  • syscon_wrapper
  • bidirec (En 32 ocaciones)

Se procede a realizar las respectivas conexiones tanto internas (corresponde a conexiones entre los bloques), como externas (señales que provienen de manera externa). Luego de realizar cada una de las conexiones requeridas se plantea un diseño de esquemático como el que se puede observar en la siguiente figura:

Finalizado este paso, a partir del archibo BD.bd, se crea el archivo verilog el cual contiene las conexiones de todos los bloques.

  • Con los resultados anteriores, se va a generar el bitstream, para ellos incialmente se tienen que realizar las siguientes modificaciones sobres las configuraciones en vivado, como se puede observar en la figura.

✔️ Finalmente, después de haber realizado el bitstream, se puede observar que este y la sintesis se realizaron de manera correcta, como lo muestra la figura.

🔶 LABORATORIO 2 - CORRIENDO UN PROGRAMA DE PRUEBA EN RVfpga-Soc

Para inciar el desarrollo del segundo laboratorio se realizo la respectiva lectura de la guia correspondiente al laboratorio 2 de manera que se fueran entendiendo los conceptos y el paso a paso para realizar este laboratorio.

  • Se debe obtener el archivo verilog BD.v del laboratorio anterior y llevarlo a la siguiente ubicación:

[RVfpgaSoCPath]/RVfpgaSoC/Labs/LabResources/Lab2/src/SweRVolfSoC/.

En esta ubicación se debe corroborrar que los modulos dentro del archivo verilog, terminen en 0_0, como se observa en las siguientes figuras:

Con esta comprobación realizada, se procede a la creación del archivo Vrvfpgasim, mediante los siguientes códigos:

  • cdcd [RVfpgaSoCPath]/RVfpgaSoC/Labs/LabResources/Lab2/verilatorSIM
  • make clean
  • make

Así se obtiene el resultado en la terminal que se observa en la siguiente figura yse observa que ya el archivo está creado.

  • Posteriormente se abre el visual basic code en la carpeta que cuenta con la siguiente direccion:

[RVfpgaSoCPath]/RVfpgaSoC/Labs/LabResources/Lab2/examples/

Luego se abre el archivo PlatformIO.ini y se modifica redireccionando la linea 21:

home/user/RVfpgaSoC/Labs/LabResources/Lab2/verilatorSIM/Vrvfpgasim

Las direcciones de las varibles que se van a observar en el GTKWave son las siguientes:

  • TOP rvfpgasim swervolf swerv_wrapper_verilog_0 swerv_eh1_2 swerv ifu(clk,ifu_i0_instr[31:0],ifu_i1_instr[31:0])
  • TOP rvfpgasim swervolf swerv_wrapper_verilog_0 swerv_eh1_2 swerv dec arf gpr_banks(0) gpr(28) gprff (dout[31:0])

Las variables a mostrar son las que se encuentran en parentesis.

✔️ Finalmente se pueden observar los resultados en GTKWave donde las variables nos muestran los resultados esperados en la siguiente figura:

CONCLUSIONES ✔️

  • Se entendió el procedimiento desde la asignación de los archivos globales, como archivos principales del proyecto, hasta la generación de la traza.
  • Se logró obtener la salida de la instrucción esperada en el procesador en el tiempo entre los 10 [fs] y 100 [fs].
  • La señal de salida observada se puede observar en los tiempos de 10 [fs] y 100 [fs] y 10 [ns] y 100 [ns] (tiempo sugerido en la guia).
  • El archivo trace.vcd debió moverse a una ubicación sin restricciones para poder ser corrido en Gtkwave.
  • El software Visal Code debe ser abierto como superusuario para poder correr el IDE PlatformIO.

REFERENCIAS 🎯

UNIVERSIDAD INDUSTRIAL DE SANTANDER 🎓

  • 👩 Angela Yulieth Rivera Gómez - 2162467
  • 👨 Vladimir Sebastian Villamizar Anaya - 2171522

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • VHDL 40.6%
  • Verilog 39.9%
  • C++ 15.3%
  • SystemVerilog 3.4%
  • Tcl 0.4%
  • JavaScript 0.3%
  • Other 0.1%