From 4a347db75afdbad7b7b49b316fedeba1de455c4c 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 | 5 +++-- passes/cmds/stubs.sdc | 23 +++++++++++++++-------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/passes/cmds/sdc.cc b/passes/cmds/sdc.cc index b01cbe025..76b9b95ff 100644 --- a/passes/cmds/sdc.cc +++ b/passes/cmds/sdc.cc @@ -384,7 +384,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 +396,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..a7845b02d 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 sdc_call_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