我想創建一個源文件結構,以便我的systemverilog設計中的註冊偏移量來自整個項目中的一個文件。動機是,所有寄存器都位於一個文件中,可以傳遞給軟件團隊。隨後,對地址映射的任何更改都只需要更改爲僅一個文件。從systemverilog源樹中的一個源文件註冊偏移量
目前,我使用一個名爲「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;
有人知道更好的方法嗎?
This works。感謝您花時間在edaplayground.com上分享解決方案。這是一個非常酷的網站。 – shparekh