xilinx: Add keep attribute where appropriate
authorDavid Shah <dave@ds0.me>
Fri, 22 Mar 2019 13:57:17 +0000 (13:57 +0000)
committerDavid Shah <dave@ds0.me>
Fri, 22 Mar 2019 13:57:17 +0000 (13:57 +0000)
Signed-off-by: David Shah <dave@ds0.me>
techlibs/xilinx/cells_xtra.sh
techlibs/xilinx/cells_xtra.v

index 37c3e5480b9c6d06b80f811ca8e2e4b585cab06e..56520ea1065ea72a0d4d89ee408b12db9b670073 100644 (file)
@@ -7,6 +7,7 @@ function xtract_cell_decl()
 {
        for dir in $libdir/xeclib $libdir/retarget; do
                [ -f $dir/$1.v ] || continue
+               [ -z "$2" ] || echo $2
                egrep '^\s*((end)?module|parameter|input|inout|output|(end)?function|(end)?task)' $dir/$1.v |
                        sed -re '/UNPLACED/ d; /^\s*function/,/endfunction/ d; /^\s*task/,/endtask/ d;
                                 s,//.*,,; s/#?\(.*/(...);/; s/^(input|output|parameter)/ \1/;
@@ -37,10 +38,10 @@ function xtract_cell_decl()
        xtract_cell_decl BUFMR
        xtract_cell_decl BUFMRCE
        xtract_cell_decl BUFR
-       xtract_cell_decl CAPTUREE2
+       xtract_cell_decl CAPTUREE2 "(* keep *)"
        # xtract_cell_decl CARRY4
        xtract_cell_decl CFGLUT5
-       xtract_cell_decl DCIRESET
+       xtract_cell_decl DCIRESET "(* keep *)"
        xtract_cell_decl DNA_PORT
        xtract_cell_decl DSP48E1
        xtract_cell_decl EFUSE_USR
@@ -67,10 +68,10 @@ function xtract_cell_decl()
        xtract_cell_decl IBUFDS_GTE2
        xtract_cell_decl IBUFDS_IBUFDISABLE
        xtract_cell_decl IBUFDS_INTERMDISABLE
-       xtract_cell_decl ICAPE2
+       xtract_cell_decl ICAPE2 "(* keep *)"
        xtract_cell_decl IDDR
        xtract_cell_decl IDDR_2CLK
-       xtract_cell_decl IDELAYCTRL
+       xtract_cell_decl IDELAYCTRL "(* keep *)"
        xtract_cell_decl IDELAYE2
        xtract_cell_decl IN_FIFO
        xtract_cell_decl IOBUF
@@ -112,7 +113,7 @@ function xtract_cell_decl()
        xtract_cell_decl PHY_CONTROL
        xtract_cell_decl PLLE2_ADV
        xtract_cell_decl PLLE2_BASE
-       xtract_cell_decl PS7
+       xtract_cell_decl PS7 "(* keep *)"
        xtract_cell_decl PULLDOWN
        xtract_cell_decl PULLUP
        xtract_cell_decl RAM128X1D
@@ -136,7 +137,7 @@ function xtract_cell_decl()
        xtract_cell_decl ROM64X1
        xtract_cell_decl SRL16E
        xtract_cell_decl SRLC32E
-       xtract_cell_decl STARTUPE2
+       xtract_cell_decl STARTUPE2 "(* keep *)"
        xtract_cell_decl USR_ACCESSE2
        xtract_cell_decl XADC
 } > cells_xtra.new
index 995d62e18fe4565912f938a02dba8202643fc218..497518d35033e313138ef3708fb47522542cca47 100644 (file)
@@ -114,6 +114,7 @@ module BUFR (...);
     parameter SIM_DEVICE = "7SERIES";
 endmodule
 
+(* keep *)
 module CAPTUREE2 (...);
     parameter ONESHOT = "TRUE";
     input CAP;
@@ -130,6 +131,7 @@ module CFGLUT5 (...);
     input CDI, CE, CLK;
 endmodule
 
+(* keep *)
 module DCIRESET (...);
     output LOCKED;
     input RST;
@@ -2102,6 +2104,7 @@ module IBUFDS_INTERMDISABLE (...);
     input INTERMDISABLE;
 endmodule
 
+(* keep *)
 module ICAPE2 (...);
     parameter [31:0] DEVICE_ID = 32'h04244093;
     parameter ICAP_WIDTH = "X32";
@@ -2149,6 +2152,7 @@ module IDDR_2CLK (...);
     input S;
 endmodule
 
+(* keep *)
 module IDELAYCTRL (...);
     parameter SIM_DEVICE = "7SERIES";
     output RDY;
@@ -3057,6 +3061,7 @@ module PLLE2_BASE (...);
     input RST;
 endmodule
 
+(* keep *)
 module PS7 (...);
     output DMA0DAVALID;
     output DMA0DRREADY;
@@ -3688,6 +3693,17 @@ module PULLUP (...);
     output O;
 endmodule
 
+module RAM128X1D (...);
+    parameter [127:0] INIT = 128'h00000000000000000000000000000000;
+    parameter [0:0] IS_WCLK_INVERTED = 1'b0;
+    output DPO, SPO;
+    input [6:0] A;
+    input [6:0] DPRA;
+    input D;
+    input WCLK;
+    input WE;
+endmodule
+
 module RAM128X1S (...);
     parameter [127:0] INIT = 128'h00000000000000000000000000000000;
     parameter [0:0] IS_WCLK_INVERTED = 1'b0;
@@ -3695,25 +3711,6 @@ module RAM128X1S (...);
     input A0, A1, A2, A3, A4, A5, A6, D, WCLK, WE;
 endmodule
 
-module RAM128X1D (
-  output       DPO, SPO,
-  input        D, WCLK, WE,
-  input  [6:0] A, DPRA
-);
-       parameter [127:0] INIT = 128'bx;
-       parameter IS_WCLK_INVERTED = 0;
-endmodule
-
-module RAM64X1D (
-  output DPO, SPO,
-  input  D, WCLK, WE,
-  input  A0, A1, A2, A3, A4, A5,
-  input  DPRA0, DPRA1, DPRA2, DPRA3, DPRA4, DPRA5
-);
-       parameter [63:0] INIT = 64'bx;
-       parameter IS_WCLK_INVERTED = 0;
-endmodule
-
 module RAM256X1S (...);
     parameter [255:0] INIT = 256'h0;
     parameter [0:0] IS_WCLK_INVERTED = 1'b0;
@@ -3797,6 +3794,13 @@ module RAM64M (...);
     input WE;
 endmodule
 
+module RAM64X1D (...);
+    parameter [63:0] INIT = 64'h0000000000000000;
+    parameter [0:0] IS_WCLK_INVERTED = 1'b0;
+    output DPO, SPO;
+    input A0, A1, A2, A3, A4, A5, D, DPRA0, DPRA1, DPRA2, DPRA3, DPRA4, DPRA5, WCLK, WE;
+endmodule
+
 module RAM64X1S (...);
     parameter [63:0] INIT = 64'h0000000000000000;
     parameter [0:0] IS_WCLK_INVERTED = 1'b0;
@@ -3859,6 +3863,7 @@ module SRLC32E (...);
     input CE, CLK, D;
 endmodule
 
+(* keep *)
 module STARTUPE2 (...);
     parameter PROG_USR = "FALSE";
     parameter real SIM_CCLK_FREQ = 0.0;