20 if {[
catch {
package require cmdline} ERROR]} {
21 puts "$ERROR\n If you are running this script on tclsh, you can fix this by installing 'tcllib'"
25 set hog_path [
file normalize "[
file dirname [
info script]]/.."]
26 set repo_path [
file normalize "$hog_path/../.."]
27 source $hog_path/hog.tcl
30 set tcl_path [
file normalize "[
file dirname [
info script]]"]
31 source $tcl_path/cmdline.tcl
34 {project.arg "" "Project name. If not set gets current project"}
35 {outDir.arg "" "Name of output dir containing log files."}
36 {log.arg "1" "Logs errors/warnings to outFile."}
37 {recreate "If set, it will create List Files from the project configuration"}
38 {recreate_conf "If set, it will create the project hog.conf file."}
39 {recreate_sim "If set, it will create the simulation list files."}
40 {force "Force the overwriting of List Files. To be used together with \"-recreate\""}
41 {pedantic "Script fails in case of mismatch"}
42 {ext_path.arg "" "Sets the absolute path for the external libraries."}
47 set usage "Checks if the list and conf files matches the project ones. It can also be used to update the list and conf files. \nUSAGE: $::argv0 \[Options\]"
55 set ext_path $options(ext_path)
65 set SIM_PROPS [list "dofile" \
71 if {![
string equal $options(project) ""]} {
72 set project $options(project)
73 set group_name [
file dirname $project]
74 set project_name [
file tail $project]
75 Msg Info "Opening project $project_name..."
78 file mkdir "$repo_path/Projects/$project/$project_name.gen/sources_1"
79 open_project "$repo_path/Projects/$project/$project_name.xpr"
80 set proj_file [get_property DIRECTORY [current_project]]
81 set proj_dir [
file normalize $proj_file]
84 set proj_file $repo_path/Projects/$project/$project_name.prjx
86 set proj_file $repo_path/Projects/$project/$project_name.ldf
90 set project_name [get_projects [current_project]]
91 set proj_file [get_property DIRECTORY [current_project]]
92 set proj_dir [
file normalize $proj_file]
94 set proj_dir [
file normalize [
file dirname "[project_data -dir]/../.."]]
95 set proj_name [
file tail $proj_dir]
96 set proj_file $proj_dir/$proj_name.prjx
99 set proj_name [
file tail $proj_dir]
100 set proj_file $proj_dir/$proj_name.ldf
107 if {$options(outDir)!= ""} {
109 set outFile $options(outDir)/diff_list_and_conf.txt
110 set outSimFile $options(outDir)/diff_sim_list_and_conf.txt
111 if {[
file exists $outFile]} {
115 if {[
file exists $outSimFile]} {
116 file delete $outSimFile
119 if {!$options(log)} {
130 if {[
file exists $repo_path/Top/$group_name/$project_name] && [
file isdirectory $repo_path/Top/$group_name/$project_name] && $options(force) == 0} {
131 set DirName Top_new/$group_name/$project_name
133 set DirName Top/$group_name/$project_name
136 if { $options(recreate_sim) == 1 && [
IsVivado] } {
137 Msg Info "Checking $project_name simulation list files..."
139 lassign [
GetHogFiles -ext_path "$ext_path" -list_files ".sim" "$repo_path/Top/$group_name/$project_name/list/" $repo_path] listSimLibraries listSimProperties listSimSets
141 lassign [
GetProjectFiles $proj_file] prjLibraries prjProperties prjSimLibraries prjConstraints prjSrcSets prjSimSets prjConSets
142 Msg Info "Retrieved project files..."
144 set extrasimFiles [
ReadExtraFileList "$repo_path/Projects/$group_name/$project_name/.hog/extrasim.files"]
151 Msg Debug "Project Sim Libraries"
152 Msg Debug $prjSimLibraries
153 Msg Debug "Sim List Libraries"
154 Msg Debug $listSimLibraries
155 Msg Debug "Project SimSets"
156 Msg Debug $prjSimSets
157 Msg Debug "List SimSets"
158 Msg Debug $listSimSets
159 Msg Debug "Sim List File Properties"
160 Msg Debug $listSimProperties
162 lassign [
CompareLibDicts $prjSimLibraries $listSimLibraries $prjSimSets $listSimSets $prjProperties $listSimProperties "Warning" $outSimFile $extrasimFiles] SimListErrorCnt extrasimFiles prjSimLibraries prjProperties
164 foreach {k v} $extrasimFiles {
165 MsgAndLog "Simulation file $k was found in .hog/extrasim.files but not in project." "Warning" $outFile
170 if { $options(recreate_conf) == 0 || $options(recreate) == 1 } {
171 Msg Info "Checking $project_name list files..."
174 lassign [
GetHogFiles -ext_path "$ext_path" -list_files ".src,.ext" "$repo_path/Top/$group_name/$project_name/list/" $repo_path] listLibraries listProperties listSrcSets
176 lassign [
GetHogFiles -ext_path "$ext_path" -list_files ".con" "$repo_path/Top/$group_name/$project_name/list/" $repo_path] listConstraints listConProperties listConSets
179 set extraFiles [
ReadExtraFileList "$repo_path/Projects/$group_name/$project_name/.hog/extra.files"]
180 set extraConstraints [
ReadExtraFileList "$repo_path/Projects/$group_name/$project_name/.hog/extracon.files"]
183 lassign [
GetProjectFiles $proj_file] prjLibraries prjProperties prjSimLibraries prjConstraints prjSrcSets prjSimSets prjConSets
184 Msg Info "Retrieved project files..."
197 Msg Debug "Project Libraries"
198 Msg Debug $prjLibraries
199 Msg Debug "Source List Libraries"
200 Msg Debug $listLibraries
201 Msg Debug "Project Filesets"
202 Msg Debug $prjSrcSets
203 Msg Debug "List Filesets"
204 Msg Debug $listSrcSets
205 Msg Debug "Project File Properties"
206 Msg Debug $prjProperties
207 Msg Debug "List File Properties"
208 Msg Debug $listProperties
209 Msg Debug "Project Constraints"
210 Msg Debug $prjConstraints
211 Msg Debug "List Constraints"
212 Msg Debug $listConstraints
213 Msg Debug "Project ConSets"
214 Msg Debug $prjConSets
215 Msg Debug "List ConSets"
216 Msg Debug $listConSets
217 Msg Debug "List Constraint Properties"
218 Msg Debug $listConProperties
220 lassign [
CompareLibDicts $prjLibraries $listLibraries $prjSrcSets $listSrcSets $prjProperties $listProperties "CriticalWarning" $outFile $extraFiles] SrcListErrorCnt extraFiles prjLibraries prjProperties
221 lassign [
CompareLibDicts $prjConstraints $listConstraints $prjConSets $listConSets $prjProperties $listConProperties "CriticalWarning" $outFile $extraConstraints] ConListErrorCnt extraConstraints prjConstraints prjProperties
224 foreach {k v} $extraFiles {
225 MsgAndLog "$k was found in .hog/extra.files but not in project." "CriticalWarning" $outFile
229 foreach {k v} $extraConstraints {
230 MsgAndLog "Constraint file $k was found in .hog/extracon.files but not in project." "CriticalWarning" $outFile
234 if {$SrcListErrorCnt == 0} {
235 Msg Info "Design List Files matches project. Nothing to do."
238 if {$ConListErrorCnt == 0} {
239 Msg Info "Constraint List Files matches project. Nothing to do."
243 if {$options(recreate) == 1 && ($SrcListErrorCnt > 0 || $ConListErrorCnt > 0) } {
244 set listpath "$repo_path/$DirName/list/"
245 Msg Info "Updating list files in $listpath"
248 if {$SrcListErrorCnt > 0} {
250 if {$options(force) == 1} {
251 foreach F [glob -nocomplain "$listpath/*.src" "$listpath/*.ext"] {
255 WriteListFiles $prjLibraries $prjProperties $listpath $repo_path $ext_path
258 if {$ConListErrorCnt > 0} {
260 if {$options(force) == 1} {
261 foreach F [glob -nocomplain "$listpath/*.con"] {
265 WriteListFiles $prjConstraints $prjProperties $listpath $repo_path
271 set conf_file "$repo_path/Top/$group_name/$project_name/hog.conf"
273 if { $options(recreate) == 0 || $options(recreate_conf) == 1 } {
283 set prjSrcDict [
DictGet $prjLibraries SRC]
286 set hogConfDict [dict create]
287 set defaultConfDict [dict create]
288 set projConfDict [dict create]
289 set newConfDict [dict create]
292 if {[
file exists $conf_file]} {
293 set hogConfDict [
ReadConf $conf_file]
296 foreach key [list main synth_1 impl_1 generics] {
297 set runDict [
DictGet $hogConfDict $key]
298 foreach runDictKey [dict keys $runDict] {
300 if {[
string first $repo_path [
DictGet $runDict $runDictKey]]!= -1} {
303 dict set runDict [
string toupper $runDictKey] [
DictGet $runDict $runDictKey]
304 dict unset runDict [
string tolower $runDictKey]
306 dict set hogConfDict $key $runDict
308 }
elseif {$options(recreate_conf)==0} {
309 Msg Warning "$repo_path/Top/$group_name/$project_name/hog.conf not found. Skipping properties check"
314 foreach key [dict keys $hogConfDict] {
315 if {$key != "main" && $key != "synth_1" && $key != "impl_1" && $key != "generics"} {
316 dict set newConfDict $key [
DictGet $hogConfDict $key]
321 set PROP_BAN_LIST [ list DEFAULT_LIB \
323 AUTO_INCREMENTAL_CHECKPOINT.DIRECTORY \
324 AUTO_INCREMENTAL_CHECKPOINT \
325 COMPXLIB.MODELSIM_COMPILED_LIBRARY_DIR \
326 COMPXLIB.QUESTA_COMPILED_LIBRARY_DIR \
327 COMPXLIB.RIVIERA_COMPILED_LIBRARY_DIR \
328 COMPXLIB.ACTIVEHDL_COMPILED_LIBRARY_DIR \
329 COMPXLIB.IES_COMPILED_LIBRARY_DIR \
330 COMPXLIB.VCS_COMPILED_LIBRARY_DIR \
331 ENABLE_RESOURCE_ESTIMATION \
332 INCREMENTAL_CHECKPOINT \
333 IP_CACHE_PERMISSIONS \
338 SIM.IP.AUTO_EXPORT_SCRIPTS \
339 SIM.IPSTATIC.SOURCE_DIR \
340 STEPS.WRITE_DEVICE_IMAGE.ARGS.READBACK_FILE \
341 STEPS.WRITE_DEVICE_IMAGE.ARGS.VERBOSE \
342 STEPS.WRITE_BITSTREAM.ARGS.READBACK_FILE \
343 STEPS.WRITE_BITSTREAM.ARGS.VERBOSE \
344 STEPS.SYNTH_DESIGN.TCL.PRE \
345 STEPS.SYNTH_DESIGN.TCL.POST \
346 STEPS.WRITE_BITSTREAM.TCL.PRE \
347 STEPS.WRITE_BITSTREAM.TCL.POST \
348 STEPS.WRITE_DEVICE_IMAGE.TCL.PRE \
349 STEPS.WRITE_DEVICE_IMAGE.TCL.POST \
350 STEPS.INIT_DESIGN.TCL.POST \
351 STEPS.ROUTE_DESIGN.TCL.POST \
355 set SIM_BAN_LIST [ list HBS.CONFIGURE_DESIGN_FOR_HIER_ACCESS \
360 set HOG_GENERICS [ list GLOBAL_DATE \
366 foreach proj_run [list [current_project] [get_runs synth_1] [get_runs impl_1] [current_fileset]] {
368 set projRunDict [dict create]
369 set defaultRunDict [dict create]
372 foreach propReport [
split "[report_property -return_string -all $proj_run]" "\n"] {
373 if {[
string equal "[
lindex $propReport 2]" "false"]} {
374 lappend run_props [
lindex $propReport 0]
378 if {$proj_run == [current_project]} {
379 lappend run_props "BOARD_PART_REPO_PATHS"
382 foreach prop $run_props {
384 if {$prop in $PROP_BAN_LIST} {
387 }
elseif { "$proj_run" == "[current_fileset]" } {
389 if {$prop == "GENERIC"} {
390 foreach generic [get_property $prop [current_fileset]] {
391 set generic_prop_value [
split $generic {=}]
392 if {[
llength $generic_prop_value] == 2} {
393 if {[
string toupper [
lindex $generic_prop_value 0]] in $HOG_GENERICS } {
396 dict set projRunDict [
string toupper [
lindex $generic_prop_value 0]] [
lindex $generic_prop_value 1]
397 dict set defaultRunDict [
string toupper $prop] ""
404 if {[
string first $repo_path [get_property $prop $proj_run]] != -1} {
406 foreach p [get_property $prop $proj_run] {
407 set prop_val "$prop_val[
Relative $repo_path $p] "
409 dict set projRunDict [
string toupper $prop] [
string trim $prop_val]
410 }
elseif {[
string first $ext_path [get_property $prop $proj_run]] != -1} {
412 foreach p [get_property $prop $proj_run] {
413 set prop_val "$prop_val[
Relative $ext_path $p] "
415 dict set projRunDict [
string toupper $prop] [
string trim $prop_val]
417 dict set projRunDict [
string toupper $prop] [get_property $prop $proj_run]
421 dict set defaultRunDict [
string toupper $prop] [list_property_value -default $prop $proj_run]
424 if {"$proj_run" == "[current_project]"} {
425 dict set projRunDict "PART" [get_property PART $proj_run]
426 dict set projConfDict main $projRunDict
427 dict set defaultConfDict main $defaultRunDict
428 }
elseif {"$proj_run" == "[current_fileset]"} {
429 dict set projConfDict generics $projRunDict
430 dict set defaultConfDict generics $defaultRunDict
432 dict set projConfDict $proj_run $projRunDict
433 dict set defaultConfDict $proj_run $defaultRunDict
438 set defMainDict [dict create TARGET_LANGUAGE VHDL SIMULATOR_LANGUAGE MIXED]
439 dict set defMainDict IP_OUTPUT_REPO "[
Relative $repo_path $proj_dir]/${project_name}.cache/ip"
440 dict set defaultConfDict main [dict merge [
DictGet $defaultConfDict main] $defMainDict]
445 foreach proj_run [list main synth_1 impl_1 generics] {
446 set projRunDict [
DictGet $projConfDict $proj_run]
447 set hogConfRunDict [
DictGet $hogConfDict $proj_run]
448 set defaultRunDict [
DictGet $defaultConfDict $proj_run]
449 set newRunDict [dict create]
451 set strategy_str "STRATEGY strategy Strategy"
452 foreach s $strategy_str {
453 if {[dict exists $hogConfRunDict $s]} {
458 if {$hasStrategy == 1 && $options(recreate_conf) == 0} {
459 Msg Warning "A strategy for run $proj_run has been defined inside hog.conf. This prevents Hog to compare the project properties. Please regenerate your hog.conf file using the dedicated Hog button."
462 foreach settings [dict keys $projRunDict] {
463 set currset [
DictGet $projRunDict $settings]
464 set hogset [
DictGet $hogConfRunDict $settings]
465 set defset [
DictGet $defaultRunDict $settings]
468 regsub -all {\"} $currset "" currset
470 if {[
string toupper $currset] != [
string toupper $hogset] && ([
string toupper $currset] != [
string toupper $defset] || $hogset != "")} {
471 if {[
string first "DEFAULT" [
string toupper $currset]] != -1 && $hogset == ""} {
474 if {[
string tolower $hogset] == "true" && $currset == 1} {
477 if {[
string tolower $hogset] == "false" && $currset == 0} {
480 if {[regexp {\_VER$} [
string toupper $settings]] || [regexp {\_SHA$} [
string toupper $settings]] } {
484 if {[
string toupper $settings] != "STRATEGY"} {
485 dict set newRunDict $settings $currset
486 if {$options(recreate_conf) == 1} {
488 Msg Info "$proj_run setting $settings has been changed from \"$hogset\" in hog.conf to \"$currset\" in project."
489 }
elseif {[
file exists $repo_path/Top/$group_name/$project_name/hog.conf] && $hasStrategy == 0} {
490 MsgAndLog "Project $proj_run setting $settings value \"$currset\" does not match hog.conf \"$hogset\"." "CriticalWarning" $outFile
494 }
elseif {[
string toupper $currset] == [
string toupper $hogset] && [
string toupper $hogset] != "" && [
string toupper $settings] != "STRATEGY"} {
495 dict set newRunDict $settings $currset
498 dict set newConfDict $proj_run $newRunDict
501 foreach settings [dict keys $hogConfRunDict] {
502 if {[dict exists $projRunDict [
string toupper $settings]]==0} {
503 if {$settings in $PROP_BAN_LIST} {
504 Msg Warning "In hog.conf section $proj_run the following property is defined: \"$settings\". This property is ignored and will not be rewritten when automatically recreating hog.conf (i.e. pressing Hog button)."
508 if {$options(recreate_conf) == 0} {
509 MsgAndLog "hog.conf property $settings is not a valid Vivado property." "CriticalWarning" $outFile
511 Msg Info "found property $settings in old hog.conf. This is not a valid Vivado property and will be deleted."
519 if {[
file exists $conf_file]} {
521 if {$actual_version != $conf_version} {
522 MsgAndLog "The version specified in the first line of hog.conf is wrong or no version was specified. If you want to run this project with $ide $actual_version, the first line of hog.conf should be: \#$ide $actual_version" "CriticalWarning" $outFile
528 if {$ConfErrorCnt == 0 && [
file exists $conf_file] == 1} {
529 Msg Info "$conf_file matches project. Nothing to do"
533 if { $options(recreate_conf) == 1 && ($ConfErrorCnt > 0 || [
file exists $conf_file] == 0 || $hasStrategy == 1)} {
534 Msg Info "Updating configuration file $repo_path/$DirName/hog.conf."
536 set confFile $repo_path/$DirName/hog.conf
538 WriteConf $confFile $newConfDict "vivado $version"
543 set sim_conf "$repo_path/Top/$group_name/$project_name/sim.conf"
545 if { $options(recreate) == 0 || $options(recreate_sim) == 1 } {
551 set simConfDict [dict create]
552 set defaultConfDict [dict create]
553 set projConfDict [dict create]
554 set newSimConfDict [dict create]
557 set dict_list_simsets [
GetSimSets $group_name/$project_name $repo_path]
558 set dict_proj_simsets [dict create]
560 foreach simset [get_filesets] {
561 if {[get_property FILESET_TYPE $simset] != "SimulationSrcs" } {
565 set projSimDict [dict create]
566 set defaultSimDict [dict create]
570 foreach propReport [
split "[report_property -return_string -all [get_filesets $simset]]" "\n"] {
572 if {[
string equal "[
lindex $propReport 2]" "false"]} {
573 lappend sim_props [
lindex $propReport 0]
577 foreach prop $sim_props {
578 if {$prop in $SIM_BAN_LIST} {
584 if {[
string first $repo_path [get_property $prop $simset]] != -1} {
585 dict set projSimDict [
string toupper $prop] [
Relative $repo_path [get_property $prop $simset]]
586 }
elseif {[
string first $ext_path [get_property $prop $simset]] != -1} {
587 dict set projSimDict [
string toupper $prop] [
Relative $ext_path [get_property $prop $simset]]
589 dict set projSimDict [
string toupper $prop] [get_property $prop $simset]
593 dict set defaultSimDict [
string toupper $prop] [list_property_value -default $prop $simset]
594 dict set projConfDict $simset $projSimDict
595 dict set defaultConfDict $simset $defaultSimDict
598 set hog_simset [
DictGet $dict_list_simsets $simset]
599 set list_props [
DictGet $hog_simset "properties"]
600 set list_generics [
DictGet $hog_simset "generics"]
601 set list_hog_section [
DictGet $hog_simset "hog"]
602 set list_simulator [
DictGet $hog_simset "simulator"]
604 set newSimDict [dict create]
605 set newGenericsDict [dict create]
606 set projSimDict [
DictGet $projConfDict $simset]
607 set defaultRunDict [
DictGet $defaultConfDict $simset]
609 foreach setting [dict keys $projSimDict] {
610 set currset [
DictGet $projSimDict $setting]
611 set hogset [
DictGet $list_props $setting]
612 set defset [
DictGet $defaultRunDict $setting]
614 if {[
string toupper $setting] == "GENERIC"} {
616 foreach gen_set $currset {
617 set generic_and_value [
split $gen_set =]
618 set generic [
string toupper [
lindex $generic_and_value 0]]
619 set gen_value [
lindex $generic_and_value 1]
620 set generichogset [
DictGet $list_generics $generic]
623 regsub -all {\"} $gen_value "" gen_value
624 dict set newGenericsDict $generic $gen_value
625 if { $gen_value != $generichogset} {
626 if {$options(recreate_sim) == 1} {
628 Msg Info "$simset generics setting $generic has been changed from \"$generichogset\" in sim.conf to \"$gen_value\" in project."
629 }
elseif {[
file exists $sim_conf]} {
630 MsgAndLog "Simset $simset setting $generic value \"$gen_value\" does not match sim.conf \"$generichogset\"." "Warning" $outSimFile
638 if {[
string toupper $currset] != [
string toupper $hogset] && [
string toupper $currset] != [
string toupper $defset]} {
639 if {[
string first "DEFAULT" [
string toupper $currset]] != -1 && $hogset == ""} {
642 if {[
string tolower $hogset] == "true" && $currset == 1} {
645 if {[
string tolower $hogset] == "false" && $currset == 0} {
649 if {[regexp {^[^\.]*\.[^\.]*$} $setting]} {
653 dict set newSimDict $setting $currset
654 if {$options(recreate_sim) == 1} {
656 Msg Info "Simulation property $setting of simset $simset has been changed from \"$hogset\" in sim.conf/$simset.sim to \"$currset\" in project."
658 MsgAndLog "Simulation property $setting value \"$currset\" does not match configuration in sim.conf/$simset.sim \"$hogset\"." "Warning" $outSimFile
661 }
elseif {[
string toupper $currset] == [
string toupper $hogset] && [
string toupper $hogset] != ""} {
662 dict set newSimDict $setting $currset
665 if {$simset == [current_fileset -simset]} {
666 dict set newSimDict "ACTIVE" "1"
669 dict set newSimConfDict "properties" $newSimDict
670 dict set newSimConfDict "generics" $newGenericsDict
671 dict set newSimConfDict "hog" $list_hog_section
674 foreach setting [dict keys $list_props] {
675 set hogset [
DictGet $list_props $setting]
676 if {$setting == "ACTIVE"} {
677 if {$hogset == "1" && $simset != [current_fileset -simset]} {
679 if {$options(recreate_sim) == 0} {
680 MsgAndLog "Simulation set $simset is set as active, but the actual active one in the project is [current_fileset -simset]" "Warning" $outSimFile
682 Msg Info "Simulation set $simset was set as active in old sim.conf. I will set [current_fileset -simset] as active in the file instead."
691 if {[
string toupper $simulator] != [
string toupper [get_property target_simulator [current_project]]]} {
692 if {[
string first [
string toupper $simulator] [
string toupper $setting]] == 0} {
699 if {$other_sim_prop == 1} {
703 if {[dict exists $projSimDict [
string toupper $setting]]==0 && [dict exists $projSimDict $setting]==0} {
705 if {$options(recreate_sim) == 0} {
706 MsgAndLog "Property $setting is not a valid Vivado property. Please check your sim.conf or $simset.sim file" "Warning" $outSimFile
708 Msg Info "Found property $setting in your sim.conf or $simset.sim file. This is not a valid Vivado property and will be deleted."
712 if {$simset_error == 0} {
713 Msg Info "Simulation properties for $simset are up-to-date. Nothing to do"
715 Msg Warning "Simulation properties for simset $simset have been changed."
719 if {$options(recreate_sim) == 1 && ($simset_error > 0 || $SimListErrorCnt > 0 || [
file exists $sim_conf])} {
720 Msg Info "Updating configuration in $simset.sim"
722 if {[
file exists $sim_conf]} {
723 Msg Info "Removing old sim.conf file $sim_conf, properties will be written in $simset.sim file instead."
724 file delete $sim_conf
726 set listpath "$repo_path/$DirName/list/"
729 set confFile $repo_path/$DirName/list/$simset.sim
731 WriteConf $confFile $newSimConfDict "Simulator $list_simulator"
732 Msg Info "Adding \[files\] section to $simset.sim list file"
733 WriteSimListFile $simset $prjSimLibraries $prjProperties $prjSimSets $listpath $repo_path $options(force)
735 set SimConfErrorCnt [
expr {$SimConfErrorCnt + $simset_error}]
742 if {![
string equal $options(project) ""]} {
749 set TotErrorCnt [
expr {$ConfErrorCnt + $SrcListErrorCnt + $ConListErrorCnt}]
751 if {$options(recreate_conf) == 0 && $options(recreate) == 0} {
752 if {$options(pedantic) == 1 && $TotErrorCnt > 0} {
753 Msg Error "Number of errors: $TotErrorCnt. (Design List files = [
expr $SrcListErrorCnt + $ConListErrorCnt], hog.conf = $ConfErrorCnt)."
754 }
elseif {$TotErrorCnt > 0} {
755 Msg CriticalWarning "Number of errors: $TotErrorCnt (Design List files = [
expr $SrcListErrorCnt + $ConListErrorCnt], hog.conf = $ConfErrorCnt)."
757 Msg Info "Design List files and hog.conf match project. All ok!"
760 if { $SimListErrorCnt > 0 || $SimListErrorCnt > 0} {
761 Msg Warning "Number of mismatch in simulation list files = $SimListErrorCnt"
763 Msg Info "Simulation list files match project. All ok!"
766 if { $SimConfErrorCnt > 0 } {
767 Msg Warning "Number of mismatch in simulation properties = $SimConfErrorCnt"
769 Msg Info "Simulation config files match project. All ok!"