Cocotb

From Robin

(Difference between revisions)
Jump to: navigation, search
 
(11 intermediate revisions not shown)
Line 1: Line 1:
-
=Cocotb og GHDL installasjon, full=
+
=For å kjøre Cocotb (etter installasjon - )=
-
== OS ==
+
Hvis du ikke allerede har installert cocotb se installasjon av [[Cocotb, GHDL and GTKWave]]
-
Cocotb kjøres best under linux. Hvis du har en windowsmaskin, så må du installere Windows Subsystem for Linux (WSL).
+
-
cmd
+
-
wsl --install
+
-
[WSL|https://techcommunity.microsoft.com/t5/windows-11/how-to-install-the-linux-windows-subsystem-in-windows-11/m-p/2701207]
+
== Om cocotb ==
 +
Cocotb sørger for at vi linker simulator (her: GHDL eller Questa) med python. Under simulering kjøres vekselvis simulator eller python fil- de kjører ikke samtidig. De triggerne (''await..'') vi bruker i python testbenken bestemmer når simulatoren overlater roret til python koden. Etter simuleringen er ferdig så ramser cocotb opp kjøreresultatet.
 +
== Kjøre cocotb ==
 +
* I folderen med makefile, kjør
 +
make
-
== Python ==  
+
== Makefile ==
-
I utgangspunktet skal python være installert med WS, men hvis det mangler (avinstallert)
+
Makefila sørger for kompilering og kjøring av Cocotb, samt evt kjøring av GUI eller lagring av waveform fil
-
sudo pip install pytest
+
* tb_<my_toplevel>.py må inneholde python-testbenken
-
For å bruke uint og int8
+
* Makefile for GHDL
-
  pip3 install numpy
+
  # Makefile for GHDL
 +
 +
# defaults
 +
SIM ?= ghdl
 +
TOPLEVEL_LANG ?= vhdl
 +
 +
# VHDL 2008
 +
EXTRA_ARGS +=--std=08
 +
 +
# TOPLEVEL is the name of the toplevel module in your VHDL file
 +
TOPLEVEL = my_toplevel
 +
 +
# VHDL SOURCES is where your VHDL files are
 +
VHDL_SOURCES += $(PWD)/../../hdl/*.vhdl
 +
 +
# Wave creates a gtk-waveform (with all signals in toplevel)
 +
SIM_ARGS +=--wave=$(TOPLEVEL).ghw
 +
 +
# MODULE is the basename of the Python test file
 +
MODULE = tb_$(TOPLEVEL)
 +
 +
# include cocotb's make rules to take care of the simulator setup
 +
include $(shell cocotb-config --makefiles)/Makefile.sim
 +
 +
# removing generated binary of top entity and .o-file on make clean
 +
clean::
 +
-@rm -f $(TOPLEVEL)
 +
-@rm -f e~$(TOPLEVEL).o
-
== Ada og Gnats ==
+
== WSL ==
-
Ada og gnat er en forutsetning for å kompilere GHDL
+
For å starte windows explorer under WSL (i katalogen du står i)
-
  apt-get install gnat
+
  explorer.exe .
-
  #evt bruk 'sudo'
+
  # ikke glem punktumet
-
* last ned og pakk ut  
+
== GTK-wave ==
 +
Etter kjøring av makefile med "SIM_ARGS=--wave=...", kan man starte gtkwave for å åpne wavefila
 +
gtkwave <filnavn>
 +
* I vinduet med gtkwave:
 +
** Høyreklikk på toppnivå (eller velg de signalene du vil ta inn)
 +
** Velg recusrice insert, append eller replace (alle valgene vil fungere første gang)
 +
** Zoom ut med
 +
*** knapp eller
 +
*** Menyvalg: TimeZoom\Zoom Best Fit
 +
*** Shortcut: Shift-Alt-F
-
[GNAT|https://sites.radford.edu/~nokie/classes/320/compileInstall.html]
+
== Makefile for Questa (not recommended) ==
-
 
+
MERK:
-
==GHDL ==
+
* Krever installasjon av Questa (kun UIO-installert-pc)
-
* Last ned og pakk ut GHDL
+
* oppretter folderen /sim_build/
-
** [GHDL|https://github.com/ghdl/ghdl]
+
** Hvis den finnes fra før kan det gi problemer
-
* Følg guiden, ikke bruk apt. Vi trenger V2 eller V3 (ikke V1)
+
** /sim_build/ kan trygt slettes
-
** https://github.com/ghdl/ghdl/tree/5726f0eccf874b872ce0729aab42f587d915a3f5
+
* modelsim.ini må være satt opp med VHDL2008 osv.  
-
** [Github lokasjon|https://github.com/ghdl/ghdl/archive/5726f0eccf874b872ce0729aab42f587d915a3f5.zip]
+
* Starter man gui'et, så må man kjøre runsim.do fra sim_build i consolet
-
** [Zip fil med versjon som kan bygges|https://ghdl.github.io/ghdl/development/building/]
+
* Og run-all hvis den er satt opp riktig. Det kan være lurt å legge til ting i .do fila.  
-
 
+
  # Makefile
-
* [Bygge GHDL| https://ghdl.github.io/ghdl/development/building/index.html]
+
-
** Last ned pakken til et sted i WSL filsystemet dersom det er i bruk.
+
-
** Pakke ut den nedlastede pakken og navigere inn i den i wsl cmd.
+
-
#når man lastet ned .tar.gz fil:
+
-
  tar xf #pakkenavn#
+
   
   
-
  #når man lastet ned .zip fil):
+
  # defaults
-
  unzip #pakkenavn#
+
SIM ?= questa
-
 
+
TOPLEVEL_LANG ?= vhdl 
-
  ./configure --prefix=/usr/local
+
-
  make
+
  #GUI  Starter modelsim GUI
-
  sudo make install
+
GUI =1
-
* Bygge GHDL fra patchet versjon (fungerer selv om en annen versjon var lastet ned fra før):
+
   
-
** Laste ned patched versjon fra github (code → download ZIP)
+
# VHDL 2008 -- Must be set in modelsim.ini
-
** Unzip filen og naviger til den iwsl cmd (resten er lik som før)
+
   
-
  ./configure --prefix=/usr/local
+
  # TOPLEVEL is the name of the toplevel module in your VHDL file
-
  make
+
TOPLEVEL ?= my_toplevel
-
  sudo make install
+
-
* Nå skal ghdl være installert. Kjør følgende kommando for å verifisere installasjon og riktig versjon: GHDL 3.0.0
+
#VHDL_SOURCES += $(PWD)/../src/$(TOPLEVEL).vhd*
-
  ghdl version
+
VHDL_SOURCES += $(PWD)/../src/*.vhd*
 +
 +
# SIM_ARGS is Simulation arguments. --wave determines name and type of waveform 
 +
# This may not work, but it is possible to set up...
 +
# SIM_ARGS+=--vcd=$(TOPLEVEL).vcd
 +
   
 +
# legges til i sim_build/ runsim.do -- 
 +
# add log -r *
 +
# vcd file wave.vcd
 +
# vcd add -r /*
 +
# run -all
 +
# quit -sim
 +
 +
# -g<GENERIC> is used to set generics defined in the toplevel entity
 +
# SIM_ARGS +=-gWIDTH=4
 +
   
 +
  # MODULE is the basename of the Python test file
 +
MODULE ?= tb_(TOPLEVEL)
 +
 +
# include cocotb's make rules to take care of the simulator setup
 +
include $(shell cocotb-config --makefiles)/Makefile.sim
 +
 +
# removing generated binary of top entity and .o-file on make clean
 +
  clean::
 +
-@rm -f $(TOPLEVEL)
 +
-@rm -f e~$(TOPLEVEL).o

Current revision as of 12:00, 6 December 2023

Contents

For å kjøre Cocotb (etter installasjon - )

Hvis du ikke allerede har installert cocotb se installasjon av Cocotb, GHDL and GTKWave

Om cocotb

Cocotb sørger for at vi linker simulator (her: GHDL eller Questa) med python. Under simulering kjøres vekselvis simulator eller python fil- de kjører ikke samtidig. De triggerne (await..) vi bruker i python testbenken bestemmer når simulatoren overlater roret til python koden. Etter simuleringen er ferdig så ramser cocotb opp kjøreresultatet.

Kjøre cocotb

  • I folderen med makefile, kjør
make

Makefile

Makefila sørger for kompilering og kjøring av Cocotb, samt evt kjøring av GUI eller lagring av waveform fil

  • tb_<my_toplevel>.py må inneholde python-testbenken
  • Makefile for GHDL
# Makefile for GHDL

# defaults
SIM ?= ghdl
TOPLEVEL_LANG ?= vhdl

# VHDL 2008
EXTRA_ARGS +=--std=08

# TOPLEVEL is the name of the toplevel module in your VHDL file
TOPLEVEL = my_toplevel

# VHDL SOURCES is where your VHDL files are
VHDL_SOURCES += $(PWD)/../../hdl/*.vhdl

# Wave creates a gtk-waveform (with all signals in toplevel)
SIM_ARGS +=--wave=$(TOPLEVEL).ghw

# MODULE is the basename of the Python test file
MODULE = tb_$(TOPLEVEL)

# include cocotb's make rules to take care of the simulator setup
include $(shell cocotb-config --makefiles)/Makefile.sim

# removing generated binary of top entity and .o-file on make clean
clean::
-@rm -f $(TOPLEVEL)
-@rm -f e~$(TOPLEVEL).o

WSL

For å starte windows explorer under WSL (i katalogen du står i)

explorer.exe .
# ikke glem punktumet

GTK-wave

Etter kjøring av makefile med "SIM_ARGS=--wave=...", kan man starte gtkwave for å åpne wavefila

gtkwave <filnavn>
  • I vinduet med gtkwave:
    • Høyreklikk på toppnivå (eller velg de signalene du vil ta inn)
    • Velg recusrice insert, append eller replace (alle valgene vil fungere første gang)
    • Zoom ut med
      • knapp eller
      • Menyvalg: TimeZoom\Zoom Best Fit
      • Shortcut: Shift-Alt-F

Makefile for Questa (not recommended)

MERK:

  • Krever installasjon av Questa (kun UIO-installert-pc)
  • oppretter folderen /sim_build/
    • Hvis den finnes fra før kan det gi problemer
    • /sim_build/ kan trygt slettes
  • modelsim.ini må være satt opp med VHDL2008 osv.
  • Starter man gui'et, så må man kjøre runsim.do fra sim_build i consolet
  • Og run-all hvis den er satt opp riktig. Det kan være lurt å legge til ting i .do fila.
# Makefile

# defaults
SIM ?= questa
TOPLEVEL_LANG ?= vhdl   

#GUI  Starter modelsim GUI
GUI =1 

# VHDL 2008 -- Must be set in modelsim.ini

# TOPLEVEL is the name of the toplevel module in your VHDL file
TOPLEVEL ?= my_toplevel

#VHDL_SOURCES += $(PWD)/../src/$(TOPLEVEL).vhd*
VHDL_SOURCES += $(PWD)/../src/*.vhd*

# SIM_ARGS is Simulation arguments. --wave determines name and type of waveform  
# This may not work, but it is possible to set up...
# SIM_ARGS+=--vcd=$(TOPLEVEL).vcd

# legges til i sim_build/ runsim.do --  
# add log -r *
# vcd file wave.vcd 
# vcd add -r /*
# run -all
# quit -sim

# -g<GENERIC> is used to set generics defined in the toplevel entity
# SIM_ARGS +=-gWIDTH=4

# MODULE is the basename of the Python test file
MODULE ?= tb_(TOPLEVEL)

# include cocotb's make rules to take care of the simulator setup
include $(shell cocotb-config --makefiles)/Makefile.sim

# removing generated binary of top entity and .o-file on make clean
clean::
	-@rm -f $(TOPLEVEL)
	-@rm -f e~$(TOPLEVEL).o
Front page