blob: 995226343c7c9529bb8d04928f572e150051a3f0 [file] [log] [blame]
#!/bin/bash
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
# Script to formally verify the masking of the OTBN using Alma.
echo "Verifying OTBN using Alma"
# Parse
python3 parse.py --keep --top-module otbn_top_coco --log-yosys \
--source ${REPO_TOP}/hw/ip/otbn/pre_sca/alma/rtl/ram_1p.v \
${REPO_TOP}/hw/ip/otbn/pre_syn/syn_out/latest/generated/otbn_core.alma.v \
${REPO_TOP}/hw/ip/otbn/pre_sca/alma/rtl/otbn_top_coco.v
# Assemble the program
program=isw_and
cd examples/otbn || exit
python3 assemble.py --program programs/${program}.S \
--netlist ../../tmp/circuit.v
cd ../../ || exit
# Trace
python3 trace.py --testbench tmp/verilator_tb.c \
--netlist tmp/circuit.v \
--c-compiler gcc \
--make-jobs 16
# Generate bignum register file labels
examples/otbn/labels/generate_bignum_rf_labels.py \
-i examples/otbn/labels/${program}_labels.txt \
-o tmp/labels_updated.txt -w 1 -s 0
# Verify
python3 verify.py --json tmp/circuit.json \
--top-module otbn_top_coco \
--label tmp/labels_updated.txt \
--vcd tmp/circuit.vcd \
--checking-mode per-location \
--rst-name rst_sys_n \
--rst-phase 0 \
--rst-cycles 2 \
--init-delay 139 \
--cycles 25 \
--excluded-signals u_otbn_core.u_otbn_controller.rf_bignum_intg_err_i[0] \
--glitch-behavior loose \
--dbg-signals otbn_cycle_cnt_o \
--mode stable