课下
Bug_Log
1.模块实例化的信号需先定义
其实testbench见过多次了,自己写的时候还想不清。
若实例化模块时使用的信号,若事先无声明,则会自动生成1bit此名称信号,自然在多位信号传输中便出错了。使用单位信号的模块到可以省略实现声明。
2.assign的对象不为寄存器
细碎的语言基础啊。。从逻辑上也不可能对寄存器使用连续赋值。
语法检查不会报错,会在仿真时报错。
3.PC-IM地址问题
[31:0]] IM | PC -> addr |
---|---|
[0] | 0 , .data : 0x0000_0000
|
[1] | 4 |
[2] | 8 |
... | ... |
[3071] | 12284 , .data 最后一个地址 |
[3072] | 12288 , .text : 0x0000_3000
|
... | ... |
[4095] | 16380 , 此时可存入最大指令1024(=4095-3071 )个 |
... | ... |
Memory使用:
-
reg[31:0] IM[0:4095]
此声明下的memory从0开始; -
$readmemh("<数据文件名>", <存储器名> [, <起始地址>, <终止地址>]);
每个被读取的数字都被存放到地址连续的存储器单元中。- 存储器单元的存放地址由系统任务的起始地址和结束地址说明
- 文件中每个数据的存放地址在数据文件中说明,用
@hh...h
标识