[top] Add multiple clocks at the top.
Also add multiple resets sync'ed to each clock. The multi-clock
and resets are still connected to the same source, a separate PR will
bring true clock and reset sources.
Signed-off-by: Timothy Chen <timothytim@google.com>
diff --git a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
index 2eb89e0..a803c59 100644
--- a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
+++ b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
@@ -15,6 +15,10 @@
name: main
freq: "100000000"
}
+ {
+ name: fixed
+ freq: "100000000"
+ }
]
resets:
[
@@ -29,10 +33,16 @@
clk: main
}
{
+ name: sys_fixed
+ type: leaf
+ root: sys
+ clk: fixed
+ }
+ {
name: spi_device
type: leaf
root: sys
- clk: main
+ clk: fixed
}
]
num_cores: "1"
@@ -43,11 +53,11 @@
type: uart
clock_connections:
{
- clk_i: main
+ clk_i: fixed
}
reset_connections:
{
- rst_ni: sys
+ rst_ni: sys_fixed
}
base_addr: 0x40000000
size: 0x1000
@@ -121,11 +131,11 @@
type: gpio
clock_connections:
{
- clk_i: main
+ clk_i: fixed
}
reset_connections:
{
- rst_ni: sys
+ rst_ni: sys_fixed
}
base_addr: 0x40010000
size: 0x1000
@@ -157,7 +167,7 @@
type: spi_device
clock_connections:
{
- clk_i: main
+ clk_i: fixed
}
reset_connections:
{
@@ -289,11 +299,11 @@
type: rv_timer
clock_connections:
{
- clk_i: main
+ clk_i: fixed
}
reset_connections:
{
- rst_ni: sys
+ rst_ni: sys_fixed
}
base_addr: 0x40080000
size: 0x1000
@@ -577,11 +587,13 @@
clock_connections:
{
clk_main_i: main
+ clk_fixed_i: fixed
}
- reset: sys
+ reset: rst_main_ni
reset_connections:
{
rst_main_ni: sys
+ rst_fixed_ni: sys_fixed
}
connections:
{
@@ -633,7 +645,8 @@
{
name: corei
type: host
- clock: main
+ clock: clk_main_i
+ reset: rst_main_ni
pipeline: "false"
inst_type: rv_core_ibex
pipeline_byp: "true"
@@ -641,7 +654,8 @@
{
name: cored
type: host
- clock: main
+ clock: clk_main_i
+ reset: rst_main_ni
pipeline: "false"
inst_type: rv_core_ibex
pipeline_byp: "true"
@@ -649,7 +663,8 @@
{
name: dm_sba
type: host
- clock: main
+ clock: clk_main_i
+ reset: rst_main_ni
pipeline_byp: "false"
inst_type: rv_dm
pipeline: "true"
@@ -657,7 +672,8 @@
{
name: rom
type: device
- clock: main
+ clock: clk_main_i
+ reset: rst_main_ni
pipeline: "false"
inst_type: rom
base_addr: 0x00008000
@@ -667,7 +683,8 @@
{
name: debug_mem
type: device
- clock: main
+ clock: clk_main_i
+ reset: rst_main_ni
pipeline_byp: "false"
inst_type: rv_dm
base_addr: 0x1A110000
@@ -677,7 +694,8 @@
{
name: ram_main
type: device
- clock: main
+ clock: clk_main_i
+ reset: rst_main_ni
pipeline: "false"
inst_type: ram_1p
base_addr: 0x10000000
@@ -687,7 +705,8 @@
{
name: eflash
type: device
- clock: main
+ clock: clk_main_i
+ reset: rst_main_ni
pipeline: "false"
inst_type: eflash
base_addr: 0x20000000
@@ -697,7 +716,8 @@
{
name: uart
type: device
- clock: main
+ clock: clk_fixed_i
+ reset: rst_fixed_ni
pipeline_byp: "false"
inst_type: uart
base_addr: 0x40000000
@@ -707,7 +727,8 @@
{
name: gpio
type: device
- clock: main
+ clock: clk_fixed_i
+ reset: rst_fixed_ni
pipeline_byp: "false"
inst_type: gpio
base_addr: 0x40010000
@@ -717,7 +738,8 @@
{
name: spi_device
type: device
- clock: main
+ clock: clk_fixed_i
+ reset: rst_fixed_ni
pipeline_byp: "false"
inst_type: spi_device
base_addr: 0x40020000
@@ -727,7 +749,8 @@
{
name: flash_ctrl
type: device
- clock: main
+ clock: clk_main_i
+ reset: rst_main_ni
pipeline_byp: "false"
inst_type: flash_ctrl
base_addr: 0x40030000
@@ -737,7 +760,8 @@
{
name: rv_timer
type: device
- clock: main
+ clock: clk_fixed_i
+ reset: rst_fixed_ni
pipeline_byp: "false"
inst_type: rv_timer
base_addr: 0x40080000
@@ -747,7 +771,8 @@
{
name: hmac
type: device
- clock: main
+ clock: clk_main_i
+ reset: rst_main_ni
pipeline_byp: "false"
inst_type: hmac
base_addr: 0x40120000
@@ -757,7 +782,8 @@
{
name: aes
type: device
- clock: main
+ clock: clk_main_i
+ reset: rst_main_ni
pipeline_byp: "false"
inst_type: aes
base_addr: 0x40110000
@@ -767,7 +793,8 @@
{
name: rv_plic
type: device
- clock: main
+ clock: clk_main_i
+ reset: rst_main_ni
inst_type: rv_plic
base_addr: 0x40090000
size_byte: 0x1000
@@ -777,7 +804,8 @@
{
name: pinmux
type: device
- clock: main
+ clock: clk_main_i
+ reset: rst_fixed_ni
inst_type: pinmux
base_addr: 0x40070000
size_byte: 0x1000
@@ -787,7 +815,7 @@
{
name: alert_handler
type: device
- clock: main
+ clock: clk_main_i
inst_type: alert_handler
pipeline_byp: "false"
base_addr: 0x40130000
@@ -797,7 +825,7 @@
{
name: nmi_gen
type: device
- clock: main
+ clock: clk_main_i
inst_type: nmi_gen
pipeline_byp: "false"
base_addr: 0x40140000
@@ -805,7 +833,7 @@
pipeline: "true"
}
]
- clock: main
+ clock: clk_main_i
}
]
interrupt_module:
diff --git a/hw/top_earlgrey/data/top_earlgrey.hjson b/hw/top_earlgrey/data/top_earlgrey.hjson
index 326236b..f3c41d7 100644
--- a/hw/top_earlgrey/data/top_earlgrey.hjson
+++ b/hw/top_earlgrey/data/top_earlgrey.hjson
@@ -10,6 +10,7 @@
clocks: [
{ name: "main", freq: "100000000" }
+ { name: "fixed", freq: "100000000" }
]
// Reset attributes
@@ -20,7 +21,8 @@
resets: [
{ name: "lc", type: "root", clk: "main"}
{ name: "sys", type: "root", clk: "main"}
- { name: "spi_device", type: "leaf", root: "sys", clk: "main"}
+ { name: "sys_fixed", type: "leaf", root: "sys", clk: "fixed"}
+ { name: "spi_device", type: "leaf", root: "sys", clk: "fixed"}
]
// Number of cores: used in rv_plic and timer
@@ -37,25 +39,25 @@
// clock connections defines the port to top level clock connection
// the ip.hjson will declare the clock port names
// If none are defined at ip.hjson, clk_i is used by default
- clock_connections: {clk_i: "main"},
+ clock_connections: {clk_i: "fixed"},
// reset connections defines the port to top level reset connection
// the ip.hjson will declare the reset port names
// If none are defined at ip.hjson, rst_ni is used by default
- reset_connections: {rst_ni: "sys"},
+ reset_connections: {rst_ni: "sys_fixed"},
base_addr: "0x40000000",
},
{ name: "gpio",
type: "gpio",
- clock_connections: {clk_i: "main"},
- reset_connections: {rst_ni: "sys"},
+ clock_connections: {clk_i: "fixed"},
+ reset_connections: {rst_ni: "sys_fixed"},
base_addr: "0x40010000",
}
{ name: "spi_device",
type: "spi_device",
- clock_connections: {clk_i: "main"},
+ clock_connections: {clk_i: "fixed"},
reset_connections: {rst_ni: "spi_device"},
base_addr: "0x40020000",
},
@@ -67,8 +69,8 @@
},
{ name: "rv_timer",
type: "rv_timer",
- clock_connections: {clk_i: "main"},
- reset_connections: {rst_ni: "sys"},
+ clock_connections: {clk_i: "fixed"},
+ reset_connections: {rst_ni: "sys_fixed"},
base_addr: "0x40080000",
},
{ name: "aes",
@@ -151,9 +153,9 @@
// Assume xbar.hjson is located in the same directory of top.hjson
xbar: [
{ name: "main",
- clock_connections: {clk_main_i: "main"},
+ clock_connections: {clk_main_i: "main", clk_fixed_i: "fixed"},
reset: "sys",
- reset_connections: {rst_main_ni: "sys"}
+ reset_connections: {rst_main_ni: "sys", rst_fixed_ni: "sys_fixed"}
},
],
diff --git a/hw/top_earlgrey/data/xbar_main.hjson b/hw/top_earlgrey/data/xbar_main.hjson
index 1eff346..e95d0b0 100644
--- a/hw/top_earlgrey/data/xbar_main.hjson
+++ b/hw/top_earlgrey/data/xbar_main.hjson
@@ -1,89 +1,102 @@
{ name: "main",
type: "xbar",
- clock: "main",
clock_primary: "clk_main_i", // Main clock, used in sockets
+ other_clock_list: [ "clk_fixed_i" ] // Secondary clocks used by specific nodes
reset_primary: "rst_main_ni", // Main reset, used in sockets
+ other_reset_list: [ "rst_fixed_ni" ] // Secondary clocks used by specific nodes
nodes: [
{ name: "corei",
type: "host",
- clock: "main",
-
+ clock: "clk_main_i",
+ reset: "rst_main_ni",
pipeline: "false"
},
{ name: "cored",
type: "host",
- clock: "main",
-
+ clock: "clk_main_i",
+ reset: "rst_main_ni",
pipeline: "false"
},
{ name: "dm_sba", // DM
type: "host",
- clock: "main",
-
+ clock: "clk_main_i",
+ reset: "rst_main_ni",
pipeline_byp: "false"
},
{ name: "rom",
type: "device",
- clock: "main",
+ clock: "clk_main_i",
+ reset: "rst_main_ni",
pipeline: "false",
},
{ name: "debug_mem",
type: "device",
- clock: "main",
+ clock: "clk_main_i",
+ reset: "rst_main_ni",
pipeline_byp: "false"
},
{ name: "ram_main",
type: "device",
- clock: "main",
+ clock: "clk_main_i",
+ reset: "rst_main_ni",
pipeline: "false",
},
{ name: "eflash",
type: "device",
- clock: "main",
+ clock: "clk_main_i",
+ reset: "rst_main_ni",
pipeline: "false",
},
{ name: "uart",
type: "device",
- clock: "main",
+ clock: "clk_fixed_i",
+ reset: "rst_fixed_ni",
pipeline_byp: "false"
},
{ name: "gpio",
type: "device",
- clock: "main",
+ clock: "clk_fixed_i",
+ reset: "rst_fixed_ni",
pipeline_byp: "false"
},
{ name: "spi_device",
type: "device",
- clock: "main",
+ clock: "clk_fixed_i",
+ reset: "rst_fixed_ni",
pipeline_byp: "false"
},
{ name: "flash_ctrl",
type: "device",
- clock: "main",
+ clock: "clk_main_i",
+ reset: "rst_main_ni",
pipeline_byp: "false"
},
{ name: "rv_timer",
type: "device",
- clock: "main",
+ clock: "clk_fixed_i",
+ reset: "rst_fixed_ni",
pipeline_byp: "false"
},
{ name: "hmac",
type: "device",
- clock: "main"
+ clock: "clk_main_i",
+ reset: "rst_main_ni",
pipeline_byp: "false"
},
{ name: "aes",
type: "device",
- clock: "main"
+ clock: "clk_main_i"
+ reset: "rst_main_ni"
pipeline_byp: "false"
},
{ name: "rv_plic",
type: "device",
- clock: "main",
+ clock: "clk_main_i",
+ reset: "rst_main_ni",
inst_type: "rv_plic",
base_addr: "0x40090000",
size_byte: "0x1000",
@@ -91,7 +104,8 @@
},
{ name: "pinmux",
type: "device",
- clock: "main",
+ clock: "clk_main_i",
+ reset: "rst_fixed_ni",
inst_type: "pinmux",
base_addr: "0x40070000",
size_byte: "0x1000",
@@ -99,7 +113,7 @@
},
{ name: "alert_handler",
type: "device",
- clock: "main",
+ clock: "clk_main_i",
inst_type: "alert_handler",
pipeline_byp: "false"
},
@@ -107,7 +121,7 @@
// and test them by converting them into IRQs
{ name: "nmi_gen",
type: "device",
- clock: "main",
+ clock: "clk_main_i",
inst_type: "nmi_gen",
pipeline_byp: "false"
}
diff --git a/hw/top_earlgrey/ip/alert_handler/data/autogen/alert_handler.hjson b/hw/top_earlgrey/ip/alert_handler/data/autogen/alert_handler.hjson
index c9390e9..ed3bdd9 100644
--- a/hw/top_earlgrey/ip/alert_handler/data/autogen/alert_handler.hjson
+++ b/hw/top_earlgrey/ip/alert_handler/data/autogen/alert_handler.hjson
@@ -12,7 +12,7 @@
//
# ALERT_HANDLER register template
#
-# Parameter (given by python tool)
+# Parameter (given by Python tool)
# - n_alerts: Number of alert sources
# - esc_cnt_dw: Width of escalation counter
# - accu_cnt_dw: Width of accumulator
diff --git a/hw/top_earlgrey/ip/xbar/data/autogen/xbar_main.gen.hjson b/hw/top_earlgrey/ip/xbar/data/autogen/xbar_main.gen.hjson
index e377830..bdff50c 100644
--- a/hw/top_earlgrey/ip/xbar/data/autogen/xbar_main.gen.hjson
+++ b/hw/top_earlgrey/ip/xbar/data/autogen/xbar_main.gen.hjson
@@ -11,11 +11,13 @@
clock_connections:
{
clk_main_i: main
+ clk_fixed_i: fixed
}
- reset: sys
+ reset: rst_main_ni
reset_connections:
{
rst_main_ni: sys
+ rst_fixed_ni: sys_fixed
}
connections:
{
@@ -67,7 +69,8 @@
{
name: corei
type: host
- clock: main
+ clock: clk_main_i
+ reset: rst_main_ni
pipeline: "false"
inst_type: rv_core_ibex
pipeline_byp: "true"
@@ -75,7 +78,8 @@
{
name: cored
type: host
- clock: main
+ clock: clk_main_i
+ reset: rst_main_ni
pipeline: "false"
inst_type: rv_core_ibex
pipeline_byp: "true"
@@ -83,7 +87,8 @@
{
name: dm_sba
type: host
- clock: main
+ clock: clk_main_i
+ reset: rst_main_ni
pipeline_byp: "false"
inst_type: rv_dm
pipeline: "true"
@@ -91,7 +96,8 @@
{
name: rom
type: device
- clock: main
+ clock: clk_main_i
+ reset: rst_main_ni
pipeline: "false"
inst_type: rom
base_addr: 0x00008000
@@ -101,7 +107,8 @@
{
name: debug_mem
type: device
- clock: main
+ clock: clk_main_i
+ reset: rst_main_ni
pipeline_byp: "false"
inst_type: rv_dm
base_addr: 0x1A110000
@@ -111,7 +118,8 @@
{
name: ram_main
type: device
- clock: main
+ clock: clk_main_i
+ reset: rst_main_ni
pipeline: "false"
inst_type: ram_1p
base_addr: 0x10000000
@@ -121,7 +129,8 @@
{
name: eflash
type: device
- clock: main
+ clock: clk_main_i
+ reset: rst_main_ni
pipeline: "false"
inst_type: eflash
base_addr: 0x20000000
@@ -131,7 +140,8 @@
{
name: uart
type: device
- clock: main
+ clock: clk_fixed_i
+ reset: rst_fixed_ni
pipeline_byp: "false"
inst_type: uart
base_addr: 0x40000000
@@ -141,7 +151,8 @@
{
name: gpio
type: device
- clock: main
+ clock: clk_fixed_i
+ reset: rst_fixed_ni
pipeline_byp: "false"
inst_type: gpio
base_addr: 0x40010000
@@ -151,7 +162,8 @@
{
name: spi_device
type: device
- clock: main
+ clock: clk_fixed_i
+ reset: rst_fixed_ni
pipeline_byp: "false"
inst_type: spi_device
base_addr: 0x40020000
@@ -161,7 +173,8 @@
{
name: flash_ctrl
type: device
- clock: main
+ clock: clk_main_i
+ reset: rst_main_ni
pipeline_byp: "false"
inst_type: flash_ctrl
base_addr: 0x40030000
@@ -171,7 +184,8 @@
{
name: rv_timer
type: device
- clock: main
+ clock: clk_fixed_i
+ reset: rst_fixed_ni
pipeline_byp: "false"
inst_type: rv_timer
base_addr: 0x40080000
@@ -181,7 +195,8 @@
{
name: hmac
type: device
- clock: main
+ clock: clk_main_i
+ reset: rst_main_ni
pipeline_byp: "false"
inst_type: hmac
base_addr: 0x40120000
@@ -191,7 +206,8 @@
{
name: aes
type: device
- clock: main
+ clock: clk_main_i
+ reset: rst_main_ni
pipeline_byp: "false"
inst_type: aes
base_addr: 0x40110000
@@ -201,7 +217,8 @@
{
name: rv_plic
type: device
- clock: main
+ clock: clk_main_i
+ reset: rst_main_ni
inst_type: rv_plic
base_addr: 0x40090000
size_byte: 0x1000
@@ -211,7 +228,8 @@
{
name: pinmux
type: device
- clock: main
+ clock: clk_main_i
+ reset: rst_fixed_ni
inst_type: pinmux
base_addr: 0x40070000
size_byte: 0x1000
@@ -221,7 +239,7 @@
{
name: alert_handler
type: device
- clock: main
+ clock: clk_main_i
inst_type: alert_handler
pipeline_byp: "false"
base_addr: 0x40130000
@@ -231,7 +249,7 @@
{
name: nmi_gen
type: device
- clock: main
+ clock: clk_main_i
inst_type: nmi_gen
pipeline_byp: "false"
base_addr: 0x40140000
@@ -239,6 +257,6 @@
pipeline: "true"
}
]
- clock: main
+ clock: clk_main_i
type: xbar
}
\ No newline at end of file
diff --git a/hw/top_earlgrey/ip/xbar/dv/autogen/xbar_main_bind.sv b/hw/top_earlgrey/ip/xbar/dv/autogen/xbar_main_bind.sv
index 913f600..01cc9bf 100644
--- a/hw/top_earlgrey/ip/xbar/dv/autogen/xbar_main_bind.sv
+++ b/hw/top_earlgrey/ip/xbar/dv/autogen/xbar_main_bind.sv
@@ -51,20 +51,20 @@
.d2h (tl_eflash_i)
);
bind xbar_main tlul_assert tlul_assert_device_uart (
- .clk_i (clk_main_i),
- .rst_ni (rst_main_ni),
+ .clk_i (clk_fixed_i),
+ .rst_ni (rst_fixed_ni),
.h2d (tl_uart_o),
.d2h (tl_uart_i)
);
bind xbar_main tlul_assert tlul_assert_device_gpio (
- .clk_i (clk_main_i),
- .rst_ni (rst_main_ni),
+ .clk_i (clk_fixed_i),
+ .rst_ni (rst_fixed_ni),
.h2d (tl_gpio_o),
.d2h (tl_gpio_i)
);
bind xbar_main tlul_assert tlul_assert_device_spi_device (
- .clk_i (clk_main_i),
- .rst_ni (rst_main_ni),
+ .clk_i (clk_fixed_i),
+ .rst_ni (rst_fixed_ni),
.h2d (tl_spi_device_o),
.d2h (tl_spi_device_i)
);
@@ -75,8 +75,8 @@
.d2h (tl_flash_ctrl_i)
);
bind xbar_main tlul_assert tlul_assert_device_rv_timer (
- .clk_i (clk_main_i),
- .rst_ni (rst_main_ni),
+ .clk_i (clk_fixed_i),
+ .rst_ni (rst_fixed_ni),
.h2d (tl_rv_timer_o),
.d2h (tl_rv_timer_i)
);
@@ -100,7 +100,7 @@
);
bind xbar_main tlul_assert tlul_assert_device_pinmux (
.clk_i (clk_main_i),
- .rst_ni (rst_main_ni),
+ .rst_ni (rst_fixed_ni),
.h2d (tl_pinmux_o),
.d2h (tl_pinmux_i)
);
@@ -118,5 +118,3 @@
);
endmodule
-
-
diff --git a/hw/top_earlgrey/ip/xbar/rtl/autogen/xbar_main.sv b/hw/top_earlgrey/ip/xbar/rtl/autogen/xbar_main.sv
index 2d3d421..bc02862 100644
--- a/hw/top_earlgrey/ip/xbar/rtl/autogen/xbar_main.sv
+++ b/hw/top_earlgrey/ip/xbar/rtl/autogen/xbar_main.sv
@@ -26,62 +26,72 @@
// -> ram_main
// -> sm1_22
// -> eflash
-// -> sm1_24
-// -> uart
// -> sm1_25
-// -> gpio
-// -> sm1_26
-// -> spi_device
+// -> asf_24
+// -> uart
// -> sm1_27
-// -> flash_ctrl
-// -> sm1_28
-// -> rv_timer
+// -> asf_26
+// -> gpio
// -> sm1_29
-// -> aes
+// -> asf_28
+// -> spi_device
// -> sm1_30
-// -> hmac
-// -> sm1_31
-// -> rv_plic
+// -> flash_ctrl
// -> sm1_32
-// -> pinmux
+// -> asf_31
+// -> rv_timer
// -> sm1_33
-// -> alert_handler
+// -> aes
// -> sm1_34
+// -> hmac
+// -> sm1_35
+// -> rv_plic
+// -> sm1_36
+// -> pinmux
+// -> sm1_37
+// -> alert_handler
+// -> sm1_38
// -> nmi_gen
// dm_sba
-// -> s1n_35
+// -> s1n_39
// -> sm1_19
// -> rom
// -> sm1_21
// -> ram_main
// -> sm1_22
// -> eflash
-// -> sm1_24
-// -> uart
// -> sm1_25
-// -> gpio
-// -> sm1_26
-// -> spi_device
+// -> asf_24
+// -> uart
// -> sm1_27
-// -> flash_ctrl
-// -> sm1_28
-// -> rv_timer
+// -> asf_26
+// -> gpio
// -> sm1_29
-// -> aes
+// -> asf_28
+// -> spi_device
// -> sm1_30
-// -> hmac
-// -> sm1_31
-// -> rv_plic
+// -> flash_ctrl
// -> sm1_32
-// -> pinmux
+// -> asf_31
+// -> rv_timer
// -> sm1_33
-// -> alert_handler
+// -> aes
// -> sm1_34
+// -> hmac
+// -> sm1_35
+// -> rv_plic
+// -> sm1_36
+// -> pinmux
+// -> sm1_37
+// -> alert_handler
+// -> sm1_38
// -> nmi_gen
module xbar_main (
input clk_main_i,
+ input clk_fixed_i,
input rst_main_ni,
+ input rst_fixed_ni,
// Host interfaces
input tlul_pkg::tl_h2d_t tl_corei_i,
@@ -182,12 +192,10 @@
// Create steering signal
logic [3:0] dev_sel_s1n_23;
-
- tl_h2d_t tl_sm1_24_us_h2d [2];
- tl_d2h_t tl_sm1_24_us_d2h [2];
-
- tl_h2d_t tl_sm1_24_ds_h2d ;
- tl_d2h_t tl_sm1_24_ds_d2h ;
+ tl_h2d_t tl_asf_24_us_h2d ;
+ tl_d2h_t tl_asf_24_us_d2h ;
+ tl_h2d_t tl_asf_24_ds_h2d ;
+ tl_d2h_t tl_asf_24_ds_d2h ;
tl_h2d_t tl_sm1_25_us_h2d [2];
@@ -196,12 +204,10 @@
tl_h2d_t tl_sm1_25_ds_h2d ;
tl_d2h_t tl_sm1_25_ds_d2h ;
-
- tl_h2d_t tl_sm1_26_us_h2d [2];
- tl_d2h_t tl_sm1_26_us_d2h [2];
-
- tl_h2d_t tl_sm1_26_ds_h2d ;
- tl_d2h_t tl_sm1_26_ds_d2h ;
+ tl_h2d_t tl_asf_26_us_h2d ;
+ tl_d2h_t tl_asf_26_us_d2h ;
+ tl_h2d_t tl_asf_26_ds_h2d ;
+ tl_d2h_t tl_asf_26_ds_d2h ;
tl_h2d_t tl_sm1_27_us_h2d [2];
@@ -210,12 +216,10 @@
tl_h2d_t tl_sm1_27_ds_h2d ;
tl_d2h_t tl_sm1_27_ds_d2h ;
-
- tl_h2d_t tl_sm1_28_us_h2d [2];
- tl_d2h_t tl_sm1_28_us_d2h [2];
-
- tl_h2d_t tl_sm1_28_ds_h2d ;
- tl_d2h_t tl_sm1_28_ds_d2h ;
+ tl_h2d_t tl_asf_28_us_h2d ;
+ tl_d2h_t tl_asf_28_us_d2h ;
+ tl_h2d_t tl_asf_28_ds_h2d ;
+ tl_d2h_t tl_asf_28_ds_d2h ;
tl_h2d_t tl_sm1_29_us_h2d [2];
@@ -231,12 +235,10 @@
tl_h2d_t tl_sm1_30_ds_h2d ;
tl_d2h_t tl_sm1_30_ds_d2h ;
-
- tl_h2d_t tl_sm1_31_us_h2d [2];
- tl_d2h_t tl_sm1_31_us_d2h [2];
-
- tl_h2d_t tl_sm1_31_ds_h2d ;
- tl_d2h_t tl_sm1_31_ds_d2h ;
+ tl_h2d_t tl_asf_31_us_h2d ;
+ tl_d2h_t tl_asf_31_us_d2h ;
+ tl_h2d_t tl_asf_31_ds_h2d ;
+ tl_d2h_t tl_asf_31_ds_d2h ;
tl_h2d_t tl_sm1_32_us_h2d [2];
@@ -259,15 +261,43 @@
tl_h2d_t tl_sm1_34_ds_h2d ;
tl_d2h_t tl_sm1_34_ds_d2h ;
- tl_h2d_t tl_s1n_35_us_h2d ;
- tl_d2h_t tl_s1n_35_us_d2h ;
+
+ tl_h2d_t tl_sm1_35_us_h2d [2];
+ tl_d2h_t tl_sm1_35_us_d2h [2];
+
+ tl_h2d_t tl_sm1_35_ds_h2d ;
+ tl_d2h_t tl_sm1_35_ds_d2h ;
- tl_h2d_t tl_s1n_35_ds_h2d [14];
- tl_d2h_t tl_s1n_35_ds_d2h [14];
+ tl_h2d_t tl_sm1_36_us_h2d [2];
+ tl_d2h_t tl_sm1_36_us_d2h [2];
+
+ tl_h2d_t tl_sm1_36_ds_h2d ;
+ tl_d2h_t tl_sm1_36_ds_d2h ;
+
+
+ tl_h2d_t tl_sm1_37_us_h2d [2];
+ tl_d2h_t tl_sm1_37_us_d2h [2];
+
+ tl_h2d_t tl_sm1_37_ds_h2d ;
+ tl_d2h_t tl_sm1_37_ds_d2h ;
+
+
+ tl_h2d_t tl_sm1_38_us_h2d [2];
+ tl_d2h_t tl_sm1_38_us_d2h [2];
+
+ tl_h2d_t tl_sm1_38_ds_h2d ;
+ tl_d2h_t tl_sm1_38_ds_d2h ;
+
+ tl_h2d_t tl_s1n_39_us_h2d ;
+ tl_d2h_t tl_s1n_39_us_d2h ;
+
+
+ tl_h2d_t tl_s1n_39_ds_h2d [14];
+ tl_d2h_t tl_s1n_39_ds_d2h [14];
// Create steering signal
- logic [3:0] dev_sel_s1n_35;
+ logic [3:0] dev_sel_s1n_39;
@@ -295,80 +325,80 @@
assign tl_sm1_22_us_h2d[1] = tl_s1n_23_ds_h2d[3];
assign tl_s1n_23_ds_d2h[3] = tl_sm1_22_us_d2h[1];
- assign tl_sm1_24_us_h2d[0] = tl_s1n_23_ds_h2d[4];
- assign tl_s1n_23_ds_d2h[4] = tl_sm1_24_us_d2h[0];
+ assign tl_sm1_25_us_h2d[0] = tl_s1n_23_ds_h2d[4];
+ assign tl_s1n_23_ds_d2h[4] = tl_sm1_25_us_d2h[0];
- assign tl_sm1_25_us_h2d[0] = tl_s1n_23_ds_h2d[5];
- assign tl_s1n_23_ds_d2h[5] = tl_sm1_25_us_d2h[0];
+ assign tl_sm1_27_us_h2d[0] = tl_s1n_23_ds_h2d[5];
+ assign tl_s1n_23_ds_d2h[5] = tl_sm1_27_us_d2h[0];
- assign tl_sm1_26_us_h2d[0] = tl_s1n_23_ds_h2d[6];
- assign tl_s1n_23_ds_d2h[6] = tl_sm1_26_us_d2h[0];
+ assign tl_sm1_29_us_h2d[0] = tl_s1n_23_ds_h2d[6];
+ assign tl_s1n_23_ds_d2h[6] = tl_sm1_29_us_d2h[0];
- assign tl_sm1_27_us_h2d[0] = tl_s1n_23_ds_h2d[7];
- assign tl_s1n_23_ds_d2h[7] = tl_sm1_27_us_d2h[0];
+ assign tl_sm1_30_us_h2d[0] = tl_s1n_23_ds_h2d[7];
+ assign tl_s1n_23_ds_d2h[7] = tl_sm1_30_us_d2h[0];
- assign tl_sm1_28_us_h2d[0] = tl_s1n_23_ds_h2d[8];
- assign tl_s1n_23_ds_d2h[8] = tl_sm1_28_us_d2h[0];
+ assign tl_sm1_32_us_h2d[0] = tl_s1n_23_ds_h2d[8];
+ assign tl_s1n_23_ds_d2h[8] = tl_sm1_32_us_d2h[0];
- assign tl_sm1_29_us_h2d[0] = tl_s1n_23_ds_h2d[9];
- assign tl_s1n_23_ds_d2h[9] = tl_sm1_29_us_d2h[0];
+ assign tl_sm1_33_us_h2d[0] = tl_s1n_23_ds_h2d[9];
+ assign tl_s1n_23_ds_d2h[9] = tl_sm1_33_us_d2h[0];
- assign tl_sm1_30_us_h2d[0] = tl_s1n_23_ds_h2d[10];
- assign tl_s1n_23_ds_d2h[10] = tl_sm1_30_us_d2h[0];
+ assign tl_sm1_34_us_h2d[0] = tl_s1n_23_ds_h2d[10];
+ assign tl_s1n_23_ds_d2h[10] = tl_sm1_34_us_d2h[0];
- assign tl_sm1_31_us_h2d[0] = tl_s1n_23_ds_h2d[11];
- assign tl_s1n_23_ds_d2h[11] = tl_sm1_31_us_d2h[0];
+ assign tl_sm1_35_us_h2d[0] = tl_s1n_23_ds_h2d[11];
+ assign tl_s1n_23_ds_d2h[11] = tl_sm1_35_us_d2h[0];
- assign tl_sm1_32_us_h2d[0] = tl_s1n_23_ds_h2d[12];
- assign tl_s1n_23_ds_d2h[12] = tl_sm1_32_us_d2h[0];
+ assign tl_sm1_36_us_h2d[0] = tl_s1n_23_ds_h2d[12];
+ assign tl_s1n_23_ds_d2h[12] = tl_sm1_36_us_d2h[0];
- assign tl_sm1_33_us_h2d[0] = tl_s1n_23_ds_h2d[13];
- assign tl_s1n_23_ds_d2h[13] = tl_sm1_33_us_d2h[0];
+ assign tl_sm1_37_us_h2d[0] = tl_s1n_23_ds_h2d[13];
+ assign tl_s1n_23_ds_d2h[13] = tl_sm1_37_us_d2h[0];
- assign tl_sm1_34_us_h2d[0] = tl_s1n_23_ds_h2d[14];
- assign tl_s1n_23_ds_d2h[14] = tl_sm1_34_us_d2h[0];
+ assign tl_sm1_38_us_h2d[0] = tl_s1n_23_ds_h2d[14];
+ assign tl_s1n_23_ds_d2h[14] = tl_sm1_38_us_d2h[0];
- assign tl_sm1_19_us_h2d[2] = tl_s1n_35_ds_h2d[0];
- assign tl_s1n_35_ds_d2h[0] = tl_sm1_19_us_d2h[2];
+ assign tl_sm1_19_us_h2d[2] = tl_s1n_39_ds_h2d[0];
+ assign tl_s1n_39_ds_d2h[0] = tl_sm1_19_us_d2h[2];
- assign tl_sm1_21_us_h2d[2] = tl_s1n_35_ds_h2d[1];
- assign tl_s1n_35_ds_d2h[1] = tl_sm1_21_us_d2h[2];
+ assign tl_sm1_21_us_h2d[2] = tl_s1n_39_ds_h2d[1];
+ assign tl_s1n_39_ds_d2h[1] = tl_sm1_21_us_d2h[2];
- assign tl_sm1_22_us_h2d[2] = tl_s1n_35_ds_h2d[2];
- assign tl_s1n_35_ds_d2h[2] = tl_sm1_22_us_d2h[2];
+ assign tl_sm1_22_us_h2d[2] = tl_s1n_39_ds_h2d[2];
+ assign tl_s1n_39_ds_d2h[2] = tl_sm1_22_us_d2h[2];
- assign tl_sm1_24_us_h2d[1] = tl_s1n_35_ds_h2d[3];
- assign tl_s1n_35_ds_d2h[3] = tl_sm1_24_us_d2h[1];
+ assign tl_sm1_25_us_h2d[1] = tl_s1n_39_ds_h2d[3];
+ assign tl_s1n_39_ds_d2h[3] = tl_sm1_25_us_d2h[1];
- assign tl_sm1_25_us_h2d[1] = tl_s1n_35_ds_h2d[4];
- assign tl_s1n_35_ds_d2h[4] = tl_sm1_25_us_d2h[1];
+ assign tl_sm1_27_us_h2d[1] = tl_s1n_39_ds_h2d[4];
+ assign tl_s1n_39_ds_d2h[4] = tl_sm1_27_us_d2h[1];
- assign tl_sm1_26_us_h2d[1] = tl_s1n_35_ds_h2d[5];
- assign tl_s1n_35_ds_d2h[5] = tl_sm1_26_us_d2h[1];
+ assign tl_sm1_29_us_h2d[1] = tl_s1n_39_ds_h2d[5];
+ assign tl_s1n_39_ds_d2h[5] = tl_sm1_29_us_d2h[1];
- assign tl_sm1_27_us_h2d[1] = tl_s1n_35_ds_h2d[6];
- assign tl_s1n_35_ds_d2h[6] = tl_sm1_27_us_d2h[1];
+ assign tl_sm1_30_us_h2d[1] = tl_s1n_39_ds_h2d[6];
+ assign tl_s1n_39_ds_d2h[6] = tl_sm1_30_us_d2h[1];
- assign tl_sm1_28_us_h2d[1] = tl_s1n_35_ds_h2d[7];
- assign tl_s1n_35_ds_d2h[7] = tl_sm1_28_us_d2h[1];
+ assign tl_sm1_32_us_h2d[1] = tl_s1n_39_ds_h2d[7];
+ assign tl_s1n_39_ds_d2h[7] = tl_sm1_32_us_d2h[1];
- assign tl_sm1_29_us_h2d[1] = tl_s1n_35_ds_h2d[8];
- assign tl_s1n_35_ds_d2h[8] = tl_sm1_29_us_d2h[1];
+ assign tl_sm1_33_us_h2d[1] = tl_s1n_39_ds_h2d[8];
+ assign tl_s1n_39_ds_d2h[8] = tl_sm1_33_us_d2h[1];
- assign tl_sm1_30_us_h2d[1] = tl_s1n_35_ds_h2d[9];
- assign tl_s1n_35_ds_d2h[9] = tl_sm1_30_us_d2h[1];
+ assign tl_sm1_34_us_h2d[1] = tl_s1n_39_ds_h2d[9];
+ assign tl_s1n_39_ds_d2h[9] = tl_sm1_34_us_d2h[1];
- assign tl_sm1_31_us_h2d[1] = tl_s1n_35_ds_h2d[10];
- assign tl_s1n_35_ds_d2h[10] = tl_sm1_31_us_d2h[1];
+ assign tl_sm1_35_us_h2d[1] = tl_s1n_39_ds_h2d[10];
+ assign tl_s1n_39_ds_d2h[10] = tl_sm1_35_us_d2h[1];
- assign tl_sm1_32_us_h2d[1] = tl_s1n_35_ds_h2d[11];
- assign tl_s1n_35_ds_d2h[11] = tl_sm1_32_us_d2h[1];
+ assign tl_sm1_36_us_h2d[1] = tl_s1n_39_ds_h2d[11];
+ assign tl_s1n_39_ds_d2h[11] = tl_sm1_36_us_d2h[1];
- assign tl_sm1_33_us_h2d[1] = tl_s1n_35_ds_h2d[12];
- assign tl_s1n_35_ds_d2h[12] = tl_sm1_33_us_d2h[1];
+ assign tl_sm1_37_us_h2d[1] = tl_s1n_39_ds_h2d[12];
+ assign tl_s1n_39_ds_d2h[12] = tl_sm1_37_us_d2h[1];
- assign tl_sm1_34_us_h2d[1] = tl_s1n_35_ds_h2d[13];
- assign tl_s1n_35_ds_d2h[13] = tl_sm1_34_us_d2h[1];
+ assign tl_sm1_38_us_h2d[1] = tl_s1n_39_ds_h2d[13];
+ assign tl_s1n_39_ds_d2h[13] = tl_sm1_38_us_d2h[1];
assign tl_s1n_18_us_h2d = tl_corei_i;
assign tl_corei_o = tl_s1n_18_us_d2h;
@@ -388,41 +418,53 @@
assign tl_s1n_23_us_h2d = tl_cored_i;
assign tl_cored_o = tl_s1n_23_us_d2h;
- assign tl_uart_o = tl_sm1_24_ds_h2d;
- assign tl_sm1_24_ds_d2h = tl_uart_i;
+ assign tl_uart_o = tl_asf_24_ds_h2d;
+ assign tl_asf_24_ds_d2h = tl_uart_i;
- assign tl_gpio_o = tl_sm1_25_ds_h2d;
- assign tl_sm1_25_ds_d2h = tl_gpio_i;
+ assign tl_asf_24_us_h2d = tl_sm1_25_ds_h2d;
+ assign tl_sm1_25_ds_d2h = tl_asf_24_us_d2h;
- assign tl_spi_device_o = tl_sm1_26_ds_h2d;
- assign tl_sm1_26_ds_d2h = tl_spi_device_i;
+ assign tl_gpio_o = tl_asf_26_ds_h2d;
+ assign tl_asf_26_ds_d2h = tl_gpio_i;
- assign tl_flash_ctrl_o = tl_sm1_27_ds_h2d;
- assign tl_sm1_27_ds_d2h = tl_flash_ctrl_i;
+ assign tl_asf_26_us_h2d = tl_sm1_27_ds_h2d;
+ assign tl_sm1_27_ds_d2h = tl_asf_26_us_d2h;
- assign tl_rv_timer_o = tl_sm1_28_ds_h2d;
- assign tl_sm1_28_ds_d2h = tl_rv_timer_i;
+ assign tl_spi_device_o = tl_asf_28_ds_h2d;
+ assign tl_asf_28_ds_d2h = tl_spi_device_i;
- assign tl_aes_o = tl_sm1_29_ds_h2d;
- assign tl_sm1_29_ds_d2h = tl_aes_i;
+ assign tl_asf_28_us_h2d = tl_sm1_29_ds_h2d;
+ assign tl_sm1_29_ds_d2h = tl_asf_28_us_d2h;
- assign tl_hmac_o = tl_sm1_30_ds_h2d;
- assign tl_sm1_30_ds_d2h = tl_hmac_i;
+ assign tl_flash_ctrl_o = tl_sm1_30_ds_h2d;
+ assign tl_sm1_30_ds_d2h = tl_flash_ctrl_i;
- assign tl_rv_plic_o = tl_sm1_31_ds_h2d;
- assign tl_sm1_31_ds_d2h = tl_rv_plic_i;
+ assign tl_rv_timer_o = tl_asf_31_ds_h2d;
+ assign tl_asf_31_ds_d2h = tl_rv_timer_i;
- assign tl_pinmux_o = tl_sm1_32_ds_h2d;
- assign tl_sm1_32_ds_d2h = tl_pinmux_i;
+ assign tl_asf_31_us_h2d = tl_sm1_32_ds_h2d;
+ assign tl_sm1_32_ds_d2h = tl_asf_31_us_d2h;
- assign tl_alert_handler_o = tl_sm1_33_ds_h2d;
- assign tl_sm1_33_ds_d2h = tl_alert_handler_i;
+ assign tl_aes_o = tl_sm1_33_ds_h2d;
+ assign tl_sm1_33_ds_d2h = tl_aes_i;
- assign tl_nmi_gen_o = tl_sm1_34_ds_h2d;
- assign tl_sm1_34_ds_d2h = tl_nmi_gen_i;
+ assign tl_hmac_o = tl_sm1_34_ds_h2d;
+ assign tl_sm1_34_ds_d2h = tl_hmac_i;
- assign tl_s1n_35_us_h2d = tl_dm_sba_i;
- assign tl_dm_sba_o = tl_s1n_35_us_d2h;
+ assign tl_rv_plic_o = tl_sm1_35_ds_h2d;
+ assign tl_sm1_35_ds_d2h = tl_rv_plic_i;
+
+ assign tl_pinmux_o = tl_sm1_36_ds_h2d;
+ assign tl_sm1_36_ds_d2h = tl_pinmux_i;
+
+ assign tl_alert_handler_o = tl_sm1_37_ds_h2d;
+ assign tl_sm1_37_ds_d2h = tl_alert_handler_i;
+
+ assign tl_nmi_gen_o = tl_sm1_38_ds_h2d;
+ assign tl_sm1_38_ds_d2h = tl_nmi_gen_i;
+
+ assign tl_s1n_39_us_h2d = tl_dm_sba_i;
+ assign tl_dm_sba_o = tl_s1n_39_us_d2h;
always_comb begin
// default steering to generate error response if address is not within the range
@@ -476,35 +518,35 @@
always_comb begin
// default steering to generate error response if address is not within the range
- dev_sel_s1n_35 = 4'd14;
- if ((tl_s1n_35_us_h2d.a_address & ~(ADDR_MASK_ROM)) == ADDR_SPACE_ROM) begin
- dev_sel_s1n_35 = 4'd0;
- end else if ((tl_s1n_35_us_h2d.a_address & ~(ADDR_MASK_RAM_MAIN)) == ADDR_SPACE_RAM_MAIN) begin
- dev_sel_s1n_35 = 4'd1;
- end else if ((tl_s1n_35_us_h2d.a_address & ~(ADDR_MASK_EFLASH)) == ADDR_SPACE_EFLASH) begin
- dev_sel_s1n_35 = 4'd2;
- end else if ((tl_s1n_35_us_h2d.a_address & ~(ADDR_MASK_UART)) == ADDR_SPACE_UART) begin
- dev_sel_s1n_35 = 4'd3;
- end else if ((tl_s1n_35_us_h2d.a_address & ~(ADDR_MASK_GPIO)) == ADDR_SPACE_GPIO) begin
- dev_sel_s1n_35 = 4'd4;
- end else if ((tl_s1n_35_us_h2d.a_address & ~(ADDR_MASK_SPI_DEVICE)) == ADDR_SPACE_SPI_DEVICE) begin
- dev_sel_s1n_35 = 4'd5;
- end else if ((tl_s1n_35_us_h2d.a_address & ~(ADDR_MASK_FLASH_CTRL)) == ADDR_SPACE_FLASH_CTRL) begin
- dev_sel_s1n_35 = 4'd6;
- end else if ((tl_s1n_35_us_h2d.a_address & ~(ADDR_MASK_RV_TIMER)) == ADDR_SPACE_RV_TIMER) begin
- dev_sel_s1n_35 = 4'd7;
- end else if ((tl_s1n_35_us_h2d.a_address & ~(ADDR_MASK_AES)) == ADDR_SPACE_AES) begin
- dev_sel_s1n_35 = 4'd8;
- end else if ((tl_s1n_35_us_h2d.a_address & ~(ADDR_MASK_HMAC)) == ADDR_SPACE_HMAC) begin
- dev_sel_s1n_35 = 4'd9;
- end else if ((tl_s1n_35_us_h2d.a_address & ~(ADDR_MASK_RV_PLIC)) == ADDR_SPACE_RV_PLIC) begin
- dev_sel_s1n_35 = 4'd10;
- end else if ((tl_s1n_35_us_h2d.a_address & ~(ADDR_MASK_PINMUX)) == ADDR_SPACE_PINMUX) begin
- dev_sel_s1n_35 = 4'd11;
- end else if ((tl_s1n_35_us_h2d.a_address & ~(ADDR_MASK_ALERT_HANDLER)) == ADDR_SPACE_ALERT_HANDLER) begin
- dev_sel_s1n_35 = 4'd12;
- end else if ((tl_s1n_35_us_h2d.a_address & ~(ADDR_MASK_NMI_GEN)) == ADDR_SPACE_NMI_GEN) begin
- dev_sel_s1n_35 = 4'd13;
+ dev_sel_s1n_39 = 4'd14;
+ if ((tl_s1n_39_us_h2d.a_address & ~(ADDR_MASK_ROM)) == ADDR_SPACE_ROM) begin
+ dev_sel_s1n_39 = 4'd0;
+ end else if ((tl_s1n_39_us_h2d.a_address & ~(ADDR_MASK_RAM_MAIN)) == ADDR_SPACE_RAM_MAIN) begin
+ dev_sel_s1n_39 = 4'd1;
+ end else if ((tl_s1n_39_us_h2d.a_address & ~(ADDR_MASK_EFLASH)) == ADDR_SPACE_EFLASH) begin
+ dev_sel_s1n_39 = 4'd2;
+ end else if ((tl_s1n_39_us_h2d.a_address & ~(ADDR_MASK_UART)) == ADDR_SPACE_UART) begin
+ dev_sel_s1n_39 = 4'd3;
+ end else if ((tl_s1n_39_us_h2d.a_address & ~(ADDR_MASK_GPIO)) == ADDR_SPACE_GPIO) begin
+ dev_sel_s1n_39 = 4'd4;
+ end else if ((tl_s1n_39_us_h2d.a_address & ~(ADDR_MASK_SPI_DEVICE)) == ADDR_SPACE_SPI_DEVICE) begin
+ dev_sel_s1n_39 = 4'd5;
+ end else if ((tl_s1n_39_us_h2d.a_address & ~(ADDR_MASK_FLASH_CTRL)) == ADDR_SPACE_FLASH_CTRL) begin
+ dev_sel_s1n_39 = 4'd6;
+ end else if ((tl_s1n_39_us_h2d.a_address & ~(ADDR_MASK_RV_TIMER)) == ADDR_SPACE_RV_TIMER) begin
+ dev_sel_s1n_39 = 4'd7;
+ end else if ((tl_s1n_39_us_h2d.a_address & ~(ADDR_MASK_AES)) == ADDR_SPACE_AES) begin
+ dev_sel_s1n_39 = 4'd8;
+ end else if ((tl_s1n_39_us_h2d.a_address & ~(ADDR_MASK_HMAC)) == ADDR_SPACE_HMAC) begin
+ dev_sel_s1n_39 = 4'd9;
+ end else if ((tl_s1n_39_us_h2d.a_address & ~(ADDR_MASK_RV_PLIC)) == ADDR_SPACE_RV_PLIC) begin
+ dev_sel_s1n_39 = 4'd10;
+ end else if ((tl_s1n_39_us_h2d.a_address & ~(ADDR_MASK_PINMUX)) == ADDR_SPACE_PINMUX) begin
+ dev_sel_s1n_39 = 4'd11;
+ end else if ((tl_s1n_39_us_h2d.a_address & ~(ADDR_MASK_ALERT_HANDLER)) == ADDR_SPACE_ALERT_HANDLER) begin
+ dev_sel_s1n_39 = 4'd12;
+ end else if ((tl_s1n_39_us_h2d.a_address & ~(ADDR_MASK_NMI_GEN)) == ADDR_SPACE_NMI_GEN) begin
+ dev_sel_s1n_39 = 4'd13;
end
end
@@ -596,25 +638,20 @@
.tl_d_i (tl_s1n_23_ds_d2h),
.dev_select (dev_sel_s1n_23)
);
- tlul_socket_m1 #(
- .HReqPass (2'h0),
- .HRspPass (2'h0),
- .DReqPass (1'b0),
- .DRspPass (1'b0),
- .M (2)
- ) u_sm1_24 (
- .clk_i (clk_main_i),
- .rst_ni (rst_main_ni),
- .tl_h_i (tl_sm1_24_us_h2d),
- .tl_h_o (tl_sm1_24_us_d2h),
- .tl_d_o (tl_sm1_24_ds_h2d),
- .tl_d_i (tl_sm1_24_ds_d2h)
+ tlul_fifo_async #(
+ .ReqDepth (3),// At least 3 to make async work
+ .RspDepth (3) // At least 3 to make async work
+ ) u_asf_24 (
+ .clk_h_i (clk_main_i),
+ .rst_h_ni (rst_main_ni),
+ .clk_d_i (clk_fixed_i),
+ .rst_d_ni (rst_fixed_ni),
+ .tl_h_i (tl_asf_24_us_h2d),
+ .tl_h_o (tl_asf_24_us_d2h),
+ .tl_d_o (tl_asf_24_ds_h2d),
+ .tl_d_i (tl_asf_24_ds_d2h)
);
tlul_socket_m1 #(
- .HReqPass (2'h0),
- .HRspPass (2'h0),
- .DReqPass (1'b0),
- .DRspPass (1'b0),
.M (2)
) u_sm1_25 (
.clk_i (clk_main_i),
@@ -624,25 +661,20 @@
.tl_d_o (tl_sm1_25_ds_h2d),
.tl_d_i (tl_sm1_25_ds_d2h)
);
- tlul_socket_m1 #(
- .HReqPass (2'h0),
- .HRspPass (2'h0),
- .DReqPass (1'b0),
- .DRspPass (1'b0),
- .M (2)
- ) u_sm1_26 (
- .clk_i (clk_main_i),
- .rst_ni (rst_main_ni),
- .tl_h_i (tl_sm1_26_us_h2d),
- .tl_h_o (tl_sm1_26_us_d2h),
- .tl_d_o (tl_sm1_26_ds_h2d),
- .tl_d_i (tl_sm1_26_ds_d2h)
+ tlul_fifo_async #(
+ .ReqDepth (3),// At least 3 to make async work
+ .RspDepth (3) // At least 3 to make async work
+ ) u_asf_26 (
+ .clk_h_i (clk_main_i),
+ .rst_h_ni (rst_main_ni),
+ .clk_d_i (clk_fixed_i),
+ .rst_d_ni (rst_fixed_ni),
+ .tl_h_i (tl_asf_26_us_h2d),
+ .tl_h_o (tl_asf_26_us_d2h),
+ .tl_d_o (tl_asf_26_ds_h2d),
+ .tl_d_i (tl_asf_26_ds_d2h)
);
tlul_socket_m1 #(
- .HReqPass (2'h0),
- .HRspPass (2'h0),
- .DReqPass (1'b0),
- .DRspPass (1'b0),
.M (2)
) u_sm1_27 (
.clk_i (clk_main_i),
@@ -652,25 +684,20 @@
.tl_d_o (tl_sm1_27_ds_h2d),
.tl_d_i (tl_sm1_27_ds_d2h)
);
- tlul_socket_m1 #(
- .HReqPass (2'h0),
- .HRspPass (2'h0),
- .DReqPass (1'b0),
- .DRspPass (1'b0),
- .M (2)
- ) u_sm1_28 (
- .clk_i (clk_main_i),
- .rst_ni (rst_main_ni),
- .tl_h_i (tl_sm1_28_us_h2d),
- .tl_h_o (tl_sm1_28_us_d2h),
- .tl_d_o (tl_sm1_28_ds_h2d),
- .tl_d_i (tl_sm1_28_ds_d2h)
+ tlul_fifo_async #(
+ .ReqDepth (3),// At least 3 to make async work
+ .RspDepth (3) // At least 3 to make async work
+ ) u_asf_28 (
+ .clk_h_i (clk_main_i),
+ .rst_h_ni (rst_main_ni),
+ .clk_d_i (clk_fixed_i),
+ .rst_d_ni (rst_fixed_ni),
+ .tl_h_i (tl_asf_28_us_h2d),
+ .tl_h_o (tl_asf_28_us_d2h),
+ .tl_d_o (tl_asf_28_ds_h2d),
+ .tl_d_i (tl_asf_28_ds_d2h)
);
tlul_socket_m1 #(
- .HReqPass (2'h0),
- .HRspPass (2'h0),
- .DReqPass (1'b0),
- .DRspPass (1'b0),
.M (2)
) u_sm1_29 (
.clk_i (clk_main_i),
@@ -694,25 +721,20 @@
.tl_d_o (tl_sm1_30_ds_h2d),
.tl_d_i (tl_sm1_30_ds_d2h)
);
- tlul_socket_m1 #(
- .HReqPass (2'h0),
- .HRspPass (2'h0),
- .DReqPass (1'b0),
- .DRspPass (1'b0),
- .M (2)
- ) u_sm1_31 (
- .clk_i (clk_main_i),
- .rst_ni (rst_main_ni),
- .tl_h_i (tl_sm1_31_us_h2d),
- .tl_h_o (tl_sm1_31_us_d2h),
- .tl_d_o (tl_sm1_31_ds_h2d),
- .tl_d_i (tl_sm1_31_ds_d2h)
+ tlul_fifo_async #(
+ .ReqDepth (3),// At least 3 to make async work
+ .RspDepth (3) // At least 3 to make async work
+ ) u_asf_31 (
+ .clk_h_i (clk_main_i),
+ .rst_h_ni (rst_main_ni),
+ .clk_d_i (clk_fixed_i),
+ .rst_d_ni (rst_fixed_ni),
+ .tl_h_i (tl_asf_31_us_h2d),
+ .tl_h_o (tl_asf_31_us_d2h),
+ .tl_d_o (tl_asf_31_ds_h2d),
+ .tl_d_i (tl_asf_31_ds_d2h)
);
tlul_socket_m1 #(
- .HReqPass (2'h0),
- .HRspPass (2'h0),
- .DReqPass (1'b0),
- .DRspPass (1'b0),
.M (2)
) u_sm1_32 (
.clk_i (clk_main_i),
@@ -750,20 +772,76 @@
.tl_d_o (tl_sm1_34_ds_h2d),
.tl_d_i (tl_sm1_34_ds_d2h)
);
+ tlul_socket_m1 #(
+ .HReqPass (2'h0),
+ .HRspPass (2'h0),
+ .DReqPass (1'b0),
+ .DRspPass (1'b0),
+ .M (2)
+ ) u_sm1_35 (
+ .clk_i (clk_main_i),
+ .rst_ni (rst_main_ni),
+ .tl_h_i (tl_sm1_35_us_h2d),
+ .tl_h_o (tl_sm1_35_us_d2h),
+ .tl_d_o (tl_sm1_35_ds_h2d),
+ .tl_d_i (tl_sm1_35_ds_d2h)
+ );
+ tlul_socket_m1 #(
+ .HReqPass (2'h0),
+ .HRspPass (2'h0),
+ .DReqPass (1'b0),
+ .DRspPass (1'b0),
+ .M (2)
+ ) u_sm1_36 (
+ .clk_i (clk_main_i),
+ .rst_ni (rst_main_ni),
+ .tl_h_i (tl_sm1_36_us_h2d),
+ .tl_h_o (tl_sm1_36_us_d2h),
+ .tl_d_o (tl_sm1_36_ds_h2d),
+ .tl_d_i (tl_sm1_36_ds_d2h)
+ );
+ tlul_socket_m1 #(
+ .HReqPass (2'h0),
+ .HRspPass (2'h0),
+ .DReqPass (1'b0),
+ .DRspPass (1'b0),
+ .M (2)
+ ) u_sm1_37 (
+ .clk_i (clk_main_i),
+ .rst_ni (rst_main_ni),
+ .tl_h_i (tl_sm1_37_us_h2d),
+ .tl_h_o (tl_sm1_37_us_d2h),
+ .tl_d_o (tl_sm1_37_ds_h2d),
+ .tl_d_i (tl_sm1_37_ds_d2h)
+ );
+ tlul_socket_m1 #(
+ .HReqPass (2'h0),
+ .HRspPass (2'h0),
+ .DReqPass (1'b0),
+ .DRspPass (1'b0),
+ .M (2)
+ ) u_sm1_38 (
+ .clk_i (clk_main_i),
+ .rst_ni (rst_main_ni),
+ .tl_h_i (tl_sm1_38_us_h2d),
+ .tl_h_o (tl_sm1_38_us_d2h),
+ .tl_d_o (tl_sm1_38_ds_h2d),
+ .tl_d_i (tl_sm1_38_ds_d2h)
+ );
tlul_socket_1n #(
.HReqPass (1'b0),
.HRspPass (1'b0),
.DReqPass (14'h0),
.DRspPass (14'h0),
.N (14)
- ) u_s1n_35 (
+ ) u_s1n_39 (
.clk_i (clk_main_i),
.rst_ni (rst_main_ni),
- .tl_h_i (tl_s1n_35_us_h2d),
- .tl_h_o (tl_s1n_35_us_d2h),
- .tl_d_o (tl_s1n_35_ds_h2d),
- .tl_d_i (tl_s1n_35_ds_d2h),
- .dev_select (dev_sel_s1n_35)
+ .tl_h_i (tl_s1n_39_us_h2d),
+ .tl_h_o (tl_s1n_39_us_d2h),
+ .tl_d_o (tl_s1n_39_ds_h2d),
+ .tl_d_i (tl_s1n_39_ds_d2h),
+ .dev_select (dev_sel_s1n_39)
);
endmodule
diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
index 0720b72..b79ceb0 100644
--- a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
+++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
@@ -96,10 +96,12 @@
//reset wires declaration
logic lc_rst_n;
logic sys_rst_n;
+ logic sys_fixed_rst_n;
logic spi_device_rst_n;
//clock wires declaration
logic main_clk;
+ logic fixed_clk;
// Signals
logic [31:0] m2p;
@@ -185,6 +187,7 @@
// clock assignments
assign main_clk = clk_i;
+ assign fixed_clk = clk_i;
// Non-debug module reset == reset for everything except for the debug module
logic ndmreset_req;
@@ -196,6 +199,7 @@
assign sys_rst_n = (scanmode_i) ? lc_rst_n : ~ndmreset_req & lc_rst_n;
//non-root reset assignments
+ assign sys_fixed_rst_n = sys_rst_n;
assign spi_device_rst_n = sys_rst_n;
// debug request from rv_dm to core
@@ -434,8 +438,8 @@
.intr_rx_timeout_o (intr_uart_rx_timeout),
.intr_rx_parity_err_o (intr_uart_rx_parity_err),
- .clk_i (main_clk),
- .rst_ni (sys_rst_n)
+ .clk_i (fixed_clk),
+ .rst_ni (sys_fixed_rst_n)
);
gpio gpio (
@@ -452,8 +456,8 @@
// Interrupt
.intr_gpio_o (intr_gpio_gpio),
- .clk_i (main_clk),
- .rst_ni (sys_rst_n)
+ .clk_i (fixed_clk),
+ .rst_ni (sys_fixed_rst_n)
);
spi_device spi_device (
@@ -478,7 +482,7 @@
.intr_txunderflow_o (intr_spi_device_txunderflow),
.scanmode_i (scanmode_i),
- .clk_i (main_clk),
+ .clk_i (fixed_clk),
.rst_ni (spi_device_rst_n)
);
@@ -508,8 +512,8 @@
// Interrupt
.intr_timer_expired_0_0_o (intr_rv_timer_timer_expired_0_0),
- .clk_i (main_clk),
- .rst_ni (sys_rst_n)
+ .clk_i (fixed_clk),
+ .rst_ni (sys_fixed_rst_n)
);
aes aes (
@@ -646,7 +650,9 @@
// TL-UL Crossbar
xbar_main u_xbar_main (
.clk_main_i (main_clk),
+ .clk_fixed_i (fixed_clk),
.rst_main_ni (sys_rst_n),
+ .rst_fixed_ni (sys_fixed_rst_n),
.tl_corei_i (tl_corei_h_h2d),
.tl_corei_o (tl_corei_h_d2h),
.tl_cored_i (tl_cored_h_h2d),