09-18-2016 03:16 AM
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  [$]; initial begin gan.push_back(67); $monitor("gan= %p",gan); end endmodule
Any help will be deeply appreciated.
09-18-2016 08:12 AM - edited 09-18-2016 08:13 AM
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.
09-18-2016 02:15 PM
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:
module q (output o);
o = gan.pop_front();
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.
(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.
09-19-2016 06:41 AM - edited 09-19-2016 06:45 AM
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
09-19-2016 12:52 PM
09-19-2016 04:39 PM
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;
The following was my test bench file:
`timescale 1ns / 1ps
reg [31:0] gan[$];
While the program successfully runs with reg [31:0] gan[$] with array of queues reg [31:0] gan[$] 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  [$] 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.
09-21-2016 11:53 PM
Can you please try using Vivado 2016.2 and see if you get the intended results?