📄 data_pilot_insert.restore
字号:
# Helper to close and release a project.proc CloseFacilProject { iProjHelper } { if {$iProjHelper == 0} { return } $iProjHelper Close Release $iProjHelper}# Helper to get the Project from the Project Helper.# Clients must release this.proc GetProject { iProjHelper } { if {$iProjHelper == 0} { return 0 } set dpm_project 0 $iProjHelper GetDpmProject dpm_project set iProject [ GetInterface $dpm_project $xilinx::Dpm::IProjectID ] OnNullPtr iProject { ERR "Could not get the Project from the Project Helper." } return $iProject}# Helper to get the File Manager from the Project Helper.# Clients must release this.proc GetFileManager { iProjHelper } { set iProject [GetProject $iProjHelper] set iFileMgr [ GetInterface $iProject $xilinx::Dpm::IFileManagerID ] OnNullPtr iFileMgr { ERR "Could not get the File Manager from the Project Helper." } # Don't release the project here, clients will release it # when they release its IFileManager interface. return $iFileMgr}# Helper to get the Source Library Manager from the Project Helper.# Clients must release this.proc GetSourceLibraryManager { iProjHelper } { set iProject [GetProject $iProjHelper] set iSourceLibraryMgr [ GetInterface $iProject $xilinx::Dpm::ISourceLibraryManagerID ] OnNullPtr iSourceLibraryMgr { ERR "Could not get the Source Library Manager from the Project Helper." } # Don't release the project here, clients will release it # when they release its IFileManager interface. return $iSourceLibraryMgr}# Helper to get the ProjSrcHelper from the Project Helper.# Clients must NOT release this.proc GetProjSrcHelper { iProjHelper } { set iSrcHelper [ GetInterface $iProjHelper $::xilinx::Dpm::IProjSrcHelperID IProjSrcHelper ] OnNullPtr iSrcHelper { ERR "Could not get the ProjSrcHelper from the Project Helper." } return $iSrcHelper}# Helper to get the ScratchPropertyManager from the Project Helper.# Clients must NOT release this.proc GetScratchPropertyManager { iProjHelper } { set iPropTableFetch [ GetInterface $iProjHelper $xilinx::Dpm::IPropTableFetchID IPropTableFetch ] set prop_table_comp 0 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."
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -