Skip to content
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

SDF duplicate MUX IOPATH paths with different delays #1192

Open
cloudxcc opened this issue Jul 10, 2022 · 10 comments
Open

SDF duplicate MUX IOPATH paths with different delays #1192

cloudxcc opened this issue Jul 10, 2022 · 10 comments
Labels
blocked This issue is blocked on a bugfix or enhancement of another repository or tool Skywater PDK This issue is specific to using OpenLane with Sky130 stale No activity for a long time, but no resolution also and can't close

Comments

@cloudxcc
Copy link

Description

The S-> X IOPATH of MUXes are duplicated in the SDF file and have different values:

SDF file snipset:

(CELL
(CELLTYPE "sky130_fd_sc_hd__mux2_2")
(INSTANCE 344)
(DELAY
(ABSOLUTE
(IOPATH A0 X (0.159:0.159:0.159) (0.268:0.268:0.268))
(IOPATH A1 X (0.125:0.125:0.125) (0.243:0.243:0.243))
(IOPATH S X (0.233:0.233:0.233) (0.341:0.341:0.341))
(IOPATH S X (0.163:0.163:0.163) (0.279:0.279:0.279)) <--- second arc with > 60 ps difference
)
)
)

This is most likely true for all MUXes, but not for other cells.

Environment

Tested on latest mpw-7a (but seen it before):
OpenLane f9b5781
PDK version 41c0908b47130d5675ff8484255b43f66463a7d6

Reproduction Material

Latest caravel example:
git clone -b mpw-7a https://github.com/efabless/caravel_user_project caravel_example

Expected behavior

Only one entry per arc.

PS: also wondering why bc:nc:wc numbers are identical at many cells.

@jjcherry56
Copy link

Those are IOPATHs with different COND expressions that for some reason are not printed in the SDF.
The bc:typ:wc values are the same because there is only one process corner and the no min/max slew spread.
Without an explicit testcase (ie, a tcl command file that produces the SDF) I can't help you any further.

@cloudxcc
Copy link
Author

cloudxcc commented Jul 10, 2022

The explicit testcase is given in the text above. Use the actual, mpw-7a, default caravel_example project with all the default scripts that come with it.

git clone -b mpw-7a https://github.com/efabless/caravel_user_project caravel_example

The earliest SDF file I have quick access to is from Dec '21 where I was fooling around with MPW-3. Same problem there, so I guess you can find that issue on any given Openlane SDF file.

@maliberty
Copy link
Member

The expectation is that you will package a standalone test case. See https://github.com/The-OpenROAD-Project/OpenLane/blob/master/docs/source/using_or_issue.md

@donn can help if required.

@jjcherry56
Copy link

It looks like the issue is the sky130 liberty.
cell sky130_fd_sc_hd__mux2_1 has these timing arcs from S -> X
pin ("X") {
direction : "output";
function : "(A0&!S) | (A1&S)";
timing () {
related_pin : "S";
timing_sense : "positive_unate";
timing_type : "combinational";
}
timing () {
related_pin : "S";
timing_sense : "negative_unate";
timing_type : "combinational";
}
}

They should have sdf_cond attributes to label them for the SDF.

@cloudxcc
Copy link
Author

cloudxcc commented Jul 11, 2022

@jjcherry56 Conditions in the SDF file ? Is this possible ?

So I guess that both paths are valid and my STA engine should take the most critical one, right ?

@maliberty
Copy link
Member

There is syntax to support it in SDF:
image

The timing engine will select the right arc. However your SDF is not valid because it lacks the COND statements for the reason Cherry describes above.

@maliberty
Copy link
Member

I opened google/skywater-pdk#382 for this issue.

@mithro @QuantumHD please advise if you will fix this in the upstream repo or not

@mithro
Copy link

mithro commented Jul 12, 2022

Unlikely to happen in the next few weeks. Best bet is to add something to open_pdks temporarily.

@maliberty
Copy link
Member

@RTimothyEdwards @donn I'll leave it to you guys to hack the .lib in open_pdks. This isn't an OR issue.

@jjcherry56 jjcherry56 changed the title Corrupt SDF file (duplicate MUX IOPATH S X paths with different values) SDF duplicate MUX IOPATH paths with different delays Jul 12, 2022
@donn
Copy link
Collaborator

donn commented Jul 13, 2022

@RTimothyEdwards You're up.

@donn donn added Magic/Open PDKs An issue with Magic or the PDK build tool "Open PDKs" blocked This issue is blocked on a bugfix or enhancement of another repository or tool labels Jul 13, 2022
@kareefardi kareefardi added Skywater PDK This issue is specific to using OpenLane with Sky130 stale No activity for a long time, but no resolution also and can't close and removed Magic/Open PDKs An issue with Magic or the PDK build tool "Open PDKs" labels Jul 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
blocked This issue is blocked on a bugfix or enhancement of another repository or tool Skywater PDK This issue is specific to using OpenLane with Sky130 stale No activity for a long time, but no resolution also and can't close
Projects
None yet
Development

No branches or pull requests

6 participants