老扁 2008-9-19 09:37
(紧急请教)有谁熟悉artisan生成的双端口SRAM的特性?
[color=blue][size=4]我们用memory compiler生成的双端口sram 128x32,32bit的每位都生成了WEN,我想知道是否可以通过两个端口独立地对某个字的32位不重叠的位进行独立读写操作?比如A口对第n位进行独立读写,B口对第m位进行独立读写,所谓独立就是两个时钟完全异步[/size]。[size=4]我们从手册上只能确定的是对同一位进行读写操作必须大于一个delta后才有效,而不能确定的是对于不同位是否可以通过各自的WEN来进行读写而不受这个delta的限制。有哪位专家熟悉这个内部结构的请不吝赐教,多谢![/size][/color]
henryliu 2008-9-22 15:45
楼主:
可否先用功能仿真来验证你的想法?
老扁 2008-9-23 15:15
MC生成的verilog模型是支持我的想法的,但是仅从模型仿真结果还不敢确定,必须对内部电路了解才能最终确认。有些人认为我的想法是不可靠的。
sycall 2008-9-23 17:13
应该是不允许这样操作的巴。
两端口时钟异步,那就有可能在某时刻,两端口同时访问同一地址进行写操作。。。。
老扁 2008-9-23 23:48
[quote]原帖由 [i]sycall[/i] 于 2008-9-23 17:13 发表 [url=http://www.eetop.cn/bbs/redirect.php?goto=findpost&pid=1433734&ptid=127164][img]http://www.eetop.cn/bbs/images/common/back.gif[/img][/url]
应该是不允许这样操作的巴。
两端口时钟异步,那就有可能在某时刻,两端口同时访问同一地址进行写操作。。。。 [/quote]
但我的问题是通过每位的WEN来同时对不同位进行写。
henryliu 2008-9-24 10:08
阿扁,我把你的帖子贴在另外一个论坛了,那个论坛讨论比较热烈一点。
该如何谢我?
suplioooo 2008-9-24 14:31
只要能保证不会读写到同一个地址这样的操作是可以的。实在不放心可以用生成的cdl电路网表仿真来确认。
henryliu 2008-9-24 16:03
可以,但是两个时钟之间有一个非常严格的时序关系,在它的datasheet和lib文件中可以看到.
这个是另外一个论坛的老大的老大的答复。
应该是有把握的回答!
不好意思,我有权威崇拜症^_^
老扁 2008-9-24 16:19
[quote]原帖由 [i]henryliu[/i] 于 2008-9-24 16:03 发表 [url=http://www.eetop.cn/bbs/redirect.php?goto=findpost&pid=1437064&ptid=127164][img]http://www.eetop.cn/bbs/images/common/back.gif[/img][/url]
可以,但是两个时钟之间有一个非常严格的时序关系,在它的datasheet和lib文件中可以看到.
这个是另外一个论坛的老大的老大的答复。
应该是有把握的回答!
不好意思,我有权威崇拜症^_^ [/quote]
多谢你和这位老大,我知道对同一地址的同一位进行读写必须遵守严格的delta时序关系(如这位老大说的datasheet上都有要求),但我的问题是任意时刻对同一字(也就是相同地址)的不同的位进行读写是否无需遵守这个delta关系。
henryliu 2008-9-24 17:52
这个问题,我不太了解,现在说出我的看法。
如果是项目中碰到的实际问题,那能否修改代码,避免在任意时刻对同一地址的不同的位进行读写操作。
据我所知,很忌讳对同一地址进行读写操作。
对不太确定的,有争议的地方,在流片的时候,最好能用替代的方案替代掉。
如果仅仅是对技术的精益求精,则另当别论。
[quote]原帖由 [i]老扁[/i] 于 2008-9-24 16:19 发表 [url=http://www.eetop.cn/bbs/redirect.php?goto=findpost&pid=1437125&ptid=127164][img]http://www.eetop.cn/bbs/images/common/back.gif[/img][/url]
多谢你和这位老大,我知道对同一地址的同一位进行读写必须遵守严格的delta时序关系(如这位老大说的datasheet上都有要求),但我的问题是任意时刻对同一字(也就是相同地址)的不同的位进行读写是否无需遵守这个 ... [/quote]
dragonba 2008-9-24 19:38
个人理解,如果去掉这个delta延时的要求可能不行。
刚找了本数字逻辑的书看了下,普通单口RAM内部包括字线和位线,地址、片选、读写使能hit后,某一根字线有效,然后位线输入或输出,位线可理解为数据总线。
同理推断双口RAM可能主要是增加了一套地址译码逻辑,并且在每个基本存储单元上增加了两个口的读和写的开关,但本质上还是存在字线的。不考虑mask的话,字线有效会涵盖整个字的范围(32bit),估计不太可能只对字的某些bit操作,那样译码逻辑会过于复杂。
老扁 2008-9-24 20:41
[quote]原帖由 [i]dragonba[/i] 于 2008-9-24 19:38 发表 [url=http://www.eetop.cn/bbs/redirect.php?goto=findpost&pid=1437870&ptid=127164][img]http://www.eetop.cn/bbs/images/common/back.gif[/img][/url]
个人理解,如果去掉这个delta延时的要求可能不行。
刚找了本数字逻辑的书看了下,普通单口RAM内部包括字线和位线,地址、片选、读写使能hit后,某一根字线有效,然后位线输入或输出,位线可理解为数据总线。
同理推断双口RAM可能主要是增加了一套地址译码逻辑,并且在每个基本存储单元上增加了两个口的读和写的开关,但本质上还是存在字线的。不考虑mask的话,字线有效会涵盖整个字的范围(32bit),估计不太可能只对字的某些bit操作,那样译码逻辑会过于复杂。
[/quote]
您的理解有一定的道理,但我认为从电路设计的角度来说,两个端口如果是同一个地址,地址译码会使得字线一直有效,不存在电平变化,两个端口分别根据各位的WEN操作各自的位线即可。
老扁 2008-9-24 21:08
[quote]原帖由 [i]suplioooo[/i] 于 2008-9-24 14:31 发表 [url=http://www.eetop.cn/bbs/redirect.php?goto=findpost&pid=1436783&ptid=127164][img]http://www.eetop.cn/bbs/images/common/back.gif[/img][/url]
只要能保证不会读写到同一个地址这样的操作是可以的。实在不放心可以用生成的cdl电路网表仿真来确认。 [/quote]
只有GDSII可以进行spice仿真吗?
suplioooo 2008-9-25 11:21
不好意思,之前理解错楼主的意思了。。楼主的操作是对相同地址进行。
存储单元的两条地址线同时打开时,两套位线都可以影响存储节点,很多情况下(都是读操作时没有问题)会互相干扰出现错误。所以需要满足datasheet上的时序关系以确保两条字线不会同时打开。
[[i] 本帖最后由 suplioooo 于 2008-9-25 11:41 编辑 [/i]]
老扁 2008-9-25 11:45
[quote]原帖由 [i]suplioooo[/i] 于 2008-9-25 11:21 发表 [url=http://www.eetop.cn/bbs/redirect.php?goto=findpost&pid=1439777&ptid=127164][img]http://www.eetop.cn/bbs/images/common/back.gif[/img][/url]
不好意思,之前理解错楼主的意思了。。楼主的操作是对相同地址进行。
存储单元的两条地址线同时打开时,如果两套位线上数据不一样就会互相干扰,出现错误。所以这种情况读写需要满足datasheet上的时序关系的。 [/quote]
多谢你的答复。你这个解释倒是值得仔细思考。但从datasheet上来看,“同时对某一位读和写,写会有效,而读无效”,那么就是说读的位线对写没有干扰;如果同时对不同位进行写(靠WEN控制),相当于n位在同时读写,m位也在同时读写,两个写都有效,而读无效,但我们并不在乎这个读结果。所以虽然你说位线有干扰,但我认为仍然会有效工作。不知道还有没有进一步的干扰来限制到我的理解。
suplioooo 2008-9-25 12:30
读写同时发生,假设写的数据和原来存的不一样,会有一个临界的时间点,在它之前和之后读出的数据不一样,如果这个数据有用就还是需要一个时序关系来确保读出的是我们想要的。
楼主是否只是希望能写入而不关心同时读出的数据?如果是这样的情况还需要再考虑。
[quote]原帖由 [i]老扁[/i] 于 2008-9-25 11:45 发表 [url=http://www.eetop.cn/bbs/redirect.php?goto=findpost&pid=1439840&ptid=127164][img]http://www.eetop.cn/bbs/images/common/back.gif[/img][/url]
多谢你的答复。你这个解释倒是值得仔细思考。但从datasheet上来看,“同时对某一位读和写,写会有效,而读无效”,那么就是说读的位线对写没有干扰;如果同时对不同位进行写(靠WEN控制),相当于n位在同时读写, ... [/quote]
老扁 2008-9-25 14:28
[quote]原帖由 [i]suplioooo[/i] 于 2008-9-25 12:30 发表 [url=http://www.eetop.cn/bbs/redirect.php?goto=findpost&pid=1439983&ptid=127164][img]http://www.eetop.cn/bbs/images/common/back.gif[/img][/url]
读写同时发生,假设写的数据和原来存的不一样,会有一个临界的时间点,在它之前和之后读出的数据不一样,如果这个数据有用就还是需要一个时序关系来确保读出的是我们想要的。
楼主是否只是希望能写入而不关心同时读 ... [/quote]
不是不关心读,是我的问题变相等价于:任意时刻双写时,不同位的两条位线只可能一读一写。我关心的是对不同位的任意读写是否有效,而不考虑相同位的情况。
老扁 2008-9-26 22:17
不知道国内有没有人研究过dual port block sram的设计。
老扁 2008-10-9 09:54
终于得到artisan的答复,我们的想法是对的,可以对不同的bit任意读写。