main reasons to use vhdl: tools!I don't feel comfortable with verilog's tools, whereas ghdl has offered the opportunity to develop the following building tool, it's written in C under linux, it's a project I have developed to boost my productivity, and it's fine
# cat project.list.myprj
../../rtl/package
../../rtl/bus-mm
../../rtl/bus-mm-controller-sram-asynchronous
../../rtl/controller-sram-asynchronous
./
define sources
# cat project.analysis.myprj
measure bus_clock
time_lapse dtack
define what you want to observe from the RTL simulation
# cat project.time.myprj
100us
define simulation time
# myghdl-build-project-makefile-v6
once all of the above has been defined, the tool automatically builds the Makefile
# myghdl-build-project-makefile-v6
[*] ../../rtl/package
[*] ../../rtl/bus-mm
[[bus_mm_alignment.interface]]
bus_mm_alignment
[bus_mm.def]
[[bus_mm_device.interface]]
[[bus_mm_device_sel.interface]]
bus_mm_device_sel
bus_mm_device
[[bus_mm.interface]]
[[bus_mm_size_mask.interface]]
bus_mm_size_mask
bus_mm
stage_load_store
[*] ../../rtl/bus-mm-controller-sram-asynchronous
[[bus_mm_controller_sram_asynchronous.interface]]
bus_mm_controller_sram_asynchronous
[*] ../../rtl/controller-sram-asynchronous
[[controller_sram_asynchronous.interface]]
controller_sram_asynchronous
[*] ./
tb_my
#
packages are handled as "definitions", components are handled as "interfaces", everything else is handled as "behavioral implementation", this tool is able to resolve the dependency tree, in order to allow to compile without errors. ghdl needs some external work, whereas Xilinx ISE is also able to do the same without any external help, I like ISE, I don't like iSim
co-nix arise-v2-bus-mm # make
compiling bus_mm.def ... done
compiling controller_sram_asynchronous.def ... done
compiling +definitions ... done
compiling bus_mm_alignment.interface ... done
compiling bus_mm_device.interface ... done
compiling bus_mm_device_sel.interface ... done
compiling bus_mm.interface.interface ... done
compiling bus_mm_size_mask.interface ... done
compiling controller_sram_asynchronous.interface ... done
compiling stage_load_store.interface ... done
compiling +interfaces ... done
compiling bus_mm_alignment ... done
compiling bus_mm_controller_sram_asynchronous ... done
compiling bus_mm_device_sel ... done
compiling bus_mm_device ... done
compiling bus_mm_size_mask ... done
compiling bus_mm ... done
compiling stage_load_store ... done
compiling controller_sram_asynchronous ... done
compiling tb_my ... done
compiling +behaviorals ... done
running simulation ... done, see report.txt
running analysis ... done, see analysis.txt
a gtkwave file (tbencha.ghw) is now available with time details, while analysis.txt contains a lot of useful information, e.g. time/frequency report
..
bus_clock: 40000000 fs, 25000000 Hz
dtack: 120000000 fs
..
# make view
it launches gtkview
also I am using
this vhdl-helper, it's a collection of useful functions which help me a lot with the test bench activity
I don't yet have a similar ecosystem (tools and helpers) with verilog, not yet
edit:
I have also developed other tools which help me to create the test-bench and interfaces, it partially understands vhdl, the parser doesn't understand the whole vhdl grammar, just a subset, anyway it's enough to extract entities, build components, etc etc. it's not like Sigase, but it's fine for me, and it doesn't cost a license.