-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjustfile
More file actions
65 lines (49 loc) · 1.81 KB
/
justfile
File metadata and controls
65 lines (49 loc) · 1.81 KB
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
# dirs
preprocess_dir := 'preprocessed'
build_dir := 'build'
sim_dir := 'sim'
# parse source files
include_dirs := `find src -name '*.sv*' -printf '-I%h\n' | sort -u | tr '\n' ' '`
src_sv := `find src -name "*.sv" | tr '\n' ' '`
## Private recipes
_default:
@just --list
_prep:
@mkdir -p {{build_dir}}/{{preprocess_dir}}
@mkdir -p {{sim_dir}}
## Basic recipes
# Clean up generated files
clean:
rm -f transcript
rm -rf {{build_dir}}
rm -rf {{sim_dir}}
# Check a design for common code errors
lint design *VERILATOR_FLAGS:
verilator --lint-only --timing -Wall {{VERILATOR_FLAGS}} {{include_dirs}} {{src_sv}} --top {{design}} `find -name {{design}}.sv`
# Convert a systemverilog design to verilog using sv2v
preprocess design *SV2V_FLAGS: _prep
sv2v {{SV2V_FLAGS}} {{include_dirs}} -w{{build_dir}}/{{preprocess_dir}} --top={{design}} `find -name {{design}}.sv` {{src_sv}}
## Simulation Recipes
# Verilate a testbench
verilate testbench *VERILATOR_FLAGS: _prep
verilator --binary --timing --trace -Wno-lint \
-MAKEFLAGS "--silent" \
--Mdir {{build_dir}} \
{{VERILATOR_FLAGS}} \
-j `nproc` \
{{include_dirs}} \
--top {{testbench}} \
`find -name {{testbench}}.sv`
make --silent -C {{build_dir}} -f V{{testbench}}.mk V{{testbench}}
@just run {{testbench}}
# Run simulation on a previously verilated testbench
run testbench *FLAGS:
cp {{build_dir}}/V{{testbench}} {{sim_dir}}/.
cd {{sim_dir}} && ./V{{testbench}} {{FLAGS}}
# Simulate a testbench using QuestaSim
questasim testbench *QUESTA_FLAGS: _prep
vlog -lint -work {{sim_dir}}/work {{QUESTA_FLAGS}} {{src_sv}} tb/{{testbench}}.sv
cd {{sim_dir}} && vsim -c {{testbench}} -do "run -all"
# View simulation waveforms
view:
surfer {{sim_dir}}/*.vcd