From aab7c75cb39e2bfab683f19a5b3689999d642e41 Mon Sep 17 00:00:00 2001 From: "Emil J. Tywoniak" Date: Wed, 30 Jul 2025 18:51:14 +0200 Subject: [PATCH] sdc: unknown handler experiment --- passes/cmds/sdc.cc | 6 ++++-- passes/cmds/stubs.sdc | 23 +++++++++++++++-------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/passes/cmds/sdc.cc b/passes/cmds/sdc.cc index b01cbe025..bdb6ba975 100644 --- a/passes/cmds/sdc.cc +++ b/passes/cmds/sdc.cc @@ -266,6 +266,7 @@ static int sdc_get_ports_cmd(ClientData data, Tcl_Interp *interp, int objc, Tcl_ for (auto pat : patterns) { bool found = false; for (auto name : objects->design_ports) { + log("design port .%s. pat .%s.\n", name.c_str(), pat.c_str()); if (matches(name, pat, config)) { found = true; resolved.push_back(name); @@ -384,7 +385,7 @@ public: log_error("Tcl_Init() call failed - %s\n",Tcl_ErrnoMsg(Tcl_GetErrno())); objects = std::make_unique(design); - objects->collect_mode = SdcObjects::CollectMode::FullConstraint; + objects->collect_mode = SdcObjects::CollectMode::SimpleGetter; Tcl_CreateObjCommand(interp, "get_pins", sdc_get_pins_cmd, (ClientData) objects.get(), NULL); Tcl_CreateObjCommand(interp, "get_ports", sdc_get_ports_cmd, (ClientData) objects.get(), NULL); Tcl_CreateObjCommand(interp, "ys_track_typed_key", ys_track_typed_key_cmd, (ClientData) objects.get(), NULL); @@ -396,7 +397,8 @@ public: struct SdcPass : public Pass { // TODO help SdcPass() : Pass("sdc", "sniff at some SDC") { } - void execute(std::vector args, RTLIL::Design *design) override { +void execute(std::vector args, RTLIL::Design *design) override { + log_header(design, "Executing SDC pass.\n"); // if (args.size() < 2) // log_cmd_error("Missing SDC file.\n"); // TODO optional extra stub file diff --git a/passes/cmds/stubs.sdc b/passes/cmds/stubs.sdc index 3466981c9..cf7c04fd5 100644 --- a/passes/cmds/stubs.sdc +++ b/passes/cmds/stubs.sdc @@ -7,15 +7,22 @@ proc is_suppressed {args} { return 0 } -proc create_clock {args} { - return "CLOCK@" -} -proc get_clocks {args} { - return "CLOCK@" -} - -stub current_design +# stub current_design #stub ys_track_typed_key stub ys_track_untyped_key stub ys_err_key stub ys_err_flag + +proc unknown {args} { + global sdc_call_index + global sdc_calls + if {![info exists index]} { + set sdc_call_index 0 + } + if {![info exists sdc_calls]} { + set sdc_calls {} + } + incr sdc_call_index + lappend sdc_calls $args + return $sdc_call_index +} \ No newline at end of file