I have a question about encoders. In one of my classes we had to design a 8 to 3 encoder using verilog. my code is the following. Code (Text): module encoder( S, D, E); input E; //enable input [7:0] D; //input x, y, z output[2:0] S; //ouput reg [2:0] S; always @ (E or D)begin if (E==1) begin case (D) 8'b00000001 : S = 3'b000; 8'b00000010 : S = 3'b001; 8'b00000100 : S = 3'b010; 8'b00001000 : S = 3'b011; 8'b00010000 : S = 3'b100; 8'b00100000 : S = 3'b101; 8'b01000000 : S = 3'b110; 8'b10000000 : S = 3'b111; default :S =3'bx; endcase end end endmodule I simulated my encoder using a functional simulation and the output is shown in the picture attached. I see that there are many delays in the output(shown my the glitches in the graph). My question, is why are these delays really produced. When looking at the logic circuit, every output corresponds to 8 inputs, in which one of them is a 1. I see it's a single step with only one gate delay unless I'm wrong. Then when looking at the priority encoder the delay seems to be higher. Could someone give me some feedback on this?