SDC: Check if clock is generated or propagated in get_clocks
Signed-off-by: Tomasz Michalak <tmichalak@antmicro.com>
diff --git a/sdc-plugin/sdc.cc b/sdc-plugin/sdc.cc
index 83fb61b..03f4603 100644
--- a/sdc-plugin/sdc.cc
+++ b/sdc-plugin/sdc.cc
@@ -210,19 +210,11 @@
return port_list;
}
- // TODO Check for GENERATED_CLOCK clock wire attribute
- // Issue https://github.com/SymbiFlow/yosys-symbiflow-plugins/issues/53
- // For now don't treat any of the added clocks as auto-generated
- bool IsGeneratedClock(RTLIL::Wire* clock_wire) {
- (void)clock_wire;
- return false;
- }
-
void execute(std::vector<std::string> args,
RTLIL::Design* design) override {
// Parse command arguments
- bool generated_clocks(false);
+ bool include_generated_clocks(false);
std::vector<std::string> clocks_nets;
size_t argidx(0);
@@ -230,7 +222,7 @@
for (argidx = 1; argidx < args.size(); argidx++) {
std::string arg = args[argidx];
if (arg == "-include_generated_clocks") {
- generated_clocks = true;
+ include_generated_clocks = true;
continue;
}
if (arg == "-of" and argidx + 1 < args.size()) {
@@ -262,8 +254,13 @@
Tcl_Interp* interp = yosys_get_tcl_interp();
Tcl_Obj* tcl_list = Tcl_NewListObj(0, NULL);
for (auto& clock : clocks) {
+ // Skip propagated clocks (i.e. clock wires with the same parameters
+ // as the master clocks they originate from
+ if (Clock::IsPropagated(clock.second)) {
+ continue;
+ }
// Skip generated clocks if -include_generated_clocks is not specified
- if (IsGeneratedClock(clock.second) and !generated_clocks) {
+ if (Clock::IsGenerated(clock.second) and !include_generated_clocks) {
continue;
}
// Check if clock name is in the list of design clocks