sv_lab/2_vcs_comp/ReadMe.md

3.2 KiB
Raw Blame History

VCS编译加速三步编译和分块编译

验证问题有不同穿层信号时模块的partition库能否reuse?

结论:当穿层信号变化时受影响的模块不能reuse

快速开始

第一次编译

make all GENLIB=1

第二次编译

make all GENLIB=0

运行结果

Top Level Modules:
       testbench
TimeScale is 1 ns / 1 ps

Note-[PC_SHARED] Reusing shared partition
  Reusing partition '_vcs_pc_package_' from shared library './partitionlib'.



Note-[PC_SHARED] Reusing shared partition
  Reusing partition 'uvm_pkg' from shared library './partitionlib'.



Note-[PC_SHARED] Reusing shared partition
  Reusing partition 'counter_a' from shared library './partitionlib'.



Warning-[PC_NOT_SHARED] Cannot reuse shared partition
  Cannot reuse partition 'counter_b' from shared library './partitionlib'

  There are additional signals that are now targets of hierarchical
  references.



Note-[PC_GEN_PARTITION] Generating partition
  Generating new partition 'counter_b' at
  './partitionlib_test2/counter_b_ipFRWc'.


Warning-[PC_NOT_SHARED] Cannot reuse shared partition
  Cannot reuse partition 'counter_c' from shared library './partitionlib'

  There are additional signals that are now targets of hierarchical
  references.



Note-[PC_GEN_PARTITION] Generating partition
  Generating new partition 'counter_c' at
  './partitionlib_test2/counter_c_chn5zb'.


Note-[PC_SHARED] Reusing shared partition
  Reusing partition 'top' from shared library './partitionlib'.



Warning-[PC_NOT_SHARED] Cannot reuse shared partition
  Cannot reuse partition 'TB.testbench' from shared library './partitionlib'

  Modified Design Units :
        TB.testbench : "./rtl/testbench.sv", 20
  Type of targets of hierarchical references in this partition have changed.



Note-[PC_RECOMPILE] Recompiling partition
  Recompiling partition 'TB.testbench' because of following changes.

  Modified Design Units :
        TB.testbench : "./rtl/testbench.sv", 20

检查log可以发现穿层信号变化涉及到的模块counter_b、counter_c都无法reuse。

结论

序号 条件 现象 结论 备注
1 第一次引用a.name 第二次引用a.name/b.name/c.name b/c重编 不同的模块,增加的引用会重编
2 第一次引用a.name第二次引用a.age a重编 同一个模块,不同引用也会重编
3 第一次引用a.name/a.age第二次引用a.name a重编 同一个模块,减少引用也会重编
4 第一次引用a.name第二次引用a.name/a.age a重编 同一个模块,增加引用也会重编

⚠:只要模块的穿层引用发生变化,就会导致该模块重编。

✍官方文档VCSLCAFeatures.pdf第408页也有类似表述Any change in XMRs, trigger recompilation of the referee partition.