Skip to content

Commit 4def10a

Browse files
thommythomasophsauter
authored andcommitted
hw: add optional iDMA
1 parent a7b94bf commit 4def10a

31 files changed

+5353
-358
lines changed

Bender.local

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ overrides:
77
ibex: { path: "rtl/ibex" }
88
obi: { path: "rtl/obi" }
99
riscv-dbg: { path: "rtl/riscv-dbg" }
10+
idma: { path: "rtl/idma" }

Bender.lock

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,14 @@ packages:
2626
source:
2727
Path: rtl/cve2
2828
dependencies: []
29+
idma:
30+
revision: null
31+
version: null
32+
source:
33+
Path: rtl/idma
34+
dependencies:
35+
- common_cells
36+
- obi
2937
obi:
3038
revision: null
3139
version: null

Bender.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ dependencies:
1616
apb: { git: "https://github.com/pulp-platform/apb.git", version: 0.2.4 }
1717
obi: { git: "https://github.com/pulp-platform/obi.git", rev: 6a724da } # 0.1.7+
1818
obi_peripherals: { git: "https://github.com/pulp-platform/obi_peripherals.git", rev: 21ee04d } # UART
19+
idma: { git: "https://github.com/pulp-platform/idma.git", rev: 80fdfa9 } # TODO: update
1920
cve2: { path: "rtl/cve2" } # a vendor package (no Bender.yml), see below
2021

2122

@@ -133,6 +134,29 @@ vendor_package:
133134
- { from: 'Bender.yml', to: 'Bender.yml', patch_dir: '' }
134135
- { from: 'README.md', to: 'README.md', patch_dir: '' }
135136

137+
# - name: idma
138+
# target_dir: rtl/idma
139+
# upstream: { git: "https://github.com/pulp-platform/iDMA.git", rev: "80fdfa93cb56c092c829fd055dc9102a1c7070fa" } # TODO: fix once merged into master
140+
# patch_dir: "rtl/.patches/idma"
141+
# mapping:
142+
# - { from: 'target/rtl/include/idma/tracer.svh', to: 'include/idma/tracer.svh', patch_dir: 'include/idma' }
143+
# - { from: 'target/rtl/idma_backend_rw_obi.sv', to: 'idma_backend_rw_obi.sv', patch_dir: '' }
144+
# - { from: 'target/rtl/idma_legalizer_rw_obi.sv', to: 'idma_legalizer_rw_obi.sv', patch_dir: '' }
145+
# - { from: 'src/backend/idma_legalizer_page_splitter.sv', to: 'idma_legalizer_page_splitter.sv', patch_dir: '' }
146+
# - { from: 'target/rtl/idma_transport_layer_rw_obi.sv', to: 'idma_transport_layer_rw_obi.sv', patch_dir: '' }
147+
# - { from: 'src/backend/idma_channel_coupler.sv', to: 'idma_channel_coupler.sv', patch_dir: '' }
148+
# - { from: 'src/backend/idma_dataflow_element.sv', to: 'idma_dataflow_element.sv', patch_dir: '' }
149+
# - { from: 'src/backend/idma_obi_read.sv', to: 'idma_obi_read.sv', patch_dir: '' }
150+
# - { from: 'src/backend/idma_obi_write.sv', to: 'idma_obi_write.sv', patch_dir: '' }
151+
# - { from: 'src/frontend/idma_transfer_id_gen.sv', to: 'idma_transfer_id_gen.sv', patch_dir: '' }
152+
# - { from: 'src/include/idma/guard.svh', to: 'include/idma/guard.svh', patch_dir: 'include/idma' }
153+
# - { from: 'src/include/idma/typedef.svh', to: 'include/idma/typedef.svh', patch_dir: 'include/idma' }
154+
# - { from: 'src/midend/idma_nd_midend.sv', to: 'idma_nd_midend.sv', patch_dir: '' }
155+
# - { from: 'src/idma_pkg.sv', to: 'idma_pkg.sv', patch_dir: '' }
156+
# - { from: 'Bender.yml', to: 'Bender.yml', patch_dir: '' }
157+
# - { from: 'README.md', to: 'README.md', patch_dir: '' }
158+
# - { from: 'CHANGELOG.md', to: 'CHANGELOG.md', patch_dir: '' }
159+
136160

137161
###############
138162
# peripherals #

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,9 @@ The main SoC configurations are in `rtl/croc_pkg.sv`:
3030
| Parameter | Default | Function |
3131
|---------------------|------------------|-------------------------------------------------------|
3232
| `PulpJtagIdCode` | `32'hED9_C0C50` | Debug module ID code |
33-
| `SramBankNumWords` | `512` | Number of 32bit words in a memory bank |
33+
| `iDMAEnable` | `0` | Enable optional DMA (see `rtl/idma`) |
3434
| `NumSramBanks` | `2` | Number of memory banks |
35+
| `SramBankNumWords` | `512` | Number of 32bit words in a memory bank |
3536
| `BootAddr` | `32'h1000_0000` | Default boot address set in 'soc_ctrl' register |
3637
| `croc_addr_map` | see 'Memory Map' | Routing rules used for the main crossbar |
3738
| `periph_addr_map` | see 'Memory Map' | Routing rules used for the peripheral demuliplexer |
@@ -60,6 +61,7 @@ The address map of the default configuration is as follows:
6061
| `32'h0300_2000` | `32'h0300_3000` | UART peripheral |
6162
| `32'h0300_5000` | `32'h0300_6000` | GPIO peripheral |
6263
| `32'h0300_A000` | `32'h0300_B000` | Timer peripheral |
64+
| `32'h0300_B000` | `32'h0300_C000` | (optional) DMA configuration |
6365
| `32'h1000_0000` | `+SRAM_SIZE` | Memory banks (SRAM) |
6466
| `32'h2000_0000` | `32'h8000_0000` | Passthrough to user domain |
6567
| `32'h2000_0000` | `32'h2000_1000` | reserved for string formatted user ROM* |
@@ -86,9 +88,8 @@ graph LR;
8688
Currently, the final GDS is still missing the following things:
8789

8890
- metal density fill
89-
- sealring
9091

91-
These can be added in KLayout, check the [IHP repository](https://github.com/IHP-GmbH/IHP-Open-PDK/tree/main) (possible the dev branch) for a reference script.
92+
These can be done in KLayout, check the [IHP repository](https://github.com/IHP-GmbH/IHP-Open-PDK/tree/main) for a reference script.
9293

9394
### Example Results
9495

0 commit comments

Comments
 (0)