在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 831|回复: 12

[讨论] opentitan SoC st验证环境 firmware load

[复制链接]
发表于 2023-12-15 17:28:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
如题:opentitan SoC st验证环境 firmware load


各位小伙伴,最近在研究opentitan这个项目,发现SoC tb 没有firmware 加载的task 或者$readmemh()系统函数。
找了半天,在vseq中发现一个task cpu_init ,使用backdoor 方式加载。但是固件是怎么编译来的呢?
有小伙伴研究过这个项目吗?
发表于 2023-12-15 19:56:28 | 显示全部楼层
opentitan项目用的是bazel编译系统,全部编译运行 bazel build //sw/...  具体可以看官方文档  doc/getting_started/build_sw.md
 楼主| 发表于 2023-12-16 18:51:32 | 显示全部楼层


轩辕志瑜 发表于 2023-12-15 19:56
opentitan项目用的是bazel编译系统,全部编译运行 bazel build //sw/...  具体可以看官方文档  doc/getting ...


doc里没有描述使用的编译器,没有看到riscv-eabi-gcc的options ,好像是用verilator来编译c case的??
感觉找遍tb相关的.sv ,没有明确加载firmware的地方。大佬你了解吗?想把dv_sim 跑起来,但是感觉好困难。。
fusesoc一直网络加载不了
发表于 2023-12-17 11:46:42 | 显示全部楼层
本帖最后由 轩辕志瑜 于 2023-12-17 11:49 编辑


adan313 发表于 2023-12-16 18:51
doc里没有描述使用的编译器,没有看到riscv-eabi-gcc的options ,好像是用verilator来编译c case的??
...


在源码 hw/ip/rom_ctrl/rtl/rom_ctrl.sv 里面 BootRomInitFile 添上 firmware 的路径,就可以加载 firmware。

如果用的是OTP那在源码 hw/ip/otp_ctrl/rtl/otp_ctrl.sv 里面的 MemInitFile 添上 firmware 的路径。
发表于 2023-12-17 23:49:07 | 显示全部楼层
我研究过opentitan,cpu固件是c编译生成的,其实和嵌入式写固件一回事,看那个start.S吧
 楼主| 发表于 2023-12-19 11:21:27 | 显示全部楼层


erwang 发表于 2023-12-17 23:49
我研究过opentitan,cpu固件是c编译生成的,其实和嵌入式写固件一回事,看那个start.S吧 ...


怎么加载你研究过吗?

我目前遇到的问题是,opentitan 依赖太多了,无论是bazel/dvsim。导致现在都没办法跑一下仿真。
如果bazel可以把固件编译出来,然后仿真可以跑起来,就可以确定cpu_init 加载了什么东西。。
opentitan确实是一个很牛皮的项目。
发表于 2023-12-19 14:06:06 | 显示全部楼层
本帖最后由 erwang 于 2023-12-19 18:07 编辑


adan313 发表于 2023-12-19 11:21
怎么加载你研究过吗?

我目前遇到的问题是,opentitan 依赖太多了,无论是bazel/dvsim。导致现在都没办 ...


刚才看了下,说错了,不是start.s,是examples/sw/simple_system/common/crt0.S,这里是c程序入口

去年看了下这个,最开始也觉得牛逼,不过现在放弃了,外国人的风格,简单的东西搞的太复杂了,比如那个bazel,dvsim完全没必要引入,徒增麻烦,一个regression搞得相当麻烦,我想剥离都不好弄。不过里面的一些小工具,和一些uvm agent可以挖出来复用

安装运行我成功过,不过确实有点折腾,一定要装ubuntu 20.04,并且要翻墙,网络要足够好,会下很多很大的东西
不过我在公司的服务器centos上就完全装不了,各种坑

opentitan/sw/device/tests这里面的最好跑,用不到vcs,直接就可以跑起来
clipboard.png
 楼主| 发表于 2024-1-9 17:17:57 | 显示全部楼层


erwang 发表于 2023-12-19 14:06
刚才看了下,说错了,不是start.s,是examples/sw/simple_system/common/crt0.S,这里是c程序入口

去年看 ...


我现在用vcs跑通一半,
中间会报的error:
1.opt_ctrl.sv 的一个parameter 设置超限问题,
2.xprop 配置问题。

解决后跑到仿真阶段会报下面的问题,
太难了。。





仿真阶段报错

仿真阶段报错

生成的fsdb

生成的fsdb
 楼主| 发表于 2024-1-9 17:19:19 | 显示全部楼层


轩辕志瑜 发表于 2023-12-15 19:56
opentitan项目用的是bazel编译系统,全部编译运行 bazel build //sw/...  具体可以看官方文档  doc/getting ...


bazel 目前可以编译了。当时是在centos7 上,后来切换到ubuntu22.04 ,把所有的python 依赖下载好后可以编译了
 楼主| 发表于 2024-1-9 17:37:14 | 显示全部楼层


erwang 发表于 2023-12-19 14:06
刚才看了下,说错了,不是start.s,是examples/sw/simple_system/common/crt0.S,这里是c程序入口

去年看 ...


我是想研究一下opentitan 固件加载,c和sv之间交互有什么奇淫巧技。

刚开始的时候看到/hw/dv/sv/mem_bkdr_util这个组件,感觉很好用。设想eda功能仿真的时候不需要每次都编译c,而是通过firmware 自主和sv握手交互。
后来看到其实不是的。依然是每次仿真都会bazel编译c,然后生成vmem。

opentitan 看着很牛逼,但确实不符合中国的ic宝宝,哈哈。目前我接触的tb/flow ,好像和这个出入挺大的。顶层集成大家比较喜欢HDLGen这类的,
regfile/regmodel/cheader大家习惯源头是excel ; sv里的外设agent ,大家习惯用爱国版vip ;bus matrix 大家习惯用dw_axi/NIC400 ;主要是desgin相关的东西,没经过验证实在不敢用。

这么算下来,opentitan想要用,得大改,大改基本等于重造了。

总之验证工程师可以学习一下,看看。design就算了。


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

本版积分规则

关闭

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

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-2 04:22 , Processed in 0.028256 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表