#!/usr/bin/env python3 """gen_conn.py - generate SVA connectivity checks from conn_spec.csv usage: python3 gen_conn.py conn_spec.csv > pinmux_conn_fv.sv""" import csv, re, sys rows = [r for r in csv.reader(open(sys.argv[1])) if r and not r[0].lstrip().startswith('#')] out = ['// AUTO-GENERATED by gen_conn.py - do not edit by hand', 'module pinmux_conn_fv (', ' input logic [1:0] mode,', ' input logic gpio_out0, gpio_out1, uart_tx, spi_sclk, spi_mosi, test_obs0, test_obs1', ');', ' logic pad0, pad1;', ' pinmux dut (.*);', ' always_comb begin'] for n, (cond, src, dst) in enumerate(rows): cond, src, dst = cond.strip(), src.strip(), dst.strip() label = 'a_conn_%d_%s_%s' % (n, re.sub(r'\W', '', src), dst) out.append(' if (%s) %s: assert (%s == %s);' % (cond, label, dst, src)) out += [' end', 'endmodule'] print('\n'.join(out))