<?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=Logic_optimization_across_hierarchy_boundaries</id>
		<title>Logic optimization across hierarchy boundaries - 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=Logic_optimization_across_hierarchy_boundaries"/>
		<link rel="alternate" type="text/html" href="https://www.verific.com/faq/index.php?title=Logic_optimization_across_hierarchy_boundaries&amp;action=history"/>
		<updated>2026-05-02T12:45:03Z</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=Logic_optimization_across_hierarchy_boundaries&amp;diff=421&amp;oldid=prev</id>
		<title>Hoa at 23:19, 22 July 2019</title>
		<link rel="alternate" type="text/html" href="https://www.verific.com/faq/index.php?title=Logic_optimization_across_hierarchy_boundaries&amp;diff=421&amp;oldid=prev"/>
				<updated>2019-07-22T23:19:45Z</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 23:19, 22 July 2019&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-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&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;'''Q: Does Verific support design optimizations such as constant propagation and dead-code elimination across &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;hierarchies&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;'''Q: Does Verific support design optimizations such as constant propagation and dead-code elimination across &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;hierarchy boundaries&lt;/ins&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;/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;The optimization done during elaboration flow in Verific does not cross hierarchy boundary. This is because Verific netlist database is folded (same netlist may represent more than one instances, although there are compile/runtime flags to force uniquify all instances, those flags normally stay off).&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;The optimization done during elaboration flow in Verific does not cross hierarchy boundary. This is because Verific netlist database is folded (same netlist may represent more than one instances, although there are compile/runtime flags to force uniquify all instances, those flags normally stay off).&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=Logic_optimization_across_hierarchy_boundaries&amp;diff=420&amp;oldid=prev</id>
		<title>Hoa at 23:19, 22 July 2019</title>
		<link rel="alternate" type="text/html" href="https://www.verific.com/faq/index.php?title=Logic_optimization_across_hierarchy_boundaries&amp;diff=420&amp;oldid=prev"/>
				<updated>2019-07-22T23:19:08Z</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 23:19, 22 July 2019&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-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&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;Does Verific support design optimizations such as constant propagation and dead-code elimination across hierarchies?&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;'''Q: &lt;/ins&gt;Does Verific support design optimizations such as constant propagation and dead-code elimination across hierarchies?&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'''&lt;/ins&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;/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;The optimization done during elaboration flow in Verific does not cross hierarchy boundary. This is because Verific netlist database is folded (same netlist may represent more than one instances, although there are compile/runtime flags to force uniquify all instances, those flags normally stay off).&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;The optimization done during elaboration flow in Verific does not cross hierarchy boundary. This is because Verific netlist database is folded (same netlist may represent more than one instances, although there are compile/runtime flags to force uniquify all instances, those flags normally stay off).&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=Logic_optimization_across_hierarchy_boundaries&amp;diff=419&amp;oldid=prev</id>
		<title>Hoa: Created page with &quot;Does Verific support design optimizations such as constant propagation and dead-code elimination across hierarchies?  The optimization done during elaboration flow in Verific...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.verific.com/faq/index.php?title=Logic_optimization_across_hierarchy_boundaries&amp;diff=419&amp;oldid=prev"/>
				<updated>2019-07-22T23:17:55Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;Does Verific support design optimizations such as constant propagation and dead-code elimination across hierarchies?  The optimization done during elaboration flow in Verific...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Does Verific support design optimizations such as constant propagation and dead-code elimination across hierarchies?&lt;br /&gt;
&lt;br /&gt;
The optimization done during elaboration flow in Verific does not cross hierarchy boundary. This is because Verific netlist database is folded (same netlist may represent more than one instances, although there are compile/runtime flags to force uniquify all instances, those flags normally stay off).&lt;br /&gt;
&lt;br /&gt;
However, basic routines being available (to work inside hierarchy), it is not too difficult to extend the work across hierarchy (and uniquify the netlist for the respective instances). In fact, Verific already provides an application example to show how this can be done using Verific netlist database:&lt;br /&gt;
&lt;br /&gt;
Please check the example (in Verific distribution) examples/verilog/propagate_constant_thru_hierarchy. The same can be extended to the dead-code elimination as well.&lt;br /&gt;
&lt;br /&gt;
Word level netlist severely limits the scope of most optimization. For the efficiency of the algorithm, when runtime flag &amp;quot;db_infer_wide_operators&amp;quot; is turned on, even the very first netlist created during elaboration is mostly at word level. There are however some more transformations at the netlist level to increase word level operators (e.g. for latches). This is done under runtime flag &amp;quot;db_infer_wide_operators_post_elaboration&amp;quot;. This is a pure netlist level transformation and can be deferred to a later stage (post optimization across hierarchy).&lt;/div&gt;</summary>
		<author><name>Hoa</name></author>	</entry>

	</feed>