FPGA Central - World's 1st FPGA / CPLD Portal

FPGA Central

World's 1st FPGA Portal

 

Go Back   FPGA Groups > NewsGroup > Verilog

Verilog comp.lang.verilog newsgroup / usenet

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 02-28-2006, 11:58 AM
Frank @ CN
Guest
 
Posts: n/a
Default How do I make dual-port RAM from single port RAM?

Hi, there:

In my application, a RAM needs to be written/read from two sets of
data/address ports
simultaneously. However, in the ASIC library I can only instantiate some
single port RAM
and RAM which can be written in one port and read from the other port.

How shall I solve this problem?

Thank you.



Reply With Quote
  #2 (permalink)  
Old 02-28-2006, 12:17 PM
Michael Sch÷berl
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?

> In my application, a RAM needs to be written/read from two sets of
> data/address ports simultaneously.


estimate your worst case data rates and take a ram with
the sum of these data-rates (plus overhead) ...

then you need to build some logic to switch between
Port A and B to transfer concurrent access to a
sequential access scheme


bye,
Michael
Reply With Quote
  #3 (permalink)  
Old 02-28-2006, 02:23 PM
John_H
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?

Frank @ CN wrote:
> Hi, there:
>
> In my application, a RAM needs to be written/read from two sets of
> data/address ports
> simultaneously. However, in the ASIC library I can only instantiate some
> single port RAM
> and RAM which can be written in one port and read from the other port.
>
> How shall I solve this problem?
>
> Thank you.


You might get a better idea of the particulars by looking at a data
sheet for IDT dual-port memories. (www.idt.com)
Reply With Quote
  #4 (permalink)  
Old 02-28-2006, 03:52 PM
JJ
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?

For some applications 2 Srams can be used in an alternate buffer
configuration. I assume your 2 ports have similar issue rates otherwise
you may have to mux in time.

Reply With Quote
  #5 (permalink)  
Old 02-28-2006, 04:29 PM
Peter Alfke
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?

Frank, you posted this in the FPGA newsgroup.
In FPGAs, most RAM structures are naturally dual-ported, e.g. the
Virtex BlockRAMs.
You get two ports, whether you asked for it or not!
Peter Alfke, Xilinx Applications.

Frank @ CN wrote:
> Hi, there:
>
> In my application, a RAM needs to be written/read from two sets of
> data/address ports
> simultaneously. However, in the ASIC library I can only instantiate some
> single port RAM
> and RAM which can be written in one port and read from the other port.
>
> How shall I solve this problem?
>
> Thank you.


Reply With Quote
  #6 (permalink)  
Old 02-28-2006, 10:47 PM
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?

For dual read ports and a single write port, this is easy. You just
use two RAMs and always write to both of them together, but read from
them separately, with each treated as a separate read port. For dual
write ports, it gets a lot harder.

Reply With Quote
  #7 (permalink)  
Old 02-28-2006, 10:53 PM
Frank @ CN
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?


"Peter Alfke" <[email protected]> wrote in message
news:[email protected] oups.com...
> Frank, you posted this in the FPGA newsgroup.
> In FPGAs, most RAM structures are naturally dual-ported, e.g. the
> Virtex BlockRAMs.
> You get two ports, whether you asked for it or not!
> Peter Alfke, Xilinx Applications.
>


Yeah, the original codes are designed with Xilinx DPRAM with a functional
testbenches,
now I need to convert the codes into ASIC implementation. The tougher part
of it is, I
have little understanding of the functionality of the design.


Reply With Quote
  #8 (permalink)  
Old 02-28-2006, 10:54 PM
Frank @ CN
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?


<[email protected]> wrote in message
news:[email protected] ps.com...
> For dual read ports and a single write port, this is easy. You just
> use two RAMs and always write to both of them together, but read from
> them separately, with each treated as a separate read port. For dual
> write ports, it gets a lot harder.
>


Yeah, there are RAMs in the ASIC library supporting dual read/single write.
I need to make dual read/write out of it. How can I do it now?

Thanks.


Reply With Quote
  #9 (permalink)  
Old 02-28-2006, 11:32 PM
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?

As someone else suggested, you could time-multiplex the two ports,
which will take a double-speed clock and extra logic for the
multiplexing. And this assumes that you are treating this as a
synchronous RAM.

And someone else suggested that you look at your application and see
whether you really need a full dual-port RAM, or whether you are
dealing with a special case where you can segregate it into independent
parts.

