wujian100开源文档中的case中的仿真是对soc个对应模块得功能性仿真吗?如果case中的波形正确是否说明该soc相应的模块设计正确?
wujian100开源文档中的case中的仿真是对soc个对应模块得功能性仿真吗?如果case中的波形正确是否说明该soc相应的模块设计正确?
是的,case 中的仿真对应 soc 的每个模块,如果仿真波形正确基本上说明该模块功能 ok,如果你还不放心的话,可以自己修改代码再仿真下试试。
那请问一下case里的addr_map、had_soc是对什么的仿真呢?
addr_map 应该是测试总线上对应的地址映射是否正确,had_soc 模块具体是啥我也不太清楚,从测试文件来看,我觉得应该是跟他们的 CK-Link 相关的调试模块的测试。pwm 模块的波形,你先看看 case 的代码配置了哪些个通道,在 x_pdu_top.x_sub_apb0_top.x_pwm_sec_top 模块里选择相应的信号查看。
@飞 你好,我不知道你执行 run_case 脚本的时候,有没有去看一下这个脚本具体写了些什么?如果你没看的话,建议你看一下。
1、在你运行 run_case 脚本之后,会在 workdir 目录下生成对应的工程,包括 makefile、linker、启动文件、库函数等一些源码。但不是全部,具体根据 Makefile 的定义。
2、接下来通过执行 makefile 脚本,使用对应的工具链,编译生成可执行文件,包括 elf、bin等。makefile 最后还会输出 .pat 文件,即用于仿真的二进制指令。
3、启动与你配置的相对应的仿真工具进行仿真。比如 iverilog,启动 iverilog 后会读取你所有的 rtl 代码,分析编译,其中也包括把你上一步生成的 .pat 文件初始化到对应 mem (rom) 。仿真启动后会到 mem 中取指,然后一步步执行。
1、代码不仅仅只有主函数,一个芯片从启动到 main 函数之前,还有很多步骤要做。这些工作很多时候都是用汇编语言来完成的。所以你也应该注意到还有 .S 文件的存在,一般是 statup.S 文件。而 wujian 的一些系统初始化和 Broad 初始化相关的操作就是在这里面完成的,包括串口的配置。
2、虽然主函数是使用 printf 来完成字符串输出的,但是 printf 函数的底层也是有做重定向到串口了,所以使用 printf 函数就能通过串口输出相应的内容。