Преглед на файлове

synchro: allow synchronizer to use I/O input registers

Using I/O input registers improves skew, possibly at the expense of
metastability, but the latter can usually be dealt with by adding
another synchronizer stage if necessary. Do allow overriding this
option, however.
H. Peter Anvin преди 3 години
родител
ревизия
e170347f76
променени са 5 файла, в които са добавени 8 реда и са изтрити 1 реда
  1. BIN
      fpga/output_files/max80.jbc
  2. BIN
      fpga/output_files/max80.jic
  3. BIN
      fpga/output_files/max80.pof
  4. BIN
      fpga/output_files/max80.sof
  5. 8 1
      fpga/synchro.sv

BIN
fpga/output_files/max80.jbc


BIN
fpga/output_files/max80.jic


BIN
fpga/output_files/max80.pof


BIN
fpga/output_files/max80.sof


+ 8 - 1
fpga/synchro.sv

@@ -9,7 +9,10 @@
 // them into a synchronizer chain. No inferring RAMs or anything like that,
 // and pack them close together.
 //
-module synchronizer #(parameter width = 1, parameter stages = 2)
+module synchronizer
+  #(parameter width = 1,
+    parameter stages = 2,
+    parameter ioregs = 1)
    (
     input rst_n,
     input clk,
@@ -26,6 +29,8 @@ module synchronizer #(parameter width = 1, parameter stages = 2)
 `ifdef ALTERA_RESERVED_QIS
    (*
     syn_preserve = 1,
+    dont_replicate = 1,
+    useioff = ~ioregs,
     altera_attribute =
 	{"-name SYNCHRONIZER_IDENTIFICATION FORCED ; ",
 	 "-name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH ", tostr(stages-1)}
@@ -36,6 +41,8 @@ module synchronizer #(parameter width = 1, parameter stages = 2)
 `ifdef ALTERA_RESERVED_QIS
    (*
     syn_preserve = 1,
+    dont_replicate = 1,
+    useioff = 1,
     altera_attribute =
 	{"-name SYNCHRONIZER_IDENTIFICATION AUTO ; ",
 	 "-name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH ", tostr(stages-1)}