IC开发——Ubuntu安装VCS2018

1. 简介

VCS是一种常用的Verilog仿真和综合工具,由Synopsys公司开发。它提供了一个完整的设计验证环境,用于验证硬件设计的正确性和性能。以下是VCS工具的一些主要特点和功能:

  1. 仿真功能:VCS支持基于事件驱动的数字电路级仿真,能够准确地模拟设计中的信号传输和电路行为。它可以处理大型设计,并提供高效的仿真方式和快速的仿真速度。
  2. 综合功能:VCS还提供了综合功能,允许将Verilog描述的设计转换成门级电路,在后端流程中进行布局和布线以及时序优化。
  3. 调试功能:VCS提供了强大的调试工具,包括信号波形查看器、断点设置、单步执行等功能,有助于定位设计中的错误并检查设计的正确性。
  4. 性能分析:VCS可以生成详细的仿真报告和性能分析结果,帮助设计人员优化设计,改进时序约束以满足各种性能目标。
  5. 支持多种设计语言:VCS支持Verilog和SystemVerilog等多种硬件描述语言,方便用户采用不同的设计风格和编码方式。
  6. 高级验证功能:VCS提供了诸多高级验证功能,例如,事务级建模、函数覆盖率分析、断言语句(Assertion)的支持等,帮助设计人员更全面地验证和测试设计。
  7. 集成与兼容性:VCS与其他EDA工具集成紧密,可以与逻辑综合工具、时序约束工具以及物理布局工具等进行无缝连接,方便整个设计流程的集成和协同工作。

2. 安装

此处安装VCS2018套装,包括vcs_vO-2018.09-SP2、scl_v2018.06、vcs_mx_vO-2018.09-SP2、verdi-2018.9。

2.1. 依赖安装

sudo apt install -y csh
sudo apt install -y lsb 

2.2. 软件安装

  1. 下载vcs2018,百度网盘 请输入提取码,提取码gbkc 。
  2. 解压,添加权限,执行脚本。
    mkdir ~/synopsys
    
    unzip VCS.zip
    
    cd VCS/synopsysinstaller_v5.0
    
    chmod 777 SynopsysInstaller_v5.0.run
    
    ./SynopsysInstaller_v5.0.run
  3. 启动安装脚本./setup.sh,弹出安装界面

    依次Next,直到安装源选择scl_v2018.06,再点击OK

    选择安装目录:

    选择安装组件(勾选所有):选择Next直到下图,点击Accept,Install进入安装:安装结束,显示下图,点击Finish:出现下图,点击Dismiss结束安装。用同样的方式分别安装目录下的vcs_vO-2018.09-SP2、vcs_mx_vO-2018.09-SP2、verdi-2018.9。

2.3. 破解

  1. 获取Hostname和MAC地址:
  2. 在Windows下运行scl_keygen_2030/scl_keygen.exe,配置获取的hostname和mac地址,点击Generate生成授权信息文件Synopsys.dat。
  3. 将文件拷贝进Ubuntu的/home/michael/synopsys/license/Synopsys.dat
  4. 打开Synopsys.dat文件,在第2行添加/home/michael/synopsys/scl/2018.06/linux64/bin/snpslmd。
  5. 启用授权服务
    sudo mkdir /usr/tmp
    
    sudo mkdir /usr/tmp/.flexlm
    
    /home/michael/synopsys/scl/2018.06/linux64/bin/lmgrd -c /home/michael/synopsys/license/Synopsys.dat

2.4. 环境路径配置

