用FPGA模拟fuse时出现的一个小问题

我们知道现在很多芯片里面都会有一个fuse的模块,通过fuse我们可以来定义芯片的生命周期,保存相关的秘钥等等,可以说fuse是芯片安全的一个基础,fuse虽然简单,但是至关重要,我们在芯片前期进行FPGA验证的时候,也需要在FPGA上实现FUSE的功能,但是FPGA本身并没有FUSE,所以我们还是要通过SRAM来模拟FUSE。这次发现的问题就是FUSE模拟的时候出来的一个问题,在实际芯片中...

继续阅读 »

FPGA Emulation移植中出现的一个小问题

在ASIC设计中,我们经常会用到FPGA来做一些流片之前的芯片测试,这个时候我们就需要将我们的Design porting到FPGA平台上来,一般我们都要手动将设计中的模拟模块去除,简化时钟设计,尽量减少门控时钟数量,毕竟FPGA并不喜欢门控时钟。还有一个比较大的改动就是padring,因为ASIC设计中,pad往往会有很多模拟相关的设计,比如ESD等东西,这个FPGA一般是无法支持的,所以...

继续阅读 »

对于嵌入式newlib中printf的一个小思考

最近在做一个关于RISCV嵌入式项目的开发,RISCV平台用的是一个picorv32的一个开源小核,代码只有不到三千行,但是功能基本完备,非常适合在FPGA中做一些和控制相关的操作。为了程序开发方便,我在编译CPU程序的时候,直接使用了newlib来实现一些标准的C库程序,这样虽然程序效率不高,好在常用的C库程序不需要单独开发,我们只需要将我们的精力集中在应用程序开发上就好,并且在程序测试的...

继续阅读 »

Zebu学习笔记(4)- 运行

终于到了上板的时刻了,对于玩硬件的人来说上板总是让人激动的,毕竟可以看到码的代码可以变成实际看得见摸得着的东西了。不过对于Zebu来说,上板看起来就是换了一个地方仿真而已,并没有什么,代码还是代码,和仿真相比除了速度快点,似乎没有什么特殊的地方。不过,速度快点也是很不错的呀,嘿嘿。Zebu的运行一般有以下几种方式,并且和系统设计采用的方法也是相关的。Cycle based C/C++程序控制...

继续阅读 »

Zebu学习笔记(3)- 编译

Zebu采用一个Unified Compile Flow, 整个Design和Testbench都统一通过VCS管理和编译,对于VCS的调用也是通过UTF工程文件定义的。UTF文件包含系统编译的所有信息,包括VCS编译和Zebu后端(类似综合布局布线)的所有操作,所有操作均由zCui完成,VCS编译过程会处理所有Design相关的源文件,为了有效的Porting,我们可以直接重用仿真环境的V...

继续阅读 »