You could build the memory from multiple smaller RAMs and add decode
logic to allow you to do two writes, as long as the writes were to
separate RAMs. If they weren't, one of them would have to wait until
the next cycle. This requires that the other logic trying to do the
write be able to wait if the memory was "busy". Note that real
dual-port memories are effectively implemented this way, except that
the RAM granularity is a single word in the memory. The designers of
those have the advantage that they are designing all the decode logic,
down to the word level.

You can reduce the chance of collisions in this scheme by choosing
which address bits select a RAM and which ones select a word in the
RAM, if you know something about the likely access patterns. For
example, it may be more likely that two memory writes are going to the
same half of the memory than that they are both going to even (or odd)
addresses.

If you can't multiplex, and can't deal with collisions, then you are
out of luck. If you want to use predefined RAMs with their predefined
single-port decoding logic, then you are stuck. Getting true dual-port
requires specialized decode logic in the RAM.

Reply With Quote
  #10 (permalink)  
Old 03-01-2006, 03:07 AM
Peter Alfke
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?

Sounds like a powerful FPGA argument:
Ifyou really need a true dual-port memory (read and write from either
or both ports simultaneously), you are out-of-luck in the ASIC world,
but you can do this just fine in FPGAs.
Nice to know we have such an edge...
Peter Alfke, Xilinx

Reply With Quote
  #11 (permalink)  
Old 03-01-2006, 05:58 AM
Ulf Samuelsson
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?


"Frank @ CN" <[email protected]> skrev i meddelandet
news:[email protected]
> Hi, there:
>
> In my application, a RAM needs to be written/read from two sets of
> data/address ports
> simultaneously. However, in the ASIC library I can only instantiate some
> single port RAM
> and RAM which can be written in one port and read from the other port.
>
> How shall I solve this problem?
>
> Thank you.
>
>



You can instantiate FOUR rams and implement a valid bit for each location in
a register.
PortA can write to RAM0,RAM1 and read from RAM0 and RAM2
PortB can write to RAM2,RAM3 and read from RAM1 and RAM3

When PortA writes to address position 17, both RAM0[17] and RAM1[17] are
updated and the
VALID_BIT[17] is set to 0 indicating that RAM0,1 are valid instead of
RAM2,3.

When PortB reads address position 17, both RAM1 and RAM3 are read.
A multiplexer on the output is controlled by the selected VALID_BIT,
and since VALID_BIT[17] is zero, it will select the output of RAM1 over
RAM3.

Obviously this is going to use some gates,so it is not practical for large
SRAMs.
Running the RAM at 2 x frequency is going to cost a lot less.




--
Best Regards,
Ulf Samuelsson
This is intended to be my personal opinion which may,
or may bot be shared by my employer Atmel Nordic AB


Reply With Quote
  #12 (permalink)  
Old 03-01-2006, 07:03 AM
JJ
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?

So if you are back porting from FPGA to ASIC something stands out right
away which makes this even more messy. Your logic & wiring paths will
now gain significantly in performance but a comparable DPRAM is similar
in performance between ASIC and FPGA for same feature and memory sizes
since they are the same thing (almost). Perhaps there is an option to
double up processing on the logic side rather than try to double up on
SPRAM side.

At this point I can only suggest before continuing with the ASIC, redo
the FPGA design so that it also only uses 1 port atleast you don't burn
masks, tie your hand behind your back on the cheap. Then it should be
easier to convert, atleast you can prove the redesign before
conversion.

Your other option if you really really must use 2 concurrent writes
with no other possibility is to go and get a DP WW RAM core from one of
the ASIC IP houses, Mentor, Cadence, Synopsys and a couple of others
come to mind, not sure who has which. I thought most of the asian
foundries would include such blocks in their library, otherwise it
seems you have a limited library.

So what is the application, & size of DP WW RAM ?

John

Reply With Quote
  #13 (permalink)  
Old 03-01-2006, 10:05 AM
JJ
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?

The reason I ask for DP WW size is that for applications in say DSP and
data buffering, the memory size might be large but there are possible
options in architecture.

In say a cpu datapath design with a N way ported register file the
options may be far fewer but the size may be much smaller and ameniable
to brute force as suggested by the 4 way Ulf design. That probably
requires that a DP WW store stiil needs to be built but only for 1 bit
direction flag and to the granularity of words or super words if I
understand it right.

John

Reply With Quote
  #14 (permalink)  
Old 03-01-2006, 03:12 PM
Sean Burroughs
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?

I just converted a quad port 2r2w to F/Fs this morning; luckily, it
was easy to simplify. You don't give enough info - are the clocks
related? How big is it? Do you have higher frequency clocks available?

Curious that you should have a library with no 2rw memories in it. Can
you tell us whose it is? It sounds like it may too new to be usable.

