Skip to content

Commit 5390a92

Browse files
committed
Updated FindOsvvmSettingsDirectory
1 parent 2e92ae8 commit 5390a92

File tree

2 files changed

+32
-25
lines changed

2 files changed

+32
-25
lines changed

OsvvmScriptsFileCreate.tcl

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -46,33 +46,40 @@ namespace eval ::osvvm {
4646
# -------------------------------------------------
4747
# FindOsvvmSettingsDirectory
4848
#
49-
proc FindOsvvmSettingsDirectory {{Subdirectory "osvvm"}} {
50-
# note that OsvvmSettingsSubDirectory is "" for Scripts
51-
if {! $::osvvm::SettingsAreRelativeToSimulationDirectory} {
52-
if {[info exists ::env(OSVVM_SETTINGS_DIR)]} {
53-
set SettingsDirectory [file normalize [file join ${::osvvm::OsvvmHomeDirectory} $::env(OSVVM_SETTINGS_DIR) ${::osvvm::OsvvmSettingsSubDirectory}]]
54-
} elseif {[file isdirectory ${::osvvm::OsvvmHomeDirectory}/../OsvvmSettings]} {
55-
set SettingsDirectory [file normalize [file join ${::osvvm::OsvvmHomeDirectory}/../OsvvmSettings ${::osvvm::OsvvmSettingsSubDirectory}]]
56-
} else {
57-
puts "Caution: Putting setting in OsvvmLibraries directory structure"
58-
set SettingsDirectory [file join ${::osvvm::OsvvmHomeDirectory} ${Subdirectory} ${::osvvm::OsvvmSettingsSubDirectory}]
59-
}
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+
}
64+
65+
if {[info exists ::env(OSVVM_SETTINGS_DIR)]} {
66+
# Note that OSVVM_SETTINGS_DIR may be either a 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
6071
} else {
61-
puts "Warning: ::osvvm::SettingsAreRelativeToSimulationDirectory is false for Script settings and true for VHDL Settings"
62-
if {[info exists ::env(OSVVM_SETTINGS_DIR)]} {
63-
set SettingsDirectory [file normalize [file join ${::osvvm::CurrentSimulationDirectory} $::env(OSVVM_SETTINGS_DIR) ${::osvvm::OsvvmSettingsSubDirectory}]]
64-
} elseif {[file isdirectory ${::osvvm::CurrentSimulationDirectory}/../OsvvmSettings]} {
65-
set SettingsDirectory [file normalize [file join ${::osvvm::CurrentSimulationDirectory}/../OsvvmSettings ${::osvvm::OsvvmSettingsSubDirectory}]]
66-
} else {
67-
set SettingsDirectory [file join ${::osvvm::CurrentSimulationDirectory} ${Subdirectory} ${::osvvm::OsvvmSettingsSubDirectory}]
68-
}
72+
puts "Note: Putting setting in directory OsvvmLibraries/${OsvvmSubdirectory}"
73+
set SettingsDirectory ${OsvvmSubdirectory}
6974
}
7075

71-
CreateDirectory $SettingsDirectory
72-
# set RelativeSettingsDirectory [::fileutil::relative [pwd] $SettingsDirectory]
76+
set SettingsDirectoryFullPath [file normalize [file join ${SettingsRootDirectory} ${SettingsDirectory} ${::osvvm::OsvvmSettingsSubDirectory}]]
77+
78+
CreateDirectory $SettingsDirectoryFullPath
79+
# set RelativeSettingsDirectory [::fileutil::relative [pwd] $SettingsDirectoryFullPath]
7380
# return $RelativeSettingsDirectory
7481
# Needs to be a normalized path
75-
return $SettingsDirectory
82+
return $SettingsDirectoryFullPath
7683
}
7784

7885

OsvvmSettingsLocal_example.tcl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,9 @@ namespace eval ::osvvm {
111111
# OsvvmSettingsSubDirectory
112112
# Location for package bodies generated: OsvvmScriptSettingsPkg_generated.vhd and OsvvmScriptSettingsPkg_generated.vhd
113113
# Project/User settings OsvvmSettingsPkg_local.vhd
114-
# variable SettingsAreRelativeToSimulationDirectory "false" ;# Setting deprecated. Only use this value.
115-
# variable OsvvmSettingsSubDirectory "" ;# default value
116-
# variable OsvvmSettingsSubDirectory "${ToolName}" ;# Recommended if running multiple simulators
114+
# Deprecated: variable SettingsAreRelativeToSimulationDirectory "false" ;# Setting deprecated. false is the only legal value
115+
# variable OsvvmSettingsSubDirectory "" ;# default value
116+
# variable OsvvmSettingsSubDirectory "${ToolName}" ;# Recommended if running multiple simulators
117117
# variable OsvvmSettingsSubDirectory "${ToolNameVersion}" ;# Recommended if running multiple simulators
118118

119119

0 commit comments

Comments
 (0)