最新文�? 原创 : 怎样理解电磁兼容电路 原创 : 元器件布局布线PCB基本规则 原创 : EMC电磁兼容 原创 : TVS管的常用 原创 : FPGA中的HP Bank、HR Bank、HD Bank。
原创 : IC开发——VCS基本用法 历史版本:
上次修改时间:
; 右键Add to Waves -->; New Wave View\n\n\n\n![](https://www.testingcloud.club/sapi/api/image_download/d1ee53bb-5de8-11ef-8483-00163e13fc6a.png)\n\n### 2.5. f文件\n\n在工作目录下新建一个verilog_file.f文件,将所用到的verilog源码以及路径写入文件,并保存退出。使用-f verilog_file.f 选项,即可将.f文件里的源码全部编译。\n\n![](https://www.testingcloud.club/sapi/api/image_download/d25c5816-5de8-11ef-8483-00163e13fc6a.png)\n\n### 2.6. 常用命令\n\n以下有其他常用编译选项,注意各个编译选项的顺序,有时出错需要调整。\n\n1) -R 编译后立即运行,即编译完成后立即执行 ./simv\n\n2) -Mupdate 源文件有修改时,只要重新编译有改动的.v文件,节约编译时间。\n\n3) -sverilog 打开对Systemverilog的支持,编译Systemverilog文件时使用。\n\n4) -timescale=1ns/1ns 设置仿真精度\n\n5) -o simv_file 编译默认产生的可执行文件为simv,可以使用 -o 更改可执行文件名。\n\n### 2.7. makefile\n\n命令比较多时,常用makefile文件来描述。\n\n```\n.PHONY:com sim clean\n\nOUTPUT = adder_top\n\nVCS = vcs -sverilog +v2k -timescale=1ns/1ns \\\n -debug_all \\\n -o ${OUTPUT} \\\n -l compile.log \\\n\nSIM = ./${OUTPUT} -l run.log\n\ncom:\n ${VCS} -f verilog_file.f\n\nsim:\n ${SIM}\n\nclean:\n rm -rf ./csrc *.daidir *.log simv* *.key\n```\n\n终端上输入 make com 后回车,相当于在终端中输入以下内容后回车,进行编译。\n\n终端上输入make sim后回车进行仿真。\n\n## 3. 代码覆盖率\n\n### 3.1. 概念\n\n在进行功能验证时,给设计添加激励信号,查看仿真结果,需要考虑覆盖率的问题。覆盖率分为代码覆盖率(code coverage)和功能覆盖率(function coverage)。功能覆盖率就是检查设计的功能是否完善,需要考虑很多不同的情况,是使用System verilog的重点内容。代码覆盖率是检查代码是否存在冗余,检查所有的代码是否都已经执行,状态机所有的状态是否都有到达,检查 if else 和 case 条件语句的条件是否都有使用。防止一些不必要的代码浪费芯片面积,毕竟面积就意味着钱。我们这里只讨论代码覆盖率。\n\n对于RTL代码,通常考虑以下覆盖率:\n\n### 3.2. 生成覆盖率文件\n\nVCS在统计代码覆盖率的过程中,我们通常在编译和仿真命令上添加对应的开关选项,生成一个 .vdb文件记录覆盖率的情况。再使用dve打开该文件查看。下面介绍一些选项。\n\n-cm <;coveragetype>; :打开对应类型的覆盖率,例如 -cm cond+tgl+lin+fsm+path为统计上述所有覆盖率。可根据需要增减。\n\n-cm_name:设置记录有覆盖率信息文件的名字。\n\n-cm_dir:指定生成文件的目录。\n\n以上三个选项编译仿真过程都要加上。下面的选项在编译过程加上。\n\n-cm_log + filename.log:.log文件记录仿真过程中统计覆盖率的信息。用的比较少。\n\n-cm_nocasedef: 在统计case语句的条件覆盖率时,不考虑default条件未达到的情况。\n\n-cm_hier vcs_cov.cfg:通过.cfg文件(名字随便取)选择要查看覆盖率的模块/文件。\n\n![](https://www.testingcloud.club/sapi/api/image_download/d2c2eeca-5de8-11ef-8483-00163e13fc6a.png)\n\n\n\n“+”代表查看,“-”代表不查看。tree代表查看某个模块调用的子模块。\n\n在文件内部,可以使用特殊注释来打开和关闭代码覆盖率的统计:\n\n//VCS coverage on 统计代码覆盖率\n\n.......\n\n//VCS coverage off 不统计代码覆盖率\n\n在上述注释之间的内容,统计覆盖率。其余地方不统计。\n\n### 3.3. 查看覆盖\n1. 统计覆盖率命令并启动UI \n```\ndve -covdir *.vdb &\n```\n1. 单击箭头1处加号,再双击箭头2处的U1,查看设计的代码覆盖率。 \n\n\n![](https://www.testingcloud.club/sapi/api/image_download/d3240f5c-5de8-11ef-8483-00163e13fc6a.png)\n1. 行覆盖率,第25行未执行过。 ![](https://www.testingcloud.club/sapi/api/image_download/d3829f6a-5de8-11ef-8483-00163e13fc6a.png) 1. Toggle coverage:大量节点都没有 0 ->; 1 和 1 ->; 0 两种跳变 ![](https://www.testingcloud.club/sapi/api/image_download/d3e38e2c-5de8-11ef-8483-00163e13fc6a.png) 1. FSM coverage : 2\'d1 ->; 2\'d0 的转换没有发生过。 \n\n\n![](https://www.testingcloud.club/sapi/api/image_download/d44a6b49-5de8-11ef-8483-00163e13fc6a.png)\n1. condition 覆盖率 1.  Branch(Path) 的覆盖率 \n## 4. 逻辑综合\n\n当我们把所写的RTL进行的功能仿真通过之后,便输入到 Design Compiler工具中进行逻辑综合,逻辑综合的结果便是RTL代码转化为由与、或、非等门电路和触发器组成的电路,称为门级网表(netlist)。门级网表中便包含了电路的实际信息,例如逻辑门单元的扇入扇出系数,延迟等等。因此在逻辑综合完成之后,需要对网表再进行仿真验证,防止出现意想不到的错误。\n\n对于实际电路,时钟信号并不是理想的“陡直”,门电路也存在延迟,这些电路的实际信息需要在逻辑综合的时候考虑到。RTL代码转换为门级电路,我们需要对电路施加一些约束。例如时序电路的工作频率,电路中组合逻辑块的延迟等等。综合工具会根据我们施加的约束做时序上的优化,从工艺库中挑选合适的单元,在面积,时序和功耗三个方面进行折中。当然满足时序的要求是首要的,面积和功耗要越小越好。\n\n为简单起见,以一个Moore状态机为实例,做最基本的不添加约束的逻辑综合,用以生成门级仿真所需要的文件。设计电路框图如下:\n\n![](https://www.testingcloud.club/sapi/api/image_download/d4aaeecd-5de8-11ef-8483-00163e13fc6a.png)\n\n由一个计数器和moore状态机组成。\n\nRTL仿真图如下\n\n![](https://www.testingcloud.club/sapi/api/image_download/d51309c1-5de8-11ef-8483-00163e13fc6a.png)\n\nq_o 为三位计数器的输出,dout_out为状态机的输出,按 0000 0010 0100 1000 的顺序循环。\n\n之后便在Design Compiler中进行综合生成后端和门级仿真的文件,我们在此关心VCS门级仿真所需要的文件。SDF文件包括设计中的时序信息,.v文件是以工艺库单元例化形成的verilog文件。\n\n![](https://www.testingcloud.club/sapi/api/image_download/d572db49-5de8-11ef-8483-00163e13fc6a.png)\n\n我们可以看到网表形式的verilog文件,由门电路和触发器例化组成。 \n\n\n\n![](https://www.testingcloud.club/sapi/api/image_download/d5de5364-5de8-11ef-8483-00163e13fc6a.png)\n\n## 4. 网表仿真\n1. makefile模板添加了一个开关选项,由于网表.v文件是由工艺库单元例化的,工艺库中给出了一个verilog文件,包含各个单元。 \n## \n\n![](https://www.testingcloud.club/sapi/api/image_download/d6463fa4-5de8-11ef-8483-00163e13fc6a.png)\n\n##   \n1. 定义NET_SIM这个宏。用于testbench中代码块的打开和关闭。 ![](https://www.testingcloud.club/sapi/api/image_download/d6ab1d17-5de8-11ef-8483-00163e13fc6a.png) 1. 在Testbench中添加添加下面的代码块,使用sdf_annotate()系统函数将sdf文件“反标”到设计中,第一个参数指定sdf文件,第二个参数指定反标到哪一层的module上,这里我们选择顶层文件。其他参数保持默认即可 \n```\ninitial begin\n`ifdef NET_SIM\n $sdf_annotate(\"/mnt/hgfs/LINUX_EDA_Share/DC_Projects/netlist_simulation/Top.sdf\",\n Top,,,\n \"TYPICAL\",\n \"1:1:1\",\n \"FROM_MTM\");\n`endif\nend\n```\n1. 设置完毕后使用 make com sim debug 命令查看门级仿真波形,可以看到输出信号的跳变与时钟上升沿已有一段延迟,这与RTL仿真是不同的。 ![](https://www.testingcloud.club/sapi/api/image_download/d709a53f-5de8-11ef-8483-00163e13fc6a.png) \n\n -->
0条评�?
全部评论

关于博主

an actually real engineer

通信工程专业毕业,7年开发经验

技术栈:

精通c/c++

精通golang

熟悉常见的脚本,js,lua,python,php

熟悉电路基础,嵌入式,单片机

耕耘领域:

服务端开发

嵌入式开发

git

>

gin接口代码CURD生成工具

sql ddl to struct and markdown,将sql表自动化生成代码内对应的结构体和markdown表格格式,节省宝贵的时间。

输入ddl:
输出代码:

qt .ui文件转css文件

duilib xml 自动生成绑定控件代码

协议调试器

基于lua虚拟机的的协议调试器软件 支持的协议有:

串口

tcp客户端/服务端

udp 组播/udp节点

tcp websocket 客户端/服务端

软件界面

使用例子: 通过脚本来获得接收到的数据并写入文件和展示在界面上

下载地址和源码

duilib版本源码 qt qml版本源码 二进制包

webrtc easy demo

webrtc c++ native 库 demo 实现功能:

基于QT

webrtc摄像头/桌面捕获功能

opengl渲染/多播放窗格管理

janus meeting room

下载地址和源码

源码 二进制包

wifi,蓝牙 - 无线开关

实现功能:

通过wifi/蓝牙实现远程开关电器或者其他电子设备

电路原理图:

实物图:

深度学习验证工具

vtk+pcl 点云编辑工具

实现功能:

1. 点云文件加载显示(.pcd obj stl)

2. 点云重建

3. 点云三角化

4. 点云缩放

下载地址:

源码 二进制包

虚拟示波器

硬件实物图:

实现原理

基本性能

采集频率: 取决于外部adc模块和ebaz4205矿板的以太网接口速率,最高可以达到100M/8 约为12.5MPS

上位机实现功能: 采集,显示波形,存储wave文件。

参数可运行时配置

上位机:

显示缓冲区大小可调

刷新率可调节

触发显示刷新可调节

进程守护工具

基本功能:

1. 守护进程,被守护程序崩溃后自动重启。

2. 进程输出获取,显示在编辑框中。

二进制包

openblt 烧录工具

基本功能:

1. 加载openblt 文件,下载到具有openblt bootloader 运行的单片机中。

二进制包

opencv 功能验证工具(开源项目二次开发)

基本功能:

1. 插件化图像处理流程,支持自定义图像处理流程。 2. 完善的日志和权限管理

二进制包

又一个modbus调试工具

最近混迹物联网企业,发现目前缺少一个简易可用的modbus调试工具,本软件旨在为开发者提供一个简单modbus测试工具。
主打一个代码简单易修改。
特点:

1. 基于QT5

2. 基于libmodbus

3. 三方库完全跨平台,linux/windows。

二进制包

屏幕录制工具

1. 基于QT5

2. 基于ffmpeg

3. 支持自定义录屏

源代码

开源plutosdr 板卡

1. 完全开源

2. 提高固件定制服务

3. 硬件售价450 手焊产量有线

测试数据

内部DDS回环测试

接收测试

外部发送500MHZ FM波形

硬件原理图

matlab测试

2TRX版本

大部分plutosdr应用场景都是讲plutosdr板卡作为射频收发器来使用。
实际上plutosdr板卡本身运行linux 操作系统。是具有一定脱机运算的能力。 对于一些微型频谱检测,简单射频信号收发等应用完全可以将应用层直接实现在板卡上
相较于通过网卡或者USB口传输具有更稳定,带宽更高等优点。
本开源板卡由于了SD卡启动,较原版pluto支持了自定义启动应用的功能。
提供了应用层开发SDK(编译器,buildroot文件系统)。
通过usb连接电脑,经过RNDIS驱动可以近似为通过网卡连接
(支持固件的开发定制)。

二次开发例子

``` all:
arm-linux-gnueabihf-gcc -mfloat-abi=hard --sysroot=/root/v0.32_2trx/buildroot/output/staging -std=gnu99 -g -o pluto_stream ad9361-iiostream.c -lpthread -liio -lm -Wall -Wextra -lrt
clean:
rm pluto_stream

bsdiff算法补丁生成器

1. 官方bsdiff算法例子自带bzip压缩方式

2. 本例子没有压缩,直接生成补丁文件

3. 图形化界面基于DUILIB

二进制文件

版面分析即分析出图片内的具体文件元素,如文档标题,文档内容,文档页码等,本工具基于cnstd模型

Base64 Image

. 闽ICP备19002644号