| #!/bin/bash |
| |
| set -e |
| libdir="/opt/Xilinx/Vivado/2018.1/data/verilog/src" |
| |
| function xtract_cell_decl() |
| { |
| for dir in $libdir/xeclib $libdir/retarget; do |
| [ -f $dir/$1.v ] || continue |
| 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/; |
| s/\s+$//; s/,$/;/; /input|output|parameter/ s/[^;]$/&;/; s/\s+/ /g; |
| s/^ ((end)?module)/\1/; s/^ / /; /module.*_bb/,/endmodule/ d;' |
| echo; return |
| done |
| echo "Can't find $1." |
| exit 1 |
| } |
| |
| { |
| echo "// Created by cells_xtra.sh from Xilinx models" |
| echo |
| |
| # Design elements types listed in Xilinx UG953 |
| xtract_cell_decl BSCANE2 |
| # xtract_cell_decl BUFG |
| xtract_cell_decl BUFGCE |
| xtract_cell_decl BUFGCE_1 |
| xtract_cell_decl BUFGCTRL |
| xtract_cell_decl BUFGMUX |
| xtract_cell_decl BUFGMUX_1 |
| xtract_cell_decl BUFGMUX_CTRL |
| xtract_cell_decl BUFH |
| xtract_cell_decl BUFHCE |
| xtract_cell_decl BUFIO |
| xtract_cell_decl BUFMR |
| xtract_cell_decl BUFMRCE |
| xtract_cell_decl BUFR |
| xtract_cell_decl CAPTUREE2 |
| # xtract_cell_decl CARRY4 |
| xtract_cell_decl CFGLUT5 |
| xtract_cell_decl DCIRESET |
| xtract_cell_decl DNA_PORT |
| xtract_cell_decl DSP48E1 |
| xtract_cell_decl EFUSE_USR |
| # xtract_cell_decl FDCE |
| # xtract_cell_decl FDPE |
| # xtract_cell_decl FDRE |
| # xtract_cell_decl FDSE |
| xtract_cell_decl FIFO18E1 |
| xtract_cell_decl FIFO36E1 |
| xtract_cell_decl FRAME_ECCE2 |
| xtract_cell_decl GTHE2_CHANNEL |
| xtract_cell_decl GTHE2_COMMON |
| xtract_cell_decl GTPE2_CHANNEL |
| xtract_cell_decl GTPE2_COMMON |
| xtract_cell_decl GTXE2_CHANNEL |
| xtract_cell_decl GTXE2_COMMON |
| # xtract_cell_decl IBUF |
| xtract_cell_decl IBUF_IBUFDISABLE |
| xtract_cell_decl IBUF_INTERMDISABLE |
| xtract_cell_decl IBUFDS |
| xtract_cell_decl IBUFDS_DIFF_OUT |
| xtract_cell_decl IBUFDS_DIFF_OUT_IBUFDISABLE |
| xtract_cell_decl IBUFDS_DIFF_OUT_INTERMDISABLE |
| xtract_cell_decl IBUFDS_GTE2 |
| xtract_cell_decl IBUFDS_IBUFDISABLE |
| xtract_cell_decl IBUFDS_INTERMDISABLE |
| xtract_cell_decl ICAPE2 |
| xtract_cell_decl IDDR |
| xtract_cell_decl IDDR_2CLK |
| xtract_cell_decl IDELAYCTRL |
| xtract_cell_decl IDELAYE2 |
| xtract_cell_decl IN_FIFO |
| xtract_cell_decl IOBUF |
| xtract_cell_decl IOBUF_DCIEN |
| xtract_cell_decl IOBUF_INTERMDISABLE |
| xtract_cell_decl IOBUFDS |
| xtract_cell_decl IOBUFDS_DCIEN |
| xtract_cell_decl IOBUFDS_DIFF_OUT |
| xtract_cell_decl IOBUFDS_DIFF_OUT_DCIEN |
| xtract_cell_decl IOBUFDS_DIFF_OUT_INTERMDISABLE |
| xtract_cell_decl ISERDESE2 |
| xtract_cell_decl KEEPER |
| xtract_cell_decl LDCE |
| xtract_cell_decl LDPE |
| # xtract_cell_decl LUT1 |
| # xtract_cell_decl LUT2 |
| # xtract_cell_decl LUT3 |
| # xtract_cell_decl LUT4 |
| # xtract_cell_decl LUT5 |
| # xtract_cell_decl LUT6 |
| xtract_cell_decl LUT6_2 |
| xtract_cell_decl MMCME2_ADV |
| xtract_cell_decl MMCME2_BASE |
| # xtract_cell_decl MUXF7 |
| # xtract_cell_decl MUXF8 |
| # xtract_cell_decl OBUF |
| xtract_cell_decl OBUFDS |
| xtract_cell_decl OBUFT |
| xtract_cell_decl OBUFTDS |
| xtract_cell_decl ODDR |
| xtract_cell_decl ODELAYE2 |
| xtract_cell_decl OSERDESE2 |
| xtract_cell_decl OUT_FIFO |
| xtract_cell_decl PHASER_IN |
| xtract_cell_decl PHASER_IN_PHY |
| xtract_cell_decl PHASER_OUT |
| xtract_cell_decl PHASER_OUT_PHY |
| xtract_cell_decl PHASER_REF |
| xtract_cell_decl PHY_CONTROL |
| xtract_cell_decl PLLE2_ADV |
| xtract_cell_decl PLLE2_BASE |
| xtract_cell_decl PS7 |
| xtract_cell_decl PULLDOWN |
| xtract_cell_decl PULLUP |
| # xtract_cell_decl RAM128X1D |
| xtract_cell_decl RAM128X1S |
| xtract_cell_decl RAM256X1S |
| xtract_cell_decl RAM32M |
| xtract_cell_decl RAM32X1D |
| xtract_cell_decl RAM32X1S |
| xtract_cell_decl RAM32X1S_1 |
| xtract_cell_decl RAM32X2S |
| xtract_cell_decl RAM64M |
| # xtract_cell_decl RAM64X1D |
| xtract_cell_decl RAM64X1S |
| xtract_cell_decl RAM64X1S_1 |
| xtract_cell_decl RAM64X2S |
| # xtract_cell_decl RAMB18E1 |
| # xtract_cell_decl RAMB36E1 |
| xtract_cell_decl ROM128X1 |
| xtract_cell_decl ROM256X1 |
| xtract_cell_decl ROM32X1 |
| xtract_cell_decl ROM64X1 |
| xtract_cell_decl SRL16E |
| xtract_cell_decl SRLC32E |
| xtract_cell_decl STARTUPE2 |
| xtract_cell_decl USR_ACCESSE2 |
| xtract_cell_decl XADC |
| } > cells_xtra.new |
| |
| mv cells_xtra.new cells_xtra.v |
| exit 0 |
| |