Intel® FPGA University Program
University Program Material, Education Boards, and Laboratory Exercises
1174 Discussions

DE2 - VGA Draw Text generate Stack Overflow on quartus_map.exe while compiling

Altera_Forum
Honored Contributor II
1,329 Views

Hello community, 

 

I try to text information to VGA to display it on screen. Everything works fine. I convert characters of a font to 2D integer position xy-array and read it out in a loop to make this pixels black, if they are equal with horizontal and vertical counter from VGA Synchronisation. 

 

But if a increase the amount of text to display from 2 lines (about 80 characters) to 3 lines (about 120 characters) I get the following error message while compiling (don't rise over 10%): 

 

*** Fatal Error: Stack Overflow Module: quartus_map.exeStack Trace:0xc9dbb: vrfx_add_to_extractor_migration_report +0x1e00b (synth_vrfx)0xca52a: vrfx_add_to_extractor_migration_report +0x1e77a (synth_vrfx)0xca52a: vrfx_add_to_extractor_migration_report +0x1e77a (synth_vrfx)....100 times the sameEnd-traceExecutable: quartus_mapComment:NoneSystem InformationPlatform: windows64OS name: Windows 7OS version:6.2Quartus II InformationAddress bits:64Version:14.1.0Build:186Edition: Web Edition 

 

I don't understand why, in my view, such a small difference provocate the error.  

 

At the border from fail and not fail, Quartus give me the feedback: 

 

Warning (11085): Combinational logic depth is over 6000, which may cause stack overflow. The synthesis may fail. 

 

If I increase the array size now per one, the error will come. 

 

My array which is the reason for the error looks like: 

signal STR_TEXT : ARRAY_TEXT(2 downto 0); --TEXT INITALISIERUNG 

 

and it contain the following definition:  

type ARRAY_LINE is array (CHAR_COLS downto 0) of character; --LINE ARRAY type ARRAY_TEXT is array (natural range <>) of ARRAY_LINE; --TEXT ARRAY  

so ARRAY_TEXT is an array of ARRAY_LINE which contain a array of characters. 

 

And at the end the inisalisation of TEXT_ARRAY looks like: 

STR_TEXT(0) <= DRAW_LINE("......VHDL VGA TEXT", '.'); STR_TEXT(1) <= DRAW_LINE("......SELFCREATED BY", '.'); STR_TEXT(2) <= DRAW_LINE("......TOOL FROM FONT", '.'); --WILL WORK STR_TEXT(3) <= DRAW_LINE("......TO PIXEL POSITION", '.'); --WILL FAIL 

 

Function DRAW_LINE only fill up the character array with '.' until the screen end. 

--DRAW LINE FUNCTION function DRAW_LINE(Word: string; Fill: character) return ARRAY_LINE is variable temp : ARRAY_LINE; begin --LOOP CHARS IN LINE for c in ARRAY_LINE'range loop if(Word'length > c) then temp(c) := Word(c+1); else temp(c) := Fill; end if; end loop; return temp; end function; 

 

 

The 2D Array for the char 'a' looks like this: 

when 'a' => temp := ((6, 2), (6, 3), (6, 4), (6, 5), (7, 2), (7, 3), (7, 5), (7, 6), (8, 2), (8, 3), (8, 4), (8, 5), (8, 6), (9, 1), (9, 2), (9, 5), (9, 6), (10, 1), (10, 2), (10, 3), (10, 4), (10, 5), (10, 6), (10, 7), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0));  

 

I understand that there are a lot of information in one array. Maybe I need RAM stuff the store it correctly but I don't know how. So anyone know how I can solve this issue?
0 Kudos
3 Replies
Altera_Forum
Honored Contributor II
524 Views

Hi  

 

1.Which Quartus version your are using?Try with latest Quartus version. 

2.To work around this problem, reduce the number of consecutive LUTs between registers. Alternatively try a different operating system as the maximum stack size is defined by the operating system. 

 

Best Regards, 

Anand Raj Shankar 

(This message was posted on behalf of Intel Corporation)
0 Kudos
Altera_Forum
Honored Contributor II
524 Views

Hello Anand, 

 

thank you for your response. 

 

I use  

Version:14.1.0  

Build:186  

Edition: Web Edition 

 

the problem I have is that newer versions do not support Cyclone IV E (EP4CE115F29C7) Boards. I there a way to use newer versions with older boards? 

 

To your second point, how could I realize that? 

 

Greetings Martin.
0 Kudos
Altera_Forum
Honored Contributor II
524 Views

Hi Martin, 

 

1.If you can't find the board in newer Quartus version,You should add it from design store check the image. 

2.Due to a problem in the Quartus II software version 14 and earlier, you may see this error when you compile a design containing a long series of LUTs with no registers. 

Or 

Increase the stack size of OS. 

 

Best Regards, 

Anand Raj Shankar 

(This message was posted on behalf of Intel Corporation) 

https://www.alteraforum.com/forum/attachment.php?attachmentid=14474
0 Kudos
Reply