summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2023-09-29 19:50:01 -0600
committerAlejandro Soto <alejandro@34project.org>2023-09-29 20:51:28 -0600
commitbc98bc905c2e796f0d587719196f7e4bf344510a (patch)
treef5859d0b2f4fd5ab8c785a7cbaffa54dc81bc797
parentf06c23ac1327850eeeb390e155bfc6330d302a77 (diff)
platform: add CPUs and caches to qsys
Diffstat (limited to '')
-rw-r--r--cache_hw.tcl256
-rw-r--r--core_hw.tcl2
-rw-r--r--platform.qsys213
-rw-r--r--rtl/cache/cache.sv64
-rw-r--r--rtl/cache/cache_control.sv (renamed from rtl/cache/control.sv)0
-rw-r--r--rtl/cache/defs.sv8
-rw-r--r--rtl/core/cp15/cache_ops.sv (renamed from rtl/core/cp15/cache.sv)0
7 files changed, 488 insertions, 55 deletions
diff --git a/cache_hw.tcl b/cache_hw.tcl
new file mode 100644
index 0000000..7cae804
--- /dev/null
+++ b/cache_hw.tcl
@@ -0,0 +1,256 @@
+# TCL File Generated by Component Editor 20.1
+# Sat Sep 30 02:25:24 GMT 2023
+# DO NOT MODIFY
+
+
+#
+# cache "8KiB 1-way cache w/ controller" v1.0
+# 2023.09.30.02:25:24
+#
+#
+
+#
+# request TCL package from ACDS 16.1
+#
+package require -exact qsys 16.1
+
+
+#
+# module cache
+#
+set_module_property DESCRIPTION ""
+set_module_property NAME cache
+set_module_property VERSION 1.0
+set_module_property INTERNAL false
+set_module_property OPAQUE_ADDRESS_MAP true
+set_module_property AUTHOR ""
+set_module_property DISPLAY_NAME "8KiB 1-way cache w/ controller"
+set_module_property INSTANTIATE_IN_SYSTEM_MODULE true
+set_module_property EDITABLE true
+set_module_property REPORT_TO_TALKBACK false
+set_module_property ALLOW_GREYBOX_GENERATION false
+set_module_property REPORT_HIERARCHY false
+
+
+#
+# file sets
+#
+add_fileset QUARTUS_SYNTH QUARTUS_SYNTH "" ""
+set_fileset_property QUARTUS_SYNTH TOP_LEVEL cache
+set_fileset_property QUARTUS_SYNTH ENABLE_RELATIVE_INCLUDE_PATHS false
+set_fileset_property QUARTUS_SYNTH ENABLE_FILE_OVERWRITE_MODE false
+add_fileset_file cache.sv SYSTEM_VERILOG PATH rtl/cache/cache.sv TOP_LEVEL_FILE
+add_fileset_file cache_control.sv SYSTEM_VERILOG PATH rtl/cache/cache_control.sv
+add_fileset_file defs.sv SYSTEM_VERILOG PATH rtl/cache/defs.sv
+add_fileset_file offsets.sv SYSTEM_VERILOG PATH rtl/cache/offsets.sv
+add_fileset_file routing.sv SYSTEM_VERILOG PATH rtl/cache/routing.sv
+add_fileset_file sram.sv SYSTEM_VERILOG PATH rtl/cache/sram.sv
+
+
+#
+# parameters
+#
+add_parameter TOKEN_AT_RESET INTEGER 0
+set_parameter_property TOKEN_AT_RESET DEFAULT_VALUE 0
+set_parameter_property TOKEN_AT_RESET DISPLAY_NAME TOKEN_AT_RESET
+set_parameter_property TOKEN_AT_RESET TYPE INTEGER
+set_parameter_property TOKEN_AT_RESET UNITS None
+set_parameter_property TOKEN_AT_RESET ALLOWED_RANGES -2147483648:2147483647
+set_parameter_property TOKEN_AT_RESET AFFECTS_GENERATION false
+set_parameter_property TOKEN_AT_RESET HDL_PARAMETER true
+
+
+#
+# display items
+#
+
+
+#
+# connection point clock_sink
+#
+add_interface clock_sink clock end
+set_interface_property clock_sink clockRate 0
+set_interface_property clock_sink ENABLED true
+set_interface_property clock_sink EXPORT_OF ""
+set_interface_property clock_sink PORT_NAME_MAP ""
+set_interface_property clock_sink CMSIS_SVD_VARIABLES ""
+set_interface_property clock_sink SVD_ADDRESS_GROUP ""
+
+add_interface_port clock_sink clk clk Input 1
+
+
+#
+# connection point reset_sink
+#
+add_interface reset_sink reset end
+set_interface_property reset_sink associatedClock clock_sink
+set_interface_property reset_sink synchronousEdges DEASSERT
+set_interface_property reset_sink ENABLED true
+set_interface_property reset_sink EXPORT_OF ""
+set_interface_property reset_sink PORT_NAME_MAP ""
+set_interface_property reset_sink CMSIS_SVD_VARIABLES ""
+set_interface_property reset_sink SVD_ADDRESS_GROUP ""
+
+add_interface_port reset_sink rst_n reset_n Input 1
+
+
+#
+# connection point core
+#
+add_interface core avalon end
+set_interface_property core addressUnits WORDS
+set_interface_property core associatedClock clock_sink
+set_interface_property core associatedReset reset_sink
+set_interface_property core bitsPerSymbol 8
+set_interface_property core burstOnBurstBoundariesOnly false
+set_interface_property core burstcountUnits WORDS
+set_interface_property core explicitAddressSpan 0
+set_interface_property core holdTime 0
+set_interface_property core linewrapBursts false
+set_interface_property core maximumPendingReadTransactions 0
+set_interface_property core maximumPendingWriteTransactions 0
+set_interface_property core readLatency 0
+set_interface_property core readWaitTime 1
+set_interface_property core setupTime 0
+set_interface_property core timingUnits Cycles
+set_interface_property core writeWaitTime 0
+set_interface_property core ENABLED true
+set_interface_property core EXPORT_OF ""
+set_interface_property core PORT_NAME_MAP ""
+set_interface_property core CMSIS_SVD_VARIABLES ""
+set_interface_property core SVD_ADDRESS_GROUP ""
+
+add_interface_port core core_address address Input 30
+add_interface_port core core_read read Input 1
+add_interface_port core core_write write Input 1
+add_interface_port core core_waitrequest waitrequest Output 1
+add_interface_port core core_readdata readdata Output 32
+add_interface_port core core_writedata writedata Input 32
+add_interface_port core core_byteenable byteenable Input 4
+set_interface_assignment core embeddedsw.configuration.isFlash 0
+set_interface_assignment core embeddedsw.configuration.isMemoryDevice 0
+set_interface_assignment core embeddedsw.configuration.isNonVolatileStorage 0
+set_interface_assignment core embeddedsw.configuration.isPrintableDevice 0
+
+
+#
+# connection point out_data
+#
+add_interface out_data avalon_streaming start
+set_interface_property out_data associatedClock clock_sink
+set_interface_property out_data associatedReset reset_sink
+set_interface_property out_data dataBitsPerSymbol 8
+set_interface_property out_data errorDescriptor ""
+set_interface_property out_data firstSymbolInHighOrderBits true
+set_interface_property out_data maxChannel 0
+set_interface_property out_data readyLatency 0
+set_interface_property out_data ENABLED true
+set_interface_property out_data EXPORT_OF ""
+set_interface_property out_data PORT_NAME_MAP ""
+set_interface_property out_data CMSIS_SVD_VARIABLES ""
+set_interface_property out_data SVD_ADDRESS_GROUP ""
+
+add_interface_port out_data out_data_ready ready Input 1
+add_interface_port out_data out_data_valid valid Output 1
+add_interface_port out_data out_data data Output 160
+
+
+#
+# connection point in_data
+#
+add_interface in_data avalon_streaming end
+set_interface_property in_data associatedClock clock_sink
+set_interface_property in_data associatedReset reset_sink
+set_interface_property in_data dataBitsPerSymbol 8
+set_interface_property in_data errorDescriptor ""
+set_interface_property in_data firstSymbolInHighOrderBits true
+set_interface_property in_data maxChannel 0
+set_interface_property in_data readyLatency 0
+set_interface_property in_data ENABLED true
+set_interface_property in_data EXPORT_OF ""
+set_interface_property in_data PORT_NAME_MAP ""
+set_interface_property in_data CMSIS_SVD_VARIABLES ""
+set_interface_property in_data SVD_ADDRESS_GROUP ""
+
+add_interface_port in_data in_data data Input 160
+add_interface_port in_data in_data_ready ready Output 1
+add_interface_port in_data in_data_valid valid Input 1
+
+
+#
+# connection point out_token
+#
+add_interface out_token avalon_streaming start
+set_interface_property out_token associatedClock clock_sink
+set_interface_property out_token associatedReset reset_sink
+set_interface_property out_token dataBitsPerSymbol 8
+set_interface_property out_token errorDescriptor ""
+set_interface_property out_token firstSymbolInHighOrderBits true
+set_interface_property out_token maxChannel 0
+set_interface_property out_token readyLatency 0
+set_interface_property out_token ENABLED true
+set_interface_property out_token EXPORT_OF ""
+set_interface_property out_token PORT_NAME_MAP ""
+set_interface_property out_token CMSIS_SVD_VARIABLES ""
+set_interface_property out_token SVD_ADDRESS_GROUP ""
+
+add_interface_port out_token out_token data Output 80
+add_interface_port out_token out_token_valid valid Output 1
+
+
+#
+# connection point in_token
+#
+add_interface in_token avalon_streaming end
+set_interface_property in_token associatedClock clock_sink
+set_interface_property in_token associatedReset reset_sink
+set_interface_property in_token dataBitsPerSymbol 8
+set_interface_property in_token errorDescriptor ""
+set_interface_property in_token firstSymbolInHighOrderBits true
+set_interface_property in_token maxChannel 0
+set_interface_property in_token readyLatency 0
+set_interface_property in_token ENABLED true
+set_interface_property in_token EXPORT_OF ""
+set_interface_property in_token PORT_NAME_MAP ""
+set_interface_property in_token CMSIS_SVD_VARIABLES ""
+set_interface_property in_token SVD_ADDRESS_GROUP ""
+
+add_interface_port in_token in_token data Input 80
+add_interface_port in_token in_token_valid valid Input 1
+
+
+#
+# connection point mem
+#
+add_interface mem avalon start
+set_interface_property mem addressUnits SYMBOLS
+set_interface_property mem associatedClock clock_sink
+set_interface_property mem associatedReset reset_sink
+set_interface_property mem bitsPerSymbol 8
+set_interface_property mem burstOnBurstBoundariesOnly false
+set_interface_property mem burstcountUnits WORDS
+set_interface_property mem doStreamReads false
+set_interface_property mem doStreamWrites false
+set_interface_property mem holdTime 0
+set_interface_property mem linewrapBursts false
+set_interface_property mem maximumPendingReadTransactions 0
+set_interface_property mem maximumPendingWriteTransactions 0
+set_interface_property mem readLatency 0
+set_interface_property mem readWaitTime 1
+set_interface_property mem setupTime 0
+set_interface_property mem timingUnits Cycles
+set_interface_property mem writeWaitTime 0
+set_interface_property mem ENABLED true
+set_interface_property mem EXPORT_OF ""
+set_interface_property mem PORT_NAME_MAP ""
+set_interface_property mem CMSIS_SVD_VARIABLES ""
+set_interface_property mem SVD_ADDRESS_GROUP ""
+
+add_interface_port mem mem_read read Output 1
+add_interface_port mem mem_write write Output 1
+add_interface_port mem mem_address address Output 32
+add_interface_port mem mem_byteenable byteenable Output 16
+add_interface_port mem mem_readdata readdata Input 128
+add_interface_port mem mem_writedata writedata Output 128
+add_interface_port mem mem_waitrequest waitrequest Input 1
+
diff --git a/core_hw.tcl b/core_hw.tcl
index 852e6c5..93b6def 100644
--- a/core_hw.tcl
+++ b/core_hw.tcl
@@ -66,7 +66,7 @@ add_fileset_file writeback.sv SYSTEM_VERILOG PATH rtl/core/control/writeback.sv
add_fileset_file ldst.sv SYSTEM_VERILOG PATH rtl/core/control/ldst/ldst.sv
add_fileset_file pop.sv SYSTEM_VERILOG PATH rtl/core/control/ldst/pop.sv
add_fileset_file sizes.sv SYSTEM_VERILOG PATH rtl/core/control/ldst/sizes.sv
-add_fileset_file cache.sv SYSTEM_VERILOG PATH rtl/core/cp15/cache.sv
+add_fileset_file cache_ops.sv SYSTEM_VERILOG PATH rtl/core/cp15/cache_ops.sv
add_fileset_file cache_lockdown.sv SYSTEM_VERILOG PATH rtl/core/cp15/cache_lockdown.sv
add_fileset_file cp15.sv SYSTEM_VERILOG PATH rtl/core/cp15/cp15.sv
add_fileset_file cpuid.sv SYSTEM_VERILOG PATH rtl/core/cp15/cpuid.sv
diff --git a/platform.qsys b/platform.qsys
index 67399ba..d8ed205 100644
--- a/platform.qsys
+++ b/platform.qsys
@@ -25,6 +25,38 @@
type = "int";
}
}
+ element cache_0
+ {
+ datum _sortIndex
+ {
+ value = "20";
+ type = "int";
+ }
+ }
+ element cache_1
+ {
+ datum _sortIndex
+ {
+ value = "22";
+ type = "int";
+ }
+ }
+ element cache_2
+ {
+ datum _sortIndex
+ {
+ value = "24";
+ type = "int";
+ }
+ }
+ element cache_3
+ {
+ datum _sortIndex
+ {
+ value = "26";
+ type = "int";
+ }
+ }
element clk_0
{
datum _sortIndex
@@ -41,6 +73,30 @@
type = "int";
}
}
+ element cpu_1
+ {
+ datum _sortIndex
+ {
+ value = "21";
+ type = "int";
+ }
+ }
+ element cpu_2
+ {
+ datum _sortIndex
+ {
+ value = "23";
+ type = "int";
+ }
+ }
+ element cpu_3
+ {
+ datum _sortIndex
+ {
+ value = "25";
+ type = "int";
+ }
+ }
element hps_0
{
datum _sortIndex
@@ -73,7 +129,7 @@
type = "int";
}
}
- element mm_bridge_1
+ element mm_bridge
{
datum _sortIndex
{
@@ -293,6 +349,18 @@
<parameter name="simDrivenValue" value="0" />
<parameter name="width" value="8" />
</module>
+ <module name="cache_0" kind="cache" version="1.0" enabled="1">
+ <parameter name="TOKEN_AT_RESET" value="0" />
+ </module>
+ <module name="cache_1" kind="cache" version="1.0" enabled="1">
+ <parameter name="TOKEN_AT_RESET" value="0" />
+ </module>
+ <module name="cache_2" kind="cache" version="1.0" enabled="1">
+ <parameter name="TOKEN_AT_RESET" value="0" />
+ </module>
+ <module name="cache_3" kind="cache" version="1.0" enabled="1">
+ <parameter name="TOKEN_AT_RESET" value="1" />
+ </module>
<module name="clk_0" kind="clock_source" version="20.1" enabled="1">
<parameter name="clockFrequency" value="50000000" />
<parameter name="clockFrequencyKnown" value="true" />
@@ -302,6 +370,15 @@
<module name="cpu_0" kind="core" version="1.0" enabled="1">
<parameter name="AUTO_INTERRUPT_RECEIVER_INTERRUPTS_USED" value="1" />
</module>
+ <module name="cpu_1" kind="core" version="1.0" enabled="0">
+ <parameter name="AUTO_INTERRUPT_RECEIVER_INTERRUPTS_USED" value="0" />
+ </module>
+ <module name="cpu_2" kind="core" version="1.0" enabled="0">
+ <parameter name="AUTO_INTERRUPT_RECEIVER_INTERRUPTS_USED" value="0" />
+ </module>
+ <module name="cpu_3" kind="core" version="1.0" enabled="0">
+ <parameter name="AUTO_INTERRUPT_RECEIVER_INTERRUPTS_USED" value="0" />
+ </module>
<module name="hps_0" kind="altera_hps" version="20.1" enabled="1">
<parameter name="ABSTRACT_REAL_COMPARE_TEST" value="false" />
<parameter name="ABS_RAM_MEM_INIT_FILENAME" value="meminit" />
@@ -870,13 +947,13 @@
<parameter name="writeIRQThreshold" value="8" />
</module>
<module
- name="mm_bridge_1"
+ name="mm_bridge"
kind="altera_avalon_mm_bridge"
version="20.1"
enabled="1">
<parameter name="ADDRESS_UNITS" value="SYMBOLS" />
<parameter name="ADDRESS_WIDTH" value="32" />
- <parameter name="DATA_WIDTH" value="32" />
+ <parameter name="DATA_WIDTH" value="128" />
<parameter name="LINEWRAPBURSTS" value="0" />
<parameter name="MAX_BURST_SIZE" value="1" />
<parameter name="MAX_PENDING_RESPONSES" value="4" />
@@ -1260,7 +1337,7 @@
<connection
kind="avalon"
version="20.1"
- start="mm_bridge_1.m0"
+ start="mm_bridge.m0"
end="pixdma.avalon_control_slave">
<parameter name="arbitrationPriority" value="1" />
<parameter name="baseAddress" value="0x30030000" />
@@ -1269,7 +1346,7 @@
<connection
kind="avalon"
version="20.1"
- start="mm_bridge_1.m0"
+ start="mm_bridge.m0"
end="jtag_uart_0.avalon_jtag_slave">
<parameter name="arbitrationPriority" value="1" />
<parameter name="baseAddress" value="0x30000000" />
@@ -1278,7 +1355,7 @@
<connection
kind="avalon"
version="20.1"
- start="mm_bridge_1.m0"
+ start="mm_bridge.m0"
end="pixfmt.avalon_rgb_slave">
<parameter name="arbitrationPriority" value="1" />
<parameter name="baseAddress" value="0x30040000" />
@@ -1287,33 +1364,33 @@
<connection
kind="avalon"
version="20.1"
- start="mm_bridge_1.m0"
+ start="mm_bridge.m0"
end="intc_0.avalon_slave">
<parameter name="arbitrationPriority" value="1" />
<parameter name="baseAddress" value="0x30070000" />
<parameter name="defaultConnection" value="false" />
</connection>
- <connection kind="avalon" version="20.1" start="mm_bridge_1.m0" end="buttons.s1">
+ <connection kind="avalon" version="20.1" start="mm_bridge.m0" end="buttons.s1">
<parameter name="arbitrationPriority" value="1" />
<parameter name="baseAddress" value="0x30050000" />
<parameter name="defaultConnection" value="false" />
</connection>
- <connection kind="avalon" version="20.1" start="mm_bridge_1.m0" end="pio_0.s1">
+ <connection kind="avalon" version="20.1" start="mm_bridge.m0" end="pio_0.s1">
<parameter name="arbitrationPriority" value="1" />
<parameter name="baseAddress" value="0x30010000" />
<parameter name="defaultConnection" value="false" />
</connection>
- <connection kind="avalon" version="20.1" start="mm_bridge_1.m0" end="switches.s1">
+ <connection kind="avalon" version="20.1" start="mm_bridge.m0" end="switches.s1">
<parameter name="arbitrationPriority" value="1" />
<parameter name="baseAddress" value="0x30060000" />
<parameter name="defaultConnection" value="false" />
</connection>
- <connection kind="avalon" version="20.1" start="mm_bridge_1.m0" end="timer_0.s1">
+ <connection kind="avalon" version="20.1" start="mm_bridge.m0" end="timer_0.s1">
<parameter name="arbitrationPriority" value="1" />
<parameter name="baseAddress" value="0x30020000" />
<parameter name="defaultConnection" value="false" />
</connection>
- <connection kind="avalon" version="20.1" start="mm_bridge_1.m0" end="vram.s1">
+ <connection kind="avalon" version="20.1" start="mm_bridge.m0" end="vram.s1">
<parameter name="arbitrationPriority" value="1" />
<parameter name="baseAddress" value="0x38000000" />
<parameter name="defaultConnection" value="false" />
@@ -1321,26 +1398,42 @@
<connection
kind="avalon"
version="20.1"
- start="mm_bridge_1.m0"
+ start="mm_bridge.m0"
end="address_span_extender_0.windowed_slave">
<parameter name="arbitrationPriority" value="1" />
<parameter name="baseAddress" value="0x0000" />
<parameter name="defaultConnection" value="false" />
</connection>
+ <connection kind="avalon" version="20.1" start="cpu_0.master" end="cache_0.core">
+ <parameter name="arbitrationPriority" value="1" />
+ <parameter name="baseAddress" value="0x0000" />
+ <parameter name="defaultConnection" value="false" />
+ </connection>
<connection
kind="avalon"
version="20.1"
start="jtag_dbg.master"
- end="mm_bridge_1.s0">
+ end="mm_bridge.s0">
<parameter name="arbitrationPriority" value="1" />
<parameter name="baseAddress" value="0x0000" />
<parameter name="defaultConnection" value="false" />
</connection>
- <connection
- kind="avalon"
- version="20.1"
- start="cpu_0.master"
- end="mm_bridge_1.s0">
+ <connection kind="avalon" version="20.1" start="cache_0.mem" end="mm_bridge.s0">
+ <parameter name="arbitrationPriority" value="1" />
+ <parameter name="baseAddress" value="0x0000" />
+ <parameter name="defaultConnection" value="false" />
+ </connection>
+ <connection kind="avalon" version="20.1" start="cache_1.mem" end="mm_bridge.s0">
+ <parameter name="arbitrationPriority" value="1" />
+ <parameter name="baseAddress" value="0x0000" />
+ <parameter name="defaultConnection" value="false" />
+ </connection>
+ <connection kind="avalon" version="20.1" start="cache_2.mem" end="mm_bridge.s0">
+ <parameter name="arbitrationPriority" value="1" />
+ <parameter name="baseAddress" value="0x0000" />
+ <parameter name="defaultConnection" value="false" />
+ </connection>
+ <connection kind="avalon" version="20.1" start="cache_3.mem" end="mm_bridge.s0">
<parameter name="arbitrationPriority" value="1" />
<parameter name="baseAddress" value="0x0000" />
<parameter name="defaultConnection" value="false" />
@@ -1361,6 +1454,46 @@
start="pixfmt.avalon_rgb_source"
end="pixfifo.avalon_dc_buffer_sink" />
<connection
+ kind="avalon_streaming"
+ version="20.1"
+ start="cache_0.out_data"
+ end="cache_1.in_data" />
+ <connection
+ kind="avalon_streaming"
+ version="20.1"
+ start="cache_3.out_data"
+ end="cache_0.in_data" />
+ <connection
+ kind="avalon_streaming"
+ version="20.1"
+ start="cache_1.out_data"
+ end="cache_2.in_data" />
+ <connection
+ kind="avalon_streaming"
+ version="20.1"
+ start="cache_2.out_data"
+ end="cache_3.in_data" />
+ <connection
+ kind="avalon_streaming"
+ version="20.1"
+ start="cache_0.out_token"
+ end="cache_1.in_token" />
+ <connection
+ kind="avalon_streaming"
+ version="20.1"
+ start="cache_3.out_token"
+ end="cache_0.in_token" />
+ <connection
+ kind="avalon_streaming"
+ version="20.1"
+ start="cache_1.out_token"
+ end="cache_2.in_token" />
+ <connection
+ kind="avalon_streaming"
+ version="20.1"
+ start="cache_2.out_token"
+ end="cache_3.in_token" />
+ <connection
kind="clock"
version="20.1"
start="clk_0.clk"
@@ -1396,16 +1529,32 @@
version="20.1"
start="pll_0.outclk0"
end="hps_0.f2h_sdram0_clock" />
+ <connection kind="clock" version="20.1" start="pll_0.outclk1" end="mm_bridge.clk" />
<connection
kind="clock"
version="20.1"
start="pll_0.outclk1"
- end="mm_bridge_1.clk" />
+ end="cpu_0.clock_sink" />
<connection
kind="clock"
version="20.1"
start="pll_0.outclk1"
- end="cpu_0.clock_sink" />
+ end="cache_0.clock_sink" />
+ <connection
+ kind="clock"
+ version="20.1"
+ start="pll_0.outclk1"
+ end="cache_1.clock_sink" />
+ <connection
+ kind="clock"
+ version="20.1"
+ start="pll_0.outclk1"
+ end="cache_2.clock_sink" />
+ <connection
+ kind="clock"
+ version="20.1"
+ start="pll_0.outclk1"
+ end="cache_3.clock_sink" />
<connection
kind="clock"
version="20.1"
@@ -1498,7 +1647,7 @@
kind="reset"
version="20.1"
start="clk_0.clk_reset"
- end="mm_bridge_1.reset" />
+ end="mm_bridge.reset" />
<connection
kind="reset"
version="20.1"
@@ -1512,6 +1661,26 @@
<connection
kind="reset"
version="20.1"
+ start="clk_0.clk_reset"
+ end="cache_0.reset_sink" />
+ <connection
+ kind="reset"
+ version="20.1"
+ start="clk_0.clk_reset"
+ end="cache_1.reset_sink" />
+ <connection
+ kind="reset"
+ version="20.1"
+ start="clk_0.clk_reset"
+ end="cache_2.reset_sink" />
+ <connection
+ kind="reset"
+ version="20.1"
+ start="clk_0.clk_reset"
+ end="cache_3.reset_sink" />
+ <connection
+ kind="reset"
+ version="20.1"
start="sys_sdram_pll_0.reset_source"
end="vram.reset" />
<connection
diff --git a/rtl/cache/cache.sv b/rtl/cache/cache.sv
index b84f844..e62a326 100644
--- a/rtl/cache/cache.sv
+++ b/rtl/cache/cache.sv
@@ -3,40 +3,40 @@
module cache
#(parameter TOKEN_AT_RESET=0)
(
- input logic clk,
- rst_n,
+ input logic clk,
+ rst_n,
- input ptr core_address,
- input logic core_read,
- core_write,
- input word core_writedata,
- input word_be core_byteenable,
- output logic core_waitrequest,
- output word core_readdata,
+ input ptr core_address,
+ input logic core_read,
+ core_write,
+ input word core_writedata,
+ input word_be core_byteenable,
+ output logic core_waitrequest,
+ output word core_readdata,
//TODO
- //input /*TODO*/ dbg_address,
- input logic dbg_read,
- dbg_write,
- input word dbg_writedata,
- output logic dbg_waitrequest,
- output word dbg_readdata,
-
- input logic mem_waitrequest,
- input line mem_readdata,
- output word mem_address,
- output logic mem_read,
- mem_write,
- output line mem_writedata,
- output line_be mem_byteenable,
-
- input logic in_data_valid,
- input ring_req in_data,
- output logic in_data_ready,
-
- input logic out_data_ready,
- output ring_req out_data,
- output logic out_data_valid,
+ /*input TODO/ dbg_address,
+ input logic dbg_read,
+ dbg_write,
+ input word dbg_writedata,
+ output logic dbg_waitrequest,
+ output word dbg_readdata,*/
+
+ input logic mem_waitrequest,
+ input line mem_readdata,
+ output word mem_address,
+ output logic mem_read,
+ mem_write,
+ output line mem_writedata,
+ output line_be mem_byteenable,
+
+ input logic in_data_valid,
+ input ring_req in_data,
+ output logic in_data_ready,
+
+ input logic out_data_ready,
+ output ring_req out_data,
+ output logic out_data_valid,
input ring_token in_token,
input logic in_token_valid,
@@ -46,7 +46,7 @@ module cache
);
//TODO
- assign dbg_waitrequest = 1;
+ //assign dbg_waitrequest = 1;
logic write_data, write_state;
line data_wr, data_rd;
diff --git a/rtl/cache/control.sv b/rtl/cache/cache_control.sv
index 73eb644..73eb644 100644
--- a/rtl/cache/control.sv
+++ b/rtl/cache/cache_control.sv
diff --git a/rtl/cache/defs.sv b/rtl/cache/defs.sv
index 6fdb719..bfefb88 100644
--- a/rtl/cache/defs.sv
+++ b/rtl/cache/defs.sv
@@ -38,6 +38,10 @@ typedef enum logic[1:0]
typedef struct packed
{
+`ifndef VERILATOR
+ // Error: data width (158) must be a multiple of bitsPerSymbol (8)
+ logic[1:0] padding;
+`endif
logic[1:0] ttl;
logic read,
inval,
@@ -59,6 +63,10 @@ typedef struct packed
typedef struct packed
{
+`ifndef VERILATOR
+ // Error: data width (78) must be a multiple of bitsPerSymbol (8)
+ logic[1:0] padding;
+`endif
token_lock e2, e1, e0;
} ring_token;
diff --git a/rtl/core/cp15/cache.sv b/rtl/core/cp15/cache_ops.sv
index cb6d4ad..cb6d4ad 100644
--- a/rtl/core/cp15/cache.sv
+++ b/rtl/core/cp15/cache_ops.sv