55# Authors:
66# - Philippe Sauter <phsauter@iis.ee.ethz.ch>
77
8- # Common setup used for all yosys scripts
8+ # Preparation for the synthesis flow
9+ # A common setup to provide some functionality and define variables
910
1011# list of global variables that may be used
12+ # define with scheme: <local-var> { <ENVVAR> <fallback> }
1113set variables {
12- vlog_files { VLOG_FILES " " }
13- sv_flist { SV_FLIST " " }
14- top_design { TOP_DESIGN " " }
15- hier_depth { HIER_DEPTH 0 }
16- period_ps { YOSYS_TARGET_PERIOD_PS 5000 }
17- proj_name { PROJ_NAME " " }
18- build_dir { BUILD " [ set dir [pwd ] ]/out" }
19- work_dir { WORK " [ set dir [pwd ] ]/WORK" }
20- report_dir { REPORTS " [ set dir [pwd ] ]/report" }
21- netlist { NETLIST " " }
14+ sv_flist { SV_FLIST " ../croc.flist" }
15+ top_design { TOP_DESIGN " croc_chip" }
16+ period_ps { PERIOD_PS 10000 }
17+ out_dir { OUT out }
18+ tmp_dir { TMP tmp }
19+ rep_dir { REPORTS reports }
2220}
2321
24- # either use env-var or default to fallback
25- foreach var [dict keys $variables ] {
26- set values [dict get $variables $var ]
27- set env_var [lindex $values 0]
28- set fallback [lindex $values 1]
29-
30- if {[info exists ::env($env_var )]} {
31- puts " using: $var = '$::env($env_var) '"
32- set $var $::env($env_var)
33- } else {
34- puts " using: '$var = $fallback '"
35- set $var $fallback
36- }
37- }
38-
39- if {[string eq $netlist " " ]} {
40- set netlist ${build_dir} /${top_design} _netlist.v
41- }
4222
23+ # check if an env-var exists and is non-empty
4324proc envVarValid {var_name} {
4425 if { [info exists ::env($var_name )]} {
4526 if {$::env($var_name) != " 0" && $::env($var_name) ne " " } {
@@ -49,14 +30,26 @@ proc envVarValid {var_name} {
4930 return 0
5031}
5132
33+ # If the ENVVAR is valid use it, otherwise use fallback
34+ foreach var [dict keys $variables ] {
35+ set values [dict get $variables $var ]
36+ set env_var [lindex $values 0]
37+ set fallback [lindex $values 1]
38+
39+ if {[envVarValid $env_var ]} {
40+ puts " using: $var = '$::env($env_var) '"
41+ set $var $::env($env_var)
42+ }
43+ }
44+
45+ # process ABC script and write to temporary directory
5246proc processAbcScript {abc_script} {
53- global work_dir period_ps
47+ global tmp_dir
5448 set src_dir [file join [file dirname [info script]] ../src]
55- set abc_out_path $work_dir /[file tail $abc_script ]
49+ set abc_out_path $tmp_dir /[file tail $abc_script ]
5650
5751 set raw [read -nonewline [open $abc_script r]]
58- set abc_script_delay [string map -nocase [list " {D}" [subst " -D $period_ps " ]] $raw ]
59- set abc_script_recaig [string map -nocase [list " {REC_AIG}" [subst " $src_dir /rec6Lib_final_filtered3_recanon_basilisk.aig" ]] $abc_script_delay ]
52+ set abc_script_recaig [string map -nocase [list " {REC_AIG}" [subst " $src_dir /lazy_man_synth_library.aig" ]] $raw ]
6053 set abc_out [open $abc_out_path w]
6154 puts -nonewline $abc_out $abc_script_recaig
6255
0 commit comments