`timescale 1ns/1ns

module seq_circuit(
   input                C   ,
   input                clk ,
   input                rst_n,
 
   output   wire        Y   
);

    reg [1:0]cur_state;
    reg [1:0]nex_state;

    always@(posedge clk or negedge rst_n)begin
        if(!rst_n)begin
            cur_state<=0;
            nex_state<=0;
        end
        else begin
            cur_state<=nex_state;
        end
    end

    always@(*)begin
        case(cur_state)
        2'b00:nex_state=(C==1)?2'b01:2'b00;
        2'b01:nex_state=(C==1)?2'b01:2'b11;
        2'b10:nex_state=(C==1)?2'b10:2'b00;
        2'b11:nex_state=(C==1)?2'b10:2'b11;
        endcase
    end

    assign Y=((cur_state==2'b11)|((cur_state==2'b10)&&(C==1)))?1:0;

endmodule

从这题来看,并不需要在设置一个y_reg存储,应该是因为直接用了assign,而没有用always块,所以可以直接使用,如果设置了反而会报错,如下:

|reg Y_reg; cannot be driven by primitives or continuous assignment.