UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Observer rganesaa
Observer
4,535 Views
Registered: ‎09-18-2016

Does Xilinx Vivado 2015.2 support dynamic queue?

I am using Xilinx Vivado 2015.2 64 bit.

While running the following simulation I am getting the following error:

FATAL_ERROR: Vivado simulator Kernel has discovered an exceptional condition from which it cannot recover. Process will terminate.

Now the module:

module q();
wire a,b;
endmodule

Test bench for the module:

module tb_q();
reg a,b;
int gan [4] [$];
initial
    begin
    gan[2].push_back(67);
    $monitor("gan= %p",gan);
    end
endmodule

Any help will be deeply appreciated.

Thanks.

0 Kudos
6 Replies
Teacher muzaffer
Teacher
4,508 Views
Registered: ‎03-31-2012

Re: Does Xilinx Vivado 2015.2 support dynamic queue?

I am not sure how the tb_q is a test bench for module q when it doesn't even instantiate it.
As to your problem, I'd start with just a queue (not dynamic queue by the way, SV has dynamic arrays and queues as separate types) instead of an array of queues.
I am not sure how well queues are supported yet but it would be a good idea to give 2016.2 a try too.

 

PS HLS is really not a good place for this port. Try the "design entry" group.

- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.
0 Kudos
Observer rganesaa
Observer
4,493 Views
Registered: ‎09-18-2016

Re: Does Xilinx Vivado 2015.2 support dynamic queue?

I thank muzaffer for his reply which enhanced my understanding.

 

I am sorry the line instantiating the module in the test bench was missing as was righty pointed out.

 

I tried the following code:

'timescale 1ns/1ps

 

module q (output o);

 

int o;

int gan[$]={1,2,3};

 

initial

begin

   o = gan.pop_front();

end

 

endmodule

 

which failed to synthesize with error message dollar-sign operator not supported.

 

It would be appreciated if anybody can clarify whether later Vivado versions support queues.

 

Yours sincerely,

R. Ganesan.

 

PS:

(I) I will try future posts in design entry group as I am a newbie.

(2) I am also uncomfortable with time displayed in message I am from India and which settings should I change to reflect message timing to be in synchronism with local timings.

 

 

 

0 Kudos
Xilinx Employee
Xilinx Employee
4,460 Views
Registered: ‎10-24-2013

Re: Does Xilinx Vivado 2015.2 support dynamic queue?

Hi @rganesaa

We do support queues with Vivado simulator but not with synthesis.
http://www.xilinx.com/support/documentation/sw_manuals/xilinx2016_2/ug900-vivado-logic-simulation.pdf - page 186
I dont see this in the road-map. The place it gets difficult to synthesize is where there is dynamically allocated storage. This would be class objects, queues, dynamic arrays, and strings. as well as dynamically created processes with fork/join

Thanks,Vijay
--------------------------------------------------------------------------------------------
Please mark the post as an answer "Accept as solution" in case it helped resolve your query.
Give kudos in case a post in case it guided to the solution.
0 Kudos
Teacher muzaffer
Teacher
4,449 Views
Registered: ‎03-31-2012

Re: Does Xilinx Vivado 2015.2 support dynamic queue?

queues, like any other dynamic objects, can not be supported for synthesis.
- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.
0 Kudos
Observer rganesaa
Observer
4,447 Views
Registered: ‎09-18-2016

Re: Does Xilinx Vivado 2015.2 support dynamic queue?

Dear Sir/Madam,

 

I thank you for your reply.

 

I understand that dynamic memory is not supported for synthesis.

 

Upon your reply, I carefully simulated Vivado 2015.2 64 bit edition for its support to Queues with .sv design files.

 

The following was my source file:

`timescale 1ns / 1ps
module q(input o);
wire [31:0]  o;

endmodule

 

The following was my test bench file:

`timescale 1ns / 1ps
module tb_q();
int o;
q q1(.o(o));
reg [31:0] gan[1][$];
initial
begin
 gan[1].push_back(67);
 o=gan[1].pop_back();
 $monitor("gan= %p",o);

end
endmodule

 

While the program successfully runs with reg [31:0] gan[$] with array of queues  reg [31:0] gan[1][$] it fails to simulate with FATAL_ERROR: Vivado Simulator kernel has discovered an exceptional condition from which it cannot recover. Process will terminate.

 

But to my surprise, with array of queues reg [31:0] gan [1] [$] Vivado simulator identifies queues as Three dimensional array  as gan [0:0] [0:0] [31:0] which is interesting whereas I expected it to identify the queue as Two dimensional array reg [31:0] gan [0:1].

 

Any insight on this will be interesting as it will enhance understanding of dynamic memory allocation in simulation tools.

 

Thanking you,

 

Yours sincerely,

R. Ganesan.

 

0 Kudos
Xilinx Employee
Xilinx Employee
4,402 Views
Registered: ‎10-24-2013

Re: Does Xilinx Vivado 2015.2 support dynamic queue?

Hi @rganesaa

Can you please try using Vivado 2016.2 and see if you get the intended results?

Thanks,Vijay
--------------------------------------------------------------------------------------------
Please mark the post as an answer "Accept as solution" in case it helped resolve your query.
Give kudos in case a post in case it guided to the solution.
0 Kudos