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:
parent
f75add5912
commit
aab7c75cb3
2 changed files with 19 additions and 10 deletions
|
@ -266,6 +266,7 @@ static int sdc_get_ports_cmd(ClientData data, Tcl_Interp *interp, int objc, Tcl_
|
||||||
for (auto pat : patterns) {
|
for (auto pat : patterns) {
|
||||||
bool found = false;
|
bool found = false;
|
||||||
for (auto name : objects->design_ports) {
|
for (auto name : objects->design_ports) {
|
||||||
|
log("design port .%s. pat .%s.\n", name.c_str(), pat.c_str());
|
||||||
if (matches(name, pat, config)) {
|
if (matches(name, pat, config)) {
|
||||||
found = true;
|
found = true;
|
||||||
resolved.push_back(name);
|
resolved.push_back(name);
|
||||||
|
@ -384,7 +385,7 @@ public:
|
||||||
log_error("Tcl_Init() call failed - %s\n",Tcl_ErrnoMsg(Tcl_GetErrno()));
|
log_error("Tcl_Init() call failed - %s\n",Tcl_ErrnoMsg(Tcl_GetErrno()));
|
||||||
|
|
||||||
objects = std::make_unique<SdcObjects>(design);
|
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_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, "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);
|
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 {
|
struct SdcPass : public Pass {
|
||||||
// TODO help
|
// TODO help
|
||||||
SdcPass() : Pass("sdc", "sniff at some SDC") { }
|
SdcPass() : Pass("sdc", "sniff at some SDC") { }
|
||||||
void execute(std::vector<std::string> args, RTLIL::Design *design) override {
|
void execute(std::vector<std::string> args, RTLIL::Design *design) override {
|
||||||
|
log_header(design, "Executing SDC pass.\n");
|
||||||
// if (args.size() < 2)
|
// if (args.size() < 2)
|
||||||
// log_cmd_error("Missing SDC file.\n");
|
// log_cmd_error("Missing SDC file.\n");
|
||||||
// TODO optional extra stub file
|
// TODO optional extra stub file
|
||||||
|
|
|
@ -7,15 +7,22 @@ proc is_suppressed {args} {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
proc create_clock {args} {
|
# stub current_design
|
||||||
return "CLOCK@"
|
|
||||||
}
|
|
||||||
proc get_clocks {args} {
|
|
||||||
return "CLOCK@"
|
|
||||||
}
|
|
||||||
|
|
||||||
stub current_design
|
|
||||||
#stub ys_track_typed_key
|
#stub ys_track_typed_key
|
||||||
stub ys_track_untyped_key
|
stub ys_track_untyped_key
|
||||||
stub ys_err_key
|
stub ys_err_key
|
||||||
stub ys_err_flag
|
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
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue