We Will Always Have Summer Ending

The Summer I Turned Pretty has come to an end. The Prime Video show's third season was based on We'll Always Have Summer, the third book of Jenny Han’s bestselling trilogy, and concluded on Sept. 17, ...

We Will Always Have Summer Ending 1

The always @() block is sensitive to change of the values all the variables, that is read by always block or we can say which are at the right side inside the always block. In your example, there are no any variables used inside always block, so this always @() block will not work here. As per SV LRM, always_comb is sensitive to changes within the contents of a function, whereas always @* is ...

We Will Always Have Summer Ending 2

So, always use "always @*" or better yet "always_comb" and forget about the concept of sensitivity lists. If the item in the code is evaluated it will trigger the process. Simple as that. It an item is in an if/else, a case, assigned to a variable, or anything else, it will be "evaluated" and thus cause the process to be triggered.

Finally, getting back to your original question, initial and always procedural processes accept a single statement. You need to use begin/end or fork/join` to have multiple statements.

We Will Always Have Summer Ending 4

6 I came to know that we can use assign statements in procedural blocks (like in always), what will be the difference in using "assign" inside always block and outside it (in concern with synthesized circuit). I mean when it is absolutely necessary to use assign in always?

We Will Always Have Summer Ending 5

The (*) means "build the sensitivity list for me". For example, if you had a statement a = b + c; then you'd want a to change every time either b or c changes. In other words, a is "sensitive" to b & c. So to set this up: always @( b or c ) begin a = b + c; end But imagine you had a large always block that was sensitive to loads of signals. Writing the sensitivity list would take ages. In fact ...