Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
185 views
in Technique[技术] by (71.8m points)

list - Assignment one item from two?

I've been studying Verilog for a while and recently came across a kind of statement that I do not understand. Here is an example:

reg s_axis_data_tready_reg = 1'b0, s_axis_data_tready_next;

Looks like a concatenation but doesn't have the curly brackets surrounding the two items separated by a comma. This statement compiles with no error. What does this statement do?

question from:https://stackoverflow.com/questions/65854826/assignment-one-item-from-two

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

This statement declares 2 1-bit signals as type reg, and it also initializes one of them to 1'b0 (s_axis_data_tready_reg). The other (s_axis_data_tready_next) has the value x (unknown), which is the default value for a reg.

module tb;

reg s_axis_data_tready_reg = 1'b0, s_axis_data_tready_next;

initial begin
    #1 $display("reg=%b, next=%b", s_axis_data_tready_reg, s_axis_data_tready_next);
end

endmodule

This outputs:

reg=0, next=x

Since it does not use curly braces: {}, it is not a concatenation.

Your single line can be also written as 2 lines:

reg s_axis_data_tready_reg = 1'b0;
reg s_axis_data_tready_next;

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...