VCS2018在Ubuntu20 18安装步骤

之前在Ubuntu20上下VCS,花了好几天时间,本来想写博客避免以后重复劳动。但由于各种原因拖了一两个月,这次由于疫情原因,期末考试推迟,所以就再次在Ubuntu18上下了VCS,顺便写博客记录。

以下VCS2018安装方法适用于 Ubuntu20Ubuntu18,亲测可用。其他Linux发行版没试过,但应该步骤差不多。

文章目录

  • 安装包
  • 安装步骤
  • 1、建立安装路径,更改权限
  • 2、运行安装器进行安装
  • 3、生成License文件
  • 4、设置环境变量
  • 5、验证License
  • 6、启动lmgrd
  • 验证软件是否安装成功
  • dve
  • verdi
  • VCS
  • 验证vcs与verdi联调
  • add.v
  • test.v
  • Makefile
  • 仿真
  • 开机自启动License
  • 安装包

    百度网盘:链接:https://pan.baidu.com/s/19CtwqWcxpv-4wPyAD4_ITw
    提取码:3pib

    文件包括:

    libpng12.so.0:后面可能会需要这个包
    scl_keygen_2030:这个是License生成器
    scl_v2018.06:这个是SCL安装包,用来
    synopsysinstaller_v5.0:这个是安装器
    vcs_vO-2018.09-SP2:这个是vcs的安装包
    verdi-2018.9:这个是verdi安装包

    安装步骤

    1、建立安装路径,更改权限

    建立图2的安装目录文件:Liscen用来存放license文件,SCL2018vcs2018verdi是对应的安装路径;vcs_install用来存放安装包好安装器。通过以下命令建立目录和更改拥有者,以为后面需要对这些文件进行读写,更改拥有者比每次sudo更加方便,当然也可以chmod 777 ./

    sudo mkdir 文件名
    sudo chown 拥有者 文件名
    

    2、运行安装器进行安装

    进入synopsysinstaller_v5.0文件夹,运行SynopsysInstaller_v5.0.run,会出现下面界面,提示选择安装器安装路径,直接在本路径下安装即可

    安装后出现setup.sh

    运行setup.sh,进入安装界面,点击next依次安装Scl、vcs、verdi。下面以vcs安装为例:

    ./setup.sh
    


    选择安装包的路径

    选择要安装的地址,也就是第一步创建的目录

    点击next,进入下面界面,选择vcs

    一路next,进入下面界面,点击Accept,instaall,然后等待安装

    安装完后会弹出安装失败

    错误原因如下所示,这个没影响,只是一个脚本没有被执行,这个脚本是用来安装
    文档的

    可以跳转到这个目录,手动运行这个脚本,根据提示选择路径。也可以不管这个错误,点击OK

    出现下面界面,点击Dismiss,vcs安装结束。然后重复运行setup.sh,按照上面步骤安装verdi SCL

    3、生成License文件

    在window下运行这个.exe文件,.exe是windows下的执行文件,无法在linux下运行,所以先在window下生成License,再放到linux下。

    出现下面界面,图中需要修改三个地方,

    1 2为电脑物理地址,通过ifconfig命令可以查看。填写物理地址的时候中间的记得去掉。3为linux的host-name,如下图所示。点击Generate,可以在本文件夹下看到Synopsys.dat,这个就是生成的License文件。

    打开Synopsys.dat文件,需要修改的地方有一个

    需要在1这个地方添加snpslmd的路径,注意路径记得改成自己的路径,如下图所示

    同时需要注意license有效期的问题,其他的license生成器可能生成的license有效期是2019,需要手动改成2030。本license生成器license有效期为2030,所以不需要改动。如下图所示

    改完之后把Synopsys.dat移到Liscen目录下。window下的文件放到linux下每行会有^M字符,这是因为linux和doc的换行符不一样。需要通过下面命令去掉^M

    dos2unix 文件名
    

    4、设置环境变量

    通过下面命令在根目录下打开.bashrc,有其他编辑器也可以通过其他编辑器打开,如:sublime

    gedit .bashrc
    

    将下面内容复制进去,下面的路径记得改成自己的路径,改完后记得cd一下自己的路径,避免手残出错,找半天找不出来

    #export export SYNOPSYS="/usr/software/synopsys"
    export VCS_TARGET_ARCH="amd64"
    export PATH="/usr/stone/software/vcs2018/vcs/O-2018.09-SP2/gui/dve/bin:"$PATH
    export DVE_HOME="/usr/stone/software/vcs2018/vcs/O-2018.09-SP2/gui/dve"
    export PATH="/usr/stone/software/vcs2018/vcs/O-2018.09-SP2/bin:"$PATH
    export VCS_HOME="/usr/stone/software/vcs2018/vcs/O-2018.09-SP2"
    #export VCS_ARCH_OVERRIDE="linux"
    #verdi
    export PATH="/usr/stone/software/verdi/verdi/Verdi_O-2018.09-SP2/bin:"$PATH
    export VERDI_HOME="/usr/stone/software/verdi/verdi/Verdi_O-2018.09-SP2"
    export LD_LIBRARY_PATH="/usr/stone/software/verdi/verdi/Verdi_O-2018.09-SP2/share/PLI/lib/LINUX64":$LD_LIBRARY_PATH
    export VERDI_DIR="/usr/stone/software/verdi/verdi/Verdi_O-2018.09-SP2"
    export NOVAS_INST_DIR="/usr/stone/software/verdi/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="/usr/stone/software/verdi/verdi/Verdi_O-2018.09-SP2"
    
    #LICENSE
    export SNPSLMD_LICENSE_FILE="/usr/stone/software/Liscen/Synopsys.dat"
    export SNPSLMD_LICENSE_FILE=27000@自己的host-name
    export LM_LICENSE_FILE="/usr/stone/software/Liscen/Synopsys.dat"
    
    alias lmli="/usr/stone/software/SCL2018/scl/2018.06/linux64/bin/lmgrd -c /usr/stone/software/License/Synopsys.dat"
    #SCL
    export PATH=/usr/stone/software/SCL2018/scl/2018.06/linux64/bin:$PATH
    alias dve="dve -full64 &"
    alias vcs64="vcs -full64"
    alias verdi="verdi -full64 &"
    

    设置好环境变量后记得通过下面命令生效环境变量

    source .bashrc
    

    5、验证License

    通过下面命令验证license,直到出现Passed,如下所示。如果多次验证依旧没有出现Passed,那么重新生成license,重新验证

    sssverify 自己的license路径
    

    6、启动lmgrd

    lmgrd是license管理工具,用于将license运行在后台,使软件正常工作,目前对于lmgrd理解只有这些。由于在环境变量设置了命令,所以输入lmli就可以启动lmgrd大部分问题都出现这个地方!!!
    问题一:
    路径明明正确,通过ls也可以看到lmgrd,但它就是找不到lmgrd 。

    解决方案: 这是因为没有32位运行库导致的通过下面命令安装即可,第一个为Ubuntu下的命令,第二个是centos下的命令,根据需要选择一个执行命令。

    apt-get install lsb 
    yum install lsb
    

    问题二:
    再次执行lmli,提示没有/usr/tmp目录和在/usr/local/flexlm/licenses目录下找不到license。这个是肯定的,因为你压根就没有建这些目录

    解决方案: 在/usr建立tmp目录,建立local/flexlm/licenses目录,把Synopsys.dat复制到licenses目录下,并把名字改成license.bat

    问题三:
    提示打不开license,这是因为环境变量SNPSLMD_LICENSE_FILE的问题,在这个环境变量中赋值了两次,第一次是license的位置,第二次是用户。

    解决方案: 这里需要license的位置,所以先把第二个赋值注释,在后面启动DVE中,又会需要第二次赋值,再把注释打开

    问题四:
    由于上面lmgrd没有启动成功,但是端口号他还是占用的。当你再次输入lmli,应该会出现下面错误,显示端口号被占用

    解决方案: 输入下面命令终止该端口号。首先释放license,显示lmgrd占用的端口号,然后结束这个端口号进程,如下图所示

    lmdown
    ps auf | grep lmgrd
    kill -9 2381
    

    然后再次输入lmli,启动lmgrd,好了,见证成功吧~~跑着这里就算启动成功,可以ctrl+c结束

    验证软件是否安装成功

    dve

    输入dve,再次报错,提示SNPSLMD_LICENSE_FILE指示错误server。

    解决方案: 不慌,这个就是咱上面遗留的问题,把上面的注释打开即可。再次输入dve,见证dve的真面目吧!!!

    verdi

    输入verdi,不要慌张,该来的总会来的。提示没有libpng12.so.o这个库

    解决方案: 还记得第一步提到的那个库文件么,这时候就派上用场了。输入下面命令,注意libpng12.so.0是文件夹里面的文件,移动整个文件夹无法解决问题

    sudo cp libpng12.so.0  /usr/lib/x86_64-linux-gnu/
    

    再次输入verdi,激动吧!

    VCS

    输入vcs -help,坚持就是胜利!出现下面错误

    /bin/sh:0: illegal option –h
    

    解决方案: 这是因为Ubuntu下默认将sh链接到bash,输入下面命令重新链接。

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

    输入vcs -help,好了,你的努力不是白费的。

    验证vcs与verdi联调

    写一个简单的加法器

    add.v

    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
    

    test.v

    `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
    

    Makefile

    假设你已经装上的 make 和 gcc,且熟悉make编译规则

    VCS = vcs -full64 -sverilog -timescale=1ns/1ns \
    		+v2k \
    		-debug_access+all -kdb -lca\
    		-f file.f	
    comp:
    	$(VCS) 
    
    verdi:
    	verdi -ssf rtl.fsdb
    
    clean:
    	rm -rf csrc simv* *.lib *.lib++ nLint*
    	rm -rf *.log *.vpd *.fsdb* *.key *log rtl.fsdb*
    

    -full64: 在64-bit模式下编译,生成64-bit模式仿真的可执行文件
    -sverilog: 支持systemverilog语法
    -timescale=1ns/1ns: 仿真时间刻度,要和tb保持一致
    +v2k: 支持verilog2001
    -debug_access+all: VCS2014之后加入debug_access,不需要手动配置verdi.tab,和静态库pli.a,只需要设置$VERDI_HOME,VCS会自动查找所需文件
    -kdb -lca: 用于生成kdb.elab++,位于simv.daiddir目录下
    -f file.f: 指定文件列表,file.f存着要编译文件的路径,可以通过shell命令find 该目录路径 -name "*.*v" 生成的文件名
    -ssf rtl.fsdb: 加载fsdb波形文件。verdi是第三方软件,支持的波形文件为.fsdb,dve为vcs自带的软件,支持的波形文件为.vpd
    verdi -ssf rtl.fsdb: verdi加载.fsdb文件

    生成.fsdb有两种方法,一种是在vcs编译时生成,需要在tb顶层添加下面两个系统函数

    	$fsdbDumpfile("./rtl.fsdb");//生成rtl.fsdb波形文件
    	$fsdbDumpvars("+all");//把所有变量全都加进去
    

    然后在用verdi加载波形文件。
    第二种方法是通过verdi界面生成fsdb。编译完后通过输入下面命令

    ./simv -gui=verdi
    

    打开verdi界面,然后在verdi命令行输入run,也可以生成.fsdb文件,但是这种方法比较麻烦,而且每加一个变量都得重新run,不然看不到这个变量的波形。所以一般采用第一种方式。

    仿真

    也可以通过输入下面命令通过dve仿真

    ./simv -gui
    

    开机自启动License

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

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

    写入下面内容

    `/usr/stone/software/SCL2018/scl/2018.06/linux64/bin/lmgrd -c /usr/stone/software/License/Synopsys.dat -l /usr/stone/software/SCL2018/scl/2018.06/linux64/bin/lmgrd.log`
    

    这样开机不用手动启动lmgrd了


    好了,vcs安装至此结束。能够看到这里的人应该都对vcs有着某种强烈的欲望吧。总得来说,安装vcs就是简单的排错,需要耐心。

    来源:s-stone

    物联沃分享整理
    物联沃-IOTWORD物联网 » VCS2018在Ubuntu20 18安装步骤

    发表评论