From 171fda11694427db53ac842096baee776de8fe87 Mon Sep 17 00:00:00 2001 From: James Talbert <jtalbert@iastate.edu> Date: Mon, 1 Oct 2018 16:06:23 -0500 Subject: [PATCH] Setup vivado scripts for automated testing --- .../get_simulation_result.tcl | 6 +++ .../pwm_recorder_1.0/hdl/kernel_tester.vhd | 42 +++++++++++++++---- quad/ip_repo/pwm_recorder_1.0/kernel_test.prj | 2 + quad/ip_repo/pwm_recorder_1.0/kernel_test.sh | 4 ++ 4 files changed, 46 insertions(+), 8 deletions(-) create mode 100644 quad/ip_repo/pwm_recorder_1.0/get_simulation_result.tcl create mode 100644 quad/ip_repo/pwm_recorder_1.0/kernel_test.prj create mode 100755 quad/ip_repo/pwm_recorder_1.0/kernel_test.sh 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 new file mode 100644 index 000000000..6d73376cb --- /dev/null +++ b/quad/ip_repo/pwm_recorder_1.0/get_simulation_result.tcl @@ -0,0 +1,6 @@ +#!/bin/bash +set signal [get_objects /*_tester/passing] +set fd [open "result.log" "w"] +run all +puts $fd [get_value $signal] +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 a9f79d2e3..7b65c6cc9 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 @@ -53,6 +53,7 @@ architecture testbench of kernel_tester is signal count : std_logic_vector(31 downto 0); signal write : std_logic; signal done : std_logic := '0'; + signal passing : std_logic := '0'; begin UUT: pwm_rec @@ -67,6 +68,8 @@ begin variable period : integer; begin + passing <='1'; + reset_n <='0'; wait for 2*CLK_HPER; reset_n <='1'; @@ -78,7 +81,10 @@ begin wait for period*2*CLK_HPER; pwm <= '0'; wait until write='1'; - ASSERT count=std_logic_vector(to_unsigned(period, 32)) REPORT "Incorrect COUNT result" SEVERITY FAILURE; + if (count /= std_logic_vector(to_unsigned(period, 32))) then + REPORT "Incorrect COUNT result" SEVERITY FAILURE; + passing <='0'; + end if; period := 200; pwm <= '0'; @@ -87,8 +93,11 @@ begin wait for period*2*CLK_HPER; pwm <= '0'; wait until write='1'; - ASSERT count=std_logic_vector(to_unsigned(period, 32)) REPORT "Incorrect COUNT result" SEVERITY FAILURE; - + if (count /= std_logic_vector(to_unsigned(period, 32))) then + REPORT "Incorrect COUNT result" SEVERITY FAILURE; + passing <='0'; + end if; + period := 300; pwm <= '0'; wait for CLK_HPER*2*20; @@ -96,7 +105,10 @@ begin wait for period*2*CLK_HPER; pwm <= '0'; wait until write='1'; - ASSERT count=std_logic_vector(to_unsigned(period, 32)) REPORT "Incorrect COUNT result" SEVERITY FAILURE; + if (count /= std_logic_vector(to_unsigned(period, 32))) then + REPORT "Incorrect COUNT result" SEVERITY FAILURE; + passing <='0'; + end if; period := 400; pwm <= '0'; @@ -105,7 +117,10 @@ begin wait for period*2*CLK_HPER; pwm <= '0'; wait until write='1'; - ASSERT count=std_logic_vector(to_unsigned(period, 32)) REPORT "Incorrect COUNT result" SEVERITY FAILURE; + if (count /= std_logic_vector(to_unsigned(period, 32))) then + REPORT "Incorrect COUNT result" SEVERITY FAILURE; + passing <='0'; + end if; period := 10; pwm <= '0'; @@ -115,7 +130,10 @@ begin pwm <= '0'; for t in 0 to 100 loop wait for 2*CLK_HPER; - ASSERT write='0' REPORT "Glitch not Ignored" SEVERITY FAILURE; + if (write /= '0') then + REPORT "Glitch not Ignored" SEVERITY FAILURE; + passing <='0'; + end if; end loop; -- Run for 45, glitch for 10, then run for 45, expect a result of 100 @@ -130,12 +148,20 @@ begin wait for 45*2*CLK_HPER; pwm <= '0'; wait until write='1'; - ASSERT count=std_logic_vector(to_unsigned(period, 32)) REPORT "Incorrect COUNT result" SEVERITY FAILURE; + if (count /= std_logic_vector(to_unsigned(period, 32))) then + REPORT "Incorrect COUNT result" SEVERITY FAILURE; + passing <='0'; + end if; done <='1'; + + if (passing = '0') then + -- output test faulure? + end if; + wait; end process; - + clock_proc: process begin clk <= '0'; diff --git a/quad/ip_repo/pwm_recorder_1.0/kernel_test.prj b/quad/ip_repo/pwm_recorder_1.0/kernel_test.prj new file mode 100644 index 000000000..82dec23a2 --- /dev/null +++ b/quad/ip_repo/pwm_recorder_1.0/kernel_test.prj @@ -0,0 +1,2 @@ +vhdl work src/pwm_rec.vhd +vhdl work hdl/kernel_tester.vhd diff --git a/quad/ip_repo/pwm_recorder_1.0/kernel_test.sh b/quad/ip_repo/pwm_recorder_1.0/kernel_test.sh new file mode 100755 index 000000000..f5f495bb1 --- /dev/null +++ b/quad/ip_repo/pwm_recorder_1.0/kernel_test.sh @@ -0,0 +1,4 @@ +#!/bin/bash +xelab --debug wave -prj kernel_test.prj -s run_kernel_test work.kernel_tester +xsim run_kernel_test -wdb pwm_record_kernel_test.wdb --t get_simulation_result.tcl + -- GitLab