Verilog/VHDL simulations with Xilinx ISE Simulator (ISim)
[ Back to index ]
Contents
- Introduction
- Documentation
- Tutorials
Introduction
Xilinx ISim Lite is free… Cadence Incisive isn't !!!
http://www.xilinx.com/tools/isim.htm
http://www.rte.se/blog/blogg-modesty-corex/isim-hdl-simulator (nice and complete!)
http://vhdlguru.blogspot.it/2010/12/tips-for-running-successful-simulation.html
http://www.sigasi.com/content/how-run-xilinx-isimfuse-command-line-linux
ISim Lite vs Full versions:
http://www.xilinx.com/products/design_tools/logic_design/verification/ise_simulator_faq.htm
Documentation
ISim User Guide
http://www.xilinx.com/support/documentation/sw_manuals/xilinx14_7/plugin_ism.pdf
ISim In-Depth Tutorial
http://www.xilinx.com/support/documentation/sw_manuals/xilinx14_7/ug682.pdf
UNIX environment setup
linux% source /opt/edatools/xilinx/ISE14.6/settings.csh
or write your own setup script by including:
# ISE installation directory setenv ISE_DIR /opt/edatools/xilinx/ISE14.6/ISE setenv XILINX $ISE_DIR # add Xilinx executables to search path set path = ( $ISE_DIR/bin/lin $ISE_DIR/sysgen/util $path )
Library mapping file
Example:
-- user libraries work = ./libraries/worklib vhdl_lib = ./libraries/vhdl_lib -- STD and IEEE libraries std = /opt/edatools/xilinx/ISE14.6/ISE/vhdl/hdp/lin/std ieee = /opt/edatools/xilinx/ISE14.6/ISE/vhdl/hdp/lin/ieee
Note that by delfault a xilinxisim.ini
library mapping file is searched and loaded from
$XILINX/vhdl/hdp/lin/xilinxisim.ini
./xilinxisim.ini
It is recommended to use the -initfile
flag with vlogcomp/vhpcomp
compilers or fuse
elaborator and linker indeed.
Makefile
# HDL sources (project file) SOURCES = design.prj # top-level design unit (testbench) TOP = tb_design # local library mapping file LIBFILE = libs.ini # compiler/elaborator CC = fuse # output simulation executable SIMEXE = $(TOP).exe # output waveform database WDB = ./results/wdb/$(TOP).wdb # Tcl run script TCLBATCH = ./scripts/run.tcl # compiler/elaborator options (use fuse -help for more details) CCFLAGS = -initfile $(LIBFILE) \ -incremental \ -verbose 0 \ -prj $(SOURCES) \ -out $(SIMEXE) # simulation executable options SIMFLAGS = -gui \ -wdb $(WDB) \ -tclbatch $(TCLBATCH) # useful command alias RM = rm -f RMDIR = rm -rf # default target all: compile # compile and elaborate sources with fuse compile: $(CC) $(CCFLAGS) $(TOP) # execute the simulation executable and run the simulation sim: ./$(SIMEXE) $(SIMFLAGS) & # delete log files, backup files etc. clean: @find ./ -name '*~' -exec $(RM) {} \; @$(RM) fuse.log fuse.xmsgs fuseRelaunch.cmd isim.log @$(RM) $(WDB) @$(RM) $(SIMEXE) @$(RMDIR) isim/
A simple ./scripts/run.tcl
example:
# trace all top-level signals wave add / # run the simulation run all # show simulation time show time
See also for example:
https://gist.github.com/gvillalta99/11436605