• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Functional Verification
  3. Merging code coverage from two different test benches

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 66
  • Views 31693
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Merging code coverage from two different test benches

Nilesh Goswami
Nilesh Goswami over 16 years ago
Hi

I am facing issue while merging code coverage from two different test benches.

Here is my testbench and tools :

One test bench(A) is written in SV and other test bench(B) is written in Verilog.

I am using IUS62 to run test cases and ICCR to merge coverage and generate report.

Both testbenches are pointing to same RTL core but the hierarchy is different.

I ran test case in both the environment and tried to merge code coverage report.

Here, ICCR is not loading the test because different model file (<checksum>.model) are generated.

I would like to know which are the points I should take care while running the test case and while merging coverage.

Please let me know your inputs.

Thanks & Regards,

Nilesh Goswami
  • Cancel
  • tpylant
    tpylant over 16 years ago
    If you omit set_dut_modules then it will attempt to merge the top modules. The key is to define the DUT module for which to merge coverage.  Given that, the merge command will ignore any hierarchy above that point.

    If you're still having problems, run the merge command with -message option to help isolate the problem. You can also refer to the quick reference guide and quick start guide.

    Tim

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Nilesh Goswami
    Nilesh Goswami over 16 years ago

    Thanks Tim,

    I did one additional thing by refering help. i.e. I set dut module name by using covdut option of irun command in both testbanches.

    Now, models files are generated same. So, I think I should be able to merge.

    However, it is loading both data base but I am still facing merging issue.

     

    Even I tried with option which you mentioned with iccr.

     

    commands used with iccr :

    ==================================== 

    set_dut_modules XYZ

    load_test test1 test2

    merge test1 test2 -ouput temp

    ====================================

    following message is displayed : 

    ======================================================================== 

    iccr: *W,MGDNFT: There is no instance of DUT "XYZ" present in this secondary test. As a result, the merging of this DUT for this test is not performed.

    ========================================================================

     

    Please let me know if something is wrong/missing, here.

     

    Regards,

    Nilesh Goswami 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Mickey
    Mickey over 16 years ago

     Hi Nilesh,

    When you use irun to compile/elab/simulate, are you using the same coverage options (besides the covtest option)?  Make sure that the type of coverage being specified (block,expression, fsm, functional, as well as any options specified in a coverage configuration file) is the same for all tests for the subblocks that you would like to merge. 

    Can you verify the inclusion of the module named "XYZ" by doing the following?

     

    load_test test2

    report_tabular_summary -module *

     

    The above should result in a listing of all modules that are found in test2.  You can also replace the -module argument with -instance to get an instance list of everything found in test2.  Try the same for test1.

    Please keep us updated on your progress.

     

    Best regards,

    Mickey

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Kinjal
    Kinjal over 16 years ago

    Hi Mickey,

     Thanks for quick reply.

     We tried with your inputs. To be honest, we are not able to merge yet.

     I would like to have one more input here. For irun based testbench we have used " -covdut <module_name>"  and for ncsim testbench we have used "-input <file_name>" and that file contains "coverage -dut x.y.z" .

    Clearly, irun command uses module base and ncsim uses instance based. Does that matter at merge ? If yes, then how to solve?  

    Both Testbeches shows the same model name (489eaa3b_00000000.model), I believe that indicates same coverage database generated.

     As Nilesh has mentioned, we are able to load both successfully at ICCR and while merge command it shows warning. 

     

    With your inputs, I am able to generate the individual testbench reports and that shows the intended module/instance at top. But while merge it shows "0 %" 

     

    Thanks & Regards,

    Kinjal Shah

    kinjal.shah@einfochips.com 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Kinjal
    Kinjal over 16 years ago
    Thanks  Mickey, Fepcine and Cadence Team for their wonderful support.

    Here is the way it get resolved :

    Till now we are compiling and elaborating "RTL files" in respected Envs independently using "irun" in one and "nc commands" in other. With different commands this creates merging issue in tool even with same arguments and model number file.

    As a solution,now we are not compiling RTL files (design files) again in both Env, instead, we are re-using already compiled worklib of design files of one Env. i.e. `fmr_worklib` located @ .../data/compiled/rtl
    By doing so, we are making sure to have same elaborated data base in use in both Envs and thus merging problem is eliminated in spite of different commands, "irun" and "nc commands".

    Previously, we had also got solution by converting "nc commands" to "irun" too. But, the above change is minor and quickly accepted by Team.

     

    Kind Regards,

    Kinjal Shah
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information