📄 lvds_fpga2.restore
字号:
OnOkPtr iPropTableFetch { $iPropTableFetch GetPropTable prop_table_comp } set iScratch [ GetInterface $prop_table_comp $xilinx::Dpm::IScratchPropertyManagerID ] OnNullPtr iScratch { ERR "Could not get the Scratch Property Manager from the Project Helper." } return $iScratch}# Helper to get the Design from the Project Helper.# Clients must release this.proc GetDesign { iProjHelper } { set iProject [GetProject $iProjHelper] set iDesign 0 OnOkPtr iProject { $iProject GetDesign iDesign } OnNullPtr iDesign { ERR "Could not get the Design from the Project Helper." } Release $iProject return $iDesign}# Helper to get the Data Store from the Project Helper.# Clients must NOT release this.proc GetDataStore { iProjHelper } { set iDesign [ GetDesign $iProjHelper] set iDataStore 0 OnOkPtr iDesign { $iDesign GetDataStore iDataStore } OnNullPtr iDataStore { ERR "Could not get the Data Store from the Project Helper." } Release $iDesign return $iDataStore}# Helper to get the View Manager from the Project Helper.# Clients must NOT release this.proc GetViewManager { iProjHelper } { set iDesign [ GetDesign $iProjHelper] set iViewMgr [ GetInterface $iDesign $xilinx::Dpm::IViewManagerID ] OnNullPtr iViewMgr { ERR "Could not get the View Manager from the Project Helper." } # Don't release the design here, clients will release it # when they release its IViewManager interface. return $iViewMgr}# Helper to get the Property Manager from the Project Helper.# Clients must release this.proc GetPropertyManager { iProjHelper } { set iDesign [ GetDesign $iProjHelper] set iPropMgr 0 OnOkPtr iDesign { $iDesign GetPropertyManager iPropMgr } OnNullPtr iPropMgr { ERR "Could not get the Property Manager from the Project Helper." } Release $iDesign return $iPropMgr}# Helper to find a property template, based on prop_name# Clients must NOT release this.proc GetPropertyTemplate { iProjHelper prop_name } { set iPropTempl 0 set iUnk 0 set iDefdataId 0 set iPropTemplStore 0 set iDataStore [GetDataStore $iProjHelper] OnOkPtr iDataStore { $iDataStore GetComponentByName $prop_name iUnk } OnOkPtr iUnk { set iDefdataId [ GetInterface $iUnk $xilinx::Dpm::IDefDataIdID IDefDataId ] } OnOkPtr iDefdataId { set iPropTemplStore [ GetInterface $iDataStore $xilinx::Dpm::IPropertyTemplateStoreID IPropertyTemplateStore ] } OnOkPtr iPropTemplStore { $iPropTemplStore GetPropertyTemplate $iDefdataId iPropTempl } OnNullPtr iPropTempl { WARN "Could not get the property template for \"$prop_name\"." } return $iPropTempl}# Helper to get a component's name.proc GetName { iUnk } { set name "" set iName [ GetInterface $iUnk $xilinx::Prjrep::INameID IName ] OnOkPtr iName { $iName GetName name } return $name}# Helper to get the name of a view's type.proc GetViewTypeName { iView } { set typeName "" set iType 0 set iDefdataType 0 OnOkPtr iView { $iView GetType iType } OnOkPtr iType { set iDefdataType [ GetInterface $iType $xilinx::Dpm::IDefDataIdID IDefDataId ] } OnOkPtr iDefdataType { $iDefdataType GetID typeName } return $typeName}# Helper to find a view and return its context.# Must clients release this?proc GetViewContext { iProjHelper view_id view_name } { # Simply return if the view_id or view_name is empty. if { [IsBlank $view_id] || [IsBlank $view_name] } { return 0 } set foundview 0 set viewiter 0 set iViewMgr [GetViewManager $iProjHelper] OnOkPtr iViewMgr { $iViewMgr GetViews viewiter } ForEachIterEle view $viewiter { set typeName [GetViewTypeName $view] set name [GetName $view] if { [ string equal $name $view_name ] && [ string equal $view_id $typeName ] } { set foundview $view } } set context [ GetInterface $foundview $xilinx::Dpm::IPropertyContextID ] OnNullPtr context { WARN "Could not get the context for view \"$view_id\":\"$view_name\"." } return $context}# Helper to get a string property instance from the property manager.proc GetStringPropertyInstance { iProjHelper simple_id } { set iPropMgr [GetPropertyManager $iProjHelper] if {$iPropMgr == 0} { return 0 } set iPropInst 0 $iPropMgr GetStringProperty $simple_id iPropInst OnNullPtr iPropInst { WARN "Could not get the string property instance $simple_id." } Release $iPropMgr return $iPropInst}# Helper to get a property instance from the property manager.proc GetPropertyInstance { iProjHelper view_name view_id prop_name } { set iPropInst 0 set iPropTempl [ GetPropertyTemplate $iProjHelper $prop_name ] if {$iPropTempl == 0} { return 0 } set context [ GetViewContext $iProjHelper $view_id $view_name ] set iPropMgr [GetPropertyManager $iProjHelper] if {$iPropMgr == 0} { return 0 } $iPropMgr GetPropertyInstance $iPropTempl $context iPropInst OnNullPtr iPropInst { if { ![IsBlank $view_id] && ![IsBlank $view_name] } { WARN "Could not get the context sensitive property instance $prop_name." } else { WARN "Could not get the property instance $prop_name." } } Release $iPropMgr return $iPropInst}# Helper to store properties back into the property manager.proc RestoreProcessProperties { iProjHelper process_props } { INFO "Restoring process properties" foreach { unused view_name view_id simple_id prop_name prop_val } $process_props { set iPropInst 0 if {![IsBlank $simple_id]} { set iPropInst [ GetStringPropertyInstance $iProjHelper $simple_id ] } else { set iPropInst [ GetPropertyInstance $iProjHelper $view_name $view_id $prop_name ] } OnOkPtr iPropInst { OnFail [ $iPropInst SetStringValue "$prop_val" ] { WARN "Could not set the value of the $prop_name property to \"$prop_val\"." } } Release $iPropInst }}# Helper to recreate partitions from the variable name with# a list of instance names.proc RestorePartitions { namelist } { INFO "Restoring partitions." set iHDProject [ GetCurrentHDProject ] OnOkPtr iHDProject { foreach name $namelist { set iPartition [ $iHDProject CreatePartition "$name" ] } }}# Helper to create and populate a library#proc CreateLibrary { iProjHelper libname filelist } { set iLibMgr [ GetSourceLibraryManager $iProjHelper ] set iFileMgr [ GetFileManager $iProjHelper ] if {$iLibMgr == 0} { return 0 } if {$iFileMgr == 0} { return 0 } $iLibMgr CreateSourceLibrary "libname" ilib OnOkPtr ilib { foreach filename $filelist { set argfile [ file normalize "$filename" ] set found 0 set fileiter 0 $iFileMgr GetFiles fileiter ForEachIterEle ifile $fileiter { set path "" set file "" $ifile getPath path file set currentfile [ file normalize [ file join "$path" "$file" ] ] if { $currentfile == $argfile } { set found 1 $ilib AddFile ifile break } } OnNullPtr found { WARN "Could not add the file \"$filename\" to the library \"$libname\"." } } }}# Helper to create source libraries and populate them.proc RestoreSourceLibraries { iProjHelper libraries } { INFO "Restoring source libraries." foreach { libname filelist } $libraries { CreateLibrary $iProjHelper "$libname" $filelist }}# Helper to add user files to the project using the PnF.proc AddUserFiles { iProjHelper files } { INFO "Adding User files." set iconflict 0 set iSrcHelper [ GetProjSrcHelper $iProjHelper ] if {$iSrcHelper == 0} { return 0 } foreach filename $files { INFO "Adding the file \"$filename\" to the project." set result [$iSrcHelper AddSourceFile "$filename" iconflict] OnFail $result { if {$result == 6} { INFO "The file \"$filename\" is already in the project." } else { ERR "A problem occurred adding the file \"$filename\" to the project." } } }}# Helper to add files to the project and set their origination. # Valid origination values are:# 0 - User# 1 - Generated# 2 - Imported# Files of origination "User" are added through the facilitator, # otherwise they are added directly to the File Manager.proc AddImportedFiles { iProjHelper files origination } { switch $origination { 0 { INFO "Adding User files." } 1 { INFO "Adding Generated files." } 2 { INFO "Adding Imported files." } default { ERR "Invalid parameter: origination was set to \"$origination\", but may only be 0, 1, or 2." return 0 } } set iFileMgr [ GetFileManager $iProjHelper ] if {$iFileMgr == 0} { return 0 } foreach filename $files { set file_type 0 set hdl_file 0 set result [$iFileMgr AddFile "$filename" $file_type hdl_file] OnFail $result { if {$result == 6} { INFO "The file \"$filename\" is already in the project." } elseif { $hdl_file == 0 } { ERR "A problem occurred adding the file \"$filename\" to the project." } } OnOkPtr hdl_file { set ifile [ GetInterface $hdl_file $xilinx::Dpm::IFileID IFile ] OnOkPtr ifile { set result [ $ifile SetOrigination $origination ] if {$result != 1} { ERR "A problem occurred setting the origination of \"$filename\" to \"$origination\"." } Release $ifile } } } return 1}proc RestoreProjectSettings { iProjHelper project_settings } { INFO "Restoring device settings" set iScratch [GetScratchPropertyManager $iProjHelper] set iPropIter 0 set iPropSet [ GetInterface $iScratch $xilinx::Dpm::IPropertyNodeSetID IPropertyNodeSet ] OnOkPtr iPropSet { $iPropSet GetIterator iPropIter } set index 0 set lastindex [llength $project_settings] ForEachIterEle prop_node $iPropIter { set prop_instance 0 $prop_node GetPropertyInstance prop_instance if { $index < $lastindex } { set argname [ lindex $project_settings $index ] set argvalue [ lindex $project_settings [ expr $index + 1 ] ] } else { set argname {} set argvalue {} } if { $prop_instance != 0 } { set name {} $prop_instance GetName name if { [string equal $name $argname ] } { $prop_instance SetStringValue $argvalue incr index incr index } } Release $prop_instance } $iScratch Commit # initialize $iProjHelper Init}# Helper to load a source control configuration from a stream# and then store it back into an ise file.proc RestoreSourceControlOptions { prjfile istream } { INFO "Restoring source control options" set config_comp [::Xilinx::Cit::FactoryCreate $::xilinx::Dpm::SourceControlConfigurationCompID ] OnOkPtr config_comp { set ipersist [ $config_comp GetInterface $xilinx::Prjrep::IPersistID ] } OnOkPtr config_comp { set igetopts [ $config_comp GetInterface $xilinx::Dpm::SrcCtrl::IGetOptionsID ] } set helper_comp [::Xilinx::Cit::FactoryCreate $::xilinx::Dpm::SourceControlHelpCompID ] OnOkPtr helper_comp { set ihelper [ $config_comp GetInterface $xilinx::Dpm::SrcCtrl::IHelperID ] } OnOkPtr ipersist { $ipersist Load istream } OnOkPtr ihelper { OnOkPtr igetopts { $ihelper SaveOptions $prjfile $igetopts } } Release $helper_comp $config_comp}# put a string message in a GUI popup message dialog (if possible),# Get a user Yes/No response. If the GUI isn't active just 'puts' # the message to stdout and return the default value.# sMessageGUI - string, the message to display in GUI environment# sMessageCmdLine - string, the message to display in CMdLine environment# defaultValue - integer, the response to return on a timeout</In># hasCancel - integer, defaulting to 0. If 1, show Yes/No/Cancel buttons</In>proc dpm_DisplayQuestionDialog { sMessageGUI sMessageCmdLine defaultValue { hasCancel 0} } { set iMessageDisplay 0 if {[catch { set iInterface [Xilinx::CitP::GetInstance $::xilinx::GuiI::IMessageDlgID] set iMessageDisplay [$iInterface GetInterface $::xilinx::GuiI::IMessageDlgID] }]} { # if we cannot get the IMessageDlgID interface then we are most likely
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -