OpenCores
no use no use 1/1 no use no use
FPGA Xilinx RAM Instantiation
by Unknown on Mar 15, 2005
Not available!
Good day to everyone,
I have one quick question regarding instantiating FPGA RAM instances
to make the PCI bridge fully downloadable to an FPGA. I have defined the
"XILINX" and "FPGA" constants, which cause pci_wb_tram module to use
Xilinx's RAMB4_S16_S16 to construct FIFO RAMs. If these two constants are
not defined, a generic RAM model is used instead, constructed from a
couple of always@ blocks, and register arrays. The problem i am hacing is
that when these RAM instances are used, i get many conflict warning
messages :

# Memory Collision Error on
RAMB4_S16_S16:SYSTEM.bridge32_top.bridge.wishbone_slave_unit.fifos.wbr_fifo_storage.ramb4_s16_s16_1.display_zero
at simulation time 456465.000 ns
# A read was performed on address 0a (hex) of Port B while a write was
requested to the same address on Port A. The write will be successful
however the read value on Port B is unknown until the next CLKB cycle.

Which refer to an address conflict on the RAM's two ports. As wired in
pci_wbw_wbr_fifos.v, the read port of each RAM is always set to read (chip
select and output enable are hardwired to 1) which would surely cause a
problem at some point of the bridge's peration. The problem is that i have
tried changing the hardwiring from 1 to a condition whichcould guarantee
that each instance is not written and read at the same time, but every
change i've made either makes no difference, or causes the bridge to
malfunction. This conflict is an address conflict, and occurs when the
FIFO is empty and thus the two points (read and write) point to the same
address.

With the conflicts, the functional code still works fine, but the post-PNR
simulation model does not. The simulation model works fine if the gneric
RAM instance is used (register arrays), but not if this conflict with
other RAM instances are present.

Has anyone else encountered this or a similar problem when instantiating
RAM instances for RAM? I would like to avoid generating a seperate RAM
instance and therefore i would be most grateful for any help.

Than kyou!
George Michelogiannakis
FPGA Xilinx RAM Instantiation
by Unknown on Mar 16, 2005
Not available!
Hi! The address conflict occurs every time the FIFO is empty and something in written into it. This should not cause a problem, since the data is not used until at least 2 read clock cycles after the write. I've once had similar problems with the RAM sim models as you are describing. I found out that the models were not working as they should and when I replaced the models with a different version, everything started working. As I can see, your model reports that data on port B is unknown until next clk B. That's expected and handled by the core. The faulty models I've mentioned kept the data in the unknown state indefenitely. Can you check if that happens in your case? Best regards, Miha Dolenc ----- Original Message ----- From: "Mihelogiannakis giorgos" mihelog@csd.uoc.gr> To: pci@opencores.org> Sent: Tuesday, March 15, 2005 10:39 PM Subject: [pci] FPGA Xilinx RAM Instantiation
Good day to everyone,
I have one quick question regarding instantiating FPGA RAM instances
to make the PCI bridge fully downloadable to an FPGA. I have defined the
"XILINX" and "FPGA" constants, which cause pci_wb_tram module to use
Xilinx's RAMB4_S16_S16 to construct FIFO RAMs. If these two constants are
not defined, a generic RAM model is used instead, constructed from a
couple of always@ blocks, and register arrays. The problem i am hacing is
that when these RAM instances are used, i get many conflict warning
messages :

# Memory Collision Error on

RAMB4_S16_S16:SYSTEM.bridge32_top.bridge.wishbone_slave_unit.fifos.wbr_fifo_
storage.ramb4_s16_s16_1.display_zero
at simulation time 456465.000 ns
# A read was performed on address 0a (hex) of Port B while a write was
requested to the same address on Port A. The write will be successful
however the read value on Port B is unknown until the next CLKB cycle.

