OpenROAD icon indicating copy to clipboard operation
OpenROAD copied to clipboard

bazel: remove the manual tag for tests marked MANUAL_FOR_BAZEL_TESTS

Open hongted opened this issue 2 months ago • 5 comments

Description

Due to differences in compilers, stdlibs, unordered map/set iteration, floating point order of operations, etc... the same program compiled using bazel may generate different results than that of cmake. This causes certain tests that rely on the exact 1-1 output to determine their passing criteria to fail when run under bazel test vs ctest.

These tests have been marked as MANUAL_FOR_BAZEL_TESTS -- https://github.com/search?q=repo%3AThe-OpenROAD-Project%2FOpenROAD%20MANUAL_FOR_BAZEL_TESTS&type=code

This issue is to track the progress in root-causing the difference, and updating the code to minimize and ideally remove the difference.

Suggested Solution

No response

Additional Context

No response

hongted avatar Oct 10 '25 23:10 hongted

Tests that are marked as MANUAL_FOR_BAZEL_TESTS:

//test:upf_test
//src/drt/test:drc_test-tcl_test
//src/drt/test:ispd18_sample-tcl_test
//src/drt/test:ispd18_sample_incr-tcl_test
//src/drt/test:ndr_vias1-tcl_test
//src/drt/test:ndr_vias2-tcl_test
//src/drt/test:ndr_vias3-tcl_test
//src/drt/test:single_step-tcl_test
//src/drt/test:top_level_term2-tcl_test
//src/gpl/test:incremental02-tcl_test
//src/grt/test:cugr_adjustment1-tcl_test
//src/grt/test:cugr_adjustment2-tcl_test
//src/grt/test:cugr_adjustment3-tcl_test
//src/grt/test:gcd_cugr-tcl_test
//src/odb/test:dump_netlists-tcl_test
//src/odb/test:dump_netlists_withfill-tcl_test
//src/pad/test:rdl_route_single_target-tcl_test
//src/par/test:partition_gcd-tcl_test
//src/par/test:write_artnet-tcl_test
//src/pdn/test:pads_black_parrot-tcl_test
//src/pdn/test:pads_black_parrot_flipchip-tcl_test
//src/pdn/test:pads_black_parrot_flipchip_connect_bumps-tcl_test
//src/pdn/test:pads_black_parrot_flipchip_connect_overpads-tcl_test
//src/pdn/test:pads_black_parrot_offset-tcl_test
//src/rcx/test:net_name_consistency-tcl_test
//src/rmp/test:aes_annealing-tcl_test
//src/rmp/test:gcd_annealing1-tcl_test
//src/rmp/test:gcd_annealing2-tcl_test
//src/rsz/test:liberty_dont_use-tcl_test
//src/rsz/test:report_dont_use-tcl_test
//src/rsz/test:report_dont_use_corners-tcl_test

DONE //test:upf_aes //src/cts/test:array-tcl_test
//src/cts/test:array_ins_delay-tcl_test
//src/cts/test:array_no_blockages-tcl_test
//src/cts/test:array_repair_clock_nets-tcl_test
//src/cts/test:gated_clock4-tcl_test
//src/cts/test:simple_test_hier-tcl_test
//src/dpl/test:aes-tcl_test
//src/dpl/test:cell_on_block2-tcl_test
//src/dpl/test:gcd-tcl_test
//src/dpl/test:ibex-tcl_test
//src/dpl/test:mirror1-tcl_test
//src/dpl/test:obstruction2-tcl_test //src/odb/test:replace_hier_mod1-tcl_test
//src/rsz/test:pinswap_flat-tcl_test
//src/rsz/test:pinswap_hier-tcl_test
//src/rsz/test:repair_fanout1_hier-tcl_test
//src/rsz/test:repair_fanout2_hier-tcl_test
//src/rsz/test:repair_fanout3_hier-tcl_test
//src/rsz/test:repair_setup4_flat-tcl_test
//src/rsz/test:repair_setup4_hier-tcl_test
//src/rsz/test:report_buffers_asap7-tcl_test
//src/rsz/test:split_load_hier-tcl_test

hongted avatar Oct 11 '25 00:10 hongted

Dpl fixed in #8568

maliberty avatar Oct 11 '25 00:10 maliberty

Also these for non-determinism

//src/ram/test/... //src/rsz/test:pin_swap1 //src/rsz/test:repair_tie11_hier-tcl_test //src/rsz/test:repair_tie12_hier-tcl_test //src/rsz/test:resize_slack2-tcl_test

maliberty avatar Oct 22 '25 22:10 maliberty

Some of these differences are due to use of libstdc++ in Cmake/GCC and libc++ by Bazel/LLVM.

Bazel/LLVM can be switched to use the system libstdc++ for select platforms via MODULE.bazel

diff --git a/MODULE.bazel b/MODULE.bazel
index 47c9aa3180..b93d216112 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -118,6 +118,7 @@ bazel_dep(name = "toolchains_llvm", version = "1.5.0")
 llvm = use_extension("@toolchains_llvm//toolchain/extensions:llvm.bzl", "llvm")
 llvm.toolchain(
     llvm_version = "20.1.8",
+    stdlib = {"linux-x86_64" : "dynamic-stdc++"},
 )
 use_repo(llvm, "llvm_toolchain")
 # use_repo(llvm, "llvm_toolchain_llvm") # if you depend on specific tools in scripts

hongted avatar Oct 22 '25 23:10 hongted

//src/pdn/test:pads_black_parrot-tcl_test
//src/pdn/test:pads_black_parrot_flipchip-tcl_test
//src/pdn/test:pads_black_parrot_flipchip_connect_bumps-tcl_test
//src/pdn/test:pads_black_parrot_flipchip_connect_overpads-tcl_test
//src/pdn/test:pads_black_parrot_offset-tcl_test

Prospective fix for those in https://github.com/The-OpenROAD-Project/OpenROAD/pull/8904

povik avatar Nov 26 '25 12:11 povik