华大九天Aether安装参考(图文详解)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

       这篇笔记记录了我作为小白安装华大九天Aether的一些经验吧,希望这篇笔记能够帮助到你,我是参考这两篇博客的如果需要的可以看看:

(1)华大九天Aether软件安装教程

(2)华大九天Aether芯片EDA模拟电路仿真 Centos7安装

准备工作

一、安装Centos7(或者Red Hat)

        华大九天的EDA要在64位Red Hat或CentOS V5~7上运行。本人用的映像文件是CentOS-7-x86_64-Everything-2207-02.ios,安装过程中要安装图形化界面(GNOME Desktop)!!!

        这里提供一个下载源:

https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/isos/x86_64/

       安装Centos7可以参考这篇博客:

CentOS7(Linux)详细安装教程(图文详解)

二、下载软件压缩包和license文件

       软件压缩包下载:EETOP创芯网论坛

华大九天EDA培训资料 - Analog/RF IC 资料共享 - EETOP 创芯网论坛

        license文件下载:EETOP创芯网论坛

搞了一份华大aether的license,大家可以用 - Analog/RF IC 资料共享 - EETOP 创芯网论坛

       一共有两个文件:1. 华大九天AMS全流程软件安装.rar

                                    2.eetop.cn_EMPYRAN.doc(license文件)

