-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path.justfile
65 lines (53 loc) · 1.26 KB
/
.justfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
set dotenv-load
set shell := ["nu", "-c"]
MODULE := "alu"
alias s := sim
tmpdir := `mktemp -d`
version := "0.2.7"
tardir := tmpdir / "awesomesauce-" + version
tarball := tardir + ".tar.gz"
@default:
just -f verilator.justfile
default:
just --list
# simulate
sim:
# recipe param as env variable with $ sign
# hello $name:
# echo $name
# Verilate
verilate: .stamp.verilate
# Build
build: "obj_dir/V{{MODULE}}"
# View waveforms
waves: waveform.vcd
@echo
@echo "### WAVES ###"
gtkwave -6 waveform.vcd
# Generate waveform
waveform.vcd: "./obj_dir/V{{MODULE}}"
@echo
@echo "### SIMULATING ###"
@./obj_dir/V{{MODULE}} +verilator+rand+reset+2
# Build simulation
"./obj_dir/V{{MODULE}}": .stamp.verilate
@echo
@echo "### BUILDING SIM ###"
make -C obj_dir -f V{{MODULE}}.mk V{{MODULE}}
# Verilate
.stamp.verilate: "{{MODULE}}.sv" "tb_{{MODULE}}.cpp"
@echo
@echo "### VERILATING ###"
verilator -CFLAGS -std=c++14 -Wall --trace --x-assign unique --x-initial unique -cc {{MODULE}}.sv --exe tb_{{MODULE}}.cpp
@touch .stamp.verilate
# Lint
lint: "{{MODULE}}.sv"
verilator --lint-only {{MODULE}}.sv
# clang database gen
bear:
bear -- make sim
# Clean
clean:
rm -rf .stamp.*
rm -rf ./obj_dir
rm -rf waveform.vcd