Vivado 2014.1 परियोजनाओं को पुनर्जीवित करने के लिए .tcl लिपियों के उपयोग की अनुमति देता है।
ऐसा करने के लिए, अपने प्रोजेक्ट को खोलें, फ़ाइल पर जाएँ -> प्रोजेक्ट tcl लिखें।
मूल परियोजनाएं
मैं आमतौर पर अपने स्रोतों और .tcl स्क्रिप्ट को प्रोजेक्ट डायरेक्टरी के बाहर किसी स्थान पर संग्रहीत करता हूं। परियोजना के भीतर उत्पन्न xilinx आईपी कोर को कोर पर क्लिक करके और "कॉपी आईपी" का चयन करके कहीं और कॉपी किया जा सकता है। और मूल को हटाना। जब tcl script generate होती है, तो यह इन files के सापेक्ष लिंक बनाता है। यह आमतौर पर मेरी निर्देशिका संरचना जैसा दिखता है:
base_project/
srcs/
project.v
ip/
ip1/
ip1.xml
ip1.xci
genproject.tcl
केवल IP .xml और .xci फ़ाइलों के लिए प्रतिबद्ध होने की आवश्यकता है। (और यहां तक कि यह आवश्यक नहीं है, तकनीकी रूप से, अंत में नोट देखें)।
यह वह है जो git के लिए प्रतिबद्ध है, प्रोजेक्ट.xpr या प्रोजेक्ट निर्देशिका की कमी पर ध्यान दें।
जब मैं चलता हूं genproject.tcl
, तो यह परियोजना के लिए एक और निर्देशिका बनाता है।
base_project/
srcs/
ip/
genproject.tcl
projectdir/
project.runs/
project.cache/
project.xpr
यह नया फ़ोल्डर पूरी तरह से डिस्पोजेबल है। इस संरचना को बनाने के लिए, मैं निम्नलिखित तरीके से tcl स्क्रिप्ट को संशोधित करता हूं।
मैं पहली 3 पंक्तियों को निम्नानुसार बदलता हूं:
# Set the reference directory for source file relative paths (by default the value is script directory path)
set origin_dir [file dirname [info script]]
# Set the directory path for the original project from where this script was exported
set orig_proj_dir "[file normalize "$origin_dir/projectdir"]"
# Create project
create_project project $projectdir/project
यह एक नई परियोजना निर्देशिका और उस dir में नई परियोजना बनाता है।
फिर मैं सही स्थानों को इंगित करने के लिए पथों को संशोधित करता हूं। आपको स्क्रिप्ट में अन्य स्थानों पर इन रास्तों को बदलने की आवश्यकता हो सकती है।
# Set 'sources_1' fileset object
set obj [get_filesets sources_1]
set files [list \
"[file normalize "$origin_dir/srcs/project.v"]"\
"[file normalize "$origin_dir/ip/ip1/ip1.xci"]"\
]
add_files -norecurse -fileset $obj $files
मैं आईपी कोर के लिए डिज़ाइन रन को भी संशोधित करता हूं जैसा कि इस उत्तर में देखा गया है ।
.Wcfg फाइलें आईपी और srcs के समान तरीके से शामिल की जा सकती हैं।
यह वह जगह है जहां प्रसंस्करण अधिक सरल परियोजनाओं के लिए समाप्त होता है (केवल स्रोत और आईपी, कोई ब्लॉक आरेख नहीं)। ब्लॉक आरेख डेटा को संग्रहीत करने के लिए निम्न आवश्यकताओं को भी पूरा किया जाना चाहिए।
ब्लॉक आरेख परियोजनाएं
ब्लॉक आरेख को बचाने के लिए, ब्लॉक आरेख को खोलने के साथ, फ़ाइल -> निर्यात -> ब्लॉक आरेख को Tcl पर जाएं, और इसे उसी dir में अन्य tcl फ़ाइल के रूप में सहेजें।
फिर मैंने एक Generate_Wrapper.tcl
स्क्रिप्ट बनाई जो ब्लॉक आरेख आवरण फ़ाइलों को बनाती है ताकि आपको मैन्युअल रूप से ऐसा करने की आवश्यकता न हो। प्रोजेक्ट / Project.srcs फ़ोल्डर का उपयोग bd डेटा को संग्रहीत करने के लिए किया जाता है, लेकिन यह अभी भी पूरी तरह से डिस्पोजेबल है, क्योंकि bd को tcl स्क्रिप्ट में संग्रहीत किया जाता है। इसे अन्य दो से बचाएं।
set origin_dir [file dirname [info script]]
make_wrapper -files [get_files $origin_dir/project/project.srcs/sources_1/bd/design_1/design_1.bd] -top
add_files -norecurse -force $origin_dir/project/project.srcs/sources_1/bd/design_1/hdl/design_1_wrapper.v
update_compile_order -fileset sources_1
update_compile_order -fileset sim_1
मेरे अंत में genproject.tcl
मैं ब्लॉक आरेख और आवरण उत्पन्न करने के लिए निम्नलिखित पंक्तियाँ जोड़ता हूँ:
source $origin_dir/Create_bd.tcl
source $origin_dir/Generate_Wrapper.tcl
regenerate_bd_layout
बिना स्रोत वाली परियोजनाओं के लिए (बस आरेख), मेरी कमिट कमिट सिर्फ निम्नलिखित है:
base_project/
Generate_Wrapper.tcl
Create_Bd.tcl
genproject.tcl
सब कुछ उत्पन्न करने के लिए, भागो genproject.tcl
।
यदि आप विशेष रूप से कुशल हैं, तो आप इन सभी को एक में भी जोड़ सकते हैं, मुझे अभी तक इसका कोई चक्कर नहीं लगा है।
कस्टम घटक: घटक परियोजना
कस्टम घटक बनाने पर एक और त्वरित ध्यान दें। यदि आपके पास एक घटक है। xml, तो उसे अपने tcl सूत्रों की सूची में जोड़ें:
"[file normalize "$origin_dir/component.xml"]"\
और फिर निम्नलिखित अनुभाग भी जोड़ें:
set file "$origin_dir/component.xml"
set file [file normalize $file]
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
set_property "file_type" "IP-XACT" $file_obj
इसमें आसान अनुकूलन के लिए परियोजना में घटक डिजाइन शामिल है।
कस्टम घटक: अपने घटक को संदर्भित करना
आप अपने कस्टम कंपोनेंट रेपो पथ को इस तरह से खाली कर सकते हैं:
# Set IP repository paths
set obj [get_filesets sources_1]
set_property "ip_repo_paths" "[file normalize "$origin_dir/path/to/repository"]" $obj
मेरे रेपो फोल्डर में, अलग-अलग फोल्डर होते हैं जिनमें .xml फाइलें होती हैं। तो आप .xml वाले फ़ोल्डर का संदर्भ नहीं दे रहे हैं, लेकिन उस अभिभावक का। उदाहरण के लिए:
repository/
component1/component1.xml
component2/component2.xml
हम इन tcl स्क्रिप्ट को कैसे चलाते हैं?
विवाडो खोलें, और बिना किसी प्रोजेक्ट को खोले, टूल्स चुनें -> टीसीएल स्क्रिप्ट चलाएँ, और अपनी स्क्रिप्ट पर नेविगेट करें।
अतिरिक्त टीसीएल नोट
विवाडो में आपके द्वारा चलाए जाने वाले प्रत्येक कमांड को एक tcl कमांड के रूप में tcl कंसोल में दिखाया जाता है। उदाहरण के लिए, जब मैंने GUI का उपयोग करके एक नया Xilinx IP उत्पन्न किया, तो यह tcl कंसोल में आया:
create_ip -name floating_point -vendor xilinx.com -library ip -module_name floating_point_0
set_property -dict [list CONFIG.Operation_Type {Fixed_to_float} CONFIG.A_Precision_Type {Custom} CONFIG.C_A_Exponent_Width {38} CONFIG.C_A_Fraction_Width {0} CONFIG.Result_Precision_Type {Custom} CONFIG.C_Result_Exponent_Width {8} CONFIG.C_Result_Fraction_Width {16} CONFIG.Flow_Control {NonBlocking} CONFIG.Has_ARESETn {true}] [get_ips floating_point_0]
इसका मतलब है कुछ बातें:
आपको वास्तव में xilinx ip cores को बचाने की भी आवश्यकता नहीं है - एक बार जब आप उन्हें चाहते हैं, तो वे कमांड को tcl स्क्रिप्ट में कॉपी कर सकते हैं और आपको ip / अब और कमिट करने की आवश्यकता नहीं है।
IP निर्देशिका को -dir तर्क के बाद -module_name के साथ निर्दिष्ट करें, जहाँ भी आप इसे पसंद करेंगे (डिफ़ॉल्ट रूप से यह प्रोजेक्ट में है।
ज्यादातर आप GUI में जो कुछ भी करते हैं वह tcl में किया जा सकता है, यह देखने का सबसे आसान तरीका है कि xilinx सामान को कैसे GUI में करना है और फिर बाद में TCL कंसोल में क्या है इसे देखें।
यह humongous pdf सभी vivado tcl कमांड का विवरण देता है।