您尚未登录。

楼主 # 2024-03-25 17:57:35

aquasnake
会员
注册时间: 2024-01-09
已发帖子: 60
积分: 473

AG RV2K 调试

把supra分解后获取bin单独调用

然后用脚本搭建了windows下的命令行环境,包括fitter和downloader,一键产生bit file(bin)和一键下载。fitting成功,download过程出现校准片内硅振荡器出现错误,何解?

QQ图片20240325180646.png

最近编辑记录 aquasnake (2024-03-25 18:07:17)

离线

楼主 #1 2024-03-25 19:13:47

aquasnake
会员
注册时间: 2024-01-09
已发帖子: 60
积分: 473

Re: AG RV2K 调试

我测试了下极限fitting利用率是89%,基本上大概是在1890个LUTs,我跑了上百次,只要综合产生的LUT超过189x,基本上fitter就跑不出来。

因此大致情况下稳定跑出来基本控制利用率在89%以下,当然我还是用的几个月前的fitter,如果是近一两个月supra下的fitter,更难跑出来,效率更降低了。因此我建议不要盲目跟随原厂升级tools,如果你以前做的稳定的项目,非必要不要升级

离线

楼主 #2 2024-03-25 20:38:59

aquasnake
会员
注册时间: 2024-01-09
已发帖子: 60
积分: 473

Re: AG RV2K 调试

似乎已经下载成功

openocd能获取到device id,基本可以认为已经可以通过swd访问到芯片

QQ图片20240325203238.png

离线

#3 2024-03-25 23:24:32

again
会员
注册时间: 2022-12-30
已发帖子: 17
积分: 63

Re: AG RV2K 调试

@aquasnake
之前10K,16K的不是号称99%吗,这个2K的怎么差这么多

离线

楼主 #4 2024-03-26 09:32:35

aquasnake
会员
注册时间: 2024-01-09
已发帖子: 60
积分: 473

Re: AG RV2K 调试

目前我只能用到89%,一旦资源用到超过1890 LUTs,fitter就跑不出来。不清楚是不是工具限制了产生bin的size大小还是其他什么。mcu的firmware分配到内部flash是从低到高,cpld的bit bin是高空间活动分配(起始地址0x800fffff - cpld bin size),中间必然有一个分界,可能是内部flash不够多,只能限制了size,因此也限制了cpld的充分使用,不知道某些具有更多内部flash容量的rv2k是不是这种情况

最近编辑记录 aquasnake (2024-03-26 09:33:24)

离线

楼主 #5 2024-03-27 08:29:19

aquasnake
会员
注册时间: 2024-01-09
已发帖子: 60
积分: 473

Re: AG RV2K 调试

目前 agm尚且还需要altera环境,来注入外挂脚本利用quartus ii产生网表,这部分无法自动化,其他我都实现了一键批处理

离线

楼主 #6 2024-03-27 10:46:14

aquasnake
会员
注册时间: 2024-01-09
已发帖子: 60
积分: 473

Re: AG RV2K 调试

int OSC calibration失败的原因已经解决,对Jlink-OB下载线的vcc 3.3v供电很敏感. 偏差0.5V都不行。

我因为通常习惯在jtag调试器对target板供电为了防止反向灌流加个二极管,由此导致了vcc的压降,造成校准失败。

虽然我已经让校准通过,但是我对校准精度不报大的期望,当然,这个内部晶体时钟我只用来对信号延迟计数用,并不涉及其他,请不要学我,我任何时候都是把器件用到很抠门的地步,能省一颗料则省。

最后还是希望agm在这里对内部晶体供电做一个补偿,是否考虑内部供电统一安排到2.5v vcc(vddio除外),以便当用户在使用欠压下载线的时候能够保证内部晶体的稳定

最近编辑记录 aquasnake (2024-03-27 10:48:20)

离线

楼主 #7 2024-03-27 11:06:41

aquasnake
会员
注册时间: 2024-01-09
已发帖子: 60
积分: 473

Re: AG RV2K 调试

由于calibration内部晶体用的电压和目标板stand alone工作时的电压可能有偏差,因此校准到的晶体输出频率不等于实际工作时候的频率,由此可以推断,必须保证下载线输出3.3V和板子实际工作后的VCC尽可能地保持一致

同时,猜测AGRV2K内部甚至没有LDO对这个int OSC供电,而是直接跟随系统VCC 3.3V

l

离线