打开~/.bashrc,在最后面添加如下内容,路径根据安装情况相应修改,27000@ubuntu22的ubuntu22修改为相应的HostName。

 #export export SYNOPSYS="/usr/software/synopsys"
 export VCS_TARGET_ARCH="amd64"
 export DVE_HOME="/home/michael/synopsys/vcs/O-2018.09-SP2/gui/dve"
 #export PATH="/home/michael/synopsys/vcs/O-2018.09-SP2/bin:"$PATH
 export PATH="/home/michael/synopsys/vcs-mx/O-2018.09-SP2/bin:"$PATH
 #export VCS_HOME="/home/michael/synopsys/vcs/O-2018.09-SP2"
 export VCS_HOME="/home/michael/synopsys/vcs-mx/O-2018.09-SP2"
 
 
 #export VCS_ARCH_OVERRIDE="linux"
 #verdi
 export PATH="/home/michael/synopsys/verdi/Verdi_O-2018.09-SP2/bin:"$PATH
 export VERDI_HOME="/home/michael/synopsys/verdi/Verdi_O-2018.09-SP2"
 export LD_LIBRARY_PATH="/home/michael/synopsys/verdi/Verdi_O-2018.09-SP2/share/PLI/lib/LINUX64":$LD_LIBRARY_PATH
 export VERDI_DIR="/home/michael/synopsys/verdi/Verdi_O-2018.09-SP2"
 export NOVAS_INST_DIR="/home/michael/synopsys/verdi/Verdi_O-2018.09-SP2"
 export NPI_PLATFORM="LINUX64_GNU_472"
 export LD_LIBRARY_PATH="$NOVAS_INST_DIR/share/NPI/lib/LINUX64_GNU_520":$LD_LIBRARY_PATH
 export NOVAS_HOME="/home/michael/synopsys/verdi/Verdi_O-2018.09-SP2"
 
 #LICENSE
 export SNPSLMD_LICENSE_FILE="/home/michael/synopsys/license/Synopsys.dat"
 export SNPSLMD_LICENSE_FILE=27000@ubuntu22
 export LM_LICENSE_FILE="/home/michael/synopsys/license/Synopsys.dat"
 
 alias lmli="/home/michael/synopsys/scl/2018.06/linux64/bin/lmgrd -c /home/michael/synopsys/license/Synopsys.dat"
 #SCL
 export PATH=/home/michael/synopsys/scl/2018.06/linux64/bin:$PATH
 alias dve="dve -full64 &"
 alias vcs64="vcs -full64"
 alias vcs="vcs -full64"
 alias verdi="verdi -full64 &"
 

2.5. 验证License

sssverify 自己的license路径

出现下面信息表示License生成正确。

2.6. 开机自动开启授权服务

在/etc/profile.d/目录下创建lmli.sh

cd /etc/profile.d/ 
sudo touch lmli.sh
sudo chmod 777 lmli.sh

在lmli.sh文件中添加如下内容:

`/home/michael/synopsys/scl/2018.06/linux64/bin/lmgrd -c /home/michael/synopsys/license/Synopsys.dat -l /home/michael/synopsys/scl/2018.06/linux64/bin/lmgrd.log`

2.7. 解决异常

1. libpng12.so.0 cannot read

sudo ln -s /home/michael/synopsys/vcs-mx/O-2018.09-SP2/vcfca/linux64/vcst/lib/libpng12.so.0.31.0 /usr/lib/x86_64-linux-gnu/libpng12.so.0

2. undefined reference to `pthread_yield'

cd /home/michael/synopsys/vcs-mx/O-2018.09-SP2/linux64/lib
mv vcs_save_restore_new.o vcs_save_restore_new.o.bak
objcopy --redefine-sym pthread_yield=sched_yield ./vcs_save_restore_new.o.bak ./vcs_save_restore_new.o

3. Failedto open the TcP port number in thelicense

lmdown
killall lmgrd

 4. Can't make directory/usr/tmp/.flexlm

cd /usr
sudo mkdir tmp
cd local
sudo mkdir flexlm
cd flexlm
sudo mkdir licenses

5. /bin/sh:0: illegal option –h

sudo rm -f /bin/sh
sudo ln -s /bin/bash /bin/sh

3. 验证

3.1. VCS

VCS有两个版本,分别为vcs和vcs-mx,vcs-mx在vcs的基础上更好地支持SystemVerilog和SystemC。像在使用UMV/UVMC时,就必须使用vcs-mx。另外,在64位系统上,推荐使用64位的vcs,性能更好,通过-full64来指定。

3.1.1. top文件

module add (

  input         [20:0]	A ,
  input signed  [17:0]	B	,

  output signed [22:0]	C);

  wire signed [21:0]	A_signed;

  assign A_signed = {1'b0,A};
  assign C = A_signed + B;

endmodule

3.1.2. testbench文件

`timescale 1ns/1ns

module test;

  reg clk;
  reg rst_n;

  reg [20:0] A;
  reg signed [17:0] B;

  wire signed [22:0] C;

  initial begin
    clk = 0;
    rst_n = 0;
    A = 21'b0;
    B = 18'b0;
    #10;
    rst_n = 1;
    repeat(80) @(posedge clk) begin
      A = A + 21'b1;
    end

    #2000;
    $finish;

  end

  always #5 clk = ~clk;

  initial begin
    $fsdbDumpfile("./rtl.fsdb");
    $fsdbDumpvars("+all");
  end

  add add_inst(
    .A(A),
    .B(B),
    .C(C));

