blob: 05513f6bcb1c5ceaf9430953a143a7d6792e54ae [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
VERILATOR_BIN := $(shell which verilator)
VERILATOR_INC_DIR := $(abspath $(dir $(VERILATOR_BIN))/../share/verilator/include)
TOP_NAME = "Top"
VERILOG_DIR = $(abspath .)/verilog
SRC_DIR = $(abspath .)/src
ROOT_DIR = $(abspath ..)
TVM_DIR = $(abspath ../../../../..)
OUT_DIR = $(abspath .)/out
default: $(ROOT_DIR)/libverilator.so
$(ROOT_DIR)/libverilator.so: $(OUT_DIR)/$(TOP_NAME).cpp
g++ \
-std=c++14 \
-O2 \
-shared \
-fPIC \
-I$(TVM_DIR)/src/runtime/contrib/verilator \
-I$(TVM_DIR)/include \
-I$(TVM_DIR)/3rdparty/dlpack/include \
-I$(VERILATOR_INC_DIR) \
-I$(OUT_DIR) \
$(VERILATOR_INC_DIR)/verilated.cpp \
$(SRC_DIR)/*.cc \
$(OUT_DIR)/*.cpp \
-o $@
$(OUT_DIR)/$(TOP_NAME).cpp: $(VERILOG_DIR)/*.v
$(VERILATOR_BIN) \
-Wno-BLKANDNBLK \
-Wno-PINMISSING \
-Wno-STMTDLY \
-Wno-WIDTH \
-Wno-UNOPTFLAT \
--cc \
--prefix $(TOP_NAME) \
--top-module "driver" \
--Mdir $(OUT_DIR) \
$^
clean:
-rm -rf $(OUT_DIR)