CoreCat:画模块电路的好帮手
Drag modules, edit ports, connect wires, and fxxk Visio.
四款开源软件,打造最强墨水屏阅读器
开源什么的最棒了!
为学习而生の魔法传送门
若要足时今足矣、以为未足何时足。
文献导读:从 MATLAB 到 FPGA:A2H-MAS 如何用多智能体重塑 HLS 自动化流程
前言
AI太火了,尤其是在代码方面——AI写代码几乎可以超越人类了。在硬件描述语言上,AI也做的非常好,不论是Verilog还是SystemVerilog,亦或是CHISEL与SpinalHDL[1]。但对于FPGA原型验证,人类的路线还是一如既往,难以让AI介入。算法模型要先在MATLAB上进行验证,随后在FPGA上进行高质量的HLS[2]实现。但从 MATLAB 走到 FPGA 上高质量的 HLS 实现,往往依赖大量人工经验、反复调试和漫长迭代。
现有的LLM设计呢?尽管能生成代码,但仍存在两个问题:其一,是只关注功能正确,忽略了硬件设计更在意的时延、吞吐和资源占用;其二,是单个大模型 agent 容易出现幻觉、上下文遗忘和行为不稳定,很难可靠处理真实世界里多阶段、长链路的硬件开发任务。
怎么让大模型做出最好的回答?针对上面的两个痛点,论文 A2H-MAS: An Algorithm-to-HLS Multi-Agent System for Automated and Reliable FPGA Implementation 给出了一种方案,不是单纯让大模型把 MATLAB 翻成 ...
从零开始学RISC:第十六篇
神秘 j8
反汇编的程序中,总能看到一堆神秘j 8,这是什么?
j 8实际上是个伪指令,会被翻译成jal x0,8,即不保存返回地址直接跳走。在判断比较后跳转中常会看见。
此外,这个j 8后面还跟了已知符号__BSS_END__来做相对标注,标识出0x8 = __BSS_END__ - 0x11bc。
历史遗留问题:CoreMark与ee_printf
我们想一下 之前 移植CoreMark后遇到的问题:在每次的crc更新后,必须插入一句ee_printf。这个问题我们还没有解决。
反汇编分析
这个问题可能出现在哪?我们回过头看一下原先出问题的C代码:
1234seedcrc = crc16(results[0].seed1, seedcrc);seedcrc = crc16(results[0].seed2, seedcrc);seedcrc = crc16(results[0].seed3, seedcrc);seedcrc = crc16(results[0].size, seedcrc);
注意到,这是函数的连续调用。连续调用很可能在寄存器返回值、紧邻的下一次调用参数装载或 ...
从零开始学RISC:第十五篇
三权分立:USM
我们在 从零开始学RISC:第十三篇 中支持了基础的机器模式M-Mode所需要的CSR寄存器。运行一些简单的程序大抵是够了,如裸机C程序或是汇编等。但在实际生产环境中,这根本不够。
我们考虑更复杂的情况。RISC-V规范规定,M 模式是唯一强制要求的模式,U 模式面向应用,而 S 模式面向操作系统。特权级就是用来给软件栈不同组件之间做保护的,为了后续能更方便地移植,我们这里就要考虑不同的特权级对不同指令进行分层,分出个三六九等。低等指令禁止访问高等资源,就是这种感觉。
放到实际系统里,就是:
U 模式跑用户进程;
S 模式跑内核;
M 模式留给最底层固件/安全监控/平台控制。
这样应用、内核、固件三层彼此分开,任何一层出问题,都不至于直接拿到“整机最高权限”。
实际上,RISC-V 规范本身就把只支持 M 的实现定位在简单嵌入式系统,支持M和U的算是更强调隔离的嵌入式系统,而同时支持M、U与S,才算是面向类 Unix 系统的典型组合。
defines.svh 修改
首先加一些需要用到的宏:
123456789101112131415161718192021222 ...
全栈 Cloudflare 部署的小型在线语音房
前言
最近玩杀戮尖塔2玩的上头疯了,身边人全在玩,每次打开Steam都看到一堆正在联机爬塔的。
然后好友有的用KOOK有的用小黑盒有的用微信电话……太乱了。所以自己整一个多人在线语音房:
AI
release
commit
license
Online Demo
特点
100% AI生成,不含任何人工代码
基于全栈Cloudflare服务,轻松白嫖部署
简易控制台管理
定期清理
高通与小米,造就了历史上最完美的一次『合作』。
现在是大越狱时代!
Butterfly主题中自定义Highlight.js语法高亮
前言
看了一下 Highlight.js 的说明文档,不支持RISCV的汇编。只能自己摸索怎么高亮了。
因为Hexo在启动时就会对Markdown文件进行编译并转换成HTML文件,因此修改本地安装好的node库就行。
Highlight.js
在Hexo项目下的node_modules\highlight.js\lib内新建riscvasm.js和riscvasm.js.js:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130/*Language: RISC-V Assembly ...
从零开始学RISC:第十四篇
CoreMark移植
功能验证和CSR都做完了,该跑个分了。
CoreMark 是由 EEMBC 推出的一个处理器基准测试(benchmark),主要用来衡量 嵌入式处理器、MCU 和 CPU 内核的整数运算性能。它的设计目标是尽量只测试“处理器核心本身”的能力,而不过多受操作系统、外设或平台差异影响,因此很常被用来做不同芯片之间的横向比较。
源代码获取
源代码可以在eembc/coremark获取。
目录结构
CoreMark的库底下有很多文件。我们只需要关心barebones文件夹下的内容即可,这是适用于裸机的移植方案。
1234567891011121314151617181920├── barebones/ # barebones 移植│ │ # 这两个文件需要修改│ ├── core_portme.c # coremark 的平台移植层实现模板│ ├── core_portme.h # 核心可移植层头文件│ ││ ├── core_portme.mak # Makefile│ ...