endmodule

3.1.3. 源文件列表

vcs中以.f文件为源文件列表,其中每一行记录一个verilog/SystemVerilog源文件。

filelist.f文件内容如下:

top.v

tb.v

3.1.4. Makefile文件

VCS = vcs -full64 -sverilog -timescale=1ns/1ns \
		+v2k \
		-debug_access+all -kdb -lca\
		-f file.f	
comp:
	$(VCS) 


.PHONY:verdi clean sim
verdi:
	verdi -ssf rtl.fsdb

sim:
  ./simv

verdi:
  verdi -ssf rtl.fsdb

clean:
	rm -rf csrc simv* *.lib *.lib++ nLint*
	rm -rf *.log *.vpd *.fsdb* *.key *log rtl.fsdb*

3.1.5. 编译

make

3.1.6. 仿真

make sim

3.1.7. verdi查看波形

make verdi

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/652614.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

浙江大学数据结构MOOC-课后习题-第七讲-图4 哈利·波特的考试

题目汇总 浙江大学数据结构MOOC-课后习题-拼题A-代码分享-2024 题目描述 代码展示 照着教程视频来的&#xff0c;没啥好说的捏 #include <cstdlib> #include <iostream>#define MAXSIZE 100 #define IFINITY 65535 typedef int vertex; typedef int weightType;/…

pdf打开方式怎么设置默认?分享这几种设置方法

pdf打开方式怎么设置默认&#xff1f;你是否曾遇到过打开PDF文档时&#xff0c;默认的打开程序并非你所需要的&#xff0c;从而影响了工作效率&#xff1f;别担心&#xff0c;本文将为你详细解读如何设置PDF的默认打开方式&#xff0c;让你的工作更加高效便捷。 首先&#xff0…

精准数据提取:提升业务分析与决策效率

在当今信息爆炸的时代&#xff0c;数据已经成为企业运营和决策的核心驱动力。然而&#xff0c;面对海量的数据&#xff0c;如何快速、准确地提取出有价值的信息&#xff0c;成为了摆在众多企业面前的一大挑战。本文将探讨如何通过精准数据提取来提升业务分析与决策的效率。 一…

汇编原理(二)寄存器——内存访问

一个字 两个字节 双字 字节为8位 字为16位&#xff08;看两格&#xff09; 双子dword32位&#xff08;看四格&#xff09; 内存中字的存储&#xff1a; 0地址单元中存放的字节型数据是多少&#xff1f; 0地址字单元中存放的字型数据是多少&#xff1f; 2地址字单元中存放…

【招聘】易基因科技诚聘销售总监 虚位以待

&#x1f680; 关于我们 易基因拥有一支充满活力的科研服务团队&#xff0c;致力于以“引领表观遗传学科学研究与临床应用”为愿景&#xff0c;依托高通量测序技术和云数据分析平台&#xff0c;为医疗机构、科研机构、企事业单位等提供以表观遗传学技术为核心的多组学科研服务…

821. 字符的最短距离 - 力扣

1. 题目 给你一个字符串 s 和一个字符 c &#xff0c;且 c 是 s 中出现过的字符。 返回一个整数数组 answer &#xff0c;其中 answer.length s.length 且 answer[i] 是 s 中从下标 i 到离它 最近 的字符 c 的 距离 。 两个下标 i 和 j 之间的 距离 为 abs(i - j) &#xff0c…

Vue 组件生命周期:探索钩子

title: Vue 组件生命周期&#xff1a;探索钩子 date: 2024/5/27 18:42:38 updated: 2024/5/27 18:42:38 categories: 前端开发 tags: 生命周期异步加载通信原理父子通信兄弟通信跨层通信性能优化 第 1 章&#xff1a;介绍与背景 1.1 什么是 Vue 组件生命周期&#xff1f; …

超声波清洗机哪家好一点?四款无比卓越精品不可错过

在日常生活中&#xff0c;眼镜成为了我们不可或缺的伙伴&#xff0c;无论是阅读书籍、工作还是享受自然风光&#xff0c;清晰的视野总是至关重要。然而&#xff0c;眼镜上不可避免地会沾染灰尘、油脂甚至细菌&#xff0c;影响我们的视觉体验。传统的眼镜清洗方法虽然简单&#…

【Godot4.2】Godot中的继承与组合

概述 继承和组合是编程中常用的两种策略,旨在尽可能多地重用代码。继承应用得非常广泛&#xff0c;但我认为组合在很多场景下会更加合适一些。 基于组合&#xff0c;游戏开发前辈们专门设计出了实体组件模式&#xff08;EC模式&#xff09;和进阶的ECS模式。本篇所提及的Godot…

