-
Notifications
You must be signed in to change notification settings - Fork 778
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
[pinmux,top_earlgrey] Add ScanClock role to SPI_DEV_CLK and filter from flop inputs during DFT #23791
Conversation
819dfe8
to
56bbef2
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
hw/ip/pinmux/rtl/pinmux.sv
Outdated
for (int k = 0; k < NDioPads; k++) begin | ||
dio_wkup_no_scan[k] = dio_in_i[k]; | ||
if (prim_mubi_pkg::mubi4_test_true_strict(scanmode_i) && | ||
TargetCfg.dio_scan_role[k] == ScanClock) begin |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: to make it easier for DV to cover, we may want to formulate this as a generate loop for the static stuff, and then use a ternary or an always_comb if inside that for scanmode_i.
for (int k = 0; k < NDioPads; k++) begin : gen_miodio
if (TargetCfg.dio_scan_role[k] == ScanClock) begin : gen_dio_scan
dio_wkup_no_scan[k] = prim_mubi_pkg::mubi4_test_true_strict(scanmode_i) ? 1'b0 : dio_in_i[k];
end else begin : gen_no_dio_scan
dio_wkup_no_scan[k] = dio_in_i[k];
end
end
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done, thanks!
@meisnere Note this could need changes in partner-provided |
The scan clock cannot be connected to flop inputs. Filter any DIO or MIO that is designated as a scan clock. Signed-off-by: Alexander Williams <[email protected]>
Select SPI_DEV_CLK as scan clock input. Because it is originally a clock anyway, the DIO connects to a minimal amount of flops. An alternate choice might be the EXT_CLK input, which would avoid some of the complex timing constraints already on the SPI_DEV_CLK pad. Signed-off-by: Alexander Williams <[email protected]>
CHANGE AUTHORIZED: hw/ip/pinmux/rtl/pinmux.sv |
1 similar comment
CHANGE AUTHORIZED: hw/ip/pinmux/rtl/pinmux.sv |
The RV_DM block-level test failures are unrelated. They should be fixed in #23803 |
Add a ScanClock role to the scan_role_e enum, then add the scan roles of all pinmux-connected DIOs and MIOs to the pinmux. Filter any DIO or MIO with the ScanClock role from connecting to the wakeup detector flops when scanmode is active.
Use SPI_DEV_CLK as the scan clock.