59 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
		
		
			
		
	
	
			59 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
|  | #!/usr/bin/env bash
 | ||
|  | 
 | ||
|  | set -e | ||
|  | 
 | ||
|  | SRC_DIR=$(pwd)/src | ||
|  | BUILD_DIR=$(pwd)/.build | ||
|  | APIO_HOME_DIR=$(pwd)/.apio | ||
|  | BIN_DIR=$APIO_HOME_DIR/packages/tools-oss-cad-suite/bin | ||
|  | COMMAND=$1 | ||
|  | VERSION=$2 | ||
|  | 
 | ||
|  | MODULES="
 | ||
|  | 	$SRC_DIR/adder.v | ||
|  | 	$SRC_DIR/clock.v | ||
|  | 	$SRC_DIR/controller.v | ||
|  | 	$SRC_DIR/ir.v | ||
|  | 	$SRC_DIR/memory.v | ||
|  | 	$SRC_DIR/pc.v | ||
|  | 	$SRC_DIR/reg_a.v | ||
|  | 	$SRC_DIR/reg_b.v"
 | ||
|  | 
 | ||
|  | TOP=$SRC_DIR/top.v | ||
|  | TB=$SRC_DIR/top_tb.v | ||
|  | 
 | ||
|  | if [ -z "$COMMAND" ]; then | ||
|  | 	mkdir -p $BUILD_DIR | ||
|  | 	pushd $BUILD_DIR > /dev/null | ||
|  | 
 | ||
|  | 	$BIN_DIR/yosys -q -p "synth_ice40 -json hardware.json" $MODULES $TOP | ||
|  | 	$BIN_DIR/nextpnr-ice40 --lp8k --package cm81 --json hardware.json --asc hardware.asc --pcf $SRC_DIR/pins.pcf -q | ||
|  | 	$BIN_DIR/icepack hardware.asc hardware.bin | ||
|  | 
 | ||
|  | 	popd > /dev/null | ||
|  | elif [ "$COMMAND" == "init" ]; then | ||
|  | 	virtualenv .env | ||
|  | 	source .env/bin/activate | ||
|  | 	pip install apio tinyprog | ||
|  | 	export APIO_HOME_DIR=$APIO_HOME_DIR | ||
|  | 	apio install oss-cad-suite | ||
|  | elif [ "$COMMAND" == "clean" ]; then | ||
|  | 	rm -r $BUILD_DIR | ||
|  | elif [ "$COMMAND" == "program" ]; then | ||
|  | 	source .env/bin/activate | ||
|  | 	sudo tinyprog -p $BUILD_DIR/hardware.bin | ||
|  | elif [ "$COMMAND" == "sim" ]; then | ||
|  | 	mkdir -p $BUILD_DIR | ||
|  | 
 | ||
|  | 	pushd $SRC_DIR > /dev/null | ||
|  | 	$BIN_DIR/iverilog -o $BUILD_DIR/top_tb $MODULES $TB | ||
|  | 	$BIN_DIR/vvp $BUILD_DIR/top_tb | ||
|  | 	mv top_tb.vcd $BUILD_DIR/ | ||
|  | 	popd  > /dev/null | ||
|  | 
 | ||
|  | 	gtkwave $BUILD_DIR/top_tb.vcd $BUILD_DIR/top_tb.gtkw | ||
|  | else | ||
|  | 	echo "Invalid arguments" | ||
|  | fi | ||
|  | 
 |