प्रोग्रामिंग भाषा Verilog

वेरिलॉग भाषा

वेरिलॉग का अवलोकन

वेरिलॉग एक हार्डवेयर विवरण भाषा (HDL) है जिसका उपयोग डिजिटल इलेक्ट्रॉनिक सिस्टम, विशेष रूप से एकीकृत सर्किट (ICs) के डिजाइन, अनुकरण और सत्यापन के लिए किया जाता है। 1980 के दशक में विकसित, वेरिलॉग इंजीनियरों को विभिन्न अमूर्तता स्तरों पर इलेक्ट्रॉनिक सिस्टम के व्यवहार और संरचना का वर्णन करने की अनुमति देता है, उच्च-स्तरीय एल्गोरिदम से लेकर गेट स्तर तक। इसका प्राथमिक कार्य डिजिटल लॉजिक सर्किट के अनुकरण और संश्लेषण को सुविधाजनक बनाना है, जिससे CPU, FPGA (फील्ड-प्रोग्रामेबल गेट एरे) और ASIC (एप्लिकेशन-विशिष्ट एकीकृत सर्किट) जैसे जटिल हार्डवेयर घटकों के कुशल डिजाइन और सत्यापन की अनुमति मिलती है।

ऐतिहासिक पहलू

वेरिलॉग 1984 में गेटवे डिज़ाइन ऑटोमेशन द्वारा विकसित एक स्वामित्व भाषा के रूप में उत्पन्न हुआ। इसका प्रारंभिक उद्देश्य डिजिटल सिस्टम के लिए एक मॉडलिंग उपकरण प्रदान करना था। 1990 में, इसे कैडेंस डिज़ाइन सिस्टम द्वारा अधिग्रहित किया गया, जिसने इलेक्ट्रॉनिक्स उद्योग में भाषा को व्यापक रूप से अपनाने में मदद की।

1995 में, वेरिलॉग को IEEE 1364 के रूप में मानकीकृत किया गया, जिससे यह एक आधिकारिक HDL मानक बन गया। इस मानकीकरण ने वेरिलॉग की लोकप्रियता में महत्वपूर्ण योगदान दिया, जिससे यह अन्य HDLs, विशेष रूप से VHDL के साथ प्रतिस्पर्धा कर सका, जिसने 1980 के दशक में सैन्य और एयरोस्पेस अनुप्रयोगों में उपयोग के माध्यम से प्रमुखता प्राप्त की।

बाद के वर्षों में, वेरिलॉग ने आधुनिक डिजाइन पद्धतियों के लिए निर्माणों को शामिल करने के लिए विकसित किया, जैसे कि सिस्टमवेरिलॉग, जो वेरिलॉग और ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग पैरेडाइम से विशेषताएँ शामिल करता है। अब, सिस्टमवेरिलॉग सत्यापन और डिजाइन उपकरण दोनों का प्रतिनिधित्व करता है, जो वेरिलॉग की क्षमताओं को और बढ़ाता है।

वर्तमान में, वेरिलॉग और इसके विस्तार इलेक्ट्रॉनिक्स डिज़ाइन ऑटोमेशन (EDA) उद्योग में एक मौलिक भाषा बने हुए हैं, जिसमें विभिन्न प्रमुख कंपनियों जैसे कि साइनोप्सिस, मेंटर ग्राफिक्स और कैडेंस द्वारा प्रदान किए गए उपकरणों का एक मजबूत पारिस्थितिकी तंत्र है।

वेरिलॉग की सिंटैक्स विशेषताएँ

मॉड्यूल घोषणा

वेरिलॉग में मौलिक निर्माण खंड मॉड्यूल है। मॉड्यूल में इनपुट, आउटपुट और आंतरिक लॉजिक होते हैं।

module my_adder(input a, input b, output sum);
    assign sum = a + b;
endmodule

प्रक्रियात्मक ब्लॉक

वेरिलॉग प्रक्रियात्मक ब्लॉकों जैसे always और initial का समर्थन करता है, जो अनुक्रमिक लॉजिक और प्रारंभिककरण की अनुमति देते हैं।

always @(posedge clk) begin
    q <= d; // clk के बढ़ते किनारे पर, d को q में असाइन करें
end

असाइन स्टेटमेंट

निरंतर असाइनमेंट assign स्टेटमेंट का उपयोग करके किए जा सकते हैं, जो सुनिश्चित करता है कि आउटपुट तुरंत इनपुट में परिवर्तन को दर्शाता है।

wire out;
assign out = a & b; // AND गेट

गेट-स्तरीय मॉडलिंग

वेरिलॉग सीधे AND, OR, और NOT जैसे अंतर्निहित प्राइमिटिव्स का उपयोग करके मॉडलिंग की अनुमति देता है।

and my_and(out, a, b); // एक AND गेट स्थापित करता है

टेस्टबेंच

टेस्टबेंच का उपयोग वेरिलॉग में डिजाइन की कार्यक्षमता का अनुकरण और सत्यापन करने के लिए किया जाता है।

module tb_my_adder;
    reg a, b;
    wire sum;

    my_adder dut (.a(a), .b(b), .sum(sum)); // डिजाइन स्थापित करें

    initial begin
        a = 0; b = 0; #10; // इनपुट लागू करें और प्रतीक्षा करें
        a = 1; #10;
        b = 1; #10;
    end
endmodule

शर्तीय स्टेटमेंट

वेरिलॉग शर्तीय स्टेटमेंट जैसे if, case का समर्थन करता है जो प्रक्रियात्मक ब्लॉकों में निर्णय लेने के लिए उपयोग किया जाता है।

