diff --git a/sdc-plugin/clocks.cc b/sdc-plugin/clocks.cc
index 6bf4eb1..06c1933 100644
--- a/sdc-plugin/clocks.cc
+++ b/sdc-plugin/clocks.cc
@@ -141,6 +141,23 @@
     }
 }
 
+void Clocks::WriteSdc(std::ostream& file) {
+    for (auto& clock : clocks_) {
+	auto clock_wires = clock.second.GetClockWires();
+	file << "create_clock";
+	for (auto clock_wire : clock_wires) {
+	   file << " -period " << clock_wire.Period();
+	   if (clock_wires.size() > 1) {
+	       file << " -name " << clock.first;
+	   }
+	}
+	    /* log("create_clock -period %f -name %s -waveform {%f %f} %s\n", */
+	    /*     clock_wire.Period(), clock.first.c_str(), */
+	    /*     clock_wire.RisingEdge(), clock_wire.FallingEdge(), */
+	    /*     clock_wire.WireName().c_str()); */
+    }
+}
+
 Clock::Clock(const std::string& name, RTLIL::Wire* wire, float period,
              float rising_edge, float falling_edge)
     : name_(name) {
diff --git a/sdc-plugin/clocks.h b/sdc-plugin/clocks.h
index e17543e..1fdce01 100644
--- a/sdc-plugin/clocks.h
+++ b/sdc-plugin/clocks.h
@@ -78,6 +78,7 @@
     void Propagate(NaturalPropagation* pass);
     void Propagate(BufferPropagation* pass);
     void Propagate(ClockDividerPropagation* pass);
+    void WriteSdc(std::ostream& file);
 
    private:
     std::unordered_map<std::string, Clock> clocks_;
diff --git a/sdc-plugin/sdc.cc b/sdc-plugin/sdc.cc
index f44020d..e344acb 100644
--- a/sdc-plugin/sdc.cc
+++ b/sdc-plugin/sdc.cc
@@ -30,7 +30,6 @@
     ReadSdcCmd() : Frontend("sdc", "Read SDC file") {}
 
     void help() override {
-	//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 	log("\n");
 	log("    read_sdc <filename>\n");
 	log("\n");
@@ -57,6 +56,31 @@
     }
 };
 
+struct WriteSdcCmd : public Backend {
+    WriteSdcCmd(Clocks& clocks)
+        : Backend("sdc", "Write SDC file"), clocks_(clocks) {}
+
+    void help() override {
+	log("\n");
+	log("    write_sdc <filename>\n");
+	log("\n");
+	log("Write SDC file.\n");
+	log("\n");
+    }
+
+    void execute(std::ostream*& f, std::string filename,
+                 std::vector<std::string> args, RTLIL::Design*) override {
+	if (args.size() < 2) {
+	    log_cmd_error("Missing output file.\n");
+	}
+	log("\nWriting out clock constraints file(SDC)\n\n");
+	extra_args(f, filename, args, 1);
+	clocks_.WriteSdc(*f);
+    }
+
+    Clocks& clocks_;
+};
+
 struct CreateClockCmd : public Pass {
     CreateClockCmd(Clocks& clocks)
         : Pass("create_clock", "Create clock object"), clocks_(clocks) {}
@@ -215,13 +239,15 @@
 class SdcPlugin {
    public:
     SdcPlugin()
-        : create_clock_cmd_(clocks_),
+        : write_sdc_cmd_(clocks_),
+	  create_clock_cmd_(clocks_),
           get_clocks_cmd_(clocks_),
           propagate_clocks_cmd_(clocks_) {
 	log("Loaded SDC plugin\n");
     }
 
     ReadSdcCmd read_sdc_cmd_;
+    WriteSdcCmd write_sdc_cmd_;
     CreateClockCmd create_clock_cmd_;
     GetClocksCmd get_clocks_cmd_;
     PropagateClocksCmd propagate_clocks_cmd_;
