我想创建一个源文件结构,以便我的 systemverilog 设计中的寄存器偏移来自整个项目的一个文件。其动机是所有的注册offets都位于一个文件中,可以传递给软件团队。随后,对地址映射的任何更改都只需要更改一个文件。
目前,我使用一个名为“address_map.h”的包含文件,它定义了地址偏移量。此处添加了所有具有寄存器的模块的地址偏移。该文件包含在每个模块的声明部分的顶部。这种方法的问题在于,相同的参数会在不同的模块中重新定义。我可以通过将偏移量包含在特定于模块的宏中来解决这个问题。但它引入了我不喜欢的语句顺序依赖性。例如 address_map.h 如下所示 -
localparam
REG_ADDR_WIDTH = 8,
REG_DATA_WIDTH = 32,
NUM_OF_REG_REGIONS = 2;
//reg region 1
localparam
MISC_REG_REGION = 0,
MISC_NUM_OF_REG = 4,
MISC_VER_DATE = 0,
MISC_VER_TIME = 1,
MISC_SCRATCH = 2,
MISC_TEMP_SENSE = 3;
//reg region 2
localparam
ADC_REG_REGION = 1,
ADC_NUM_OF_REG = 4,
ADC_VER_DATE = 0,
ADC_VER_TIME = 1,
ADC_SYNC_STAT = 2,
ADC_SYNC_EN = 3,
ADC_OFFSET = 4;
有人知道更好的方法吗?