How to assign a packed type to an unpacket type

Hello ,
I have the following code where there is a syntax error as

** Error (suppressible): (vlog-2997) pcie_dma_slave_monitor.sv(98): Illegal assignment to type ‘reg[31:0] $’ from type ‘reg[31:0]’: Cannot assign a packed type to an unpacked type.

I would like to get the entire frame on pcie_dmac_data signal and send it to my scoreboard,how can I do that?
I am getting the above error

    task send_to_pcie_xfer_processor(       
                 input [63:0] pcie_dmac_address ,
                 input [9:0]  pcie_dmac_len ,
                 input [31:0] pcie_dmac_data
 );
   pcie_dma_slave_transaction pcie_dma_trans;
   pcie_dma_trans = pcie_dma_slave_transaction::type_id::create("pci_dma_trans",this);
   pcie_dma_trans.data    = new[pcie_dmac_len];
   pcie_dma_trans.data    = pcie_dmac_data;
   analysisport_pcie_xfer_processor.write(pcie_dma_trans);
endtask 

I have declared my pcie_dma_slave_transaction as shown below

class pcie_dma_slave_transaction extends uvm_sequence_item;
 logic [31:0] data[] ; 
 endclass : pcie_dma_slave_transaction

can some one please help me with the assignment and how i solve this error
Thanks,
Rami.

In reply to rdornala_rami:

Rami,

You seem to have lots of problems dealing with arrays.

Did you mean to declare pcie_dmac_data as an array too? Then your code would be

task send_to_pcie_xfer_processor(       
                 input [63:0] pcie_dmac_address ,
                 input [9:0]  pcie_dmac_len ,
                 input [31:0] pcie_dmac_data[]
 );
   pcie_dma_slave_transaction pcie_dma_trans;
   pcie_dma_trans = pcie_dma_slave_transaction::type_id::create("pci_dma_trans",this);
   pcie_dma_trans.data    = pcie_dmac_data;
   analysisport_pcie_xfer_processor.write(pcie_dma_trans);
endtask

Otherwise, there is only one element of data to assign if pcie_dmac_data is not an array.

   pcie_dma_trans.data    = {pcie_dmac_data};

Either way, there is no need to new the dynamic array as the assignment will take care of it for you.