build/altera/quartus: allow multiple call of add_period_constraint if constraint...
authorFlorent Kermarrec <florent@enjoy-digital.fr>
Thu, 9 Jan 2020 18:45:51 +0000 (19:45 +0100)
committerFlorent Kermarrec <florent@enjoy-digital.fr>
Thu, 9 Jan 2020 18:45:51 +0000 (19:45 +0100)
Similar to the changes already applied to Xilinx backend.

litex/build/altera/quartus.py

index e8d01c909d477407ac6ee05e74fcc3bebfb86588..b71dfd73de2a17ee6e6e7a6d3e3b79767b314b9b 100644 (file)
@@ -226,9 +226,11 @@ class AlteraQuartusToolchain:
 
     def add_period_constraint(self, platform, clk, period):
         clk.attr.add("keep")
 
     def add_period_constraint(self, platform, clk, period):
         clk.attr.add("keep")
+        period = math.floor(period*1e3)/1e3 # round to lowest picosecond
         if clk in self.clocks:
         if clk in self.clocks:
-            raise ValueError("A period constraint already exists")
-        period = math.floor(period*1e3)/1e3 # Round to lowest picosecond
+            if period != self.clocks[clk]:
+                raise ValueError("Clock already constrained to {:.2f}ns, new constraint to {:.2f}ns"
+                    .format(self.clocks[clk], period))
         self.clocks[clk] = period
 
     def add_false_path_constraint(self, platform, from_, to):
         self.clocks[clk] = period
 
     def add_false_path_constraint(self, platform, from_, to):