Guest User

Untitled

a guest
Jun 10th, 2020
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VeriLog 16.29 KB | None | 0 0
  1. // ============================================================================
  2. // Constant sources
  3.  
  4. // Reduce logic_0 and logic_1 cells to 1'b0 and 1'b1. Const sources suitable
  5. // for VPR will be added by Yosys during EBLIF write.
  6. module logic_0(output a);
  7.     assign a = 0;
  8. endmodule
  9.  
  10. module logic_1(output a);
  11.     assign a = 1;
  12. endmodule
  13.  
  14.  
  15. // ============================================================================
  16. // IO and clock buffers
  17.  
  18. module inpad(output Q, input P);
  19.  
  20.   parameter IO_PAD  = "";
  21.   parameter IO_LOC  = "";
  22.   parameter IO_TYPE = "";
  23.  
  24.   generate if (IO_TYPE == "SDIOMUX") begin
  25.  
  26.       SDIOMUX_CELL _TECHMAP_REPLACE_ (
  27.       .I_PAD_$inp(P),
  28.       .I_DAT(Q),
  29.       .I_EN (1'b1),
  30.       .O_PAD_$out(),
  31.       .O_DAT(),
  32.       .O_EN (1'b1)
  33.       );
  34.  
  35.   end else begin
  36.  
  37.       BIDIR_CELL # (
  38.       .ESEL     (1'b1),
  39.       .OSEL     (1'b1),
  40.       .FIXHOLD  (1'b0),
  41.       .WPD      (1'b0),
  42.       .DS       (1'b0)
  43.       ) _TECHMAP_REPLACE_ (
  44.       .I_PAD_$inp(P),
  45.       .I_DAT(Q),
  46.       .I_EN (1'b1),
  47.       .O_PAD_$out(),
  48.       .O_DAT(),
  49.       .O_EN (1'b0)
  50.       );
  51.  
  52.   end endgenerate
  53.  
  54. endmodule
  55.  
  56. module outpad(output P, input A);
  57.  
  58.   parameter IO_PAD  = "";
  59.   parameter IO_LOC  = "";
  60.   parameter IO_TYPE = "";
  61.  
  62.   generate if (IO_TYPE == "SDIOMUX") begin
  63.  
  64.       SDIOMUX_CELL _TECHMAP_REPLACE_ (
  65.       .I_PAD_$inp(),
  66.       .I_DAT(),
  67.       .I_EN (1'b1),
  68.       .O_PAD_$out(P),
  69.       .O_DAT(A),
  70.       .O_EN (1'b0)
  71.       );
  72.  
  73.   end else begin
  74.  
  75.       BIDIR_CELL # (
  76.       .ESEL     (1'b1),
  77.       .OSEL     (1'b1),
  78.       .FIXHOLD  (1'b0),
  79.       .WPD      (1'b0),
  80.       .DS       (1'b0)
  81.       ) _TECHMAP_REPLACE_ (
  82.       .I_PAD_$inp(),
  83.       .I_DAT(),
  84.       .I_EN (1'b0),
  85.       .O_PAD_$out(P),
  86.       .O_DAT(A),
  87.       .O_EN (1'b1)
  88.       );
  89.  
  90.   end endgenerate
  91.  
  92. endmodule
  93.  
  94. module bipad(input A, input EN, output Q, inout P);
  95.  
  96.   parameter IO_PAD  = "";
  97.   parameter IO_LOC  = "";
  98.   parameter IO_TYPE = "";
  99.  
  100.   generate if (IO_TYPE == "SDIOMUX") begin
  101.  
  102.       wire nEN;
  103.  
  104.       inv INV (
  105.       .A(EN),
  106.       .Q(nEN)
  107.       );
  108.  
  109.       SDIOMUX_CELL SDIOMUX (
  110.       .I_PAD_$inp(P),
  111.       .I_DAT(Q),
  112.       .I_EN (1'b1),
  113.       .O_PAD_$out(P),
  114.       .O_DAT(A),
  115.       .O_EN (nEN)
  116.       );
  117.  
  118.   end else begin
  119.  
  120.       BIDIR_CELL # (
  121.       .ESEL     (1'b1),
  122.       .OSEL     (1'b1),
  123.       .FIXHOLD  (1'b0),
  124.       .WPD      (1'b0),
  125.       .DS       (1'b0)
  126.       ) _TECHMAP_REPLACE_ (
  127.       .I_PAD_$inp(P),
  128.       .I_DAT(Q),
  129.       .I_EN (1'b1),
  130.       .O_PAD_$out(P),
  131.       .O_DAT(A),
  132.       .O_EN (EN)
  133.       );
  134.  
  135.   end endgenerate
  136.  
  137. endmodule
  138.  
  139. module ckpad(output Q, input P);
  140.  
  141.   parameter IO_PAD  = "";
  142.   parameter IO_LOC  = "";
  143.   parameter IO_TYPE = "";
  144.  
  145.   // TODO: Map this to a cell that would have two modes: one for BIDIR and
  146.   // one for CLOCK. For now just make it a BIDIR input.
  147.   BIDIR_CELL # (
  148.   .ESEL     (1'b1),
  149.   .OSEL     (1'b1),
  150.   .FIXHOLD  (1'b0),
  151.   .WPD      (1'b0),
  152.   .DS       (1'b0)
  153.   ) _TECHMAP_REPLACE_ (
  154.   .I_PAD_$inp(P),
  155.   .I_DAT(Q),
  156.   .I_EN (1'b1),
  157.   .O_PAD_$out(),
  158.   .O_DAT(),
  159.   .O_EN (1'b0)
  160.   );
  161.  
  162. endmodule
  163.  
  164. // ============================================================================
  165.  
  166. module gclkbuff(input A, output Z);
  167.  
  168.   // TODO: Map this to a VPR global clock buffer once the global clocn network
  169.   // is supported.
  170.   assign Z = A;
  171.  
  172. endmodule
  173.  
  174. // ============================================================================
  175. // basic logic elements
  176.  
  177. module inv (
  178.   output Q,
  179.   input A,
  180. );
  181.  
  182.   // The F-Frag
  183.   F_FRAG f_frag (
  184.   .F1(1'b1),
  185.   .F2(1'b0),
  186.   .FS(A),
  187.   .FZ(Q)
  188.   );
  189. endmodule
  190.  
  191. // ============================================================================
  192. // LUTs
  193.  
  194. module LUT1 (
  195.   output O,
  196.   input  I0
  197. );
  198.   parameter [1:0] INIT = 0;
  199.  
  200.   // The F-Frag
  201.   F_FRAG f_frag (
  202.   .F1(INIT[0]),
  203.   .F2(INIT[1]),
  204.   .FS(I0),
  205.   .FZ(O)
  206.   );
  207.  
  208. endmodule
  209.  
  210.  
  211. module LUT2 (
  212.   output O,
  213.   input  I0,
  214.   input  I1
  215. );
  216.   parameter [3:0] INIT = 0;
  217.  
  218.   wire XSL = I0;
  219.   wire XAB = I1;
  220.  
  221.   wire XA1 = INIT[0];
  222.   wire XA2 = INIT[1];
  223.   wire XB1 = INIT[2];
  224.   wire XB2 = INIT[3];
  225.  
  226.   // T_FRAG to be packed either into T_FRAG or B_FRAG.
  227.   T_FRAG # (
  228.   .XAS1(1'b0),
  229.   .XAS2(1'b0),
  230.   .XBS1(1'b0),
  231.   .XBS2(1'b0)
  232.   )
  233.   t_frag
  234.   (
  235.   .TBS(1'b1), // Always route to const1
  236.   .XAB(XAB),
  237.   .XSL(XSL),
  238.   .XA1(XA1),
  239.   .XA2(XA2),
  240.   .XB1(XB1),
  241.   .XB2(XB2),
  242.   .XZ (O)
  243.   );
  244.  
  245. endmodule
  246.  
  247.  
  248. module LUT3 (
  249.   output O,
  250.   input  I0,
  251.   input  I1,
  252.   input  I2
  253. );
  254.   parameter [7:0] INIT = 0;
  255.  
  256.   wire XSL = I1;
  257.   wire XAB = I2;
  258.  
  259.   // Two bit group [H,L]
  260.   // H =0:  T[AB]S[12] = GND, H=1:   VCC
  261.   // HL=00: T[AB][12]  = GND, HL=11: VCC, else I0
  262.  
  263.   wire XA1;
  264.   wire XA2;
  265.   wire XB1;
  266.   wire XB2;
  267.  
  268.   generate case(INIT[1:0])
  269.     2'b00:   assign XA1 = 1'b0;
  270.     2'b11:   assign XA1 = 1'b0;
  271.     default: assign XA1 = I0;
  272.   endcase endgenerate
  273.  
  274.   generate case(INIT[3:2])
  275.     2'b00:   assign XA2 = 1'b0;
  276.     2'b11:   assign XA2 = 1'b0;
  277.     default: assign XA2 = I0;
  278.   endcase endgenerate
  279.  
  280.   generate case(INIT[5:4])
  281.     2'b00:   assign XB1 = 1'b0;
  282.     2'b11:   assign XB1 = 1'b0;
  283.     default: assign XB1 = I0;
  284.   endcase endgenerate
  285.  
  286.   generate case(INIT[7:6])
  287.     2'b00:   assign XB2 = 1'b0;
  288.     2'b11:   assign XB2 = 1'b0;
  289.     default: assign XB2 = I0;
  290.   endcase endgenerate
  291.  
  292.   localparam XAS1 = INIT[0];
  293.   localparam XAS2 = INIT[2];
  294.   localparam XBS1 = INIT[4];
  295.   localparam XBS2 = INIT[6];
  296.  
  297.   // T_FRAG to be packed either into T_FRAG or B_FRAG.
  298.   T_FRAG # (
  299.   .XAS1(XAS1),
  300.   .XAS2(XAS2),
  301.   .XBS1(XBS1),
  302.   .XBS2(XBS2)
  303.   )
  304.   t_frag
  305.   (
  306.   .TBS(1'b1), // Always route to const1
  307.   .XAB(XAB),
  308.   .XSL(XSL),
  309.   .XA1(XA1),
  310.   .XA2(XA2),
  311.   .XB1(XB1),
  312.   .XB2(XB2),
  313.   .XZ (O)
  314.   );
  315.  
  316. endmodule
  317.  
  318.  
  319. module LUT4 (
  320.   output O,
  321.   input  I0,
  322.   input  I1,
  323.   input  I2,
  324.   input  I3
  325. );
  326.   parameter [15:0] INIT = 0;
  327.  
  328.   // Split a LUT4 into 2xLUT3 + F_FRAG
  329.   wire t;
  330.   wire b;
  331.  
  332.   LUT3 #(.INIT(INIT[7:0])) t_lut (
  333.     .I0(I0),
  334.     .I1(I1),
  335.     .I2(I2),
  336.     .O (t)
  337.   );
  338.  
  339.   LUT3 #(.INIT(INIT[15:8])) b_lut (
  340.     .I0(I0),
  341.     .I1(I1),
  342.     .I2(I2),
  343.     .O (b)
  344.   );
  345.  
  346.   // The F-Frag
  347.   F_FRAG f_frag (
  348.     .F1(t),
  349.     .F2(b),
  350.     .FS(I3),
  351.     .FZ(O)
  352.   );
  353.  
  354. endmodule
  355.  
  356. // ============================================================================
  357. // Flip-Flops
  358.  
  359. module dff(
  360.   output Q,
  361.   input  D,
  362.   input  CLK
  363. );
  364.  
  365.   parameter [0:0] INIT = 1'b0;
  366.  
  367.   Q_FRAG # (
  368.   .Z_QCKS (1'b1)
  369.   )
  370.   _TECHMAP_REPLACE_
  371.   (
  372.   .QCK(CLK),
  373.   .QST(1'b0),
  374.   .QRT(1'b0),
  375.   .QEN(1'b1),
  376.   .QDI(D),
  377.   .QDS(1'b1), // FIXME: Always select QDI as the FF's input
  378.   .CZI(),
  379.   .QZ (Q)
  380.   );
  381.  
  382. endmodule
  383.  
  384. module dffc(
  385.   output Q,
  386.   input  D,
  387.   input  CLK,
  388.   input  CLR
  389. );
  390.  
  391.   parameter [0:0] INIT = 1'b0;
  392.  
  393.   Q_FRAG # (
  394.   .Z_QCKS (1'b1)
  395.   )
  396.   _TECHMAP_REPLACE_
  397.   (
  398.   .QCK(CLK),
  399.   .QST(1'b0),
  400.   .QRT(CLR),
  401.   .QEN(1'b1),
  402.   .QDI(D),
  403.   .QDS(1'b1), // FIXME: Always select QDI as the FF's input
  404.   .CZI(),
  405.   .QZ (Q)
  406.   );
  407.  
  408. endmodule
  409.  
  410. module dffp(
  411.   output Q,
  412.   input  D,
  413.   input  CLK,
  414.   input  PRE
  415. );
  416.  
  417.   parameter [0:0] INIT = 1'b0;
  418.  
  419.   Q_FRAG # (
  420.   .Z_QCKS (1'b1)
  421.   )
  422.   _TECHMAP_REPLACE_
  423.   (
  424.   .QCK(CLK),
  425.   .QST(PRE),
  426.   .QRT(1'b0),
  427.   .QEN(1'b1),
  428.   .QDI(D),
  429.   .QDS(1'b1), // FIXME: Always select QDI as the FF's input
  430.   .CZI(),
  431.   .QZ (Q)
  432.   );
  433.  
  434. endmodule
  435.  
  436. module dffpc(
  437.   output Q,
  438.   input  D,
  439.   input  CLK,
  440.   input  CLR,
  441.   input  PRE
  442. );
  443.  
  444.   parameter [0:0] INIT = 1'b0;
  445.  
  446.   Q_FRAG # (
  447.   .Z_QCKS (1'b1)
  448.   )
  449.   _TECHMAP_REPLACE_
  450.   (
  451.   .QCK(CLK),
  452.   .QST(PRE),
  453.   .QRT(CLR),
  454.   .QEN(1'b1),
  455.   .QDI(D),
  456.   .QDS(1'b1), // FIXME: Always select QDI as the FF's input
  457.   .CZI(),
  458.   .QZ (Q)
  459.   );
  460.  
  461. endmodule
  462.  
  463. module dffe(
  464.   output Q,
  465.   input  D,
  466.   input  CLK,
  467.   input  EN
  468. );
  469.  
  470.   parameter [0:0] INIT = 1'b0;
  471.  
  472.   Q_FRAG # (
  473.   .Z_QCKS (1'b1)
  474.   )
  475.   _TECHMAP_REPLACE_
  476.   (
  477.   .QCK(CLK),
  478.   .QST(1'b0),
  479.   .QRT(1'b0),
  480.   .QEN(EN),
  481.   .QDI(D),
  482.   .QDS(1'b1), // FIXME: Always select QDI as the FF's input
  483.   .CZI(),
  484.   .QZ (Q)
  485.   );
  486.  
  487. endmodule
  488.  
  489. module dffec(
  490.   output Q,
  491.   input  D,
  492.   input  CLK,
  493.   input  EN,
  494.   input  CLR
  495. );
  496.  
  497.   parameter [0:0] INIT = 1'b0;
  498.  
  499.   Q_FRAG # (
  500.   .Z_QCKS (1'b1)
  501.   )
  502.   _TECHMAP_REPLACE_
  503.   (
  504.   .QCK(CLK),
  505.   .QST(1'b0),
  506.   .QRT(CLR),
  507.   .QEN(EN),
  508.   .QDI(D),
  509.   .QDS(1'b1), // FIXME: Always select QDI as the FF's input
  510.   .CZI(),
  511.   .QZ (Q)
  512.   );
  513.  
  514. endmodule
  515.  
  516. module dffepc(
  517.   output Q,
  518.   input  D,
  519.   input  CLK,
  520.   input  EN,
  521.   input  CLR,
  522.   input  PRE
  523. );
  524.  
  525.   parameter [0:0] INIT = 1'b0;
  526.  
  527.   Q_FRAG # (
  528.   .Z_QCKS (1'b1)
  529.   )
  530.   _TECHMAP_REPLACE_
  531.   (
  532.   .QCK(CLK),
  533.   .QST(PRE),
  534.   .QRT(CLR),
  535.   .QEN(EN),
  536.   .QDI(D),
  537.   .QDS(1'b1), // FIXME: Always select QDI as the FF's input
  538.   .CZI(),
  539.   .QZ (Q)
  540.   );
  541.  
  542. endmodule
  543.  
  544. module dffsc(
  545.   output Q,
  546.   input  D,
  547.   input  CLK,
  548.   input  CLR,
  549. );
  550.  
  551.   parameter [0:0] INIT = 1'b0;
  552.  
  553.   Q_FRAG # (
  554.   .Z_QCKS (1'b1)
  555.   )
  556.   _TECHMAP_REPLACE_
  557.   (
  558.   .QCK(CLK),
  559.   .QST(1'b0),
  560.   .QRT(CLR),
  561.   .QEN(1'b1),
  562.   .QDI(D),
  563.   .QDS(1'b1), // FIXME: Always select QDI as the FF's input
  564.   .CZI(),
  565.   .QZ (Q)
  566.   );
  567.  
  568. endmodule
  569. // ============================================================================
  570. // The "qlal4s3b_cell_macro" macro
  571.  
  572. module qlal4s3b_cell_macro (
  573.   input         WB_CLK,
  574.   input         WBs_ACK,
  575.   input  [31:0] WBs_RD_DAT,
  576.   output [3:0]  WBs_BYTE_STB,
  577.   output        WBs_CYC,
  578.   output        WBs_WE,
  579.   output        WBs_RD,
  580.   output        WBs_STB,
  581.   output [16:0] WBs_ADR,
  582.   input  [3:0]  SDMA_Req,
  583.   input  [3:0]  SDMA_Sreq,
  584.   output [3:0]  SDMA_Done,
  585.   output [3:0]  SDMA_Active,
  586.   input  [3:0]  FB_msg_out,
  587.   input  [7:0]  FB_Int_Clr,
  588.   output        FB_Start,
  589.   input         FB_Busy,
  590.   output        WB_RST,
  591.   output        Sys_PKfb_Rst,
  592.   output        Sys_Clk0,
  593.   output        Sys_Clk0_Rst,
  594.   output        Sys_Clk1,
  595.   output        Sys_Clk1_Rst,
  596.   output        Sys_Pclk,
  597.   output        Sys_Pclk_Rst,
  598.   input         Sys_PKfb_Clk,
  599.   input  [31:0] FB_PKfbData,
  600.   output [31:0] WBs_WR_DAT,
  601.   input  [3:0]  FB_PKfbPush,
  602.   input         FB_PKfbSOF,
  603.   input         FB_PKfbEOF,
  604.   output [7:0]  Sensor_Int,
  605.   output        FB_PKfbOverflow,
  606.   output [23:0] TimeStamp,
  607.   input         Sys_PSel,
  608.   input  [15:0] SPIm_Paddr,
  609.   input         SPIm_PEnable,
  610.   input         SPIm_PWrite,
  611.   input  [31:0] SPIm_PWdata,
  612.   output        SPIm_PReady,
  613.   output        SPIm_PSlvErr,
  614.   output [31:0] SPIm_Prdata,
  615.   input  [15:0] Device_ID,
  616.   input  [13:0] FBIO_In_En,
  617.   input  [13:0] FBIO_Out,
  618.   input  [13:0] FBIO_Out_En,
  619.   output [13:0] FBIO_In,
  620.   inout  [13:0] SFBIO,
  621.   input         Device_ID_6S,
  622.   input         Device_ID_4S,
  623.   input         SPIm_PWdata_26S,
  624.   input         SPIm_PWdata_24S,  
  625.   input         SPIm_PWdata_14S,
  626.   input         SPIm_PWdata_11S,
  627.   input         SPIm_PWdata_0S,
  628.   input         SPIm_Paddr_8S,
  629.   input         SPIm_Paddr_6S,
  630.   input         FB_PKfbPush_1S,
  631.   input         FB_PKfbData_31S,
  632.   input         FB_PKfbData_21S,
  633.   input         FB_PKfbData_19S,
  634.   input         FB_PKfbData_9S,
  635.   input         FB_PKfbData_6S,
  636.   input         Sys_PKfb_ClkS,
  637.   input         FB_BusyS,
  638.   input         WB_CLKS
  639. );
  640.  
  641.   ASSP #() _TECHMAP_REPLACE_
  642.   (
  643.   .WB_CLK           (WB_CLK         ),
  644.   .WBs_ACK          (WBs_ACK        ),
  645.   .WBs_RD_DAT       (WBs_RD_DAT     ),
  646.   .WBs_BYTE_STB     (WBs_BYTE_STB   ),
  647.   .WBs_CYC          (WBs_CYC        ),
  648.   .WBs_WE           (WBs_WE         ),
  649.   .WBs_RD           (WBs_RD         ),
  650.   .WBs_STB          (WBs_STB        ),
  651.   .WBs_ADR          (WBs_ADR        ),
  652.   .SDMA_Req         (SDMA_Req       ),
  653.   .SDMA_Sreq        (SDMA_Sreq      ),
  654.   .SDMA_Done        (SDMA_Done      ),
  655.   .SDMA_Active      (SDMA_Active    ),
  656.   .FB_msg_out       (FB_msg_out     ),
  657.   .FB_Int_Clr       (FB_Int_Clr     ),
  658.   .FB_Start         (FB_Start       ),
  659.   .FB_Busy          (FB_Busy        ),
  660.   .WB_RST           (WB_RST         ),
  661.   .Sys_PKfb_Rst     (Sys_PKfb_Rst   ),
  662.   .Sys_Clk0         (Sys_Clk0       ),
  663.   .Sys_Clk0_Rst     (Sys_Clk0_Rst   ),
  664.   .Sys_Clk1         (Sys_Clk1       ),
  665.   .Sys_Clk1_Rst     (Sys_Clk1_Rst   ),
  666.   .Sys_Pclk         (Sys_Pclk       ),
  667.   .Sys_Pclk_Rst     (Sys_Pclk_Rst   ),
  668.   .Sys_PKfb_Clk     (Sys_PKfb_Clk   ),
  669.   .FB_PKfbData      (FB_PKfbData    ),
  670.   .WBs_WR_DAT       (WBs_WR_DAT     ),
  671.   .FB_PKfbPush      (FB_PKfbPush    ),
  672.   .FB_PKfbSOF       (FB_PKfbSOF     ),
  673.   .FB_PKfbEOF       (FB_PKfbEOF     ),
  674.   .Sensor_Int       (Sensor_Int     ),
  675.   .FB_PKfbOverflow  (FB_PKfbOverflow),
  676.   .TimeStamp        (TimeStamp      ),
  677.   .Sys_PSel         (Sys_PSel       ),
  678.   .SPIm_Paddr       (SPIm_Paddr     ),
  679.   .SPIm_PEnable     (SPIm_PEnable   ),
  680.   .SPIm_PWrite      (SPIm_PWrite    ),
  681.   .SPIm_PWdata      (SPIm_PWdata    ),
  682.   .SPIm_PReady      (SPIm_PReady    ),
  683.   .SPIm_PSlvErr     (SPIm_PSlvErr   ),
  684.   .SPIm_Prdata      (SPIm_Prdata    ),
  685.   .Device_ID        (Device_ID      )
  686.   );
  687.  
  688.   // TODO: The macro "qlal4s3b_cell_macro" has a bunch of non-routable signals
  689.   // Figure out what they are responsible for and if there are any bits they
  690.   // control.
  691.  
  692. endmodule
  693.  
  694. module ram8k_2x1_cell_macro (
  695.     input [10:0] A1_0,
  696.     input [10:0] A1_1,
  697.     input [10:0] A2_0,
  698.     input [10:0] A2_1,
  699.     input CLK1_0 /* synthesis syn_isclock=1 */,
  700.     input CLK1_1 /* synthesis syn_isclock=1 */,
  701.     output Almost_Empty_0, Almost_Empty_1, Almost_Full_0, Almost_Full_1,
  702.     input ASYNC_FLUSH_0, ASYNC_FLUSH_1,CLK2_0, CLK2_1, ASYNC_FLUSH_S0, ASYNC_FLUSH_S1, CLK1EN_0, CLK1EN_1, CLK1S_0, CLK1S_1,CLK2EN_0,CLK2EN_1, CLK2S_0, CLK2S_1, CONCAT_EN_0, CONCAT_EN_1, CS1_0, CS1_1,CS2_0, CS2_1, DIR_0, DIR_1, FIFO_EN_0, FIFO_EN_1, P1_0, P1_1, P2_0,P2_1, PIPELINE_RD_0, PIPELINE_RD_1,
  703.     output [3:0] POP_FLAG_0,
  704.     output [3:0] POP_FLAG_1,
  705.     output [3:0] PUSH_FLAG_0,
  706.     output [3:0] PUSH_FLAG_1,
  707.     output [17:0] RD_0,
  708.     output [17:0] RD_1,
  709.     input  SYNC_FIFO_0, SYNC_FIFO_1,
  710.     input [17:0] WD_0,
  711.     input [17:0] WD_1,
  712.     input [1:0] WEN1_0,
  713.     input [1:0] WEN1_1,
  714.     input [1:0] WIDTH_SELECT1_0,
  715.     input [1:0] WIDTH_SELECT1_1,
  716.     input [1:0] WIDTH_SELECT2_0,
  717.     input [1:0] WIDTH_SELECT2_1,
  718.     input SD,DS,LS,SD_RB1,LS_RB1,DS_RB1,RMEA,RMEB,TEST1A,TEST1B,
  719.     input [3:0] RMA,
  720.     input [3:0] RMB);
  721.  
  722.     RAM #() _TECHMAP_REPLACE_
  723.     (
  724.       .A1_0(A1_0),
  725.       .A1_1(A1_1),
  726.       .A2_0(A2_0),
  727.       .A2_1(A2_1),
  728.       .CLK1_0(CLK1_0),
  729.       .CLK1_1(CLK1_1),
  730.       .Almost_Empty_0(Almost_Empty_0),
  731.       .Almost_Empty_1(Almost_Empty_1),
  732.       .Almost_Full_0(Almost_Full_0),
  733.       .Almost_Full_1(Almost_Full_1),
  734.       .ASYNC_FLUSH_0(ASYNC_FLUSH_0),
  735.       .ASYNC_FLUSH_1(ASYNC_FLUSH_1),
  736.       .CLK2_0(CLK1_0),
  737.       .CLK2_1(CLK2_1),
  738.       .CLK1EN_0(CLK1EN_0),
  739.       .CLK1EN_1(CLK1EN_1),
  740.       .CLK2EN_0(CLK2EN_0),
  741.       .CLK2EN_1(CLK2EN_1),
  742.       .CONCAT_EN_0(CONCAT_EN_0),
  743.       .CONCAT_EN_1(CONCAT_EN_1),
  744.       .CS1_0(CS1_0),
  745.       .CS1_1(CS1_1),
  746.       .CS2_0(CS2_0),
  747.       .CS2_1(CS2_1),
  748.       .DIR_0(DIR_0),
  749.       .DIR_1(DIR_1),
  750.       .FIFO_EN_0(FIFO_EN_0),
  751.       .FIFO_EN_1(FIFO_EN_1),
  752.       .P1_0(P1_0),
  753.       .P1_1(P1_1),
  754.       .P2_0(P2_0),
  755.       .P2_1(P2_1),
  756.       .PIPELINE_RD_0(PIPELINE_RD_0),
  757.       .PIPELINE_RD_1(PIPELINE_RD_1),
  758.       .POP_FLAG_0(POP_FLAG_0),
  759.       .POP_FLAG_1(POP_FLAG_1),
  760.       .PUSH_FLAG_0(PUSH_FLAG_0),
  761.       .PUSH_FLAG_1(PUSH_FLAG_1),
  762.       .RD_0(RD_0),
  763.       .RD_1(RD_1),
  764.       .SYNC_FIFO_0(SYNC_FIFO_0),
  765.       .SYNC_FIFO_1(SYNC_FIFO_1),
  766.       .WD_0(WD_0),
  767.       .WD_1(WD_1),
  768.       .WEN1_0(WEN1_0),
  769.       .WEN1_1(WEN1_1),
  770.       .WIDTH_SELECT1_0(WIDTH_SELECT1_0),
  771.       .WIDTH_SELECT1_1(WIDTH_SELECT1_1),
  772.       .WIDTH_SELECT2_0(WIDTH_SELECT2_0),
  773.       .WIDTH_SELECT2_1(WIDTH_SELECT2_1),
  774.       .SD(SD),
  775.       .DS(DS),
  776.       .LS(LS),
  777.       .SD_RB1(SD_RB1),
  778.       .LS_RB1(LS_RB1),
  779.       .DS_RB1(DS_RB1),
  780.       .RMEA(RMEA),
  781.       .RMEB(RMEB),
  782.       .RMA(RMA),
  783.       .RMB(RMB),
  784.       .TEST1A(TEST1A),
  785.       .TEST1B(TEST1B)
  786.   );
  787.  
  788. endmodule /* ram8k_2x1_cell_macro */
  789.  
  790. module qlal4s3_mult_32x32_cell (
  791.     input [31:0] Amult,
  792.     input [31:0] Bmult,
  793.     input [1:0] Valid_mult,
  794.     output [63:0] Cmult);
  795.  
  796.     MULT #() _TECHMAP_REPLACE_
  797.     (
  798.       .Amult(Amult),
  799.       .Bmult(Bmult),
  800.       .Valid_mult(Valid_mult),
  801.       .Cmult(Cmult),
  802.       .sel_mul_32x32(1'b1)
  803.     );
  804.  
  805. endmodule /* qlal4s3_32x32_mult_cell */
  806.  
  807. module qlal4s3_mult_16x16_cell (
  808.     input [15:0] Amult,
  809.     input [15:0] Bmult,
  810.     input [1:0] Valid_mult,
  811.     output [31:0] Cmult);
  812.  
  813.     wire [31:0] Amult_int;
  814.     wire [31:0] Bmult_int;
  815.     wire [63:0] Cmult_int;
  816.  
  817.     assign Amult_int = {16'b0, Amult};
  818.     assign Bmult_int = {16'b0, Bmult};
  819.     assign Cmult = Cmult_int[15:0];
  820.  
  821.     MULT #() _TECHMAP_REPLACE_
  822.     (
  823.       .Amult(Amult_int),
  824.       .Bmult(Bmult_int),
  825.       .Valid_mult(Valid_mult),
  826.       .Cmult(Cmult_int),
  827.       .sel_mul_32x32(1'b0)
  828.     );
  829.  
  830. endmodule /* qlal4s3_16x16_mult_cell */
  831.  
  832. module qlal4s3_mult_cell_macro(
  833.     input [31:0] Amult,
  834.     input [31:0] Bmult,
  835.     input [1:0] Valid_mult,
  836.     input sel_mul_32x32,
  837.     output [63:0] Cmult);
  838.  
  839.     MULT #() _TECHMAP_REPLACE_
  840.     (
  841.       .Amult(Amult),
  842.       .Bmult(Bmult),
  843.       .Valid_mult(Valid_mult),
  844.       .Cmult(Cmult),
  845.       .sel_mul_32x32(sel_mul_32x32)
  846.     );
  847. endmodule
Advertisement
Add Comment
Please, Sign In to add comment