Cocotb

From Robin

(Difference between revisions)
Jump to: navigation, search
 
(3 intermediate revisions not shown)
Line 1: Line 1:
=For å kjøre Cocotb (etter installasjon - )=
=For å kjøre Cocotb (etter installasjon - )=
 +
Hvis du ikke allerede har installert cocotb se installasjon av [[Cocotb, GHDL and GTKWave]]
 +
== Om cocotb ==
== 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.  
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.  
Line 8: Line 10:
== Makefile ==
== Makefile ==
Makefila sørger for kompilering og kjøring av Cocotb, samt evt kjøring av GUI eller lagring av waveform fil
Makefila sørger for kompilering og kjøring av Cocotb, samt evt kjøring av GUI eller lagring av waveform fil
-
* tb_<modulnavn>.py må inneholde python-testbenken
+
* tb_<my_toplevel>.py må inneholde python-testbenken
* Makefile for GHDL
* Makefile for GHDL
Line 39: Line 41:
  -@rm -f $(TOPLEVEL)
  -@rm -f $(TOPLEVEL)
  -@rm -f e~$(TOPLEVEL).o
  -@rm -f e~$(TOPLEVEL).o
-
 
== WSL ==
== WSL ==
Line 46: Line 47:
  # ikke glem punktumet
  # ikke glem punktumet
-
== Using GTK-wave ==
+
== GTK-wave ==
Etter kjøring av makefile med "SIM_ARGS=--wave=...", kan man starte gtkwave for å åpne wavefila
Etter kjøring av makefile med "SIM_ARGS=--wave=...", kan man starte gtkwave for å åpne wavefila
  gtkwave <filnavn>
  gtkwave <filnavn>
Line 56: Line 57:
*** Menyvalg: TimeZoom\Zoom Best Fit  
*** Menyvalg: TimeZoom\Zoom Best Fit  
*** Shortcut: Shift-Alt-F
*** Shortcut: Shift-Alt-F
-
 
== Makefile for Questa (not recommended) ==
== Makefile for Questa (not recommended) ==
Line 99: Line 99:
   
   
  # MODULE is the basename of the Python test file
  # MODULE is the basename of the Python test file
-
  MODULE ?= tb_(TOPLEVEL).py
+
  MODULE ?= tb_(TOPLEVEL)
   
   
  # include cocotb's make rules to take care of the simulator setup
  # include cocotb's make rules to take care of the simulator setup

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