How do I make dual-port RAM from single port RAM?

<sharp@cadence.com> wrote in message
news:1141236232.823214.283550@j33g2000cwa.googlegroups.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
 
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.
 
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
 
I haven't had time to load Xilinx's tools (sometime I'm going to have
to do it for another project) to see what there DPRAM library device
looks like.

The solution I was going to offer was going to be a time division
solution like rhnlogic suggested. Relative to the reading/writing of
the ports of the DPRAM, what clocks are available? What other controls
signals are present that could be taken advantage of?

If you want to reinvent the wheel you could implement your own dual
port memory. It would probably be a little bit more than 6240 flip
flops if you can limit the address to 130 range and if you're sloppy
about it 16384 flip flops for the whole 256 range. (plus addressing and
control support)

Derek
 
When you wrote PortA address 17, you wrote into address 17 of RAM0 and
RAM1. You also wrote 0 (meaning A is valid) into address 17 of
VALID_BIT. When you read PortB address 17, you read address 17 of RAM1
and RAM3. You also read address 17 of VALID_BIT, which gives you back
0, telling you to select the output of RAM1. This gives you the value
you just wrote to RAM1 when you wrote to PortA address 17.

If you had written to address 17 via PortB last, then address 17 of
VALID_BIT would have been set to 1, telling you to select the output of
RAM3 instead. This would have been correct, since a write to portB
would have written to RAM2 and RAM3. If you read portA address 17, you
will read address 17 of RAM0 and RAM2 instead, and selected between
those based on VALID_BIT.

Or perhaps what you are missing is that each of these RAMs has a read
port and a write port, which can be used simultaneously with
independent addresses. This was one of the components that was
described as being available. So PortB can be reading address 17 of
RAM1 at the same time PortA is writing address 22 of RAM1.
 
Another clever solution. This requires the same amount of RAM as Ulf's
scheme, but without requiring the 2Rd/2Wr VALID_BIT array. However, it
may require a longer write cycle time, to allow completing the
associated read and XOR with enough setup time for the write. But part
of the write can overlap the read, so it should still be faster than
the time-multiplexing approaches.
 
sharp@cadence.com wrote:
Another clever solution. This requires the same amount of RAM as Ulf's
scheme, but without requiring the 2Rd/2Wr VALID_BIT array. However, it
may require a longer write cycle time, to allow completing the
associated read and XOR with enough setup time for the write. But part
of the write can overlap the read, so it should still be faster than
the time-multiplexing approaches.
What I did forget is that the memory may be synchronous read and write.
If the read is asynchronous then this method still works but youre
comment on timing is well taken. In the FPGA there's a nice, small
setup time for memory address and data. An asynchronous read would
require the address access time before that XOR. If the translation is
from FPGA to ASIC, there may be enough margin in the timing to specify
the read access and XOR from the address and the XOR alone from the data
before the write strobe.

If the ASIC memory is synchronous read without the async data, this
method would require more RAMs and some feedback to account for
just-written addresses.

Is the memory 1Wr/2Rd memory primitive an asynchronous read?
 
<sharp@cadence.com> wrote in message
news:1141235829.504003.89220@z34g2000cwc.googlegroups.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.
 
"Derek Simmons" <dereks314@gmail.com> wrote in message
news:1141230364.062159.31900@i39g2000cwa.googlegroups.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?
 
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
 
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
komal@priorityoneindia.com 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: komal@priorityoneindia.com



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.
 
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
komal@priorityoneindia.com 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: komal@priorityoneindia.com



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
 
Senior Library Design Engineer (NEW) The candidate should possess a
BSEE degree (MSEE preferred) with emphasis in VLSI circuit design.
5+ years industrial experience designing CMOS VLSI standard cell
libraries.
Full understanding of the ASIC design flow and the role of standard
cell libraries.
Experienced in full custom design and layout.
Knowledge of the cell characterization process.
Basic understanding of silicon processing technology.
Understanding of place and route tools, and how they work.
Comfortable with the Linix operating system and strong programming
skills in perl.
Experience working with silicon foundries, preferably TSMC.
Full understanding of the following IC Design tools:
HSPICE
Verilog logic simulation
Cadence Composer
Cadence Virtuoso
Synopsys Design Compiler
A proven track record of successful design projects - completed on
schedule.
Excellent communication skills.
Leadership skills and a personal commitment to the team's success are
also required attributes
Junior Library Design Engineer (NEW) The candidate should possess a
BSEE degree (MSEE preferred) with emphasis in VLSI circuit design.
3+ years industrial experience designing CMOS digital circuits.
Understanding of circuit simulation with SPICE.
Experienced with physical design rules and IC layout.
Knowledge of the Cadence design tools.
Some experience with Verilog modeling and synthesis tools.
Good computer skills and moderate programming experience with perl.
Strong team member with positive learning attitude.
Good oral and written communication skills.
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
komal@priorityoneindia.com 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: komal@priorityoneindia.com



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/


John_H wrote:
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)
 
Senior Library Design Engineer (NEW) The candidate should possess a
BSEE degree (MSEE preferred) with emphasis in VLSI circuit design.
5+ years industrial experience designing CMOS VLSI standard cell
libraries.
Full understanding of the ASIC design flow and the role of standard
cell libraries.
Experienced in full custom design and layout.
Knowledge of the cell characterization process.
Basic understanding of silicon processing technology.
Understanding of place and route tools, and how they work.
Comfortable with the Linix operating system and strong programming
skills in perl.
Experience working with silicon foundries, preferably TSMC.
Full understanding of the following IC Design tools:
HSPICE
Verilog logic simulation
Cadence Composer
Cadence Virtuoso
Synopsys Design Compiler
A proven track record of successful design projects - completed on
schedule.
Excellent communication skills.
Leadership skills and a personal commitment to the team's success are
also required attributes
Junior Library Design Engineer (NEW) The candidate should possess a
BSEE degree (MSEE preferred) with emphasis in VLSI circuit design.
3+ years industrial experience designing CMOS digital circuits.
Understanding of circuit simulation with SPICE.
Experienced with physical design rules and IC layout.
Knowledge of the Cadence design tools.
Some experience with Verilog modeling and synthesis tools.
Good computer skills and moderate programming experience with perl.
Strong team member with positive learning attitude.
Good oral and written communication skills.
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
komal@priorityoneindia.com 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: komal@priorityoneindia.com



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.
 
"Ulf Samuelsson" <ulf@a-t-m-e-l.com> escribió en el mensaje
news:du3dop$cq1$1@emma.aioe.org...
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.
Following the previous example, I fail to see how can I read PortB address
17
(last time written through portA) while PortA is writing adddress (say) 22.

Am I missing something ?



Regards

Josep Duran
 

Welcome to EDABoard.com

Sponsor

Back
Top