芯片设计 | FPGA设计的各种仿真概念分析

前仿真,即功能仿真。 可使用专用于仿真的工具对设计进行功能仿真,以验证电路功能是否符合设计要求。 通过功能仿真能够及时发现设计中的错误,从而加快设计进度,提高设计的可靠性。 综合后的仿真 把综合生成的标准延时反标注到综合仿真模型去,可估计门延时带来的影响,…

如何搭建个人观测云平台

如何搭建个人观测云平台 安装DataKit什么是DataKit&#xff1f; 仪表板指标管理监控 开通阿里云观测云服务后&#xff0c;在观测云平台页面进行下面的操作。 安装DataKit 什么是DataKit&#xff1f; DataKit 是观测云官方发布的数据采集应用&#xff0c;支持上百种数据的采集…

【二叉树】非递归实现前中后序遍历

目录 前言 算法思想 非递归实现前序遍历 过程分析 代码 非递归实现中序遍历 过程分析 代码 非递归实现后序遍历 过程分析 代码 前言 1&#xff09;前序&#xff1a;根 左子树 右子树 2&#xff09;中序&#xff1a;左子树 根 右子树 3&#xff09;后序&#xff1…

CSS学习笔记:rem实现移动端适配的原理——媒体查询

移动端适配 移动端即手机端&#xff0c;也称M端 移动端适配&#xff1a;同一套移动端页面在不同屏幕尺寸的手机上可以实现宽度和高度的自适应&#xff0c;也就是页面中元素的宽度和高度可以根据屏幕尺寸的变化等比缩放 rem配合媒体查询可实现移动端适配 rem单位 媒体查询 …

post请求

文章目录 一、get请求和post请求区别二、get请求和post请求的用法对比1.get请求2.post请求 三、如何知道是get请求还是post请求 一、get请求和post请求区别 二者区别就是一句话&#xff1a;post请求更安全 二、get请求和post请求的用法对比 1.get请求 get请求: 请求参数&am…

安泰电子:高压功率放大器应用场合介绍

高压功率放大器是一种电子设备&#xff0c;用于将低电压信号放大到较高电压水平&#xff0c;以满足各种应用需求。它在多个领域中具有广泛的应用&#xff0c;包括科学研究、工业生产、通信技术以及医疗设备。下面安泰电子将介绍高压功率放大器的应用场合。 科学研究 高压功率放…

SpringBoot实现接口防抖的几种方案,杜绝重复提交

插&#xff1a; AI时代&#xff0c;程序员或多或少要了解些人工智能&#xff0c;前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家(前言 – 人工智能教程 ) 坚持不懈&#xff0c;越努力越幸运&#xff0c;大家…

YOLOV10阅读总结

GitHub - THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection YOLOv10 - Ultralytics YOLO Docs https://arxiv.org/pdf/2405.14458 论文地址 最近yolo又出了个yolov10了&#xff0c;不得不感慨CV是真卷&#xff0c;毕竟yolov9也才没多久。记录一下阅读笔记。…

curl请求url正常,通过web端请求就400异常的问题记录

通过抓包发现如上图&#xff0c;有2个authorization header&#xff0c;其中一个是开发人员代码生成的&#xff0c;另一个是web端http请求自己携带的。目标是去除web自己携带的。 解决方法&#xff1a; 生成一个FeignConfig的类&#xff0c;requestInterceptor进行空实现。 Fe…

暑期社会实践即将强势来袭,投稿三下乡文章最强攻略

以热爱充实自我 以笃行丰盈青春 这个盛夏“乡”约 纷纷迈出了社会实践的有力步伐 在展开社会实践的同时 也不要忘记投稿宣传的重要性哦 快快收藏住这份投稿攻略 助力团队展现更多精彩的实践故事! No.1 感悟思想伟力&#xff0c;守好“红色根脉” No.2 循迹“八八战略…

【基于 PyTorch 的 Python 深度学习】9 目标检测与语义分割(2)

前言 文章性质&#xff1a;学习笔记 &#x1f4d6; 学习资料&#xff1a;吴茂贵《 Python 深度学习基于 PyTorch ( 第 2 版 ) 》【ISBN】978-7-111-71880-2 主要内容&#xff1a;根据学习资料撰写的学习笔记&#xff0c;该篇主要介绍了优化候选框的几种方法。 一、优化候选框的…