Sean
Reply With Quote
  #15 (permalink)  
Old 03-01-2006, 04:26 PM
Derek Simmons
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?

I've been trying to follow your problem and now have time to lend some
help. I'm going to approach this from a black-box design point of view.


First question is how are in implementing it or what language are you
using (VHDL, Verilog or something else)?

What size device are you looking to create (data and address bus
width)? Or are you trying to create a library device?

What device and signals in the original design being used?

Derek

Reply With Quote
  #16 (permalink)  
Old 03-01-2006, 05:57 PM
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?

Presumably this depends on what ASIC libraries you have. There is no
inherent reason that an ASIC library could not include dual-port
memories. Apparently the original poster's didn't.

Reply With Quote
  #17 (permalink)  
Old 03-01-2006, 06:03 PM
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?

That is a clever solution that I hadn't thought of. Of course, your
VALID_BIT array needs the capabilities of a true dual-port memory. So
this doesn't really build a dual-port memory just out of RAMs. It
builds it from 4 RAMs and a smaller dual-port memory (just as many
elements, but only 1 bit wide). You would have to build that smaller
dual-port memory out of flip-flops. The result still might be smaller
than building the full-size memory out of flip-flops.

Reply With Quote
  #18 (permalink)  
Old 03-02-2006, 01:59 AM
Frank
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?


<[email protected]> wrote in message
news:[email protected] ups.com...
> Presumably this depends on what ASIC libraries you have. There is no
> inherent reason that an ASIC library could not include dual-port
> memories. Apparently the original poster's didn't.
>


True, some TSMC ASIC libraries had dual-read/write memories, and they used
to provide
memory generators which enables creating the memory blocks of any capacity.

After we changed foundry, things got really complicated. In the new library,
only a few memories
are provided and the width & depth are also fixed. It becomes very
inefficient to use these RAMs.

I guess I am out of luck on memory issues this time.



Reply With Quote
  #19 (permalink)  
Old 03-02-2006, 02:10 AM
Frank
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?


<[email protected]> wrote in message
news:[email protected] oups.com...
> That is a clever solution that I hadn't thought of. Of course, your
> VALID_BIT array needs the capabilities of a true dual-port memory. So
> this doesn't really build a dual-port memory just out of RAMs. It
> builds it from 4 RAMs and a smaller dual-port memory (just as many
> elements, but only 1 bit wide). You would have to build that smaller
> dual-port memory out of flip-flops. The result still might be smaller
> than building the full-size memory out of flip-flops.
>


Morning Samuelsson & sharp, I haven't got time to study the sequence of the
clever
solution yet. I want to know is, does it have the function of a full dual
port R/W RAM
if the R/W accesses of both ports are random? My RAM is 130*6bit, and the IP
uses
eight pieces of this RAM.

TIA



Reply With Quote
  #20 (permalink)  
Old 03-02-2006, 04:32 AM
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?

Yes, Ulf's solution gives full dual-port functionality for arbitrary
addresses (though of course you have to decide which port gets the last
word in case of simultaneous writes to the same address, as with any
dual-port memory).

But with your small word size of 6 bits, this may not be
cost-effective. The VALID_BIT array requires similar logic to a
1-bit-wide dual-port memory (not quite the same, since port 0 always
writes a value of 0 and port 1 always writes a value of 1). So you
have to design something close to a 130*1bit dual-port memory out of
flip-flops and logic, and use that with four 130*6bit RAMs (or two
130*6bit dual-read/single-write RAMs, since you indicated you have
those). You might be as well off to design a 130*6bit dual-port memory
from flip-flops and logic.

Reply With Quote
  #21 (permalink)  
Old 03-02-2006, 07:36 AM
Kim Enkovaara
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?

Peter Alfke wrote:
> Sounds like a powerful FPGA argument:
> Ifyou really need a true dual-port memory (read and write from either
> or both ports simultaneously), you are out-of-luck in the ASIC world,
> but you can do this just fine in FPGAs.
> Nice to know we have such an edge...


That is completely dependent on the ASIC libraries. In FPGA you are out of
luck with higer amount of ports that are available in some ASIC libraries.
For example in the ASIC library I use there are: single port, 1 read 1 write,
dual port and 4-port memories. And then different versions of those
(density, power, speed).

--Kim
Reply With Quote
  #22 (permalink)  
Old 03-02-2006, 08:13 AM
Frank
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?


