Skip to content

Commit de75a63

Browse files
committed
Updated how to handle OSVVM Settings.
1 parent 2738eed commit de75a63

File tree

2 files changed

+20
-25
lines changed

2 files changed

+20
-25
lines changed

OsvvmScriptsFileCreate.tcl

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,29 +46,36 @@ namespace eval ::osvvm {
4646
# -------------------------------------------------
4747
# FindOsvvmSettingsDirectory
4848
#
49-
proc FindOsvvmSettingsDirectory {} {
50-
51-
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}]
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}]]
5556
} else {
56-
set SettingsDirectory [file join ${::osvvm::OsvvmHomeDirectory} $::env(OSVVM_SETTINGS_DIR) ${::osvvm::OsvvmSettingsSubDirectory}]
57+
puts "Caution: Putting setting in OsvvmLibraries directory structure"
58+
set SettingsDirectory [file join ${::osvvm::OsvvmHomeDirectory} ${Subdirectory} ${::osvvm::OsvvmSettingsSubDirectory}]
5759
}
5860
} else {
59-
if {$::osvvm::SettingsAreRelativeToSimulationDirectory} {
60-
set SettingsDirectory [file join ${::osvvm::CurrentSimulationDirectory} ${::osvvm::OsvvmSettingsSubDirectory}]
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}]]
6166
} else {
62-
set SettingsDirectory [file join ${::osvvm::OsvvmHomeDirectory} "osvvm" ${::osvvm::OsvvmSettingsSubDirectory}]
67+
set SettingsDirectory [file join ${::osvvm::CurrentSimulationDirectory} ${Subdirectory} ${::osvvm::OsvvmSettingsSubDirectory}]
6368
}
6469
}
70+
6571
CreateDirectory $SettingsDirectory
6672
# set RelativeSettingsDirectory [::fileutil::relative [pwd] $SettingsDirectory]
6773
# return $RelativeSettingsDirectory
6874
# Needs to be a normalized path
6975
return $SettingsDirectory
7076
}
7177

78+
7279
# -------------------------------------------------
7380
# CreateOsvvmScriptSettingsPkg
7481
#

StartUpShared.tcl

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -112,28 +112,16 @@ if {[file exists ${::osvvm::OsvvmScriptDirectory}/../CoSim]} {
112112
# Import any procedure exported by previous OSVVM scripts
113113
namespace import ::osvvm::*
114114

115-
# --------------------------------
116-
# Get Directory for User Settings
117-
# --------------------------------
118-
if {[info exists ::env(OSVVM_SETTINGS_DIR)]} {
119-
# file join supports either relative or absolute paths
120-
variable ::osvvm::OsvvmUserSettingsDirectory [file join $::osvvm::OsvvmScriptDirectory $::env(OSVVM_SETTINGS_DIR)]
121-
if {![file isdirectory $::osvvm::OsvvmUserSettingsDirectory]} {
122-
puts "ScriptError: OSVVM_SETTINGS_DIR not a directory: $::env(OSVVM_SETTINGS_DIR)"
123-
variable ::osvvm::OsvvmUserSettingsDirectory $::osvvm::OsvvmScriptDirectory
124-
}
125-
} elseif {[file isdirectory $OsvvmLibraries/../OsvvmSettings] } {
126-
variable ::osvvm::OsvvmUserSettingsDirectory [file $OsvvmLibraries/../OsvvmSettings]
127-
} else {
128-
variable ::osvvm::OsvvmUserSettingsDirectory $::osvvm::OsvvmScriptDirectory
129-
}
130115

131116
# --------------------------------
132117
# Settings: OsvvmSettings*.tcl
133118
# --------------------------------
134119
# Settings First: OSVVM Default Settings
135120
source ${::osvvm::OsvvmScriptDirectory}/OsvvmSettingsDefault.tcl
136121

122+
# Get Directory for User settings
123+
variable ::osvvm::OsvvmUserSettingsDirectory [FindOsvvmSettingsDirectory "Scripts"]
124+
137125
# Settings Second: OSVVM User/Project Customizations - not required
138126
if {[file exists ${::osvvm::OsvvmUserSettingsDirectory}/OsvvmSettingsLocal.tcl]} {
139127
# Found in OSVVM_SETTINGS_DIR

0 commit comments

Comments
 (0)