-
Notifications
You must be signed in to change notification settings - Fork 236
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Histogram showing negative slack and yet timing passes #1227
Comments
Which version of nextpnr are you running? Not too long ago there was some significant changes in timing reporting. Including a fix that the slack histogram no longer includes async paths. If you are running on a version prior to that change that could explain the histogram you are seeing. The times in the histogram are picoseconds. I tried to check if this is occurring with current master using: module foo(
input wire clk,
input wire [20:0] a,
input wire [20:0] b,
output reg [20:0] out
);
reg [20:0] x;
reg [20:0] y;
always @(posedge clk) begin
x <= a;
y <= b;
out <= x / y;
end
endmodule yosys command: There I don't see any negative slack. |
Just some more testing for my own sanity :), this verilog: module foo(
input wire clk,
input wire [19:0] a,
input wire [19:0] b,
output reg [19:0] out,
output wire [19:0] out2,
);
reg [19:0] x;
reg [19:0] y;
always @(posedge clk) begin
x <= a;
y <= b;
out <= x / y;
end
assign out2 = a / b;
endmodule With commit 88714c5 (prior to the timing engine changes) I get this, notice the negative slack:
With current master I get this:
|
Ah-ha! I'm using an older version I think:
It would be great if the output lists the units as picoseconds |
Yes you are using an older version. I agree with including units in the histogram. |
I am working on a design for an ice40hx device, and while looking at the output of nextpnr, I became a bit confused. I was under the impression that negative slack means I have to slow my clock down and that timing shouldn't pass, but nextpnr is reporting it can run at >100MHz of my requested 80MHz, yet the slack histogram (of unknown units, they really should be listed) shows that there are at least two instances of negative slack. The other delays (async) are all smaller than the 9.8ns routing of the main clock, so I'm not sure what the histogram is actually telling me.
What is this actually showing me, and if it is indeed wrong, does it need to be fixed? And if it isn't wrong, can it be better documented?
The text was updated successfully, but these errors were encountered: