Skip to content

Commit 684e4cf

Browse files
committed
yosys: add a default croc.flist
fixup flist
1 parent d082cba commit 684e4cf

File tree

5 files changed

+209
-9
lines changed

5 files changed

+209
-9
lines changed

.gitignore

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,2 @@
1-
pickle
21
.bender
3-
WORK
4-
croc.flist
2+
tmp

Bender.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ sources:
3232
- rtl/user_pkg.sv
3333
- rtl/soc_ctrl/soc_ctrl_reg_pkg.sv
3434
- rtl/gpio/gpio_reg_pkg.sv
35+
# add your design files containing anything but modules (packages) here
3536

3637
# RTL
3738
- target: not(netlist_yosys)
@@ -44,6 +45,7 @@ sources:
4445
# Level 2
4546
- rtl/croc_domain.sv
4647
- rtl/user_domain.sv
48+
# add your design files with modules here
4749
# Level 3
4850
- rtl/croc_soc.sv
4951

Makefile

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ SW_HEX := sw/bin/helloworld.hex
4646
$(SW_HEX): sw/*.c sw/*.h sw/*.S sw/*.ld
4747
$(MAKE) -C sw/ compile
4848

49-
## Build the helloworld software
49+
## Build all top-level programs in sw/
5050
software: $(SW_HEX)
5151

5252
sw: $(SW_HEX)
@@ -88,14 +88,14 @@ VERILATOR_ARGS += --timing --autoflush --trace --trace-structs
8888
verilator/croc.f: Bender.lock Bender.yml
8989
$(BENDER) script verilator -t rtl -t verilator -DSYNTHESIS -DVERILATOR > $@
9090

91-
## Simulate RTL using Verilator
9291
verilator/obj_dir/Vtb_croc_soc: verilator/croc.f $(SW_HEX)
9392
cd verilator; $(VERILATOR) $(VERILATOR_ARGS) -CFLAGS "-O0" --top tb_croc_soc -f croc.f
9493

94+
## Simulate RTL using Verilator
9595
verilator: verilator/obj_dir/Vtb_croc_soc
9696
cd verilator; obj_dir/Vtb_croc_soc +binary="$(realpath $(SW_HEX))"
9797

98-
.PHONY: verilator vsim vsim-yosys verilator-yosys
98+
.PHONY: verilator vsim vsim-yosys
9999

100100

101101
####################
@@ -107,8 +107,8 @@ DUT_DESIGN ?= croc_soc
107107
BENDER_TARGETS ?= asic ihp13 rtl synthesis
108108
SV_DEFINES ?= VERILATOR SYNTHESIS COMMON_CELLS_ASSERTS_OFF
109109

110-
# re-generate file list given to yosys-slang frontend
111-
synth-flist: Bender.lock Bender.yml rtl/*/Bender.yml
110+
## Generate croc.flist used to read design in yosys
111+
yosys-flist: Bender.lock Bender.yml rtl/*/Bender.yml
112112
$(BENDER) script flist-plus $(foreach t,$(BENDER_TARGETS),-t $(t)) $(foreach d,$(SV_DEFINES),-D $(d)=1) > $(PROJ_DIR)/croc.flist
113113

114114
include yosys/yosys.mk
@@ -117,9 +117,10 @@ include openroad/openroad.mk
117117
klayout/croc_chip.gds: $(OR_OUT)/croc.def klayout/*.sh klayout/*.py
118118
./klayout/def2gds.sh
119119

120+
## Generate merged .gds from openroads .def output
120121
klayout: klayout/croc_chip.gds
121122

122-
.PHONY: klayout
123+
.PHONY: klayout yosys-flist
123124

124125

125126
#################
@@ -147,6 +148,7 @@ help: Makefile
147148
# Cleanup #
148149
###########
149150

151+
## Delete generated files and directories
150152
clean:
151153
rm -f $(SV_FLIST)
152154
rm -f klayout/croc_chip.gds

README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,17 @@ The most important make targets are documented, you can list them with:
162162
make help
163163
```
164164

165+
### Building on Croc
166+
To add your own design, we recommend creating a new directory under `rtl/` or put single source files (small designs) into `rtl/user_domain`, then go into `Bender.yml` and add the files in the indicated places.
167+
This will make Bender aware of the files and any script it contains will contain your design as well.
168+
169+
Then re-generate the default synthesis file-list:
170+
```sh
171+
make yosys-flist
172+
```
173+
174+
If you want to add an existing design and it already containts a `Bender.yml` in its repository, you can add it as a dependency in the `Bender.yml` and reading the guide below.
175+
165176
## Bender
166177
The dependency manager [Bender](https://github.com/pulp-platform/bender) is used in most pulp-platform IPs.
167178
Usually each dependency would be in a seperate repository, each with a `Bender.yml` file to describe where the RTL files are, how you can use this dependency and which additional dependency it has.

croc.flist

Lines changed: 187 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,187 @@
1+
# Copyright (c) 2025 ETH Zurich and University of Bologna.
2+
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
3+
# SPDX-License-Identifier: Apache-2.0
4+
#
5+
# Authors:
6+
# - Philippe Sauter <phsauter@iis.ee.ethz.ch>
7+
8+
# A file list given to the yosys-slang frontend to load the design
9+
# It contains:
10+
# - include directores expected from SystemVerilog 'include' statements
11+
# - defines used in some SystemVerilog files
12+
# often used to guard non-synthesisable code or select some implementation
13+
# - the paths to all source files
14+
15+
+incdir+/home/phsauter/repos/croc/rtl/apb/include
16+
+incdir+/home/phsauter/repos/croc/rtl/common_cells/include
17+
+incdir+/home/phsauter/repos/croc/rtl/cve2/include
18+
+incdir+/home/phsauter/repos/croc/rtl/obi/include
19+
+incdir+/home/phsauter/repos/croc/rtl/register_interface/include
20+
+define+TARGET_ASIC
21+
+define+TARGET_FLIST
22+
+define+TARGET_IHP13
23+
+define+TARGET_RTL
24+
+define+TARGET_SYNTHESIS
25+
+define+VERILATOR=1
26+
+define+SYNTHESIS=1
27+
+define+COMMON_CELLS_ASSERTS_OFF=1
28+
/home/phsauter/repos/croc/rtl/common_cells/binary_to_gray.sv
29+
/home/phsauter/repos/croc/rtl/common_cells/cb_filter_pkg.sv
30+
/home/phsauter/repos/croc/rtl/common_cells/cc_onehot.sv
31+
/home/phsauter/repos/croc/rtl/common_cells/cdc_reset_ctrlr_pkg.sv
32+
/home/phsauter/repos/croc/rtl/common_cells/cf_math_pkg.sv
33+
/home/phsauter/repos/croc/rtl/common_cells/clk_int_div.sv
34+
/home/phsauter/repos/croc/rtl/common_cells/credit_counter.sv
35+
/home/phsauter/repos/croc/rtl/common_cells/delta_counter.sv
36+
/home/phsauter/repos/croc/rtl/common_cells/ecc_pkg.sv
37+
/home/phsauter/repos/croc/rtl/common_cells/edge_propagator_tx.sv
38+
/home/phsauter/repos/croc/rtl/common_cells/exp_backoff.sv
39+
/home/phsauter/repos/croc/rtl/common_cells/fifo_v3.sv
40+
/home/phsauter/repos/croc/rtl/common_cells/gray_to_binary.sv
41+
/home/phsauter/repos/croc/rtl/common_cells/isochronous_4phase_handshake.sv
42+
/home/phsauter/repos/croc/rtl/common_cells/isochronous_spill_register.sv
43+
/home/phsauter/repos/croc/rtl/common_cells/lfsr.sv
44+
/home/phsauter/repos/croc/rtl/common_cells/lfsr_16bit.sv
45+
/home/phsauter/repos/croc/rtl/common_cells/lfsr_8bit.sv
46+
/home/phsauter/repos/croc/rtl/common_cells/lossy_valid_to_stream.sv
47+
/home/phsauter/repos/croc/rtl/common_cells/mv_filter.sv
48+
/home/phsauter/repos/croc/rtl/common_cells/onehot_to_bin.sv
49+
/home/phsauter/repos/croc/rtl/common_cells/plru_tree.sv
50+
/home/phsauter/repos/croc/rtl/common_cells/passthrough_stream_fifo.sv
51+
/home/phsauter/repos/croc/rtl/common_cells/popcount.sv
52+
/home/phsauter/repos/croc/rtl/common_cells/rr_arb_tree.sv
53+
/home/phsauter/repos/croc/rtl/common_cells/rstgen_bypass.sv
54+
/home/phsauter/repos/croc/rtl/common_cells/serial_deglitch.sv
55+
/home/phsauter/repos/croc/rtl/common_cells/shift_reg.sv
56+
/home/phsauter/repos/croc/rtl/common_cells/shift_reg_gated.sv
57+
/home/phsauter/repos/croc/rtl/common_cells/spill_register_flushable.sv
58+
/home/phsauter/repos/croc/rtl/common_cells/stream_demux.sv
59+
/home/phsauter/repos/croc/rtl/common_cells/stream_filter.sv
60+
/home/phsauter/repos/croc/rtl/common_cells/stream_fork.sv
61+
/home/phsauter/repos/croc/rtl/common_cells/stream_intf.sv
62+
/home/phsauter/repos/croc/rtl/common_cells/stream_join_dynamic.sv
63+
/home/phsauter/repos/croc/rtl/common_cells/stream_mux.sv
64+
/home/phsauter/repos/croc/rtl/common_cells/stream_throttle.sv
65+
/home/phsauter/repos/croc/rtl/common_cells/sub_per_hash.sv
66+
/home/phsauter/repos/croc/rtl/common_cells/sync.sv
67+
/home/phsauter/repos/croc/rtl/common_cells/sync_wedge.sv
68+
/home/phsauter/repos/croc/rtl/common_cells/unread.sv
69+
/home/phsauter/repos/croc/rtl/common_cells/read.sv
70+
/home/phsauter/repos/croc/rtl/common_cells/addr_decode_dync.sv
71+
/home/phsauter/repos/croc/rtl/common_cells/cdc_2phase.sv
72+
/home/phsauter/repos/croc/rtl/common_cells/cdc_4phase.sv
73+
/home/phsauter/repos/croc/rtl/common_cells/clk_int_div_static.sv
74+
/home/phsauter/repos/croc/rtl/common_cells/addr_decode.sv
75+
/home/phsauter/repos/croc/rtl/common_cells/addr_decode_napot.sv
76+
/home/phsauter/repos/croc/rtl/common_cells/multiaddr_decode.sv
77+
/home/phsauter/repos/croc/rtl/common_cells/cb_filter.sv
78+
/home/phsauter/repos/croc/rtl/common_cells/cdc_fifo_2phase.sv
79+
/home/phsauter/repos/croc/rtl/common_cells/clk_mux_glitch_free.sv
80+
/home/phsauter/repos/croc/rtl/common_cells/counter.sv
81+
/home/phsauter/repos/croc/rtl/common_cells/ecc_decode.sv
82+
/home/phsauter/repos/croc/rtl/common_cells/ecc_encode.sv
83+
/home/phsauter/repos/croc/rtl/common_cells/edge_detect.sv
84+
/home/phsauter/repos/croc/rtl/common_cells/lzc.sv
85+
/home/phsauter/repos/croc/rtl/common_cells/max_counter.sv
86+
/home/phsauter/repos/croc/rtl/common_cells/rstgen.sv
87+
/home/phsauter/repos/croc/rtl/common_cells/spill_register.sv
88+
/home/phsauter/repos/croc/rtl/common_cells/stream_delay.sv
89+
/home/phsauter/repos/croc/rtl/common_cells/stream_fifo.sv
90+
/home/phsauter/repos/croc/rtl/common_cells/stream_fork_dynamic.sv
91+
/home/phsauter/repos/croc/rtl/common_cells/stream_join.sv
92+
/home/phsauter/repos/croc/rtl/common_cells/cdc_reset_ctrlr.sv
93+
/home/phsauter/repos/croc/rtl/common_cells/cdc_fifo_gray.sv
94+
/home/phsauter/repos/croc/rtl/common_cells/fall_through_register.sv
95+
/home/phsauter/repos/croc/rtl/common_cells/id_queue.sv
96+
/home/phsauter/repos/croc/rtl/common_cells/stream_to_mem.sv
97+
/home/phsauter/repos/croc/rtl/common_cells/stream_arbiter_flushable.sv
98+
/home/phsauter/repos/croc/rtl/common_cells/stream_fifo_optimal_wrap.sv
99+
/home/phsauter/repos/croc/rtl/common_cells/stream_register.sv
100+
/home/phsauter/repos/croc/rtl/common_cells/stream_xbar.sv
101+
/home/phsauter/repos/croc/rtl/common_cells/cdc_fifo_gray_clearable.sv
102+
/home/phsauter/repos/croc/rtl/common_cells/cdc_2phase_clearable.sv
103+
/home/phsauter/repos/croc/rtl/common_cells/mem_to_banks_detailed.sv
104+
/home/phsauter/repos/croc/rtl/common_cells/stream_arbiter.sv
105+
/home/phsauter/repos/croc/rtl/common_cells/stream_omega_net.sv
106+
/home/phsauter/repos/croc/rtl/common_cells/mem_to_banks.sv
107+
/home/phsauter/repos/croc/rtl/apb/apb_pkg.sv
108+
/home/phsauter/repos/croc/rtl/register_interface/reg_intf.sv
109+
/home/phsauter/repos/croc/rtl/register_interface/lowrisc_opentitan/prim_subreg_arb.sv
110+
/home/phsauter/repos/croc/rtl/register_interface/lowrisc_opentitan/prim_subreg_ext.sv
111+
/home/phsauter/repos/croc/rtl/register_interface/periph_to_reg.sv
112+
/home/phsauter/repos/croc/rtl/register_interface/reg_to_apb.sv
113+
/home/phsauter/repos/croc/rtl/register_interface/lowrisc_opentitan/prim_subreg_shadow.sv
114+
/home/phsauter/repos/croc/rtl/register_interface/lowrisc_opentitan/prim_subreg.sv
115+
/home/phsauter/repos/croc/rtl/apb_uart/slib_clock_div.sv
116+
/home/phsauter/repos/croc/rtl/apb_uart/slib_counter.sv
117+
/home/phsauter/repos/croc/rtl/apb_uart/slib_edge_detect.sv
118+
/home/phsauter/repos/croc/rtl/apb_uart/slib_fifo.sv
119+
/home/phsauter/repos/croc/rtl/apb_uart/slib_input_filter.sv
120+
/home/phsauter/repos/croc/rtl/apb_uart/slib_input_sync.sv
121+
/home/phsauter/repos/croc/rtl/apb_uart/slib_mv_filter.sv
122+
/home/phsauter/repos/croc/rtl/apb_uart/uart_baudgen.sv
123+
/home/phsauter/repos/croc/rtl/apb_uart/uart_interrupt.sv
124+
/home/phsauter/repos/croc/rtl/apb_uart/uart_receiver.sv
125+
/home/phsauter/repos/croc/rtl/apb_uart/uart_transmitter.sv
126+
/home/phsauter/repos/croc/rtl/apb_uart/apb_uart.sv
127+
/home/phsauter/repos/croc/rtl/apb_uart/apb_uart_wrap.sv
128+
/home/phsauter/repos/croc/rtl/apb_uart/reg_uart_wrap.sv
129+
/home/phsauter/repos/croc/rtl/cve2/cve2_pkg.sv
130+
/home/phsauter/repos/croc/rtl/cve2/cve2_alu.sv
131+
/home/phsauter/repos/croc/rtl/cve2/cve2_compressed_decoder.sv
132+
/home/phsauter/repos/croc/rtl/cve2/cve2_controller.sv
133+
/home/phsauter/repos/croc/rtl/cve2/cve2_counter.sv
134+
/home/phsauter/repos/croc/rtl/cve2/cve2_csr.sv
135+
/home/phsauter/repos/croc/rtl/cve2/cve2_decoder.sv
136+
/home/phsauter/repos/croc/rtl/cve2/cve2_fetch_fifo.sv
137+
/home/phsauter/repos/croc/rtl/cve2/cve2_load_store_unit.sv
138+
/home/phsauter/repos/croc/rtl/cve2/cve2_multdiv_fast.sv
139+
/home/phsauter/repos/croc/rtl/cve2/cve2_multdiv_slow.sv
140+
/home/phsauter/repos/croc/rtl/cve2/cve2_pmp.sv
141+
/home/phsauter/repos/croc/rtl/cve2/cve2_register_file_ff.sv
142+
/home/phsauter/repos/croc/rtl/cve2/cve2_wb.sv
143+
/home/phsauter/repos/croc/rtl/cve2/cve2_cs_registers.sv
144+
/home/phsauter/repos/croc/rtl/cve2/cve2_ex_block.sv
145+
/home/phsauter/repos/croc/rtl/cve2/cve2_id_stage.sv
146+
/home/phsauter/repos/croc/rtl/cve2/cve2_prefetch_buffer.sv
147+
/home/phsauter/repos/croc/rtl/cve2/cve2_if_stage.sv
148+
/home/phsauter/repos/croc/rtl/cve2/cve2_core.sv
149+
/home/phsauter/repos/croc/rtl/obi/obi_pkg.sv
150+
/home/phsauter/repos/croc/rtl/obi/obi_intf.sv
151+
/home/phsauter/repos/croc/rtl/obi/obi_rready_converter.sv
152+
/home/phsauter/repos/croc/rtl/obi/obi_atop_resolver.sv
153+
/home/phsauter/repos/croc/rtl/obi/obi_demux.sv
154+
/home/phsauter/repos/croc/rtl/obi/obi_err_sbr.sv
155+
/home/phsauter/repos/croc/rtl/obi/obi_mux.sv
156+
/home/phsauter/repos/croc/rtl/obi/obi_sram_shim.sv
157+
/home/phsauter/repos/croc/rtl/obi/obi_xbar.sv
158+
/home/phsauter/repos/croc/rtl/riscv-dbg/dm_pkg.sv
159+
/home/phsauter/repos/croc/rtl/riscv-dbg/debug_rom/debug_rom.sv
160+
/home/phsauter/repos/croc/rtl/riscv-dbg/debug_rom/debug_rom_one_scratch.sv
161+
/home/phsauter/repos/croc/rtl/riscv-dbg/dm_csrs.sv
162+
/home/phsauter/repos/croc/rtl/riscv-dbg/dm_mem.sv
163+
/home/phsauter/repos/croc/rtl/riscv-dbg/dmi_cdc.sv
164+
/home/phsauter/repos/croc/rtl/riscv-dbg/dmi_jtag_tap.sv
165+
/home/phsauter/repos/croc/rtl/riscv-dbg/dm_sba.sv
166+
/home/phsauter/repos/croc/rtl/riscv-dbg/dm_top.sv
167+
/home/phsauter/repos/croc/rtl/riscv-dbg/dmi_jtag.sv
168+
/home/phsauter/repos/croc/rtl/riscv-dbg/dm_obi_top.sv
169+
/home/phsauter/repos/croc/rtl/timer_unit/timer_unit_counter.sv
170+
/home/phsauter/repos/croc/rtl/timer_unit/timer_unit_counter_presc.sv
171+
/home/phsauter/repos/croc/rtl/timer_unit/apb_timer_unit.sv
172+
/home/phsauter/repos/croc/rtl/timer_unit/timer_unit.sv
173+
/home/phsauter/repos/croc/ihp13/tc_clk.sv
174+
/home/phsauter/repos/croc/ihp13/tc_sram.sv
175+
/home/phsauter/repos/croc/rtl/croc_pkg.sv
176+
/home/phsauter/repos/croc/rtl/user_pkg.sv
177+
/home/phsauter/repos/croc/rtl/soc_ctrl/soc_ctrl_reg_pkg.sv
178+
/home/phsauter/repos/croc/rtl/gpio/gpio_reg_pkg.sv
179+
/home/phsauter/repos/croc/rtl/core_wrap.sv
180+
/home/phsauter/repos/croc/rtl/soc_ctrl/soc_ctrl_reg_top.sv
181+
/home/phsauter/repos/croc/rtl/gpio/gpio_reg_top.sv
182+
/home/phsauter/repos/croc/rtl/gpio/gpio.sv
183+
/home/phsauter/repos/croc/rtl/croc_domain.sv
184+
/home/phsauter/repos/croc/rtl/user_domain.sv
185+
/home/phsauter/repos/croc/rtl/croc_soc.sv
186+
/home/phsauter/repos/croc/rtl/croc_chip.sv
187+

0 commit comments

Comments
 (0)