|
100资产
系统中会用到1个1Kx32的RAM和1个8Kx32的ROM,这2个存储单元都是使用SMIC的工具compile出来的。
现在问题是RAM每512字节只能写前128字节的数据,写其他区域的地址也总是映射到前128字节区域了(比如写256地址,但实际还是写到0地址了),刚开始怀疑是地址总线的问题,检查了版图,没有发现问题,AD的地址线也都正确连接了,而读RAM呢,又都是正确的(是不是可以排除地址总线的问题?)。问题仅出现在写RAM的时候,问题是不是应该仅在地址,时钟上找原因?还是可能有其它原因呢?
1)RAM和ROM共用时钟,检查PR后的数据,发现这个CK信号是通过这个BUFX2M U297 (.A ( MEM_CK ) , .Y ( CK ) )输出后连接到这2个存储单元上的,是否可能是这个BUF驱动能力不够所致 ?
2)共用地址总线,是否可能存在写的时候某几位地址总线被异常拉低,导致无法正常写入指定地址呢?
其他原因???
后仿功能正常,把SRAM的网表提取出来混仿功能也正常,SRAM可以正常读写。
请群里的大神帮忙分析一下问题的原因,非常非常的感谢!!!!!
.................................
RAM_1KX32 i_RAM (.WEN ( RAM_WEN ) , .DIN ( RAM_WD ) , .WC ( RAM_WC ) ,
.CE ( RAM_CE ) , .CK ( CK ) , .AD ( AD[9:0] ) , .DOUT ( RAM_RD ) ) ;
ROM_8KX32 i_E2A (.AD ( AD[12:0] ) , .CE ( ROM_CE ) , .CK ( CK ) ,
.DOUT ( ROM_RD ) ) ;
...............................
module RAM_1KX32 (DOUT , AD , WEN , CK , CE , WC , DIN );
output [31:0] DOUT ;
input [9:0] AD ;
input WEN ;
input CK ;
input CE ;
input [3:0] WC ;
input [31:0] DIN ;
wire [3:0] WE ;
NOR2BX2M U6 (.AN ( WC[1] ) , .B ( WEN ) , .Y ( WE[1] ) ) ;
NOR2BX2M U5 (.AN ( WC[0] ) , .B ( WEN ) , .Y ( WE[0] ) ) ;
NOR2BX2M U4 (.AN ( WC[3] ) , .B ( WEN ) , .Y ( WE[3] ) ) ;
NOR2BX2M U3 (.AN ( WC[2] ) , .B ( WEN ) , .Y ( WE[2] ) ) ;
CLKINVX2M U2 (.A ( CE ) , .Y ( n1 ) ) ;
RA1KX32M8_S018G i_ram (.WE ( WE ) , .OE ( 1'b1 ), .DIN ( DIN ) , .DOUT ( DOUT )
, .CEN ( n1 ) , .AD ( AD ) , .CLK ( CK ) ) ;
endmodule
module ROM_8KX32 (DOUT , CK , CE , AD );
output [31:0] DOUT ;
input CK ;
input CE ;
input [12:0] AD ;
CLKINVX2M U1 (.A ( CE ) , .Y ( n1 ) ) ;
RO8KX32M16_S018G i_rom (.CLK ( CK ) , .D ( DOUT ) , .CSB ( n1 ) , .A ( AD ) ) ;
endmodule |
|