Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronic Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Register Log in

My FPGA Basys 3 Board is not showing output?

D

daskk62

Guest
Actually I am working in an DSP alorithm, in the top module of my verilog code I called my data as given in attatched file. But when I am dumping bitstream in the FPGA Basys 3 kit ( LEDs as output) the FPGA is not showing any output. Why? can anybody help me to solve it. (It is working properly in the simulation phase but not in hardware). Also when I did the synthesis and run the post synthesis simulation in my Vivado 2018.2, it is only showing 0's in the output. please help me to solve it.

I am getting a warning when I ran the simulation
[Synth 8-6040] Register i_reg_rep driving address of a ROM cannot be packed in BRAM/URAM because of presence of initial value.
 

Attachments

  • 741 bytes Views: 3

ads-ee

Super Moderator
Staff member
Joined
Sep 10, 2013
Messages
7,562
Helped
1,768
Reputation
3,542
Reaction score
1,710
Trophy points
113
Location
USA
Activity points
55,758
There is two different type of Verilog statements "Synthesizable" and "Non-Synthesizable".
Some of the Verilog expression are simulation only. Therefore your rom data wont be loaded into register.
http://www.asic-world.com/verilog/synthesis2.html
Don't think this has anything to do with the problem the OP is having. $readmemh is synthesiable, but I have never seen anyone put it inside a always block. It is typically done in an initial block (note this does work for FPGAs).

You are also using blocking assignments in your edge sensitive always block, which can cause problems, you should always use non-blocking assignments in edge sensitive always blocks.

Don't know if either of those is the issue, but with the posted code that doesn't show how imff1 is generated, those are the two issues I see in the code. Removed both instantiations and the rom_memory loads in simulation, but as it is not in an initial block so it is being loaded every clock cycle which is not possible, so perhaps this might be ignored by synthesis (simulation doesn't care).

- - - Updated - - -

I am getting a warning when I ran the simulation
[Synth 8-6040] Register i_reg_rep driving address of a ROM cannot be packed in BRAM/URAM because of presence of initial value.
Also this is not a simulation warning it is a synthesis warning. Besides this you should be using a standard template to infer a RAM/ROM in your code. This usually means NO reset on the RAM/ROM always block. If you have resets it ends up having problems packing registers into the RAM blocks as the synthesis message indicates.
 

Toggle Sidebar

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top