Why is this an issue?

Avoiding the use of both the rising and falling edges of a clock signal in the same clock domain for triggering logic is recommended for several reasons:

By using only one edge, you align your design with best practices for timing, stability, and maintainability. If there's a need to use both edges for specific logic, consider using two separate clocks or another method like double data rate (DDR) techniques, which are designed for handling such scenarios with care for timing and power considerations.

How to fix it

Code examples

Noncompliant code example

module clock_both_edges (
	input logic clk,
	input logic rst,
	input logic i1, i2,
	output logic o1, o2
);
  always @(posedge clk)
  begin
      if (rst == 1'b0)
       o1 <= 1'b0;
      else
       o1 <= i1;
  end

  always @(negedge clk)
  begin
      if (rst == 1'b0)
       o2 <= 1'b0;
      else
       o2 <= i2;
  end
endmodule