Which refer to an address conflict on the RAM's two ports. As wired in
pci_wbw_wbr_fifos.v, the read port of each RAM is always set to read (chip


select and output enable are hardwired to 1) which would surely cause a problem at some point of the bridge's peration. The problem is that i have tried changing the hardwiring from 1 to a condition whichcould guarantee that each instance is not written and read at the same time, but every change i've made either makes no difference, or causes the bridge to malfunction. This conflict is an address conflict, and occurs when the FIFO is empty and thus the two points (read and write) point to the same address. With the conflicts, the functional code still works fine, but the post-PNR simulation model does not. The simulation model works fine if the gneric RAM instance is used (register arrays), but not if this conflict with other RAM instances are present. Has anyone else encountered this or a similar problem when instantiating RAM instances for RAM? I would like to avoid generating a seperate RAM instance and therefore i would be most grateful for any help. Than kyou! George Michelogiannakis _______________________________________________ http://www.opencores.org/mailman/listinfo/pci



FPGA Xilinx RAM Instantiation
by Unknown on Mar 16, 2005
Not available!
Hello and thanks for your reply!

The RAMB4_S16_S16 module i am using is the one included with Xilinx ISE
6.2.03i, and it's version is: 1.21.4.2 2003/12/05 00:34:0. If you supress
the
conflict warning messages by defining DISABLE_COLLISION_CHECK everything
works fine and you don't even notice any difference. This means that the
RAM instances work well, and don't go to an unknown state for infinity.
However, this is in functional simulation only.

Post PNR simulation suffers though. I am unsure whether the problem you
were encountering occured in functional simulation, after synthesis or
both, but in my case although functional simulation is healthy as ever,
post PNR simulation is not. The problem i am having is that during
testing the initial configuration values (in test_initial_conf.v), the
bridge never acks a read request in address x104. Right before this read
request, a write request at the same address with data 10000000 was
acknowledged. What's worrying is that (as i've seen) configuration space
makes no use of these RAM instances, so i can come up with no explanation
why this is happening. Unfortunately, i cannot generate this model with
the original hierarchy, so debugging is close to impossible. In functional
simulation, the read request the shows the problem, returns the data
written right before. The behaviour before that read request, is the
same./

Before defining FPGA and XILINX (and thus instantiating any RAM modules)
post PNR simulation was fine in all testcases. Is this any close to the
problem you are referring to, and thus is fixed with an updated version of
these RAMs? Do you have any other ideas?

Thank you!
George Michelogiannakis


On Wed, 16 Mar 2005, Miha Dolenc wrote:

Hi! The address conflict occurs every time the FIFO is empty and something in written into it. This should not cause a problem, since the data is not used until at least 2 read clock cycles after the write. I've once had similar problems with the RAM sim models as you are describing. I found out that the models were not working as they should and when I replaced the models with a different version, everything started working. As I can see, your model reports that data on port B is unknown until next clk B. That's expected and handled by the core. The faulty models I've mentioned kept the data in the unknown state indefenitely. Can you check if that happens in your case? Best regards, Miha Dolenc ----- Original Message ----- From: "Mihelogiannakis giorgos" mihelog@csd.uoc.gr> To: pci@opencores.org> Sent: Tuesday, March 15, 2005 10:39 PM Subject: [pci] FPGA Xilinx RAM Instantiation
Good day to everyone,
I have one quick question regarding instantiating FPGA RAM instances
to make the PCI bridge fully downloadable to an FPGA. I have defined the
"XILINX" and "FPGA" constants, which cause pci_wb_tram module to use
Xilinx's RAMB4_S16_S16 to construct FIFO RAMs. If these two constants are
not defined, a generic RAM model is used instead, constructed from a
couple of always@ blocks, and register arrays. The problem i am hacing is
that when these RAM instances are used, i get many conflict warning
messages :

# Memory Collision Error on

RAMB4_S16_S16:SYSTEM.bridge32_top.bridge.wishbone_slave_unit.fifos.wbr_fifo_
storage.ramb4_s16_s16_1.display_zero
at simulation time 456465.000 ns
# A read was performed on address 0a (hex) of Port B while a write was
requested to the same address on Port A. The write will be successful
however the read value on Port B is unknown until the next CLKB cycle.