"Derek Simmons" <[email protected]> wrote in message
news:[email protected] ups.com...
> I've been trying to follow your problem and now have time to lend some
> help. I'm going to approach this from a black-box design point of view.
>
>
> First question is how are in implementing it or what language are you
> using (VHDL, Verilog or something else)?
>
> What size device are you looking to create (data and address bus
> width)? Or are you trying to create a library device?
>
> What device and signals in the original design being used?
>
> Derek
>


Thank you Derek.
I received an FPGA design in RTL Verilog and need to convert into ASIC. Now
everything is done except this memory issue. The design of the RTL is
unfamiliar to
me so large modifications are meant only for the long run. Requesting
redesign of
the memory isn't an option either.

The culprit RAMs are 8 instances of 130*6bit DPRAM. My entire design is 200K
gate without RAM. My short term goal is to use the existing RAMs in the ASIC
library and perform successful synthesis & gate level simulation, with ASIC
RAMs
included in the system (I could simulate with Xilinx RAM and ASIC for the
rest).

What ideas do you have for my description?



Reply With Quote
  #23 (permalink)  
Old 03-02-2006, 08:49 AM
JJ
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?

130 by 6 is pretty tiny to have used a whole 4K or 18k bit DPRAM but
the DP feature makes it a job already done.

Are the 8 rams independant copies of the same DP R/W design?
And 130 is a bit odd isn't it?

For this size of this problem the 4 way Ulf design doesn't look so bad
assuming you can compile 130 by 6 arrays, I'd imagine they will be
bigger. Now you only need 130 DP flags to resolve valid words.

John

Reply With Quote
  #24 (permalink)  
Old 03-02-2006, 09:06 AM
Guest
 
Posts: n/a
Default ASIC Architect positions at Nvidia

Current opening in Company: NVIDIA www.nvidia.com ,
http://www.nvidia.com/page/home.html



Nvidia, (Nasdaq: NVDA) are worldwide market leader in Programmable
Graphic Processor Technologies. NVIDIA is a market leader in graphics
and digital media processors. NVIDIA graphics processing units (GPUs),
media and communications processors (MCPs), and wireless media
processors (WMPs) have broad market reach and are incorporated into a
variety of platforms, including consumer and enterprise PCs, notebooks,
workstations, mobile phones, PDAs, and game consoles. NVIDIA's
customers are OEMs, add-in card manufacturers, system builders, and
consumer electronics companies worldwide who choose NVIDIA technology
as a core component for their solutions. NVIDIA's award-winning
products deliver superior performance and reliability for graphics,
video, and communications solutions in the areas of manufacturing,
science, multimedia, entertainment, and education.



Senior ASIC Design positions:

Responsibilities:- ASIC Design for Digital Media Processor and HDTV
Systems. Micro-architecture definition; working closely with graphics,
video and system architects. RTL design, verification, emulation,
synthesis, timing, and silicon bring-up. Understand high speed system
design and layout issues. High speed bus signal integrity
debug/characterization. Interfacing with the ASIC design organization
to understand limitations of products, build functional and timing
specifications for customers. Interfacing with the System design
organization to keep up to speed on latest technologies, processes and
working with customers to integrate discoveries into their processes.

Minimum requirements:

Senior or Lead ASIC / Logic Design engineers with previous experience
in Graphics, Video, Microprocessor Design, SOC design, or Multimedia
ASIC design. Strong logic design and verification skills.Verilog and
Synopsys experience required. Primetime experience desirable.
Programming skills in C and/or PERL. Good communication skills and
proven ability to work well within a team. The ideal candidate will be
familiar with all stages in the ASIC design flow including DFT, timing
analysis, floorplanning, ECO flow, silicon bringup, and ATE test
support. BS in Electrical Engineering, MS preferred. EOE

Another Position: GRAPHICS ARCHITECT

Roles include some or all of the below:

- Develop algorithms and design hardware extending the state
of the art in hardware support for computer graphics. Working within a
team, graphics architects document, design, develop functional and
performance simulators, validate, and verify each new chip.

- Develop tests, testplans, and testing infrastructure for new
graphics architectures. Develop methodologies and tools for validating
test results. Design and implement automated testing strategies. Test
and debug CMODELs, RTL simulation and real silicon.

- Write and run low-level graphics tests which expose
architectural performance characteristics of competitors' graphics
chips. Compare results with nVidia graphics chips. Find shortcomings
and strong points of each. Work with architects to determine
underlying causes. Publish and maintain results. Develop behavioral and
performance models of hardware features defined by chip
architects.Develop and maintain diagnostics and tests for hardware.
Develop and maintain scripted workflows. Develop and maintain
infrastructure such very large multi-platform build environments.
Support development of compilers for interface description languages.
Develop and maintain automated testing infrastructure.

