芯片人的快乐——python+systemverilog用波形祝你新春快乐 |献上祝福语波形生成器|

简介: 芯片人的快乐——python+systemverilog用波形祝你新春快乐 |献上祝福语波形生成器|

使用方式

资源路径:祝福语波形生成器

Or vcs_wave_chinese_characters_gen: 基于VCS仿真环境的汉字波形生成器

下载解压于安装有vcs和verdi的linux虚拟机之中:

在script目录下,打开 hanzi_trans.py,修改祝福语:

好的,回到sim目录,键入make fun,等边编译仿真完成弹出verdi弹窗:

双击左侧的u_in_if0,然后中键把gogogo拖到波形窗(为啥结构这么乱,因为是拿之前的工程改的~):

然后双击gogogo,并把波形缩放到最小:

换点其他的祝福语:

可以说是过年过节走亲访友表个白唠个嗑啥的必备良器!

工作原理

汉字转点阵字

参考并借用了这篇文章中的代码并稍作修改:

Python实现点阵字体读取与转换的方法

在hanzi_trans.py脚本中将汉字转为01代表的点阵字,当然了,初始转成的点阵(以*表示有值)是这样的:

对应的01点阵即:

那么此时如果要把这些点阵字作为电路的信号输入,那么结合信号本身的波形展开顺序,显然应该是这么对应的:

从左到右每一列为一组32bit信号的每一比特,并且最下面为低比特,上面为高比特;再结合verilog的文件读取方式,显然我需要把数据整理为这种形式:

在脑海里我就想这两种排列方式,然后发现,这不就是数组转置么。。。。。

所以在脚本里做一步:

tp_rect_list = numpy.transpose(rect_list)

脚本最终输出为gogogo.cfg文件,就是上面这个转置后的01点阵图;

用例改造

找个用例复制替换一下,然后加这么一段:

1. task gogogo_case_seq::body();
2.     integer file;
3.     file = $fopen("../script/gogogo.cfg","r");
4.     while(!$feof(file))begin
5.         bit[31:0] value;
6.         $fscanf(file, "%b\n", value);
7.         `uvm_do_with(my_tr, {my_tr.gogogo == local::value;})
8.     end
9.  #100;
10. endtask: body

以二进制的方式读取gogogo.cfg的每一行,赋值给31bit的value,将tr的gogogo变量约束为value的值即可,每处理一行打出来一个transaction到interface中,也就实现了波形效果;

makefile改造

加一个make fun的指令,其实就是make run的固定参数版本,其他参数设置请参看【芯片前端】以vcs编译环境为例做一个适用于芯片前端的极简版Makefile实操教程

1. fun: clean
2.  @../script/hanzi_tran.py
3.  @$(PRE_PROC)
4.  @vcs $(CMP_OPTIONS)
5.  @$(EXEC_SIMV) $(RUN_OPTIONS)
6.  @verdi -ssf sim_base/wave/gogogo_case_0.fsdb &
7. 
8. clean:
9.  @-rm -rf $(SIM_PATH)/exec ucli.key csrc vc_hdrs.h novas.conf  novas_dump.log  novas.rc verdiLog


相关文章
|
6月前
|
前端开发 测试技术 Linux
芯片人的快乐——python+systemverilog用波形祝你新春快乐 |献上祝福语波形生成器|
芯片人的快乐——python+systemverilog用波形祝你新春快乐 |献上祝福语波形生成器|
|
2月前
|
算法 关系型数据库 计算机视觉
基于FPGA的9/7整数小波变换和逆变换verilog实现,包含testbench
基于FPGA的9/7整数小波变换和逆变换verilog实现,包含testbench
|
4月前
|
Python
【玩转python】python实现不同温度之间的互相转换(附源码)
【玩转python】python实现不同温度之间的互相转换(附源码)
74 0
|
8月前
|
Python
Python实现简单信号滤波实战
在有些项目中需要对信号进行滤波处理,尤其是在医疗的设备中如心跳、脉搏等设备的采样后进行处理。滤波的目的就是除去某些频率的信号如噪声。常见的包括有低通滤波、高通滤波、带通滤波。python的scipy模块提供了常用简单的信号滤波方法包括低通滤波、高通滤波、带通滤波、带阻滤波等,很容易实现信号的滤波。
118 0
|
11月前
|
算法 计算机视觉 异构计算
基于FPGA的医学图像中值滤波verilog实现,包括testbench和MATLAB验证程序
基于FPGA的医学图像中值滤波verilog实现,包括testbench和MATLAB验证程序
134 0
|
11月前
|
机器学习/深度学习 算法 异构计算
基于FPGA的FIR低通滤波器verilog开发,包含testbench测试程序,输入噪声信号使用MATLAB模拟产生
基于FPGA的FIR低通滤波器verilog开发,包含testbench测试程序,输入噪声信号使用MATLAB模拟产生
128 0
|
11月前
|
传感器 监控 网络协议
【毕设参考】ESP32 + HaaS Python 打造的噪音检测系统,远离喧嚣,安享静谧
【毕设参考】ESP32 + HaaS Python 打造的噪音检测系统,远离喧嚣,安享静谧
165 0
|
11月前
|
算法 异构计算
m基于FPGA的viterbi译码verilog实现,包含testbench和MATLAB配套验证仿真程序
m基于FPGA的viterbi译码verilog实现,包含testbench和MATLAB配套验证仿真程序
138 0
|
算法
labview信号时域分析编程笔记
labview信号时域分析编程笔记
80 0
|
12月前
|
Python
【Python密度泛函理论】
【Python密度泛函理论】
188 0