Which refer to an address conflict on the RAM's two ports. As wired in
pci_wbw_wbr_fifos.v, the read port of each RAM is always set to read (chip


select and output enable are hardwired to 1) which would surely cause a problem at some point of the bridge's peration. The problem is that i have tried changing the hardwiring from 1 to a condition whichcould guarantee that each instance is not written and read at the same time, but every change i've made either makes no difference, or causes the bridge to malfunction. This conflict is an address conflict, and occurs when the FIFO is empty and thus the two points (read and write) point to the same address. With the conflicts, the functional code still works fine, but the post-PNR simulation model does not. The simulation model works fine if the gneric RAM instance is used (register arrays), but not if this conflict with other RAM instances are present. Has anyone else encountered this or a similar problem when instantiating RAM instances for RAM? I would like to avoid generating a seperate RAM instance and therefore i would be most grateful for any help. Than kyou! George Michelogiannakis _______________________________________________ http://www.opencores.org/mailman/listinfo/pci
_______________________________________________ http://www.opencores.org/mailman/listinfo/pci


FPGA Xilinx RAM Instantiation
by Unknown on Mar 17, 2005
Not available!
Hi! I have one suggestion - if your functional sim works, post P&R doesn't, can you check if gate level - synthesized design without timing annotation works. If gate level functions, then it is probably timing related problem. If it doesn't, then we'll have to investigate further ;) And you are absolutely right - conf space access does not depend on RAM instantiation in any way. Best regards, Miha Dolenc ----- Original Message ----- From: "Mihelogiannakis giorgos" mihelog@csd.uoc.gr> To: "Discussion list about free, open source PCI IP core" pci@opencores.org> Sent: Wednesday, March 16, 2005 10:34 PM Subject: Re: [pci] FPGA Xilinx RAM Instantiation
Hello and thanks for your reply!

The RAMB4_S16_S16 module i am using is the one included with Xilinx ISE
6.2.03i, and it's version is: 1.21.4.2 2003/12/05 00:34:0. If you supress
the
conflict warning messages by defining DISABLE_COLLISION_CHECK everything
works fine and you don't even notice any difference. This means that the
RAM instances work well, and don't go to an unknown state for infinity.
However, this is in functional simulation only.

Post PNR simulation suffers though. I am unsure whether the problem you
were encountering occured in functional simulation, after synthesis or
both, but in my case although functional simulation is healthy as ever,
post PNR simulation is not. The problem i am having is that during
testing the initial configuration values (in test_initial_conf.v), the
bridge never acks a read request in address x104. Right before this read
request, a write request at the same address with data 10000000 was
acknowledged. What's worrying is that (as i've seen) configuration space
makes no use of these RAM instances, so i can come up with no explanation
why this is happening. Unfortunately, i cannot generate this model with
the original hierarchy, so debugging is close to impossible. In functional
simulation, the read request the shows the problem, returns the data
written right before. The behaviour before that read request, is the
same./

Before defining FPGA and XILINX (and thus instantiating any RAM modules)
post PNR simulation was fine in all testcases. Is this any close to the
problem you are referring to, and thus is fixed with an updated version of
these RAMs? Do you have any other ideas?

Thank you!
George Michelogiannakis


On Wed, 16 Mar 2005, Miha Dolenc wrote:

> Hi!
>
> The address conflict occurs every time the FIFO is empty and
> something in written into it. This should not cause a problem,
> since the data is not used until at least 2 read clock cycles after the
> write.
> I've once had similar problems with the RAM sim models as you are
> describing.
> I found out that the models were not working as they should and
> when I replaced the models with a different version, everything started
> working.
> As I can see, your model reports that data on port B is unknown until

next
> clk B. > That's expected and handled by the core. > The faulty models I've mentioned kept the data in the unknown state > indefenitely. > Can you check if that happens in your case? > > Best regards, > Miha Dolenc > > ----- Original Message ----- > From: "Mihelogiannakis giorgos" mihelog@csd.uoc.gr> > To: pci@opencores.org> > Sent: Tuesday, March 15, 2005 10:39 PM > Subject: [pci] FPGA Xilinx RAM Instantiation > >
> Good day to everyone,
> I have one quick question regarding instantiating FPGA RAM

instances
> to make the PCI bridge fully downloadable to an FPGA. I have defined

the
> "XILINX" and "FPGA" constants, which cause pci_wb_tram module to use
> Xilinx's RAMB4_S16_S16 to construct FIFO RAMs. If these two constants

