CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen...

21
HDL-Design .vhd / .v XST Netzliste .ngc NGDbuild Netzliste .ngd MAP post-map Design .ncd PAR finales Design .ncd NetGen NetGen NetGen UNISIM Netzlisten SIMPRIM Netzlisten SIMPRIM Netzlisten Timing- Information .sdf Constraints .pcf CoreGen Dateien .xco Coregen Netzliste .ngc Constraints .ucf PPC-System .mhs Platgen Netzliste .ngc RAM Map .bmm NetGen SIMPRIM Netzlisten Timing- Information .sdf SimGen HDL Wrapper vcom / vlog vsim Biblio- theken Simulations- Framework Sim-Modelle .vhd /.v Kommando- Datei HDL Simulation Framework Tips and Tricks for HDL simulation Dirk Hutter Donnerstag, 21. Juli 2011

Transcript of CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen...

Page 1: CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen Netzliste.ngc Constraints.ucf PPC-System.mhs Platgen Netzliste.ngc RAM Map.bmm NetGen

HDL-Design

.vhd / .v

XST

Netzliste

.ngc

NGDbuild

Netzliste

.ngd

MAP

post-map

Design

.ncd

PAR

finales Design

.ncd

NetGen

NetGen

NetGen

UNISIM

Netzlisten

SIMPRIM

Netzlisten

SIMPRIM

Netzlisten

Timing-

Information

.sdf

Constraints

.pcf

CoreGen

Dateien

.xco

Coregen

Netzliste

.ngc

Constraints

.ucf

PPC-System

.mhs

Platgen

Netzliste

.ngc

RAM Map

.bmm

NetGen

SIMPRIM

Netzlisten

Timing-

Information

.sdf

SimGen HDL Wrapper

vcom / vlog

vsim

Biblio-

theken

Simulations-

Framework

Sim-Modelle

.vhd /.v

Kommando-

Datei

HDL Simulation Framework

Tips and Tricks for HDL simulation

Dirk Hutter

Donnerstag, 21. Juli 2011

Page 2: CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen Netzliste.ngc Constraints.ucf PPC-System.mhs Platgen Netzliste.ngc RAM Map.bmm NetGen

Dirk Hutter· FPGA CC /20

Motivation

• With bigger FPGAs system complexity increases

• Time spend for simulation and verification also increases

2

Question: How can simulation be handles in an efficient way?

Donnerstag, 21. Juli 2011

Page 3: CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen Netzliste.ngc Constraints.ucf PPC-System.mhs Platgen Netzliste.ngc RAM Map.bmm NetGen

Dirk Hutter· FPGA CC /20

Outlook

• Simulation basics

• HDL Simulation Framework

• Gatel-level simulations

• Tips and Ticks

3

Donnerstag, 21. Juli 2011

Page 4: CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen Netzliste.ngc Constraints.ucf PPC-System.mhs Platgen Netzliste.ngc RAM Map.bmm NetGen

Dirk Hutter· FPGA CC /20

Concepts for efficient Simulations

• Simulation flow

• Use an automated simulation flow

• Add automated tests to your simulations

• Use GUIs only for investigations and debug

• Start simulations from basic sources

• Be able to simulate your design at each build step

4

Donnerstag, 21. Juli 2011

Page 5: CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen Netzliste.ngc Constraints.ucf PPC-System.mhs Platgen Netzliste.ngc RAM Map.bmm NetGen

Dirk Hutter· FPGA CC /20

Concepts for efficient Simulations

• Testbench and stimuli

• Simulations should be self checking and end automatically

• Add pattern generators and checkers to your testbench or design

• Integrate simulation debug output to your design

• Prefer language constructs before simulator commands

• Implement a full system simulation where possible

5

Donnerstag, 21. Juli 2011

Page 6: CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen Netzliste.ngc Constraints.ucf PPC-System.mhs Platgen Netzliste.ngc RAM Map.bmm NetGen

/20 Dirk Hutter· FPGA CC

Modelsim Simulation Flow

• HDL files are compiled to libraries

• For VHDL compile order is bottom up

• Library items are loaded for simulation using vsim

• During simulation runtime commands for manipulations and examinations are available

• How to automate?

6

HDL

vcom / vlog

work

vsim

runruntime commands

startup commands

pre-compiled Libraries

sub Libraries

Donnerstag, 21. Juli 2011

Page 7: CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen Netzliste.ngc Constraints.ucf PPC-System.mhs Platgen Netzliste.ngc RAM Map.bmm NetGen

Dirk Hutter· FPGA CC /20

Simulation Framework - Features

• Makefile based automated flow

• A single project file defines the whole simulation

• Ability to define

• Sources and libraries

• Back annotation paths for timing simulation

• Startup and runtime commands or scripts

• Out of tree build is supported

• Each simulation is build into its own directory

• Libraries and framework files are in subdirectory

• Easy include of stimulus generation and output checking7

