Xilinx Vivado के साथ SVN का उपयोग करना?


13

मैंने सिर्फ एक नई परियोजना में विवाडो का उपयोग करने की बात कही है और परियोजना फाइलों को एसवीएन के तहत रखना चाहूंगा।

विवाडो परियोजना के नाम के तहत सभी परियोजना फ़ाइलों को बनाने के लिए लगता है (proj1 कहते हैं):

/<path to the project>/proj1/
                            proj1.xpr
                            proj1.srcs/
                                       constrs_1/
                                                new/
                                                    const1.xdc
                            proj1.runs/
                            proj1.data/
                            proj1.cache/

मेरा सवाल यह है कि मुझे एसवीएन के अलावा अन्य फाइल रखने की क्या जरूरत है?


1
आपको ऐसा क्यों लगता है कि आपको उनकी ज़रूरत नहीं है?
ग्रैडी प्लेयर

6
मुझे समझ नहीं आ रहा है कि आपका यहाँ क्या मतलब है। विवाडो उन फ़ाइलों का एक शिट लोड बनाता है जिन्हें उत्पन्न होने के बाद नियंत्रित करने की आवश्यकता नहीं होती है। मेरे स्रोत फ़ाइलें कहीं और हैं, मुझे बस उन फ़ाइलों को सहेजने की आवश्यकता है जो विवाडो के लिए महत्वपूर्ण हैं।
फरहाद

मैं कहूंगा कि चूंकि एकमात्र इनपुट स्रोत कोड है, इसलिए वह SVN के तहत रखने वाली एकमात्र फ़ाइल है। लेकिन मैं इसे उपयोग नहीं किया है, बस अनुमान लगा
clabacchio

क्या कोई साफ विकल्प है? फिर आप क्लीन सब कुछ देख सकते हैं।
ग्रैडी प्लेयर

2
मैं विवडो परियोजना को पुनर्जीवित करने के लिए एक टीसीएल स्क्रिप्ट बना रहा हूं। और उस एक को संस्करण नियंत्रण में रखें। प्रोजेक्ट बनाते समय (मेक के साथ), यह फाइलों को एक्सिलिनक्स की जरूरत पैदा करेगा। यह मुझे पूरी परियोजना निर्देशिका और Xilinx की फ़ाइलों की जाँच करने के लिए रोकता है।
वरमाते

जवाबों:


6

इससे निपटने के लिए Xilinx एक YouTube वीडियो (sigh) बनाता है। यहां वीडियो के लिए लिंक है

http://www.xilinx.com/training/vivado/vivado-version-control-overview.htm

यहाँ वीडियो का मेरा सारांश है (8 मिनट)

इससे पहले कि आप शुरू करें

यदि आप वास्तव में पूर्ण नियंत्रण पसंद करते हैं, तो Xilinx का सुझाव है कि आप GUI को पूरी तरह से छोड़ दें और कमांड लाइन पर सब कुछ करें, और फिर आप जानते हैं कि स्रोत क्या है और क्या नहीं है।

अन्यथा, Xilinx को पता चलता है कि विवाडो परियोजनाएं संस्करण नियंत्रण के लिए डिज़ाइन नहीं की गई हैं। पूर्ण परियोजना में शामिल नहीं हैं। लेकिन संकेत के लिए पर पढ़ें ...

बेसलाइन

बेशक, विवाडो टूल के बाहर आप जो कुछ भी लिखते हैं, उसकी जाँच होनी चाहिए।

निम्नलिखित फाइलों में जाँच करें

*.v, *.vh, *.vhdl, *.edif  - HDL and Netlist
*.xdc - Constraints
*.xci - IP Core
*.bd  - IP Integrator Block Diagram
*.xmp - Embedded Subsystem
*.sgp - System Generator Subsystem
*.bmm
*.cdc - Chipscope
*.elf
*.mem

आईपी ​​ब्लॉक

यदि आप आईपी ब्लॉक का उपयोग करते हैं, तो एक अद्वितीय फ़ोल्डर में आईपी उत्पन्न करें, और सब कुछ जांचें।

चौकियों

यदि आप सब कुछ चलाने के बिना प्रवाह के कुछ हिस्सों को फिर से चलाने में सक्षम होना चाहते हैं, तो चेकपॉइंट फ़ाइलों में जांचें।

*.dcp - Design Checkpoints

मेरा परिशिष्ट

यदि Xilinx उपकरण कुशल थे, तो मैं dcp फ़ाइलों में जाँच की अनुशंसा नहीं करूँगा, लेकिन उन्हें चलाने में इतने घंटे लगते हैं, यह एक बदसूरत संस्करण नियंत्रण प्रणाली की कीमत पर सार्थक हो सकता है।

वीडियो में यह नहीं कहा गया है कि विवाडो परियोजना फाइलों के बारे में स्क्वाट (* .xpr) तो यहाँ मेरा सुझाव है:

*.xpr
*.data/*/fileset.xml
*.data/*/runs.xml

