aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--techlibs/xilinx/cells_sim.v52
-rw-r--r--techlibs/xilinx/cells_xtra.py23
-rw-r--r--techlibs/xilinx/synth_xilinx.cc4
-rw-r--r--techlibs/xilinx/xc6s_cells_xtra.v33
-rw-r--r--techlibs/xilinx/xc6v_cells_xtra.v114
-rw-r--r--techlibs/xilinx/xc7_brams_bb.v16
-rw-r--r--techlibs/xilinx/xc7_cells_xtra.v194
-rw-r--r--techlibs/xilinx/xcu_cells_xtra.v156
8 files changed, 502 insertions, 90 deletions
diff --git a/techlibs/xilinx/cells_sim.v b/techlibs/xilinx/cells_sim.v
index 6e8729256..ef4340d10 100644
--- a/techlibs/xilinx/cells_sim.v
+++ b/techlibs/xilinx/cells_sim.v
@@ -60,9 +60,18 @@ module BUFGCTRL(
(* clkbuf_driver *)
output O,
input I0, input I1,
- input S0, input S1,
- input CE0, input CE1,
- input IGNORE0, input IGNORE1);
+ (* invertible_pin = "IS_S0_INVERTED" *)
+ input S0,
+ (* invertible_pin = "IS_S1_INVERTED" *)
+ input S1,
+ (* invertible_pin = "IS_CE0_INVERTED" *)
+ input CE0,
+ (* invertible_pin = "IS_CE1_INVERTED" *)
+ input CE1,
+ (* invertible_pin = "IS_IGNORE0_INVERTED" *)
+ input IGNORE0,
+ (* invertible_pin = "IS_IGNORE1_INVERTED" *)
+ input IGNORE1);
parameter [0:0] INIT_OUT = 1'b0;
parameter PRESELECT_I0 = "FALSE";
@@ -87,6 +96,7 @@ module BUFHCE(
(* clkbuf_driver *)
output O,
input I,
+ (* invertible_pin = "IS_CE_INVERTED" *)
input CE);
parameter [0:0] INIT_OUT = 1'b0;
@@ -234,8 +244,13 @@ module FDRE (
(* abc_arrival=303 *)
output reg Q,
(* clkbuf_sink *)
- input C,
- input CE, D, R
+ (* invertible_pin = "IS_C_INVERTED" *)
+ input C,
+ input CE,
+ (* invertible_pin = "IS_D_INVERTED" *)
+ input D,
+ (* invertible_pin = "IS_R_INVERTED" *)
+ input R
);
parameter [0:0] INIT = 1'b0;
parameter [0:0] IS_C_INVERTED = 1'b0;
@@ -252,8 +267,13 @@ module FDSE (
(* abc_arrival=303 *)
output reg Q,
(* clkbuf_sink *)
+ (* invertible_pin = "IS_C_INVERTED" *)
input C,
- input CE, D, S
+ input CE,
+ (* invertible_pin = "IS_D_INVERTED" *)
+ input D,
+ (* invertible_pin = "IS_S_INVERTED" *)
+ input S
);
parameter [0:0] INIT = 1'b1;
parameter [0:0] IS_C_INVERTED = 1'b0;
@@ -270,8 +290,13 @@ module FDCE (
(* abc_arrival=303 *)
output reg Q,
(* clkbuf_sink *)
+ (* invertible_pin = "IS_C_INVERTED" *)
input C,
- input CE, D, CLR
+ input CE,
+ (* invertible_pin = "IS_D_INVERTED" *)
+ input D,
+ (* invertible_pin = "IS_CLR_INVERTED" *)
+ input CLR
);
parameter [0:0] INIT = 1'b0;
parameter [0:0] IS_C_INVERTED = 1'b0;
@@ -290,8 +315,13 @@ module FDPE (
(* abc_arrival=303 *)
output reg Q,
(* clkbuf_sink *)
+ (* invertible_pin = "IS_C_INVERTED" *)
input C,
- input CE, D, PRE
+ input CE,
+ (* invertible_pin = "IS_D_INVERTED" *)
+ input D,
+ (* invertible_pin = "IS_PRE_INVERTED" *)
+ input PRE
);
parameter [0:0] INIT = 1'b1;
parameter [0:0] IS_C_INVERTED = 1'b0;
@@ -360,6 +390,7 @@ module RAM32X1D (
output DPO, SPO,
input D,
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK,
input WE,
input A0, A1, A2, A3, A4,
@@ -382,6 +413,7 @@ module RAM64X1D (
output DPO, SPO,
input D,
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK,
input WE,
input A0, A1, A2, A3, A4, A5,
@@ -404,6 +436,7 @@ module RAM128X1D (
output DPO, SPO,
input D,
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK,
input WE,
input [6:0] A, DPRA
@@ -423,6 +456,7 @@ module SRL16E (
output Q,
input A0, A1, A2, A3, CE,
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLK_INVERTED" *)
input CLK,
input D
);
@@ -445,6 +479,7 @@ module SRLC16E (
output Q15,
input A0, A1, A2, A3, CE,
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLK_INVERTED" *)
input CLK,
input D
);
@@ -472,6 +507,7 @@ module SRLC32E (
input [4:0] A,
input CE,
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLK_INVERTED" *)
input CLK,
input D
);
diff --git a/techlibs/xilinx/cells_xtra.py b/techlibs/xilinx/cells_xtra.py
index 4915f2a3e..561a61943 100644
--- a/techlibs/xilinx/cells_xtra.py
+++ b/techlibs/xilinx/cells_xtra.py
@@ -5,6 +5,7 @@ from io import StringIO
from enum import Enum, auto
import os.path
import sys
+import re
class Cell:
@@ -585,6 +586,8 @@ def xtract_cell_decl(cell, dirs, outf):
state = State.OUTSIDE
found = False
# Probably the most horrible Verilog "parser" ever written.
+ module_ports = []
+ invertible_ports = set()
for l in f:
l = l.partition('//')[0]
l = l.strip()
@@ -619,6 +622,15 @@ def xtract_cell_decl(cell, dirs, outf):
state = State.IN_MODULE
elif l == 'endmodule':
if state == State.IN_MODULE:
+ for kind, rng, port in module_ports:
+ for attr in cell.port_attrs.get(port, []):
+ outf.write(' (* {} *)\n'.format(attr))
+ if port in invertible_ports:
+ outf.write(' (* invertible_pin = "IS_{}_INVERTED" *)\n'.format(port))
+ if rng is None:
+ outf.write(' {} {};\n'.format(kind, port))
+ else:
+ outf.write(' {} {} {};\n'.format(kind, rng, port))
outf.write(l + '\n')
outf.write('\n')
elif state != State.IN_OTHER_MODULE:
@@ -634,9 +646,11 @@ def xtract_cell_decl(cell, dirs, outf):
kind, _, ports = l.partition(' ')
for port in ports.split(','):
port = port.strip()
- for attr in cell.port_attrs.get(port, []):
- outf.write(' (* {} *)\n'.format(attr))
- outf.write(' {} {};\n'.format(kind, port))
+ if port.startswith('['):
+ rng, port = port.split()
+ else:
+ rng = None
+ module_ports.append((kind, rng, port))
elif l.startswith('parameter ') and state == State.IN_MODULE:
if 'UNPLACED' in l:
continue
@@ -648,6 +662,9 @@ def xtract_cell_decl(cell, dirs, outf):
print('Weird parameter line in {} [{}].'.format(fname, l))
sys.exit(1)
outf.write(' {};\n'.format(l))
+ match = re.search('IS_([a-zA-Z0-9_]+)_INVERTED', l)
+ if match:
+ invertible_ports.add(match[1])
if state != State.OUTSIDE:
print('endmodule not found in {}.'.format(fname))
sys.exit(1)
diff --git a/techlibs/xilinx/synth_xilinx.cc b/techlibs/xilinx/synth_xilinx.cc
index 7467e024c..173841799 100644
--- a/techlibs/xilinx/synth_xilinx.cc
+++ b/techlibs/xilinx/synth_xilinx.cc
@@ -485,8 +485,10 @@ struct SynthXilinxPass : public ScriptPass
else
run("clkbufmap -buf BUFG O:I");
}
- if (do_iopad)
+ if (help_mode || do_iopad)
run("iopadmap -bits -outpad OBUF I:O -inpad IBUF O:I A:top", "(only if '-iopad' or '-ise' and not '-noiopad')");
+ if (help_mode || ise)
+ run("extractinv -inv INV O:I", "(only if '-ise')");
}
if (check_label("check")) {
diff --git a/techlibs/xilinx/xc6s_cells_xtra.v b/techlibs/xilinx/xc6s_cells_xtra.v
index edf5739d6..014e73df0 100644
--- a/techlibs/xilinx/xc6s_cells_xtra.v
+++ b/techlibs/xilinx/xc6s_cells_xtra.v
@@ -559,7 +559,9 @@ module BUFGCE (...);
parameter [0:0] IS_I_INVERTED = 1'b0;
(* clkbuf_driver *)
output O;
+ (* invertible_pin = "IS_CE_INVERTED" *)
input CE;
+ (* invertible_pin = "IS_I_INVERTED" *)
input I;
endmodule
@@ -743,6 +745,7 @@ endmodule
(* keep *)
module BSCAN_SPARTAN6 (...);
+ parameter integer JTAG_CHAIN = 1;
output CAPTURE;
output DRCK;
output RESET;
@@ -754,7 +757,6 @@ module BSCAN_SPARTAN6 (...);
output TMS;
output UPDATE;
input TDO;
- parameter integer JTAG_CHAIN = 1;
endmodule
module DNA_PORT (...);
@@ -1558,6 +1560,7 @@ module RAM128X1S (...);
input A6;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -1569,6 +1572,7 @@ module RAM256X1S (...);
input [7:0] A;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -1592,6 +1596,7 @@ module RAM32M (...);
input [1:0] DIC;
input [1:0] DID;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -1607,6 +1612,7 @@ module RAM32X1S (...);
input A4;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -1622,6 +1628,7 @@ module RAM32X1S_1 (...);
input A4;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -1640,6 +1647,7 @@ module RAM32X2S (...);
input D0;
input D1;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -1663,6 +1671,7 @@ module RAM64M (...);
input DIC;
input DID;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -1679,6 +1688,7 @@ module RAM64X1S (...);
input A5;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -1695,6 +1705,7 @@ module RAM64X1S_1 (...);
input A5;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -1714,6 +1725,7 @@ module RAM64X2S (...);
input D0;
input D1;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -1765,6 +1777,10 @@ module ROM64X1 (...);
endmodule
module IDDR2 (...);
+ parameter DDR_ALIGNMENT = "NONE";
+ parameter [0:0] INIT_Q0 = 1'b0;
+ parameter [0:0] INIT_Q1 = 1'b0;
+ parameter SRTYPE = "SYNC";
output Q0;
output Q1;
(* clkbuf_sink *)
@@ -1775,10 +1791,6 @@ module IDDR2 (...);
input D;
input R;
input S;
- parameter DDR_ALIGNMENT = "NONE";
- parameter [0:0] INIT_Q0 = 1'b0;
- parameter [0:0] INIT_Q1 = 1'b0;
- parameter SRTYPE = "SYNC";
endmodule
module LDCE (...);
@@ -1788,8 +1800,10 @@ module LDCE (...);
parameter MSGON = "TRUE";
parameter XON = "TRUE";
output Q;
+ (* invertible_pin = "IS_CLR_INVERTED" *)
input CLR;
input D;
+ (* invertible_pin = "IS_G_INVERTED" *)
input G;
input GE;
endmodule
@@ -1802,12 +1816,17 @@ module LDPE (...);
parameter XON = "TRUE";
output Q;
input D;
+ (* invertible_pin = "IS_G_INVERTED" *)
input G;
input GE;
+ (* invertible_pin = "IS_PRE_INVERTED" *)
input PRE;
endmodule
module ODDR2 (...);
+ parameter DDR_ALIGNMENT = "NONE";
+ parameter [0:0] INIT = 1'b0;
+ parameter SRTYPE = "SYNC";
output Q;
(* clkbuf_sink *)
input C0;
@@ -1818,9 +1837,6 @@ module ODDR2 (...);
input D1;
input R;
input S;
- parameter DDR_ALIGNMENT = "NONE";
- parameter [0:0] INIT = 1'b0;
- parameter SRTYPE = "SYNC";
endmodule
module CFGLUT5 (...);
@@ -1837,6 +1853,7 @@ module CFGLUT5 (...);
input CDI;
input CE;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLK_INVERTED" *)
input CLK;
endmodule
diff --git a/techlibs/xilinx/xc6v_cells_xtra.v b/techlibs/xilinx/xc6v_cells_xtra.v
index 3e2336eda..263bcc69d 100644
--- a/techlibs/xilinx/xc6v_cells_xtra.v
+++ b/techlibs/xilinx/xc6v_cells_xtra.v
@@ -596,29 +596,6 @@ module PCIE_2_0 (...);
endmodule
module SYSMON (...);
- output BUSY;
- output DRDY;
- output EOC;
- output EOS;
- output JTAGBUSY;
- output JTAGLOCKED;
- output JTAGMODIFIED;
- output OT;
- output [15:0] DO;
- output [2:0] ALM;
- output [4:0] CHANNEL;
- input CONVST;
- input CONVSTCLK;
- input DCLK;
- input DEN;
- input DWE;
- input RESET;
- input VN;
- input VP;
- input [15:0] DI;
- input [15:0] VAUXN;
- input [15:0] VAUXP;
- input [6:0] DADDR;
parameter [15:0] INIT_40 = 16'h0;
parameter [15:0] INIT_41 = 16'h0;
parameter [15:0] INIT_42 = 16'h0800;
@@ -645,6 +622,29 @@ module SYSMON (...);
parameter [15:0] INIT_57 = 16'h0;
parameter SIM_DEVICE = "VIRTEX5";
parameter SIM_MONITOR_FILE = "design.txt";
+ output BUSY;
+ output DRDY;
+ output EOC;
+ output EOS;
+ output JTAGBUSY;
+ output JTAGLOCKED;
+ output JTAGMODIFIED;
+ output OT;
+ output [15:0] DO;
+ output [2:0] ALM;
+ output [4:0] CHANNEL;
+ input CONVST;
+ input CONVSTCLK;
+ input DCLK;
+ input DEN;
+ input DWE;
+ input RESET;
+ input VN;
+ input VP;
+ input [15:0] DI;
+ input [15:0] VAUXN;
+ input [15:0] VAUXP;
+ input [6:0] DADDR;
endmodule
module DSP48E1 (...);
@@ -691,11 +691,13 @@ module DSP48E1 (...);
output UNDERFLOW;
input [29:0] A;
input [29:0] ACIN;
+ (* invertible_pin = "IS_ALUMODE_INVERTED" *)
input [3:0] ALUMODE;
input [17:0] B;
input [17:0] BCIN;
input [47:0] C;
input CARRYCASCIN;
+ (* invertible_pin = "IS_CARRYIN_INVERTED" *)
input CARRYIN;
input [2:0] CARRYINSEL;
input CEA1;
@@ -712,10 +714,13 @@ module DSP48E1 (...);
input CEM;
input CEP;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLK_INVERTED" *)
input CLK;
input [24:0] D;
+ (* invertible_pin = "IS_INMODE_INVERTED" *)
input [4:0] INMODE;
input MULTSIGNIN;
+ (* invertible_pin = "IS_OPMODE_INVERTED" *)
input [6:0] OPMODE;
input [47:0] PCIN;
input RSTA;
@@ -736,7 +741,9 @@ module BUFGCE (...);
parameter [0:0] IS_I_INVERTED = 1'b0;
(* clkbuf_driver *)
output O;
+ (* invertible_pin = "IS_CE_INVERTED" *)
input CE;
+ (* invertible_pin = "IS_I_INVERTED" *)
input I;
endmodule
@@ -794,13 +801,13 @@ module BUFIODQS (...);
endmodule
module BUFR (...);
+ parameter BUFR_DIVIDE = "BYPASS";
+ parameter SIM_DEVICE = "7SERIES";
(* clkbuf_driver *)
output O;
input CE;
input CLR;
input I;
- parameter BUFR_DIVIDE = "BYPASS";
- parameter SIM_DEVICE = "7SERIES";
endmodule
module IBUFDS_GTXE1 (...);
@@ -952,6 +959,8 @@ endmodule
(* keep *)
module BSCAN_VIRTEX6 (...);
+ parameter DISABLE_JTAG = "FALSE";
+ parameter integer JTAG_CHAIN = 1;
output CAPTURE;
output DRCK;
output RESET;
@@ -963,15 +972,13 @@ module BSCAN_VIRTEX6 (...);
output TMS;
output UPDATE;
input TDO;
- parameter DISABLE_JTAG = "FALSE";
- parameter integer JTAG_CHAIN = 1;
endmodule
(* keep *)
module CAPTURE_VIRTEX6 (...);
+ parameter ONESHOT = "TRUE";
input CAP;
input CLK;
- parameter ONESHOT = "TRUE";
endmodule
module DNA_PORT (...);
@@ -2299,13 +2306,19 @@ module FIFO18E1 (...);
input [31:0] DI;
input [3:0] DIP;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_RDCLK_INVERTED" *)
input RDCLK;
+ (* invertible_pin = "IS_RDEN_INVERTED" *)
input RDEN;
input REGCE;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
+ (* invertible_pin = "IS_RSTREG_INVERTED" *)
input RSTREG;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WRCLK_INVERTED" *)
input WRCLK;
+ (* invertible_pin = "IS_WREN_INVERTED" *)
input WREN;
endmodule
@@ -2346,13 +2359,19 @@ module FIFO36E1 (...);
input INJECTDBITERR;
input INJECTSBITERR;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_RDCLK_INVERTED" *)
input RDCLK;
+ (* invertible_pin = "IS_RDEN_INVERTED" *)
input RDEN;
input REGCE;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
+ (* invertible_pin = "IS_RSTREG_INVERTED" *)
input RSTREG;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WRCLK_INVERTED" *)
input WRCLK;
+ (* invertible_pin = "IS_WREN_INVERTED" *)
input WREN;
endmodule
@@ -2369,6 +2388,7 @@ module RAM128X1S (...);
input A6;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -2380,6 +2400,7 @@ module RAM256X1S (...);
input [7:0] A;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -2403,6 +2424,7 @@ module RAM32M (...);
input [1:0] DIC;
input [1:0] DID;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -2418,6 +2440,7 @@ module RAM32X1S (...);
input A4;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -2433,6 +2456,7 @@ module RAM32X1S_1 (...);
input A4;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -2451,6 +2475,7 @@ module RAM32X2S (...);
input D0;
input D1;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -2474,6 +2499,7 @@ module RAM64M (...);
input DIC;
input DID;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -2490,6 +2516,7 @@ module RAM64X1S (...);
input A5;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -2506,6 +2533,7 @@ module RAM64X1S_1 (...);
input A5;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -2525,6 +2553,7 @@ module RAM64X2S (...);
input D0;
input D1;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -2587,8 +2616,10 @@ module IDDR (...);
output Q1;
output Q2;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_C_INVERTED" *)
input C;
input CE;
+ (* invertible_pin = "IS_D_INVERTED" *)
input D;
input R;
input S;
@@ -2605,10 +2636,13 @@ module IDDR_2CLK (...);
output Q1;
output Q2;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_C_INVERTED" *)
input C;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CB_INVERTED" *)
input CB;
input CE;
+ (* invertible_pin = "IS_D_INVERTED" *)
input D;
input R;
input S;
@@ -2621,8 +2655,10 @@ module LDCE (...);
parameter MSGON = "TRUE";
parameter XON = "TRUE";
output Q;
+ (* invertible_pin = "IS_CLR_INVERTED" *)
input CLR;
input D;
+ (* invertible_pin = "IS_G_INVERTED" *)
input G;
input GE;
endmodule
@@ -2635,20 +2671,14 @@ module LDPE (...);
parameter XON = "TRUE";
output Q;
input D;
+ (* invertible_pin = "IS_G_INVERTED" *)
input G;
input GE;
+ (* invertible_pin = "IS_PRE_INVERTED" *)
input PRE;
endmodule
module ODDR (...);
- output Q;
- (* clkbuf_sink *)
- input C;
- input CE;
- input D1;
- input D2;
- input R;
- input S;
parameter DDR_CLK_EDGE = "OPPOSITE_EDGE";
parameter INIT = 1'b0;
parameter [0:0] IS_C_INVERTED = 1'b0;
@@ -2657,6 +2687,17 @@ module ODDR (...);
parameter SRTYPE = "SYNC";
parameter MSGON = "TRUE";
parameter XON = "TRUE";
+ output Q;
+ (* clkbuf_sink *)
+ (* invertible_pin = "IS_C_INVERTED" *)
+ input C;
+ input CE;
+ (* invertible_pin = "IS_D1_INVERTED" *)
+ input D1;
+ (* invertible_pin = "IS_D2_INVERTED" *)
+ input D2;
+ input R;
+ input S;
endmodule
module CFGLUT5 (...);
@@ -2673,6 +2714,7 @@ module CFGLUT5 (...);
input CDI;
input CE;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLK_INVERTED" *)
input CLK;
endmodule
diff --git a/techlibs/xilinx/xc7_brams_bb.v b/techlibs/xilinx/xc7_brams_bb.v
index 5b40a457d..a28ba5b14 100644
--- a/techlibs/xilinx/xc7_brams_bb.v
+++ b/techlibs/xilinx/xc7_brams_bb.v
@@ -2,16 +2,24 @@
module RAMB18E1 (
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLKARDCLK_INVERTED" *)
input CLKARDCLK,
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLKBWRCLK_INVERTED" *)
input CLKBWRCLK,
+ (* invertible_pin = "IS_ENARDEN_INVERTED" *)
input ENARDEN,
+ (* invertible_pin = "IS_ENBWREN_INVERTED" *)
input ENBWREN,
input REGCEAREGCE,
input REGCEB,
+ (* invertible_pin = "IS_RSTRAMARSTRAM_INVERTED" *)
input RSTRAMARSTRAM,
+ (* invertible_pin = "IS_RSTRAMB_INVERTED" *)
input RSTRAMB,
+ (* invertible_pin = "IS_RSTREGARSTREG_INVERTED" *)
input RSTREGARSTREG,
+ (* invertible_pin = "IS_RSTREGB_INVERTED" *)
input RSTREGB,
input [13:0] ADDRARDADDR,
@@ -132,16 +140,24 @@ endmodule
module RAMB36E1 (
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLKARDCLK_INVERTED" *)
input CLKARDCLK,
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLKBWRCLK_INVERTED" *)
input CLKBWRCLK,
+ (* invertible_pin = "IS_ENARDEN_INVERTED" *)
input ENARDEN,
+ (* invertible_pin = "IS_ENBWREN_INVERTED" *)
input ENBWREN,
input REGCEAREGCE,
input REGCEB,
+ (* invertible_pin = "IS_RSTRAMARSTRAM_INVERTED" *)
input RSTRAMARSTRAM,
+ (* invertible_pin = "IS_RSTRAMB_INVERTED" *)
input RSTRAMB,
+ (* invertible_pin = "IS_RSTREGARSTREG_INVERTED" *)
input RSTREGARSTREG,
+ (* invertible_pin = "IS_RSTREGB_INVERTED" *)
input RSTREGB,
input [15:0] ADDRARDADDR,
diff --git a/techlibs/xilinx/xc7_cells_xtra.v b/techlibs/xilinx/xc7_cells_xtra.v
index e42413153..817932e9f 100644
--- a/techlibs/xilinx/xc7_cells_xtra.v
+++ b/techlibs/xilinx/xc7_cells_xtra.v
@@ -347,20 +347,26 @@ module GTHE2_CHANNEL (...);
output [7:0] RXDISPERR;
output [7:0] RXNOTINTABLE;
input CFGRESET;
+ (* invertible_pin = "IS_CLKRSVD0_INVERTED" *)
input CLKRSVD0;
+ (* invertible_pin = "IS_CLKRSVD1_INVERTED" *)
input CLKRSVD1;
+ (* invertible_pin = "IS_CPLLLOCKDETCLK_INVERTED" *)
input CPLLLOCKDETCLK;
input CPLLLOCKEN;
input CPLLPD;
input CPLLRESET;
input DMONFIFORESET;
+ (* invertible_pin = "IS_DMONITORCLK_INVERTED" *)
input DMONITORCLK;
+ (* invertible_pin = "IS_DRPCLK_INVERTED" *)
input DRPCLK;
input DRPEN;
input DRPWE;
input EYESCANMODE;
input EYESCANRESET;
input EYESCANTRIGGER;
+ (* invertible_pin = "IS_GTGREFCLK_INVERTED" *)
input GTGREFCLK;
input GTHRXN;
input GTHRXP;
@@ -456,9 +462,12 @@ module GTHE2_CHANNEL (...);
input RXSYNCIN;
input RXSYNCMODE;
input RXUSERRDY;
+ (* invertible_pin = "IS_RXUSRCLK2_INVERTED" *)
input RXUSRCLK2;
+ (* invertible_pin = "IS_RXUSRCLK_INVERTED" *)
input RXUSRCLK;
input SETERRSTATUS;
+ (* invertible_pin = "IS_SIGVALIDCLK_INVERTED" *)
input SIGVALIDCLK;
input TX8B10BEN;
input TXCOMINIT;
@@ -481,6 +490,7 @@ module GTHE2_CHANNEL (...);
input TXPHALIGNEN;
input TXPHDLYPD;
input TXPHDLYRESET;
+ (* invertible_pin = "IS_TXPHDLYTSTCLK_INVERTED" *)
input TXPHDLYTSTCLK;
input TXPHINIT;
input TXPHOVRDEN;
@@ -504,7 +514,9 @@ module GTHE2_CHANNEL (...);
input TXSYNCIN;
input TXSYNCMODE;
input TXUSERRDY;
+ (* invertible_pin = "IS_TXUSRCLK2_INVERTED" *)
input TXUSRCLK2;
+ (* invertible_pin = "IS_TXUSRCLK_INVERTED" *)
input TXUSRCLK;
input [13:0] RXADAPTSELTEST;
input [15:0] DRPDI;
@@ -593,9 +605,11 @@ module GTHE2_COMMON (...);
input BGMONITORENB;
input BGPDB;
input BGRCALOVRDENB;
+ (* invertible_pin = "IS_DRPCLK_INVERTED" *)
input DRPCLK;
input DRPEN;
input DRPWE;
+ (* invertible_pin = "IS_GTGREFCLK_INVERTED" *)
input GTGREFCLK;
input GTNORTHREFCLK0;
input GTNORTHREFCLK1;
@@ -603,6 +617,7 @@ module GTHE2_COMMON (...);
input GTREFCLK1;
input GTSOUTHREFCLK0;
input GTSOUTHREFCLK1;
+ (* invertible_pin = "IS_QPLLLOCKDETCLK_INVERTED" *)
input QPLLLOCKDETCLK;
input QPLLLOCKEN;
input QPLLOUTRESET;
@@ -928,10 +943,14 @@ module GTPE2_CHANNEL (...);
output [4:0] RXPHMONITOR;
output [4:0] RXPHSLIPMONITOR;
input CFGRESET;
+ (* invertible_pin = "IS_CLKRSVD0_INVERTED" *)
input CLKRSVD0;
+ (* invertible_pin = "IS_CLKRSVD1_INVERTED" *)
input CLKRSVD1;
input DMONFIFORESET;
+ (* invertible_pin = "IS_DMONITORCLK_INVERTED" *)
input DMONITORCLK;
+ (* invertible_pin = "IS_DRPCLK_INVERTED" *)
input DRPCLK;
input DRPEN;
input DRPWE;
@@ -1005,9 +1024,12 @@ module GTPE2_CHANNEL (...);
input RXSYNCIN;
input RXSYNCMODE;
input RXUSERRDY;
+ (* invertible_pin = "IS_RXUSRCLK2_INVERTED" *)
input RXUSRCLK2;
+ (* invertible_pin = "IS_RXUSRCLK_INVERTED" *)
input RXUSRCLK;
input SETERRSTATUS;
+ (* invertible_pin = "IS_SIGVALIDCLK_INVERTED" *)
input SIGVALIDCLK;
input TX8B10BEN;
input TXCOMINIT;
@@ -1030,6 +1052,7 @@ module GTPE2_CHANNEL (...);
input TXPHALIGNEN;
input TXPHDLYPD;
input TXPHDLYRESET;
+ (* invertible_pin = "IS_TXPHDLYTSTCLK_INVERTED" *)
input TXPHDLYTSTCLK;
input TXPHINIT;
input TXPHOVRDEN;
@@ -1050,7 +1073,9 @@ module GTPE2_CHANNEL (...);
input TXSYNCIN;
input TXSYNCMODE;
input TXUSERRDY;
+ (* invertible_pin = "IS_TXUSRCLK2_INVERTED" *)
input TXUSRCLK2;
+ (* invertible_pin = "IS_TXUSRCLK_INVERTED" *)
input TXUSRCLK;
input [13:0] RXADAPTSELTEST;
input [15:0] DRPDI;
@@ -1139,21 +1164,26 @@ module GTPE2_COMMON (...);
input BGMONITORENB;
input BGPDB;
input BGRCALOVRDENB;
+ (* invertible_pin = "IS_DRPCLK_INVERTED" *)
input DRPCLK;
input DRPEN;
input DRPWE;
input GTEASTREFCLK0;
input GTEASTREFCLK1;
+ (* invertible_pin = "IS_GTGREFCLK0_INVERTED" *)
input GTGREFCLK0;
+ (* invertible_pin = "IS_GTGREFCLK1_INVERTED" *)
input GTGREFCLK1;
input GTREFCLK0;
input GTREFCLK1;
input GTWESTREFCLK0;
input GTWESTREFCLK1;
+ (* invertible_pin = "IS_PLL0LOCKDETCLK_INVERTED" *)
input PLL0LOCKDETCLK;
input PLL0LOCKEN;
input PLL0PD;
input PLL0RESET;
+ (* invertible_pin = "IS_PLL1LOCKDETCLK_INVERTED" *)
input PLL1LOCKDETCLK;
input PLL1LOCKEN;
input PLL1PD;
@@ -1442,16 +1472,19 @@ module GTXE2_CHANNEL (...);
output [7:0] RXNOTINTABLE;
output [9:0] TSTOUT;
input CFGRESET;
+ (* invertible_pin = "IS_CPLLLOCKDETCLK_INVERTED" *)
input CPLLLOCKDETCLK;
input CPLLLOCKEN;
input CPLLPD;
input CPLLRESET;
+ (* invertible_pin = "IS_DRPCLK_INVERTED" *)
input DRPCLK;
input DRPEN;
input DRPWE;
input EYESCANMODE;
input EYESCANRESET;
input EYESCANTRIGGER;
+ (* invertible_pin = "IS_GTGREFCLK_INVERTED" *)
input GTGREFCLK;
input GTNORTHREFCLK0;
input GTNORTHREFCLK1;
@@ -1528,7 +1561,9 @@ module GTXE2_CHANNEL (...);
input RXQPIEN;
input RXSLIDE;
input RXUSERRDY;
+ (* invertible_pin = "IS_RXUSRCLK2_INVERTED" *)
input RXUSRCLK2;
+ (* invertible_pin = "IS_RXUSRCLK_INVERTED" *)
input RXUSRCLK;
input SETERRSTATUS;
input TX8B10BEN;
@@ -1552,6 +1587,7 @@ module GTXE2_CHANNEL (...);
input TXPHALIGNEN;
input TXPHDLYPD;
input TXPHDLYRESET;
+ (* invertible_pin = "IS_TXPHDLYTSTCLK_INVERTED" *)
input TXPHDLYTSTCLK;
input TXPHINIT;
input TXPHOVRDEN;
@@ -1567,7 +1603,9 @@ module GTXE2_CHANNEL (...);
input TXSTARTSEQ;
input TXSWING;
input TXUSERRDY;
+ (* invertible_pin = "IS_TXUSRCLK2_INVERTED" *)
input TXUSRCLK2;
+ (* invertible_pin = "IS_TXUSRCLK_INVERTED" *)
input TXUSRCLK;
input [15:0] DRPDI;
input [15:0] GTRSVD;
@@ -1644,9 +1682,11 @@ module GTXE2_COMMON (...);
input BGBYPASSB;
input BGMONITORENB;
input BGPDB;
+ (* invertible_pin = "IS_DRPCLK_INVERTED" *)
input DRPCLK;
input DRPEN;
input DRPWE;
+ (* invertible_pin = "IS_GTGREFCLK_INVERTED" *)
input GTGREFCLK;
input GTNORTHREFCLK0;
input GTNORTHREFCLK1;
@@ -1654,6 +1694,7 @@ module GTXE2_COMMON (...);
input GTREFCLK1;
input GTSOUTHREFCLK0;
input GTSOUTHREFCLK1;
+ (* invertible_pin = "IS_QPLLLOCKDETCLK_INVERTED" *)
input QPLLLOCKDETCLK;
input QPLLLOCKEN;
input QPLLOUTRESET;
@@ -3271,30 +3312,6 @@ module PCIE_3_0 (...);
endmodule
module XADC (...);
- output BUSY;
- output DRDY;
- output EOC;
- output EOS;
- output JTAGBUSY;
- output JTAGLOCKED;
- output JTAGMODIFIED;
- output OT;
- output [15:0] DO;
- output [7:0] ALM;
- output [4:0] CHANNEL;
- output [4:0] MUXADDR;
- input CONVST;
- input CONVSTCLK;
- input DCLK;
- input DEN;
- input DWE;
- input RESET;
- input VN;
- input VP;
- input [15:0] DI;
- input [15:0] VAUXN;
- input [15:0] VAUXP;
- input [6:0] DADDR;
parameter [15:0] INIT_40 = 16'h0;
parameter [15:0] INIT_41 = 16'h0;
parameter [15:0] INIT_42 = 16'h0800;
@@ -3331,6 +3348,32 @@ module XADC (...);
parameter IS_DCLK_INVERTED = 1'b0;
parameter SIM_DEVICE = "7SERIES";
parameter SIM_MONITOR_FILE = "design.txt";
+ output BUSY;
+ output DRDY;
+ output EOC;
+ output EOS;
+ output JTAGBUSY;
+ output JTAGLOCKED;
+ output JTAGMODIFIED;
+ output OT;
+ output [15:0] DO;
+ output [7:0] ALM;
+ output [4:0] CHANNEL;
+ output [4:0] MUXADDR;
+ input CONVST;
+ (* invertible_pin = "IS_CONVSTCLK_INVERTED" *)
+ input CONVSTCLK;
+ (* invertible_pin = "IS_DCLK_INVERTED" *)
+ input DCLK;
+ input DEN;
+ input DWE;
+ input RESET;
+ input VN;
+ input VP;
+ input [15:0] DI;
+ input [15:0] VAUXN;
+ input [15:0] VAUXP;
+ input [6:0] DADDR;
endmodule
module DSP48E1 (...);
@@ -3377,11 +3420,13 @@ module DSP48E1 (...);
output UNDERFLOW;
input [29:0] A;
input [29:0] ACIN;
+ (* invertible_pin = "IS_ALUMODE_INVERTED" *)
input [3:0] ALUMODE;
input [17:0] B;
input [17:0] BCIN;
input [47:0] C;
input CARRYCASCIN;
+ (* invertible_pin = "IS_CARRYIN_INVERTED" *)
input CARRYIN;
input [2:0] CARRYINSEL;
input CEA1;
@@ -3398,10 +3443,13 @@ module DSP48E1 (...);
input CEM;
input CEP;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLK_INVERTED" *)
input CLK;
input [24:0] D;
+ (* invertible_pin = "IS_INMODE_INVERTED" *)
input [4:0] INMODE;
input MULTSIGNIN;
+ (* invertible_pin = "IS_OPMODE_INVERTED" *)
input [6:0] OPMODE;
input [47:0] PCIN;
input RSTA;
@@ -3422,7 +3470,9 @@ module BUFGCE (...);
parameter [0:0] IS_I_INVERTED = 1'b0;
(* clkbuf_driver *)
output O;
+ (* invertible_pin = "IS_CE_INVERTED" *)
input CE;
+ (* invertible_pin = "IS_I_INVERTED" *)
input I;
endmodule
@@ -3483,18 +3533,19 @@ module BUFMRCE (...);
parameter [0:0] IS_CE_INVERTED = 1'b0;
(* clkbuf_driver *)
output O;
+ (* invertible_pin = "IS_CE_INVERTED" *)
input CE;
input I;
endmodule
module BUFR (...);
+ parameter BUFR_DIVIDE = "BYPASS";
+ parameter SIM_DEVICE = "7SERIES";
(* clkbuf_driver *)
output O;
input CE;
input CLR;
input I;
- parameter BUFR_DIVIDE = "BYPASS";
- parameter SIM_DEVICE = "7SERIES";
endmodule
module MMCME2_ADV (...);
@@ -3575,6 +3626,7 @@ module MMCME2_ADV (...);
input CLKFBIN;
input CLKIN1;
input CLKIN2;
+ (* invertible_pin = "IS_CLKINSEL_INVERTED" *)
input CLKINSEL;
input [6:0] DADDR;
input DCLK;
@@ -3582,9 +3634,13 @@ module MMCME2_ADV (...);
input [15:0] DI;
input DWE;
input PSCLK;
+ (* invertible_pin = "IS_PSEN_INVERTED" *)
input PSEN;
+ (* invertible_pin = "IS_PSINCDEC_INVERTED" *)
input PSINCDEC;
+ (* invertible_pin = "IS_PWRDWN_INVERTED" *)
input PWRDWN;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
endmodule
@@ -3689,11 +3745,14 @@ module PLLE2_ADV (...);
input CLKFBIN;
input CLKIN1;
input CLKIN2;
+ (* invertible_pin = "IS_CLKINSEL_INVERTED" *)
input CLKINSEL;
input DCLK;
input DEN;
input DWE;
+ (* invertible_pin = "IS_PWRDWN_INVERTED" *)
input PWRDWN;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
input [15:0] DI;
input [6:0] DADDR;
@@ -4022,11 +4081,14 @@ module IDELAYE2 (...);
output [4:0] CNTVALUEOUT;
output DATAOUT;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_C_INVERTED" *)
input C;
input CE;
input CINVCTRL;
input [4:0] CNTVALUEIN;
+ (* invertible_pin = "IS_DATAIN_INVERTED" *)
input DATAIN;
+ (* invertible_pin = "IS_IDATAIN_INVERTED" *)
input IDATAIN;
input INC;
input LD;
@@ -4264,20 +4326,27 @@ module ISERDESE2 (...);
input CE1;
input CE2;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLK_INVERTED" *)
input CLK;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLKB_INVERTED" *)
input CLKB;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLKDIV_INVERTED" *)
input CLKDIV;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLKDIVP_INVERTED" *)
input CLKDIVP;
+ (* invertible_pin = "IS_D_INVERTED" *)
input D;
input DDLY;
input DYNCLKDIVSEL;
input DYNCLKSEL;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_OCLK_INVERTED" *)
input OCLK;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_OCLKB_INVERTED" *)
input OCLKB;
input OFB;
input RST;
@@ -4338,6 +4407,7 @@ module ODELAYE2 (...);
output [4:0] CNTVALUEOUT;
output DATAOUT;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_C_INVERTED" *)
input C;
input CE;
input CINVCTRL;
@@ -4346,6 +4416,7 @@ module ODELAYE2 (...);
input INC;
input LD;
input LDPIPEEN;
+ (* invertible_pin = "IS_ODATAIN_INVERTED" *)
input ODATAIN;
input REGRST;
endmodule
@@ -4384,24 +4455,38 @@ module OSERDESE2 (...);
output TFB;
output TQ;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLK_INVERTED" *)
input CLK;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLKDIV_INVERTED" *)
input CLKDIV;
+ (* invertible_pin = "IS_D1_INVERTED" *)
input D1;
+ (* invertible_pin = "IS_D2_INVERTED" *)
input D2;
+ (* invertible_pin = "IS_D3_INVERTED" *)
input D3;
+ (* invertible_pin = "IS_D4_INVERTED" *)
input D4;
+ (* invertible_pin = "IS_D5_INVERTED" *)
input D5;
+ (* invertible_pin = "IS_D6_INVERTED" *)
input D6;
+ (* invertible_pin = "IS_D7_INVERTED" *)
input D7;
+ (* invertible_pin = "IS_D8_INVERTED" *)
input D8;
input OCE;
input RST;
input SHIFTIN1;
input SHIFTIN2;
+ (* invertible_pin = "IS_T1_INVERTED" *)
input T1;
+ (* invertible_pin = "IS_T2_INVERTED" *)
input T2;
+ (* invertible_pin = "IS_T3_INVERTED" *)
input T3;
+ (* invertible_pin = "IS_T4_INVERTED" *)
input T4;
input TBYTEIN;
input TCE;
@@ -4474,6 +4559,7 @@ module PHASER_IN (...);
input FREQREFCLK;
input MEMREFCLK;
input PHASEREFCLK;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
input SYNCIN;
input SYSCLK;
@@ -4515,6 +4601,7 @@ module PHASER_IN_PHY (...);
input FREQREFCLK;
input MEMREFCLK;
input PHASEREFCLK;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
input RSTDQSFIND;
input SYNCIN;
@@ -4557,6 +4644,7 @@ module PHASER_OUT (...);
input FREQREFCLK;
input MEMREFCLK;
input PHASEREFCLK;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
input SELFINEOCLKDELAY;
input SYNCIN;
@@ -4601,6 +4689,7 @@ module PHASER_OUT_PHY (...);
input FREQREFCLK;
input MEMREFCLK;
input PHASEREFCLK;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
input SELFINEOCLKDELAY;
input SYNCIN;
@@ -4614,7 +4703,9 @@ module PHASER_REF (...);
parameter [0:0] IS_PWRDWN_INVERTED = 1'b0;
output LOCKED;
input CLKIN;
+ (* invertible_pin = "IS_PWRDWN_INVERTED" *)
input PWRDWN;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
endmodule
@@ -4716,13 +4807,19 @@ module FIFO18E1 (...);
input [31:0] DI;
input [3:0] DIP;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_RDCLK_INVERTED" *)
input RDCLK;
+ (* invertible_pin = "IS_RDEN_INVERTED" *)
input RDEN;
input REGCE;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
+ (* invertible_pin = "IS_RSTREG_INVERTED" *)
input RSTREG;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WRCLK_INVERTED" *)
input WRCLK;
+ (* invertible_pin = "IS_WREN_INVERTED" *)
input WREN;
endmodule
@@ -4763,13 +4860,19 @@ module FIFO36E1 (...);
input INJECTDBITERR;
input INJECTSBITERR;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_RDCLK_INVERTED" *)
input RDCLK;
+ (* invertible_pin = "IS_RDEN_INVERTED" *)
input RDEN;
input REGCE;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
+ (* invertible_pin = "IS_RSTREG_INVERTED" *)
input RSTREG;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WRCLK_INVERTED" *)
input WRCLK;
+ (* invertible_pin = "IS_WREN_INVERTED" *)
input WREN;
endmodule
@@ -4786,6 +4889,7 @@ module RAM128X1S (...);
input A6;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -4797,6 +4901,7 @@ module RAM256X1S (...);
input [7:0] A;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -4820,6 +4925,7 @@ module RAM32M (...);
input [1:0] DIC;
input [1:0] DID;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -4835,6 +4941,7 @@ module RAM32X1S (...);
input A4;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -4850,6 +4957,7 @@ module RAM32X1S_1 (...);
input A4;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -4868,6 +4976,7 @@ module RAM32X2S (...);
input D0;
input D1;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -4891,6 +5000,7 @@ module RAM64M (...);
input DIC;
input DID;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -4907,6 +5017,7 @@ module RAM64X1S (...);
input A5;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -4923,6 +5034,7 @@ module RAM64X1S_1 (...);
input A5;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -4942,6 +5054,7 @@ module RAM64X2S (...);
input D0;
input D1;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -5004,8 +5117,10 @@ module IDDR (...);
output Q1;
output Q2;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_C_INVERTED" *)
input C;
input CE;
+ (* invertible_pin = "IS_D_INVERTED" *)
input D;
input R;
input S;
@@ -5022,10 +5137,13 @@ module IDDR_2CLK (...);
output Q1;
output Q2;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_C_INVERTED" *)
input C;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CB_INVERTED" *)
input CB;
input CE;
+ (* invertible_pin = "IS_D_INVERTED" *)
input D;
input R;
input S;
@@ -5038,8 +5156,10 @@ module LDCE (...);
parameter MSGON = "TRUE";
parameter XON = "TRUE";
output Q;
+ (* invertible_pin = "IS_CLR_INVERTED" *)
input CLR;
input D;
+ (* invertible_pin = "IS_G_INVERTED" *)
input G;
input GE;
endmodule
@@ -5052,20 +5172,14 @@ module LDPE (...);
parameter XON = "TRUE";
output Q;
input D;
+ (* invertible_pin = "IS_G_INVERTED" *)
input G;
input GE;
+ (* invertible_pin = "IS_PRE_INVERTED" *)
input PRE;
endmodule
module ODDR (...);
- output Q;
- (* clkbuf_sink *)
- input C;
- input CE;
- input D1;
- input D2;
- input R;
- input S;
parameter DDR_CLK_EDGE = "OPPOSITE_EDGE";
parameter INIT = 1'b0;
parameter [0:0] IS_C_INVERTED = 1'b0;
@@ -5074,6 +5188,17 @@ module ODDR (...);
parameter SRTYPE = "SYNC";
parameter MSGON = "TRUE";
parameter XON = "TRUE";
+ output Q;
+ (* clkbuf_sink *)
+ (* invertible_pin = "IS_C_INVERTED" *)
+ input C;
+ input CE;
+ (* invertible_pin = "IS_D1_INVERTED" *)
+ input D1;
+ (* invertible_pin = "IS_D2_INVERTED" *)
+ input D2;
+ input R;
+ input S;
endmodule
module CFGLUT5 (...);
@@ -5090,6 +5215,7 @@ module CFGLUT5 (...);
input CDI;
input CE;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLK_INVERTED" *)
input CLK;
endmodule
diff --git a/techlibs/xilinx/xcu_cells_xtra.v b/techlibs/xilinx/xcu_cells_xtra.v
index 1f08879e2..2d331a221 100644
--- a/techlibs/xilinx/xcu_cells_xtra.v
+++ b/techlibs/xilinx/xcu_cells_xtra.v
@@ -7948,8 +7948,10 @@ module SYSMONE1 (...);
output [4:0] MUXADDR;
output OT;
input CONVST;
+ (* invertible_pin = "IS_CONVSTCLK_INVERTED" *)
input CONVSTCLK;
input [7:0] DADDR;
+ (* invertible_pin = "IS_DCLK_INVERTED" *)
input DCLK;
input DEN;
input [15:0] DI;
@@ -8058,8 +8060,10 @@ module SYSMONE4 (...);
output OT;
output SMBALERT_TS;
input CONVST;
+ (* invertible_pin = "IS_CONVSTCLK_INVERTED" *)
input CONVSTCLK;
input [7:0] DADDR;
+ (* invertible_pin = "IS_DCLK_INVERTED" *)
input DCLK;
input DEN;
input [15:0] DI;
@@ -8134,11 +8138,13 @@ module DSP48E2 (...);
output [7:0] XOROUT;
input [29:0] A;
input [29:0] ACIN;
+ (* invertible_pin = "IS_ALUMODE_INVERTED" *)
input [3:0] ALUMODE;
input [17:0] B;
input [17:0] BCIN;
input [47:0] C;
input CARRYCASCIN;
+ (* invertible_pin = "IS_CARRYIN_INVERTED" *)
input CARRYIN;
input [2:0] CARRYINSEL;
input CEA1;
@@ -8155,21 +8161,34 @@ module DSP48E2 (...);
input CEM;
input CEP;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLK_INVERTED" *)
input CLK;
input [26:0] D;
+ (* invertible_pin = "IS_INMODE_INVERTED" *)
input [4:0] INMODE;
input MULTSIGNIN;
+ (* invertible_pin = "IS_OPMODE_INVERTED" *)
input [8:0] OPMODE;
input [47:0] PCIN;
+ (* invertible_pin = "IS_RSTA_INVERTED" *)
input RSTA;
+ (* invertible_pin = "IS_RSTALLCARRYIN_INVERTED" *)
input RSTALLCARRYIN;
+ (* invertible_pin = "IS_RSTALUMODE_INVERTED" *)
input RSTALUMODE;
+ (* invertible_pin = "IS_RSTB_INVERTED" *)
input RSTB;
+ (* invertible_pin = "IS_RSTC_INVERTED" *)
input RSTC;
+ (* invertible_pin = "IS_RSTCTRL_INVERTED" *)
input RSTCTRL;
+ (* invertible_pin = "IS_RSTD_INVERTED" *)
input RSTD;
+ (* invertible_pin = "IS_RSTINMODE_INVERTED" *)
input RSTINMODE;
+ (* invertible_pin = "IS_RSTM_INVERTED" *)
input RSTM;
+ (* invertible_pin = "IS_RSTP_INVERTED" *)
input RSTP;
endmodule
@@ -8221,14 +8240,20 @@ module FIFO18E2 (...);
input [31:0] DIN;
input [3:0] DINP;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_RDCLK_INVERTED" *)
input RDCLK;
+ (* invertible_pin = "IS_RDEN_INVERTED" *)
input RDEN;
input REGCE;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
+ (* invertible_pin = "IS_RSTREG_INVERTED" *)
input RSTREG;
input SLEEP;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WRCLK_INVERTED" *)
input WRCLK;
+ (* invertible_pin = "IS_WREN_INVERTED" *)
input WREN;
endmodule
@@ -8288,14 +8313,20 @@ module FIFO36E2 (...);
input INJECTDBITERR;
input INJECTSBITERR;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_RDCLK_INVERTED" *)
input RDCLK;
+ (* invertible_pin = "IS_RDEN_INVERTED" *)
input RDEN;
input REGCE;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
+ (* invertible_pin = "IS_RSTREG_INVERTED" *)
input RSTREG;
input SLEEP;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WRCLK_INVERTED" *)
input WRCLK;
+ (* invertible_pin = "IS_WREN_INVERTED" *)
input WREN;
endmodule
@@ -8431,20 +8462,28 @@ module RAMB18E2 (...);
input CASOREGIMUXEN_A;
input CASOREGIMUXEN_B;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLKARDCLK_INVERTED" *)
input CLKARDCLK;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLKBWRCLK_INVERTED" *)
input CLKBWRCLK;
input [15:0] DINADIN;
input [15:0] DINBDIN;
input [1:0] DINPADINP;
input [1:0] DINPBDINP;
+ (* invertible_pin = "IS_ENARDEN_INVERTED" *)
input ENARDEN;
+ (* invertible_pin = "IS_ENBWREN_INVERTED" *)
input ENBWREN;
input REGCEAREGCE;
input REGCEB;
+ (* invertible_pin = "IS_RSTRAMARSTRAM_INVERTED" *)
input RSTRAMARSTRAM;
+ (* invertible_pin = "IS_RSTRAMB_INVERTED" *)
input RSTRAMB;
+ (* invertible_pin = "IS_RSTREGARSTREG_INVERTED" *)
input RSTREGARSTREG;
+ (* invertible_pin = "IS_RSTREGB_INVERTED" *)
input RSTREGB;
input SLEEP;
input [1:0] WEA;
@@ -8666,23 +8705,31 @@ module RAMB36E2 (...);
input CASOREGIMUXEN_A;
input CASOREGIMUXEN_B;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLKARDCLK_INVERTED" *)
input CLKARDCLK;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLKBWRCLK_INVERTED" *)
input CLKBWRCLK;
input [31:0] DINADIN;
input [31:0] DINBDIN;
input [3:0] DINPADINP;
input [3:0] DINPBDINP;
input ECCPIPECE;
+ (* invertible_pin = "IS_ENARDEN_INVERTED" *)
input ENARDEN;
+ (* invertible_pin = "IS_ENBWREN_INVERTED" *)
input ENBWREN;
input INJECTDBITERR;
input INJECTSBITERR;
input REGCEAREGCE;
input REGCEB;
+ (* invertible_pin = "IS_RSTRAMARSTRAM_INVERTED" *)
input RSTRAMARSTRAM;
+ (* invertible_pin = "IS_RSTRAMB_INVERTED" *)
input RSTRAMB;
+ (* invertible_pin = "IS_RSTREGARSTREG_INVERTED" *)
input RSTREGARSTREG;
+ (* invertible_pin = "IS_RSTREGB_INVERTED" *)
input RSTREGB;
input SLEEP;
input [3:0] WEA;
@@ -8777,10 +8824,13 @@ module URAM288 (...);
input CAS_IN_SBITERR_A;
input CAS_IN_SBITERR_B;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLK_INVERTED" *)
input CLK;
input [71:0] DIN_A;
input [71:0] DIN_B;
+ (* invertible_pin = "IS_EN_A_INVERTED" *)
input EN_A;
+ (* invertible_pin = "IS_EN_B_INVERTED" *)
input EN_B;
input INJECT_DBITERR_A;
input INJECT_DBITERR_B;
@@ -8790,9 +8840,13 @@ module URAM288 (...);
input OREG_CE_B;
input OREG_ECC_CE_A;
input OREG_ECC_CE_B;
+ (* invertible_pin = "IS_RDB_WR_A_INVERTED" *)
input RDB_WR_A;
+ (* invertible_pin = "IS_RDB_WR_B_INVERTED" *)
input RDB_WR_B;
+ (* invertible_pin = "IS_RST_A_INVERTED" *)
input RST_A;
+ (* invertible_pin = "IS_RST_B_INVERTED" *)
input RST_B;
input SLEEP;
endmodule
@@ -8835,10 +8889,13 @@ module URAM288_BASE (...);
input [8:0] BWE_A;
input [8:0] BWE_B;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLK_INVERTED" *)
input CLK;
input [71:0] DIN_A;
input [71:0] DIN_B;
+ (* invertible_pin = "IS_EN_A_INVERTED" *)
input EN_A;
+ (* invertible_pin = "IS_EN_B_INVERTED" *)
input EN_B;
input INJECT_DBITERR_A;
input INJECT_DBITERR_B;
@@ -8848,9 +8905,13 @@ module URAM288_BASE (...);
input OREG_CE_B;
input OREG_ECC_CE_A;
input OREG_ECC_CE_B;
+ (* invertible_pin = "IS_RDB_WR_A_INVERTED" *)
input RDB_WR_A;
+ (* invertible_pin = "IS_RDB_WR_B_INVERTED" *)
input RDB_WR_B;
+ (* invertible_pin = "IS_RST_A_INVERTED" *)
input RST_A;
+ (* invertible_pin = "IS_RST_B_INVERTED" *)
input RST_B;
input SLEEP;
endmodule
@@ -8868,6 +8929,7 @@ module RAM128X1S (...);
input A6;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -8881,6 +8943,7 @@ module RAM256X1D (...);
input D;
input [7:0] DPRA;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -8892,6 +8955,7 @@ module RAM256X1S (...);
input [7:0] A;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -8915,6 +8979,7 @@ module RAM32M (...);
input [1:0] DIC;
input [1:0] DID;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -8954,6 +9019,7 @@ module RAM32M16 (...);
input [1:0] DIG;
input [1:0] DIH;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -8969,6 +9035,7 @@ module RAM32X1S (...);
input A4;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -8980,6 +9047,7 @@ module RAM512X1S (...);
input [8:0] A;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -9003,6 +9071,7 @@ module RAM64M (...);
input DIC;
input DID;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -9042,6 +9111,7 @@ module RAM64M8 (...);
input DIG;
input DIH;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -9058,6 +9128,7 @@ module RAM64X1S (...);
input A5;
input D;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_WCLK_INVERTED" *)
input WCLK;
input WE;
endmodule
@@ -9066,6 +9137,7 @@ module AND2B1L (...);
parameter [0:0] IS_SRI_INVERTED = 1'b0;
output O;
input DI;
+ (* invertible_pin = "IS_SRI_INVERTED" *)
input SRI;
endmodule
@@ -9093,6 +9165,7 @@ module CFGLUT5 (...);
input CDI;
input CE;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLK_INVERTED" *)
input CLK;
endmodule
@@ -9107,6 +9180,7 @@ module OR2L (...);
parameter [0:0] IS_SRI_INVERTED = 1'b0;
output O;
input DI;
+ (* invertible_pin = "IS_SRI_INVERTED" *)
input SRI;
endmodule
@@ -9141,7 +9215,9 @@ module BUFGCE (...);
parameter [0:0] IS_I_INVERTED = 1'b0;
(* clkbuf_driver *)
output O;
+ (* invertible_pin = "IS_CE_INVERTED" *)
input CE;
+ (* invertible_pin = "IS_I_INVERTED" *)
input I;
endmodule
@@ -9159,8 +9235,11 @@ module BUFGCE_DIV (...);
parameter [0:0] IS_I_INVERTED = 1'b0;
(* clkbuf_driver *)
output O;
+ (* invertible_pin = "IS_CE_INVERTED" *)
input CE;
+ (* invertible_pin = "IS_CLR_INVERTED" *)
input CLR;
+ (* invertible_pin = "IS_I_INVERTED" *)
input I;
endmodule
@@ -9270,9 +9349,13 @@ module MMCME3_ADV (...);
output LOCKED;
output PSDONE;
input CDDCREQ;
+ (* invertible_pin = "IS_CLKFBIN_INVERTED" *)
input CLKFBIN;
+ (* invertible_pin = "IS_CLKIN1_INVERTED" *)
input CLKIN1;
+ (* invertible_pin = "IS_CLKIN2_INVERTED" *)
input CLKIN2;
+ (* invertible_pin = "IS_CLKINSEL_INVERTED" *)
input CLKINSEL;
input [6:0] DADDR;
input DCLK;
@@ -9280,9 +9363,13 @@ module MMCME3_ADV (...);
input [15:0] DI;
input DWE;
input PSCLK;
+ (* invertible_pin = "IS_PSEN_INVERTED" *)
input PSEN;
+ (* invertible_pin = "IS_PSINCDEC_INVERTED" *)
input PSINCDEC;
+ (* invertible_pin = "IS_PWRDWN_INVERTED" *)
input PWRDWN;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
endmodule
@@ -9334,9 +9421,13 @@ module MMCME3_BASE (...);
output CLKOUT5;
output CLKOUT6;
output LOCKED;
+ (* invertible_pin = "IS_CLKFBIN_INVERTED" *)
input CLKFBIN;
+ (* invertible_pin = "IS_CLKIN1_INVERTED" *)
input CLKIN1;
+ (* invertible_pin = "IS_PWRDWN_INVERTED" *)
input PWRDWN;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
endmodule
@@ -9420,9 +9511,13 @@ module MMCME4_ADV (...);
output LOCKED;
output PSDONE;
input CDDCREQ;
+ (* invertible_pin = "IS_CLKFBIN_INVERTED" *)
input CLKFBIN;
+ (* invertible_pin = "IS_CLKIN1_INVERTED" *)
input CLKIN1;
+ (* invertible_pin = "IS_CLKIN2_INVERTED" *)
input CLKIN2;
+ (* invertible_pin = "IS_CLKINSEL_INVERTED" *)
input CLKINSEL;
input [6:0] DADDR;
input DCLK;
@@ -9430,9 +9525,13 @@ module MMCME4_ADV (...);
input [15:0] DI;
input DWE;
input PSCLK;
+ (* invertible_pin = "IS_PSEN_INVERTED" *)
input PSEN;
+ (* invertible_pin = "IS_PSINCDEC_INVERTED" *)
input PSINCDEC;
+ (* invertible_pin = "IS_PWRDWN_INVERTED" *)
input PWRDWN;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
endmodule
@@ -9484,9 +9583,13 @@ module MMCME4_BASE (...);
output CLKOUT5;
output CLKOUT6;
output LOCKED;
+ (* invertible_pin = "IS_CLKFBIN_INVERTED" *)
input CLKFBIN;
+ (* invertible_pin = "IS_CLKIN1_INVERTED" *)
input CLKIN1;
+ (* invertible_pin = "IS_PWRDWN_INVERTED" *)
input PWRDWN;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
endmodule
@@ -9525,7 +9628,9 @@ module PLLE3_ADV (...);
output [15:0] DO;
output DRDY;
output LOCKED;
+ (* invertible_pin = "IS_CLKFBIN_INVERTED" *)
input CLKFBIN;
+ (* invertible_pin = "IS_CLKIN_INVERTED" *)
input CLKIN;
input CLKOUTPHYEN;
input [6:0] DADDR;
@@ -9533,7 +9638,9 @@ module PLLE3_ADV (...);
input DEN;
input [15:0] DI;
input DWE;
+ (* invertible_pin = "IS_PWRDWN_INVERTED" *)
input PWRDWN;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
endmodule
@@ -9562,10 +9669,14 @@ module PLLE3_BASE (...);
output CLKOUT1B;
output CLKOUTPHY;
output LOCKED;
+ (* invertible_pin = "IS_CLKFBIN_INVERTED" *)
input CLKFBIN;
+ (* invertible_pin = "IS_CLKIN_INVERTED" *)
input CLKIN;
input CLKOUTPHYEN;
+ (* invertible_pin = "IS_PWRDWN_INVERTED" *)
input PWRDWN;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
endmodule
@@ -9604,7 +9715,9 @@ module PLLE4_ADV (...);
output [15:0] DO;
output DRDY;
output LOCKED;
+ (* invertible_pin = "IS_CLKFBIN_INVERTED" *)
input CLKFBIN;
+ (* invertible_pin = "IS_CLKIN_INVERTED" *)
input CLKIN;
input CLKOUTPHYEN;
input [6:0] DADDR;
@@ -9612,7 +9725,9 @@ module PLLE4_ADV (...);
input DEN;
input [15:0] DI;
input DWE;
+ (* invertible_pin = "IS_PWRDWN_INVERTED" *)
input PWRDWN;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
endmodule
@@ -9641,10 +9756,14 @@ module PLLE4_BASE (...);
output CLKOUT1B;
output CLKOUTPHY;
output LOCKED;
+ (* invertible_pin = "IS_CLKFBIN_INVERTED" *)
input CLKFBIN;
+ (* invertible_pin = "IS_CLKIN_INVERTED" *)
input CLKIN;
input CLKOUTPHYEN;
+ (* invertible_pin = "IS_PWRDWN_INVERTED" *)
input PWRDWN;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
endmodule
@@ -10035,6 +10154,7 @@ module IDELAYE3 (...);
input CASC_RETURN;
input CE;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLK_INVERTED" *)
input CLK;
input [8:0] CNTVALUEIN;
input DATAIN;
@@ -10042,6 +10162,7 @@ module IDELAYE3 (...);
input IDATAIN;
input INC;
input LOAD;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
endmodule
@@ -10249,15 +10370,18 @@ module ISERDESE3 (...);
output INTERNAL_DIVCLK;
output [7:0] Q;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLK_INVERTED" *)
input CLK;
(* clkbuf_sink *)
input CLKDIV;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLK_B_INVERTED" *)
input CLK_B;
input D;
(* clkbuf_sink *)
input FIFO_RD_CLK;
input FIFO_RD_EN;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
endmodule
@@ -10330,12 +10454,14 @@ module ODELAYE3 (...);
input CASC_RETURN;
input CE;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLK_INVERTED" *)
input CLK;
input [8:0] CNTVALUEIN;
input EN_VTC;
input INC;
input LOAD;
input ODATAIN;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
endmodule
@@ -10353,10 +10479,13 @@ module OSERDESE3 (...);
output OQ;
output T_OUT;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLK_INVERTED" *)
input CLK;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLKDIV_INVERTED" *)
input CLKDIV;
input [7:0] D;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
input T;
endmodule
@@ -10408,7 +10537,9 @@ module RX_BITSLICE (...);
output [39:0] TX_BIT_CTRL_OUT;
input CE;
input CE_EXT;
+ (* invertible_pin = "IS_CLK_INVERTED" *)
input CLK;
+ (* invertible_pin = "IS_CLK_EXT_INVERTED" *)
input CLK_EXT;
input [8:0] CNTVALUEIN;
input [8:0] CNTVALUEIN_EXT;
@@ -10421,8 +10552,11 @@ module RX_BITSLICE (...);
input INC_EXT;
input LOAD;
input LOAD_EXT;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
+ (* invertible_pin = "IS_RST_DLY_INVERTED" *)
input RST_DLY;
+ (* invertible_pin = "IS_RST_DLY_EXT_INVERTED" *)
input RST_DLY_EXT;
input [39:0] RX_BIT_CTRL_IN;
input [39:0] TX_BIT_CTRL_IN;
@@ -10472,23 +10606,29 @@ module RXTX_BITSLICE (...);
input FIFO_RD_EN;
input [39:0] RX_BIT_CTRL_IN;
input RX_CE;
+ (* invertible_pin = "IS_RX_CLK_INVERTED" *)
input RX_CLK;
input [8:0] RX_CNTVALUEIN;
input RX_EN_VTC;
input RX_INC;
input RX_LOAD;
+ (* invertible_pin = "IS_RX_RST_INVERTED" *)
input RX_RST;
+ (* invertible_pin = "IS_RX_RST_DLY_INVERTED" *)
input RX_RST_DLY;
input T;
input TBYTE_IN;
input [39:0] TX_BIT_CTRL_IN;
input TX_CE;
+ (* invertible_pin = "IS_TX_CLK_INVERTED" *)
input TX_CLK;
input [8:0] TX_CNTVALUEIN;
input TX_EN_VTC;
input TX_INC;
input TX_LOAD;
+ (* invertible_pin = "IS_TX_RST_INVERTED" *)
input TX_RST;
+ (* invertible_pin = "IS_TX_RST_DLY_INVERTED" *)
input TX_RST_DLY;
endmodule
@@ -10515,13 +10655,16 @@ module TX_BITSLICE (...);
output [39:0] TX_BIT_CTRL_OUT;
output T_OUT;
input CE;
+ (* invertible_pin = "IS_CLK_INVERTED" *)
input CLK;
input [8:0] CNTVALUEIN;
input [7:0] D;
input EN_VTC;
input INC;
input LOAD;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
+ (* invertible_pin = "IS_RST_DLY_INVERTED" *)
input RST_DLY;
input [39:0] RX_BIT_CTRL_IN;
input T;
@@ -10549,12 +10692,15 @@ module TX_BITSLICE_TRI (...);
output TRI_OUT;
input [39:0] BIT_CTRL_IN;
input CE;
+ (* invertible_pin = "IS_CLK_INVERTED" *)
input CLK;
input [8:0] CNTVALUEIN;
input EN_VTC;
input INC;
input LOAD;
+ (* invertible_pin = "IS_RST_INVERTED" *)
input RST;
+ (* invertible_pin = "IS_RST_DLY_INVERTED" *)
input RST_DLY;
endmodule
@@ -10564,6 +10710,7 @@ module HARD_SYNC (...);
parameter integer LATENCY = 2;
output DOUT;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CLK_INVERTED" *)
input CLK;
input DIN;
endmodule
@@ -10575,8 +10722,10 @@ module IDDRE1 (...);
output Q1;
output Q2;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_C_INVERTED" *)
input C;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_CB_INVERTED" *)
input CB;
input D;
input R;
@@ -10589,8 +10738,10 @@ module LDCE (...);
parameter MSGON = "TRUE";
parameter XON = "TRUE";
output Q;
+ (* invertible_pin = "IS_CLR_INVERTED" *)
input CLR;
input D;
+ (* invertible_pin = "IS_G_INVERTED" *)
input G;
input GE;
endmodule
@@ -10603,8 +10754,10 @@ module LDPE (...);
parameter XON = "TRUE";
output Q;
input D;
+ (* invertible_pin = "IS_G_INVERTED" *)
input G;
input GE;
+ (* invertible_pin = "IS_PRE_INVERTED" *)
input PRE;
endmodule
@@ -10615,8 +10768,11 @@ module ODDRE1 (...);
parameter [0:0] SRVAL = 1'b0;
output Q;
(* clkbuf_sink *)
+ (* invertible_pin = "IS_C_INVERTED" *)
input C;
+ (* invertible_pin = "IS_D1_INVERTED" *)
input D1;
+ (* invertible_pin = "IS_D2_INVERTED" *)
input D2;
input SR;
endmodule