are
> not defined, a generic RAM model is used instead, constructed from a
> couple of always@ blocks, and register arrays. The problem i am hacing

is
> that when these RAM instances are used, i get many conflict warning
> messages :
>
> # Memory Collision Error on
>

>

RAMB4_S16_S16:SYSTEM.bridge32_top.bridge.wishbone_slave_unit.fifos.wbr_fifo_
> storage.ramb4_s16_s16_1.display_zero
> at simulation time 456465.000 ns
> # A read was performed on address 0a (hex) of Port B while a write was
> requested to the same address on Port A. The write will be successful
> however the read value on Port B is unknown until the next CLKB cycle.
>
> Which refer to an address conflict on the RAM's two ports. As wired in
> pci_wbw_wbr_fifos.v, the read port of each RAM is always set to read

(chip
>
> select and output enable are hardwired to 1) which would surely cause a
> problem at some point of the bridge's peration. The problem is that i

have
> tried changing the hardwiring from 1 to a condition whichcould

guarantee
> that each instance is not written and read at the same time, but

every
> change i've made either makes no difference, or causes the bridge to
> malfunction. This conflict is an address conflict, and occurs when the
> FIFO is empty and thus the two points (read and write) point to the

same
> address.
>
> With the conflicts, the functional code still works fine, but the

post-PNR
> simulation model does not. The simulation model works fine if the

gneric
> RAM instance is used (register arrays), but not if this conflict with
> other RAM instances are present.
>
> Has anyone else encountered this or a similar problem when

instantiating
> RAM instances for RAM? I would like to avoid generating a seperate RAM > instance and therefore i would be most grateful for any help. > > Than kyou! > George Michelogiannakis > _______________________________________________ > http://www.opencores.org/mailman/listinfo/pci
> > _______________________________________________ > http://www.opencores.org/mailman/listinfo/pci >
_______________________________________________ http://www.opencores.org/mailman/listinfo/pci



FPGA Xilinx RAM Instantiation
by Unknown on Mar 17, 2005
Not available!
Hello!
Post translate simulation works just fine as well. This is the model
after synthesis (and translation) with no timing annotation, and it works.
When trying to generate the post Map simulation model, i come across a
few problems. First of all i get this very worrying warning messages, that
i don't get without the Xilinx RAM instances:

WARNING:Anno:28 - This .ncd is not completely routed; therefore, some
delay calculations may be inaccurate.

During simulation, all the testcases pass successfully but i still get the
following hold time violation messages:

# ** Error: simprims/X_FF.v(40): $hold( posedge CLK:310645882 ps, negedge
I &&& (in_clk_enable == 1):310646044 ps, 168 ps );
# Time: 310646044 ps Iteration: 0 Instance:
/SYSTEM/bridge32_top/bridge_wishbone_slave_unit_del_sync_comp_cycle_count_1
# ** Error: simprims/X_FF.v(40): $hold( posedge CLK:311665882 ps, negedge
I &&& (in_clk_enable == 1):311666044 ps, 168 ps );
# Time: 311666044 ps Iteration: 0 Instance:
/SYSTEM/bridge32_top/bridge_wishbone_slave_unit_del_sync_comp_cycle_count_1

which occur during testing a WB image, so i get them onces for image 1,
and again for image 2.

When generating the post PNR simulation model, i get the same anno
warning, as well as:

WARNING: The design has not been completely routed. Programming file
generation may not be possible.

So the problem is clearly timing related, because not everything is
routed. As i'm new to this process, i have little idea why this happens.
This problem is caused by the definition of "FPGA and XILINX, which cause
RAMB4_S16_S16 to be used for RAM modules, as well as change the FIFO
sizes. I see no obvious reason why this should happen...

Excuse me for being absent on Saturday and Sunday on a trip. I won't be
able to work on this and answer mails during these days.

Thank you very much,
George Michelogiannakis


On Thu, 17 Mar 2005, Miha Dolenc wrote:

