mirror of
				https://github.com/YosysHQ/sby.git
				synced 2025-11-04 06:39:11 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			53 lines
		
	
	
	
		
			830 B
		
	
	
	
		
			Systemverilog
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			830 B
		
	
	
	
		
			Systemverilog
		
	
	
	
	
	
module testbench (
 | 
						|
  input clk,
 | 
						|
  input reset,
 | 
						|
  input [7:0] din,
 | 
						|
  output reg [7:0] dout
 | 
						|
);
 | 
						|
  demo uut (
 | 
						|
    .clk  (clk  ),
 | 
						|
    .reset(reset),
 | 
						|
    .din  (din  ),
 | 
						|
    .dout (dout )
 | 
						|
  );
 | 
						|
 | 
						|
  reg init = 1;
 | 
						|
  always @(posedge clk) begin
 | 
						|
    if (init) assume (reset);
 | 
						|
    if (!reset) assert (!dout[1:0]);
 | 
						|
    init <= 0;
 | 
						|
  end
 | 
						|
endmodule
 | 
						|
 | 
						|
module demo (
 | 
						|
  input clk,
 | 
						|
  input reset,
 | 
						|
  input [7:0] din,
 | 
						|
  output reg [7:0] dout
 | 
						|
);
 | 
						|
  reg [7:0] buffer;
 | 
						|
  reg [1:0] state;
 | 
						|
 | 
						|
  always @(posedge clk) begin
 | 
						|
    if (reset) begin
 | 
						|
      dout <= 0;
 | 
						|
      state <= 0;
 | 
						|
    end else
 | 
						|
    case (state)
 | 
						|
      0: begin
 | 
						|
        buffer <= din;
 | 
						|
	state <= 1;
 | 
						|
      end
 | 
						|
      1: begin
 | 
						|
        if (buffer[1:0])
 | 
						|
	  buffer <= buffer + 1;
 | 
						|
	else
 | 
						|
	  state <= 2;
 | 
						|
      end
 | 
						|
      2: begin
 | 
						|
        dout <= dout + buffer;
 | 
						|
	state <= 0;
 | 
						|
      end
 | 
						|
    endcase
 | 
						|
  end
 | 
						|
endmodule
 |