3 Replies Latest reply on Apr 6, 2017 10:50 AM by MikeMitchell

    Placer failure with many linked DMAs

    MikeMitchell

      The attached project can be built if the links between XxDMA and XxDMAB are removed.  But if the 3 chain links are added, it fails to place some of the USB DMA.  It will also build if many of the TxDMA_X is disabled. 

         

      I'm not using all the DMAs - what is the problem? 

         

      Error message:

         
          

      Error: plm.M0046: E2806: Failed to place fixed-function blocks. See the report file for details.
      Error: plm.M0046: "C:\Program Files (x86)\Cypress\PSoC Creator\4.0\PSoC Creator\bin/sjplacer.exe" failed (0xFFFFFFFF)

         
         

      From the Report File:

         
          

      <CYPRESSTAG name="Digital Placement">
      Error: plm.M0046: E2806: Failed to place fixed-function blocks. See the report file for details.
      "C:\Program Files (x86)\Cypress\PSoC Creator\4.0\PSoC Creator\bin/sjplacer.exe" --proj-name "Temp" --netlist-vh2 "Temp_p.vh2" --arch-file "C:\Program Files (x86)\Cypress\PSoC Creator\4.0\PSoC Creator\dev/arch/p4_udb2x4.ark" --rrg-file "C:\Program Files (x86)\Cypress\PSoC Creator\4.0\PSoC Creator\dev/psoc4/2/route_arch-rrg.cydata" --irq-file "C:\Program Files (x86)\Cypress\PSoC Creator\4.0\PSoC Creator\dev/psoc4/2/irqconn.cydata" --drq-file "C:\Program Files (x86)\Cypress\PSoC Creator\4.0\PSoC Creator\dev/psoc4/2/triggerconn.cydata" --dsi-conn-file "C:\Program Files (x86)\Cypress\PSoC Creator\4.0\PSoC Creator\dev/psoc4/2/dsiconn.cydata" --pins-file "pins_124-VFBGA.xml" --lib-file "Temp_p.lib" --sdc-file "Temp.sdc" --io-pcf "Temp.pci" --outdir .
      <CYPRESSTAG name="Detailed placement messages">
      I2807: The following instances could not be placed: \USBFS:ep3_dma\, \USBFS:ep4_dma\, \USBFS:ep6_dma\, USBOutDMA, USBInDMA
      DMA placement:
      DMA 0: <empty>
      DMA 1: <empty>
      DMA 2: TxDMAB_1
      DMA 3: TxDMAB_0
      DMA 4: <empty>
      DMA 5: <empty>
      DMA 6: <empty>
      DMA 7: <empty>
      DMA 8: RxDMAB_1
      DMA 9: RxDMAB_0
      DMA 10: TxDMA_1
      DMA 11: TxDMA_0
      DMA 12: RxDMA_1
      DMA 13: RxDMA_0
      DMA 14: \USBFS:ep1_dma\
      DMA 15: \USBFS:ep2_dma\
      DMA 16: <empty>
      DMA 17: <empty>
      DMA 18: <empty>
      DMA 19: <empty>
      DMA 20: <empty>
      DMA 21: <empty>
      DMA 22: <empty>
      DMA 23: <empty>
      DMA 24: <empty>
      DMA 25: <empty>
      DMA 26: <empty>
      DMA 27: <empty>
      DMA 28: <empty>
      DMA 29: <empty>
      DMA 30: <empty>
      DMA 31: <empty>

          

      E2806: Failed to place fixed-function blocks. See the report file for details.
      </CYPRESSTAG>

         
        • 2. Re: Placer failure with many linked DMAs
          user_242978793

          Mike you ran out of resources I disabled 4 of the DMA components and it compiled without issues.   Your part only supports 8 UDB devices.  Select a bigger part.

          • 3. Re: Placer failure with many linked DMAs
            MikeMitchell

            Bob, thanks. But my part actually has 32 DMAs and the error is not over UDBs.  As I said, if you just remove the links from tr_out to tr_in it builds fine. 

               

            The problem is more nuanced, support gave me a workaround to put this in a control file. It seems to work well.  In fact, now I can build it with twice as many linked DMAs. 

               

            ATTRIBUTE placement_force OF \USBFS:ep1_dma\ : LABEL IS "DMA(0,8)";
            ATTRIBUTE placement_force OF \USBFS:ep2_dma\ : LABEL IS "DMA(0,9)";
            ATTRIBUTE placement_force OF \USBFS:ep3_dma\ : LABEL IS "DMA(0,10)";
            ATTRIBUTE placement_force OF \USBFS:ep4_dma\ : LABEL IS "DMA(0,11)";
            ATTRIBUTE placement_force OF \USBFS:ep5_dma\ : LABEL IS "DMA(0,12)";
            ATTRIBUTE placement_force OF \USBFS:ep6_dma\ : LABEL IS "DMA(0,13)";
            ATTRIBUTE placement_force OF \USBFS:ep7_dma\ : LABEL IS "DMA(0,14)";
            ATTRIBUTE placement_force OF \USBFS:ep8_dma\ : LABEL IS "DMA(0,15)";