add 1_hierarchy

This commit is contained in:
fengbh 2024-12-02 14:34:53 +08:00
parent c735390e5f
commit e6efeec308
5 changed files with 107 additions and 3 deletions

5
.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
csrc
simv
simv.daidir
*.key
*.log

14
1_hierarchy/Makefile Normal file
View File

@ -0,0 +1,14 @@
.PHONY: clean comp all
clean:
- rm -rf csrc simv.daidir ucli.key *.log simv
comp:
- vcs -full64 +v2k -sverilog -LDFLAGS -Wl,--no-as-need \
-top testbench -l compile.log -timescale=1ns/1ps \
testbench.sv
sim:
./simv -l sim.log
all: clean comp sim

34
1_hierarchy/ReadMe.md Normal file
View File

@ -0,0 +1,34 @@
# 层次路径解析
sv当前模块对层次路径的解析
- 绝对路径:支持从顶层模块名开始,一路`.`下来。如`testbench.a1.data`
- 相对路径:
- 支持从**父级模块名**开始,一路`.`下来。如`A.data`
- 支持使用当前模块内的**实例化名**,一路`.`下来。如`a1.data`
这个项目主要是为了验证:可以使用==从父级模块名开始的相对路径解析==。当检查多次例化的模块,或模块层级不确定时可以简化代码。
## 快速开始
```bash
make all
```
## 运行结果
```
Chronologic VCS simulator copyright 1991-2018
Contains Synopsys proprietary information.
Compiler version O-2018.09-SP2_Full64; Runtime version O-2018.09-SP2_Full64; Dec 2 14:29 2024
testbench.a1.data = 1
a1.data = 1
A.data = 1
A.data = 2
A.data = 3
V C S S i m u l a t i o n R e p o r t
Time: 0 ps
CPU Time: 0.210 seconds; Data structure size: 0.0Mb
Mon Dec 2 14:29:12 2024
```

50
1_hierarchy/testbench.sv Normal file
View File

@ -0,0 +1,50 @@
//===========================================================================
// Organization : Individual Developer
// Filename : testbench.sv
// Author : Feng Bohan
// Create Time : 16:44:54 2024-11-29
// Last Modified: 17:04:34 2024-11-29
// Abstract :
//--------------------------------------------------------------------------
// Description:
//
//--------------------------------------------------------------------------
// Modification History:
//--------------------------------------------------------------------------
// Rev Date Who Description
// --- ---- --- -----------
// 0.0.01 2024-11-29 Feng Bohan initial version
//===========================================================================
module B;
initial begin
$display("A.data = %0d", A.data);
end
endmodule
module A #(
parameter DATA = 0
)();
reg [31:0] data = DATA;
B b();
endmodule
module testbench;
A #(
.DATA(1)
)a1();
A #(
.DATA(2)
)a2();
A #(
.DATA(3)
)a3();
initial begin
$display("testbench.a1.data = %0d", testbench.a1.data);
$display("a1.data = %0d", a1.data);
end
endmodule

View File

@ -4,6 +4,7 @@ sv_lib是一系列systemverilog lab的合集帮助学习sv的特性。
## 项目列表
| 项目 | 描述 | 状态 | 备注 |
| ---- | ---- | ---- | ---- |
| | | | |
| 项目 | 描述 | 状态 | 备注 |
| ---------------------------- | -------------------- | ------ | ---- |
| [1_hierarchy](./1_hierarchy) | 对层次路径的解析测试 | 开发中 | |