## 
## -------------------------------------------------------------
##    Copyright 2010-2011 Synopsys, Inc.
##    All Rights Reserved Worldwide
## 
##    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.
## -------------------------------------------------------------
## 

UVM_HOME	= ../../..

include ../../Makefile.vcs


all: comp run

comp:
	$(VCS) $(COPTS) +incdir+../apb+vip \
		tb_top.sv test.sv

run: test hw_reset_test

test:
	$(SIMV) $(ROPTS)
	$(CHECK)

hw_reset hw_reset_test:
	$(SIMV) $(ROPTS) +UVM_TESTNAME=hw_reset_test
	$(CHECK)
