adoc转换html+UPF低功耗仿真例子+python转换C代码+readmemh的@使用

发布时间 2023-10-01 17:58:31作者: 大浪淘沙、

adoc转换html

adoc这种格式是很多riscv文档使用的格式,该格式可以生成pdf,生成html。
生成html的好处是,选中和翻译方便,复制粘贴方便。
首先是gem软件要安装,这个软件似乎是ruby相关的(RubyGems is a package manager for the Ruby programming language that provides a standard format for distributing Ruby programs and libraries),然后就可以安装asciidoctor软件,使用该软件做转换。
gem的安装:
https://www.jianshu.com/p/b6a6de7c124c
http://daner1990.github.io/工具/2015/10/12/install-ruby-in-windows/
asciidoctor中文手册:
https://github.com/asciidoctor/asciidoctor/blob/main/README-zh_CN.adoc
Ruby Gems 镜像使用帮助:
https://mirrors.tuna.tsinghua.edu.cn/help/rubygems/

gem install asciidoctor
asciidoctor README.adoc

ruby升级

https://www.dandelioncloud.cn/article/details/1512439829882314754

rvm -v
curl -L get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh
rvm list known
rvm install ruby 2.4.1
ruby -v

UPF低功耗仿真例子

concepts involved in defining power intent using Unified Power Format (UPF)
这部分没有试过,只是大体看看例子做了什么,什么是UPF,用什么软件,需要做什么样的编程操作。
下面是原始链接:
https://bbs.eetop.cn/thread-595609-1-1.html

低功耗要求,即power intent:顶层模块为TOP,而TOP中例化了一个子模块,其例化名为instA1,具体的代码如下所示:
inst的模块的代码:
image
TOP模块的代码:
image
设计需要为:

顶层TOP 的供电轨道为VDD和VSS,而instA1的供电轨道为VDDA和VSS,
当VDD掉电后instA1的out1端口也被关掉,out2不受VDD的影响。

低功耗的要求使用一些函数实现,通过查找IEEE1801-2018等手册,获知每个函数的作用。
根据要求创建了两个电源域,并且为电源域指定了供电端口和供电线,并将供电端口和供电线进行连接构成供电网络,
而且还为两个电源域显式的指定了主供电线网络,最后根据要求,VDD掉电后instA1的out1也将被关掉,
这样需要为instA1的out1端口指定相对的供电线VDD。
image
然后创建testbench:
image

vcsmvsim  -debug_all  -upf  demo.upf  -sverilog upf_package.sv  &

然后看波形

形式验证 formal

都是这个视频里的,有需要的时候还要再看一遍。
https://www.bilibili.com/video/BV1he4y1J7Tp/?vd_source=0b160b3f23f010d84a4c31e761257ea4

对于sysnopsy,用的是vcf仿真工具,配合verdi使用。
形式验证包括了等价性检查和属性检查。
image
对于一个小型的系统,大体上需要覆盖的验证模块由以下的图进行说明:
● 子模块的功能
● 子模块之间的连接性
● 数据通路的正确性(连接性相同)
● 接口协议
● 内存一致性
● 控制单元的功能
● debug接口等
vcf使用12个app完成这些功能仿真存在的不足和形式验证的擅长点
image
image

检查x态赋值

0和1同时assign给了一个信号的情况
image

屏蔽掉部分检查结果

image

保存检查结果

image

检查状态机卡死的问题

image

查看统计报告

image

重新执行形式验证

image

检查越界访问

下图中,由于定义的时候,变量左边是宽度,但是右边本质是index,index的取值只能是0或者1,当index为2,则报错。
image

形式验证要求

RTL可综合

启动脚本

image

检查连接性

检查连接性依赖的excel表格,可以有表达式的。
image

python转换C代码

对于非计算密集型任务,加速效果不明显,甚至不能加速。
第一步是文件转存pyx后缀防止被识别
第二步是编写setup文件执行转换

from setuptools import setup
from Cython.Build import cythonize

setup(ext_modules=cythonize('fibo.pyx'))

第三步是开始转换

python setup.py build_ext --inplace

第四步是使用转换得到的so文件新的python库中和使用
期间可以将build目录,pyx文件等都删掉,只留下以下文件和so文件。so文件会被导入。

import time
from fibo import fib

start = time.time()
result = fib(40)
end = time.time()
print('斐波拉契数列第40项为:' + str(result)+
      '耗时:'+str(end - start)+'秒')

readmemh的@使用

存储到数组中指定的位置上:
以下在存储的时候,333被存储在mem[5]的位置

111
222
@5
333