<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://www.verific.com/faq/index.php?action=history&amp;feed=atom&amp;title=Getting_design_hierarchy_from_input_RTL_files</id>
		<title>Getting design hierarchy from input RTL files - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://www.verific.com/faq/index.php?action=history&amp;feed=atom&amp;title=Getting_design_hierarchy_from_input_RTL_files"/>
		<link rel="alternate" type="text/html" href="https://www.verific.com/faq/index.php?title=Getting_design_hierarchy_from_input_RTL_files&amp;action=history"/>
		<updated>2026-05-02T12:42:22Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.26.3</generator>

	<entry>
		<id>https://www.verific.com/faq/index.php?title=Getting_design_hierarchy_from_input_RTL_files&amp;diff=942&amp;oldid=prev</id>
		<title>Hoa at 16:53, 12 August 2025</title>
		<link rel="alternate" type="text/html" href="https://www.verific.com/faq/index.php?title=Getting_design_hierarchy_from_input_RTL_files&amp;diff=942&amp;oldid=prev"/>
				<updated>2025-08-12T16:53:41Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='en'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 16:53, 12 August 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l90&quot; &gt;Line 90:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 90:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; if (veri_file::GetModule(top_name)) {&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; if (veri_file::GetModule(top_name)) {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; // Optional - statically elaborate all the top Verilog module. Return if any error shows up.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; if (!veri_file::ElaborateStatic(top_name)) return 2 ; // &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Component-module binding happens &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;static elaboration &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; if (!veri_file::ElaborateStatic(top_name)) return 2 ; // &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;statically elaborates all verilog modules &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the &amp;quot;work&amp;quot; libarary&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; VeriModule *top_module = veri_file::GetModule(top_name) ; // Get the pointer to the top-level module&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; VeriModule *top_module = veri_file::GetModule(top_name) ; // Get the pointer to the top-level module&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; if (!top_module) {&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; if (!top_module) {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l170&quot; &gt;Line 170:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 168:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; sys.exit(2)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; sys.exit(2)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Static &lt;/del&gt;elaboration &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;is optional&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Component-module binding happens in static &lt;/ins&gt;elaboration &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;if (not reader.ElaborateStatic(top_name)):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;if (not reader.ElaborateStatic(top_name)):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; print ('Error in ElaborateStatic')&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; print ('Error in ElaborateStatic')&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Hoa</name></author>	</entry>

	<entry>
		<id>https://www.verific.com/faq/index.php?title=Getting_design_hierarchy_from_input_RTL_files&amp;diff=939&amp;oldid=prev</id>
		<title>Hoa: Created page with &quot;C++ application:  &lt;nowiki&gt; #include &lt;sstream&gt; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include &quot;Array.h&quot;          // Make class Array available #include &quot;Set....&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.verific.com/faq/index.php?title=Getting_design_hierarchy_from_input_RTL_files&amp;diff=939&amp;oldid=prev"/>
				<updated>2025-07-14T19:12:36Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;C++ application:  &amp;lt;nowiki&amp;gt; #include &amp;lt;sstream&amp;gt; #include &amp;lt;iostream&amp;gt; #include &amp;lt;fstream&amp;gt; #include &amp;lt;string&amp;gt; #include &amp;quot;Array.h&amp;quot;          // Make class Array available #include &amp;quot;Set....&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;C++ application:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#include &amp;lt;sstream&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;quot;Array.h&amp;quot;          // Make class Array available&lt;br /&gt;
#include &amp;quot;Set.h&amp;quot;            // Make class Set available&lt;br /&gt;
#include &amp;quot;Message.h&amp;quot;        // Make message handlers available&lt;br /&gt;
#include &amp;quot;Strings.h&amp;quot;        // Definition of class to manipulate copy, concatenate, create etc...&lt;br /&gt;
#include &amp;quot;LineFile.h&amp;quot;&lt;br /&gt;
#include &amp;quot;veri_file.h&amp;quot;      // Make verilog reader available&lt;br /&gt;
#include &amp;quot;VeriModule.h&amp;quot;     // Definition of a VeriModule and VeriPrimitive&lt;br /&gt;
#include &amp;quot;VeriExpression.h&amp;quot; // Definition of VeriName&lt;br /&gt;
#include &amp;quot;VeriId.h&amp;quot;         // Definitions of all verilog identifier nodes&lt;br /&gt;
#include &amp;quot;VeriScope.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#ifdef VERIFIC_NAMESPACE&lt;br /&gt;
using namespace Verific ;&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
std::string PrintLocation(const linefile_type lf)&lt;br /&gt;
{&lt;br /&gt;
    std::ostringstream result(&amp;quot;&amp;quot;) ;&lt;br /&gt;
    if (lf) {&lt;br /&gt;
#ifdef VERIFIC_LINEFILE_INCLUDES_COLUMNS&lt;br /&gt;
    result &amp;lt;&amp;lt; lf-&amp;gt;GetFileName() ;&lt;br /&gt;
    result &amp;lt;&amp;lt; &amp;quot;[&amp;quot; ;&lt;br /&gt;
    result &amp;lt;&amp;lt; lf-&amp;gt;GetLeftLine() ;&lt;br /&gt;
    result &amp;lt;&amp;lt; &amp;quot;:&amp;quot; ;&lt;br /&gt;
    result &amp;lt;&amp;lt; lf-&amp;gt;GetLeftCol() ;&lt;br /&gt;
    result &amp;lt;&amp;lt; &amp;quot;]-[&amp;quot; ;&lt;br /&gt;
    result &amp;lt;&amp;lt; lf-&amp;gt;GetRightLine() ;&lt;br /&gt;
    result &amp;lt;&amp;lt; &amp;quot;:&amp;quot; ;&lt;br /&gt;
    result &amp;lt;&amp;lt; lf-&amp;gt;GetRightCol() ;&lt;br /&gt;
    result &amp;lt;&amp;lt; &amp;quot;]&amp;quot; ;&lt;br /&gt;
#else&lt;br /&gt;
    result &amp;lt;&amp;lt; LineFile::GetFileName(lf) ;&lt;br /&gt;
    result &amp;lt;&amp;lt; &amp;quot;[&amp;quot; ;&lt;br /&gt;
    result &amp;lt;&amp;lt; LineFile::GetLineNo(lf) ;&lt;br /&gt;
    result &amp;lt;&amp;lt; &amp;quot;]&amp;quot; ;&lt;br /&gt;
#endif&lt;br /&gt;
    }&lt;br /&gt;
    return result.str() ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void PrintHierarchy(VeriModule *module, unsigned depth)&lt;br /&gt;
{&lt;br /&gt;
    if (!module) return ; // Ignore NULL netlists&lt;br /&gt;
&lt;br /&gt;
    char *prefix = 0 ;&lt;br /&gt;
    if (depth) {&lt;br /&gt;
        prefix = Strings::allocate(depth*4 +3) ;&lt;br /&gt;
        unsigned i ;&lt;br /&gt;
        for (i = 0; i &amp;lt; (depth *4); i++) prefix[i] = ' ' ;&lt;br /&gt;
        prefix[i] = 0 ;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Get the scope of the module:&lt;br /&gt;
    VeriScope *scope = module-&amp;gt;GetScope() ;&lt;br /&gt;
    // Find all the declared ids in this scope:&lt;br /&gt;
    Map *ids = scope ? scope-&amp;gt;DeclArea() : 0 ;&lt;br /&gt;
    MapIter mi ;&lt;br /&gt;
    VeriIdDef *id ;&lt;br /&gt;
    FOREACH_MAP_ITEM(ids, mi, 0, &amp;amp;id) { // Traverse declared ids&lt;br /&gt;
        if (!id || !id-&amp;gt;IsInst()) continue ; // Consider only the instance ids&lt;br /&gt;
        VeriModuleInstantiation *mod_inst = id-&amp;gt;GetModuleInstance() ; // Take the module instance&lt;br /&gt;
        VeriModule *mod = mod_inst ? mod_inst-&amp;gt;GetInstantiatedModule() : 0 ; // The module instance is a module&lt;br /&gt;
        if (mod) { // This is module instantiation&lt;br /&gt;
            linefile_type lf = mod-&amp;gt;Linefile() ;&lt;br /&gt;
            const char *location =  PrintLocation(lf).c_str() ;&lt;br /&gt;
            char *inst_mod = Strings::save(prefix ? prefix : &amp;quot;&amp;quot;, id-&amp;gt;Name(), &amp;quot; (&amp;quot;, mod-&amp;gt;Name());&lt;br /&gt;
            Message::PrintLine(inst_mod, &amp;quot; {&amp;quot;, location, &amp;quot;})&amp;quot;) ;&lt;br /&gt;
            PrintHierarchy(mod, depth+1) ;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    const char *file_name = &amp;quot;top.v&amp;quot; ;&lt;br /&gt;
    const char *top_name = &amp;quot;top&amp;quot; ;&lt;br /&gt;
    const char *work_lib = &amp;quot;work&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
    veri_file::AddVFile(&amp;quot;mbot.v&amp;quot;) ;&lt;br /&gt;
    veri_file::AddYDir(&amp;quot;.&amp;quot;) ;&lt;br /&gt;
    veri_file::AddIncludeDir(&amp;quot;.&amp;quot;) ;&lt;br /&gt;
    veri_file::AddLibExt(&amp;quot;.v&amp;quot;) ;&lt;br /&gt;
    if (!veri_file::Analyze(file_name, veri_file::VERILOG_2K /*Verilog 2000*/, work_lib)) return 1 ;&lt;br /&gt;
&lt;br /&gt;
    if (veri_file::GetModule(top_name)) {&lt;br /&gt;
        // Optional - statically elaborate all the top Verilog module. Return if any error shows up.&lt;br /&gt;
        if (!veri_file::ElaborateStatic(top_name)) return 2 ; // statically elaborates all verilog modules in the &amp;quot;work&amp;quot; libarary&lt;br /&gt;
&lt;br /&gt;
        VeriModule *top_module = veri_file::GetModule(top_name) ; // Get the pointer to the top-level module&lt;br /&gt;
        if (!top_module) {&lt;br /&gt;
            return 3 ; // Exit from application if there is no top module by the given name in the given Verilog designs&lt;br /&gt;
        }&lt;br /&gt;
        linefile_type lf = top_module-&amp;gt;Linefile() ;&lt;br /&gt;
        const char *location =  PrintLocation(lf).c_str() ;&lt;br /&gt;
        Message::PrintLine(&amp;quot;Top module: &amp;quot;, top_module-&amp;gt;Name(), &amp;quot; {&amp;quot;, location, &amp;quot;}&amp;quot;) ;&lt;br /&gt;
        PrintHierarchy(top_module, 1) ;&lt;br /&gt;
    }&lt;br /&gt;
    return 0 ; // all good&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Python script:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#! /usr/bin/python&lt;br /&gt;
import sys&lt;br /&gt;
sys.path.append('../../pythonmain/install')&lt;br /&gt;
import Verific&lt;br /&gt;
&lt;br /&gt;
def PrintLocation(lf):&lt;br /&gt;
    result = '';&lt;br /&gt;
    if lf:&lt;br /&gt;
        # if 'VERIFIC_LINEFILE_INCLUDES_COLUMNS' is enabled&lt;br /&gt;
        result = result + lf.GetFileName() + '[' + Verific.Strings.itoa(lf.GetLeftLine()) + ':' \&lt;br /&gt;
                                                 + Verific.Strings.itoa(lf.GetLeftCol()) + ']-[' \&lt;br /&gt;
                                                 + Verific.Strings.itoa(lf.GetRightLine()) + ':' \&lt;br /&gt;
                                                 + Verific.Strings.itoa(lf.GetRightCol()) + ']'&lt;br /&gt;
        # if 'VERIFIC_LINEFILE_INCLUDES_COLUMNS' is disabled&lt;br /&gt;
        # result = result + Verific.LineFile.GetFileName(lf) + '[' + Verific.Strings.itoa(Verific.LineFile.GetLineNo(lf)) + ']'&lt;br /&gt;
    return result&lt;br /&gt;
&lt;br /&gt;
def PrintHierarchy(module, depth):&lt;br /&gt;
    if not module:&lt;br /&gt;
        return &lt;br /&gt;
    prefix = ''&lt;br /&gt;
    for i in range (depth):&lt;br /&gt;
        prefix = prefix + '    '&lt;br /&gt;
    scope = module.GetScope()&lt;br /&gt;
    ids = scope.DeclArea() # Map of VeriIdDefs&lt;br /&gt;
    id_iter = Verific.VeriIdDefMapIter(ids)&lt;br /&gt;
    id = id_iter.First()&lt;br /&gt;
    while (id):&lt;br /&gt;
        if (not id.IsInst()):&lt;br /&gt;
            id = id_iter.Next()&lt;br /&gt;
            continue&lt;br /&gt;
        mod_inst = id.GetModuleInstance() # Take the module instance - VeriModuleInstantiation&lt;br /&gt;
        mod = mod_inst.GetInstantiatedModule() # The module instance is a module - VeriModule&lt;br /&gt;
        if (not mod):&lt;br /&gt;
            id = id_iter.Next()&lt;br /&gt;
            continue&lt;br /&gt;
        location = PrintLocation(mod.Linefile());&lt;br /&gt;
        print ('%sInstance %s (%s {%s})' % (prefix, id.Name(), mod.Name(), location))&lt;br /&gt;
        id = id_iter.Next()&lt;br /&gt;
        PrintHierarchy(mod, depth+1);&lt;br /&gt;
&lt;br /&gt;
# main&lt;br /&gt;
reader = Verific.veri_file()&lt;br /&gt;
file_name = 'top.v'&lt;br /&gt;
top_name = 'top'&lt;br /&gt;
work_lib = 'work'&lt;br /&gt;
&lt;br /&gt;
reader.AddVFile(&amp;quot;mbot.v&amp;quot;) ;&lt;br /&gt;
reader.AddYDir(&amp;quot;.&amp;quot;) ;&lt;br /&gt;
reader.AddIncludeDir(&amp;quot;.&amp;quot;) ;&lt;br /&gt;
reader.AddLibExt(&amp;quot;.v&amp;quot;) ;&lt;br /&gt;
&lt;br /&gt;
if (not reader.Analyze(file_name, reader.VERILOG_2K, work_lib)):&lt;br /&gt;
    print ('Error in Analyze')&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
top_module = reader.GetModule(top_name) ;&lt;br /&gt;
if (not top_module):&lt;br /&gt;
    print ('Error in GetModule')&lt;br /&gt;
    sys.exit(2)&lt;br /&gt;
&lt;br /&gt;
# Static elaboration is optional&lt;br /&gt;
if (not reader.ElaborateStatic(top_name)):&lt;br /&gt;
    print ('Error in ElaborateStatic')&lt;br /&gt;
    sys.exit(3)&lt;br /&gt;
&lt;br /&gt;
location = PrintLocation(top_module.Linefile());&lt;br /&gt;
print ('\nTop module: %s {%s}' % (top_module.Name(), location))&lt;br /&gt;
PrintHierarchy(top_module, 1)&lt;br /&gt;
&lt;br /&gt;
print ('\nDone')&lt;br /&gt;
&lt;br /&gt;
sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Input RTL:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cat top.v&lt;br /&gt;
// top module&lt;br /&gt;
module top(a, b, c, d, e, f, out, m, n, o) ;&lt;br /&gt;
    input a, b, c, d, e, f, m, n ;&lt;br /&gt;
    output out, o ;&lt;br /&gt;
&lt;br /&gt;
    wire tmp1, tmp2 ;&lt;br /&gt;
&lt;br /&gt;
    mid1 i1(a, b, c, d, tmp1) ;&lt;br /&gt;
    mid1 i2(a, d, e, f, tmp2) ;&lt;br /&gt;
    mid1 i3(tmp1, tmp2, e, f, out) ;&lt;br /&gt;
    bot bi(o, m, n);&lt;br /&gt;
&lt;br /&gt;
endmodule&lt;br /&gt;
$ cat mid1.v &lt;br /&gt;
module mid1 (mid1_inp1, mid1_inp2, mid1_inp3, mid1_inp4, mid1_out,&lt;br /&gt;
             mid1b_inp1, mid1b_inp2, mid1b_out) ;&lt;br /&gt;
    input mid1_inp1, mid1_inp2, mid1_inp3, mid1_inp4 ;&lt;br /&gt;
    output mid1_out ;&lt;br /&gt;
    input mid1b_inp1, mid1b_inp2 ;&lt;br /&gt;
    output mid1b_out ;&lt;br /&gt;
    &lt;br /&gt;
    wire tmp1, tmp2 ;&lt;br /&gt;
&lt;br /&gt;
    mid2 m1(mid1_inp1, mid1_inp2, tmp1) ;&lt;br /&gt;
    mid2 m2(mid1_inp3, mid1_inp4, tmp2) ;&lt;br /&gt;
    mid2 m3(tmp1, tmp2, mid1_out) ;&lt;br /&gt;
    bot b(mid1b_inp1, mid1b_inp2, mid1b_out) ;&lt;br /&gt;
&lt;br /&gt;
endmodule&lt;br /&gt;
$ cat mid2.v &lt;br /&gt;
module mid2 (mid2_inp1, mid2_inp2, mid2_out) ;&lt;br /&gt;
    input mid2_inp1, mid2_inp2 ;&lt;br /&gt;
    output mid2_out ;&lt;br /&gt;
&lt;br /&gt;
    bot b(mid2_inp1, mid2_inp2, mid2_out) ;&lt;br /&gt;
&lt;br /&gt;
endmodule&lt;br /&gt;
$ cat mbot.v &lt;br /&gt;
&lt;br /&gt;
module bot (bot_inp1, bot_inp2, bot_out) ;&lt;br /&gt;
    input bot_inp1, bot_inp2 ;&lt;br /&gt;
    output bot_out ;&lt;br /&gt;
&lt;br /&gt;
    assign bot_out = bot_inp1 &amp;amp; bot_inp2 ;&lt;br /&gt;
&lt;br /&gt;
endmodule&lt;br /&gt;
$ &lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ test-linux &lt;br /&gt;
-- Analyzing Verilog file 'top.v' (VERI-1482)&lt;br /&gt;
-- Parsing library file mbot.v (VERI-1482)&lt;br /&gt;
-- Analyzing Verilog file 'mbot.v' (VERI-1482)&lt;br /&gt;
--       Resolving module 'bot' (VERI-1489)&lt;br /&gt;
-- Analyzing Verilog file './mid1.v' (VERI-1482)&lt;br /&gt;
--       Resolving module 'mid1' (VERI-1489)&lt;br /&gt;
-- Analyzing Verilog file './mid2.v' (VERI-1482)&lt;br /&gt;
--       Resolving module 'mid2' (VERI-1489)&lt;br /&gt;
top.v(2): INFO: compiling module 'top' (VERI-1018)&lt;br /&gt;
top.v(8): WARNING: port 'mid1b_inp1' is not connected on this instance (VERI-2435)&lt;br /&gt;
top.v(8): WARNING: port 'mid1b_out' remains unconnected for this instance (VERI-1927)&lt;br /&gt;
top.v(9): WARNING: port 'mid1b_inp1' is not connected on this instance (VERI-2435)&lt;br /&gt;
top.v(9): WARNING: port 'mid1b_out' remains unconnected for this instance (VERI-1927)&lt;br /&gt;
top.v(10): WARNING: port 'mid1b_inp1' is not connected on this instance (VERI-2435)&lt;br /&gt;
top.v(10): WARNING: port 'mid1b_out' remains unconnected for this instance (VERI-1927)&lt;br /&gt;
top.v(11): WARNING: assignment to input 'n' (VERI-1214)&lt;br /&gt;
-- Top module: top {top.v[2:1]-[13:10]}&lt;br /&gt;
--     i1 (mid1 {./mid1.v[1:1]-[15:10]})&lt;br /&gt;
--         m1 (mid2 {./mid2.v[1:1]-[7:10]})&lt;br /&gt;
--             b (bot {mbot.v[2:1]-[8:10]})&lt;br /&gt;
--         m2 (mid2 {./mid2.v[1:1]-[7:10]})&lt;br /&gt;
--             b (bot {mbot.v[2:1]-[8:10]})&lt;br /&gt;
--         m3 (mid2 {./mid2.v[1:1]-[7:10]})&lt;br /&gt;
--             b (bot {mbot.v[2:1]-[8:10]})&lt;br /&gt;
--         b (bot {mbot.v[2:1]-[8:10]})&lt;br /&gt;
--     i2 (mid1 {./mid1.v[1:1]-[15:10]})&lt;br /&gt;
--         m1 (mid2 {./mid2.v[1:1]-[7:10]})&lt;br /&gt;
--             b (bot {mbot.v[2:1]-[8:10]})&lt;br /&gt;
--         m2 (mid2 {./mid2.v[1:1]-[7:10]})&lt;br /&gt;
--             b (bot {mbot.v[2:1]-[8:10]})&lt;br /&gt;
--         m3 (mid2 {./mid2.v[1:1]-[7:10]})&lt;br /&gt;
--             b (bot {mbot.v[2:1]-[8:10]})&lt;br /&gt;
--         b (bot {mbot.v[2:1]-[8:10]})&lt;br /&gt;
--     i3 (mid1 {./mid1.v[1:1]-[15:10]})&lt;br /&gt;
--         m1 (mid2 {./mid2.v[1:1]-[7:10]})&lt;br /&gt;
--             b (bot {mbot.v[2:1]-[8:10]})&lt;br /&gt;
--         m2 (mid2 {./mid2.v[1:1]-[7:10]})&lt;br /&gt;
--             b (bot {mbot.v[2:1]-[8:10]})&lt;br /&gt;
--         m3 (mid2 {./mid2.v[1:1]-[7:10]})&lt;br /&gt;
--             b (bot {mbot.v[2:1]-[8:10]})&lt;br /&gt;
--         b (bot {mbot.v[2:1]-[8:10]})&lt;br /&gt;
--     bi (bot {mbot.v[2:1]-[8:10]})&lt;br /&gt;
$&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hoa</name></author>	</entry>

	</feed>