楼主 #8 2024-03-29 12:19:15

aquasnake
会员
注册时间: 2024-01-09
已发帖子: 60
积分: 473

Re: AG RV2K 调试

fitter效率突破不了90%上限的问题,可能是无法解决的,我试图编辑.qsf文件的约束参数也没有什么优化,基本上原厂提供的配置就已经到达极限了。 也并非的工具的问题,我发现agm用的约束参数就是quartus ii兼容的(这里面很奥妙),cyclone 4架构或许就是需要剩余一部分面积才能布局布线走出来,而阉割到2K或许无法保证剩下的10%的面积连成一片,零散的10%的面积或许就是无法利用起来的,甚至无法插入一个锁存/触发模块

基于LUT结构的FPGA,Verilog代码需要写的尽量对称,所谓对称,就是if或者case语句内尽量具有相同的表达式结构,越对称,便于合并相同逻辑,综合的效率越高。同时尽量把case的所有分支都填充满,条件越详细,反而综合后分配的LUT越少。

虽然fitter的优化约束无法扣出资源,但是在综合这个步骤,通过改写代码,统一表达式结构,同样扣掉了几十个LUT出来,以前我做IC设计bring up时候的痛苦回忆又回来了,要跑通一个优化的配置,可能需要跑上百次verification. 通常效率最高的时候是在半夜,这个时候没有人和你争服务器job现程。而在白天,比如在一间科技公司,几百号人争夺代码服务器上的cpu资源,通常很难跑的快

最近编辑记录 aquasnake (2024-03-29 23:24:11)

离线

#9 2024-04-01 09:07:33

jiaowoxiaolu
会员
注册时间: 2021-08-27
已发帖子: 42
积分: 58

Re: AG RV2K 调试

前两天也试了他们的AGRV2K,发现他们的编译器有点玄学,不懂怎么回事,有时候改一个引脚分配文件把引脚映射到另外一个IO,其他啥都不变,编译下载后结果不符合预期,有时候引脚没变,单纯修改verilog逻辑,改变某个引脚后编译下载,结果又不符合预期,但是偶尔从新按照他们的新建工程步骤,代码不变新建编译下载竟然又符合预期了,搞得我很迷茫。。。。

离线

楼主 #10 2024-04-01 10:32:18

aquasnake
会员
注册时间: 2024-01-09
已发帖子: 60
积分: 473

Re: AG RV2K 调试

agm的toolchain其实是属于外挂,对quartus ii做了一定程度的注入,migration以后产生的quartus ii的工程文件,然后就是利用quartus ii综合,此时需要运行agm的外挂脚本(af_quartus.tcl),脚本中把综合的约束条件自动注入综合器(它会覆盖原始quartus ii中的综合setting优化设置),产生网表

然后执行agm的fitter(af.exe)去布局布线,此时注入fitter的约束条件,同时根据.ve的pin脚分配产生bin。

在利用quartus ii做综合的的时候,一旦运行了agm的脚本,如果再次去修改ide的全局综合优化设置,就会改变外挂之前设置好的参数,所以,一旦运行脚本(af_quartus.tcl)后,就不建议去做其他setting修改,这会导致产生一些非预期的问题,唯一能做的就是点箭头start compilation

如果你在次过程中,不慎修改了setting,那么最好还是再次运行一下外挂脚本(af_quartus.tcl)


由于是外挂,因此步骤上是必须严格按照顺序的,点错了,或者中间修改了ide设置,都有可能破坏注入参数

离线

楼主 #11 2024-04-01 10:38:16

aquasnake
会员
注册时间: 2024-01-09
已发帖子: 60
积分: 473

Re: AG RV2K 调试

仅仅是引脚更改,那么其实不用在quartus ii里面做编译,只需要修改.ve文件,然后再次执行af.exe就可以了。


我直接是把fitting, downloading写成了脚本一键运行, 因为fitting有时候跑一次跑不出来,会error,要多跑一次才会顺利通过,因此一键运行加速了我开发的时间,这样我完全抛弃了supra前端

最近编辑记录 aquasnake (2024-04-01 10:58:11)

离线

#12 2024-04-03 08:50:17

jiaowoxiaolu
会员
注册时间: 2021-08-27
已发帖子: 42
积分: 58

Re: AG RV2K 调试

我是直接修改verilog,然后点编译,再到supra点编译下载,或者修改了VE文件也会在supra编译一次才下载,现象就和我上面说的一样

