Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics 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 file or a single register?

Status
Not open for further replies.

eexuke

Full Member level 4
Joined
Mar 25, 2004
Messages
196
Helped
10
Reputation
20
Reaction score
3
Trophy points
1,298
Activity points
1,934
Dear all,
If I want to use a single port memory with size of 16*4bit, I can have two choices:
1) [63:0] single_reg;
2) reg [3:0] reg_file[15:0];
When I synthesize these two in DC, which one is a more popular choice? In addition,if I have a bigger single port on-chip memory,say,1KB, should I use synthesized register file or use the SRAM provided by foundry?

Many thanks in advance!
 

the second choice is not synthesizable.
I thinks the essences of the two doesn't make any difference.

If you want more bigger regfile, just use SRAM, not registers.
 

wkong_zhu said:
the second choice is not synthesizable.
I thinks the essences of the two doesn't make any difference.

If you want more bigger regfile, just use SRAM, not registers.
Hi,wkong_zhu:
Thanks for your reply,but I want to clarify two things:
First, I remember as if the 2) choice is also synthesizable. If it is not, how can people describe synthesizable regfile? Would you mind double check about it?
Second, 1) & 2) do have difference,for [63:0]single_reg,the decoder should have the capability to address each bit from 0~63;for [3:0] reg_file[15:0], the decoder may only need to address 0~15. Am I right?
 

Hi, eexuke,

You can define the register-file ports, but don't use this format: [3:0] reg_file[15:0]. Synthesis tool can't understand this syntax.

Generally, you can get the register file from third-part like SRAM. You may find some introduction from web-sites.

The size of register-file and the size of registers are different. The later is bigger. Power is so.

Good Luck
 

hi..
In case u want to use the [3:0]reg[15:0] you can do it by defining four different reg giles of [15:0[ and then using a decoder for defining which is to get active. For higher capacity I will also recommend the SRAMs.

I hope it helped.

nitu
 

Hi,
The second choice is also synthesizable, but it is not popular.Usually we write
reg[3:0] reg_file_1, reg[3:0] reg_file_2 and so on. In addition ,I recommend you write reg[3:0] reg_file[0:15] ,not reg_file[15:0], though the latter has no error.
If the SRAM is 1k, I recommend you use registers. registers has small area. If you the number of registers is large, SRAM is superior. 1bit storage cell area of sRAM is smaller the 1bit register, but SRAM has address decoding logic which is overhead.At the same time,SRAM should include test logic BIST. So if the storage is small, the overhead of SRAM is very large. But is storage is large, SRAM has more advantage.
Claint
 

of course the latter one, and if you need a large sram, you'd better use memory compiler to generate. Because a single-port sram unit occupy only 6 tran., and each register need 10-14 tran.
 

Usually, in addition to used library cells, companies has some kind of macroes used for small memories (not bigger then 32x32, even for the smaller one Virage/Artisan/... memory could have smaller area). Common name is register arrays, latch arrays, etc.
If you don't have anything like this, you could use description like one you gave.
By the way, both of them are synthesisable if you use latest version of DC (if you are not sure, please use first one). And both will give the same result, because sythesis tool (as I know) don't do any optimization used for custom memory implementation.
 

No much difference between these two choices I think. And maybe seperating these registers is better. Such as,

reg[3:0] reg_0 ;
reg[3:0] reg_1 ;
.....
reg[3:0] reg_15 ;
 

can anyone tell me what is the diffenence between register and register file in asic design?
 

both synthesizable and should have the same result. because they are all registers. you need memory compile to get a more small design, since what you want is one-port ram.
 

I think th second one is a more popular choice.

because it will use less routing resource.

if you use ram for 1K, you should use SRAM provided by foundry,

the area will be smaller.






eexuke said:
Dear all,
If I want to use a single port memory with size of 16*4bit, I can have two choices:
1) [63:0] single_reg;
2) reg [3:0] reg_file[15:0];
When I synthesize these two in DC, which one is a more popular choice? In addition,if I have a bigger single port on-chip memory,say,1KB, should I use synthesized register file or use the SRAM provided by foundry?

Many thanks in advance!
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top