Donnerstag, 21. Juli 2011

Page 8: CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen Netzliste.ngc Constraints.ucf PPC-System.mhs Platgen Netzliste.ngc RAM Map.bmm NetGen

/20 Dirk Hutter· FPGA CC

Simulation Framework

• A templates is created from available sources and can be modified

• Initialization

• Create needed libraries

• Compile sources into chosen libraries

• Create a makefile for each library using vmake and a common makefile for all libraries

• Create a command file for vsim

• Refresh effected simulation sources

• Start the simulator with the given commands

8

Template Generation

Initialization

Refresh

Start Simulation

Project Makefile

Command File

Project File

Searchdirs

Libraries

Synthesis Project File

Donnerstag, 21. Juli 2011

Page 9: CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen Netzliste.ngc Constraints.ucf PPC-System.mhs Platgen Netzliste.ngc RAM Map.bmm NetGen

Dirk Hutter· FPGA CC /20

How to use the Framework

• make template to crate a projectfile template

• Modify the template to match your simulation needs

• make sim_xxx to start your simulation

• Simulate and change sources

• make compile_xxx to refresh libraries

• For debug simulations restart the simulation in the GUI (without restarting the GUI)

9

make template

Setup Simulation

make sim_xxx

Simulate

Change Sources

make complile_xxx

Restart Simulation

Donnerstag, 21. Juli 2011

Page 10: CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen Netzliste.ngc Constraints.ucf PPC-System.mhs Platgen Netzliste.ngc RAM Map.bmm NetGen

Dirk Hutter· FPGA CC /20

Project File

10

# Commands [cmd]-do "do ../do/wave.do; do ../do/run.do"##############################[lib] TMU# Synthesis files from ../.././script/files.txt ../.././src/misc/buildstamp.vhd../.././src/top.vhd############################### Simulation files from ./sim_files.txt ../../../common/src/fifo/fifo_dc18.vhd../../../common/sim/src/CY7C1320BV18.vhd# Board-Level Simulation Entities./src/tmu.vhd# Testbench Sources[lib] work./src/tmu_tb.vhd

Donnerstag, 21. Juli 2011

Page 11: CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen Netzliste.ngc Constraints.ucf PPC-System.mhs Platgen Netzliste.ngc RAM Map.bmm NetGen

Dirk Hutter· FPGA CC /20

Gate-level Simulations

• Behavioral / functional simulations are not sufficient

• Gate-level and timing simulations get more and more important for FPGAs

• Examples:

• Differences between RTL and implemented design due to (unintended) optimizations

• Incomplete or wrong constraints

• Static timing analyzer used for implementation won‘t find runtime problems like BRAM collisions

11

Donnerstag, 21. Juli 2011

Page 12: CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen Netzliste.ngc Constraints.ucf PPC-System.mhs Platgen Netzliste.ngc RAM Map.bmm NetGen

/20 Dirk Hutter· FPGA CC

Xilinx Design Flow

• Synthesis (XST)

• Translates HDL design into a structural netlist of primitives

• Translate (NGDbuild)

• Reduces netlists to Xilinx primitives

• Mapping (MAP)

• Maps logic to FPGA components, pre placement

• Place & Route (PAR)

• Place and route of mapped design12

Design Entry

Design Synthesis

Design Implementation

Translate

Place & Route

Generate Bitstream

ProgramDevice

Map

Donnerstag, 21. Juli 2011

Page 13: CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen Netzliste.ngc Constraints.ucf PPC-System.mhs Platgen Netzliste.ngc RAM Map.bmm NetGen

/20 Dirk Hutter· FPGA CC

Simulation Points

• Behavioral:

Check RTL sources for intended function

• Post syn /trans:

Check for unintended syntheses results

• Post PAR

Gate-level simulation with partial timing informations (only block delay)

• Post MAP

Gate-level simulation with full timing information (block and net delay)

13

Design Entry

Design Synthesis

Design Implementation

Translate

Place & Route

Generate Bitstream

ProgramDevice

Map

Donnerstag, 21. Juli 2011

Page 14: CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen Netzliste.ngc Constraints.ucf PPC-System.mhs Platgen Netzliste.ngc RAM Map.bmm NetGen

/20 Dirk Hutter· FPGA CC

Gate-level Simulation for Xilinx FPGAs

• NetGen transforms files from the design flow into HDL netlists

• For each component with a „keep_hierarchy“ attribute a separate netlist can be created

• Timing information are written to a separate SDF file

• SDF file holds min, max and typ values of timing

NetGen HDL Netlist vcom / vlog vsimworking Library

Timing File

Xilinx Build File

HDL

14

Donnerstag, 21. Juli 2011

Page 15: CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen Netzliste.ngc Constraints.ucf PPC-System.mhs Platgen Netzliste.ngc RAM Map.bmm NetGen

/20 Dirk Hutter· FPGA CC

