diff options
| -rw-r--r-- | conspiracion.qsf | 67 | ||||
| -rw-r--r-- | conspiracion_bus_master_hw.tcl | 159 | ||||
| -rw-r--r-- | core_hw.tcl | 218 | ||||
| -rw-r--r-- | platform.qsys | 234 | ||||
| -rw-r--r-- | rtl/core/control/mul_fu.sv (renamed from rtl/core/control/mul.sv) | 0 | ||||
| -rw-r--r-- | rtl/core/control/status.sv (renamed from rtl/core/control/psr.sv) | 0 | ||||
| -rw-r--r-- | rtl/core/core.sv (renamed from rtl/bus_master.sv) | 66 | ||||
| -rw-r--r-- | rtl/core/decode/branch_dec.sv (renamed from rtl/core/decode/branch.sv) | 0 | ||||
| -rw-r--r-- | rtl/core/decode/coproc_dec.sv (renamed from rtl/core/decode/coproc.sv) | 0 | ||||
| -rw-r--r-- | rtl/core/decode/data_dec.sv (renamed from rtl/core/decode/data.sv) | 0 | ||||
| -rw-r--r-- | rtl/core/decode/mul_dec.sv (renamed from rtl/core/decode/mul.sv) | 0 | ||||
| -rw-r--r-- | rtl/core/regs/reg_map.sv (renamed from rtl/core/regs/map.sv) | 0 | ||||
| -rw-r--r-- | rtl/top/conspiracion.sv | 47 | ||||
| -rw-r--r-- | tb/platform.sv | 118 | ||||
| -rw-r--r-- | tb/top/conspiracion.cpp | 11 |
15 files changed, 424 insertions, 496 deletions
diff --git a/conspiracion.qsf b/conspiracion.qsf index 37342c3..56cb0ff 100644 --- a/conspiracion.qsf +++ b/conspiracion.qsf @@ -201,72 +201,6 @@ set_location_assignment PIN_AA13 -to vram_wire_we_n set_global_assignment -name SEARCH_PATH rtl -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/alu/add.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/alu/and.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/alu/alu.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/alu/orr.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/alu/xor.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/arm810.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/control/branch.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/control/control.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/control/coproc.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/control/cycles.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/control/data.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/control/debug.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/control/exception.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/control/issue.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/control/mul.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/control/ldst/ldst.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/control/ldst/pop.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/control/ldst/sizes.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/control/psr.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/control/select.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/control/stall.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/control/writeback.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/cp15/cache.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/cp15/cache_lockdown.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/cp15/cp15.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/cp15/cpuid.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/cp15/cyclecnt.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/cp15/domain.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/cp15/far.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/cp15/fsr.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/cp15/map.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/cp15/syscfg.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/cp15/tlb.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/cp15/tlb_lockdown.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/cp15/ttbr.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/decode/branch.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/decode/coproc.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/decode/data.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/decode/decode.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/decode/isa.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/decode/mrs.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/decode/msr.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/decode/mul.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/decode/mux.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/decode/ldst/addr.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/decode/ldst/misc.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/decode/ldst/multiple.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/decode/ldst/single.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/decode/snd.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/fetch/fetch.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/fetch/prefetch.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/mmu/arbiter.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/mmu/fault.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/mmu/format.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/mmu/mmu.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/mmu/pagewalk.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/mul.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/porch/conds.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/porch/porch.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/psr.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/regs/file.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/regs/regs.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/regs/map.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/shifter.sv -set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/uarch.sv - set_global_assignment -name QSYS_FILE platform.qsys set_global_assignment -name SYSTEMVERILOG_FILE rtl/top/conspiracion.sv set_global_assignment -name QIP_FILE platform/synthesis/platform.qip @@ -379,4 +313,5 @@ set_global_assignment -name SIGNALTAP_FILE bus_test.stp + set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
\ No newline at end of file diff --git a/conspiracion_bus_master_hw.tcl b/conspiracion_bus_master_hw.tcl deleted file mode 100644 index a83c642..0000000 --- a/conspiracion_bus_master_hw.tcl +++ /dev/null @@ -1,159 +0,0 @@ -# TCL File Generated by Component Editor 20.1 -# Wed Nov 16 05:30:25 GMT 2022 -# DO NOT MODIFY - - -# -# conspiracion_bus_master "Toplevel bus master" v1.0 -# 2022.11.16.05:30:25 -# -# - -# -# request TCL package from ACDS 16.1 -# -package require -exact qsys 16.1 - - -# -# module conspiracion_bus_master -# -set_module_property DESCRIPTION "" -set_module_property NAME conspiracion_bus_master -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 "Toplevel bus master" -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 bus_master -set_fileset_property QUARTUS_SYNTH ENABLE_RELATIVE_INCLUDE_PATHS false -set_fileset_property QUARTUS_SYNTH ENABLE_FILE_OVERWRITE_MODE false -add_fileset_file bus_master.sv SYSTEM_VERILOG PATH rtl/bus_master.sv - - -# -# parameters -# - - -# -# display items -# - - -# -# connection point clock -# -add_interface clock clock end -set_interface_property clock clockRate 0 -set_interface_property clock ENABLED true -set_interface_property clock EXPORT_OF "" -set_interface_property clock PORT_NAME_MAP "" -set_interface_property clock CMSIS_SVD_VARIABLES "" -set_interface_property clock SVD_ADDRESS_GROUP "" - -add_interface_port clock clk clk Input 1 - - -# -# connection point reset_sink -# -add_interface reset_sink reset end -set_interface_property reset_sink associatedClock clock -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 conduit end -set_interface_property core associatedClock clock -set_interface_property core associatedReset reset_sink -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 addr addr Input 30 -add_interface_port core data_rd data_rd Output 32 -add_interface_port core data_wr data_wr Input 32 -add_interface_port core ready ready Output 1 -add_interface_port core write write Input 1 -add_interface_port core start start Input 1 -add_interface_port core irq irq Output 1 -add_interface_port core cpu_clk cpu_clk Output 1 -add_interface_port core cpu_rst_n cpu_rst_n Output 1 -add_interface_port core data_be data_be Input 4 - - -# -# connection point irq -# -add_interface irq interrupt start -set_interface_property irq associatedAddressablePoint avalon_master_1_1 -set_interface_property irq associatedClock clock -set_interface_property irq associatedReset reset_sink -set_interface_property irq irqScheme INDIVIDUAL_REQUESTS -set_interface_property irq ENABLED true -set_interface_property irq EXPORT_OF "" -set_interface_property irq PORT_NAME_MAP "" -set_interface_property irq CMSIS_SVD_VARIABLES "" -set_interface_property irq SVD_ADDRESS_GROUP "" - -add_interface_port irq avl_irq irq Input 1 - - -# -# connection point avalon_master_1_1 -# -add_interface avalon_master_1_1 avalon start -set_interface_property avalon_master_1_1 addressUnits SYMBOLS -set_interface_property avalon_master_1_1 associatedClock clock -set_interface_property avalon_master_1_1 associatedReset reset_sink -set_interface_property avalon_master_1_1 bitsPerSymbol 8 -set_interface_property avalon_master_1_1 burstOnBurstBoundariesOnly false -set_interface_property avalon_master_1_1 burstcountUnits WORDS -set_interface_property avalon_master_1_1 doStreamReads false -set_interface_property avalon_master_1_1 doStreamWrites false -set_interface_property avalon_master_1_1 holdTime 0 -set_interface_property avalon_master_1_1 linewrapBursts false -set_interface_property avalon_master_1_1 maximumPendingReadTransactions 0 -set_interface_property avalon_master_1_1 maximumPendingWriteTransactions 0 -set_interface_property avalon_master_1_1 readLatency 0 -set_interface_property avalon_master_1_1 readWaitTime 1 -set_interface_property avalon_master_1_1 setupTime 0 -set_interface_property avalon_master_1_1 timingUnits Cycles -set_interface_property avalon_master_1_1 writeWaitTime 0 -set_interface_property avalon_master_1_1 ENABLED true -set_interface_property avalon_master_1_1 EXPORT_OF "" -set_interface_property avalon_master_1_1 PORT_NAME_MAP "" -set_interface_property avalon_master_1_1 CMSIS_SVD_VARIABLES "" -set_interface_property avalon_master_1_1 SVD_ADDRESS_GROUP "" - -add_interface_port avalon_master_1_1 avl_address address Output 32 -add_interface_port avalon_master_1_1 avl_read read Output 1 -add_interface_port avalon_master_1_1 avl_readdata readdata Input 32 -add_interface_port avalon_master_1_1 avl_write write Output 1 -add_interface_port avalon_master_1_1 avl_writedata writedata Output 32 -add_interface_port avalon_master_1_1 avl_byteenable byteenable Output 4 -add_interface_port avalon_master_1_1 avl_waitrequest waitrequest Input 1 - diff --git a/core_hw.tcl b/core_hw.tcl new file mode 100644 index 0000000..852e6c5 --- /dev/null +++ b/core_hw.tcl @@ -0,0 +1,218 @@ +# TCL File Generated by Component Editor 20.1 +# Tue Sep 26 02:59:33 GMT 2023 +# DO NOT MODIFY + + +# +# core "ARM810 CPU" v1.0 +# 2023.09.26.02:59:33 +# +# + +# +# request TCL package from ACDS 16.1 +# +package require -exact qsys 16.1 + + +# +# module core +# +set_module_property DESCRIPTION "" +set_module_property NAME core +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 "ARM810 CPU" +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 core +set_fileset_property QUARTUS_SYNTH ENABLE_RELATIVE_INCLUDE_PATHS false +set_fileset_property QUARTUS_SYNTH ENABLE_FILE_OVERWRITE_MODE false +add_fileset_file core.sv SYSTEM_VERILOG PATH rtl/core/core.sv TOP_LEVEL_FILE +add_fileset_file arm810.sv SYSTEM_VERILOG PATH rtl/core/arm810.sv +add_fileset_file mul.sv SYSTEM_VERILOG PATH rtl/core/mul.sv +add_fileset_file psr.sv SYSTEM_VERILOG PATH rtl/core/psr.sv +add_fileset_file shifter.sv SYSTEM_VERILOG PATH rtl/core/shifter.sv +add_fileset_file uarch.sv SYSTEM_VERILOG PATH rtl/core/uarch.sv +add_fileset_file add.sv SYSTEM_VERILOG PATH rtl/core/alu/add.sv +add_fileset_file alu.sv SYSTEM_VERILOG PATH rtl/core/alu/alu.sv +add_fileset_file and.sv SYSTEM_VERILOG PATH rtl/core/alu/and.sv +add_fileset_file orr.sv SYSTEM_VERILOG PATH rtl/core/alu/orr.sv +add_fileset_file xor.sv SYSTEM_VERILOG PATH rtl/core/alu/xor.sv +add_fileset_file branch.sv SYSTEM_VERILOG PATH rtl/core/control/branch.sv +add_fileset_file control.sv SYSTEM_VERILOG PATH rtl/core/control/control.sv +add_fileset_file coproc.sv SYSTEM_VERILOG PATH rtl/core/control/coproc.sv +add_fileset_file cycles.sv SYSTEM_VERILOG PATH rtl/core/control/cycles.sv +add_fileset_file data.sv SYSTEM_VERILOG PATH rtl/core/control/data.sv +add_fileset_file debug.sv SYSTEM_VERILOG PATH rtl/core/control/debug.sv +add_fileset_file exception.sv SYSTEM_VERILOG PATH rtl/core/control/exception.sv +add_fileset_file issue.sv SYSTEM_VERILOG PATH rtl/core/control/issue.sv +add_fileset_file mul_fu.sv SYSTEM_VERILOG PATH rtl/core/control/mul_fu.sv +add_fileset_file select.sv SYSTEM_VERILOG PATH rtl/core/control/select.sv +add_fileset_file stall.sv SYSTEM_VERILOG PATH rtl/core/control/stall.sv +add_fileset_file status.sv SYSTEM_VERILOG PATH rtl/core/control/status.sv +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_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 +add_fileset_file cyclecnt.sv SYSTEM_VERILOG PATH rtl/core/cp15/cyclecnt.sv +add_fileset_file domain.sv SYSTEM_VERILOG PATH rtl/core/cp15/domain.sv +add_fileset_file far.sv SYSTEM_VERILOG PATH rtl/core/cp15/far.sv +add_fileset_file fsr.sv SYSTEM_VERILOG PATH rtl/core/cp15/fsr.sv +add_fileset_file map.sv SYSTEM_VERILOG PATH rtl/core/cp15/map.sv +add_fileset_file syscfg.sv SYSTEM_VERILOG PATH rtl/core/cp15/syscfg.sv +add_fileset_file tlb.sv SYSTEM_VERILOG PATH rtl/core/cp15/tlb.sv +add_fileset_file tlb_lockdown.sv SYSTEM_VERILOG PATH rtl/core/cp15/tlb_lockdown.sv +add_fileset_file ttbr.sv SYSTEM_VERILOG PATH rtl/core/cp15/ttbr.sv +add_fileset_file branch_dec.sv SYSTEM_VERILOG PATH rtl/core/decode/branch_dec.sv +add_fileset_file coproc_dec.sv SYSTEM_VERILOG PATH rtl/core/decode/coproc_dec.sv +add_fileset_file data_dec.sv SYSTEM_VERILOG PATH rtl/core/decode/data_dec.sv +add_fileset_file decode.sv SYSTEM_VERILOG PATH rtl/core/decode/decode.sv +add_fileset_file isa.sv SYSTEM_VERILOG PATH rtl/core/decode/isa.sv +add_fileset_file mrs.sv SYSTEM_VERILOG PATH rtl/core/decode/mrs.sv +add_fileset_file msr.sv SYSTEM_VERILOG PATH rtl/core/decode/msr.sv +add_fileset_file mul_dec.sv SYSTEM_VERILOG PATH rtl/core/decode/mul_dec.sv +add_fileset_file mux.sv SYSTEM_VERILOG PATH rtl/core/decode/mux.sv +add_fileset_file snd.sv SYSTEM_VERILOG PATH rtl/core/decode/snd.sv +add_fileset_file addr.sv SYSTEM_VERILOG PATH rtl/core/decode/ldst/addr.sv +add_fileset_file misc.sv SYSTEM_VERILOG PATH rtl/core/decode/ldst/misc.sv +add_fileset_file multiple.sv SYSTEM_VERILOG PATH rtl/core/decode/ldst/multiple.sv +add_fileset_file single.sv SYSTEM_VERILOG PATH rtl/core/decode/ldst/single.sv +add_fileset_file fetch.sv SYSTEM_VERILOG PATH rtl/core/fetch/fetch.sv +add_fileset_file prefetch.sv SYSTEM_VERILOG PATH rtl/core/fetch/prefetch.sv +add_fileset_file arbiter.sv SYSTEM_VERILOG PATH rtl/core/mmu/arbiter.sv +add_fileset_file fault.sv SYSTEM_VERILOG PATH rtl/core/mmu/fault.sv +add_fileset_file format.sv SYSTEM_VERILOG PATH rtl/core/mmu/format.sv +add_fileset_file mmu.sv SYSTEM_VERILOG PATH rtl/core/mmu/mmu.sv +add_fileset_file pagewalk.sv SYSTEM_VERILOG PATH rtl/core/mmu/pagewalk.sv +add_fileset_file conds.sv SYSTEM_VERILOG PATH rtl/core/porch/conds.sv +add_fileset_file porch.sv SYSTEM_VERILOG PATH rtl/core/porch/porch.sv +add_fileset_file file.sv SYSTEM_VERILOG PATH rtl/core/regs/file.sv +add_fileset_file reg_map.sv SYSTEM_VERILOG PATH rtl/core/regs/reg_map.sv +add_fileset_file regs.sv SYSTEM_VERILOG PATH rtl/core/regs/regs.sv + + +# +# parameters +# + + +# +# 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 master +# +add_interface master avalon start +set_interface_property master addressUnits SYMBOLS +set_interface_property master associatedClock clock_sink +set_interface_property master associatedReset reset_sink +set_interface_property master bitsPerSymbol 8 +set_interface_property master burstOnBurstBoundariesOnly false +set_interface_property master burstcountUnits WORDS +set_interface_property master doStreamReads false +set_interface_property master doStreamWrites false +set_interface_property master holdTime 0 +set_interface_property master linewrapBursts false +set_interface_property master maximumPendingReadTransactions 0 +set_interface_property master maximumPendingWriteTransactions 0 +set_interface_property master readLatency 0 +set_interface_property master readWaitTime 1 +set_interface_property master setupTime 0 +set_interface_property master timingUnits Cycles +set_interface_property master writeWaitTime 0 +set_interface_property master ENABLED true +set_interface_property master EXPORT_OF "" +set_interface_property master PORT_NAME_MAP "" +set_interface_property master CMSIS_SVD_VARIABLES "" +set_interface_property master SVD_ADDRESS_GROUP "" + +add_interface_port master avl_address address Output 32 +add_interface_port master avl_read read Output 1 +add_interface_port master avl_write write Output 1 +add_interface_port master avl_readdata readdata Input 32 +add_interface_port master avl_writedata writedata Output 32 +add_interface_port master avl_waitrequest waitrequest Input 1 +add_interface_port master avl_byteenable byteenable Output 4 + + +# +# connection point interrupt_receiver +# +add_interface interrupt_receiver interrupt start +set_interface_property interrupt_receiver associatedAddressablePoint "" +set_interface_property interrupt_receiver associatedClock clock_sink +set_interface_property interrupt_receiver associatedReset reset_sink +set_interface_property interrupt_receiver irqScheme INDIVIDUAL_REQUESTS +set_interface_property interrupt_receiver ENABLED true +set_interface_property interrupt_receiver EXPORT_OF "" +set_interface_property interrupt_receiver PORT_NAME_MAP "" +set_interface_property interrupt_receiver CMSIS_SVD_VARIABLES "" +set_interface_property interrupt_receiver SVD_ADDRESS_GROUP "" + +add_interface_port interrupt_receiver avl_irq irq 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 mp +# +add_interface mp conduit end +set_interface_property mp associatedClock clock_sink +set_interface_property mp associatedReset reset_sink +set_interface_property mp ENABLED true +set_interface_property mp EXPORT_OF "" +set_interface_property mp PORT_NAME_MAP "" +set_interface_property mp CMSIS_SVD_VARIABLES "" +set_interface_property mp SVD_ADDRESS_GROUP "" + +add_interface_port mp step step Input 1 +add_interface_port mp cpu_halt cpu_halt Input 1 +add_interface_port mp cpu_halted cpu_halted Output 1 +add_interface_port mp breakpoint breakpoint Output 1 + diff --git a/platform.qsys b/platform.qsys index 5dd6c0d..67399ba 100644 --- a/platform.qsys +++ b/platform.qsys @@ -13,7 +13,7 @@ { datum _sortIndex { - value = "3"; + value = "2"; type = "int"; } } @@ -21,7 +21,7 @@ { datum _sortIndex { - value = "17"; + value = "16"; type = "int"; } } @@ -29,7 +29,15 @@ { datum _sortIndex { - value = "1"; + value = "0"; + type = "int"; + } + } + element cpu_0 + { + datum _sortIndex + { + value = "19"; type = "int"; } } @@ -37,7 +45,7 @@ { datum _sortIndex { - value = "2"; + value = "1"; type = "int"; } } @@ -45,7 +53,7 @@ { datum _sortIndex { - value = "18"; + value = "17"; type = "int"; } } @@ -53,7 +61,7 @@ { datum _sortIndex { - value = "9"; + value = "8"; type = "int"; } } @@ -61,15 +69,15 @@ { datum _sortIndex { - value = "6"; + value = "5"; type = "int"; } } - element master_0 + element mm_bridge_1 { datum _sortIndex { - value = "0"; + value = "18"; type = "int"; } } @@ -77,7 +85,7 @@ { datum _sortIndex { - value = "8"; + value = "7"; type = "int"; } } @@ -85,7 +93,7 @@ { datum _sortIndex { - value = "13"; + value = "12"; type = "int"; } } @@ -93,7 +101,7 @@ { datum _sortIndex { - value = "15"; + value = "14"; type = "int"; } } @@ -101,12 +109,12 @@ { datum _sortIndex { - value = "14"; + value = "13"; type = "int"; } datum sopceditor_expanded { - value = "0"; + value = "1"; type = "boolean"; } } @@ -146,7 +154,7 @@ { datum _sortIndex { - value = "4"; + value = "3"; type = "int"; } } @@ -154,7 +162,7 @@ { datum _sortIndex { - value = "16"; + value = "15"; type = "int"; } } @@ -162,7 +170,7 @@ { datum _sortIndex { - value = "10"; + value = "9"; type = "int"; } } @@ -170,7 +178,7 @@ { datum _sortIndex { - value = "7"; + value = "6"; type = "int"; } } @@ -178,7 +186,7 @@ { datum _sortIndex { - value = "12"; + value = "11"; type = "int"; } datum sopceditor_expanded @@ -191,7 +199,7 @@ { datum _sortIndex { - value = "11"; + value = "10"; type = "int"; } } @@ -199,7 +207,7 @@ { datum _sortIndex { - value = "5"; + value = "4"; type = "int"; } } @@ -230,12 +238,8 @@ type="conduit" dir="end" /> <interface name="clk" internal="clk_0.clk_in" type="clock" dir="end" /> - <interface name="master_0_conduit_end" internal="master_0.conduit_end" /> - <interface - name="master_0_core" - internal="master_0.core" - type="conduit" - dir="end" /> + <interface name="cpu_0_mp" internal="cpu_0.mp" type="conduit" dir="end" /> + <interface name="cpu_0_mp_1" internal="cpu_0.mp_1" /> <interface name="memory" internal="hps_0.memory" type="conduit" dir="end" /> <interface name="pio_0_external_connection" @@ -295,6 +299,9 @@ <parameter name="inputClockFrequency" value="0" /> <parameter name="resetSynchronousEdges" value="NONE" /> </module> + <module name="cpu_0" kind="core" version="1.0" enabled="1"> + <parameter name="AUTO_INTERRUPT_RECEIVER_INTERRUPTS_USED" value="1" /> + </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" /> @@ -863,11 +870,22 @@ <parameter name="writeIRQThreshold" value="8" /> </module> <module - name="master_0" - kind="conspiracion_bus_master" - version="1.0" + name="mm_bridge_1" + kind="altera_avalon_mm_bridge" + version="20.1" enabled="1"> - <parameter name="AUTO_IRQ_INTERRUPTS_USED" value="1" /> + <parameter name="ADDRESS_UNITS" value="SYMBOLS" /> + <parameter name="ADDRESS_WIDTH" value="32" /> + <parameter name="DATA_WIDTH" value="32" /> + <parameter name="LINEWRAPBURSTS" value="0" /> + <parameter name="MAX_BURST_SIZE" value="1" /> + <parameter name="MAX_PENDING_RESPONSES" value="4" /> + <parameter name="PIPELINE_COMMAND" value="1" /> + <parameter name="PIPELINE_RESPONSE" value="1" /> + <parameter name="SYMBOL_WIDTH" value="8" /> + <parameter name="SYSINFO_ADDR_WIDTH" value="30" /> + <parameter name="USE_AUTO_ADDRESS_WIDTH" value="0" /> + <parameter name="USE_RESPONSE" value="0" /> </module> <module name="pio_0" kind="altera_avalon_pio" version="20.1" enabled="1"> <parameter name="bitClearingEdgeCapReg" value="false" /> @@ -1224,96 +1242,6 @@ <connection kind="avalon" version="20.1" - start="master_0.avalon_master_1_1" - end="pixdma.avalon_control_slave"> - <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x30030000" /> - <parameter name="defaultConnection" value="false" /> - </connection> - <connection - kind="avalon" - version="20.1" - start="master_0.avalon_master_1_1" - end="jtag_uart_0.avalon_jtag_slave"> - <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x30000000" /> - <parameter name="defaultConnection" value="false" /> - </connection> - <connection - kind="avalon" - version="20.1" - start="master_0.avalon_master_1_1" - end="pixfmt.avalon_rgb_slave"> - <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x30040000" /> - <parameter name="defaultConnection" value="false" /> - </connection> - <connection - kind="avalon" - version="20.1" - start="master_0.avalon_master_1_1" - 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="master_0.avalon_master_1_1" - 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="master_0.avalon_master_1_1" - 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="master_0.avalon_master_1_1" - end="vram.s1"> - <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x38000000" /> - <parameter name="defaultConnection" value="false" /> - </connection> - <connection - kind="avalon" - version="20.1" - start="master_0.avalon_master_1_1" - 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="master_0.avalon_master_1_1" - 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="master_0.avalon_master_1_1" - 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="pixdma.avalon_pixel_dma_master" end="vram.s1"> <parameter name="arbitrationPriority" value="1" /> @@ -1332,7 +1260,7 @@ <connection kind="avalon" version="20.1" - start="jtag_dbg.master" + start="mm_bridge_1.m0" end="pixdma.avalon_control_slave"> <parameter name="arbitrationPriority" value="1" /> <parameter name="baseAddress" value="0x30030000" /> @@ -1341,7 +1269,7 @@ <connection kind="avalon" version="20.1" - start="jtag_dbg.master" + start="mm_bridge_1.m0" end="jtag_uart_0.avalon_jtag_slave"> <parameter name="arbitrationPriority" value="1" /> <parameter name="baseAddress" value="0x30000000" /> @@ -1350,7 +1278,7 @@ <connection kind="avalon" version="20.1" - start="jtag_dbg.master" + start="mm_bridge_1.m0" end="pixfmt.avalon_rgb_slave"> <parameter name="arbitrationPriority" value="1" /> <parameter name="baseAddress" value="0x30040000" /> @@ -1359,23 +1287,33 @@ <connection kind="avalon" version="20.1" - start="jtag_dbg.master" + start="mm_bridge_1.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="jtag_dbg.master" end="pio_0.s1"> + <connection kind="avalon" version="20.1" start="mm_bridge_1.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"> <parameter name="arbitrationPriority" value="1" /> <parameter name="baseAddress" value="0x30010000" /> <parameter name="defaultConnection" value="false" /> </connection> - <connection kind="avalon" version="20.1" start="jtag_dbg.master" end="timer_0.s1"> + <connection kind="avalon" version="20.1" start="mm_bridge_1.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"> <parameter name="arbitrationPriority" value="1" /> <parameter name="baseAddress" value="0x30020000" /> <parameter name="defaultConnection" value="false" /> </connection> - <connection kind="avalon" version="20.1" start="jtag_dbg.master" end="vram.s1"> + <connection kind="avalon" version="20.1" start="mm_bridge_1.m0" end="vram.s1"> <parameter name="arbitrationPriority" value="1" /> <parameter name="baseAddress" value="0x38000000" /> <parameter name="defaultConnection" value="false" /> @@ -1383,22 +1321,26 @@ <connection kind="avalon" version="20.1" - start="jtag_dbg.master" - end="switches.s1"> + start="mm_bridge_1.m0" + end="address_span_extender_0.windowed_slave"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x30060000" /> + <parameter name="baseAddress" value="0x0000" /> <parameter name="defaultConnection" value="false" /> </connection> - <connection kind="avalon" version="20.1" start="jtag_dbg.master" end="buttons.s1"> + <connection + kind="avalon" + version="20.1" + start="jtag_dbg.master" + end="mm_bridge_1.s0"> <parameter name="arbitrationPriority" value="1" /> - <parameter name="baseAddress" value="0x30050000" /> + <parameter name="baseAddress" value="0x0000" /> <parameter name="defaultConnection" value="false" /> </connection> <connection kind="avalon" version="20.1" - start="jtag_dbg.master" - end="address_span_extender_0.windowed_slave"> + start="cpu_0.master" + end="mm_bridge_1.s0"> <parameter name="arbitrationPriority" value="1" /> <parameter name="baseAddress" value="0x0000" /> <parameter name="defaultConnection" value="false" /> @@ -1458,7 +1400,12 @@ kind="clock" version="20.1" start="pll_0.outclk1" - end="master_0.clock" /> + end="mm_bridge_1.clk" /> + <connection + kind="clock" + version="20.1" + start="pll_0.outclk1" + end="cpu_0.clock_sink" /> <connection kind="clock" version="20.1" @@ -1495,15 +1442,15 @@ <connection kind="interrupt" version="20.1" - start="intc_0.interrupt_timer" - end="timer_0.irq"> + start="cpu_0.interrupt_receiver" + end="intc_0.interrupt_sender"> <parameter name="irqNumber" value="0" /> </connection> <connection kind="interrupt" version="20.1" - start="master_0.irq" - end="intc_0.interrupt_sender"> + start="intc_0.interrupt_timer" + end="timer_0.irq"> <parameter name="irqNumber" value="0" /> </connection> <connection @@ -1551,7 +1498,7 @@ kind="reset" version="20.1" start="clk_0.clk_reset" - end="master_0.reset_sink" /> + end="mm_bridge_1.reset" /> <connection kind="reset" version="20.1" @@ -1560,6 +1507,11 @@ <connection kind="reset" version="20.1" + start="clk_0.clk_reset" + end="cpu_0.reset_sink" /> + <connection + kind="reset" + version="20.1" start="sys_sdram_pll_0.reset_source" end="vram.reset" /> <connection diff --git a/rtl/core/control/mul.sv b/rtl/core/control/mul_fu.sv index 8352435..8352435 100644 --- a/rtl/core/control/mul.sv +++ b/rtl/core/control/mul_fu.sv diff --git a/rtl/core/control/psr.sv b/rtl/core/control/status.sv index 6616bc9..6616bc9 100644 --- a/rtl/core/control/psr.sv +++ b/rtl/core/control/status.sv diff --git a/rtl/bus_master.sv b/rtl/core/core.sv index 0c6af55..8d487fa 100644 --- a/rtl/bus_master.sv +++ b/rtl/core/core.sv @@ -1,38 +1,56 @@ -module bus_master +`include "core/uarch.sv" + +module core ( - input logic clk, - rst_n, + input logic clk, + rst_n, + + input wire step, + input wire cpu_halt, + output wire cpu_halted, + output wire breakpoint, - input logic[29:0] addr, - input logic start, - write, - output logic ready, - output logic[31:0] data_rd, - input logic[31:0] data_wr, - input logic[3:0] data_be, - output logic cpu_clk, - cpu_rst_n, - irq, + output word avl_address, + output logic avl_read, + avl_write, + input word avl_readdata, + output word avl_writedata, + input logic avl_waitrequest, + output logic[3:0] avl_byteenable, - output logic[31:0] avl_address, - output logic avl_read, - avl_write, - input logic[31:0] avl_readdata, - output logic[31:0] avl_writedata, - input logic avl_waitrequest, - output logic[3:0] avl_byteenable, - input logic avl_irq + input logic avl_irq ); + logic ready, write, start; + + logic[3:0] data_be; + logic[29:0] addr; + logic[31:0] data_rd, data_wr; + enum int unsigned { IDLE, WAIT } state; - assign irq = avl_irq; - assign cpu_clk = clk; - assign cpu_rst_n = rst_n; + arm810 cpu + ( + .irq(avl_irq), + .halt(cpu_halt), + .halted(cpu_halted), + .bus_addr(addr), + .bus_data_rd(data_rd), + .bus_data_wr(data_wr), + .bus_data_be(data_be), + .bus_ready(ready), + .bus_write(write), + .bus_start(start), +`ifndef VERILATOR + .step(0), + .breakpoint(), +`endif + .* + ); assign data_rd = avl_readdata; diff --git a/rtl/core/decode/branch.sv b/rtl/core/decode/branch_dec.sv index 1dbc1ad..1dbc1ad 100644 --- a/rtl/core/decode/branch.sv +++ b/rtl/core/decode/branch_dec.sv diff --git a/rtl/core/decode/coproc.sv b/rtl/core/decode/coproc_dec.sv index 153cadf..153cadf 100644 --- a/rtl/core/decode/coproc.sv +++ b/rtl/core/decode/coproc_dec.sv diff --git a/rtl/core/decode/data.sv b/rtl/core/decode/data_dec.sv index f744972..f744972 100644 --- a/rtl/core/decode/data.sv +++ b/rtl/core/decode/data_dec.sv diff --git a/rtl/core/decode/mul.sv b/rtl/core/decode/mul_dec.sv index 114b65b..114b65b 100644 --- a/rtl/core/decode/mul.sv +++ b/rtl/core/decode/mul_dec.sv diff --git a/rtl/core/regs/map.sv b/rtl/core/regs/reg_map.sv index 11085d4..11085d4 100644 --- a/rtl/core/regs/map.sv +++ b/rtl/core/regs/reg_map.sv diff --git a/rtl/top/conspiracion.sv b/rtl/top/conspiracion.sv index 4d09af8..54c8b95 100644 --- a/rtl/top/conspiracion.sv +++ b/rtl/top/conspiracion.sv @@ -2,6 +2,7 @@ module conspiracion ( input wire clk_clk, input wire rst_n, + input wire halt, `ifdef VERILATOR input wire step, @@ -48,12 +49,7 @@ module conspiracion output wire [7:0] vga_dac_b ); - logic button; - logic[3:0] data_be; - logic[29:0] addr; - logic[31:0] data_rd, data_wr; - logic reset_reset_n, cpu_clk, cpu_rst_n, cpu_halt, - ready, write, start, irq; + logic button, cpu_halt, reset_reset_n; `ifdef VERILATOR assign cpu_halt = halt; @@ -82,38 +78,17 @@ module conspiracion ); `endif - arm810 core - ( - .clk(cpu_clk), - .rst_n(cpu_rst_n), - .halt(cpu_halt), - .halted(cpu_halted), - .bus_addr(addr), - .bus_data_rd(data_rd), - .bus_data_wr(data_wr), - .bus_data_be(data_be), - .bus_ready(ready), - .bus_write(write), - .bus_start(start), -`ifndef VERILATOR - .step(0), - .breakpoint(), -`endif - .* - ); - platform plat ( - .master_0_core_cpu_clk(cpu_clk), - .master_0_core_cpu_rst_n(cpu_rst_n), - .master_0_core_addr(addr), - .master_0_core_data_rd(data_rd), - .master_0_core_data_wr(data_wr), - .master_0_core_data_be(data_be), - .master_0_core_ready(ready), - .master_0_core_write(write), - .master_0_core_start(start), - .master_0_core_irq(irq), +`ifdef VERILATOR + .cpu_0_mp_step(step), + .cpu_0_mp_breakpoint(breakpoint), +`else + .cpu_0_mp_step(0), + .cpu_0_mp_breakpoint(), +`endif + .cpu_0_mp_cpu_halt(cpu_halt), + .cpu_0_mp_cpu_halted(cpu_halted), .pll_0_reset_reset(0), //TODO: reset controller, algún día .pio_0_external_connection_export(pio_leds), .switches_external_connection_export({2'b00, pio_switches}), diff --git a/tb/platform.sv b/tb/platform.sv index 570ee4e..a4db086 100644 --- a/tb/platform.sv +++ b/tb/platform.sv @@ -2,56 +2,50 @@ module platform ( - input wire clk_clk, // clk.clk - input wire [29:0] master_0_core_addr, // master_0_core.addr - output wire [31:0] master_0_core_data_rd, // .data_rd - input wire [31:0] master_0_core_data_wr, // .data_wr - input wire [3:0] master_0_core_data_be, // .data_be - output wire master_0_core_ready, // .ready - input wire master_0_core_write, // .write - input wire master_0_core_start, // .start - output wire master_0_core_irq, // .irq - output wire master_0_core_cpu_clk, // .cpu_clk - output wire master_0_core_cpu_rst_n, - output wire [12:0] memory_mem_a, // memory.mem_a - output wire [2:0] memory_mem_ba, // .mem_ba - output wire memory_mem_ck, // .mem_ck - output wire memory_mem_ck_n, // .mem_ck_n - output wire memory_mem_cke, // .mem_cke - output wire memory_mem_cs_n, // .mem_cs_n - output wire memory_mem_ras_n, // .mem_ras_n - output wire memory_mem_cas_n, // .mem_cas_n - output wire memory_mem_we_n, // .mem_we_n - output wire memory_mem_reset_n, // .mem_reset_n - inout wire [7:0] memory_mem_dq, // .mem_dq - inout wire memory_mem_dqs, // .mem_dqs - inout wire memory_mem_dqs_n, // .mem_dqs_n - output wire memory_mem_odt, // .mem_odt - output wire memory_mem_dm, // .mem_dm - input wire memory_oct_rzqin, // .oct_rzqin - output wire [7:0] pio_0_external_connection_export, // pio_0_external_connection.export - input wire [7:0] switches_external_connection_export, // pio_1_external_connection.export - input wire [7:0] buttons_external_connection_export, // pio_2_external_connection.export - input wire pll_0_reset_reset, - output wire sys_sdram_pll_0_sdram_clk_clk, - input wire reset_reset_n /*verilator public*/,// reset.reset_n - output wire [12:0] vram_wire_addr, // vram_wire.addr - output wire [1:0] vram_wire_ba, // .ba - output wire vram_wire_cas_n, // .cas_n - output wire vram_wire_cke, // .cke - output wire vram_wire_cs_n, // .cs_n - inout wire [15:0] vram_wire_dq, // .dq - output wire [1:0] vram_wire_dqm, // .dqm - output wire vram_wire_ras_n, // .ras_n - output wire vram_wire_we_n, // .we_n - output wire vga_dac_CLK, // vga_dac.CLK - output wire vga_dac_HS, // .HS - output wire vga_dac_VS, // .VS - output wire vga_dac_BLANK, // .BLANK - output wire vga_dac_SYNC, // .SYNC - output wire [7:0] vga_dac_R, // .R - output wire [7:0] vga_dac_G, // .G - output wire [7:0] vga_dac_B // .B + input wire [7:0] buttons_external_connection_export, // buttons_external_connection.export + input wire clk_clk, // clk.clk + input wire cpu_0_mp_step, // cpu_0_mp.step + input wire cpu_0_mp_cpu_halt, // .cpu_halt + output wire cpu_0_mp_cpu_halted, // .cpu_halted + output wire cpu_0_mp_breakpoint, // .breakpoint + output wire [12:0] memory_mem_a, // memory.mem_a + output wire [2:0] memory_mem_ba, // .mem_ba + output wire memory_mem_ck, // .mem_ck + output wire memory_mem_ck_n, // .mem_ck_n + output wire memory_mem_cke, // .mem_cke + output wire memory_mem_cs_n, // .mem_cs_n + output wire memory_mem_ras_n, // .mem_ras_n + output wire memory_mem_cas_n, // .mem_cas_n + output wire memory_mem_we_n, // .mem_we_n + output wire memory_mem_reset_n, // .mem_reset_n + inout wire [7:0] memory_mem_dq, // .mem_dq + inout wire memory_mem_dqs, // .mem_dqs + inout wire memory_mem_dqs_n, // .mem_dqs_n + output wire memory_mem_odt, // .mem_odt + output wire memory_mem_dm, // .mem_dm + input wire memory_oct_rzqin, // .oct_rzqin + output wire [7:0] pio_0_external_connection_export, // pio_0_external_connection.export + input wire pll_0_reset_reset, // pll_0_reset.reset + input wire reset_reset_n /*verilator public*/, // reset.reset_n + input wire [7:0] switches_external_connection_export, // switches_external_connection.export + output wire sys_sdram_pll_0_sdram_clk_clk, // sys_sdram_pll_0_sdram_clk.clk + output wire vga_dac_CLK, // vga_dac.CLK + output wire vga_dac_HS, // .HS + output wire vga_dac_VS, // .VS + output wire vga_dac_BLANK, // .BLANK + output wire vga_dac_SYNC, // .SYNC + output wire [7:0] vga_dac_R, // .R + output wire [7:0] vga_dac_G, // .G + output wire [7:0] vga_dac_B, // .B + output wire [12:0] vram_wire_addr, // vram_wire.addr + output wire [1:0] vram_wire_ba, // .ba + output wire vram_wire_cas_n, // .cas_n + output wire vram_wire_cke, // .cke + output wire vram_wire_cs_n, // .cs_n + inout wire [15:0] vram_wire_dq, // .dq + output wire [1:0] vram_wire_dqm, // .dqm + output wire vram_wire_ras_n, // .ras_n + output wire vram_wire_we_n // .we_n ); logic[31:0] avl_address /*verilator public*/; @@ -71,20 +65,14 @@ module platform logic core_avl_waitrequest; logic[3:0] core_avl_byteenable; - bus_master master_0 + core cpu0 ( .clk(clk_clk), .rst_n(reset_reset_n), - .addr(master_0_core_addr), - .start(master_0_core_start), - .write(master_0_core_write), - .ready(master_0_core_ready), - .data_rd(master_0_core_data_rd), - .data_wr(master_0_core_data_wr), - .data_be(master_0_core_data_be), - .cpu_clk(master_0_core_cpu_clk), - .cpu_rst_n(master_0_core_cpu_rst_n), - .irq(master_0_core_irq), + .step(cpu_0_mp_step), + .breakpoint(cpu_0_mp_breakpoint), + .cpu_halt(cpu_0_mp_cpu_halt), + .cpu_halted(cpu_0_mp_cpu_halted), .avl_address(core_avl_address), .avl_read(core_avl_read), .avl_write(core_avl_write), @@ -107,7 +95,7 @@ module platform data_ready_0, data_ready_1, data_ready_2, data_ready_3, token_valid_0, token_valid_1, token_valid_2, token_valid_3; - cache #(.TOKEN_AT_RESET(0)) c0 + cache #(.TOKEN_AT_RESET(0)) cache0 ( .clk(clk_clk), .rst_n(reset_reset_n), @@ -149,7 +137,7 @@ module platform .out_token_valid(token_valid_0) ); - cache #(.TOKEN_AT_RESET(0)) c1 + cache #(.TOKEN_AT_RESET(0)) cache1 ( .clk(clk_clk), .rst_n(reset_reset_n), @@ -191,7 +179,7 @@ module platform .out_token_valid(token_valid_1) ); - cache #(.TOKEN_AT_RESET(0)) c2 + cache #(.TOKEN_AT_RESET(0)) cache2 ( .clk(clk_clk), .rst_n(reset_reset_n), @@ -233,7 +221,7 @@ module platform .out_token_valid(token_valid_2) ); - cache #(.TOKEN_AT_RESET(1)) c3 + cache #(.TOKEN_AT_RESET(1)) cache3 ( .clk(clk_clk), .rst_n(reset_reset_n), diff --git a/tb/top/conspiracion.cpp b/tb/top/conspiracion.cpp index b243c89..4f0fb3d 100644 --- a/tb/top/conspiracion.cpp +++ b/tb/top/conspiracion.cpp @@ -18,6 +18,7 @@ #include "Vconspiracion_conspiracion.h" #include "Vconspiracion_platform.h" #include "Vconspiracion_vga_domain.h" +#include "Vconspiracion_core.h" #include "Vconspiracion_core_control.h" #include "Vconspiracion_core_control_issue.h" #include "Vconspiracion_core_cp15_domain.h" @@ -386,7 +387,7 @@ int main(int argc, char **argv) std::fclose(img_file); } - auto &core = *top.conspiracion->core; + auto &core = *plat.cpu0->cpu; for(const auto &init : init_regs) { core.regs->a->file[init.index] = init.value; @@ -473,10 +474,10 @@ int main(int argc, char **argv) }; Vconspiracion_cache_sram *const caches[] = { - plat.c0->sram, - plat.c1->sram, - plat.c2->sram, - plat.c3->sram + plat.cache0->sram, + plat.cache1->sram, + plat.cache2->sram, + plat.cache3->sram }; auto dump_coherent = [&](std::uint32_t addr, std::uint32_t &data) |