Hi! I have one suggestion - if your functional sim works, post P&R doesn't, can you check if gate level - synthesized design without timing annotation works. If gate level functions, then it is probably timing related problem. If it doesn't, then we'll have to investigate further ;) And you are absolutely right - conf space access does not depend on RAM instantiation in any way. Best regards, Miha Dolenc ----- Original Message ----- From: "Mihelogiannakis giorgos" mihelog@csd.uoc.gr> To: "Discussion list about free, open source PCI IP core" pci@opencores.org> Sent: Wednesday, March 16, 2005 10:34 PM Subject: Re: [pci] FPGA Xilinx RAM Instantiation
Hello and thanks for your reply!

The RAMB4_S16_S16 module i am using is the one included with Xilinx ISE
6.2.03i, and it's version is: 1.21.4.2 2003/12/05 00:34:0. If you supress
the
conflict warning messages by defining DISABLE_COLLISION_CHECK everything
works fine and you don't even notice any difference. This means that the
RAM instances work well, and don't go to an unknown state for infinity.
However, this is in functional simulation only.

Post PNR simulation suffers though. I am unsure whether the problem you
were encountering occured in functional simulation, after synthesis or
both, but in my case although functional simulation is healthy as ever,
post PNR simulation is not. The problem i am having is that during
testing the initial configuration values (in test_initial_conf.v), the
bridge never acks a read request in address x104. Right before this read
request, a write request at the same address with data 10000000 was
acknowledged. What's worrying is that (as i've seen) configuration space
makes no use of these RAM instances, so i can come up with no explanation
why this is happening. Unfortunately, i cannot generate this model with
the original hierarchy, so debugging is close to impossible. In functional
simulation, the read request the shows the problem, returns the data
written right before. The behaviour before that read request, is the
same./

Before defining FPGA and XILINX (and thus instantiating any RAM modules)
post PNR simulation was fine in all testcases. Is this any close to the
problem you are referring to, and thus is fixed with an updated version of
these RAMs? Do you have any other ideas?

Thank you!
George Michelogiannakis


On Wed, 16 Mar 2005, Miha Dolenc wrote:

Hi!

The address conflict occurs every time the FIFO is empty and
something in written into it. This should not cause a problem,
since the data is not used until at least 2 read clock cycles after the
write.
I've once had similar problems with the RAM sim models as you are
describing.
I found out that the models were not working as they should and
when I replaced the models with a different version, everything started
working.
As I can see, your model reports that data on port B is unknown until

next
clk B. That's expected and handled by the core. The faulty models I've mentioned kept the data in the unknown state indefenitely. Can you check if that happens in your case? Best regards, Miha Dolenc ----- Original Message ----- From: "Mihelogiannakis giorgos" mihelog@csd.uoc.gr> To: pci@opencores.org> Sent: Tuesday, March 15, 2005 10:39 PM Subject: [pci] FPGA Xilinx RAM Instantiation
Good day to everyone,
I have one quick question regarding instantiating FPGA RAM

instances
to make the PCI bridge fully downloadable to an FPGA. I have defined

the
"XILINX" and "FPGA" constants, which cause pci_wb_tram module to use
Xilinx's RAMB4_S16_S16 to construct FIFO RAMs. If these two constants

are
not defined, a generic RAM model is used instead, constructed from a
couple of always@ blocks, and register arrays. The problem i am hacing

is
that when these RAM instances are used, i get many conflict warning
messages :

# Memory Collision Error on


RAMB4_S16_S16:SYSTEM.bridge32_top.bridge.wishbone_slave_unit.fifos.wbr_fifo_
storage.ramb4_s16_s16_1.display_zero
at simulation time 456465.000 ns
# A read was performed on address 0a (hex) of Port B while a write was
requested to the same address on Port A. The write will be successful
however the read value on Port B is unknown until the next CLKB cycle.

Which refer to an address conflict on the RAM's two ports. As wired in
pci_wbw_wbr_fifos.v, the read port of each RAM is always set to read

(chip

select and output enable are hardwired to 1) which would surely cause a
problem at some point of the bridge's peration. The problem is that i

have
tried changing the hardwiring from 1 to a condition whichcould

guarantee
that each instance is not written and read at the same time, but

every
change i've made either makes no difference, or causes the bridge to
malfunction. This conflict is an address conflict, and occurs when the
FIFO is empty and thus the two points (read and write) point to the

same
address.

