| 1 |
91 |
olivier.gi |
#!/bin/bash
|
| 2 |
2 |
olivier.gi |
|
| 3 |
65 |
olivier.gi |
# Disable waveform dumping
|
| 4 |
|
|
OMSP_NODUMP=1
|
| 5 |
|
|
export OMSP_NODUMP
|
| 6 |
|
|
|
| 7 |
200 |
olivier.gi |
# Choose GCC toolchain prefix ('msp430' for MSPGCC / 'msp430-elf' for GCC RedHat/TI)
|
| 8 |
|
|
# Note: default to MSPGCC until GCC RedHat/TI is mature enough
|
| 9 |
202 |
olivier.gi |
if command -v msp430-gcc >/dev/null; then
|
| 10 |
200 |
olivier.gi |
MSPGCC_PFX=msp430
|
| 11 |
|
|
else
|
| 12 |
|
|
MSPGCC_PFX=msp430-elf
|
| 13 |
|
|
fi
|
| 14 |
|
|
#MSPGCC_PFX=msp430
|
| 15 |
|
|
export MSPGCC_PFX
|
| 16 |
|
|
|
| 17 |
122 |
olivier.gi |
# Choose simulator:
|
| 18 |
|
|
# - iverilog : Icarus Verilog (default)
|
| 19 |
|
|
# - cver : CVer
|
| 20 |
|
|
# - verilog : Verilog-XL
|
| 21 |
|
|
# - ncverilog : NC-Verilog
|
| 22 |
|
|
# - vcs : VCS
|
| 23 |
|
|
# - vsim : Modelsim
|
| 24 |
|
|
# - isim : Xilinx simulator
|
| 25 |
|
|
OMSP_SIMULATOR=iverilog
|
| 26 |
|
|
export OMSP_SIMULATOR
|
| 27 |
2 |
olivier.gi |
|
| 28 |
122 |
olivier.gi |
|
| 29 |
202 |
olivier.gi |
# Argument specifies number of regression loops
|
| 30 |
|
|
if [ $# -ne 1 ]; then
|
| 31 |
|
|
LAST_REGRESSION=0
|
| 32 |
|
|
else
|
| 33 |
|
|
LAST_REGRESSION=$(($1-1))
|
| 34 |
|
|
fi
|
| 35 |
2 |
olivier.gi |
|
| 36 |
202 |
olivier.gi |
# Cleanup from previous regression
|
| 37 |
|
|
LOG_DIR=./log
|
| 38 |
|
|
rm -rf $LOG_DIR/*
|
| 39 |
2 |
olivier.gi |
|
| 40 |
202 |
olivier.gi |
# Perform the regression runs
|
| 41 |
|
|
for (( ii=0; ii<=$LAST_REGRESSION; ii++ ))
|
| 42 |
|
|
do
|
| 43 |
2 |
olivier.gi |
|
| 44 |
202 |
olivier.gi |
# Cleanup & log directory setup
|
| 45 |
|
|
rm -rf ./cov_work
|
| 46 |
|
|
LOG_DIR=./log/$ii
|
| 47 |
|
|
mkdir -p $LOG_DIR
|
| 48 |
134 |
olivier.gi |
|
| 49 |
202 |
olivier.gi |
# Two-Operand Arithmetic test patterns
|
| 50 |
|
|
../bin/msp430sim two-op_mov | tee $LOG_DIR/two-op_mov.log
|
| 51 |
|
|
../bin/msp430sim two-op_mov-b | tee $LOG_DIR/two-op_mov-b.log
|
| 52 |
|
|
../bin/msp430sim two-op_add | tee $LOG_DIR/two-op_add.log
|
| 53 |
2 |
olivier.gi |
|
| 54 |
202 |
olivier.gi |
../bin/msp430sim two-op_add-b | tee $LOG_DIR/two-op_add-b.log
|
| 55 |
|
|
../bin/msp430sim two-op_addc | tee $LOG_DIR/two-op_addc.log
|
| 56 |
|
|
../bin/msp430sim two-op_sub | tee $LOG_DIR/two-op_sub.log
|
| 57 |
|
|
../bin/msp430sim two-op_subc | tee $LOG_DIR/two-op_subc.log
|
| 58 |
|
|
../bin/msp430sim two-op_cmp | tee $LOG_DIR/two-op_cmp.log
|
| 59 |
|
|
../bin/msp430sim two-op_bit | tee $LOG_DIR/two-op_bit.log
|
| 60 |
|
|
../bin/msp430sim two-op_bic | tee $LOG_DIR/two-op_bic.log
|
| 61 |
|
|
../bin/msp430sim two-op_bis | tee $LOG_DIR/two-op_bis.log
|
| 62 |
|
|
../bin/msp430sim two-op_xor | tee $LOG_DIR/two-op_xor.log
|
| 63 |
|
|
../bin/msp430sim two-op_and | tee $LOG_DIR/two-op_and.log
|
| 64 |
|
|
../bin/msp430sim two-op_dadd | tee $LOG_DIR/two-op_dadd.log
|
| 65 |
|
|
../bin/msp430sim two-op_autoincr | tee $LOG_DIR/two-op_autoincr.log
|
| 66 |
|
|
../bin/msp430sim two-op_autoincr-b | tee $LOG_DIR/two-op_autoincr-b.log
|
| 67 |
2 |
olivier.gi |
|
| 68 |
202 |
olivier.gi |
# Conditional Jump test patterns
|
| 69 |
|
|
../bin/msp430sim c-jump_jeq | tee $LOG_DIR/c-jump_jeq.log
|
| 70 |
|
|
../bin/msp430sim c-jump_jne | tee $LOG_DIR/c-jump_jne.log
|
| 71 |
|
|
../bin/msp430sim c-jump_jc | tee $LOG_DIR/c-jump_jc.log
|
| 72 |
|
|
../bin/msp430sim c-jump_jnc | tee $LOG_DIR/c-jump_jnc.log
|
| 73 |
|
|
../bin/msp430sim c-jump_jn | tee $LOG_DIR/c-jump_jn.log
|
| 74 |
|
|
../bin/msp430sim c-jump_jge | tee $LOG_DIR/c-jump_jge.log
|
| 75 |
|
|
../bin/msp430sim c-jump_jl | tee $LOG_DIR/c-jump_jl.log
|
| 76 |
|
|
../bin/msp430sim c-jump_jmp | tee $LOG_DIR/c-jump_jmp.log
|
| 77 |
134 |
olivier.gi |
|
| 78 |
202 |
olivier.gi |
# Single-Operand Arithmetic test patterns
|
| 79 |
|
|
../bin/msp430sim sing-op_rrc | tee $LOG_DIR/sing-op_rrc.log
|
| 80 |
|
|
../bin/msp430sim sing-op_rra | tee $LOG_DIR/sing-op_rra.log
|
| 81 |
|
|
../bin/msp430sim sing-op_swpb | tee $LOG_DIR/sing-op_swpb.log
|
| 82 |
|
|
../bin/msp430sim sing-op_sxt | tee $LOG_DIR/sing-op_sxt.log
|
| 83 |
|
|
../bin/msp430sim sing-op_push | tee $LOG_DIR/sing-op_push.log
|
| 84 |
|
|
../bin/msp430sim sing-op_call | tee $LOG_DIR/sing-op_call.log
|
| 85 |
2 |
olivier.gi |
|
| 86 |
202 |
olivier.gi |
# Interrupts & NMI
|
| 87 |
|
|
../bin/msp430sim sing-op_reti | tee $LOG_DIR/sing-op_reti.log
|
| 88 |
|
|
../bin/msp430sim nmi | tee $LOG_DIR/nmi.log
|
| 89 |
|
|
../bin/msp430sim irq32 | tee $LOG_DIR/irq32.log
|
| 90 |
|
|
../bin/msp430sim irq64 | tee $LOG_DIR/irq64.log
|
| 91 |
2 |
olivier.gi |
|
| 92 |
202 |
olivier.gi |
# ROM Data Read access
|
| 93 |
|
|
../bin/msp430sim two-op_add_rom-rd | tee $LOG_DIR/two-op_add_rom-rd.log
|
| 94 |
|
|
../bin/msp430sim sing-op_push_rom-rd | tee $LOG_DIR/sing-op_push_rom-rd.log
|
| 95 |
|
|
../bin/msp430sim sing-op_call_rom-rd | tee $LOG_DIR/sing-op_call_rom-rd.log
|
| 96 |
154 |
olivier.gi |
|
| 97 |
202 |
olivier.gi |
# Power saving modes (CPUOFF, OSCOFF, SCG0, SCG1)
|
| 98 |
|
|
../bin/msp430sim op_modes | tee $LOG_DIR/op_modes.log
|
| 99 |
|
|
../bin/msp430sim op_modes_asic | tee $LOG_DIR/op_modes_asic.log
|
| 100 |
|
|
../bin/msp430sim lp_modes_asic | tee $LOG_DIR/lp_modes_asic.log
|
| 101 |
|
|
../bin/msp430sim lp_modes_dbg_asic | tee $LOG_DIR/lp_modes_dbg_asic.log
|
| 102 |
134 |
olivier.gi |
|
| 103 |
202 |
olivier.gi |
# CPU startup conditions
|
| 104 |
|
|
../bin/msp430sim cpu_startup_asic | tee $LOG_DIR/cpu_startup_asic.log
|
| 105 |
134 |
olivier.gi |
|
| 106 |
202 |
olivier.gi |
# Basic clock module
|
| 107 |
|
|
../bin/msp430sim clock_module | tee $LOG_DIR/clock_module.log
|
| 108 |
|
|
../bin/msp430sim clock_module_asic | tee $LOG_DIR/clock_module_asic.log
|
| 109 |
|
|
../bin/msp430sim clock_module_asic_mclk | tee $LOG_DIR/clock_module_asic_mclk.log
|
| 110 |
|
|
../bin/msp430sim clock_module_asic_smclk | tee $LOG_DIR/clock_module_asic_smclk.log
|
| 111 |
|
|
../bin/msp430sim clock_module_asic_lfxt | tee $LOG_DIR/clock_module_asic_lfxt.log
|
| 112 |
2 |
olivier.gi |
|
| 113 |
202 |
olivier.gi |
# Serial Debug Interface (UART)
|
| 114 |
|
|
../bin/msp430sim dbg_uart | tee $LOG_DIR/dbg_uart.log
|
| 115 |
|
|
../bin/msp430sim dbg_uart_sync | tee $LOG_DIR/dbg_uart_sync.log
|
| 116 |
|
|
../bin/msp430sim dbg_uart_cpu | tee $LOG_DIR/dbg_uart_cpu.log
|
| 117 |
|
|
../bin/msp430sim dbg_uart_mem | tee $LOG_DIR/dbg_uart_mem.log
|
| 118 |
|
|
../bin/msp430sim dbg_uart_hwbrk0 | tee $LOG_DIR/dbg_uart_hwbrk0.log
|
| 119 |
|
|
../bin/msp430sim dbg_uart_hwbrk1 | tee $LOG_DIR/dbg_uart_hwbrk1.log
|
| 120 |
|
|
../bin/msp430sim dbg_uart_hwbrk2 | tee $LOG_DIR/dbg_uart_hwbrk2.log
|
| 121 |
|
|
../bin/msp430sim dbg_uart_hwbrk3 | tee $LOG_DIR/dbg_uart_hwbrk3.log
|
| 122 |
|
|
../bin/msp430sim dbg_uart_rdwr | tee $LOG_DIR/dbg_uart_rdwr.log
|
| 123 |
|
|
../bin/msp430sim dbg_uart_halt_irq | tee $LOG_DIR/dbg_uart_halt_irq.log
|
| 124 |
|
|
../bin/msp430sim dbg_uart_onoff | tee $LOG_DIR/dbg_uart_onoff.log
|
| 125 |
|
|
../bin/msp430sim dbg_uart_onoff_asic | tee $LOG_DIR/dbg_uart_onoff_asic.log
|
| 126 |
2 |
olivier.gi |
|
| 127 |
202 |
olivier.gi |
# Serial Debug Interface (I2C)
|
| 128 |
|
|
../bin/msp430sim dbg_i2c | tee $LOG_DIR/dbg_i2c.log
|
| 129 |
|
|
../bin/msp430sim dbg_i2c_sync | tee $LOG_DIR/dbg_i2c_sync.log
|
| 130 |
|
|
../bin/msp430sim dbg_i2c_cpu | tee $LOG_DIR/dbg_i2c_cpu.log
|
| 131 |
|
|
../bin/msp430sim dbg_i2c_mem | tee $LOG_DIR/dbg_i2c_mem.log
|
| 132 |
|
|
../bin/msp430sim dbg_i2c_hwbrk0 | tee $LOG_DIR/dbg_i2c_hwbrk0.log
|
| 133 |
|
|
../bin/msp430sim dbg_i2c_hwbrk1 | tee $LOG_DIR/dbg_i2c_hwbrk1.log
|
| 134 |
|
|
../bin/msp430sim dbg_i2c_hwbrk2 | tee $LOG_DIR/dbg_i2c_hwbrk2.log
|
| 135 |
|
|
../bin/msp430sim dbg_i2c_hwbrk3 | tee $LOG_DIR/dbg_i2c_hwbrk3.log
|
| 136 |
|
|
../bin/msp430sim dbg_i2c_rdwr | tee $LOG_DIR/dbg_i2c_rdwr.log
|
| 137 |
|
|
../bin/msp430sim dbg_i2c_halt_irq | tee $LOG_DIR/dbg_i2c_halt_irq.log
|
| 138 |
|
|
../bin/msp430sim dbg_i2c_onoff | tee $LOG_DIR/dbg_i2c_onoff.log
|
| 139 |
|
|
../bin/msp430sim dbg_i2c_onoff_asic | tee $LOG_DIR/dbg_i2c_onoff_asic.log
|
| 140 |
2 |
olivier.gi |
|
| 141 |
202 |
olivier.gi |
# SFR test patterns
|
| 142 |
|
|
../bin/msp430sim sfr | tee $LOG_DIR/sfr.log
|
| 143 |
2 |
olivier.gi |
|
| 144 |
202 |
olivier.gi |
# SCAN test patterns (only to increase coverage)
|
| 145 |
|
|
../bin/msp430sim scan | tee $LOG_DIR/scan.log
|
| 146 |
154 |
olivier.gi |
|
| 147 |
202 |
olivier.gi |
# Watchdog test patterns
|
| 148 |
|
|
../bin/msp430sim wdt_interval | tee $LOG_DIR/wdt_interval.log
|
| 149 |
|
|
../bin/msp430sim wdt_watchdog | tee $LOG_DIR/wdt_watchdog.log
|
| 150 |
|
|
../bin/msp430sim wdt_clkmux | tee $LOG_DIR/wdt_clkmux.log
|
| 151 |
|
|
../bin/msp430sim wdt_wkup | tee $LOG_DIR/wdt_wkup.log
|
| 152 |
154 |
olivier.gi |
|
| 153 |
202 |
olivier.gi |
# GPIO test patterns
|
| 154 |
|
|
../bin/msp430sim gpio_rdwr | tee $LOG_DIR/gpio_rdwr.log
|
| 155 |
|
|
../bin/msp430sim gpio_irq | tee $LOG_DIR/gpio_irq.log
|
| 156 |
2 |
olivier.gi |
|
| 157 |
202 |
olivier.gi |
# Peripheral templates test patterns
|
| 158 |
|
|
../bin/msp430sim template_periph_8b | tee $LOG_DIR/template_periph_8b.log
|
| 159 |
|
|
../bin/msp430sim template_periph_16b | tee $LOG_DIR/template_periph_16b.log
|
| 160 |
67 |
olivier.gi |
|
| 161 |
202 |
olivier.gi |
# Timer A patterns
|
| 162 |
|
|
../bin/msp430sim tA_modes | tee $LOG_DIR/tA_modes.log
|
| 163 |
|
|
../bin/msp430sim tA_compare | tee $LOG_DIR/tA_compare.log
|
| 164 |
|
|
../bin/msp430sim tA_output | tee $LOG_DIR/tA_output.log
|
| 165 |
|
|
../bin/msp430sim tA_capture | tee $LOG_DIR/tA_capture.log
|
| 166 |
|
|
../bin/msp430sim tA_clkmux | tee $LOG_DIR/tA_clkmux.log
|
| 167 |
|
|
|
| 168 |
|
|
# DMA Interface
|
| 169 |
|
|
../bin/msp430sim dma_rdwr_16b | tee $LOG_DIR/dma_rdwr_16b.log
|
| 170 |
|
|
../bin/msp430sim dma_rdwr_8b | tee $LOG_DIR/dma_rdwr_8b.log
|
| 171 |
|
|
../bin/msp430sim dma_resp | tee $LOG_DIR/dma_resp.log
|
| 172 |
|
|
../bin/msp430sim dma_dbg_arbiter | tee $LOG_DIR/dma_dbg_arbiter.log
|
| 173 |
|
|
../bin/msp430sim dma_lpm0_asic | tee $LOG_DIR/dma_lpm0_asic.log
|
| 174 |
|
|
../bin/msp430sim dma_lpm1_asic | tee $LOG_DIR/dma_lpm1_asic.log
|
| 175 |
|
|
../bin/msp430sim dma_lpm2_asic | tee $LOG_DIR/dma_lpm2_asic.log
|
| 176 |
|
|
../bin/msp430sim dma_lpm3_asic | tee $LOG_DIR/dma_lpm3_asic.log
|
| 177 |
|
|
../bin/msp430sim dma_lpm4_asic | tee $LOG_DIR/dma_lpm4_asic.log
|
| 178 |
|
|
|
| 179 |
|
|
# Simple full duplex UART (8N1 protocol)
|
| 180 |
|
|
#../bin/msp430sim uart | tee $LOG_DIR/uart.log
|
| 181 |
|
|
|
| 182 |
|
|
# Hardware multiplier test patterns
|
| 183 |
|
|
../bin/msp430sim mpy_basic | tee $LOG_DIR/mpy_basic.log
|
| 184 |
|
|
|
| 185 |
|
|
|
| 186 |
|
|
# Report regression results
|
| 187 |
|
|
../bin/parse_results $LOG_DIR | tee $LOG_DIR/../summary.$ii.log
|
| 188 |
|
|
|
| 189 |
|
|
done
|
| 190 |
|
|
|
| 191 |
|
|
|
| 192 |
|
|
if [ $LAST_REGRESSION != 0 ]; then
|
| 193 |
|
|
../bin/parse_summaries | tee $LOG_DIR/../regressions_summary.log
|
| 194 |
|
|
fi
|