Skip to content

Commit cf8af36

Browse files
committed
rdl: Integrate slink into cheshire rdl
1 parent 57d1906 commit cf8af36

7 files changed

Lines changed: 451 additions & 384 deletions

File tree

cheshire.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ REGTOOL ?= $(CHS_REG_DIR)/vendor/lowrisc_opentitan/util/regtool.py
3636
PEAKRDL ?= peakrdl
3737

3838
PEAKRDL_INCLUDES := -I $(CHS_ROOT)/hw/regs
39+
PEAKRDL_INCLUDES += -I $(CHS_SLINK_DIR)/src/regs
3940

4041
# License text for generated files (comment markers added by tool or sed)
4142
CHS_LIC_SHL := Copyright 2025 ETH Zurich and University of Bologna.\nSolderpad Hardware License, Version 0.51, see LICENSE for details.\nSPDX-License-Identifier: SHL-0.51

hw/cheshire.rdl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
`define CHESHIRE_RDL
99

1010
`include "regs.rdl"
11+
`include "slink_reg.rdl"
1112

1213
// User-defined property for executable memory regions (used by ldh format)
1314
property executable {
@@ -101,7 +102,8 @@ addrmap cheshire {
101102
periph_stub_t #(.Size(0x0000_1000)) gpio @0x0300_5000;
102103

103104
// Serial link (4 KiB)
104-
periph_stub_t #(.Size(0x0000_1000)) slink @0x0300_6000;
105+
// TODO(fischeti): Parametrize
106+
slink_reg slink @0x0300_6000;
105107

106108
// AXI VGA (4 KiB)
107109
periph_stub_t #(.Size(0x0000_1000)) vga @0x0300_7000;

hw/cheshire_addrmap_pkg.sv

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ localparam longint unsigned GPIO_BASE_ADDR = 64'h3005000;
4545
localparam longint unsigned GPIO_SIZE = 64'h1000;
4646

4747
localparam longint unsigned SLINK_BASE_ADDR = 64'h3006000;
48-
localparam longint unsigned SLINK_SIZE = 64'h1000;
48+
localparam longint unsigned SLINK_SIZE = 64'h804;
4949

5050
localparam longint unsigned VGA_BASE_ADDR = 64'h3007000;
5151
localparam longint unsigned VGA_SIZE = 64'h1000;
@@ -100,8 +100,47 @@ localparam longint unsigned SPIH_STATUS_BASE_ADDR = 64'h3004000;
100100
localparam longint unsigned SPIH__END_BASE_ADDR = 64'h3004FFC;
101101
localparam longint unsigned GPIO_STATUS_BASE_ADDR = 64'h3005000;
102102
localparam longint unsigned GPIO__END_BASE_ADDR = 64'h3005FFC;
103-
localparam longint unsigned SLINK_STATUS_BASE_ADDR = 64'h3006000;
104-
localparam longint unsigned SLINK__END_BASE_ADDR = 64'h3006FFC;
103+
localparam longint unsigned SLINK_CTRL_BASE_ADDR = 64'h3006000;
104+
localparam longint unsigned SLINK_ISOLATED_BASE_ADDR = 64'h3006004;
105+
localparam longint unsigned SLINK_RAW_MODE_EN_BASE_ADDR = 64'h3006008;
106+
localparam longint unsigned SLINK_RAW_MODE_IN_DATA_BASE_ADDR = 64'h300600C;
107+
localparam longint unsigned SLINK_RAW_MODE_IN_CH_SEL_BASE_ADDR = 64'h3006010;
108+
localparam longint unsigned SLINK_RAW_MODE_OUT_DATA_FIFO_BASE_ADDR = 64'h3006014;
109+
localparam longint unsigned SLINK_RAW_MODE_OUT_DATA_FIFO_CTRL_BASE_ADDR = 64'h3006018;
110+
localparam longint unsigned SLINK_RAW_MODE_OUT_EN_BASE_ADDR = 64'h300601C;
111+
localparam longint unsigned SLINK_FLOW_CONTROL_FIFO_CLEAR_BASE_ADDR = 64'h3006020;
112+
function automatic longint unsigned SLINK_RAW_MODE_IN_DATA_VALID_BASE_ADDR(input int unsigned raw_mode_in_data_valid_idx);
113+
return 64'h3006100 + (raw_mode_in_data_valid_idx * 64'h4);
114+
endfunction
115+
localparam longint unsigned SLINK_RAW_MODE_IN_DATA_VALID_NUM = 64'h1;
116+
function automatic longint unsigned SLINK_RAW_MODE_OUT_CH_MASK_BASE_ADDR(input int unsigned raw_mode_out_ch_mask_idx);
117+
return 64'h3006200 + (raw_mode_out_ch_mask_idx * 64'h4);
118+
endfunction
119+
localparam longint unsigned SLINK_RAW_MODE_OUT_CH_MASK_NUM = 64'h1;
120+
function automatic longint unsigned SLINK_TX_PHY_CLK_DIV_BASE_ADDR(input int unsigned tx_phy_clk_div_idx);
121+
return 64'h3006300 + (tx_phy_clk_div_idx * 64'h4);
122+
endfunction
123+
localparam longint unsigned SLINK_TX_PHY_CLK_DIV_NUM = 64'h1;
124+
function automatic longint unsigned SLINK_TX_PHY_CLK_START_BASE_ADDR(input int unsigned tx_phy_clk_start_idx);
125+
return 64'h3006400 + (tx_phy_clk_start_idx * 64'h4);
126+
endfunction
127+
localparam longint unsigned SLINK_TX_PHY_CLK_START_NUM = 64'h1;
128+
function automatic longint unsigned SLINK_TX_PHY_CLK_END_BASE_ADDR(input int unsigned tx_phy_clk_end_idx);
129+
return 64'h3006500 + (tx_phy_clk_end_idx * 64'h4);
130+
endfunction
131+
localparam longint unsigned SLINK_TX_PHY_CLK_END_NUM = 64'h1;
132+
localparam longint unsigned SLINK_CHANNEL_ALLOC_TX_CFG_BASE_ADDR = 64'h3006600;
133+
localparam longint unsigned SLINK_CHANNEL_ALLOC_TX_CTRL_BASE_ADDR = 64'h3006604;
134+
localparam longint unsigned SLINK_CHANNEL_ALLOC_RX_CFG_BASE_ADDR = 64'h3006608;
135+
localparam longint unsigned SLINK_CHANNEL_ALLOC_RX_CTRL_BASE_ADDR = 64'h300660C;
136+
function automatic longint unsigned SLINK_CHANNEL_ALLOC_TX_CH_EN_BASE_ADDR(input int unsigned channel_alloc_tx_ch_en_idx);
137+
return 64'h3006700 + (channel_alloc_tx_ch_en_idx * 64'h4);
138+
endfunction
139+
localparam longint unsigned SLINK_CHANNEL_ALLOC_TX_CH_EN_NUM = 64'h1;
140+
function automatic longint unsigned SLINK_CHANNEL_ALLOC_RX_CH_EN_BASE_ADDR(input int unsigned channel_alloc_rx_ch_en_idx);
141+
return 64'h3006800 + (channel_alloc_rx_ch_en_idx * 64'h4);
142+
endfunction
143+
localparam longint unsigned SLINK_CHANNEL_ALLOC_RX_CH_EN_NUM = 64'h1;
105144
localparam longint unsigned VGA_STATUS_BASE_ADDR = 64'h3007000;
106145
localparam longint unsigned VGA__END_BASE_ADDR = 64'h3007FFC;
107146
localparam longint unsigned USB_STATUS_BASE_ADDR = 64'h3008000;

0 commit comments

Comments
 (0)