三、将软件压缩包和license文件传到Centos-7

       要通过共享文件夹的方式传文件!!!好像Centos-7从电脑复制压缩包过来会报错,如果知道怎么解决的朋友请教教我             ♡(。´▽`。)

       设置共享文件夹可以参考这篇博客:

VMware教程(一):设置 CentOS 7 共享文件夹

       流程:

1. 在电脑的任意磁盘里创建一个文件夹SharedFolders

2. 在虚拟机设置中选择共享文件夹选项并设置好我们前面创建好的用于共享的文件夹路径

3.在电脑上先将软件压缩包解压一次!!!再将amsds_univ_202005_lnx64b.tgz和eetop.cn_EMPYRAN.doc文件复制到共享文件夹SharedFolders

4. 可以在/mnt/hgs文件夹中看到共享的文件

(1)如果没有显示hgs文件夹,那么就要先创建挂载目录

       进入管理员账号,在根目录下终端输入命令:

mkdir /mnt/hgfs

(2) 如果有hgs文件夹,但没有内容

       进入管理员账号,在根目录下终端输入命令:

/usr/bin/vmhgfs-fuse .host:/ /mnt/hgfs -o subtype=vmhgfs-fuse,allow_other

就会显示出来了

如果还不行那就自己查找资料解决吧!!!我也不太懂了( ๑ŏ ﹏ ŏ๑ )

5. 将共享文件复制到家目录下

6.终端输入解压命令:

tar xfz amsds_univ_202005_lnx64b.tgz

        解压后会得到一个emprean文件夹,将eetop.cn_EMPYRAN.doc改为license.dat后放进emprean文件夹

开始安装

一、修改物理地址

        修改物理地址可以参考这篇博客:

Linux/CentOS下修改MAC地址

       要改一下虚拟机的MAC地址,MAC地址在license.dat里的第一行可知,进入管理员账号依次输入以下命令:

注意:这里网卡名字ens33有时会不一样,有些虚拟机是eth0具体可以在终端输入ifconfig查看,一般输入后第一个名称就是你的网卡名字

ifconfig ens33 down

vim /etc/sysconfig/network-scripts/ifcfg-ens33

#添加 MACADDR="24:6E:96:2C:53:98"

ifconfig ens33 up

service network start

        修改完后,用ifconfig ens33验证一下新的MAC地址

 

        防止MAC地址重启后复原,进入管理员身份打开/etc/rc.d/rc.local ,追加这三行内容:  

ifconfig ens33 down

ifconfig ens33 hw ether 24:6E:96:2C:53:98

ifconfig ens33 up

         rc.local文件改成可执行文件,终端输入命令: 

chmod +x /etc/rc.d/rc.local

二、修改环境变量文件

       环境变量文件是emprean文件夹下的setup.bashsetup.csh,具体要修改哪个文件看你Linux的环境是哪个了,可以用这个终端命令查看

env

       环境变量文件只需要修改几个参数即可,终端输入:

vi setup.bash

<LICENSE_PORT>改成59001

<LICENSE_HOST>改成当前服务器名(可用 hostname命令查询)

<INSTALL_PATH>改成empyrean目录所在的位置(可用 pwd命令查询)

三、修改license文件

       只需要将第一行的hostname改成当前服务器名即可(可用 hostname命令查询)终端输入:

vi license.dat

四、设置固定时间   

       因为license是过期的所以要修改时间才能正常运行,我是在虚拟机的配置文件中禁用时间同步并设置一个固定时间,但每次开机都会是这个时间+16个小时了,不知道为什么不是这个固定时间,懂的朋友教教我(╥╯﹏╰╥)ง

        1.关闭虚拟机

        2.用记事本打开虚拟机的配置文件(.vmx)

        3.添加代码

        说明若.vmx文件中已包含tools.syncTime = "FALSE" , 只需添加后面6行,否则会提示tools.syncTime已经定义, 虚拟机不能启动了。下面的“FALSE”也可以写成0。

所要添加的代码:

tools.syncTime = "FALSE"

time.synchronize.continue = "FALSE"

time.synchronize.restore = "FALSE"

time.synchronize.resume.disk = "FALSE"

time.synchronize.shrink = "FALSE"

time.synchronize.tools.startup = "FALSE"

rtc.startTime = 1577873430

//1577873430:2020年01月01日10:10:30
//(这个时间戳就是你想预设的时间,可以到网站Online Conversion上换算得到希望虚拟机的启动时间)

        网址:Online Conversion - Unix time conversion(如果不行请用谷歌浏览器) 

五、运行环境变量文件

       emprean目录下终端输入命令

source setup.bash

        为了避免每次开机之后都要重新运行环境变量文件,可以参考这篇博客:

如何解决“每次打开终端启动ROS项目前都要运行一遍source devel/setup.bash”的问题

       在家目录下按Ctrl+H显示所有隐藏文件, 用Vi打开.bashrc文件 ,在最后一行加上:

source /home/hg/empyrean/setup.bash
//可以用pwd查看setup.bash文件的路径

六、加载license

       emprean目录下终端输入命令

lmgrd -c 'license.dat'

        如果出现以下情况,原因是缺少必要组件LSB,Linux需要自己找DEB,进入管理员账号输入以下命令安装:

sudo yum install redhat-lsb

 

        安装完成后再次输入命令:

lmgrd -c 'license.dat'

       如果和启动过的lmgrd冲突那就需要kill掉之前lmgrd进程

       可以参考一下这篇博客:

Synopsys EDA Tools安装和使用过程中出现的问题及解决方法

       进入管理员身份终端输入:

lsof -i:59001
//59001是被占端口号

kill -9 <PID>
//PID是每条进程中的第一个数字 

      为了避免每次开机都要重新加载license!!!进入管理员身份打开/etc/rc.d/rc.local ,追加这两行内容:  

source /home/hg/empyrean/setup.bash
/home/hg/empyrean/bin/lmgrd -c /home/hg/empyrean/license.dat

 

七、启动动华大九天Aether

        在emprean目录下终端输入华大九天Aether的启动命令:

aether

总结

       看到这里说明你已经安装成功了,恭喜恭喜٩(><)۶。不知道你装麻了没,反正我是装麻了的。(σ;*Д*)σ死刑!非常感谢那些博主大人分享的教程,最后祝国产软件越来越好啦!!!

٩(●´৺`●)૭٩(●´৺`●)و

问题

        1.我的Centos-7用的好卡啊,不知道是我电脑的问题还是我不太会安装Centos-7的问题,反正用的很难受,之前用学校的虚拟机(红帽的)从来都没卡过啊!!!如果有相同问题的朋友解决了的可以教一下我!!!٩(๛ ˘ ³˘)۶

  • 21
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
实现AS截屏不能少的库。这个库需要与as3corelib.swc一起使用。 下面是代码部分: package { import aether.utils.ScreenCapture; import com.adobe.images.JPGEncoder; import flash.display.BitmapData; import flash.display.Sprite; import flash.events.MouseEvent; import flash.geom.Rectangle; import flash.net.FileReference; import flash.utils.ByteArray; [SWF(width=800,height=600,backgroundColor=0xffffff)] public class PrintScreen extends Sprite { private var bitmapData:BitmapData; public function PrintScreen() { //画了一些随机的矢量图 graphics.lineStyle(1); graphics.drawRect(0,0,100,100); for(var i:int=0;i<30;i++){ var tempx:Number=Math.random()*400; var tempy:Number=Math.random()*300; var color:Number=0xff0000*Math.random(); graphics.lineStyle(1,color); graphics.lineTo(tempx,tempy); graphics.endFill(); } //定义截屏的区域,并保存在bitmapData中 //false是位图是否有transparent项 var region:Rectangle= new Rectangle(0, 0, 100, 100); bitmapData= ScreenCapture.capture(stage,false, region); // 一个按钮,用于启动截屏 var saveBtn:MyButton=new MyButton("save",50,30); saveBtn.x=700; saveBtn.y=150; addChild(saveBtn); saveBtn.addEventListener(MouseEvent.CLICK,save); } private function save(e:MouseEvent):void{ var encoder:JPGEncoder = new JPGEncoder(80); //80是quality var bytes:ByteArray= encoder.encode(bitmapData); var fr:FileReference = new FileReference(); fr.save(bytes, "screen.jpg"); } } } MyButton类 package { import flash.display.* import flash.text.*; import flash.filters.DropShadowFilter; public class MyButton extends SimpleButton { // The text to appear on the button private var _text:String; // Save the width and height of the rectangle private var _width:Number; private var _height:Number; public function MyButton( text:String, width:Number, height:Number ) { // Save the values to use them to create the button states _text = text; _width = width; _height = height; // Create the button states based on width, height, and text value upState = createUpState(); overState = createOverState(); downState = createDownState(); hitTestState = upState; } // Create the display object for the button's up state private function createUpState():Sprite { var sprite:Sprite = new Sprite(); var background:Shape = createdColoredRectangle( 0xcccccc ); var textField:TextField = createTextField( false ); sprite.addChild( background ); sprite.addChild( textField ); return sprite; } // Create the display object for the button's up state private function createOverState():Sprite { var sprite:Sprite = new Sprite(); var background:Shape = createdColoredRectangle( 0xff0000 ); var textField:TextField = createTextField( false ); sprite.addChild( background ); sprite.addChild( textField ); return sprite; } // Create the display object for the button's down state private function createDownState():Sprite { var sprite:Sprite = new Sprite(); var background:Shape = createdColoredRectangle( 0xCCCCCC ); var textField:TextField = createTextField( true ); sprite.addChild( background ); sprite.addChild( textField ); return sprite; } // Create a rounded rectangle with a specific fill color private function createdColoredRectangle( color:uint ):Shape { var rect:Shape = new Shape(); rect.graphics.lineStyle( 1, 0x000000 ); rect.graphics.beginFill( color ); rect.graphics.drawRect( 0, 0, _width, _height); rect.graphics.endFill(); rect.filters = [ new DropShadowFilter( 2 ) ]; return rect; } // Create the text field to display the text of the button private function createTextField( downState:Boolean ):TextField { var textField:TextField = new TextField(); textField.text = _text; textField.width = _width; // Center the text horizontally var format:TextFormat = new TextFormat(); format.align = TextFormatAlign.CENTER; textField.setTextFormat( format ); // Center the text vertically textField.y = ( _height - textField.textHeight ) / 2; textField.y -= 2; // Subtract 2 pixels to adjust for offset // The down state places the text down and to the right // further than the other states if ( downState ) { textField.x += 1; textField.y += 1; } return textField; } } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A先生啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值