顺便问一下,这个VE引脚配置,没有上下拉设置和电平类型设置的? 其他家的fpga大多数都有这种设置,就AGM的没有?

离线

楼主 #13 2024-04-03 19:27:44

aquasnake
会员
注册时间: 2024-01-09
已发帖子: 60
积分: 473

Re: AG RV2K 调试

@jiaowoxiaolu
因为控制字写在 ur_project.qsf文件中,这个文件其实也是一个脚本,会被af.exe调用

然而约束控制字都是altera的东西,你甚至可以在altera的工程目录下找到类似的.qsf文件,然后把需要约束的管脚配置字,摘抄过来

为什么agm不公开这些?因为这些东西是altera/intel的,quartus ii中用户不必关心.qsf文件,直接在assignment editor中有配置,配置完毕后会自动更新.qsf。而在agm中,是直接编辑这个.qsf文件。

我一开始也尝试去向供应商询问这些东西,但是基于某些原因,没有获得我需要的解答,因此都是自己慢慢啃生肉。当然,在此过程中已经了解为什么会不解答这些技术问题。因为这涉及到agm对altera的软硬件做了什么的问题,这些问题是不方便原厂自己公开释放的

最近编辑记录 aquasnake (2024-04-03 19:28:43)

离线

#14 2024-05-07 06:01:26

90999
会员
注册时间: 2020-06-25
已发帖子: 11
积分: 26

Re: AG RV2K 调试

以前我试过不用Q2直接上YOSYS,可以编译出来东西,然后AF接力,最终烧录AG1280Q48, 能正常工作,但是极简单的12MHZ可编程分频器,有输出却频率不对,同样代码Q2完全OK,看来完全剥离Q2并不是不可以,就是代价有点大。

离线

楼主 #15 2024-05-10 23:29:25

aquasnake
会员
注册时间: 2024-01-09
已发帖子: 60
积分: 473

Re: AG RV2K 调试

用开源的综合器裸奔,就不能用quartus ii里面MegaWizard IP的东西了,这些都是绑定到IDE的闭源IP库。除非你用你自己反向出来这些模块并以代码方式嵌入到你自己的项目

离线

楼主 #16 2024-05-11 11:22:21

aquasnake
会员
注册时间: 2024-01-09
已发帖子: 60
积分: 473

Re: AG RV2K 调试

片上振荡器是精度5%??

而且RC振荡器在上电起振有一段时间的预热时间才能稳定。 如果这个预热稳定时间,大于系统RESET时间,而且又用这个片上振荡器作为信号整形、延迟或者分频等精确用途的话,比较难以搞定。

但是系统reset时间又不能做太长,这是cpld,不是单片机,需要瞬时启动特性。我在尝试如何把这个5%精度又需要上电时间的黑科技玩起来用来代替真正的外部时钟源

最近编辑记录 aquasnake (2024-05-11 11:32:56)

离线

楼主 #17 2024-05-11 13:36:34

aquasnake
会员
注册时间: 2024-01-09
已发帖子: 60
积分: 473

Re: AG RV2K 调试

如果用开源的综合器产生网表,那么要做的事情很多,需要手动写 *asf

先借用quartus ii跑一遍,跑之前先assignment editor配置好虚拟的管脚约束,然后点af_quartus.tcl运行产生网表,以及altera的*.qsf文件。然后跑一次fitter,会自动将altera的*.qsf迁徙到AGM的 .\alta_db\alta.aqf, .\alta_db\alta.asf

但是,这两个约束并不是最终的,最后,将ur_project.asf里面的设置再次覆盖,所有的参数都是altera quartus ii里面的,因为他这个fitter是衔接quartus ii的。

假设用第三方开源的综合器产生网表,但是这些文件并不会导出,也不会是quartus ii的参数,因此会出现丢失pin脚约束和其他全局约束的情况。fitter还是会调用 .\alta_db\alta.aqf, .\alta_db\alta.asf 去约束,而这几个都是quartus ii环境下的,它与quartus ii强耦合

最乐观的情况是你上次成功编译后管脚约束是正确的,你又会手动编辑ur_project.asf。而且你的项目对于pin脚约束(上拉,OD,驱动力,滞回,延迟微调整等)不敏感

离线

楼主 #18 2024-05-11 13:47:28

aquasnake
会员
注册时间: 2024-01-09
已发帖子: 60
积分: 473