Integration to Simulation Framwork

15

HDL-Design

.vhd / .v

XST

Netzliste

.ngc

NGDbuild

Netzliste

.ngd

MAP

post-map

Design

.ncd

PAR

finales Design

.ncd

NetGen

NetGen

NetGen

UNISIM

Netzlisten

SIMPRIM

Netzlisten

SIMPRIM

Netzlisten

Timing-

Information

.sdf

Constraints

.pcf

CoreGen

Dateien

.xco

Coregen

Netzliste

.ngc

Constraints

.ucf

PPC-System

.mhs

Platgen

Netzliste

.ngc

RAM Map

.bmm

NetGen

SIMPRIM

Netzlisten

Timing-

Information

.sdf

SimGen HDL Wrapper

vcom / vlog

vsim

Biblio-

theken

Simulations-

Framework

Sim-Modelle

.vhd /.v

Kommando-

Datei

Donnerstag, 21. Juli 2011

Page 16: CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen Netzliste.ngc Constraints.ucf PPC-System.mhs Platgen Netzliste.ngc RAM Map.bmm NetGen

Dirk Hutter· FPGA CC /2016

Tips and Tricks

Donnerstag, 21. Juli 2011

Page 17: CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen Netzliste.ngc Constraints.ucf PPC-System.mhs Platgen Netzliste.ngc RAM Map.bmm NetGen

Dirk Hutter· FPGA CC /20

Hierarchical Signals

• Often signals from other hierarchy levels are needed

• Records for debug signal or VHDL packages are often used

• VHDL-2008:

• Can be used in testbenches in Modelsim 10.x

17

-- hierarchical signal name<< signal .tb.uut.o_n : std_logic >> -- signal a two levels above<< signal ^.^.a : std_logic >>-- variable in a package pack << variable @lib.pack.v : bit >>

Donnerstag, 21. Juli 2011

Page 18: CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen Netzliste.ngc Constraints.ucf PPC-System.mhs Platgen Netzliste.ngc RAM Map.bmm NetGen

Dirk Hutter· FPGA CC /20

Unimportant Warnings

• Get rid of unimportant warnings to see crucial ones

• Arithmetic warnings before reset

# Switch off arithmetics warnings

set StdArithNoWarnings 1set NumericStdNoWarnings 1

# Switch on arithmetics warnings after resetwhen -label enable_StdWarn {rst = '0'} {echo "### Enabling arithmetic warnings" ;set StdArithNoWarnings 0;set NumericStdNoWarnings 0}

• BRAM collision checks:

SIM_COLLISION_CHECK generic in BRAM primitive

18

Donnerstag, 21. Juli 2011

Page 19: CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen Netzliste.ngc Constraints.ucf PPC-System.mhs Platgen Netzliste.ngc RAM Map.bmm NetGen

Dirk Hutter· FPGA CC /20

Modelsim Breakpoints

• Breakpoints can be used to steer simulation progress

• E.g. stopping a simulation

19

onbreak {resume} when {/testbench/done_condition = 1} { if {[examine /testbench/error] = 0} { echo "### SIMULATION PASSED" } if {[examine /testbench/error] != 0} { echo "### SIMULATION FAILED" } stop if [batch_mode] { quit -f }} run -all

Donnerstag, 21. Juli 2011

Page 20: CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen Netzliste.ngc Constraints.ucf PPC-System.mhs Platgen Netzliste.ngc RAM Map.bmm NetGen

Dirk Hutter· FPGA CC /20

Modelsim Virtual Signals

• Signals can be combined to virtual signal and buses

• Virtual types can be defined

• Useful for signals not available on testbench level and gate-level simulations

20

# create virtual intermediate bus of control signalsvirtual signal -install /sim_tb_top { (context /sim_tb_top )( ddr3_cs_n_fpga(0) & ddr3_ras_n_fpga & ddr3_cas_n_fpga & ddr3_we_n_fpga )} controls

# define types for control signalsvirtual type {{0b1000 DES} {0b0001 REF} {0b0011 ACT} {0b0101 RD} {0b0100 WR} {0b0110 ZQCS} {default OTHER_STATE}} myCtrlType

# cast controls to myCtrlType and save as myCtrlStatevirtual function {(myCtrlType)/sim_tb_top/controls} myCtrlState

Donnerstag, 21. Juli 2011

Page 21: CoreGen .vhd /.v HDL Simulation Framework · .sdf Constraints.pcf CoreGen Dateien .xco Coregen Netzliste.ngc Constraints.ucf PPC-System.mhs Platgen Netzliste.ngc RAM Map.bmm NetGen

Prof. Dr. Volker Lindenstruth

Lehrstuhl für Architektur von HochleistungsrechnernFrankfurt Institute for Advanced Studies

http://www.compeng.de

Contact:

Dirk Hutter

[email protected]

Thank You forYour Attention!

Donnerstag, 21. Juli 2011