sv_lab/2_vcs_comp/ReadMe.md

105 lines
3.2 KiB
Markdown
Raw Normal View History

2024-12-02 21:32:42 +08:00
# VCS编译加速三步编译和分块编译
验证问题有不同穿层信号时模块的partition库能否reuse?
结论:**当穿层信号变化时受影响的模块不能reuse**。
## 快速开始
### 第一次编译
```bash
make all GENLIB=1
```
### 第二次编译
```bash
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
```
2024-12-05 17:14:17 +08:00
检查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.