❶ 仿真中有多个timescale时VCS到底是怎么处理的
第一个warning出现是因为你在testbench里头没有指明timescale,也就是说你的#50是表示50ns,还是50ps,或者是50us?修改方法:在testbench里第一行,modlue testbenchcounter之前,加上一行 `timescale 1ns/1ns,前一个表示你在tb里头写的数字的...
❷ 怎样在Modelsim软件中产生一个.vcd文件
摘要 很多时候,需要把VCS仿真的波形导入到Modelsim中进行观察,这个时候无法直接查看,因为Modelsim只支持.wlf波形文件,所以需要做格式转换。
❸ DC综合后的VCS后仿真命令怎么写,需要添加哪些库
library(rpart);
## rpart.control对树进行一些设置
## xval是10折交叉验证
## minsplit是最小分支节点数,这里指大于等于20,那么该节点会继续分划下去,否则停止
## minbucket:叶子节点最小样本数
## maxdepth:树的深度
## cp全称为complexity parameter,指某个点的复杂度,对每一步拆分,模型的拟合优度必须提高的程度
ct <- rpart.control(xval=10, minsplit=20, cp=0.1)
## kyphosis是rpart这个包自带的数据集
## na.action:缺失数据的处理办法,默认为删除因变量缺失的观测而保留自变量缺失的观测。
## method:树的末端数据类型选择相应的变量分割方法:
## 连续性method=“anova”,离散型method=“class”,计数型method=“poisson”,生存分析型method=“exp”
## parms用来设置三个参数:先验概率、损失矩阵、分类纯度的度量方法(gini和information)
## cost我觉得是损失矩阵,在剪枝的时候,叶子节点的加权误差与父节点的误差进行比较,考虑损失矩阵的时候,从将“减少-误差”调整为“减少-损失”
fit <- rpart(Kyphosis~Age + Number + Start,
data=kyphosis, method="class",control=ct,
parms = list(prior = c(0.65,0.35), split = "information"));
## 第一种
par(mfrow=c(1,3));
plot(fit);
text(fit,use.n=T,all=T,cex=0.9);
## 第二种,这种会更漂亮一些
library(rpart.plot);
rpart.plot(fit, branch=1, branch.type=2, type=1, extra=102,
shadow.col="gray", box.col="green",
border.col="blue", split.col="red",
split.cex=1.2, main="Kyphosis决策树");
## rpart包提供了复杂度损失修剪的修剪方法,printcp会告诉分裂到每一层,cp是多少,平均相对误差是多少
## 交叉验证的估计误差(“xerror”列),以及标准误差(“xstd”列),平均相对误差=xerror±xstd
printcp(fit);
## 通过上面的分析来确定cp的值
## 我们可以用下面的办法选择具有最小xerror的cp的办法:
## prune(fit, cp= fit$cptable[which.min(fit$cptable[,"xerror"]),"CP"])
fit2 <- prune(fit, cp=0.01);
rpart.plot(fit2, branch=1, branch.type=2, type=1, extra=102,
shadow.col="gray", box.col="green",
border.col="blue", split.col="red",
split.cex=1.2, main="Kyphosis决策树");
❹ 如何用VCS找到仿真中的无限循环 infinite loop
infinite loop
无限循环
infinite loop
[英][?infinit lu:p][美][??nf?n?t lup]
n.无限循环;
例句:
1.
Often they result from algorithms interacting with each other and forming an infiniteloop.
它们经常是由程序的相互作用并形成一个无限循环所导致。
❺ vcs生成覆盖率时,条件编译的顶层会被当做不同的项目,合并覆盖率时会出错,怎么解决
要生成覆盖率报告,要在编译和仿真的时候,加入一个选项。 -cm line | fsm | tgl | cond , 指定生成针对什么条件的覆盖率报告。如下的makefile,就生成上述四个的覆盖率报告。注意,编译和仿真,都要加上-cm这个选项。执行 make vcs , make sim后,会生成simv.vdb文件夹,该文件夹下包含了覆盖率的内容,但是我们需要将内容生成报告,这样,才方便我们查看。生成报告,使用的是 urg命令,该命令也是属于vcs工具里面的-dir: 指定 .vdb文件夹的位置report: 指定生成报告的格式,报告格式有两种,一种网页格式,一种text格式。这里,both代表生成两种。执行 make urg后,就会生成both文件夹。 这文件夹下的文件,就是覆盖率报告了。打开dashboard.html。可以看到整体的一些信息。但是我们关心的是设计的,而不是testbench的。点击hierarchy,得到层次。点击u1,也就是设计的顶层。可以看到关于该顶层的信息。因为在顶层,都是调用各个子模块(这里是调用 band_generaterx_tx, uart_txd模块),所以没有line的覆盖率统计,但是有TOGGLE的覆盖率统计,也就是信号的翻转。从上面可以看出,对于rst_n信号,没有从1->0的翻转,而这个信号是testbench中传递的,因此看出,在testbench设计,对于rst_n信号产生,有bug。点击左下角的uart_txd_1,查看该模块的信息。 对于该设计,因为有具体的实现,所以可以看到有line的覆盖率,toggle的覆盖率,FSM的覆盖率。对于line覆盖率,从报告看出,总共有42行,覆盖到了41行。通过查看代码,可以知道是哪一行没有被执行到。对于toggle覆盖率。从报告看出,只有rst_n有问题,而这问题是testbench的的bug造成的。对于FSM的检查。从报告看出,每个状态都有被覆盖到。但是从有些状态跳转到另外的状态,没有被覆盖到。因此造成FSM的覆盖率不高。通过查看覆盖率报告,可以查找到设计的缺陷,从而进行修正。
❻ 用VCS仿真Verilog时,在调用系统函数的地方都出现错误怎么支持调用系统函数的仿真
使用到系统函数时,在vcs编译的时候一定要添加-I或者-RI.
其中-R自动运行并且生成vcd+文件
---------------------------------------------------------------
注意区别的两个方面:
1. –R –I 不同于-RI
-R –I是编译成VirSim的可执行文件而且马上运行仿真, -RI是编译成VirSim的可执行文件并且调用VirSim.
2. –R –PP 不同于-RPP
-R –PP是编译成VirSim的可执行文件并且在运行的时候加快输出VCD+文件
-RPP是在存在VCD+的条件下调用VirSim进行post processing的调试.
门级仿真需要反标SDF文件,可以在testbench中添加$sdf_annotate系统函数.并且在编译的时候注意要使用standcell的仿真库.
❼ 如何使用vcs仿真生成FSDB波形文件
需要制定verdi目录下对应vcs的工具吧
-P /tools/novas/verdi-200810/share/PLI/vcs2006.06/linux/novas.tab /tools/novas/verdi-200810/share/PLI/vcs2006.06/LINUX/pli.a
❽ 新思公司VCS仿真,测试verilog代码覆盖率问题1:%vcs -cm line source.v 2:%simv 3:dve -cov
这就是VCS的意思喽,VCS(Verilog Compiler and Simulator),自然先要编译成一个simv文件,才能simulation了。
不知道您是什么系统下的vcs,如果是linux,那就执行您说的simv喽。./simv -gui