微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > (紧急请教)有谁熟悉artisan生成的双端口SRAM的特性?

(紧急请教)有谁熟悉artisan生成的双端口SRAM的特性?

时间:10-02 整理:3721RD 点击:
我们用memory compiler生成的双端口sram 128x32,32bit的每位都生成了WEN,我想知道是否可以通过两个端口独立地对某个字的32位不重叠的位进行独立读写操作?比如A口对第n位进行独立读写,B口对第m位进行独立读写,所谓独立就是两个时钟完全异步。我们从手册上只能确定的是对同一位进行读写操作必须大于一个delta后才有效,而不能确定的是对于不同位是否可以通过各自的WEN来进行读写而不受这个delta的限制。有哪位专家熟悉这个内部结构的请不吝赐教,多谢!

自顶

小编:
可否先用功能仿真来验证你的想法?

MC生成的verilog模型是支持我的想法的,但是仅从模型仿真结果还不敢确定,必须对内部电路了解才能最终确认。有些人认为我的想法是不可靠的。

应该是不允许这样操作的巴。
两端口时钟异步,那就有可能在某时刻,两端口同时访问同一地址进行写操作。

但我的问题是通过每位的WEN来同时对不同位进行写。

阿扁,我把你的帖子贴在另外一个论坛了,那个论坛讨论比较热烈一点。
该如何谢我?

只要能保证不会读写到同一个地址这样的操作是可以的。实在不放心可以用生成的cdl电路网表仿真来确认。

可以,但是两个时钟之间有一个非常严格的时序关系,在它的datasheet和lib文件中可以看到.
这个是另外一个论坛的老大的老大的答复。
应该是有把握的回答!
不好意思,我有权威崇拜症^_^

多谢你和这位老大,我知道对同一地址的同一位进行读写必须遵守严格的delta时序关系(如这位老大说的datasheet上都有要求),但我的问题是任意时刻对同一字(也就是相同地址)的不同的位进行读写是否无需遵守这个delta关系。

这个问题,我不太了解,现在说出我的看法。
如果是项目中碰到的实际问题,那能否修改代码,避免在任意时刻对同一地址的不同的位进行读写操作。
据我所知,很忌讳对同一地址进行读写操作。
对不太确定的,有争议的地方,在流片的时候,最好能用替代的方案替代掉。
如果仅仅是对技术的精益求精,则另当别论。

个人理解,如果去掉这个delta延时的要求可能不行。
刚找了本数字逻辑的书看了下,普通单口RAM内部包括字线和位线,地址、片选、读写使能hit后,某一根字线有效,然后位线输入或输出,位线可理解为数据总线。
同理推断双口RAM可能主要是增加了一套地址译码逻辑,并且在每个基本存储单元上增加了两个口的读和写的开关,但本质上还是存在字线的。不考虑mask的话,字线有效会涵盖整个字的范围(32bit),估计不太可能只对字的某些bit操作,那样译码逻辑会过于复杂。

您的理解有一定的道理,但我认为从电路设计的角度来说,两个端口如果是同一个地址,地址译码会使得字线一直有效,不存在电平变化,两个端口分别根据各位的WEN操作各自的位线即可。

只有GDSII可以进行spice仿真吗?

不好意思,之前理解错小编的意思了。小编的操作是对相同地址进行。
存储单元的两条地址线同时打开时,两套位线都可以影响存储节点,很多情况下(都是读操作时没有问题)会互相干扰出现错误。所以需要满足datasheet上的时序关系以确保两条字线不会同时打开。

多谢你的答复。你这个解释倒是值得仔细思考。但从datasheet上来看,“同时对某一位读和写,写会有效,而读无效”,那么就是说读的位线对写没有干扰;如果同时对不同位进行写(靠WEN控制),相当于n位在同时读写,m位也在同时读写,两个写都有效,而读无效,但我们并不在乎这个读结果。所以虽然你说位线有干扰,但我认为仍然会有效工作。不知道还有没有进一步的干扰来限制到我的理解。

读写同时发生,假设写的数据和原来存的不一样,会有一个临界的时间点,在它之前和之后读出的数据不一样,如果这个数据有用就还是需要一个时序关系来确保读出的是我们想要的。
小编是否只是希望能写入而不关心同时读出的数据?如果是这样的情况还需要再考虑。

不是不关心读,是我的问题变相等价于:任意时刻双写时,不同位的两条位线只可能一读一写。我关心的是对不同位的任意读写是否有效,而不考虑相同位的情况。

不知道国内有没有人研究过dual port block sram的设计。

终于得到artisan的答复,我们的想法是对的,可以对不同的bit任意读写。

thanks

所谓双口,就是可以独立地在两个端口对不同的单元操作。

不懂,帮顶了。

Artisan的双端口ram是wen可以控制不同位的写。 wen=0
的位进行写,wen=1的位进行读。wen的控制位数可以选。
写的同时读的数据其实也是有效的。
另外同一个地址两个口不能同时写,但同时读是可以的。一个地址写完后,
若要马上读写这个地址的数据有timing的要求的。

呵呵 这个操作我认为是可以实现的,小编可以看下register bank的设计原理,在processor内部的register bank 就可以实现这样的操作。

肯定可以。从SRAM结构来看,32位we控制不同的位,实际adr产生wordline,而we控制bitline是输入还是输出。读出需要预充,上拉pmos很小;写入需要大的驱动管驱动bitline。这样看,对相同bit同时进行读写操作,大的驱动会把同时进行预充电压拉下来,从而实现了sram的写入,所以写有效,而读出的数据经过一段时间后稳定为刚写入的数据;对同一地址的不同位同时读写,相互没有影响~

剛剛看過 artisan 的 dual-port sram gds
bit cell 仍然只能存 1 bit,也就是仍然是兩個 inveter 對接,
但是pass-gate有兩組,每組各有自己的獨立 word-line與
bit-line,bitb-line,所以 對相同 縱軸的 bit cell 而言,
若是由上方 ydecoder_A 寫入 data至第一個 cell,
與由下方 ydecoder_B 讀取/寫入 data至第n個 cell,應該
不會衝突,只要不是同一個cell就好,這只是我個人的觀察,
我曾逆向工程他們的電路,發覺不會動,經修改之後才會動,
原以為抄錯了,但是以他們的 netlist run結果一致,都不會動,
我認為他們的 netlist沒有完全反映 gds的某些超長 rc delay,
或許是他們保護自己的方法.

是不是可以通过wen端口是单独控制每一位的读写操作的使能控制信号

可以,但是个人推荐小RAM用Artisan生成的东西,功耗和面积都超大。

高深. 留座. 回来在学习

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top