manta/Makefile

156 lines
4.2 KiB
Makefile

test: auto_gen sim formal
examples: icestick nexys_a7
clean:
rm *.out *.vcd
rm **/lab-bc.py
rm -rf dist/
rm -rf src/mantaray.egg-info
rm -rf test/formal_verification/*_basic
rm -rf test/formal_verification/*_cover
rm -f examples/nexys_a7/*/obj/*
rm -f examples/nexys_a7/*/src/manta.v
rm -f examples/icestick/*/*.bin
rm -f examples/icestick/*/manta.v
serve_docs:
mkdocs serve
total_loc:
find . -type f \( -iname \*.sv -o -iname \*.v -o -iname \*.py -o -iname \*.yaml -o -iname \*.yml -o -iname \*.md \) | sed 's/.*/"&"/' | xargs wc -l
real_loc:
find src test -type f \( -iname \*.sv -o -iname \*.v -o -iname \*.py -o -iname \*.yaml -o -iname \*.md \) | sed 's/.*/"&"/' | xargs wc -l
# Python Operations
python_build:
python3 -m build
pypi_upload: build
python3 -m twine upload --repository testpypi dist/*
python_lint:
python3 -m black src/manta/__init__.py
python3 -m black src/manta/__main__.py
# API Generation Tests
auto_gen:
python3 test/auto_gen/run_tests.py
# Functional Simulation
sim: ethernet_tx_tb ethernet_rx_tb mac_tb block_memory_tb io_core_tb logic_analyzer_tb bridge_rx_tb bridge_tx_tb block_memory_tb
ethernet_tx_tb:
iverilog -g2012 -o sim.out -y src/manta/ether_iface test/functional_sim/ethernet_tx_tb.sv
vvp sim.out
rm sim.out
ethernet_rx_tb:
iverilog -g2012 -o sim.out -y src/manta/ether_iface test/functional_sim/ethernet_rx_tb.sv
vvp sim.out
rm sim.out
mac_tb:
iverilog -g2012 -o sim.out -y src/manta/ether_iface test/functional_sim/mac_tb.sv
vvp sim.out
rm sim.out
block_memory_tb:
iverilog -g2012 -o sim.out -y src/manta/block_mem_core test/functional_sim/block_memory_tb.sv
vvp sim.out
rm sim.out
io_core_tb:
iverilog -g2012 -o sim.out -y src/manta \
test/functional_sim/io_core_tb/io_core_tb.sv \
test/functional_sim/io_core_tb/io_core.v
vvp sim.out
rm sim.out
logic_analyzer_tb:
cd test/functional_sim/logic_analyzer_tb; \
manta gen manta.yaml manta.v; \
iverilog -g2012 -o sim.out logic_analyzer_tb.sv manta.v; \
vvp sim.out; \
rm sim.out
bridge_rx_tb:
iverilog -g2012 -o sim.out -y src/manta/uart_iface test/functional_sim/bridge_rx_tb.sv
vvp sim.out
rm sim.out
bridge_tx_tb:
iverilog -g2012 -o sim.out -y src/manta/uart_iface test/functional_sim/bridge_tx_tb.sv
vvp sim.out
rm sim.out
uart_rx_tb:
iverilog -g2012 -o sim.out -y src/manta/uart_iface test/functional_sim/uart_rx_tb.sv
vvp sim.out
rm sim.out
uart_tx_tb:
iverilog -g2012 -o sim.out -y src/manta/uart_iface test/functional_sim/uart_tx_tb.sv
vvp sim.out
rm sim.out
# Formal Verification
formal:
sby -f test/formal_verification/uart_rx.sby
sby -f test/formal_verification/bridge_rx.sby
# Build Examples
nexys_a7: nexys_a7_io_core_ether nexys_a7_io_core_uart nexys_a7_ps2_logic_analyzer nexys_a7_video_sprite_ether nexys_a7_video_sprite_uart
nexys_a7_io_core_ether:
cd examples/nexys_a7/io_core_ether/;\
manta gen manta.yaml src/manta.v; \
rm -rf obj; \
mkdir -p obj; \
wget -nc https://fpga.mit.edu/6205/_static/F22/labs/lab05/build.tcl; \
vivado -mode batch -source build.tcl
nexys_a7_io_core_uart:
cd examples/nexys_a7/io_core_uart/; \
manta gen manta.yaml src/manta.v; \
rm -rf obj; \
mkdir -p obj; \
wget -nc https://fpga.mit.edu/6205/_static/F22/labs/lab05/build.tcl; \
vivado -mode batch -source build.tcl
nexys_a7_ps2_logic_analyzer:
cd examples/nexys_a7/ps2_logic_analyzer/; \
manta gen manta.yaml src/manta.v; \
manta playback manta.yaml my_logic_analyzer sim/playback.v; \
rm -rf obj; \
mkdir -p obj; \
wget -nc https://fpga.mit.edu/6205/_static/F22/labs/lab05/build.tcl; \
vivado -mode batch -source build.tcl
nexys_a7_video_sprite_ether:
cd examples/nexys_a7/video_sprite_ether;\
manta gen manta.yaml src/manta.v; \
rm -rf obj; \
mkdir -p obj; \
wget -nc https://fpga.mit.edu/6205/_static/F22/labs/lab05/build.tcl; \
vivado -mode batch -source build.tcl
nexys_a7_video_sprite_uart:
cd examples/nexys_a7/video_sprite_uart; \
manta gen manta.yaml src/manta.v; \
rm -rf obj; \
mkdir -p obj; \
wget -nc https://fpga.mit.edu/6205/_static/F22/labs/lab05/build.tcl; \
vivado -mode batch -source build.tcl
icestick: icestick_io_core
icestick_io_core:
cd examples/icestick/io_core/; \
manta gen manta.yaml manta.v; \
./build.sh