3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-08-02 17:30:24 +00:00

sdc: unknown handler experiment

This commit is contained in:
Emil J. Tywoniak 2025-07-30 18:51:14 +02:00
parent f75add5912
commit aab7c75cb3
2 changed files with 19 additions and 10 deletions

View file

@ -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<SdcObjects>(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);
@ -397,6 +398,7 @@ struct SdcPass : public Pass {
// TODO help
SdcPass() : Pass("sdc", "sniff at some SDC") { }
void execute(std::vector<std::string> 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

View file

@ -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
}