@@ -46,29 +46,43 @@ namespace eval ::osvvm {
4646# -------------------------------------------------
4747# FindOsvvmSettingsDirectory
4848#
49- proc FindOsvvmSettingsDirectory {} {
49+ proc FindOsvvmSettingsDirectory {{OsvvmSubdirectory " osvvm" }} {
50+ # When StartUpShared.tcl calls this to determine the value of ::osvvm::OsvvmUserSettingsDirectory,
51+ # OsvvmSettingsLocal.tcl has not been run yet, as a result,
52+ # * OsvvmSettingsSubDirectory will have its default value of "" and
53+ # * SettingsAreRelativeToSimulationDirectory will have its default value of false.
54+ # For OsvvmSettingsSubDirectory, this is ok as it is only needed to differentiate the VHDL code and not the settings.
55+ # SettingsAreRelativeToSimulationDirectory this is not ok and it usage has been deprecated.
56+ # This was used to differentiate VHDL sources for different simulators - use OsvvmSettingsSubDirectory instead
57+ #
58+
59+ set SettingsRootDirectory ${::osvvm::OsvvmHomeDirectory}
60+ if {$::osvvm::SettingsAreRelativeToSimulationDirectory } {
61+ puts " WARNING: SettingsAreRelativeToSimulationDirectory is deprecated. Usage will generate an error in the future"
62+ set SettingsRootDirectory [file normalize ${::osvvm::CurrentSimulationDirectory} ]
63+ }
5064
5165 if {[info exists ::env(OSVVM_SETTINGS_DIR)]} {
52- # if OSVVM_SETTINGS_DIR has an absolute path, CurrentSimulationDirectory/OsvvmHomeDirectory is ignored
53- if {$::osvvm::SettingsAreRelativeToSimulationDirectory } {
54- set SettingsDirectory [file join ${::osvvm::CurrentSimulationDirectory} $::env(OSVVM_SETTINGS_DIR) ${::osvvm::OsvvmSettingsSubDirectory} ]
55- } else {
56- set SettingsDirectory [file join ${::osvvm::OsvvmHomeDirectory} $::env(OSVVM_SETTINGS_DIR) ${::osvvm::OsvvmSettingsSubDirectory} ]
57- }
66+ # Note that OSVVM_SETTINGS_DIR may be either an absolute or relative path
67+ # For relative paths, use OsvvmHomeDirectory (location of OsvvmLibraries) as the base
68+ set SettingsDirectory $::env(OSVVM_SETTINGS_DIR)
69+ } elseif {[file isdirectory ${SettingsRootDirectory} /../OsvvmSettings]} {
70+ set SettingsDirectory ../OsvvmSettings
5871 } else {
59- if {$::osvvm::SettingsAreRelativeToSimulationDirectory } {
60- set SettingsDirectory [file join ${::osvvm::CurrentSimulationDirectory} ${::osvvm::OsvvmSettingsSubDirectory} ]
61- } else {
62- set SettingsDirectory [file join ${::osvvm::OsvvmHomeDirectory} " osvvm" ${::osvvm::OsvvmSettingsSubDirectory} ]
63- }
72+ puts " Note: Putting setting in directory OsvvmLibraries/${OsvvmSubdirectory} "
73+ set SettingsDirectory ${OsvvmSubdirectory}
6474 }
65- CreateDirectory $SettingsDirectory
66- # set RelativeSettingsDirectory [::fileutil::relative [pwd] $SettingsDirectory]
75+
76+ set SettingsDirectoryFullPath [file normalize [file join ${SettingsRootDirectory} ${SettingsDirectory} ${::osvvm::OsvvmSettingsSubDirectory} ]]
77+
78+ CreateDirectory $SettingsDirectoryFullPath
79+ # set RelativeSettingsDirectory [::fileutil::relative [pwd] $SettingsDirectoryFullPath]
6780# return $RelativeSettingsDirectory
6881 # Needs to be a normalized path
69- return $SettingsDirectory
82+ return $SettingsDirectoryFullPath
7083}
7184
85+
7286# -------------------------------------------------
7387# CreateOsvvmScriptSettingsPkg
7488#
0 commit comments