From 6009b55f836037bc9336557ea6af30ce6af8435a Mon Sep 17 00:00:00 2001
From: James Talbert <jtalbert@iastate.edu>
Date: Mon, 1 Oct 2018 17:21:51 -0500
Subject: [PATCH] Integrate hw simulation into the unit tests

---
 ci/ci-build.sh                                          | 8 ++++++--
 ci/ci-test.sh                                           | 5 ++++-
 quad/ip_repo/Makefile                                   | 5 +++++
 quad/ip_repo/pwm_recorder_1.0/Makefile                  | 8 ++++++++
 quad/ip_repo/pwm_recorder_1.0/get_simulation_result.tcl | 1 +
 quad/ip_repo/pwm_recorder_1.0/hdl/kernel_tester.vhd     | 2 +-
 6 files changed, 25 insertions(+), 4 deletions(-)
 create mode 100644 quad/ip_repo/Makefile
 create mode 100644 quad/ip_repo/pwm_recorder_1.0/Makefile

diff --git a/ci/ci-build.sh b/ci/ci-build.sh
index 2a6b7efed..621e455b1 100644
--- a/ci/ci-build.sh
+++ b/ci/ci-build.sh
@@ -2,9 +2,13 @@
 
 set -e
 
+# Quad Hardware Tests
+source /remote/Xilinx/2018.2/Vivado/2018.2/settings64.sh
+(cd quad/ip_repo && make build-tests)
+
 # Quad Libraries and Boot image
-(cd quad && make deep-clean && make)
+#(cd quad && make deep-clean && make)
 
 # Ground station
-git submodule update --init --recursive
+#git submodule update --init --recursive
 #(cd groundStation && make vrpn && make) # QT is breaking things right now
diff --git a/ci/ci-test.sh b/ci/ci-test.sh
index 67e6ed1c6..0228e8aa6 100644
--- a/ci/ci-test.sh
+++ b/ci/ci-test.sh
@@ -2,5 +2,8 @@
 
 set -e
 
+# Quad HW
+(cd quad/ip_repo && make run-tests)
+
 # Quad
-(cd quad && make test)
+#(cd quad && make test)
diff --git a/quad/ip_repo/Makefile b/quad/ip_repo/Makefile
new file mode 100644
index 000000000..6d9004cd0
--- /dev/null
+++ b/quad/ip_repo/Makefile
@@ -0,0 +1,5 @@
+build-tests: 
+	(cd pwm_recorder_1.0/ && make build-tests)
+
+run-tests:
+	(cd pwm_recorder_1.0/ && make run-tests)
\ No newline at end of file
diff --git a/quad/ip_repo/pwm_recorder_1.0/Makefile b/quad/ip_repo/pwm_recorder_1.0/Makefile
new file mode 100644
index 000000000..c96c87d45
--- /dev/null
+++ b/quad/ip_repo/pwm_recorder_1.0/Makefile
@@ -0,0 +1,8 @@
+build-tests:
+	xelab --debug wave -prj kernel_test.prj -s run_kernel_test work.kernel_tester
+
+run-tests:
+	xsim run_kernel_test -wdb pwm_record_kernel_test.wdb --t get_simulation_result.tcl
+	echo 1 > result.exp
+	cmp result.log result.exp
+	rm result.exp
\ No newline at end of file
diff --git a/quad/ip_repo/pwm_recorder_1.0/get_simulation_result.tcl b/quad/ip_repo/pwm_recorder_1.0/get_simulation_result.tcl
index 6d73376cb..26a4eea8e 100644
--- a/quad/ip_repo/pwm_recorder_1.0/get_simulation_result.tcl
+++ b/quad/ip_repo/pwm_recorder_1.0/get_simulation_result.tcl
@@ -3,4 +3,5 @@ set signal [get_objects /*_tester/passing]
 set fd [open "result.log" "w"]
 run all
 puts $fd [get_value $signal]
+flush $fd
 quit
\ No newline at end of file
diff --git a/quad/ip_repo/pwm_recorder_1.0/hdl/kernel_tester.vhd b/quad/ip_repo/pwm_recorder_1.0/hdl/kernel_tester.vhd
index 7b65c6cc9..aa3b53a64 100644
--- a/quad/ip_repo/pwm_recorder_1.0/hdl/kernel_tester.vhd
+++ b/quad/ip_repo/pwm_recorder_1.0/hdl/kernel_tester.vhd
@@ -154,7 +154,7 @@ begin
         end if;
         
         done <='1';
-        
+                        
         if (passing = '0') then
             -- output test faulure?
         end if;
-- 
GitLab