मैं एक निश्चित उपकरण (Synopsys Design Vision) का उपयोग कर रहा हूं जिसे मैं TCL स्क्रिप्ट का उपयोग करके चला रहा हूं।

आदेश कुछ इस प्रकार है

analyze -library work -format verilog {/user/codes/abcd.v }

अब मेरे पास abcd_1, abcd_2, abcd_3.....abcd_5000 नामों के साथ 5000 .v एक्सटेंशन फ़ाइलों वाला एक फ़ोल्डर है। अब मैं स्क्रिप्ट को स्वचालित करना चाहता हूं ताकि कमांड प्रत्येक फ़ाइल पर काम करे।

मैंने ऐसा कुछ करने की कोशिश की

for { set a 1}  {$a < 5001} {incr a} {
analyze -library work -format verilog {/user/codes/abcd_$a.v }
#other commands
.
.
}

हालांकि, यह काम नहीं कर रहा है और त्रुटि दे रहा है। मैंने टीसीएल स्क्रिप्ट के साथ इतना काम नहीं किया है।

कृपया निर्दिष्ट करें कि मैं कहां गलत हो रहा हूं और इसे काम करने के लिए मैं क्या कर सकता हूं। धन्यवाद।

0
avi1987 16 फरवरी 2021, 23:10
टीसीएल ब्रेसिज़ परिवर्तनीय विस्तार को रोकते हैं, केवल खोल में सिंगल कोट्स को लाइन करते हैं। इसके बजाय दोहरे उद्धरण चिह्नों का उपयोग करें।
 – 
glenn jackman
17 फरवरी 2021, 01:47
ध्यान दें कि आपकी उद्धरण शैली ".v" के बाद के स्थान को महत्वपूर्ण बनाती है। क्या आपकी फ़ाइलें वास्तव में "डॉट वी स्पेस" के साथ समाप्त होती हैं?
 – 
glenn jackman
17 फरवरी 2021, 01:48

1 उत्तर

सबसे बढ़िया उत्तर

इसे छोटा करने के लिए, ब्रेसिज़ के बजाय उद्धरणों का उपयोग करें, क्योंकि बाद वाले परिवर्तनीय प्रतिस्थापन होने से:

for {set a 1}  {$a < 5001} {incr a} {
  analyze -library work -format verilog "/user/codes/abcd_$a.v"
  # ...
}

हालाँकि, आप फ़ाइल पथों को इकट्ठा करने के लिए file कमांड को भी देखना चाह सकते हैं।

1
mrcalvin 17 फरवरी 2021, 10:43