<chapter id="chapter.faq">
  <title>FAQ</title>
  <para>
    This page contains a list of accummulated Frequently Asked Questions. If you are having difficulties using Covered or have questions 
    that are not answered in the User's Guide, please check this list for answers. If you do not find the information that you are 
    looking for in the User's Guide or this FAQ, please send an e-mail to:
  </para>
  <para>
    <email>phase1geo@gmail.com</email>
  </para>
  
  <qandaset>
    <qandaentry>
      <question>
        <para>
          <emphasis role="bold">Is a CDD file generated from a newer version of Covered compatible with a CDD file generated from an older 
          version?</emphasis>
        </para>
      </question>
      <answer>
        <para>
          The answer to this question is, "Well, that depends...". Since the format of the CDD file is only used by Covered, the contents 
          and format of this file may be changed to suit the needs of Covered.  This means that it is possible for a CDD file created from 
          an older version of Covered to be incompatible with a newer version.  Additionally, the developers of Covered will not make any 
          attempts to make sure that older CDD files can be properly read by a newer version of Covered.  It is suggested that any CDD 
          files generated from a particular version of Covered be merged and/or reported on by that same version, and if Covered is 
          upgraded, new CDD files should be generated.
        </para>
        <para>
          This being said, it is also a possibility that between versions of Covered a "backwards compatibility" may be maintained if a 
          change to this file's format is not required.
        </para>
      </answer>
    </qandaentry>
    <qandaentry>
      <question>
        <para>
          <emphasis role="bold">When I run the score command, Covered seems to take a long time to run. Is there anything that I can do to 
          speed up scoring?</emphasis>
        </para>
      </question>
      <answer>
        <para>
          While Covered is continuously being enhanced to provide better performance for all commands (especially the score command), it may 
          still take a while to complete scoring if one or more of the following is true:
        </para>
        <para>
          <orderedlist>
            <listitem><para>The design being scored is sufficiently large</para></listitem>
            <listitem><para>The VCD/LXT2/FST dumpfile is sufficiently large</para></listitem>
            <listitem><para>The VCD/LXT2/FST dumpfile contains dump information for a part of the design not being scored</para></listitem>
            <listitem><para>When Covered was configured, the --enable-debug and/or --enable-profiling options were specified</para></listitem>
          </orderedlist>
        </para>
        <para>
          If reason (1) is true, speeding up each run can be achieved by one of the following suggestions:
        </para>
        <para>
          <itemizedlist>
            <listitem>
              <para>
              Reduce the scored design in size by eliminating modules or constructs from its design tree. (See <xref linkend="section.score.t"/> 
              for more information on how to accomplish this)
              </para>
            </listitem>
            <listitem>
              <para>
                Split up the design into smaller parts along module boundaries and generate coverage for those parts.
              </para>
              <note>
                <para>
                  It is not currently possible to append these modules into one file. Merging and reporting must be done on these smaller 
                  pieces independently from one another.
                </para>
              </note>
            </listitem>
          </itemizedlist>
        </para>
        <para>
          If reason (2) is true, nothing can be done except to shorten the run time of the diagnostics to produce shorter dumpfiles.
        </para>
        <para>
          If reason (3) is true, the $dumpvars call in the simulator should be modified to only generate VCD/LXT2/FST dump information for the 
          modules included in scoring.  If there are modules not being scored which are included in the $dumpvars calls, please remove 
          these unnecessary modules from dumpfile output.
        </para>
        <para>
          If reason (4) is true, Covered should be reconfigured without these options specified. The debugging and profiling facilities 
          are enormous performance degraders and immediate simulation performance enhancement will be seen if Covered is rebuilt without 
          these options specified.
        </para>
        <para>
          If you believe that you have a situation which is void of these prevailing reasons and Covered is still running slowly, please 
          send an e-mail to me.  I will consider these problems to be of lower priority than actual bugs but will look into the situation 
          to see where code can be optimized.
        </para>
      </answer>
    </qandaentry>
    <qandaentry>
      <question>
        <para>
          <emphasis role="bold">I get an assertion error when running Covered, what should I do?</emphasis>
        </para>
      </question>
      <answer>
        <para>
          Covered uses C assertions to make sure that internal pointers are not be referenced when NULL and that certain internal 
          situations do not arise.  If you receive some type of assertion error when running Covered, it means that something went wrong 
          internally in Covered. The error is NOT due to user error.  Please submit a bug report containing the assertion error message, 
          file and line number. Additionally, run the Covered command with the -D global option (covered -D 
          <emphasis>command</emphasis>) and provide the output from doing this with the bug report (please only specify tail of output if 
          the output is too lengthy).
        </para>
        <para>
          If Covered provides any other type of error message (something other than a core dump), Covered has found a user error that must 
          be fixed by the user.  Please do not submit bug reports if these errors are encountered, unless you wish to add a question about 
          it to the FAQ.
        </para>
      </answer>
    </qandaentry>
    <qandaentry>
      <question>
        <para>
          <emphasis role="bold">Covered is giving me a parser error for Verilog code that seems to be syntactically correct. What is 
          wrong?</emphasis>
        </para>
      </question>
      <answer>
        <para>
          If Covered displays a syntax (parse) error during the score command and the Verilog code is written correctly, it is because 
          Covered's parser is incomplete.  Please submit a bug or send an e-mail containing a code snippet of the unsupported Verilog.
        </para>
      </answer>
    </qandaentry>
    <qandaentry>
      <question>
        <para>
          <emphasis role="bold">Is Covered's Verilog parser Verilog-2001 compliant?</emphasis>
        </para>
      </question>
      <answer>
        <para>
          This is currently being worked on. The parser should properly parse all code; however, not all Verilog-2001 constructs are considered 
          for coverage due to lack of support for them in Covered's core. If there is code that will not parse that should, please submit a 
          bug report for this.
        </para>
      </answer>
    </qandaentry>
    <qandaentry>
      <question>
        <para>
          <emphasis role="bold">What is the difference between the stable release and the development release?</emphasis>
        </para>
      </question>
      <answer>
        <para>
          Covered's development consists of two active "branches": the stable branch and the development branch. When a new stable branch is 
          created (ex. 0.4 or 0.5), it represents the latest version of the development branch. As Covered's development branch is worked on 
          (adding new features, changes to the core, etc.), the stable branch remains in a feature frozen stage. Only bug fixes, 
          documentation updates or minor enhancements (changes that will not affect the core code) are made to the stable branch. When a 
          number of these changes have been accumulated on the stable branch, a snapshot of the stable branch is made available for 
          public download (ex. 0.4.1). User's of the stable release should expect no major feature changes from minor rev to minor rev and 
          should expect a somewhat polished version of the project (few if any bugs and correct user documentation).
        </para>
        <para>
          User's of the development releases should expect to see more bugs and fewer documentation consistencies (although an attempt is 
          made to minimize both) but should expect lots of feature additions, optimizations, improvements, etc. from release to release. 
          Bug findings found in the stable release are applied to the development branch when applicable. It is important to note that both 
          the stable and development releases contain a regression testbench that must fully pass before either release is made.  This 
          should minimize bugs in both releases and give user's of either branch a level of confidence that the release is usable.
        </para>
      </answer>
    </qandaentry>
  </qandaset>
  
</chapter>
