🔍 Exploring Clock Sequences in SystemVerilog Assertions (SVA)🕒
These sequences are pivotal in defining the timing of our assertions in relation to a clock signal.
Learn more in our full course on sva, 📞 contact to book -
https://api.whatsapp.com/send/?phone=919817182494&text=Hi+vlsideepdive%2C+I+have+a+query&type=phone_number&app_absent=0
Let's break down the different types:
1️⃣ Single Clock Sequences: The basics, where assertions are evaluated with respect to a single clock. 🔄 It's straightforward yet powerful for most scenarios.
property p;
@(posedge clk) (signal1 == 1'b1);
endproperty
2️⃣ Multi-Clock Sequences: When you're juggling between different clock domains, this is your go-to. 🕰️ It adds complexity but is crucial for verifying interactions across varied clock domains.
property p;
@(posedge clk1) a ##1 @(posedge clk2) b;
endproperty
3️⃣ Gated Clock Sequences: Perfect for power-aware designs, where the clock is conditional. ⏱️ It highlights how we can be smart about power consumption.
property p;
@(posedge clk && enable) (signal1 == 1'b1);
endproperty
4️⃣ Non-Overlapping Sequences: To ensure certain conditions never clash across cycles. ⚠️ Ideal for verifying state machines or protocol handshakes.
property p;
@(posedge clk) (a ##1 !a);
endproperty
5️⃣ Cumulative Sequences: For those conditions that span several cycles. 🔄 A great way to accumulate conditions over time.
property p;
@(posedge clk) (a throughout b[*3]);
endproperty
#SystemVerilog #HardwareVerification #Engineering #TechTalk #SVAssertions #sva