diff --git a/system/makefile b/system/makefile
index 8b3fcecbd4ac0e75ba5d67905af88ca1b182c176..d709815dfc2c3518dc19e1f0e59415190c66a7dd 100644
--- a/system/makefile
+++ b/system/makefile
@@ -70,22 +70,14 @@ DMA_PRODUCT ?= DMA_230
 # Defaultly set to demo adp command file
 DEFAULT_ADP_FILE = $(TESTCODES_DIR)/adp_demo/adp.cmd
 ADP_FILE ?= $(DEFAULT_ADP_FILE)
-
-# Bootrom generation
-ifneq ($(BOOTROM_GEN),)
-MEM_INIT := +define+MEM_INIT
-# Use default adp file when generating bootrom
-ADP_FILE := $(DEFAULT_ADP_FILE)
-else
-MEM_INIT := 
-endif
+ADP_PATH := $(shell realpath $(ADP_FILE))
+ADP_OPTIONS := -define ADP_FILE=\"$(ADP_PATH)\"
 
 # Bootrom Parameters:
-BOOTROM_ADDRW ?= 8
-BOOTROM_HEX   ?= $(NANOSOC_TECH_DIR)/system/testcodes/bootloader/bootloader.hex
+BOOTROM_ADDRW     ?= 8
+BOOTROM_HEX       ?= $(NANOSOC_TECH_DIR)/system/testcodes/bootloader/bootloader.hex
+BOOTROM_BUILD_DIR ?= $(PROJ_SYS_DIR)/bootrom
 
-ADP_PATH := $(shell realpath $(ADP_FILE))
-ADP_OPTIONS := -define ADP_FILE=\"$(ADP_PATH)\"
 
 # Simulator Defines
 DEFINES_VC  += $(MEM_INIT) +define+CORTEX_M0 +define+USE_TARMAC 
@@ -101,7 +93,8 @@ SIMULATOR   = xm
 SIM_DIR ?= 
 
 ifeq ($(SIM_DIR),)
-SIM_DIR := .
+# Defaultly put simulation files in simulation directory with c code testname
+SIM_DIR = $(PROJECT_DIR)/simulate/sim/$(TESTNAME)
 endif
 
 # MTI option
@@ -302,7 +295,7 @@ bootrom:
 	cp $(BOOTLOADER).hex  $(SIM_DIR)/$(BOOTLOADER).hex ;\
 	mkdir -p $(PROJ_SYS_DIR)/bootrom/verilog/ ;\
 	mkdir -p $(PROJ_SYS_DIR)/bootrom/bintxt/ ;\
-	python3 bootrom_gen.py -a $(BOOTROM_ADDRW) -i $(BOOTLOADER).hex -v $(PROJ_SYS_DIR)/bootrom/verilog/bootrom.v -b $(PROJ_SYS_DIR)/bootrom/bintxt/bootrom.bintxt ;\
+	python3 bootrom_gen.py -a $(BOOTROM_ADDRW) -i $(BOOTLOADER).hex -v $(BOOTROM_BUILD_DIR)/verilog/bootrom.v -b $(BOOTROM_BUILD_DIR)/bintxt/bootrom.bintxt ;\
 	cd $(SIM_DIR) )
 
 # Compile test code