Re: AG RV2K 调试

切记一定要用商用IDE,不要用开源的东西。开源的东西不成熟,要把开源的搭建成可以商用的程度,差不多就是搭建环境,这需要一个TEAM的人力,少说也要3个人一个月的高强度工作。

或者是,一个人单独磨半年1年,搞出一套环境,当然搞出了这套环境你也只能自己用。自己一个人做点别人搞不了,不屑于搞的东西,而且原厂又不知道。

离线

楼主 #19 2024-05-13 14:24:27

aquasnake
会员
注册时间: 2024-01-09
已发帖子: 60
积分: 473

Re: AG RV2K 调试

其实调用 quartus综合也可以一键批处理化

新建一个文本文档改后缀为bat文件,里面是

path = path;C:\altera\13.1\quartus\bin64

quartus_sh -t af_quartus.tcl

pause

这样就可以了。前提是先安装quartus II 13.0或者13.1
然后观察.\simulation\modelsim目录下是否产生了最新修改时间的.vo文件,有则是综合通过。

但是综合用批处理比较不直观,不能看到到底占用了大致多少的芯片资源(LUT),不适合在开发中使用,用来出版本合适。如果是前期代码编译开发,还是开quartus IDE界面比较好。

但是在fitting的过程中,会有资源占用比例显示出来,其实显示资源占用比放在综合脚本里面显示比较人性化

写脚本的方便之处是缩短了编译时间,也不用手动去选.tcl脚本,防止点错脚本。这样一键傻瓜操作,加速了对工具使用的适应磨合时间(大多数开发者,开发一个新项目开始,几乎要占用3-7天搭建环境,适应环境,并琢磨出一套开发流程,直接命令行的调用环境效率提升很明显)

最近编辑记录 aquasnake (2024-05-13 14:31:36)

离线

楼主 #22 昨天 15:19:37

aquasnake
会员
注册时间: 2024-01-09
已发帖子: 60
积分: 473

Re: AG RV2K 调试

我看了几个例程,就是学生作品,把实际的物理管脚直接写到了verilog模块里面的输入输出IO上了。

这种写法,不具有模块化,耦合很强,移植需要改写很多文件。

当把IO替换成自定义信号后,fitter就丢失了管脚分配。但是fitter不会强制出错,会给你默认按管脚顺序分配,只给出warning,会顺利产生bin,当你用这个bin烧写到片子里面,管脚定义是不对的,上去很容易烧片子。(废话,假设输入被定义到输出,不就io大电流了) 这很危险。

我彻底改写了框架,要么自己写一个AGRV2KLxxx.pinmap映射表让脚本产生正确的管脚分配,要么直接粗暴地在.asf文件中定义管脚。因为.pinmap文件也只是管脚映射,没有其他上下拉,驱动力等的设置,最终也是要看.asf文件。

至于.ve,实际没有多大用处,可能对于MCU的代码有意义,类似一个define,但是管脚分配在AGM内部,尽然涉及到了3个地方(.ve,.pinmap,.asf),拉扯到最后甚至绝大多数用户都不知道怎么定义管脚!

最近编辑记录 aquasnake (昨天 15:21:34)

离线

楼主 #23 昨天 15:45:06

aquasnake
会员
注册时间: 2024-01-09
已发帖子: 60
积分: 473

Re: AG RV2K 调试

注意,仅仅是写了.ve文件中的管脚映射,也是不会导入到fitter控制中去的。

在"af_prepare.tc"中:

### Run Compile ###
set PIN_MAP "__device_pinmap__"
set VE_FILE "__ve_file__"
if { [file exists $VE_FILE] && [file exist $PIN_MAP] } {

以上必须满足同时有.ve文件和.pinmap文件才能产生正确的.pre.asf

遗憾的是,SDK里面并没有给你包含AGRV2KLxxx.pinmap文件,这个脚本非常罗嗦,绕了一大圈最终有.asf控制,什么pre.asf都是中间临时脚本,最后统一被.asf覆盖。

而且完全可以删除xxxx.pinmap这些文件,也就是说,不管quartus ii里面的逻辑管脚映射如何,都没有意义,最后物理分配看.asf文件。甚至删除了pinmap文件还更有好处,我不需要先在quartus里面对着一个模型bga封装去虚拟分配管脚了,哪怕它是空的,也完全没有关系,彻底把管教配置和quartus剥离干净

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn