DC综合时Memory(ram、rom)的处理

目录


前言

       在进行DC综合前,我们看一些工程的filelist可以发现,会有许多memory模块的存在,比如ram、rom之类,而进行综合如果直接将memory综合进去,结果可能会不可信,并且遇到大的工程时综合memory会出现卡死的状况,所以本文将会讲解如何对DC综合的memory进行处理。


一、DC综合memory遇到的问题

       之前使用DC综合的是一个工程的一小部分,比如之前综合的e203的core,并没有涉及到对于memory的处理。

       但是这次项目需要,要综合C910来看资源的利用,这种整个大工程的综合我也是第一次去做,问了同组一个小伙伴,他们之前做过e906整个工程综合,我看他们的filelist,直接将memory读进去进行的综合。可以看下图。

        可以看到e906的ram是比较少的,所以他们没有出现卡死的状况,但是我这次综合的C910,可以看一下这个filelist中ram部分。

       这是一部分,总共有大约80多个memory,一开始我并没有去管,直接写好脚本去综合,发现综合到中间就卡死了,出现了下面的情况。

       所以对于memory我们不可以直接综合,要进行处理。

二、Memory(ram、rom)处理

1.解决思路

       那么具体的解决方法,就是利用Memory Complier工具,去生成所需要的memory,就比如这次我所需要的ram。那么利用这个工具生成的是lib格式,之后回到服务器,用Lib complier转成db格式,在DC综合时,将ram当作library读入即可。

      

2.Memaker安装

       有了解决思路,那么就是使用工具去使用。但是网上并没有现成的Memory Complier,所以使用的是老师提供的Memaker。

所需文件:

虚拟机软件 VMware

虚拟机镜像 CentOS7-x86_64-DVD-2009

memaker压缩包 FSF0L_Memaker_202101.3.0.tar

license文件 memaker.dat

插件libXScrnSaver-1.2.2-6.1.el7.i686

一、打开VMware,创建好新的虚拟机

二、把memaker压缩包拖进虚拟机,解压出来

解压好后把memaker.dat拖到安装目录下的

注:memaker中的hostname和VENDOR ftclmd地址需要自己更改

三、修改memaker.env中memlib地址

四、设置ip地址(用su指令开管理员权限)

CentOS 7更改网卡名eth0和配置网卡_openbox2008的博客-CSDN博客_centos7网卡配置

1.、编辑 grub 配置文件

# vim /etc/default/grub 或 vim /etc/sysconfig/grub

增加 net.ifnames=0 biosdevname=0 在GRUB_CMDLINE_LINUX

2、用 grub2-mkconfig 命令重新生成GRUB配置并更新内核

# grub2-mkconfig -o /boot/grub2/grub.cfg

只要做完这步,然后重新启动 Linux 操作系统,通过# ip addr 可以看到网卡名称已经变为 eth0 ,网络能正常使用,但网络配置文件还是ifcfg-ens33 .

3、修改网卡配置文件

将原来网卡配置文件名称为 ifcfg-ens33,这里需要修改为 eth0 ,ifcfg-ens34改为eth1 ,并适当调整网卡配置文件

#mv ifcfg-ens33 ifcfg-eth0

#mv ifcfg-ens34 ifcfg-eth1

并修改网卡配置文件

4.重启虚拟机

五、打开终端,输入Han.txt中指令

如果提示license有问题,将系统时间回调至2022年10月之前再试。

五、如果提示缺少libXScrnSaver插件则安装后重新尝试。

下载插件压缩包,拖入虚拟机安装。

或者管理员模式输入yum install libXScrnSaver。

3.Memaker使用

3.1 打开Memaker

通过命令行输入直接打开,可以进入下面GUI界面。

 3.2 Ram的生成

       因为已知了Ram的大小,所以直接选择Memory Type去生成。

       已其中一个Ram举例,我要生成的是128✖️16的Ram,并且C910使用的都是单端口的Ram,所以第一步在Memory Famile选择“single port ram”;第二步word代表地址位,填入128;第三步Bit代表数据位宽,填入16,其余默认,之后第四步点击Preview。

之后可以看到生成的各个ram的预览界面,我们需要用第一种,所以勾选第一种即可。

下一步会显示你所勾选器件的一些基本信息,可以检查一下是否有误,并且可以将名字更改为你所需要的名字,这里都是默认名字。 

之后在这一步可以选择你所希望生成的信息,有很多选项,因为我只需要lib文件,所以我只勾选了lib和生成.v文件,生成.v我主要是想看一下里面写的是什么样子。之后点击Generate,就可以成功生成我们所需要的东西。

我们可以看一下生成的文件,除了.v文件之外,lib生成了许多,这里拆分一下各个lib的命名规则。

以后缀ff1p32v85c和ss1p08vm40c为例子,这个后缀代表了两部分,首先第一部分代表电压:1p32v代表1.32v,1p08代表1.08v;其次第二部分代表温度:85c代表85度,m40c代表-40度。

4.Lib Complier

这个很简单,写一个转化脚本,将所有lib转成db就可以。写脚本时候需要知道Lib Complier的命令.

4.1 新建一个db文件夹,一个lib文件夹

4.2 转换的所有lib文件复制到lib文件夹内

4.3 编写tcl脚本,命名为autolib2db

set enable_write_db_mode True

set files [split [glob lib/*.lib] " "]

foreach file $files {
read_lib $file
set libname [lindex [split [lindex [split $file "/"] [expr [llength [split $file "/"]]-1]] "."] 0]
write_lib -output db/${libname}.db $libname
remove_design
}

exit

4.4 运行tcl脚本

得到所有转换后的db文件,存入db文件夹中,之后作为library导入dc工程中即可。

猜你喜欢

转载自blog.csdn.net/m0_45287781/article/details/128724650