<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://www.verific.com/faq/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Amber</id>
		<title>Verific Design Automation FAQ - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://www.verific.com/faq/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Amber"/>
		<link rel="alternate" type="text/html" href="https://www.verific.com/faq/index.php?title=Special:Contributions/Amber"/>
		<updated>2026-05-02T12:38:48Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.3</generator>

	<entry>
		<id>https://www.verific.com/faq/index.php?title=Main_Page&amp;diff=415</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.verific.com/faq/index.php?title=Main_Page&amp;diff=415"/>
				<updated>2019-07-19T21:33:56Z</updated>
		
		<summary type="html">&lt;p&gt;Amber: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''General'''&lt;br /&gt;
* [[How to get best support from Verific | '''''How to get best support from Verific''''']]&lt;br /&gt;
* [[Original RTL language | How do I know what language a Netlist in the netlist database comes from?]]&lt;br /&gt;
* [[Verific data structures | What are the data structures in Verific?]]&lt;br /&gt;
* [[Remove Verific data structures | How do I remove all Verific data structures in memory?]]&lt;br /&gt;
* [[Does Verific build CDFG? | Does Verific build control and data flow graph (CDFG)?]]&lt;br /&gt;
* [[Does Verific support XMR?| Does Verific support cross module references (XMR)?]]&lt;br /&gt;
* [[Compile-time/run-time flags | Are there options to control Verific software's behavior? Compile-time &amp;amp; run-time flags.]]&lt;br /&gt;
* [[Message handling | How do I downgrade/upgrade messages from Verific? ]]&lt;br /&gt;
* [[Release version | How do I tell the version of a Verific software release? ]]&lt;br /&gt;
* [[Tcl library path| How to correct building (linking) issue &amp;quot;/usr/bin/ld: cannot find -ltcl&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
'''Input: VHDL, Verilog (and SystemVerilog), Liberty, EDIF'''&lt;br /&gt;
* [[How to get all Verilog files being analyzed | Verilog: I'm using -v, -y, .... After Verific is done with the analysis, how do I get a list of all the files being analyzed?]]&lt;br /&gt;
* [[Included files associated with a Verilog source file | Verilog: How do I get the list of included files associated with a Verilog source file?]]&lt;br /&gt;
* [[How to get type/initial value of parameters | Verilog: How to get type/initial value of parameters.]]&lt;br /&gt;
* [[Verilog ports being renamed | Verilog: Why are the ports in original Verilog file renamed to p1, p2, ....?]]&lt;br /&gt;
* [[Design with System Verilog and Verilog 2001 files | Verilog: For a design consisting of a mixture of Verilog 2001 and SystemVerilog input files, should I parse all the files as SystemVerilog?]]&lt;br /&gt;
* [[How to get module ports from Verilog parsetree | Verilog: From the Verilog parsetree, how can I get the ports of a module?]]&lt;br /&gt;
* [[How to change name of id in Verilog parsetree | Verilog: How do I change the name of an id (VeriidDef) in Verilog parsetree?]]&lt;br /&gt;
* [[How to get library containing nested module | Verilog: How do I get the library that contains the module nested inside another module?]]&lt;br /&gt;
* [[How to get linefile information of macro definitions | Verilog: How do I get linefile information of macro definitions?]]&lt;br /&gt;
* [[How to find port dimensions | Verilog: How do I get port dimensions?]]&lt;br /&gt;
* [[Instance - Module binding order | Verilog: What is the order of binding modules to instances?]]&lt;br /&gt;
* [[Constant expression replacement | Verilog: Does Verific replace constant expressions with their respective values?]]&lt;br /&gt;
* [[Defined macros become undefined - MFCU vs SFCU | SystemVerilog: Why does Verific complain about undefined macros for macros defined in a different file (Compilation Unit)?]]&lt;br /&gt;
* [[How to get enums from Verilog parsetree | SystemVerilog: From the parsetree, how can I get the enums declared in a module?]]&lt;br /&gt;
* [[How to identify packages being imported into a module | SystemVerilog: How do I identify packages being imported into a module?]]&lt;br /&gt;
* [[SystemVerilog &amp;quot;std&amp;quot; package | SystemVerilog: Support for SystemVerilog semaphore/process/mailbox constructs.]]&lt;br /&gt;
* [[Top level module with interface ports | SystemVerilog: Support for SystemVerilog top level module with interface ports.]]&lt;br /&gt;
* [[Design with VHDL-1993 and VHDL-2008 files | VHDL: VHDL-1993 and VHDL-2008 each has its own IEEE library set. How do I analyze/elaborate a design with a mixture of files of different VHDL dialects (1993 and 2008)?]]&lt;br /&gt;
* [[Prettyprint to a string | Verilog/VHDL: How to prettyprint a parsetree node to a string.]]&lt;br /&gt;
* [[Static elaboration | Verilog/VHDL: What does 'static elaboration' do?]]&lt;br /&gt;
* [[What VeriModule* or VhdlPrimaryUnit* the Netlist comes from? | Verilog/VHDL: For a Netlist in the netlist database, is there a clean way to look back at what VeriModule* or VhdlPrimaryUnit* the Netlist was derived from?]]&lt;br /&gt;
* [[Cross-reference between the original RTL files and the elaborated netlist | Verilog/VHDL: Is there a way to cross-reference between the original RTL design files and the elaboration netlist?]]&lt;br /&gt;
* [[How to ignore parameters/generics in elaboration | Verilog/VHDL: Is there a way to tell the elaborator to ignore certain parameters/generics so that the unit/module is not uniquified?]]&lt;br /&gt;
* [[How to check for errors in analysis/elaboration | Verilog/VHDL: Is there a way to tell if the analysis/elaboration process has errors?]]&lt;br /&gt;
* [[Modules/design units with &amp;quot;_default&amp;quot; suffix in their names | Verilog/VHDL: After static elaboration, there are modules/design units with &amp;quot;_default&amp;quot; suffix in their names. Why? And what are they?]]&lt;br /&gt;
* [[Support IEEE 1735 encryption standard | Verilog/VHDL: Does Verific support IEEE 1735 encryption standard?]]&lt;br /&gt;
'''Netlist Database'''&lt;br /&gt;
&lt;br /&gt;
'''Output'''&lt;br /&gt;
* [[Output file formats | What language formats does Verific support as output?]]&lt;br /&gt;
&lt;br /&gt;
'''Scripting languages: TCL, Perl, Python'''&lt;br /&gt;
* [[What languages can I use with Verific software? | What programming languages can I use with Verific software?]]&lt;br /&gt;
&lt;br /&gt;
'''Code examples'''&lt;br /&gt;
* [[Create a Netlist Database from scratch (not from RTL elaboration) | Database/Perl: Create a Netlist Database from scratch (not from RTL elaboration)]]&lt;br /&gt;
* [[Write out an encrypted netlist | Database/C++: Write out an encrypted netlist]]&lt;br /&gt;
* [[Extract clock enable | Database/C++: Extract clock enable]]&lt;br /&gt;
* [[Process -f file and explore the Netlist Database (C++)| Database/Verilog/C++: Process -f file and explore the Netlist Database]]&lt;br /&gt;
* [[Process -f file and explore the Netlist Database (py)| Database/Verilog/Python: Process -f file and explore the Netlist Database]]&lt;br /&gt;
* [[Statically elaborate with different values of parameters | Verilog/C++: Statically elaborate with different values of parameters]]&lt;br /&gt;
* [[Type Range example | Verilog/C++: Type Range Example]]&lt;br /&gt;
* [[Macro Callback example | Verilog/C++: Macro Callback example]]&lt;br /&gt;
* [[Test-based design modification | Verilog/C++: Test-based design modification]] &lt;br /&gt;
*[[Access attributes of ports in parsetree | Verilog/Perl: Access attributes of ports in parsetree]]&lt;br /&gt;
* [[Retrieve package name for user-defined variable types | SystemVerilog/C++/Python: Retrieve package name for user-defined variable types]]&lt;br /&gt;
* [[Pretty-print a module and the packages imported by the module | SystemVerilog/C++: Pretty-print a module and the packages imported by the module]]&lt;br /&gt;
* [[How to get packed dimensions of enum | SystemVerilog/C++: How to get packed dimensions of enum]]&lt;br /&gt;
* [[Traverse instances in parsetree | Verilog/VHDL/C++: Traverse instances in parsetree]]&lt;/div&gt;</summary>
		<author><name>Amber</name></author>	</entry>

	<entry>
		<id>https://www.verific.com/faq/index.php?title=Test-based_design_modification&amp;diff=414</id>
		<title>Test-based design modification</title>
		<link rel="alternate" type="text/html" href="https://www.verific.com/faq/index.php?title=Test-based_design_modification&amp;diff=414"/>
				<updated>2019-07-18T21:00:23Z</updated>
		
		<summary type="html">&lt;p&gt;Amber: Created page with &amp;quot;C++:  &amp;lt;nowiki&amp;gt; #include &amp;lt;iostream&amp;gt;  #include &amp;quot;veri_file.h&amp;quot;  #include &amp;quot;VeriModule.h&amp;quot; #include &amp;quot;VeriStatement.h&amp;quot;  #include &amp;quot;Array.h&amp;quot;  #include &amp;quot;Strings.h&amp;quot; #include &amp;quot;TextBasedDes...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;C++:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;veri_file.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;VeriModule.h&amp;quot;&lt;br /&gt;
#include &amp;quot;VeriStatement.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;Array.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;Strings.h&amp;quot;&lt;br /&gt;
#include &amp;quot;TextBasedDesignMod.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;
void CommentStmtInParseTree(VeriModule *mod)&lt;br /&gt;
{&lt;br /&gt;
    if (!mod) return ;&lt;br /&gt;
&lt;br /&gt;
    Array *mod_items = mod-&amp;gt;GetModuleItems() ;&lt;br /&gt;
    unsigned i ;&lt;br /&gt;
    VeriModuleItem *item ;&lt;br /&gt;
    FOREACH_ARRAY_ITEM(mod_items, i, item) {&lt;br /&gt;
        if (!item) continue ;&lt;br /&gt;
        // Get statement from the module item (initial block)&lt;br /&gt;
        VeriStatement *stmt = item-&amp;gt;GetStmt() ;&lt;br /&gt;
        if (!stmt) continue ;&lt;br /&gt;
        // Get all statements from the statement (squential block in initial block)&lt;br /&gt;
        Array *stmts = stmt-&amp;gt;GetStatements() ;&lt;br /&gt;
        if (stmts) {&lt;br /&gt;
            unsigned j ;&lt;br /&gt;
            VeriStatement *child ;&lt;br /&gt;
            // Iterate over the child statement:&lt;br /&gt;
            FOREACH_ARRAY_ITEM(stmts, j, child) {&lt;br /&gt;
                if (!child) continue ;&lt;br /&gt;
                // Get the string of the statement:&lt;br /&gt;
                char *tmp = child-&amp;gt;GetPrettyPrintedString() ;&lt;br /&gt;
                // Remove the last new-line:&lt;br /&gt;
                unsigned len = Strings::len(tmp) ;&lt;br /&gt;
                if (!tmp || !len) continue ;&lt;br /&gt;
                if (tmp[len-1] == '\n') tmp[len-1] = '\0' ;&lt;br /&gt;
                // Comment out the string:&lt;br /&gt;
                char *str = Strings::save(&amp;quot;/* &amp;quot;, tmp, &amp;quot; */&amp;quot;) ;&lt;br /&gt;
                Strings::free(tmp) ;&lt;br /&gt;
                // Create a null statement:&lt;br /&gt;
                VeriStatement *new_stmt = new VeriNullStatement() ;&lt;br /&gt;
                new_stmt-&amp;gt;SetLinefile(child-&amp;gt;Linefile()) ;&lt;br /&gt;
                // Create a comment node with the comment string:&lt;br /&gt;
                VeriCommentNode *comment = new VeriCommentNode(child-&amp;gt;Linefile()) ;&lt;br /&gt;
                comment-&amp;gt;AppendComment(str) ;&lt;br /&gt;
                Strings::free(str) ;&lt;br /&gt;
                // Add the comment on the null-statement:&lt;br /&gt;
                Array *comments = new Array(1) ;&lt;br /&gt;
                comments-&amp;gt;InsertLast(comment) ;&lt;br /&gt;
                new_stmt-&amp;gt;AddComments(comments) ;&lt;br /&gt;
                // Finally replace the original statement with the created null-statement:&lt;br /&gt;
                if (!stmt-&amp;gt;ReplaceChildStmt(child, new_stmt, 1 /* delete old stmt */)) delete new_stmt ;&lt;br /&gt;
            }&lt;br /&gt;
        } else {&lt;br /&gt;
                // Get the string of the statement:&lt;br /&gt;
            char *tmp = stmt-&amp;gt;GetPrettyPrintedString() ;&lt;br /&gt;
                // Remove the last new-line:&lt;br /&gt;
            unsigned len = Strings::len(tmp) ;&lt;br /&gt;
            if (!tmp || !len) continue ;&lt;br /&gt;
            if (tmp[len-1] == '\n') tmp[len-1] = '\0' ;&lt;br /&gt;
                // Comment out the string:&lt;br /&gt;
            char *str = Strings::save(&amp;quot;/* &amp;quot;, tmp, &amp;quot; */&amp;quot;) ;&lt;br /&gt;
            Strings::free(tmp) ;&lt;br /&gt;
                // Create a null statement:&lt;br /&gt;
            VeriStatement *new_stmt = new VeriNullStatement() ;&lt;br /&gt;
            new_stmt-&amp;gt;SetLinefile(stmt-&amp;gt;Linefile()) ;&lt;br /&gt;
            // Create a comment node with the comment string:&lt;br /&gt;
            VeriCommentNode *comment = new VeriCommentNode(stmt-&amp;gt;Linefile()) ;&lt;br /&gt;
            comment-&amp;gt;AppendComment(str) ;&lt;br /&gt;
            Strings::free(str) ;&lt;br /&gt;
            // Add the comment on the null-statement:&lt;br /&gt;
            Array *comments = new Array(1) ;&lt;br /&gt;
            comments-&amp;gt;InsertLast(comment) ;&lt;br /&gt;
            new_stmt-&amp;gt;AddComments(comments) ;&lt;br /&gt;
            // Finally replace the original statement with the created null-statement:&lt;br /&gt;
            if (!item-&amp;gt;ReplaceChildStmt(stmt, new_stmt, 1 /* delete old stmt */)) delete new_stmt ;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    veri_file::PrettyPrint(&amp;quot;test_pp.v.golden.new&amp;quot;, 0) ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void CommentStmtViaTBDM(VeriModule *mod, TextBasedDesignMod &amp;amp;tbdm)&lt;br /&gt;
{&lt;br /&gt;
    if (!mod) return ;&lt;br /&gt;
&lt;br /&gt;
    Array *mod_items = mod-&amp;gt;GetModuleItems() ;&lt;br /&gt;
    unsigned i ;&lt;br /&gt;
    VeriModuleItem *item ;&lt;br /&gt;
    FOREACH_ARRAY_ITEM(mod_items, i, item) {&lt;br /&gt;
        if (!item) continue ;&lt;br /&gt;
        // Get statement from the module item (initial block)&lt;br /&gt;
        VeriStatement *stmt = item-&amp;gt;GetStmt() ;&lt;br /&gt;
        if (!stmt) continue ;&lt;br /&gt;
        // Get all statements from the statement (squential block in initial block)&lt;br /&gt;
        Array *stmts = stmt-&amp;gt;GetStatements() ;&lt;br /&gt;
        if (stmts) {&lt;br /&gt;
            unsigned j ;&lt;br /&gt;
            VeriStatement *child ;&lt;br /&gt;
            // Iterate over the child statement:&lt;br /&gt;
            FOREACH_ARRAY_ITEM(stmts, j, child) {&lt;br /&gt;
                if (!child) continue ;&lt;br /&gt;
                // Comment the whole statement:&lt;br /&gt;
                tbdm.InsertBefore(child-&amp;gt;Linefile(), &amp;quot;; /* &amp;quot;) ;&lt;br /&gt;
                tbdm.InsertAfter(child-&amp;gt;Linefile(), &amp;quot; */&amp;quot;) ;&lt;br /&gt;
            }&lt;br /&gt;
        } else {&lt;br /&gt;
            // Comment the whole statement:&lt;br /&gt;
            tbdm.InsertBefore(stmt-&amp;gt;Linefile(), &amp;quot;; /* &amp;quot;) ;&lt;br /&gt;
            tbdm.InsertAfter(stmt-&amp;gt;Linefile(), &amp;quot; */&amp;quot;) ;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(int argc, const char **argv)&lt;br /&gt;
{&lt;br /&gt;
    if (!veri_file::Analyze(&amp;quot;test.v&amp;quot;)) return 1 ;&lt;br /&gt;
&lt;br /&gt;
    VeriModule *mod = veri_file::GetModule(&amp;quot;test&amp;quot;) ;&lt;br /&gt;
    if (!mod) return 2 ;&lt;br /&gt;
&lt;br /&gt;
    CommentStmtInParseTree(mod) ;&lt;br /&gt;
&lt;br /&gt;
    TextBasedDesignMod tbdm(0) ;&lt;br /&gt;
    CommentStmtViaTBDM(mod, tbdm) ;&lt;br /&gt;
    tbdm.WriteFile(&amp;quot;test.v&amp;quot;, &amp;quot;test_out.v.golden.new&amp;quot;) ;&lt;br /&gt;
&lt;br /&gt;
    return 0 ;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Input Verilog:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
module test ;&lt;br /&gt;
    reg A, b ;&lt;br /&gt;
    initial&lt;br /&gt;
        A = b ;&lt;br /&gt;
    initial&lt;br /&gt;
    begin&lt;br /&gt;
        A = b ;&lt;br /&gt;
    end&lt;br /&gt;
endmodule&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Output Verilog:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
module test ;&lt;br /&gt;
    reg A, b ;&lt;br /&gt;
    initial&lt;br /&gt;
        ; /* A = b ; */&lt;br /&gt;
    initial&lt;br /&gt;
    begin&lt;br /&gt;
        ; /* A = b ; */&lt;br /&gt;
    end&lt;br /&gt;
endmodule&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Amber</name></author>	</entry>

	<entry>
		<id>https://www.verific.com/faq/index.php?title=Main_Page&amp;diff=413</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.verific.com/faq/index.php?title=Main_Page&amp;diff=413"/>
				<updated>2019-07-18T20:55:06Z</updated>
		
		<summary type="html">&lt;p&gt;Amber: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''General'''&lt;br /&gt;
