Skip to content

Commit a48aa8a

Browse files
committed
tools: update to version 2025.12
1 parent 4d322a3 commit a48aa8a

File tree

7 files changed

+24
-27
lines changed

7 files changed

+24
-27
lines changed

README.md

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,6 @@ Croc was successfully taped out in Nov 2024. The chip is called [MLEM](http://as
1010
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.
1111

1212

13-
**IMPORTANT: Update to 1.1 recommended.**
14-
Release 1.1 and newer includes a fix for the SRAMs where the `A_DLY` pin was tied low instead of high. The pin controls internal timings and the old version may create violations for some SRAMs.
15-
16-
1713
## Architecture
1814

1915
![Croc block diagram](doc/croc_arch.svg)
@@ -33,11 +29,14 @@ The main SoC configurations are in `rtl/croc_pkg.sv`:
3329

3430
| Parameter | Default | Function |
3531
|---------------------|------------------|-------------------------------------------------------|
36-
| `HartId` | `0` | Core's Hart ID |
3732
| `PulpJtagIdCode` | `32'hED9_C0C50` | Debug module ID code |
38-
| `NumExternalIrqs` | `4` | Number of external interrupts into Croc domain |
39-
| `BankNumWords` | `512` | Number of 32bit words in a memory bank |
33+
| `SramBankNumWords` | `512` | Number of 32bit words in a memory bank |
4034
| `NumSramBanks` | `2` | Number of memory banks |
35+
| `BootAddr` | `32'h1000_0000` | Default boot address set in 'soc_ctrl' register |
36+
| `croc_addr_map` | see 'Memory Map' | Routing rules used for the main crossbar |
37+
| `periph_addr_map` | see 'Memory Map' | Routing rules used for the peripheral demuliplexer |
38+
39+
Further configurations can be made in `rtl/core_wrap.sv` (core specifics) and `rtl/croc_soc.sv` (connectivity between domains and to/from outside).
4140

4241
The SRAMs are instantiated via a technology wrapper called `tc_sram_impl` (tc: tech_cells), the technology-independent implementation is in `rtl/tech_cells_generic/tc_sram_impl.sv`. A number of SRAM configurations are implemented using IHP130 SRAM memories in `ihp13/tc_sram_impl.sv`. If an unimplemented SRAM configuration is instantiated it will result in a `tc_sram_blackbox` module which can then be easily identified from the synthesis results.
4342

@@ -94,7 +93,7 @@ Cell/Module placement | Routing
9493

9594
## Requirements
9695
We are using the excellent docker container maintained by Harald Pretl. If you get stuck with installing the tools, we urge you to check the [Tool Repository](https://github.com/iic-jku/IIC-OSIC-TOOLS).
97-
The current supported version is 2025.03, no other version is officially supported.
96+
The current supported version is 2025.12, no other version is officially supported.
9897

9998
### ETHZ systems
10099
ETHZ Design Center maintains an internal version of the IHP PDK, with integrations into all tools we have access to. For this reason if you work on the ETH systems it is recommended to use the `icdesign` tool (cockpit) instead of the liked Github repo.
@@ -114,7 +113,7 @@ source ethz.env
114113
Additionally you may prefer to just enter a shell in the pre-installed osic-tools container using:
115114
```sh
116115
oseda bash
117-
# older version eg: oseda -2025.03 bash
116+
# specific version eg: oseda -2025.12 bash
118117
```
119118

120119
### Other systems

docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
services:
99
pulp-docker:
10-
image: hpretl/iic-osic-tools:2025.07.pre1
10+
image: hpretl/iic-osic-tools:2025.12
1111
environment:
1212
- UID=${UID}
1313
- GID=${GID}

ethz.env

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
# - Philippe Sauter <[email protected]>
88

99
# used in Makefiles
10-
export BENDER="oseda -2025.07 bender"
11-
export OPENROAD="oseda -2025.07 openroad"
12-
export KLAYOUT="oseda -2025.07 klayout"
13-
export YOSYS="oseda -2025.07 yosys"
14-
export PYTHON3="oseda -2025.07 python3"
15-
export VERILATOR="oseda -2025.07 verilator"
10+
export BENDER="oseda -2025.12 bender"
11+
export OPENROAD="oseda -2025.12 openroad"
12+
export KLAYOUT="oseda -2025.12 klayout"
13+
export YOSYS="oseda -2025.12 yosys"
14+
export PYTHON3="oseda -2025.12 python3"
15+
export VERILATOR="oseda -2025.12 verilator"

openroad/scripts/chip.tcl

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -185,12 +185,7 @@ utl::report "Clock Tree Synthesis"
185185
set_wire_rc -clock -layer Metal4
186186
clock_tree_synthesis -buf_list $ctsBuf -root_buf $ctsBufRoot \
187187
-sink_clustering_enable \
188-
-obstruction_aware \
189-
-balance_levels
190-
191-
# Repair wire length between clock pad and clock-tree root
192-
utl::report "Repair clock nets"
193-
repair_clock_nets
188+
-repair_clock_nets
194189

195190
# legalize cts cells
196191
utl::report "Detailed placement"
@@ -236,7 +231,7 @@ utl::report "###################################################################
236231
# eventually needs M4/M5 it may struggle with finding space
237232
# to place vias down to M2/M3 -> reserve some space on M2/M3
238233
# Reduce TM1 to avoid too much routing there (bigger tracks -> bad for routing)
239-
set_global_routing_layer_adjustment Metal2-Metal3 0.30
234+
set_global_routing_layer_adjustment Metal2-Metal3 0.20
240235
set_global_routing_layer_adjustment TopMetal1 0.20
241236
set_routing_layers -signal Metal2-TopMetal1 -clock Metal2-TopMetal1
242237

@@ -295,8 +290,6 @@ repair_antennas -ratio_margin 30 -iterations 5
295290
utl::report "Detailed route"
296291
set_thread_count 8
297292
detailed_route -output_drc ${report_dir}/${log_id_str}_${proj_name}_route_drc.rpt \
298-
-bottom_routing_layer Metal2 \
299-
-top_routing_layer TopMetal1 \
300293
-droute_end_iter 30 \
301294
-drc_report_iter_step 5 \
302295
-save_guide_updates \

start_linux.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,15 @@
66
# Authors:
77
# - Philippe Sauter <[email protected]>
88

9+
RUNDIR=${XDG_RUNTIME_DIR:-/tmp/runtime-$(id -u)}
10+
mkdir -p "$RUNDIR"
11+
912
env UID=$(id -u) GID=$(id -g) docker compose pull pulp-docker
1013

1114
env UID=$(id -u) GID=$(id -g) docker compose run --rm \
1215
-e PS1="\[\033[01;32m\]osic:\[\033[00m\]\[\033[01;34m\]\w\[\033[00m\] $" \
1316
-e DISPLAY=$DISPLAY \
17+
-e XDG_RUNTIME_DIR=$RUNDIR \
18+
-v "$RUNDIR:$RUNDIR" \
1419
-v /tmp/.X11-unix:/tmp/.X11-unix \
1520
pulp-docker

start_vnc.bat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ if not exist "%DESIGNS%" %ECHO_IF_DRY_RUN% mkdir "%DESIGNS%"
4646

4747
IF "%DOCKER_USER%"=="" SET DOCKER_USER=hpretl
4848
IF "%DOCKER_IMAGE%"=="" SET DOCKER_IMAGE=iic-osic-tools
49-
IF "%DOCKER_TAG%"=="" SET DOCKER_TAG=2025.07.pre1
49+
IF "%DOCKER_TAG%"=="" SET DOCKER_TAG=2025.12
5050

5151
IF "%CONTAINER_USER%"=="" SET CONTAINER_USER=1000
5252
IF "%CONTAINER_GROUP%"=="" SET CONTAINER_GROUP=1000

start_vnc.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ if [ -z ${DOCKER_IMAGE+z} ]; then
5252
fi
5353

5454
if [ -z ${DOCKER_TAG+z} ]; then
55-
DOCKER_TAG="2025.07.pre1"
55+
DOCKER_TAG="2025.12"
5656
fi
5757

5858
if [ -z ${CONTAINER_NAME+z} ]; then

0 commit comments

Comments
 (0)