Requirements:

Minimum requirements: Bachelors Degree in relevant discipline(s) (CS,
EE, Math). Advanced degrees helpful.
- Relevant industrial experience preferred. Relevant industries include
PC or workstation graphics hardware or software development, digital
video or image processing, video game software development, rendering
software or tools development. - Strong programming ability: C, C++ and
Perl preferred.



Positions open for System Engineering Team:



Role:

You will be responsible for ASIC and board bring up, validation, and
debug from prototype to production. You will work on cutting edge
technologies such as PCI Express and SATA II and will be required to
perform logic validation and interface characterization of all PC
interfaces to ensure compliance to industry standards. You will debug
complex ASIC and board issues related to logic design, signal integrity
and power delivery in a high energy work environment, with a team that
is the best in the business. You will also work on stress testing,
thermal characterization and stability improvement. You will also work
closely with Application Engineering teams to resolve customer issues
in time critical environment.


Minimum Requirements:

You should be an engineer with 3-7 years of experience in board
design/bring up/validation. You should be familiar with PCB layout and
high speed board design issues, PC architecture, AMD & Intel CPU
interfaces, and bus protocols such as IDE, PCI, PCI-Express, SATA, USB,
etc. You should have In-depth knowledge of signal integrity, EMI/EMC
and Analog interface characterization. You must be well versed in the
usage of high end test and measurement tools such as DSOs, Logic
analyzers and bus exerciser/analyzers.

What we expect from you:
If you find this opening interesting then kindly forward your profile
in word format along with your current CTC & expected CTC details to
[email protected] ASAP. Kindly inform the same to your
colleagues and friends.

Positions at Bangalore, India

Thanks & Regards,

Komal Tripathi.

____________________________

PriorityONE Consulting

Your Success is our PRIORITY # 1!

Contact me:

India Mobile: +91-9945341452.

Direct Lines: 080-41313872

E-mail: [email protected]



PriorityONE Consulting provides the best technical talent to suit the
needs of

high end software companies for the entire technology and hierarchy
spectrum.

We serve our clients and our candidates with respect and commitment.


Visit us at:

www.priorityoneindia.com


For Hottest jobs round the globe please register in :

http://finance.groups.yahoo.com/group/jobs_priorityone/





Frank @ CN wrote:
> Hi, there:
>
> In my application, a RAM needs to be written/read from two sets of
> data/address ports
> simultaneously. However, in the ASIC library I can only instantiate some
> single port RAM
> and RAM which can be written in one port and read from the other port.
>
> How shall I solve this problem?
>
> Thank you.


Reply With Quote
  #25 (permalink)  
Old 03-02-2006, 09:07 AM
Guest
 
Posts: n/a
Default Re: How do I make dual-port RAM from single port RAM?

What we expect from you:
If you find this opening interesting then kindly forward your profile
in word format along with your current CTC & expected CTC details to
[email protected] ASAP. Kindly inform the same to your
colleagues and friends.



Thanks & Regards,

Komal Tripathi.

____________________________

PriorityONE Consulting

Your Success is our PRIORITY # 1!

Contact me:

India Mobile: +91-9945341452.

Direct Lines: 080-41313872

E-mail: [email protected]



PriorityONE Consulting provides the best technical talent to suit the
needs of

high end software companies for the entire technology and hierarchy
spectrum.

We serve our clients and our candidates with respect and commitment.



Visit us at:

www.priorityoneindia.com



For Hottest jobs round the globe please register in :

http://finance.groups.yahoo.com/group/jobs_priorityone/


Michael Sch÷berl wrote:
> > In my application, a RAM needs to be written/read from two sets of
> > data/address ports simultaneously.

>
> estimate your worst case data rates and take a ram with
> the sum of these data-rates (plus overhead) ...
>
> then you need to build some logic to switch between
> Port A and B to transfer concurrent access to a
> sequential access scheme
>
>
> bye,
> Michael


Reply With Quote
Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Multidimensional port. vssumesh Verilog 3 09-03-2005 07:33 PM
Overheads of 4-port over 2-port SRAM John T. Goodman Verilog 0 01-25-2005 04:26 PM
making output port to bi-directional port! Vick Verilog 0 12-16-2004 06:14 AM
Making output-port to bi-directional-port! Vick Verilog 5 12-15-2004 06:03 AM
infer dual-port Block RAM with different dimensions kyrten Verilog 0 08-25-2004 07:55 PM


All times are GMT +1. The time now is 12:42 AM.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright 2008 @ FPGA Central. All rights reserved