* [[How to get best support from Verific | '''''How to get best support from Verific''''']]&lt;br /&gt;
* [[Original RTL language | How do I know what language a Netlist in the netlist database comes from?]]&lt;br /&gt;
* [[Verific data structures | What are the data structures in Verific?]]&lt;br /&gt;
* [[Remove Verific data structures | How do I remove all Verific data structures in memory?]]&lt;br /&gt;
* [[Does Verific build CDFG? | Does Verific build control and data flow graph (CDFG)?]]&lt;br /&gt;
* [[Does Verific support XMR?| Does Verific support cross module references (XMR)?]]&lt;br /&gt;
* [[Compile-time/run-time flags | Are there options to control Verific software's behavior? Compile-time &amp;amp; run-time flags.]]&lt;br /&gt;
* [[Message handling | How do I downgrade/upgrade messages from Verific? ]]&lt;br /&gt;
* [[Release version | How do I tell the version of a Verific software release? ]]&lt;br /&gt;
* [[Tcl library path| How to correct building (linking) issue &amp;quot;/usr/bin/ld: cannot find -ltcl&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
'''Input: VHDL, Verilog (and SystemVerilog), Liberty, EDIF'''&lt;br /&gt;
* [[How to get all Verilog files being analyzed | Verilog: I'm using -v, -y, .... After Verific is done with the analysis, how do I get a list of all the files being analyzed?]]&lt;br /&gt;
* [[Included files associated with a Verilog source file | Verilog: How do I get the list of included files associated with a Verilog source file?]]&lt;br /&gt;
* [[How to get type/initial value of parameters | Verilog: How to get type/initial value of parameters.]]&lt;br /&gt;
* [[Verilog ports being renamed | Verilog: Why are the ports in original Verilog file renamed to p1, p2, ....?]]&lt;br /&gt;
* [[Design with System Verilog and Verilog 2001 files | Verilog: For a design consisting of a mixture of Verilog 2001 and SystemVerilog input files, should I parse all the files as SystemVerilog?]]&lt;br /&gt;
* [[How to get module ports from Verilog parsetree | Verilog: From the Verilog parsetree, how can I get the ports of a module?]]&lt;br /&gt;
* [[How to change name of id in Verilog parsetree | Verilog: How do I change the name of an id (VeriidDef) in Verilog parsetree?]]&lt;br /&gt;
* [[How to get library containing nested module | Verilog: How do I get the library that contains the module nested inside another module?]]&lt;br /&gt;
* [[How to get linefile information of macro definitions | Verilog: How do I get linefile information of macro definitions?]]&lt;br /&gt;
* [[How to find port dimensions | Verilog: How do I get port dimensions?]]&lt;br /&gt;
* [[Instance - Module binding order | Verilog: What is the order of binding modules to instances?]]&lt;br /&gt;
* [[Constant expression replacement | Verilog: Does Verific replace constant expressions with their respective values?]]&lt;br /&gt;
* [[Defined macros become undefined - MFCU vs SFCU | SystemVerilog: Why does Verific complain about undefined macros for macros defined in a different file (Compilation Unit)?]]&lt;br /&gt;
* [[How to get enums from Verilog parsetree | SystemVerilog: From the parsetree, how can I get the enums declared in a module?]]&lt;br /&gt;
* [[How to identify packages being imported into a module | SystemVerilog: How do I identify packages being imported into a module?]]&lt;br /&gt;
* [[SystemVerilog &amp;quot;std&amp;quot; package | SystemVerilog: Support for SystemVerilog semaphore/process/mailbox constructs.]]&lt;br /&gt;
* [[Top level module with interface ports | SystemVerilog: Support for SystemVerilog top level module with interface ports.]]&lt;br /&gt;
* [[Design with VHDL-1993 and VHDL-2008 files | VHDL: VHDL-1993 and VHDL-2008 each has its own IEEE library set. How do I analyze/elaborate a design with a mixture of files of different VHDL dialects (1993 and 2008)?]]&lt;br /&gt;
* [[Prettyprint to a string | Verilog/VHDL: How to prettyprint a parsetree node to a string.]]&lt;br /&gt;
* [[Static elaboration | Verilog/VHDL: What does 'static elaboration' do?]]&lt;br /&gt;
* [[What VeriModule* or VhdlPrimaryUnit* the Netlist comes from? | Verilog/VHDL: For a Netlist in the netlist database, is there a clean way to look back at what VeriModule* or VhdlPrimaryUnit* the Netlist was derived from?]]&lt;br /&gt;
* [[Cross-reference between the original RTL files and the elaborated netlist | Verilog/VHDL: Is there a way to cross-reference between the original RTL design files and the elaboration netlist?]]&lt;br /&gt;
* [[How to ignore parameters/generics in elaboration | Verilog/VHDL: Is there a way to tell the elaborator to ignore certain parameters/generics so that the unit/module is not uniquified?]]&lt;br /&gt;
* [[How to check for errors in analysis/elaboration | Verilog/VHDL: Is there a way to tell if the analysis/elaboration process has errors?]]&lt;br /&gt;
* [[Modules/design units with &amp;quot;_default&amp;quot; suffix in their names | Verilog/VHDL: After static elaboration, there are modules/design units with &amp;quot;_default&amp;quot; suffix in their names. Why? And what are they?]]&lt;br /&gt;
* [[Support IEEE 1735 encryption standard | Verilog/VHDL: Does Verific support IEEE 1735 encryption standard?]]&lt;br /&gt;
'''Netlist Database'''&lt;br /&gt;
&lt;br /&gt;
'''Output'''&lt;br /&gt;
* [[Output file formats | What language formats does Verific support as output?]]&lt;br /&gt;
&lt;br /&gt;
'''Scripting languages: TCL, Perl, Python'''&lt;br /&gt;
* [[What languages can I use with Verific software? | What programming languages can I use with Verific software?]]&lt;br /&gt;
&lt;br /&gt;
'''Code examples'''&lt;br /&gt;
* [[Create a Netlist Database from scratch (not from RTL elaboration) | Database/Perl: Create a Netlist Database from scratch (not from RTL elaboration)]]&lt;br /&gt;
* [[Write out an encrypted netlist | Database/C++: Write out an encrypted netlist]]&lt;br /&gt;
* [[Extract clock enable | Database/C++: Extract clock enable]]&lt;br /&gt;
* [[Process -f file and explore the Netlist Database (C++)| Database/Verilog/C++: Process -f file and explore the Netlist Database]]&lt;br /&gt;
* [[Process -f file and explore the Netlist Database (py)| Database/Verilog/Python: Process -f file and explore the Netlist Database]]&lt;br /&gt;
* [[Statically elaborate with different values of parameters | Verilog/C++: Statically elaborate with different values of parameters]]&lt;br /&gt;
* [[Type Range example | Verilog/C++: Type Range Example]]&lt;br /&gt;
* [[Macro Callback example | Verilog/C++: Macro Callback example]]&lt;br /&gt;
* [[test-based design modification | Verilog/C++: test-based design modification]] &lt;br /&gt;
*[[Access attributes of ports in parsetree | Verilog/Perl: Access attributes of ports in parsetree]]&lt;br /&gt;
* [[Retrieve package name for user-defined variable types | SystemVerilog/C++/Python: Retrieve package name for user-defined variable types]]&lt;br /&gt;
* [[Pretty-print a module and the packages imported by the module | SystemVerilog/C++: Pretty-print a module and the packages imported by the module]]&lt;br /&gt;
* [[How to get packed dimensions of enum | SystemVerilog/C++: How to get packed dimensions of enum]]&lt;br /&gt;
* [[Traverse instances in parsetree | Verilog/VHDL/C++: Traverse instances in parsetree]]&lt;/div&gt;</summary>
		<author><name>Amber</name></author>	</entry>

	<entry>
		<id>https://www.verific.com/faq/index.php?title=Type_Range_example&amp;diff=412</id>
		<title>Type Range example</title>
		<link rel="alternate" type="text/html" href="https://www.verific.com/faq/index.php?title=Type_Range_example&amp;diff=412"/>
				<updated>2019-07-16T23:41:31Z</updated>
		
		<summary type="html">&lt;p&gt;Amber: Created page with &amp;quot;C++:  &amp;lt;nowiki&amp;gt; /*  *  * (c) Copyright 1999 - 2019 Verific Design Automation Inc.  * All rights reserved.  *  * This source code belongs to Verific Design Automation Inc.  * It...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;C++:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 *&lt;br /&gt;
 * (c) Copyright 1999 - 2019 Verific Design Automation Inc.&lt;br /&gt;
 * All rights reserved.&lt;br /&gt;
 *&lt;br /&gt;
 * This source code belongs to Verific Design Automation Inc.&lt;br /&gt;
 * It is considered trade secret and confidential, and is not to be used&lt;br /&gt;
 * by parties who have not received written authorization&lt;br /&gt;
 * from Verific Design Automation Inc.&lt;br /&gt;
 *&lt;br /&gt;
 * Only authorized users are allowed to use, copy and modify&lt;br /&gt;
 * this software provided that the above copyright notice&lt;br /&gt;
 * remains in all copies of this software.&lt;br /&gt;
 *&lt;br /&gt;
 *&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;Map.h&amp;quot;         // Make associated hash table class Map available&lt;br /&gt;
#include &amp;quot;Set.h&amp;quot;         // Make associated hash table class Set available&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;Message.h&amp;quot;     // Make message handlers available&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;veri_file.h&amp;quot;   // Make verilog reader available&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;DataBase.h&amp;quot;    // Make (hierarchical netlist) database API available&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;
int main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
    RuntimeFlags::SetVar(&amp;quot;db_add_id_vs_netbus_map&amp;quot;, 1) ;&lt;br /&gt;
&lt;br /&gt;
    // Now read in top-level design. In case of failure return.&lt;br /&gt;
    if (!veri_file::Read(&amp;quot;test.sv&amp;quot;, &amp;quot;work&amp;quot;, veri_file::SYSTEM_VERILOG)) {&lt;br /&gt;
        // Here, design analysis and elaboration failed&lt;br /&gt;
        return 1 ;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Get a handle to the top-level netlist&lt;br /&gt;
    Netlist *top = Netlist::PresentDesign() ;&lt;br /&gt;
    if (!top) {&lt;br /&gt;
        Message::PrintLine(&amp;quot;cannot find any handle to the top-level netlist&amp;quot;) ;&lt;br /&gt;
        return 4 ;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Print out module that we have handle to&lt;br /&gt;
    Message::Msg(VERIFIC_INFO, 0, top-&amp;gt;Linefile(), &amp;quot;top level design is %s(%s)&amp;quot;,&lt;br /&gt;
                 top-&amp;gt;Owner()-&amp;gt;Name(), top-&amp;gt;Name()) ;&lt;br /&gt;
&lt;br /&gt;
    // Get the id_vs_netbus table&lt;br /&gt;
    const Set *out_nets = top-&amp;gt;GetIdNets(&amp;quot;out&amp;quot;) ;&lt;br /&gt;
    if (!out_nets) {&lt;br /&gt;
        Message::PrintLine(&amp;quot;No nets associated with identifier out&amp;quot;) ;&lt;br /&gt;
        return 5 ;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    SetIter si ;&lt;br /&gt;
    DesignObj *net_obj ;&lt;br /&gt;
    FOREACH_SET_ITEM(out_nets, si, &amp;amp;net_obj) {&lt;br /&gt;
        if (!net_obj) continue ;&lt;br /&gt;
        net_obj-&amp;gt;Info(&amp;quot;Net object name: %s, %s&amp;quot;, net_obj-&amp;gt;Name(), net_obj-&amp;gt;IsNet() ? &amp;quot;net&amp;quot; : &amp;quot;netbus&amp;quot;) ;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // All done.  Wasn't that easy ?&lt;br /&gt;
    return 0 ;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Input Verilog:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
module struct_test(in, clk, out);&lt;br /&gt;
typedef struct {&lt;br /&gt;
    logic a;&lt;br /&gt;
    logic b;&lt;br /&gt;
    logic [5:4] c [4:0];&lt;br /&gt;
} my_struct;&lt;br /&gt;
&lt;br /&gt;
input my_struct in [2:0];&lt;br /&gt;
output my_struct out [2:0];&lt;br /&gt;
input clk;&lt;br /&gt;
&lt;br /&gt;
my_struct r [2:0];&lt;br /&gt;
always@(posedge clk)&lt;br /&gt;
    r &amp;lt;= in;&lt;br /&gt;
assign out = r;&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;
-- Analyzing Verilog file 'test.sv' (VERI-1482)&lt;br /&gt;
test.sv(1): INFO: compiling module 'struct_test' (VERI-1018)&lt;br /&gt;
test.sv(1): INFO: top level design is struct_test()&lt;br /&gt;
test.sv(9): INFO: Net object name: out[2].a, net&lt;br /&gt;
test.sv(9): INFO: Net object name: out[2].b, net&lt;br /&gt;
test.sv(9): INFO: Net object name: out[2].c[4], netbus&lt;br /&gt;
test.sv(9): INFO: Net object name: out[2].c[3], netbus&lt;br /&gt;
test.sv(9): INFO: Net object name: out[2].c[2], netbus&lt;br /&gt;
test.sv(9): INFO: Net object name: out[2].c[1], netbus&lt;br /&gt;
test.sv(9): INFO: Net object name: out[2].c[0], netbus&lt;br /&gt;
test.sv(9): INFO: Net object name: out[1].a, net&lt;br /&gt;
test.sv(9): INFO: Net object name: out[1].b, net&lt;br /&gt;
test.sv(9): INFO: Net object name: out[1].c[4], netbus&lt;br /&gt;
test.sv(9): INFO: Net object name: out[1].c[3], netbus&lt;br /&gt;
test.sv(9): INFO: Net object name: out[1].c[2], netbus&lt;br /&gt;
test.sv(9): INFO: Net object name: out[1].c[1], netbus&lt;br /&gt;
test.sv(9): INFO: Net object name: out[1].c[0], netbus&lt;br /&gt;
test.sv(9): INFO: Net object name: out[0].a, net&lt;br /&gt;
test.sv(9): INFO: Net object name: out[0].b, net&lt;br /&gt;
test.sv(9): INFO: Net object name: out[0].c[4], netbus&lt;br /&gt;
test.sv(9): INFO: Net object name: out[0].c[3], netbus&lt;br /&gt;
test.sv(9): INFO: Net object name: out[0].c[2], netbus&lt;br /&gt;
test.sv(9): INFO: Net object name: out[0].c[1], netbus&lt;br /&gt;
test.sv(9): INFO: Net object name: out[0].c[0], netbus&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Amber</name></author>	</entry>

	<entry>
		<id>https://www.verific.com/faq/index.php?title=Main_Page&amp;diff=411</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.verific.com/faq/index.php?title=Main_Page&amp;diff=411"/>
				<updated>2019-07-16T23:34:57Z</updated>
		
		<summary type="html">&lt;p&gt;Amber: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''General'''&lt;br /&gt;
* [[How to get best support from Verific | '''''How to get best support from Verific''''']]&lt;br /&gt;
* [[Original RTL language | How do I know what language a Netlist in the netlist database comes from?]]&lt;br /&gt;
* [[Verific data structures | What are the data structures in Verific?]]&lt;br /&gt;
* [[Remove Verific data structures | How do I remove all Verific data structures in memory?]]&lt;br /&gt;
* [[Does Verific build CDFG? | Does Verific build control and data flow graph (CDFG)?]]&lt;br /&gt;
* [[Does Verific support XMR?| Does Verific support cross module references (XMR)?]]&lt;br /&gt;
* [[Compile-time/run-time flags | Are there options to control Verific software's behavior? Compile-time &amp;amp; run-time flags.]]&lt;br /&gt;
* [[Message handling | How do I downgrade/upgrade messages from Verific? ]]&lt;br /&gt;
* [[Release version | How do I tell the version of a Verific software release? ]]&lt;br /&gt;
* [[Tcl library path| How to correct building (linking) issue &amp;quot;/usr/bin/ld: cannot find -ltcl&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
'''Input: VHDL, Verilog (and SystemVerilog), Liberty, EDIF'''&lt;br /&gt;
* [[How to get all Verilog files being analyzed | Verilog: I'm using -v, -y, .... After Verific is done with the analysis, how do I get a list of all the files being analyzed?]]&lt;br /&gt;
* [[Included files associated with a Verilog source file | Verilog: How do I get the list of included files associated with a Verilog source file?]]&lt;br /&gt;
* [[How to get type/initial value of parameters | Verilog: How to get type/initial value of parameters.]]&lt;br /&gt;
* [[Verilog ports being renamed | Verilog: Why are the ports in original Verilog file renamed to p1, p2, ....?]]&lt;br /&gt;
* [[Design with System Verilog and Verilog 2001 files | Verilog: For a design consisting of a mixture of Verilog 2001 and SystemVerilog input files, should I parse all the files as SystemVerilog?]]&lt;br /&gt;
* [[How to get module ports from Verilog parsetree | Verilog: From the Verilog parsetree, how can I get the ports of a module?]]&lt;br /&gt;
* [[How to change name of id in Verilog parsetree | Verilog: How do I change the name of an id (VeriidDef) in Verilog parsetree?]]&lt;br /&gt;
* [[How to get library containing nested module | Verilog: How do I get the library that contains the module nested inside another module?]]&lt;br /&gt;
* [[How to get linefile information of macro definitions | Verilog: How do I get linefile information of macro definitions?]]&lt;br /&gt;
* [[How to find port dimensions | Verilog: How do I get port dimensions?]]&lt;br /&gt;
* [[Instance - Module binding order | Verilog: What is the order of binding modules to instances?]]&lt;br /&gt;
* [[Constant expression replacement | Verilog: Does Verific replace constant expressions with their respective values?]]&lt;br /&gt;
* [[Defined macros become undefined - MFCU vs SFCU | SystemVerilog: Why does Verific complain about undefined macros for macros defined in a different file (Compilation Unit)?]]&lt;br /&gt;
* [[How to get enums from Verilog parsetree | SystemVerilog: From the parsetree, how can I get the enums declared in a module?]]&lt;br /&gt;
* [[How to identify packages being imported into a module | SystemVerilog: How do I identify packages being imported into a module?]]&lt;br /&gt;
* [[SystemVerilog &amp;quot;std&amp;quot; package | SystemVerilog: Support for SystemVerilog semaphore/process/mailbox constructs.]]&lt;br /&gt;
* [[Top level module with interface ports | SystemVerilog: Support for SystemVerilog top level module with interface ports.]]&lt;br /&gt;
* [[Design with VHDL-1993 and VHDL-2008 files | VHDL: VHDL-1993 and VHDL-2008 each has its own IEEE library set. How do I analyze/elaborate a design with a mixture of files of different VHDL dialects (1993 and 2008)?]]&lt;br /&gt;
* [[Prettyprint to a string | Verilog/VHDL: How to prettyprint a parsetree node to a string.]]&lt;br /&gt;
* [[Static elaboration | Verilog/VHDL: What does 'static elaboration' do?]]&lt;br /&gt;
* [[What VeriModule* or VhdlPrimaryUnit* the Netlist comes from? | Verilog/VHDL: For a Netlist in the netlist database, is there a clean way to look back at what VeriModule* or VhdlPrimaryUnit* the Netlist was derived from?]]&lt;br /&gt;
* [[Cross-reference between the original RTL files and the elaborated netlist | Verilog/VHDL: Is there a way to cross-reference between the original RTL design files and the elaboration netlist?]]&lt;br /&gt;
* [[How to ignore parameters/generics in elaboration | Verilog/VHDL: Is there a way to tell the elaborator to ignore certain parameters/generics so that the unit/module is not uniquified?]]&lt;br /&gt;
* [[How to check for errors in analysis/elaboration | Verilog/VHDL: Is there a way to tell if the analysis/elaboration process has errors?]]&lt;br /&gt;
* [[Modules/design units with &amp;quot;_default&amp;quot; suffix in their names | Verilog/VHDL: After static elaboration, there are modules/design units with &amp;quot;_default&amp;quot; suffix in their names. Why? And what are they?]]&lt;br /&gt;
* [[Support IEEE 1735 encryption standard | Verilog/VHDL: Does Verific support IEEE 1735 encryption standard?]]&lt;br /&gt;
'''Netlist Database'''&lt;br /&gt;
&lt;br /&gt;
'''Output'''&lt;br /&gt;
* [[Output file formats | What language formats does Verific support as output?]]&lt;br /&gt;
&lt;br /&gt;
'''Scripting languages: TCL, Perl, Python'''&lt;br /&gt;
* [[What languages can I use with Verific software? | What programming languages can I use with Verific software?]]&lt;br /&gt;
&lt;br /&gt;
'''Code examples'''&lt;br /&gt;
* [[Create a Netlist Database from scratch (not from RTL elaboration) | Database/Perl: Create a Netlist Database from scratch (not from RTL elaboration)]]&lt;br /&gt;
* [[Write out an encrypted netlist | Database/C++: Write out an encrypted netlist]]&lt;br /&gt;
* [[Extract clock enable | Database/C++: Extract clock enable]]&lt;br /&gt;
* [[Process -f file and explore the Netlist Database (C++)| Database/Verilog/C++: Process -f file and explore the Netlist Database]]&lt;br /&gt;
* [[Process -f file and explore the Netlist Database (py)| Database/Verilog/Python: Process -f file and explore the Netlist Database]]&lt;br /&gt;
* [[Statically elaborate with different values of parameters | Verilog/C++: Statically elaborate with different values of parameters]]&lt;br /&gt;
* [[Type Range example | Verilog/C++: Type Range Example]]&lt;br /&gt;
* [[Macro Callback example | Verilog/C++: Macro Callback example]]&lt;br /&gt;
* [[Access attributes of ports in parsetree | Verilog/Perl: Access attributes of ports in parsetree]]&lt;br /&gt;
* [[Retrieve package name for user-defined variable types | SystemVerilog/C++/Python: Retrieve package name for user-defined variable types]]&lt;br /&gt;
* [[Pretty-print a module and the packages imported by the module | SystemVerilog/C++: Pretty-print a module and the packages imported by the module]]&lt;br /&gt;
* [[How to get packed dimensions of enum | SystemVerilog/C++: How to get packed dimensions of enum]]&lt;br /&gt;
* [[Traverse instances in parsetree | Verilog/VHDL/C++: Traverse instances in parsetree]]&lt;/div&gt;</summary>
		<author><name>Amber</name></author>	</entry>

	<entry>
		<id>https://www.verific.com/faq/index.php?title=Macro_Callback_example&amp;diff=410</id>
		<title>Macro Callback example</title>
		<link rel="alternate" type="text/html" href="https://www.verific.com/faq/index.php?title=Macro_Callback_example&amp;diff=410"/>
				<updated>2019-07-16T23:30:27Z</updated>
		
		<summary type="html">&lt;p&gt;Amber: Created page with &amp;quot;C++:  &amp;lt;nowiki&amp;gt; #include &amp;lt;iostream&amp;gt;  #include &amp;quot;veri_file.h&amp;quot; #include &amp;quot;VeriModule.h&amp;quot; #include &amp;quot;VeriVisitor.h&amp;quot;  #include &amp;quot;Strings.h&amp;quot; #include &amp;quot;LineFile.h&amp;quot; #include &amp;quot;Message.h&amp;quot; #i...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;C++:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;veri_file.h&amp;quot;&lt;br /&gt;
#include &amp;quot;VeriModule.h&amp;quot;&lt;br /&gt;
#include &amp;quot;VeriVisitor.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;Strings.h&amp;quot;&lt;br /&gt;
#include &amp;quot;LineFile.h&amp;quot;&lt;br /&gt;
#include &amp;quot;Message.h&amp;quot;&lt;br /&gt;
#include &amp;quot;TextBasedDesignMod.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;Array.h&amp;quot;&lt;br /&gt;
#include &amp;quot;Map.h&amp;quot;&lt;br /&gt;
#include &amp;quot;Set.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
using namespace std ;&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;
class MyMacroCallBack : public MacroCallBackHandler&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
    MyMacroCallBack() : MacroCallBackHandler(), _last_active_line(0), _last_inactive_line(0) { } &lt;br /&gt;
    virtual ~MyMacroCallBack() { ReportInactiveArea() ; } &lt;br /&gt;
&lt;br /&gt;
public:&lt;br /&gt;
    void ReportInactiveArea()&lt;br /&gt;
    {   &lt;br /&gt;
        if (!_last_active_line || !_last_inactive_line || (_last_active_line &amp;gt; _last_inactive_line)) return ;&lt;br /&gt;
&lt;br /&gt;
        Message::Msg(VERIFIC_INFO, 0, 0, &amp;quot;Inactive area [%d-%d]&amp;quot;, _last_active_line, _last_inactive_line) ;&lt;br /&gt;
&lt;br /&gt;
        _last_active_line = 0 ; &lt;br /&gt;
        _last_active_line = 0 ; &lt;br /&gt;
    }   &lt;br /&gt;
&lt;br /&gt;
    virtual void PredefinedMacroRef(const char *macro_name, unsigned from_active_area, const linefile_type lf) &lt;br /&gt;
    {   &lt;br /&gt;
        //Message::Msg(VERIFIC_INFO, 0, lf, &amp;quot;Macro %s is being refrenced from %s area&amp;quot;, macro_name, ((from_active_area)?&amp;quot;ACTIVE&amp;quot;:&amp;quot;INACTIVE&amp;quot;)) ;&lt;br /&gt;
        if (from_active_area) {&lt;br /&gt;
            if (_last_inactive_line) ReportInactiveArea() ;&lt;br /&gt;
            _last_active_line = LineFile::GetLineNo(lf) ; &lt;br /&gt;
        } else if (_last_active_line) {&lt;br /&gt;
            _last_inactive_line = LineFile::GetLineNo(lf) ;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
protected:&lt;br /&gt;
    unsigned _last_active_line ;&lt;br /&gt;
    unsigned _last_inactive_line ;&lt;br /&gt;
} ;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, const char **argv)&lt;br /&gt;
{&lt;br /&gt;
    MyMacroCallBack mc ;&lt;br /&gt;
    veri_file::RegisterCallBackMacro(&amp;amp;mc) ;&lt;br /&gt;
&lt;br /&gt;
    veri_file::DefineCmdLineMacro(&amp;quot;FORCE_STR&amp;quot;) ;&lt;br /&gt;
&lt;br /&gt;
    Array files(1) ;&lt;br /&gt;
    files.Insert(&amp;quot;test.v&amp;quot;) ;&lt;br /&gt;
    if (!veri_file::AnalyzeMultipleFiles(&amp;amp;files)) return 1 ;&lt;br /&gt;
&lt;br /&gt;
    return 0 ;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Input Verilog:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
module test (in, sel, clk, out);&lt;br /&gt;
    input [1:0] in;&lt;br /&gt;
    input clk,sel;&lt;br /&gt;
    output [1:0] out;&lt;br /&gt;
&lt;br /&gt;
`ifdef FORCE_STR&lt;br /&gt;
    reg [1:0] a0;&lt;br /&gt;
    reg [1:0] a1;&lt;br /&gt;
    always @(posedge clk)&lt;br /&gt;
    begin&lt;br /&gt;
        a0 &amp;lt;= in+1;&lt;br /&gt;
        a1 &amp;lt;= in-1;&lt;br /&gt;
    end&lt;br /&gt;
    assign out = sel?a0:a1;&lt;br /&gt;
&lt;br /&gt;
`else&lt;br /&gt;
    reg [1:0] b0;&lt;br /&gt;
    reg [1:0] b1;&lt;br /&gt;
    always @(posedge clk)&lt;br /&gt;
    begin&lt;br /&gt;
        b0 &amp;lt;= in+2;&lt;br /&gt;
        b1 &amp;lt;= in-2;&lt;br /&gt;
    end&lt;br /&gt;
    assign out = sel?b0:b1;&lt;br /&gt;
&lt;br /&gt;
`endif&lt;br /&gt;
&lt;br /&gt;
`ifndef FORCE_STR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
`else&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
`endif&lt;br /&gt;
&lt;br /&gt;
endmodule &lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
-- Analyzing Verilog file 'test.v' (VERI-1482)&lt;br /&gt;
INFO: Inactive area [16-26]&lt;br /&gt;
INFO: Inactive area [28-32]&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Amber</name></author>	</entry>

	<entry>
		<id>https://www.verific.com/faq/index.php?title=Main_Page&amp;diff=409</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.verific.com/faq/index.php?title=Main_Page&amp;diff=409"/>
				<updated>2019-07-16T23:22:17Z</updated>
		
		<summary type="html">&lt;p&gt;Amber: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''General'''&lt;br /&gt;
* [[How to get best support from Verific | '''''How to get best support from Verific''''']]&lt;br /&gt;
* [[Original RTL language | How do I know what language a Netlist in the netlist database comes from?]]&lt;br /&gt;
* [[Verific data structures | What are the data structures in Verific?]]&lt;br /&gt;
* [[Remove Verific data structures | How do I remove all Verific data structures in memory?]]&lt;br /&gt;
* [[Does Verific build CDFG? | Does Verific build control and data flow graph (CDFG)?]]&lt;br /&gt;
* [[Does Verific support XMR?| Does Verific support cross module references (XMR)?]]&lt;br /&gt;
* [[Compile-time/run-time flags | Are there options to control Verific software's behavior? Compile-time &amp;amp; run-time flags.]]&lt;br /&gt;
* [[Message handling | How do I downgrade/upgrade messages from Verific? ]]&lt;br /&gt;
* [[Release version | How do I tell the version of a Verific software release? ]]&lt;br /&gt;
* [[Tcl library path| How to correct building (linking) issue &amp;quot;/usr/bin/ld: cannot find -ltcl&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
'''Input: VHDL, Verilog (and SystemVerilog), Liberty, EDIF'''&lt;br /&gt;
* [[How to get all Verilog files being analyzed | Verilog: I'm using -v, -y, .... After Verific is done with the analysis, how do I get a list of all the files being analyzed?]]&lt;br /&gt;
* [[Included files associated with a Verilog source file | Verilog: How do I get the list of included files associated with a Verilog source file?]]&lt;br /&gt;
* [[How to get type/initial value of parameters | Verilog: How to get type/initial value of parameters.]]&lt;br /&gt;
* [[Verilog ports being renamed | Verilog: Why are the ports in original Verilog file renamed to p1, p2, ....?]]&lt;br /&gt;
* [[Design with System Verilog and Verilog 2001 files | Verilog: For a design consisting of a mixture of Verilog 2001 and SystemVerilog input files, should I parse all the files as SystemVerilog?]]&lt;br /&gt;
* [[How to get module ports from Verilog parsetree | Verilog: From the Verilog parsetree, how can I get the ports of a module?]]&lt;br /&gt;
* [[How to change name of id in Verilog parsetree | Verilog: How do I change the name of an id (VeriidDef) in Verilog parsetree?]]&lt;br /&gt;
* [[How to get library containing nested module | Verilog: How do I get the library that contains the module nested inside another module?]]&lt;br /&gt;
* [[How to get linefile information of macro definitions | Verilog: How do I get linefile information of macro definitions?]]&lt;br /&gt;
* [[How to find port dimensions | Verilog: How do I get port dimensions?]]&lt;br /&gt;
* [[Instance - Module binding order | Verilog: What is the order of binding modules to instances?]]&lt;br /&gt;
* [[Constant expression replacement | Verilog: Does Verific replace constant expressions with their respective values?]]&lt;br /&gt;
* [[Defined macros become undefined - MFCU vs SFCU | SystemVerilog: Why does Verific complain about undefined macros for macros defined in a different file (Compilation Unit)?]]&lt;br /&gt;
* [[How to get enums from Verilog parsetree | SystemVerilog: From the parsetree, how can I get the enums declared in a module?]]&lt;br /&gt;
* [[How to identify packages being imported into a module | SystemVerilog: How do I identify packages being imported into a module?]]&lt;br /&gt;
* [[SystemVerilog &amp;quot;std&amp;quot; package | SystemVerilog: Support for SystemVerilog semaphore/process/mailbox constructs.]]&lt;br /&gt;
* [[Top level module with interface ports | SystemVerilog: Support for SystemVerilog top level module with interface ports.]]&lt;br /&gt;
* [[Design with VHDL-1993 and VHDL-2008 files | VHDL: VHDL-1993 and VHDL-2008 each has its own IEEE library set. How do I analyze/elaborate a design with a mixture of files of different VHDL dialects (1993 and 2008)?]]&lt;br /&gt;
* [[Prettyprint to a string | Verilog/VHDL: How to prettyprint a parsetree node to a string.]]&lt;br /&gt;
* [[Static elaboration | Verilog/VHDL: What does 'static elaboration' do?]]&lt;br /&gt;
* [[What VeriModule* or VhdlPrimaryUnit* the Netlist comes from? | Verilog/VHDL: For a Netlist in the netlist database, is there a clean way to look back at what VeriModule* or VhdlPrimaryUnit* the Netlist was derived from?]]&lt;br /&gt;
* [[Cross-reference between the original RTL files and the elaborated netlist | Verilog/VHDL: Is there a way to cross-reference between the original RTL design files and the elaboration netlist?]]&lt;br /&gt;
* [[How to ignore parameters/generics in elaboration | Verilog/VHDL: Is there a way to tell the elaborator to ignore certain parameters/generics so that the unit/module is not uniquified?]]&lt;br /&gt;
* [[How to check for errors in analysis/elaboration | Verilog/VHDL: Is there a way to tell if the analysis/elaboration process has errors?]]&lt;br /&gt;
* [[Modules/design units with &amp;quot;_default&amp;quot; suffix in their names | Verilog/VHDL: After static elaboration, there are modules/design units with &amp;quot;_default&amp;quot; suffix in their names. Why? And what are they?]]&lt;br /&gt;
* [[Support IEEE 1735 encryption standard | Verilog/VHDL: Does Verific support IEEE 1735 encryption standard?]]&lt;br /&gt;
'''Netlist Database'''&lt;br /&gt;
&lt;br /&gt;
'''Output'''&lt;br /&gt;
* [[Output file formats | What language formats does Verific support as output?]]&lt;br /&gt;
&lt;br /&gt;
'''Scripting languages: TCL, Perl, Python'''&lt;br /&gt;
* [[What languages can I use with Verific software? | What programming languages can I use with Verific software?]]&lt;br /&gt;
&lt;br /&gt;
'''Code examples'''&lt;br /&gt;
* [[Create a Netlist Database from scratch (not from RTL elaboration) | Database/Perl: Create a Netlist Database from scratch (not from RTL elaboration)]]&lt;br /&gt;
* [[Write out an encrypted netlist | Database/C++: Write out an encrypted netlist]]&lt;br /&gt;
* [[Extract clock enable | Database/C++: Extract clock enable]]&lt;br /&gt;
* [[Process -f file and explore the Netlist Database (C++)| Database/Verilog/C++: Process -f file and explore the Netlist Database]]&lt;br /&gt;
* [[Process -f file and explore the Netlist Database (py)| Database/Verilog/Python: Process -f file and explore the Netlist Database]]&lt;br /&gt;
* [[Statically elaborate with different values of parameters | Verilog/C++: Statically elaborate with different values of parameters]]&lt;br /&gt;
* [[Macro Callback example | Verilog/C++: Macro Callback example]]&lt;br /&gt;
* [[Access attributes of ports in parsetree | Verilog/Perl: Access attributes of ports in parsetree]]&lt;br /&gt;
* [[Retrieve package name for user-defined variable types | SystemVerilog/C++/Python: Retrieve package name for user-defined variable types]]&lt;br /&gt;
* [[Pretty-print a module and the packages imported by the module | SystemVerilog/C++: Pretty-print a module and the packages imported by the module]]&lt;br /&gt;
* [[How to get packed dimensions of enum | SystemVerilog/C++: How to get packed dimensions of enum]]&lt;br /&gt;
* [[Traverse instances in parsetree | Verilog/VHDL/C++: Traverse instances in parsetree]]&lt;/div&gt;</summary>
		<author><name>Amber</name></author>	</entry>

	</feed>