http://japanese.sugawara-systems.com/systemverilog/verilog_faqs.htm
else 文は、最も最近のif とペアになります
always @(negedge reset_n or posedge clk ) begin if(~reset_n) s_reg <= 8'h00; else if (rio) if (adr_hit ) s_reg <= 8'h01; else if (wt_pls) if (d ) s_reg <= 8'h01; else s_reg <= 8'h02; end
↑は↓と解釈される。
always @(negedge reset_n or posedge clk ) begin if(~reset_n) s_reg <= 8'h00; else if (rio) if (adr_hit ) s_reg <= 8'h01; else if (wt_pls) if (d ) s_reg <= 8'h01; else s_reg <= 8'h02; end
意図したように動かすには、begin -end を適切に挿入するしかありません。 ↓
always @(negedge reset_n or posedge clk ) begin if(~reset_n) s_reg <= 8'h00; else if (rio) begin if (adr_hit ) s_reg <= 8'h01; end else if (wt_pls) begin if (d ) s_reg <= 8'h01; end else s_reg <= 8'h02; end