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. 解压,添加权限,执行脚本。

    bash 复制代码
    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. 启用授权服务

    bash 复制代码
    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。

bash 复制代码
 #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

bash 复制代码
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
bash 复制代码
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
  1. undefined reference to `pthread_yield'
bash 复制代码
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
  1. Failedto open the TcP port number in thelicense
bash 复制代码
lmdown
killall lmgrd
  1. Can't make directory/usr/tmp/.flexlm
bash 复制代码
cd /usr
sudo mkdir tmp
cd local
sudo mkdir flexlm
cd flexlm
sudo mkdir licenses
  1. /bin/sh:0: illegal option --h
bash 复制代码
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文件

cpp 复制代码
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文件

bash 复制代码
`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文件

bash 复制代码
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

相关推荐
家庭云计算专家3 分钟前
飞牛云一键设置动态域名+ipv6内网直通访问内网的ssh服务-家庭云计算专家
运维·云计算·ssh·nextcloud·ddns·动态域名解析
藥瓿锻16 分钟前
2024 CKA题库+详尽解析| 15、备份还原Etcd
linux·运维·数据库·docker·容器·kubernetes·cka
bbsh209925 分钟前
WebFuture:Ubuntu 系统上在线安装.NET Core 8 的步骤
linux·ubuntu·.netcore·webfuture
太阳之神aboluo32 分钟前
压测软件-Jmeter
java·运维·jmeter
ZZZKKKRTSAE34 分钟前
快速上手Linux全局搜索正则表达式(grep)
linux·服务器·正则表达式
waving-black2 小时前
利用frp和腾讯云服务器将内网暴露至外网(内网穿透)
linux·服务器·腾讯云·frp·内网穿透
stormsha2 小时前
Linux中su与sudo命令的区别:权限管理的关键差异解析
linux·运维·服务器·鸿蒙系统·ux·batch命令
新加坡内哥谈技术2 小时前
Meta计划借助AI实现广告创作全自动化
运维·人工智能·自动化
zyjyyds1132 小时前
win11系统 Docker Desktop 突然提示Docker Engine stopped解决情况之一
运维·docker·容器
Altairr2 小时前
Docker基础(一)
运维·docker·容器·eureka