वैकल्पिक विकल्प जो Xilinx की अनुशंसा करता है (जो वास्तव में हैक है, संस्करण नियंत्रण के लिए उपयुक्त नहीं है) File -> Write Project Tclकमांड को हर बार जब आप कमिट करना चाहते हैं, और फिर उस बंधन फ़ाइल को संस्करण नियंत्रण के लिए प्रतिबद्ध करना है। जब आप अपने स्थानीय फ़ोल्डर को अपडेट करते हैं, तो आपको प्रोजेक्ट फ़ाइलों के सभी बनाने के लिए उस टीसीएल फ़ाइल को फिर से जमा करना होगा। छी।


महान, यह वास्तव में मददगार था। मैं अब एसवीएन का उपयोग नहीं करता हूं, लेकिन जीआईटी, लेकिन इससे मुझे रिपॉजिटरी में सही फाइलें प्राप्त करने में मदद मिलती है।
फरहदा

1
मैं tcl फ़ाइलों का उपयोग करता हूं और यह वास्तव में वास्तव में अच्छी तरह से काम करता है। जब किसी फ़ाइल को किसी प्रोजेक्ट में जोड़ा जाता है, तो केवल tcl स्क्रिप्ट्स को अपडेट करने की आवश्यकता होती है, और आमतौर पर जब सभी फ़ाइलें अंदर होती हैं तो मैं tcl उत्पन्न करता हूं। वे लगभग yucky या hacky नहीं होते हैं जैसा कि आप उन्हें बनाते हैं।
स्टेनरी

टीसीएल समाधान आदर्श होगा यदि विवाडो ने हर परियोजना में बदलाव के बाद टीसीएल फ़ाइल को स्वचालित रूप से बनाया और उसने टीसीआर फ़ाइल को xpr फ़ाइल के बजाय "प्रोजेक्ट" फ़ाइल के रूप में पढ़ा। दूसरों के शब्दों में, अगर Xilinx ने xpr फ़ाइल से छुटकारा पा लिया और इसे tcl फ़ाइल से बदल दिया।
मार्क लकाटा जूल

Xpr फ़ाइल करने के साथ एक मामूली समस्या है: यह हर बार बदलता है, तब भी जब आप केवल Vivado खोलते हैं ...
Piedone

3

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 कमांड का विवरण देता है।


2

एक Xilinx प्रशिक्षण वीडियो है जो बताता है कि विवाडो के साथ संस्करण नियंत्रण प्रणालियों का उपयोग कैसे किया जाता है। मूल रूप से, फ़ाइलों की सूची आपके द्वारा उपयोग की जा रही सुविधाओं पर निर्भर करती है।

यदि आप एक स्क्रिप्टेड एप्रोच (जैसा कि वर्माएट करता है) का उपयोग करते हैं, तो आप विवाडो को सभी मध्यवर्ती / अस्थायी फ़ाइलों को एक अलग निर्देशिका में ( यहाँ देखें ) लिख सकते हैं , ताकि आप उन्हें आसानी से अलग कर सकें।

अन्यथा, आप Vivado द्वारा बिल्ड फ़ोल्डर को साफ कर सकते हैं, और जो कुछ भी बचा है उसे संस्करण नियंत्रण में रखा जा सकता है।


1
धन्यवाद, मैं इस पर गौर करूंगा, यह आश्चर्यजनक है कि Xilinx इतना महंगा उपकरण लेकर आ सकता है, लेकिन इसके साथ संशोधन नियंत्रण के लिए उचित समर्थन देने की भी जहमत नहीं उठाता।
फरहाद

1
Xilinx फ़ोरम में (2009 IIRC से) एक दिलचस्प टिप्पणी थी: उपकरण हार्डवेयर इंजीनियरों के लिए थे। और हार्डवेयर इंजीनियरों के बारे में पता नहीं है, और संशोधन नियंत्रण के बारे में परवाह नहीं है। लेकिन मुझे लगता है कि रवैया बदल गया है, और इन उपकरणों का उपयोग करने वाले अधिक से अधिक एसडब्ल्यू इंजीनियर हैं। इसलिए अब संशोधन नियंत्रण अतीत की तुलना में अधिक मायने रखता है।
hli

2
खैर यह एक शुद्ध अपमान है जिसने कभी उन शब्दों को कहा। HW इंजीनियर विभिन्न प्रकार के संशोधन नियंत्रण का उपयोग करते हैं, कई उपकरण समर्थन करते हैं, कई इंजीनियर मानक RC का उपयोग करते हैं, और अन्य लोग RC में निर्मित Mentor HDL डिज़ाइनर जैसे उपकरणों का उपयोग करते हैं। अफसोस की बात है, Xilinx और Altera जैसे FPGA विक्रेताओं को इन मुद्दों की परवाह नहीं है, और यही वह जगह है जहां मुख्य समस्या है।
फरहाद

1

कृपया Xilinx मंचों पर इस धागे को देखें:

http://forums.xilinx.com/t5/Implementation/What-files-to-put-under-revision-control-for-consistent-build/td-p/174232


2
आपका जवाब भी बहुत कुछ उपयोगी हो सकता है अगर आपको लगता है कि चर्चा से कुछ दिलचस्प सामग्री हो सकती है, इसलिए भी कि यह अंतिम मृत लिंक (एक मंच ऐसा हो सकता है कि यह संग्रहीत हो जाता है) करने के लिए बच जाएगा
clabacchio
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.