if (sel) begin
    out = a;
end else begin
    out = b;
end

लूप

वेरिलॉग में दोहराए जाने वाले असाइनमेंट और संचालन के लिए लूप का उपयोग किया जा सकता है।

for (i = 0; i < 8; i = i + 1) begin
    // संचालन करें
end

पैरामीटर

वेरिलॉग पैरामीटरयुक्त मॉड्यूल की अनुमति देता है, जिससे विभिन्न कॉन्फ़िगरेशन के साथ डिज़ाइन को पुन: उपयोग किया जा सके।

module my_multiplier #(parameter WIDTH = 8)(input [WIDTH-1:0] a, input [WIDTH-1:0] b, output [2*WIDTH-1:0] product);
    assign product = a * b;
endmodule

कार्य और फ़ंक्शन

वेरिलॉग मॉड्यूलर कोड डिज़ाइन के लिए कार्यों और फ़ंक्शनों को परिभाषित करने की क्षमता प्रदान करता है।

function [7:0] add(input [7:0] a, input [7:0] b);
    add = a + b;
endfunction

नॉन-ब्लॉकिंग असाइनमेंट

<= ऑपरेटर का उपयोग करके नॉन-ब्लॉकिंग असाइनमेंट समकालिक डिज़ाइन के बेहतर मॉडलिंग की अनुमति देता है।

always @(posedge clk) begin
    q <= d; // बाद में निष्पादन के लिए निर्धारित
end

डेवलपर के उपकरण, रनटाइम और लोकप्रिय IDEs

वेरिलॉग विकास विभिन्न उपकरणों और IDEs के माध्यम से सुगम बनाया गया है। सामान्यतः उपयोग किए जाने वाले सॉफ़्टवेयर में ModelSim, Synopsys VCS, और Cadence Incisive शामिल हैं, जो अनुकरण, संश्लेषण, और डिबगिंग क्षमताएँ प्रदान करते हैं।

एक प्रोजेक्ट बनाना

वेरिलॉग प्रोजेक्ट बनाने के लिए, आप आमतौर पर अपने वेरिलॉग कोड को .v फ़ाइलों में लिखते हैं। फिर आप कमांड लाइन या IDE के भीतर एक अनुकरणकर्ता या संश्लेषण उपकरण को सक्रिय कर सकते हैं। उदाहरण के लिए, एक संकलन आदेश इस प्रकार हो सकता है:

vcs my_design.v -o my_sim

संकलन के बाद, आप अनुकरण चला सकते हैं:

./my_sim

वेरिलॉग के अनुप्रयोग

वेरिलॉग का उपयोग मुख्य रूप से डिजिटल सर्किट के डिजाइन और सत्यापन में किया जाता है, जिसमें शामिल हैं:

इसकी क्षमता विभिन्न अमूर्तता स्तरों पर हार्डवेयर को मॉडल करने की इसे इलेक्ट्रॉनिक्स उद्योग में कई अनुप्रयोगों के लिए बहुपरकारी बनाती है।

संबंधित या समान भाषाओं की तुलना

वेरिलॉग को अक्सर अन्य HDL भाषाओं जैसे VHDL के साथ तुलना की जाती है। जबकि दोनों समान उद्देश्यों की सेवा करते हैं, वेरिलॉग को आमतौर पर इसके सरलित सिंटैक्स के कारण सीखने में आसान माना जाता है, जो C प्रोग्रामिंग भाषा के समान है। VHDL अधिक विस्तृत डिज़ाइन के लिए पसंद किया जाता है जो मजबूत प्रकार-चेकिंग की आवश्यकता होती है और अक्सर सरकारी और एयरोस्पेस अनुप्रयोगों में उपयोग किया जाता है।

जब इसे C और Java जैसी सॉफ़्टवेयर प्रोग्रामिंग भाषाओं के साथ तुलना की जाती है, तो वेरिलॉग हार्डवेयर संरचनाओं और समवर्ती प्रक्रियाओं पर ध्यान केंद्रित करता है, जबकि सॉफ़्टवेयर भाषाएँ अनुक्रमिक और प्रक्रियात्मक लॉजिक को संभालती हैं। पायथन उच्च-स्तरीय परीक्षण और अनुकरण डेटा के प्रसंस्करण के लिए उपयोग किया जा सकता है लेकिन हार्डवेयर विवरण के लिए सीधे तरीके प्रदान नहीं करता है।

स्रोत से स्रोत अनुवाद टिप्स

उन लोगों के लिए जो वेरिलॉग डिज़ाइन को अन्य HDL प्रारूपों में अनुवादित करना चाहते हैं, कैलेक्स और अन्य ओपन-सोर्स सॉफ़्टवेयर जैसे उपकरण इस प्रक्रिया को सुगम बनाने के लिए मौजूद हैं। हालाँकि, वेरिलॉग की विशिष्ट विशेषताएँ प्रत्येक भाषा के अमूर्तता और इरादे में अंतर्निहित भिन्नताओं के कारण सीधे अनुवाद को चुनौतीपूर्ण बना सकती हैं।

वेरिलॉग को विभिन्न प्रारूपों में परिवर्तित करने या इसे अनुकूलित करने में मदद करने के लिए वेरिलेटर या योसिस जैसे उपकरण विकसित किए गए हैं, और वे संश्लेषण और अनुकरण के लिए क्षमताएँ प्रदान करते हैं। ये उपकरण वेरिलॉग डिज़ाइन को प्रवाह-उन्मुख वातावरण में एकीकृत करने के लिए विशेष रूप से उपयोगी हैं।