With the conflicts, the functional code still works fine, but the

post-PNR
simulation model does not. The simulation model works fine if the

gneric
RAM instance is used (register arrays), but not if this conflict with
other RAM instances are present.

Has anyone else encountered this or a similar problem when

instantiating
RAM instances for RAM? I would like to avoid generating a seperate RAM instance and therefore i would be most grateful for any help. Than kyou! George Michelogiannakis _______________________________________________ http://www.opencores.org/mailman/listinfo/pci
_______________________________________________ http://www.opencores.org/mailman/listinfo/pci
_______________________________________________ http://www.opencores.org/mailman/listinfo/pci
_______________________________________________ http://www.opencores.org/mailman/listinfo/pci


FPGA Xilinx RAM Instantiation
by Unknown on Mar 17, 2005
Not available!
Hello and very sorry for this second mail,
I neglected to mention that the port PNR simulation model now has the
same behaviour as the post Map simulation model - everything works fine
but i get the same hold time violation messages. I reckon this is because
timinig calculations are not accurate, and now the generator secified
different delays (i run the generation process again).

So the problem is located...

Thank you again,
George Michelogiannakis

On Thu, 17 Mar 2005, Mihelogiannakis giorgos wrote:

Hello!
Post translate simulation works just fine as well. This is the model
after synthesis (and translation) with no timing annotation, and it works.
When trying to generate the post Map simulation model, i come across a few
problems. First of all i get this very worrying warning messages, that i
don't get without the Xilinx RAM instances:

WARNING:Anno:28 - This .ncd is not completely routed; therefore, some delay
calculations may be inaccurate.

During simulation, all the testcases pass successfully but i still get the
following hold time violation messages:

# ** Error: simprims/X_FF.v(40): $hold( posedge CLK:310645882 ps, negedge I
&&& (in_clk_enable == 1):310646044 ps, 168 ps );
# Time: 310646044 ps Iteration: 0 Instance:
/SYSTEM/bridge32_top/bridge_wishbone_slave_unit_del_sync_comp_cycle_count_1
# ** Error: simprims/X_FF.v(40): $hold( posedge CLK:311665882 ps, negedge I
&&& (in_clk_enable == 1):311666044 ps, 168 ps );
# Time: 311666044 ps Iteration: 0 Instance:
/SYSTEM/bridge32_top/bridge_wishbone_slave_unit_del_sync_comp_cycle_count_1

which occur during testing a WB image, so i get them onces for image 1, and
again for image 2.

When generating the post PNR simulation model, i get the same anno warning,
as well as:

WARNING: The design has not been completely routed. Programming file
generation may not be possible.

So the problem is clearly timing related, because not everything is routed.
As i'm new to this process, i have little idea why this happens. This problem
is caused by the definition of "FPGA and XILINX, which cause RAMB4_S16_S16 to
be used for RAM modules, as well as change the FIFO sizes. I see no obvious
reason why this should happen...

Excuse me for being absent on Saturday and Sunday on a trip. I won't be able
to work on this and answer mails during these days.

Thank you very much,
George Michelogiannakis


On Thu, 17 Mar 2005, Miha Dolenc wrote:

Hi! I have one suggestion - if your functional sim works, post P&R doesn't, can you check if gate level - synthesized design without timing annotation works. If gate level functions, then it is probably timing related problem. If it doesn't, then we'll have to investigate further ;) And you are absolutely right - conf space access does not depend on RAM instantiation in any way. Best regards, Miha Dolenc ----- Original Message ----- From: "Mihelogiannakis giorgos" mihelog@csd.uoc.gr> To: "Discussion list about free, open source PCI IP core" pci@opencores.org> Sent: Wednesday, March 16, 2005 10:34 PM Subject: Re: [pci] FPGA Xilinx RAM Instantiation
Hello and thanks for your reply!

The RAMB4_S16_S16 module i am using is the one included with Xilinx ISE
6.2.03i, and it's version is: 1.21.4.2 2003/12/05 00:34:0. If you supress
the
conflict warning messages by defining DISABLE_COLLISION_CHECK everything
works fine and you don't even notice any difference. This means that the
RAM instances work well, and don't go to an unknown state for infinity.
However, this is in functional simulation only.

