|
| 1 | +set banner "========== New session ==========" |
| 2 | +puts $banner |
| 3 | + |
| 4 | +clear -all |
| 5 | + |
| 6 | +# Disable some info messages and warning messages |
| 7 | +# set_message -disable VERI-9033 ; # array automatically black-boxed |
| 8 | +# set_message -disable WNL008 ; # module is undefined. All instances will be black-boxed |
| 9 | +# set_message -disable VERI-1002 ; # Can't disable this error message (net does not have a driver) |
| 10 | +# set_message -disable VERI-1407 ; # attribute target identifier not found in this scope |
| 11 | +set_message -disable VERI-1018 ; # info |
| 12 | +set_message -disable VERI-1328 ; # info |
| 13 | +set_message -disable VERI-2571 ; # info |
| 14 | +# set_message -disable VERI-2571 ; # info: disabling old hierarchical reference handler |
| 15 | +set_message -disable INL011 ; # info: processing file |
| 16 | +# set_message -disable VERI-1482 ; # analyzing verilog file |
| 17 | +set_message -disable VERI-1141 ; # system task is not supported |
| 18 | +set_message -disable VERI-1060 ; # 'initial' construct is ignored |
| 19 | +set_message -disable VERI-1142 ; # system task is ignored for synthesis |
| 20 | +# set_message -disable ISW003 ; # top module name |
| 21 | +# set_message -disable HIER-8002 ; # disabling old hierarchical reference handler |
| 22 | +set_message -disable WNL046 ; # renaming embedded assertions due to name conflicts |
| 23 | +set_message -disable VERI-1995 ; # unique/priority if/case is not full |
| 24 | + # (we check these conditions with the elaborate |
| 25 | + # option -extract_case_assertions) |
| 26 | + |
| 27 | +set JASPER_FILES { |
| 28 | + one_trace.sv |
| 29 | +} |
| 30 | + |
| 31 | +set env(DESIGN_HOME) [pwd] |
| 32 | +set err_status [catch {analyze -sv12 +define+JASPER +define+SYNTHESIS +libext+.v+.sv+.vh+.svh+ -f design.lst {*}$JASPER_FILES} err_msg] |
| 33 | +if $err_status {error $err_msg} |
| 34 | + |
| 35 | +elaborate \ |
| 36 | + -top einter \ |
| 37 | + -extract_case_assertions \ |
| 38 | + -no_preconditions \ |
| 39 | + |
| 40 | +proc write_reset_seq {file} { |
| 41 | + puts $file "fvreset 1'b1" |
| 42 | + puts $file 1 |
| 43 | + puts $file "fvreset 1'b0" |
| 44 | + puts $file {$} |
| 45 | + close $file |
| 46 | +} |
| 47 | + |
| 48 | +proc reset_formal {} { |
| 49 | + write_reset_seq [open "reset.rseq" w] |
| 50 | + # reset -expression fvreset |
| 51 | + reset -sequence "reset.rseq" |
| 52 | +} |
| 53 | + |
| 54 | + |
| 55 | +clock clk |
| 56 | + |
| 57 | +# Constrain primary inputs to only change on @(posedge eph1) |
| 58 | +clock -rate -default clk |
| 59 | + |
| 60 | +reset_formal |
| 61 | + |
| 62 | +# Set default Jasper proof engines (overrides use_nb engine settings) |
| 63 | +#set_engine_mode {Ht Hp B K I N D AG AM Tri} |
| 64 | +set_engine_mode {Ht} |
| 65 | + |
| 66 | +set_max_trace_length 4 |
| 67 | + |
| 68 | +# Adds $prefix to each string in $list |
| 69 | +proc map_prefix {prefix list} { |
| 70 | + set out {} |
| 71 | + foreach s $list { |
| 72 | + lappend out "${prefix}${s}" |
| 73 | + } |
| 74 | + return $out |
| 75 | +} |
| 76 | + |
| 77 | +# The input signals of a module instance |
| 78 | +proc instance_inputs {inst} { |
| 79 | + map_prefix "${inst}." [get_design_info -instance $inst -list input -silent] |
| 80 | +} |
| 81 | + |
| 82 | +# The output signals of a module instance |
| 83 | +proc instance_outputs {inst} { |
| 84 | + map_prefix "${inst}." [get_design_info -instance $inst -list output -silent] |
| 85 | +} |
0 commit comments