ET创芯网论坛(EETOP)

您现在是游客状态

请您   登录   或  注册  享受更多权益

电子书:《模拟对话》,共50卷,数百篇精品文章,下载即奖励400信元!
查看: 589|回复: 12

[讨论] 求教:怎么在filelist中添加类似于宏定义的东西

[复制链接]
发表于 2019-1-7 10:49:01 | 显示全部楼层 |阅读模式
在一个soc系统级仿真中,filelist整理也是需要一定的工作量的,且设计代码可能时时都在修改,那么对应的filelist也可能时时都需要更新,因此最好的办法就是项目中的所有人员都公用同一份filelist,那样能解决每个人都需要维护filelist,且能保证大家都是拿最新版本的代码仿真。
      但是这个也带来另一个问题,有可能其中某些人的filelist不会跟大伙一致,比如正常仿真的时候我们不会带上真正的cpu,因此cpu启动过程太慢,而是使用vip代替。但是做启动仿真的时候却要带上真正的cpu,那么怎么在同一份filelist能满足这两种情况呢。貌似filelist不能使用宏定义,不知道大家有没有类似的困扰,怎么解决的。
      我能想到的一个办法就是把类似于CPU相关的文件单独提取的一个filelist中,在makefile中区分,但是我不认为这个是最优办法,望大家解决我的问题,谢谢
发表于 2019-1-7 20:04:48 | 显示全部楼层
生成filelist没有工作量。用脚本不是一个回车的工作量么?有不同的需求把不用的删掉换成自己的不就可以了?需要划分多功夫????
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-9 10:44:36 | 显示全部楼层
回复 2# saipolo


    每个公司有每个公司的做法,filelist有多少工作量是跟芯片规模相关的,各自整filelist涉及到很多问题,比如文件中的define先后顺序就能导致无数的错误,大点的芯片单次编译就要半小时还不算仿真时间。再比如各自的filelist你能保证你用的是最新代码?你能保证你用的对的库文件?只要碰到一个类似的问题,可能你半天的时间就过去了,需要每个人都踩一遍这种坑?
     我们没必要讨论filelist到底有多少工作量,我是想要问有没有办法解决我提出的问题,如果你有,请你告诉我,谢谢
回复 支持 反对

使用道具 举报

发表于 2019-1-9 16:33:28 | 显示全部楼层
在makefile吃进的filelist时,处理一下,重新生成你希望的filelist,拿重新生成的filelist去编译。这样每一个makefile的分支就可以实现一种filelist
回复 支持 反对

使用道具 举报

发表于 2019-1-9 20:06:50 | 显示全部楼层
回复  saipolo


    每个公司有每个公司的做法,filelist有多少工作量是跟芯片规模相关的,各自整file ...
7号时代 发表于 2019-1-9 10:44


[quote]回复  saipolo


是不是最新代码重新check不就行了?所谓头文件,规定好统一放在一个路径,打开宏关闭宏都在脚本中搞定,说实话真不觉得有啥工作量,我们多核模式编译+elaborate一次设计六个小时,算不算久?你要发现编译错误,你就不能把编译参数报错误停止继续编译的门限值设高点一次性全报出来么(我就是这么做的)?再说句实话,就算rtl设计头文件顺序不对,各种宏定义不对,编译RTL报的错误不会太多,而且很容易就搞定,真正由于头文件顺序不对,宏定义不对报错很多的恰恰是你的基于方法学的仿真平台。建议,设计工程师自己维护一个filelist和头文件,头文件不要也搞成.v后缀,.h或者.vh都可以,便于脚本搜索。另:头文件包含头文件的方式一般是写平台中用,纯rtl设计这种方式不建议用,实际上DW的rtl设计也没采用头文件套头文件的方式。
针对你觉得编译半个小时就觉得久,那么建议你将不需要改动的比如买的IP,复用IP,和需要频繁变更的设计单独编译,不相关模块用dummy替换,最后elaborate,这样可以显著减少编译时间。
在filelist中添加类似宏来区分不同filelist内容是不行的,就我用过的vcs和nc都不行,命令行选项-f filelist实际上就是将你filelist中的的诸多.v文件名添加到命令行后面。你需要做的就是建立多个不同版本的filelist,然后在脚本中传入不同参数来区分不同filelist。
最后祝工作顺心。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-10 19:13:45 | 显示全部楼层
回复 5# saipolo


       我知道filelist并不会占很大的工作时间,我也知道有很多方式来实现。但是一个系统级仿真的filelist整理据我的经验半天时间是至少要花的,一个项目组中,少则10来个人,多则几十人,根本就没必要每个人都花这个时间,而且很多新人见几千行的filelist就犯晕,会出错,所以使用同一份filelist一定是非常好的,如果你作为项目组长你也不能保证所有的人都使用了最新版本的代码,这些问题都可以通过使用同一份filelist来解决
     如你所说,filelist中各个子模块细分,在makefile中使用参数组合filelist来解决这个问题就是我目前做的,只是我觉得可能有另外的大神可能有更好的办法,比如我开始提到的类似宏定义的方式,可惜目前貌似没有。
     当然你说到脚本能解决这些问题,脚本肯定能解决所有问题,但是对于一个filelist的收集我是不会花时间去特地开发脚本来解决这个问题的,况且脚本不能解决编译先后,宏定义先后问题,这些需要人力来摸索。买的ip中有专用define文件,它的文件编译后再有专用undefine文件,这个 很常见
     说这么多只是为了说公用同一份filelist对我们公司来说很有必要,谢谢你的解答,祝工作顺利。
     另外我个人水平有限,见识有限,你编译6小时的工程非常有兴趣了解下,CPU?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-10 19:16:55 | 显示全部楼层
回复 4# e_epsh


    谢谢解答,你的核心说法就是类似于脚本处理吧
回复 支持 反对

使用道具 举报

发表于 2019-1-10 19:45:09 | 显示全部楼层
回复  saipolo


       我知道filelist并不会占很大的工作时间,我也知道有很多方式来实现。但是一个系 ...
7号时代 发表于 2019-1-10 19:13

不是CPU,是NoC。
回复 支持 反对

使用道具 举报

发表于 2019-1-25 11:09:30 | 显示全部楼层
貌似filelist中加不了类似`ifdef这种,只能根据需求定义不同的top.f,在编译脚本中根据不同的define调用不同的top.f
回复 支持 反对

使用道具 举报

发表于 2019-2-12 23:44:35 | 显示全部楼层
提供一种思路,核心是使用脚本处理

一个配置控制脚本+总控配置文件+集成化flist

控制脚本和集成化flist大家公用,根据不同人的需求改动总控配置文件生成个性化需求的flist
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

小黑屋|手机版|Archiver|ET创芯网 ( 京ICP备:10050787号 京公网安备:110105001212 )

GMT+8, 2019-3-25 09:51 , Processed in 0.057422 second(s), 10 queries , Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表