| # SPDX-FileCopyrightText: 2020 Efabless Corporation | 
 | # | 
 | # Licensed under the Apache License, Version 2.0 (the "License"); | 
 | # you may not use this file except in compliance with the License. | 
 | # You may obtain a copy of the License at | 
 | # | 
 | #      http://www.apache.org/licenses/LICENSE-2.0 | 
 | # | 
 | # Unless required by applicable law or agreed to in writing, software | 
 | # distributed under the License is distributed on an "AS IS" BASIS, | 
 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | # See the License for the specific language governing permissions and | 
 | # limitations under the License. | 
 | # | 
 | # SPDX-License-Identifier: Apache-2.0 | 
 |  | 
 |  | 
 | # ---- Include Partitioned Makefiles ---- | 
 |  | 
 | CONFIG = caravel_user_project | 
 |   | 
 | ####################################################################### | 
 | ## Caravel Verilog for Integration Tests | 
 | ####################################################################### | 
 |  | 
 | DESIGNS?=../../.. | 
 | TOOLS?=/opt/riscv32i/ | 
 |  | 
 | export USER_PROJECT_VERILOG ?=  $(DESIGNS)/verilog | 
 | ## YIFIVE FIRMWARE | 
 | YIFIVE_FIRMWARE_PATH = $(USER_PROJECT_VERILOG)/dv/firmware | 
 | GCC_PREFIX?=riscv32-unknown-elf | 
 |  | 
 |  | 
 | ## Simulation mode: RTL/GL | 
 | SIM?=RTL | 
 | DUMP?=OFF | 
 | RISC_CORE?=0 | 
 |  | 
 | ### To Enable IVERILOG FST DUMP | 
 | export IVERILOG_DUMPER = fst | 
 |  | 
 |  | 
 | .SUFFIXES: | 
 |  | 
 | PATTERN = user_timer | 
 |  | 
 | all:  ${PATTERN:=.vcd} | 
 |  | 
 |  | 
 | vvp:  ${PATTERN:=.vvp} | 
 |  | 
 | %.vvp: %_tb.v | 
 | ifeq ($(SIM),RTL) | 
 |    ifeq ($(DUMP),OFF) | 
 | 	iverilog -g2012 -DFUNCTIONAL -DSIM -I $(PDK_PATH) \ | 
 | 	-f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \ | 
 | 	-f$(USER_PROJECT_VERILOG)/includes/includes.rtl.lib  \ | 
 | 	$< -o $@  | 
 |     else   | 
 | 	iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DSIM -I $(PDK_PATH) \ | 
 | 	-f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \ | 
 | 	-f$(USER_PROJECT_VERILOG)/includes/includes.rtl.lib  \ | 
 | 	$< -o $@  | 
 |    endif | 
 | else   | 
 |    ifeq ($(DUMP),OFF) | 
 | 	iverilog -g2012 -DFUNCTIONAL -DUSE_POWER_PINS -DGL -I $(PDK_PATH) \ | 
 | 	-f$(USER_PROJECT_VERILOG)/includes/includes.gl.$(CONFIG) \ | 
 | 	-f$(USER_PROJECT_VERILOG)/includes/includes.gl.lib \ | 
 | 	$< -o $@  | 
 |     else   | 
 | 	iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DUSE_POWER_PINS -DGL -I $(PDK_PATH) \ | 
 | 	-f$(USER_PROJECT_VERILOG)/includes/includes.gl.$(CONFIG) \ | 
 | 	-f$(USER_PROJECT_VERILOG)/includes/includes.gl.lib \ | 
 | 	$< -o $@  | 
 |    endif | 
 | endif | 
 |  | 
 | %.vcd: %.vvp | 
 | 	vvp $< | 
 |  | 
 |  | 
 | # ---- Clean ---- | 
 |  | 
 | clean: | 
 | 	rm -f *.vvp *.vcd *.log *.fst | 
 |  | 
 | .PHONY: clean hex all |