Skip to content

Switch NVDLA partition_o inter-clock SDC from set_false_path to set_clock_groups -asynchronous #70

@mguthaus

Description

@mguthaus

Background

partition_o is the only NVDLA partition with two clocks: nvdla_core_clk (2000 ps) and nvdla_falcon_clk (2500 ps). The SDC that landed in #68 uses the closed-PR wording:

set_false_path -from [get_clocks nvdla_core_clk] -to [get_clocks nvdla_falcon_clk]
set_false_path -from [get_clocks nvdla_falcon_clk] -to [get_clocks nvdla_core_clk]

This passes end-to-end on Nautilus (15639 s to GDS), but the idiomatic form for asynchronous clock domains in OpenROAD's STA is:

set_clock_groups -asynchronous \
    -group [get_clocks nvdla_core_clk] \
    -group [get_clocks nvdla_falcon_clk]

set_clock_groups -asynchronous is a single declaration that disables timing between the groups in both directions. It's what CTS/STA look for to decide the clocks are asynchronous — the two set_false_path pairs are functionally equivalent for timing checks but don't always get interpreted the same way by clock-tree optimization.

Task

Swap partition_o's SDC over to set_clock_groups -asynchronous and confirm the flow still closes cleanly.

Acceptance

  • bazel build //designs/asap7/NVDLA/partition_o:partition_o_final completes cleanly.
  • Timing report shows the two clocks in separate asynchronous groups (not just flagged as false paths between each other).
  • No QoR regression (runtime, area, timing, power within ~1% of baseline).

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions