You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+10-11Lines changed: 10 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ As it is oriented towards education, it forgoes some configurability to increase
6
6
7
7
Croc is developed as part of the PULP project, a joint effort between ETH Zurich and the University of Bologna.
8
8
9
-
Croc was successfully taped out in Nov 2024. The chip is called [MLEM](http://asic.ee.ethz.ch/2024/MLEM.html), named after the sound Yoshi makes when eating a tasty fruit.
9
+
Croc was successfully taped out in Nov 2024 in the chip [MLEM](http://asic.ee.ethz.ch/2024/MLEM.html), named after the sound Yoshi makes when eating a tasty fruit. MLEM's core functionality was verified on real silicon early 2026.
10
10
MLEM was designed and prepared for tapeout by ETHZ students as a bachelor project. The exact code and scripts used for the tapeout can be seen in the frozen [mlem-tapeout](https://github.com/pulp-platform/croc/tree/mlem-tapeout) branch.
11
11
12
12
## Architecture
@@ -15,27 +15,27 @@ MLEM was designed and prepared for tapeout by ETHZ students as a bachelor projec
15
15
16
16
The SoC is composed of two main parts:
17
17
18
-
- The `croc_domain` containing a CVE2 core (a fork of Ibex), SRAM, an OBI crossbar and a few simple peripherals
18
+
- The `croc_domain` containing a CVE2 core (a more minimal fork of Ibex), SRAM, an OBI crossbar and a few simple peripherals
19
19
- The `user_domain` where students are invited to add their own designs or other open-source designs (peripherals, accelerators...)
20
20
21
21
The main interconnect is OBI, you can find [the spec online](https://github.com/openhwgroup/obi/blob/072d9173c1f2d79471d6f2a10eae59ee387d4c6f/OBI-v1.6.0.pdf).
22
22
23
23
The various IPs of the SoC (UART, OBI, debug-module, timer...) come from other PULP repositories and are managed by [Bender](https://github.com/pulp-platform/bender).
24
-
To make it easier to browse and understand, only the currently used files are included in `rtl/<IP>`. You may want to explore the repositories of the respective IPs to find their documentation or additional functionality, the urls are in `Bender.yml`.
24
+
To make it easier to browse and understand, only used or important building blocks are included in `rtl/<IP>`. You may want to explore the repositories of the respective IPs to find their documentation or additional functionality, the urls are in `Bender.yml`.
25
25
26
26
## Configuration
27
27
28
28
The main SoC configurations are in `rtl/croc_pkg.sv`:
|`32'h2000_0000`|`32'h8000_0000`| Passthrough to user domain |
67
-
|`32'h2000_0000`|`32'h2000_1000`| reserved for string formatted user ROM*|
67
+
|`32'h2000_0000`|`32'h2000_1000`| reserved for user ROM text*|
68
68
69
69
*If people modify Croc we suggest they add a ROM at this address containing additional information
70
70
like the names of the developers, a project link or similar. This can then be written out via UART.
71
71
We ask people to format the ROM like a C string with zero termination and using ASCII encoding if feasible.
72
-
The [MLEM user ROM](https://github.com/pulp-platform/croc/blob/mlem-tapeout/rtl/user_domain/user_rom.sv) may serve as a reference implementation.
72
+
The [MLEM user ROM](https://github.com/pulp-platform/croc/blob/mlem-tapeout/rtl/user_domain/user_rom.sv) may serve as one possible reference implementation.
73
73
74
74
## Flow
75
75
@@ -89,7 +89,7 @@ Currently, the final GDS is still missing the following things:
89
89
90
90
- metal density fill
91
91
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.
92
+
This can be done in KLayout, check the [IHP repository](https://github.com/IHP-GmbH/IHP-Open-PDK/tree/main) for a reference script.
93
93
94
94
### Example Results
95
95
@@ -237,8 +237,7 @@ Fixes and changes to each IPs `rtl/<IP>/Bender.yml` are managed by `bender vendo
237
237
If you need to update a dependency or map another file you need to edit the coresponding `vendor_package` section in `Bender.yml` and then run `bender vendor init`. Then you might need to change `rtl/<IP>/Bender.yml` to list your new file in the sources.
238
238
To save a fix/change as a patch, stage it in git and then run `bender vendor patch`. When prompted, add a commit message (this is used as the patches file name). Finally, commit both the patch file and the new `rtl/<IP>`.
239
239
240
-
**Note:** using `bender vendor` in this repository to change the local versions of the IPs requires an up-to-date version of Bender, specifically it needs to include [PR 179](https://github.com/pulp-platform/bender/pull/179).
241
-
240
+
**Note:** using `bender vendor` in this repository to change the local versions of the IPs requires an up-to-date version of Bender. (v0.28.2 or newer)
242
241
### Targets
243
242
244
243
Another thing we use are targets (in the `Bender.yml`), together they build different views/contexts of your RTL. For example without defining any targets the technology independent cells/memories are used (in `rtl/tech_cells_generic/`) but if we use the target `ihp13` then the same modules contain a technology-specific implementation (in `ihp13/`). Similar contexts are built for different simulators and other things.
0 commit comments