Lattice调试笔记
型号:LFCPNX-100-7CBG256I
- lattice DDR3 IP core模块的初始化init_done完成后,init_start信号应该立刻拉高;
- lattice DDR3 IP core模块的WL和RT不过时,需要适当延长模块的复位时间;
- Lattice FIFO的复位模式为 【1:表示复位】;
- 出现过使用FIFO时,导致加Debug文件后,bit文件无法下载到FPGA,不加Debug文件时bit文件可以下载到FPGA;注释掉FIFO使用部分,可以加Debug,并下载bit文件。【可能是FIFO使用不规范,工程文件有导致无法下载bit文件的情况。改用FIFO原语解决】
- 【软核】部分情况debug不过,可能的原因是连接器未连接上,FPGA未下载固件,连接器异常(此时需要重启连接器);debug时出现error:有关breakpoints异常时,需要清空当前所有的breakpoints。
- 在进行IO引脚约束时,需要确认有些bank是否支持所需要的电平;例如bank3、4、5使用1.8V时IO type需要选择LVCMOS18H,而不是LVCMOS18.
- IO约束时,出现unconnected port,比如sensor_spi_sdo做约束时总是unconnected。【需要加约束 ,例如: (input wire sensor_spi_sdo /* synthesis syn_keep=1*/ , )然后编译。】
- 调试软核时,软核和FPGA通过AHBL总线通信,对于读取数据操作,若FPGA模块卡在某个状态中,此时软核也会因为一直在等待数据,卡在读取部分。【可考虑软核加入WatchDog处理卡死进程的问题,并对外部卡死模块复位】
- 在使用reveal debug调试时,部分模块(子模块中调用的模块)的信号加入之后,工程编译会报错。【设置为input、output的信号无法抓取,可另外设置reg型寄存器,将待抓取的信号赋值到另外设置的寄存器上,并抓取该寄存器】
- 加入软核后的工程编译可能会有报错如下,但不影响编译,可忽略该error。报错如下所示:
【Error 1009990 Synthesis ERROR - D:/ProjectsOnITEK/lattice/LatSoC/LatSoC/./lib/latticesemi.com/ip/cpu0/2.2.2/rtl/cpu0.v(0): cannot open file ** 】
- Propel builder软核配置中,memory的base address需要从0x0 开始;
- Propel中有时一直无法连接,扫描到设备,可能是heap size(位于软件界面最下一栏的靠右位置)不够,重启软件一般可解决。
- Propel导入工程需注意,之前生成过的工程可正常导入,根据工程命名来确定能否导入,若将能导入的工程文件夹命名修改,之后便无法正常导入到Propel中。
- 模块端口,input output inout需要定义类型,reg、wire。未定义的端口可能会导致编译不过。
- 关于固化程序,有时出现bit文件烧写进Flash后,重启相机,程序运行异常,需要先把bit文件下载到FPGA中,然后固化到Flash中,此时重启相机,正常启动。
- 需要考虑PLL的FB clk是否能用作相移时钟;PLL输入时钟一般不可复用;
- 在使用IDDR原语时,输入慢时钟(分频后的时钟)遵循使用primary clock,否则可能导致place & route不过;
- Reveal部分创建的核,命名修改后有可能导致综合不过,且从报错中无法知晓原因;
- LFCPNX的原语DELAYA使用动态延迟时,端口如果是3.3V会报错,让使用1.8V作为电平标准,无法编译过,使用DELAYB的静态延迟可正常。
- 模块中若使用initial语句进行初始化,可能导致寄存器被编译器优化,无法赋初值。【lfsr模块中出现此现象,涉及到对变量的幅值,对寄存器用寄存器赋值,部分编译器会优化掉这些寄存器。】
- 有概率下载到FPGA的bit文件无法正常启动,可能是license不全导致的crc编码或者加密异常,需要不全license或者原厂提供此部分补丁。