Placer failure with many linked DMAs

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
Panometric
Level 5
Level 5
100 sign-ins 100 replies posted 10 solutions authored

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>

   
0 Likes
1 Solution
Panometric
Level 5
Level 5
100 sign-ins 100 replies posted 10 solutions authored

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)";

View solution in original post

0 Likes
3 Replies
Panometric
Level 5
Level 5
100 sign-ins 100 replies posted 10 solutions authored

   

0 Likes
rola_264706
Level 8
Level 8
50 likes received 25 likes received 10 likes received

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.

0 Likes
Panometric
Level 5
Level 5
100 sign-ins 100 replies posted 10 solutions authored

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)";

0 Likes