Xilinx recently released a webpack for Vivado. This is an excellent way to start learning how to get the most out of the new features.
Vivado, and PlanAhead, have a TCL interface. TCL has a long history in the EDA industry, which is somewhat unfortunate. Most new users would likely prefer a python, perl, lua, or other interface to the tools. However, EDA tools are notorious for improving very slowly over time, so TCL will probably be the only choice for the foreseeable future.
That all said, there are a lot of nice features that aren’t that difficult to get working. I’ve written up a simple TCL script that extracts the hierarchy from a design. It provides a cartesian-product (or “cross-join”) of instances with their associated generics. This can then be parsed by any other tool.
synth_design -rtl -name rtl_1 # open elaborated design
set file_out [open hierarchy.txt w] # set output file
set hier_list [get_cells \ # create list of cells
-hierarchical \ # matching * at each level
-filter {IS_PRIMITIVE == 0}] # that are not primitives
foreach hier $hier_list { # loop over these cells
set prop_list [list_property $hier] # find cell properties
foreach prop $prop_list { # loop over properties
set prop_val [get_property $prop $hier] # get value
if { "$prop_val" != "" } { # check for non-blank
puts $file_out $hier,$prop,$prop_val # write to file
} # end blank check
} # end inner loop
} # end outer loop
close $file_out # done writing file
The first part opens up an elaborated design in Vivado. The get_cells command does most of the work. I filter on “IS_PRIMITIVE” to remove all of the primitives. The list_property command gets a list of properties for each part of the hierarchy. This command gives mostly blank results — generics from other instances are included in the list of properties. Thus I filter it down a bit more.
The result can be parsed by other scripts. Likewise it isn’t too hard to write a TCL script that gives output that matches whatever format you might like.