top of page

Simulation Timings

St1.png

जब हम VHDL simulation चलाते हैं, तो यह किसी साधारण प्रोग्राम की तरह एक-एक लाइन को चलाकर आउटपुट नहीं देता।
बल्कि यह एक event-driven system पर काम करता है — यानी simulation उन signals पर प्रतिक्रिया देता है जिनमें बदलाव होता है या जिन पर कोई event (जैसे clock edge या wait time) आता है।
इसके तीन मुख्य हिस्से होते हैं — delta cycle, event scheduling, और signal update mechanism।

Simulation कैसे शुरू होती है?

जब simulation शुरू होती है,
तो सबसे पहले simulator सभी signals को उनकी शुरुआती value देता है।
अगर किसी signal को कोई value नहीं दी गई है, तो उसे 'U' (undefined) माना जाता है।
अगर लिखा है := '0', तो signal की value '0' से शुरू होगी।

इसके बाद, सभी processes activate होती हैं — यानी हर process पहली बार execute होती है।
हर process तब तक चलती है जब तक उसे कोई wait या wait until statement नहीं मिल जाता।

उदाहरण के लिए:

signal clk : std_logic := '0';

signal rst : std_logic := '0';

 

Simulation के शुरू होते ही clk = '0' और rst = '0' assign हो जाएगा।

अब आता है Step 1 — Delta Cycle

अब simulator यह देखता है कि कौन-कौन से processes को चलाना है।


उदाहरण के लिए:

clk <= not clk after 5 ns;


Simulator समझता है कि clk को 5 ns बाद '1' बनना है।
तो वो इस event को अपने event queue में future time (5 ns) के लिए store कर लेता है।
लेकिन अभी simulation time 0 ns है — यानी अभी कोई real time नहीं गुज़रा है।
इसी को कहा जाता है Delta 0 cycle —
इसमें केवल signal assignment और event scheduling होता है, कोई real time नहीं गुजरता।

Event Scheduling क्या है?

Simulator एक event queue बनाता है (जैसे एक to-do list)।
इसमें वो लिखता है कि किस समय कौन सा event execute होगा।

उदाहरण:

st2.png

जब भी कोई signal assignment में after या process में wait for लिखा होता है,
Simulator उस event को इस list में future time के लिए डाल देता है।

Signal Update Phase

जब event का समय आता है (जैसे 5 ns),
Simulator उस समय के सभी scheduled events उठाता है और
signals को उनकी नई value देता है।

उदाहरण:

Time = 5 ns  

Event: clk toggles to '1'

 

अब clk '0' से '1' हो जाता है।
जो भी processes clk पर depend करती हैं (जैसे flip-flop process),
वे अब दोबारा activate होती हैं।

Process Execution Phase

अब simulator उन सभी processes को दोबारा चलाता है जिनके signals बदले हैं।
उदाहरण:

process(clk)

begin

  if rising_edge(clk) then

    q <= d;

  end if;

end process;

 

जब clk '1' हुआ, तो rising edge detect हुआ।
Process फिर से execute हुई और q <= d assign किया गया।

लेकिन ध्यान रहे — q की value तुरंत नहीं बदलेगी।
Simulator इसे अगले delta cycle (Δ1) में update करेगा
ताकि सभी signals एक ही समय पर stable हो जाएं।

Next Delta Cycles (Δ1, Δ2…)

Simulator अब check करता है कि क्या अभी भी कुछ signals हैं
जो बिना time बढ़ाए change होने बाकी हैं।
अगर हाँ, तो वह अगले delta cycle (Δ1, Δ2…) चलाता है
जब तक सभी signals stable न हो जाएं।

जब सारे signals stable हो जाते हैं,
तब simulator time को आगे बढ़ाने की अनुमति देता है।

Time Advancement

अब simulator next scheduled event के समय पर jump करता है।
उदाहरण:

Current time: 0 ns  

Next event: 5 ns (clk toggle)

 

Simulator अब 0 ns → 5 ns पर पहुंचता है
और वही पूरी प्रक्रिया फिर से दोहराई जाती है —
signal update → process execution → delta cycle → stabilization।

Simulation End

जब कोई future event बाकी नहीं रहता,
कोई process waiting में नहीं होती,
और कोई signal assignment pending नहीं होता,
तो simulator कहता है —
“No more events to simulate.”
और simulation खत्म हो जाती है।

VHDL simulator छोटे-छोटे invisible steps में काम करता है।
वो पहले signals को update करता है, फिर processes चलाता है,
फिर signals को stabilize करता है, और उसके बाद time को आगे बढ़ाता है।
यह process बार-बार दोहराई जाती है जब तक सब कुछ complete न हो जाए।

इसी कारण VHDL इतना precise है —
यह हर signal change को step by step simulate करता है,
बिलकुल वैसे ही जैसे असली हार्डवेयर में होता है।

Writing testbenches

Coding guidelines

© Copyright 2025 VLSI Mentor. All Rights Reserved.©

Connect with us

  • Instagram
  • Facebook
  • Twitter
  • LinkedIn
  • YouTube
bottom of page