Does the @ (*) block always mean?

I have google, but still understand. If I write the following code:

module POLY(CLK,RESET_n,IN_VALID,IN,OUT_VALID,OUT); input CLK,RESET_n,IN_VALID; input [ 3:0] IN; output OUT_VALID; output [12:0] OUT; 

and then use it.

 always @(*) begin ......... end 

1. Does this mean that input CLK,RESET_n,IN_VALID;input [ 3:0] IN; will always call the block or only the input that was used in the block will always call the block?

2. But he does not write posedge or negedge, so will both edges always cause a block or not?

thanks in advance.

+4
source share
2 answers

(*) means "create a sensitivity list for me."

For example, if you have a = b + c; , then you want a change every time b or c changes. In other words, a β€œsensitive” to b and c . So, to install this:

 always @( b or c ) begin a = b + c; end 

But imagine that you had a large always block, sensitive to signal loads. Writing a sensitivity list will take a long time. In fact, if you accidentally leave a signal, the behavior can also change! Therefore, (*) is a shorthand for solving these problems.

+13
source

It will behave like combinational logic.

-1
source

All Articles