In Vivado 2017.1 the engine that generates the hierarchy data displayed on HSV tab was updated. In order to create the needed data, Vivado launches an executable named srcscanner.exe.
If the source scanner is unable to parse the file for any reason, the file will be listed under the Non-module folder.
Srcscanner typically exhibits a runtime issue when it hits a code construct it does not like or understand. There have been some reported cases where srcscanner is not recognizing valid HDL code.
If you suspect this is the case, please submit the example code or project for evaluation and fix if needed.
HSV has a few operating modes that go from fully automatic (default ) to fully manual.
Most issues with slowness or incorrect file compile order being sent to synthesis can be worked around by using one of the manual compile order settings.
This can be done in the GUI by right clicking in the HSV and selecting the desired option under Hierarchy Updates or by running the equivalent Tcl command in the Tcl console:
set_property source_mgmt_mode DisplayOnly [current_project]
set_property source_mgmt_mode None [current_project]
When using either of the Manual modes, Vivado will send all of the files in the source fileset to the Synthesis (or Simulation) process being run and the Synthesis process will do a separate parse of the files to determine dependencies.
In Vivado 2017.3, extra messaging will be added to the scrscanner. However, users might find better syntax related messaging if they run the synthesis and/or simulation process.
Below are some known causes for srcscanner to hang, freeze or give an exception.
For Example: The function get_width has two inputs with undefined type:
This results in a divide by zero operation at "width = (area/base);".
There is no problem if the type is defined as "integer".