bluespec.com Forum Index bluespec.com
Bluespec Forums
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Infeasible Ramstyle in Vivado

 
Post new topic   Reply to topic    bluespec.com Forum Index -> Tools: Other
View previous topic :: View next topic  
Author Message
Oyku



Joined: 27 Jul 2016
Posts: 7

PostPosted: Sun Sep 11, 2016 7:52 am    Post subject: Infeasible Ramstyle in Vivado Reply with quote

I geneated some BRAMs using Bluespec Verilog.
Code:

BRAM_DUAL_PORT#(Bit#(TExp#(N)), Bit#(64)) bN <- mkBRAMCore2Load(valueOf(TExp#(N)), False , "N.bin", False);

I am using the generated verilog file in Vivado Design Suite with the Bluespec Library File BRAM2Load.v.Everything is working as intended without any errors. But when I checked the utilization I saw that instead of brams, Luts are used.
I added this inside the BRAM2Load.v.
Code:
(* ram_style ="block" *) reg [DATA_WIDTH-1:0]           RAM[0:MEMSIZE-1]
Right now i am getting [Synth 8-3463] Infeasible ramstyle = block set for RAM RAM_reg,trying to implement using LUTRAM.

Thank you for your time.
Back to top
View user's profile Send private message
quark
Site Admin


Joined: 02 Nov 2007
Posts: 493

PostPosted: Sun Sep 11, 2016 3:51 pm    Post subject: Re: Infeasible Ramstyle in Vivado Reply with quote

The Bluespec release includes a directory of alternate Verilog files that you should use when synthesizing with Vivado. It is located at $BLUESPECDIR/Verilog.Vivado/ instead of $BLUESPECDIR/Verilog/. The BRAM2Load.v file there is identical to the default version but it has the attribute, which you mentioned:
Code:
(* RAM_STYLE = "BLOCK" *)

If you have added the attribute, I do not know why you are getting the error. Different versions of Vivado have may have different style requirements for inference or may have restrictions or bugs. What version of Vivado are you using? The provided Verilog files were written for Vivado 14.x. You may want to look on the Vivado support website to see if you're using the BRAM in a way that is restricted for BRAM inference.

I also notice that you're using a module from the BRAMCore package and not from the BRAM package (which wraps the core modules). Is there a reason that you chose to use the Core package? If you switch the using a module from the BRAM package (which is recommended), the synthesis problem might also go away.
Back to top
View user's profile Send private message
Oyku



Joined: 27 Jul 2016
Posts: 7

PostPosted: Mon Sep 12, 2016 2:52 pm    Post subject: Reply with quote

I tried using my code in Vivado 2016.2, 2015.4 and also after you mentioned 2014.x I tried 2014.1. Same result in all of them.

So I changed the code from BRAMCore to
Code:

BRAM_Configure cfg = defaultValue;
cfg.allowWriteResponseBypass = False;
cfg.loadFormat = tagged Hex "0.bin" ;
BRAM2Port#(Bit#((TExp#(N))), Bit#(64)) d <- mkBRAM2Server(cfg);

It still gave the same problem.

I commented out nearly everything other than the code above to check if something else was interfering but it still didnt work.

So I tried the single port version.
Code:

BRAM_Configure cfg = defaultValue;
cfg.allowWriteResponseBypass = False;
cfg.loadFormat = tagged Hex "0.bin" ;
BRAM1Port#(Bit#((TExp#(N))), Bit#(64)) d <- mkBRAM1Server(cfg);


And it is working correctly in version 2014.1, not using the lut but the block ram tiles. So there seems to be something with the BRAM2Load I believe. It is still giving the error in 2016.2.
Back to top
View user's profile Send private message
Oyku



Joined: 27 Jul 2016
Posts: 7

PostPosted: Tue Sep 13, 2016 6:09 pm    Post subject: Reply with quote

Ok, I solved the problem. It is working as wanted for the 2014.1 version.

I just added some (*dont_touch = "true" ) 's to all of the output registers of all of the brams and it seems it is working. Smile
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    bluespec.com Forum Index -> Tools: Other All times are GMT - 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You can attach files in this forum
You can download files in this forum
bluespec.com topic RSS feed 


Powered by phpBB © 2001, 2005 phpBB Group
Protected by Anti-Spam ACP