Post PNR simulation suffers though. I am unsure whether the problem you
were encountering occured in functional simulation, after synthesis or
both, but in my case although functional simulation is healthy as ever,
post PNR simulation is not. The problem i am having is that during
testing the initial configuration values (in test_initial_conf.v), the
bridge never acks a read request in address x104. Right before this read
request, a write request at the same address with data 10000000 was
acknowledged. What's worrying is that (as i've seen) configuration space
makes no use of these RAM instances, so i can come up with no explanation
why this is happening. Unfortunately, i cannot generate this model with
the original hierarchy, so debugging is close to impossible. In functional
simulation, the read request the shows the problem, returns the data
written right before. The behaviour before that read request, is the
same./

Before defining FPGA and XILINX (and thus instantiating any RAM modules)
post PNR simulation was fine in all testcases. Is this any close to the
problem you are referring to, and thus is fixed with an updated version of
these RAMs? Do you have any other ideas?

Thank you!
George Michelogiannakis


On Wed, 16 Mar 2005, Miha Dolenc wrote:

Hi!

The address conflict occurs every time the FIFO is empty and
something in written into it. This should not cause a problem,
since the data is not used until at least 2 read clock cycles after the
write.
I've once had similar problems with the RAM sim models as you are
describing.
I found out that the models were not working as they should and
when I replaced the models with a different version, everything started
working.
As I can see, your model reports that data on port B is unknown until

next
clk B. That's expected and handled by the core. The faulty models I've mentioned kept the data in the unknown state indefenitely. Can you check if that happens in your case? Best regards, Miha Dolenc ----- Original Message ----- From: "Mihelogiannakis giorgos" mihelog@csd.uoc.gr> To: pci@opencores.org> Sent: Tuesday, March 15, 2005 10:39 PM Subject: [pci] FPGA Xilinx RAM Instantiation
Good day to everyone,
I have one quick question regarding instantiating FPGA RAM

instances
to make the PCI bridge fully downloadable to an FPGA. I have defined

the
"XILINX" and "FPGA" constants, which cause pci_wb_tram module to use
Xilinx's RAMB4_S16_S16 to construct FIFO RAMs. If these two constants

are
not defined, a generic RAM model is used instead, constructed from a
couple of always@ blocks, and register arrays. The problem i am hacing

is
that when these RAM instances are used, i get many conflict warning
messages :

# Memory Collision Error on


RAMB4_S16_S16:SYSTEM.bridge32_top.bridge.wishbone_slave_unit.fifos.wbr_fifo_
storage.ramb4_s16_s16_1.display_zero
at simulation time 456465.000 ns
# A read was performed on address 0a (hex) of Port B while a write was
requested to the same address on Port A. The write will be successful
however the read value on Port B is unknown until the next CLKB cycle.

Which refer to an address conflict on the RAM's two ports. As wired in
pci_wbw_wbr_fifos.v, the read port of each RAM is always set to read

(chip

select and output enable are hardwired to 1) which would surely cause a
problem at some point of the bridge's peration. The problem is that i

have
tried changing the hardwiring from 1 to a condition whichcould

guarantee
that each instance is not written and read at the same time, but

every
change i've made either makes no difference, or causes the bridge to
malfunction. This conflict is an address conflict, and occurs when the
FIFO is empty and thus the two points (read and write) point to the

same
address.

With the conflicts, the functional code still works fine, but the

post-PNR
simulation model does not. The simulation model works fine if the

gneric
RAM instance is used (register arrays), but not if this conflict with
other RAM instances are present.

Has anyone else encountered this or a similar problem when

instantiating
RAM instances for RAM? I would like to avoid generating a seperate RAM instance and therefore i would be most grateful for any help. Than kyou! George Michelogiannakis _______________________________________________ http://www.opencores.org/mailman/listinfo/pci
_______________________________________________ http://www.opencores.org/mailman/listinfo/pci
_______________________________________________ http://www.opencores.org/mailman/listinfo/pci
_______________________________________________ http://www.opencores.org/mailman/listinfo/pci
_______________________________________________ http://www.opencores.org/mailman/listinfo/pci


no use no use 1/1 no use no use
© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.